Ich habe einen Bericht mit etwa 10 Parametern und etwa 10 Datensätzen und einer Datenquelle. Ich habe viel getippt, aber ich brauche wirklich Hilfe, also dachte ich, ich würde versuchen, so viele Informationen über das Problem bereitzustellen, wie ich es von Anfang an könnte.
Lassen Sie uns alles vereinfachen und so tun, als ob dies die relevanten Namen von allem sind und der Bericht grundlegende Mitarbeiterinformationen erhält:
Das Problem:
SSRS sagt, dass viewOption nicht existiert. Aber ich sehe es genau dort im Parameter-Ordner auf der linken Seite. Ich sehe es, wenn ich unter Parameter einen Ausdruck eingebe. Unter Parameters! ViewOption.value gibt es keine rote Linie. Wenn ich jedoch versuche, es als Wert für einen Parameter zu verwenden, der von der getListOfNames-Datenmenge verwendet wird, tritt ein Fehler auf. Wenn ich es in das getReportInfoOnSelectedPerson-Dataset stecke und es auf dieselbe Weise verwende, ist SSRS damit einverstanden. Wtf? Also ... ich habe die rdl überprüft und alles ist in Ordnung (wo der Aktualparameter deklariert wird, wo er in der Dataset-Referenz verwendet wird, alles). Es ist nur dieser eine Datensatz. Und ich habe einen ähnlichen Bericht, der denselben Datensatz, dieselben grundlegenden Parameter verwendet, und dieser Bericht ist in Ordnung. Ich versuche, den Wert des Datensatzparameters auf 1 oder etwas zu setzen, und das ist in Ordnung, aber wenn ich versuche, ihn auf Parameter! ViewOption.value zu setzen, wird ein Fehler angezeigt. Jetzt habe ich oben gesagt, normalerweise übergebe ich die gespeicherte Prozedur mit Join auf dem Parameter mit einer Tilde ~, aber ich versuche, es einfach zu halten und entweder generell zu arbeiten (entweder indem es den ersten Wert des multivalue viewOption -Parameters übergibt oder diesen Parameter in ein einzelnes select umwandelt und nur das. value), aber der Join funktioniert auch nicht. All diese Dinge funktionieren für den anderen Datensatz, der ebenfalls eine gespeicherte Prozedur ist.
Das ist mein Fehler:
Bei der Berichtsverarbeitung ist ein Fehler aufgetreten. (rsProcessingAborted) Der Wertausdruck für den Abfrageparameter "@viewOption" enthält einen Fehler: Der Ausdruck verwies auf einen nicht vorhandenen Parameter in der Berichtsparameterauflistung. (rsRuntimeErrorInExpression)
Was eindeutig heißt, dass mein Parameter nicht existiert, aber ich kann ihn überall sehen. Wenn ich dem Parameter viewOption einen Parameterwert der anderen Datensätze zuweise, funktioniert er fehlerfrei. Ich habe die rdl überprüft.
Ich hatte dieses Problem schon einmal und es wurde behoben, indem sowohl der Parameter als auch der Datensatz gelöscht und erneut erstellt wurden (zur Sicherheit habe ich beide umbenannt). Das hat dieses Mal nicht funktioniert.
Ich bin so frustriert. Bitte helfen ....
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>
So wird es eingerichtet und getListOfNames ist der Grund, warum der Fehler geworfen wird, wenn ich mich ändere
<QueryParameter Name="@viewOption">
<Value>=Join(Parameters!viewOption.Value, "~")</Value>
</QueryParameter>
zu
<QueryParameter Name="@viewOption">
<Value>="1~2"</Value>
</QueryParameter>
dann funktioniert es .... oder der Wert kann nur 1 oder 1 ~ 2 ~ 3 sein
Jedoch ... wenn ich versuche, join (Parameter! ViewOption.value, "~") als Wert für den Abfrageparameter eines anderen Datensatzes zu verwenden, funktioniert es und es ist kein Fehler vorhanden.
<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>
Und ich habe dies bereits gesagt, aber das gespeicherte proc/dataset, das den Fehler auslöst, verwendet einen Parameter, der in etwa 5 anderen Berichten eingerichtet ist. . Also, was ist los mit diesem hier?
Ich stellte in meiner Situation fest, dass es sich tatsächlich um den Parameternamen handelte, der etwas geändert wurde und denselben Fehler auslöste.
Ich musste den Namen in das richtige Gehäuse ändern und dann im Code nach allem suchen, was sich auf diesen Parameter bezieht, und das Gehäuse korrigieren. Danach gut eingesetzt.
Ändern Sie die Reihenfolge der Parameter mithilfe der Aufwärts-/Abwärtspfeile.
Sie sollten in der Reihenfolge der Abhängigkeit erscheinen.
Das Neuanordnen der Berichtsparameter basierend auf ihrer Abhängigkeit hat das Problem für mich behoben. Ich hatte den Berichtsparameter am Ende der Liste, aber der Parameter darüber war von diesem unteren abhängig. Wenn Sie also den Berichtsparameter erstellen/neu erstellen, stellen Sie sicher, dass die Reihenfolge stimmt.
Dies kann hauptsächlich darauf zurückzuführen sein, dass der Parametername im Datensatz nicht aktualisiert wurde.
Dieser Artikel hat mir geholfen, das Problem zu lösen
Beim Bearbeiten von Parametern (Namen oder Groß- und Kleinschreibung) für ein Dataset innerhalb von SSRS können Sie Die vorherige Fehlermeldung wird möglicherweise angezeigt, wenn Sie den Bericht in der Vorschau anzeigen. Auf der Oberfläche kann es so aussehen, als hätte der Parameter das gleiche Fall in den Parametereinstellungen und der Dataset-Abfrage - ein anderer Ort, an dem eine Änderung erforderlich ist.
- Öffnen Sie die Dataset-Eigenschaften für die Datasets, die den Parameter in der Fehlermeldung verwenden.
- Wählen Sie im linken Listenbereich die Eigenschaft Parameters.
- Klicken Sie für den angegebenen Parameter auf die Schaltfläche Ausdruckseditor.
Hatte das gleiche Problem. Überprüfen Sie die Registerkarte Parameter der Dataset-Eigenschaften, und klicken Sie auf die Schaltfläche Ausdruck (fx). Die Parameter scheinen hier nicht automatisch zu aktualisieren, einer meiner Parameter hatte immer noch Großbuchstaben anstelle von Kleinbuchstaben
Das Problem tritt auch auf, wenn Sie auf einen Parameter "zu früh" verweisen, z. OnInit ..__ überschreiben. In diesem Fall ist es nicht mehr möglich, einen Datensatz für die verfügbaren Werte oder für die Standardwerte eines Parameters zu verwenden, selbst wenn der Datensatz selbst nicht mit dem betreffenden Parameter zusammenhängt.
Ich habe einen neuen Bericht erstellt und den Code in den neuen Bericht kopiert und gespeichert. Es funktioniert jetzt perfekt in diesem neuen Bericht ... Ich habe den alten gelöscht und den neuen umbenannt, auf dem Server bereitgestellt und alles ist gut. Ich wünschte, ich hätte viel früher darüber nachgedacht. SSRS ist so lustig, aber ich weiß nicht mal, was das Problem tatsächlich verursacht hat ...
irgendwelche Ideen dazu?
(Ich hatte SSRS einige Male neu gestartet, meinen Computer ein paar Mal neu gestartet, die .data-Dateien gelöscht, die Kopie vom Server gelöscht, obwohl dies auf meinem Computer passierte, nur um sicher zu sein ... während all dies btw.)
Ich hatte ähnliche Probleme mit SSRS. Der Code war korrekt, die SQL-Parameter waren korrekt, aber der Bericht gab Parameterfehler aus. Ich habe ein Shared Dataset verwendet. Ich habe die gleiche SQL in ein Embedded Data Set kopiert und der Bericht funktionierte einwandfrei. Daher stimme ich zu, dass die SSRS-Software Fehler aufweist, die ein seltsames Verhalten verursachen.
Für mich musste ich die rdl-Datei öffnen und meine neuen Parameter zur gewünschten Position/Position (xml-Knoten) hinzufügen.
Ich hatte auch dieses Problem, nachdem alle oben genannten Antworten wirklich hilfreich waren.
Das Schwierige an mir ist, dass das Dataset ein SSAS-Dataset war und daher versteckt wurde. Ich musste den Code nach dem Parameter durchsuchen, um zu sehen, wo er verwendet wurde und wo er gefunden wurde.
Um ausgeblendete Datensätze anzuzeigen, klicken Sie auf der Registerkarte "Berichtsdaten" mit der rechten Maustaste auf den Ordner "Datensätze" und aktivieren Sie das Kontrollkästchen "Verborgene Datensätze anzeigen".
Ist mir auch passiert
Es gab einen Parameter, der von einem anderen abhängt
Aber die Reihenfolge des Abhängigen lag oben
Verwenden Sie die Pfeile, um den berechneten Parameter an das Ende aller Parameter zu verschieben.