2009-05-08 56 views
5

He agregado un parámetro a mi informe con la opción "Permitir valores múltiples" marcada.Asignar múltiples valores a un parámetro en Crystal Reports

Esta es una columna de estado (es decir, propuesta, en curso, completada, cancelada), y quiero que el usuario pueda seleccionar (y cuántos) diferentes estados de órdenes para informar.

parámetros Cómo normalmente Set es:

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

Lo que intenté hacer por los múltiples valores fue algo como esto:

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

He comprobado que se le añade los valores a la OrderStatus parámetro, pero cuando se ejecuta el informe, aparece el diálogo CrystalReports y me pide que ingrese los valores para el parámetro OrderStatus. Parece que los valores no están "comprometidos" con el parámetro. He realizado varias búsquedas y no puedo entender por qué no está funcionando.

Gracias,

+0

No estoy seguro si mi respuesta tiene sentido. ¿Está agregando valor para el parámetro * SAME * (con código), que CR le está indicando? – shahkalpesh

+0

@shahkalpesh, no puedo ver tu respuesta. En respuesta a su pregunta, estoy asignando valores al parámetro OrderStatus, y cuando se ejecuta el informe, aparece un mensaje solicitando datos para el parámetro OrderStatus. –

Respuesta

8

Simplemente configure el valor del parámetro con una matriz de entradas.

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

en el Asistente de selección se usaría el en operador.

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

+1 No sabía que podía pasar una serie de entradas como esta.No lo he probado, pero supongo que funciona. :) – Dusty

0

se ha marcado el parámetro en Oculto en las opciones de los parámetros de Crystal Reports?

+0

No, no. ¿Dónde configuro esta opción? Además, ¿por qué la opción Oculta resolvería mi problema? –

+0

Bah. Por favor, ignore esta respuesta. Estaba pensando en los informes de Reporting Services, no en Crystal. Disculpas –

0

No he probado esto, pero creo que usted debería ser capaz de añadir intOrderStatus ya sea a un ParameterDiscreteValue o ParameterRangeValue y pasar eso en vez de Parameter_OrderStatus.CurrentValues ​​intOrderStatus.

1

Lo que puedes hacer es crear un campo de parámetro normal, es decir, sin valores múltiples, solo valores discretos verdaderos, todo lo que necesitas pasar es 1,2,3,4. "" Es el delimitador para el uso de separación de lo que alguna vez crees que funciona para usted, entonces en el registro fórmula de selección que han dejado

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

todo lo que necesita para pasar de página que es la cadena de 1,2,3,4 y debería funcionar

0

Bueno, tengo el mismo problema. El trabajo alrededor es muy simple. No agregue origen de datos después de los parámetros. por ejemplo,

report.SetParameterValue("@dtBegin", dtBegin.DateTime); 
report.SetParameterValue("@dtBegin2", dtBegin.DateTime1); 
//Note datasource is assigned after parameters 
report.SetDatasource(dataset); 

El informe de cristal actualizará los parámetros antes de aplicar el origen de datos al informe. El a continuación el cuadro de diálogo emergente no discreta

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