2009-05-08 12 views
5

Ho aggiunto un parametro al mio report con l'opzione "Consenti valori multipli" selezionata.Assegnare più valori a un parametro in Crystal Reports

Questa è una colonna di stato (IE, Proposto, In corso, Completato, Annullato) e voglio che l'utente sia in grado di selezionare su quale (e quanti) diversi OrderStatus riportare.

Come faccio di solito impostare i parametri sono:

report.SetParameterValue("@dtBegin", dtBegin.DateTime); 

Quello che ho cercato di fare per i valori multipli è stato qualcosa di simile:

//pseudo loop 
foreach(int intOrderStatus in intSelectedOrderStatuses) 
{ 
    report.Parameter_OrderStatus.CurrentValues.AddValue(intOrderStatus); 
} 

Ho controllato lo fa aggiungere i valori alla OrderStatus parametro, ma quando viene eseguito il report, viene visualizzata la finestra di dialogo CrystalReports che mi chiede di immettere i valori per il parametro OrderStatus. Quindi sembra che i valori non siano "commessi" sul parametro. Ho fatto un numero di ricerche e non riesco a capire perché non funzioni.

Grazie,

+0

Non so se la mia risposta ha un senso. Stai aggiungendo il valore per il parametro * SAME * (usando il codice), per il quale CR ti sta chiedendo? – shahkalpesh

+0

@shahkalpesh, non riesco a vedere la risposta. In risposta alla tua domanda, sto assegnando valori al parametro OrderStatus e quando viene eseguito il report, viene visualizzato un prompt che richiede i dati per il parametro OrderStatus. –

risposta

8

Basta impostare il valore del parametro con una serie di valori.

report.SetParameterValue("@OrderStatus", new int[]{1,2,3}); 

nel Esperto selezione si può usare il in dell'operatore.

{table.order_status_id} in {[email protected]} 
+0

+1 Non sapevo che potessi passare in una serie di intro come questo.Non l'ho provato, ma suppongo che funzioni. :) – Dusty

0

Avete impostato il parametro Nascosto tra le opzioni dei parametri Crystal Reports?

+0

No, non ho. Dove posso impostare questa opzione? Inoltre, perché l'opzione Nascosto potrebbe risolvere il mio problema? –

+0

Bah. Si prega di ignorare questa risposta. Stavo pensando ai report di Reporting Services, non a Crystal. Scuse. –

0

Non ho provato questo, ma penso che si dovrebbe essere in grado di aggiungere intOrderStatus, o un ParameterDiscreteValue o ParameterRangeValue e passare che in Parameter_OrderStatus.CurrentValues ​​invece di intOrderStatus.

1

Quello che puoi fare è, creare un normale campo di parametri, cioè senza più valori, solo valori discreti veri, tutto ciò che devi passare è 1,2,3,4. "" È il delimitatore per l'utilizzo di separazione che cosa mai si pensa funziona per voi, allora nella selezione dei record formula poche parole

{table.order_status_id} in split({@OrderStatus}, ",") 

tutto il necessario per passare da voi pagina è la stringa di 1,2,3,4 e dovrebbe funzionare

0

Beh, ho lo stesso problema. Il lavoro è molto semplice. Non aggiungere l'origine dati dopo i parametri. ad esempio

Il report di cristallo aggiornerà i parametri prima dell'applicazione dell'origine dati da segnalare. La seguente è la finestra di dialogo discreta non popup

//Note Datasource is applied before parameters 
report.SetDatasource(dataset); 
report.SetParameterValue("@dtBegin", dtBegin.DateTime); 
report.SetParameterValue("@dtBegin2", dtBegin.DateTime1);