it-swarm.com.de

SSRS 2008: Fehlermeldung, dass mein Parameter nicht vorhanden ist, aber eindeutig nicht?

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:

  • Parameter
    • facilityID: Text im Format einer GUID oder eines eindeutigen Identifizierers. Dieser wird ausgeblendet und übergeben, sodass der Endbenutzer des Berichts nur Informationen zu seiner eigenen Einrichtung anzeigen kann. Einwertiger Parameter, nicht leer, nicht null, ausgeblendet, Text
    • startDate: Beginn des Datumsbereichs. Angenommen, ich möchte, dass mein Bericht Daten enthält, die am 1. Januar dieses Jahres beginnen. Einwertiger Parameter, nicht leer, nicht null, sichtbar, datetime
    • endDate: Ende des Datumsbereichs, sagen wir, es ist heute/heute; Einwertiger Parameter, nicht leer, nicht null, sichtbar, datetime
    • viewOption : drei hartcodierte Werte (Bezeichnung, Wert) ("Aktuelle Angestellte" 1) und ("Frühere Angestellte" 2) und ("Angestellte, die Einrichtungen umgezogen haben", 3); Parameter mit mehreren Werten (also alles auswählen ist eine Option), nicht leer, nicht null, sichtbar, Text
    • personID: basiert auf der Datenmenge getListOfNames, wobei das Label der Name des Mitarbeiters ist und der Wert deren personID (guid/uniqueidentifier) ​​ist. Einzelauswahl, nicht null, nicht leer, Text und sichtbar
  • Meine Datensätze
    • getListOfNames: Hiermit wird eine Liste von Personen abgerufen, die sich im angegebenen Datumsbereich der jeweiligen Einrichtung im Unternehmen befanden und deren Angestelltenstatus sich im viewOption-Parameterwert befindet (dh es kann nur eine oder bis zu drei Ziffern sein). Dies ist eine gespeicherte Prozedur, aber ich habe sie so eingerichtet, dass sie den mehrwertigen Parameter behandelt, indem er join (Parameter, "~") übergeben und dann in der gespeicherten Prozedur getrennt wird. Dies funktioniert bei 5 anderen Berichten. 
    • getReportInfoOnSelectedPerson: Haupttextabfrage; Nachdem der Benutzer den Mitarbeiter ausgewählt hat, für den Daten gewünscht werden, übernimmt diese Person-ID und den Datumsbereich und füllt die Haupttabelle. 

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?

28
gloomy.penguin

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. 

21
logixologist

Ändern Sie die Reihenfolge der Parameter mithilfe der Aufwärts-/Abwärtspfeile. 

Sie sollten in der Reihenfolge der Abhängigkeit erscheinen.

29
charles

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. 

10
RDeveloper

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.

  1. Öffnen Sie die Dataset-Eigenschaften für die Datasets, die den Parameter in der Fehlermeldung verwenden.
  2. Wählen Sie im linken Listenbereich die Eigenschaft Parameters.
  3. Klicken Sie für den angegebenen Parameter auf die Schaltfläche Ausdruckseditor.

 enter image description here

  1. Hier werden Sie feststellen, dass der Ausdruck rot unterstrichen ist. Hier müssen Sie den Fall des Parameternamens korrigieren.

     enter image description here

5
thebenman

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

5
user3193880

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.

2
lilalinux

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.) 

1
gloomy.penguin

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.

0
RedZebra

Für mich musste ich die rdl-Datei öffnen und meine neuen Parameter zur gewünschten Position/Position (xml-Knoten) hinzufügen.

0
Daniel B

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".

0
Will Wainwright

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.

0
asmgx