SSRS 2008: message d'erreur disant que mon paramètre n'existe pas, mais il est clair que cela?

J'ai un rapport qui a environ 10 paramètres et environ 10 ensembles de données et une source de données. J'ai tapé beaucoup, mais j'ai vraiment besoin d'aide alors j'ai pensé que je voudrais essayer de fournir le plus d'info sur le problème que j'ai pu dès le départ.

Nous allons simplifier tout cela, et prétendre que ces sont les noms de tout et que le rapport de base de l'employé de l'information:

  • Paramètres
    • facilityID: texte dans le format d'un guid ou de type uniqueidentifier, ce qui est caché et passé en sorte que l'utilisateur final du rapport peut uniquement afficher des informations pour leurs propres installations; une Seule valeur de paramètre, n'est pas vide non nulle, caché, texte
    • date de début: date de début de gamme, disons que je veux que mon rapport contienne des données à partir du 1er janvier de cette année; une Seule valeur de paramètre, n'est pas vide non nulle, visible, datetime
    • date de fin: fin de la plage de date, disons que c'est aujourd'hui/maintenant; une Seule valeur de paramètre, n'est pas vide non nulle, visible, datetime
    • viewOption: trois valeurs codées en dur (nom, valeur) ("les Employés Actuels",1) et ("par le Passé, les Employés",2) et ("les Employés qui se sont déplacés installations",3); à plusieurs valeurs de Paramètre (donc sélectionner tout est une option), pas de vide, pas null, visible, texte
    • personID: basé sur le jeu de getListOfNames où l'étiquette est le nom de l'employé et la valeur de leur personID (guid/uniqueidentifier); select Unique, non nulle, n'est pas vide, texte et visible
  • Mes Ensembles De Données
    • getListOfNames: cela permet d'obtenir une liste de personnes qui ont été à l'entreprise dans la plage de dates à l'installation donnée et où leur statut de salarié est dans l'viewOption valeur de paramètre (de sorte qu'il peut être juste un numéro ou jusqu'à trois). C'est une procédure stockée, mais j'ai mis en place pour gérer le multi-paramètre à valeur par le passant à joindre(paramètre"~"), puis séparation dans la procédure stockée. Cela fonctionne sur les 5 autres rapports.
    • getReportInfoOnSelectedPerson: corps principal de la requête; une fois que l'utilisateur sélectionne l'employé qu'ils veulent des données sur, il faut que personID et la plage de dates et remplit la table principale.

Le problème:

SSRS dit viewOption n'existe pas. Mais je le vois, là, dans le dossier Paramètres sur le côté gauche. Je le vois quand je vais saisir une expression sous Paramètres. Il n'y a pas de ligne rouge ondulée sous Paramètres!viewOption.de la valeur. Mais, quand je l'ai essayer et de le mettre comme valeur pour un paramètre utilisé par la getListOfNames dataset, il erreurs. Si je l'ai mis dans le getReportInfoOnSelectedPerson jeu de données et l'utiliser exactement de la même manière, SSRS est d'accord avec ça. Wtf? Alors... j'ai vérifié la rdl et tout va bien (où le paramètre est déclaré, lorsqu'il est utilisé dans le jeu de données de référence, de tout). C'est juste un jeu de données. Et j'ai un rapport similaire qui utilise le même ensemble de données, les mêmes paramètres de base et que le rapport est très bien. J'ai essayer le réglage de la valeur de l'ensemble de données de paramètre à 1 ou quelque chose et c'est très bien mais quand j'essaye de mettre ce Paramètre à!viewOption.valeur des erreurs..... Maintenant, je l'ai dit ci-dessus j'ai l'habitude de passer la procédure stockée d'une Jointure sur la paramater avec un tilde ~ mais j'essaie de garder les choses simples et soit le faire simplement en général (que ce soit en le passant à la première valeur de la valeurmulti viewOption paramètre ou en tournant le paramètre en une sélection unique et juste de passage de la .de la valeur), mais la jointure ne marche pas non plus. Toutes ces choses pour l'autre jeu de données, qui est également une procédure stockée.

C'est mon erreur:

Une erreur s'est produite lors du traitement du rapport. (rsProcessingAborted) L'expression de Valeur pour le paramètre de requête ‘@viewOption " contient une erreur: L'expression fait référence à un paramètre inexistant dans la collection de paramètres du rapport. (rsRuntimeErrorInExpression)

Qui est dit clairement mon paramètre n'existe pas, mais je peux le VOIR... partout. Et si je attribuer à l'un des autres jeux de données' les valeurs de paramètre à la viewOption paramètre, il fonctionne sans erreur. J'ai vérifié la rdl.

J'ai eu ce problème avant et il a été résolu en supprimant à la fois le paramètre et l'ensemble de données et de les créer à nouveau (pour la sécurité j'ai renommé tous les deux). Qui n'a pas fonctionné cette fois.

Je suis tellement frustré. S'il vous plaît aider....

Code?

      <DataSet Name="getListOfNames">
<Fields>
<Field Name="personID">
<DataField>PersonId</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="name">
<DataField>name</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>myDataSource</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>getListOfNames</CommandText>
<QueryParameters>
<QueryParameter Name="@fac">
<Value>=join(Parameters!fac.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@bldg">
<Value>=join(Parameters!bldg.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@unit">
<Value>=join(Parameters!unit.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@station">
<Value>=join(Parameters!station.Value,"~")</Value>
</QueryParameter>
<QueryParameter Name="@startDate">
<Value>=Parameters!startDate.Value</Value>
</QueryParameter>
<QueryParameter Name="@endDate">
<Value>=Parameters!endDate.Value</Value>
</QueryParameter>
<QueryParameter Name="@viewOption">
<Value>=Join(Parameters!viewOption.Value, "~")</Value>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
<ReportParameter Name="viewOption">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>1</Value>
</Values>
</DefaultValue>
<Prompt>View</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>viewOptionQuery</DataSetName>
<ValueField>value</ValueField>
<LabelField>label</LabelField>
</DataSetReference>
</ValidValues>
<MultiValue>true</MultiValue>
</ReportParameter>
<DataSet Name="viewOptionQuery">
<Fields>
<Field Name="label">
<DataField>label</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="value">
<DataField>value</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>flamingo</DataSourceName>
<CommandText>select 'Other Facility' as label, 3 as value union select 'Past' as label, 2 as value union select 'Current' as label, 1 as value order by value</CommandText>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>

C'est la façon dont il est mis en place et getListOfNames est pourquoi l'erreur est de les jeter, si je change

              <QueryParameter Name="@viewOption">
<Value>=Join(Parameters!viewOption.Value, "~")</Value>
</QueryParameter>

à

              <QueryParameter Name="@viewOption">
<Value>="1~2"</Value>
</QueryParameter>

alors il fonctionne.... ou la valeur peut être 1 ou 1~2~3

Cependant... quand j'essaie de le mettre join(Paramètres!viewOption.valeur,"~") comme la valeur d'un autre ensemble de données du paramètre de requête, il fonctionne et il n'y a pas d'erreur.

  <DataSet Name="getReportInfoOnSelectedPerson">
<Fields>
<Field Name="name">
<DataField>name</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field> 
<Field Name="Building">
<DataField>Building</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Unit">
<DataField>Unit</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="desc">
<DataField>desc</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field> 
</Fields>
<Query>
<DataSourceName>myDataSource</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>Reports_BasicInfo</CommandText>
<QueryParameters>
<QueryParameter Name="@personID">
<Value>=Parameters!personID.Value</Value>
</QueryParameter>
<QueryParameter Name="@numberINeedToAggregateData">
<Value>=Join(Parameters!viewOption.Value,"~")</Value>
<rd:UserDefined>true</rd:UserDefined>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>

Et je l'ai déjà dit, mais la stockées proc/dataset qui génère l'erreur utilise un paramètre du même mis en place dans environ 5 autres rapports (j'ai essayé de copier et de coller le code des sections de rapports de travail, mais je reçois toujours le message d'erreur). Alors, quel est le problème avec celui-ci?

  • Je sais que vous avez dit que vous avez essayé cela avant, mais j'ai eu de semblables questions dans reporting services. J'ai dû essayer à partir de zéro et il semblait fonctionner, semble être buggy à la fois. Également toujours exécuter votre procédure stockée à partir de SQL Server pour voir si elles fonctionnent avant de les amener à RS. Enfin, lorsque vous ajoutez des paramètres supplémentaires à une date ultérieure, pour une raison quelconque, le derrière le code du rapport n'est pas mis à jour et vous devez taper manuellement dans le code..très bogué. +1 mais pour en détails.
  • Je viens de poster quelque chose comme une "réponse" à cette... Le rapport était trop détaillé et trop complexe pour tout effacer et recommencer donc j'ai juste copié le code et qui semblait fonctionner. Je voudrais vraiment savoir pourquoi c'est arrivé, cependant. J'ai toujours assurez-vous que la procédure stockée du travail et je re-utiliser certains d'entre eux... j'ai aussi appris à toujours vérifier le code derrière SSRS, trop.