je reçois l'erreur suivante:
Error 1 [rsInvalidAggregateScope] The Value expression for the text box
‘Textbox2’ has a scope parameter that is not valid for an aggregate function.
The scope parameter must be set to a string constant that is equal to either
the name of a containing group, the name of a containing data region, or
the name of a dataset.
L'expression derrière ma Textbox2 (j'ai ajouté quelques espaces pour la lisibilité):
Iif(Parameters!ReportParameterPersoneelsNr.Value.Equals(String.Empty),
"Prestaties " + First(Fields!firmanaam.Value, "DataSetHrm") +
"(" + First(Fields!indienstfirmanr.Value, "DataSetHrm") + ")",
"Prestaties " + First(Fields!naam.Value, "DataSetHrm") + " " +
First(Fields!voornaam.Value, "DataSetHrm") +
"(" + First(Fields!personeelsnr.Value, "DataSetHrm") + ")")
Les champs:
ReportParameterPersoneelsNr = Reportparameter of type Text
firmanaam.Value = VARCHAR
indienstfirmanr.Value = Long
naam.Value = VARCHAR
voornaam.Value = VARCHAR
personeelsnr.Value = Long
Les recherches sur Stackoverflow m'ont apporté les résultats suivants. Mais jusqu'à présent, ils ne m'ont pas aidé à résoudre mon problème
Poste 1: ce-que-fait-champ-paramètre-qui-n'est-pas-valide-pour-une-fonction-agrégat-fonction-moyenne
Quelqu'un pourrait-il indiquer ce que je fais mal?
Note: L'ajout de tostring () partout n'a pas aidé
Note 2: Le remplacement du '+' par '&' n'a pas résolu le problème non plus.
Note 3: le datasetname est correct et le dataset est le seul présent dans ce rapport SSRS:
Update: Les données contenues dans le jeu de données sont valides et la lecture du jeu de données n'a pas fonctionné (essayé avec et sans alias)
Je ne sais pas ce qui ne va pas, mais j'ai créé un rapport similaire qui fonctionne. Créez un nouveau rapport vierge, puis créez un ensemble de données (à partir de SQL Server) avec la requête suivante:
CHOISISSEZ 'ACME' AS firmanaam, 10000 AS Indienstfirmanr, 'Doe' AS naam, 'Jon' AS voornaam, 987654 AS personeelsnr
Puis ajoutez votre paramètre
Ajouter une zone de texte au rapport, avec le code:
= Iif(Parameters!ReportParameterPersoneelsNr.Value.Equals(String.Empty), "Prestaties " & First(Fields!firmanaam.Value, "DataSetHrm") & "(" & First(Fields!indienstfirmanr.Value, "DataSetHrm") & ")", "Prestaties " & First(Fields!naam.Value, "DataSetHrm") & " " & First(Fields!voornaam.Value, "DataSetHrm") & "(" & First(Fields!personeelsnr.Value, "DataSetHrm") & ")")
Ensuite, exécutez le rapport avec ou sans valeur pour le paramètre:
Parfois, cette erreur se produit lorsque nous utilisons différents DatasetName
dans Experssion
.
Comme dans mon cas, j'ai résolu cette erreur en procédant comme suit:
Avant c'était comme ci-dessous,
="For Man " +
IIF(Len(First(Fields!Lname.Value, "DataSet1")) > 0,
First(Fields!Lname.Value, "DataSet1"),"") & IIF(Len(First(Fields!Fname.Value, "DataSet1")) > 0,
", " + First(Fields!Fname.Value, "DataSet1"),"")
Après l'avoir changé en dessous, cela fonctionne bien maintenant,
="For Man " +
IIF(Len(First(Fields!Lname.Value, "LastChangedDataSetName")) > 0,
First(Fields!Lname.Value, "LastChangedDataSetName"),"") & IIF(Len(First(Fields!Fname.Value, "LastChangedDataSetName")) > 0,
", " + First(Fields!Fname.Value, "LastChangedDataSetName"),"")
Note:Donc l'erreur est que j'ai changé le Nom du DataSet De DataSet1
en LastChangedDataSetName
et qu'il me reste à changer ce nom dans la dernière Expression
que j'ai déjà écrit avant de changer Nom du DataSet .
L'erreur que j'ai eu dans mon rapport était très similaire:
Erreur 1 [rsInvalidAggregateScope] L’expression cachée du tablix ‘table1’ contient un paramètre de portée qui n’est pas valide pour une fonction d’agrégat. Le paramètre scope doit être défini sur une constante de chaîne égale au nom du groupe contenant, au nom d'une région de données contenant ou au nom d'un ensemble de données.
Je l'ai résolu en faisant un clic droit sur le fichier du rapport dans Explorateur de solutions + Afficher le code (ouvre l'éditeur XML), en recherchant le nom du DataSet principal du rapport et en modifiant la ligne à l'origine du problème:
<TablixMember>
<Visibility>
<Hidden>=iIF(CountRows("MYDATASETNAME") = 0, false, true)</Hidden>
</Visibility>
<KeepTogether>true</KeepTogether>
</TablixMember>
Dans ce cas, je devais simplement modifier l'expression à l'intérieur de la balise <Hidden>
qui portait le nom d'un DataSet non existant (en raison de la copie depuis un autre rapport). Plus tard, il était plus facile de localiser la ligne dans l’interface qui a provoqué l’erreur.
Par conséquent, si l'erreur fait plutôt référence à Value
, recherchez occurrences du nom du DataSet du rapport dans le code XML et revérifiez les balises <Value>
pour des noms qui n'existent pas dans le rapport actuel.
J'ai récemment rencontré un problème similaire dans l'un de mes rapports. La raison de cette erreur est que le nom du fichier et l'expression dans le rapport ne correspondent pas.
J'ai un champ de date qui est rempli avec les préférences de l'utilisateur et l'expression est First(Fields!column.Value, "datasetname")
. Le nom de l'ensemble de données et le nom de l'ensemble de données spécifié dans les données de rapport doivent correspondre.
La référence de votre portée n’est pas correcte ("DataSetHrm"). Comme le message d'erreur indique dans une zone de texte, seule une portée contenant un groupe dans une table (nom de portée = nom du groupe), la table elle-même (région de données -> nom de portée = nom de la région de données) ou l'ensemble de données correspondant dans une région de données (nom de portée = nom de l'ensemble de données).
Lorsque ces régions mentionnées ci-dessus sont incorporées en indiquant avec l'ensemble de données (ensemble de données -> région de données -> groupe de données), elles peuvent être référencées à partir d'une zone de texte. Dans votre exemple, ce n'est pas le cas.
Si vous souhaitez utiliser un autre jeu de données dans votre zone de texte qui diffère de votre jeu de données réel (qui est le jeu de données de votre table), vous devez utiliser la fonction lookup ().