Atsortingbuer plusieurs valeurs à un paramètre dans Crystal Reports

J’ai ajouté un paramètre à mon rapport avec l’option “Autoriser les valeurs multiples” cochée.

Il s’agit d’une colonne de statut (IE, Proposé, En cours, Terminé, Annulé). Je souhaite que l’utilisateur puisse sélectionner le type de commande (et son nombre) différent.

Comment je règle normalement les parameters est:

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

Ce que j’ai essayé de faire pour les valeurs multiples ressemblait à ceci:

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

J’ai vérifié qu’il ajoute les valeurs au paramètre OrderStatus, mais lorsque le rapport est exécuté, la boîte de dialog CrystalReports s’ouvre et me demande de saisir des valeurs pour le paramètre OrderStatus. Il semble donc que les valeurs ne sont pas “engagées” pour le paramètre. J’ai fait un certain nombre de recherches et je ne peux pas comprendre pourquoi cela ne fonctionne pas.

Merci,

Il suffit de définir la valeur du paramètre avec un tableau d’ints.

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

dans l’expert sélectionné, vous utiliseriez l’opérateur in .

 {table.order_status_id} in {?@OrderStatus} 

Ce que vous pouvez faire est de créer un champ de paramètre normal, c’est-à-dire sans plusieurs valeurs, uniquement des valeurs discrètes vraies, tout ce que vous devez passer est 1,2,3,4. “,” est le séparateur pour la séparation, utilisez ce que vous croyez qui fonctionne pour vous, puis dans la formule de sélection des enregistrements, mettez simplement

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

tout ce que vous avez besoin de passer de votre page est la chaîne 1,2,3,4 et cela devrait fonctionner

La section suivante est testée dans la version 13.0.20 de Crystal Reports :

1) Dans la section Parameter Fields , ajoutez un nouveau paramètre comme suit:

 Name: ParamMultipleOrderStatus Type: Number Value Options: Allow multiple values: true 

2) Choisissez l’ Select Expert Record ... dans Select Expert Record ... dans Crystal Reports et le code peut ressembler à ceci (utiliser = opérateur):

 {Orders.OrderStatus} = {?ParamMultipleOrderStatus} 

3) Utilisez le code suivant:

 foreach (int intOrderStatus in intSelectedOrderStatuses) { report.ParameterFields["ParamMultipleOrderStatus"].CurrentValues.AddValue(intOrderStatus); } 

Avez-vous défini le paramètre sur Masqué dans les options de paramètre Crystal Reports?

Je n’ai pas essayé cela, mais je pense que vous devriez pouvoir append intOrderStatus à ParameterDiscreteValue ou ParameterRangeValue et le transmettre à Parameter_OrderStatus.CurrentValues ​​au lieu de intOrderStatus.

Eh bien, j’ai le même problème. Le travail est très simple. N’ajoutez pas de source de données après les parameters. par exemple

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

Le rapport Crystal actualisera les parameters avant d’appliquer la source de données au rapport. Ci-dessous la boîte de dialog discrète non popup

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