wake-up-neo.com

SSRS-Ausdruck: Der Wertausdruck für Textfeld hat einen ungültigen Gültigkeitsbereich für das Aggregat

ich erhalte folgende Fehlermeldung:

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.

Der Ausdruck hinter meinem Textbox2 (ich habe ein paar Leerzeichen für die Lesbarkeit hinzugefügt): 

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") + ")")

Die Felder:

      ReportParameterPersoneelsNr = Reportparameter of type Text
      firmanaam.Value = VARCHAR
      indienstfirmanr.Value = Long
      naam.Value = VARCHAR
      voornaam.Value = VARCHAR
      personeelsnr.Value = Long

Die Suche nach Stackoverflow brachte mir folgende Ergebnisse. Aber bisher haben sie mir nicht geholfen, mein Problem zu lösen

Post 1: Was-tut-Umfang-Parameter-das-nicht-gültig-für-ein-Aggregat-Funktionsmittel-Mittelwert ist

Beitrag 2: SqlTeam

Könnte jemand darauf hinweisen, was ich falsch mache?

Note: Das Hinzufügen von tostring () überall hat nicht geholfen

Note 2: Das Ersetzen des '+' durch '&' hat das Problem auch nicht gelöst

Note 3: Der Datensatzname ist korrekt und der Datensatz ist der einzige, der in diesem SSRS-Bericht vorhanden ist:

Image Tds

Update: Die in der Datenmenge enthaltenen Daten sind gültig und das Lesen der Datenmenge hat nicht funktioniert (versucht mit und ohne Aliase)

16
User999999

Ich weiß nicht, was falsch ist, habe aber einen ähnlichen Bericht erstellt, der funktioniert. Erstellen Sie einen neuen leeren Bericht, und erstellen Sie dann mit der folgenden Abfrage eine Datenmenge (von SQL Server):

SELECT 'ACME' AS firmanaam, 10000 AS indienstfirmanr, 'Doe' AS naam, 'Jon' AS voornaam, 987654 AS personeelsnr

DataSet image

Dann fügen Sie Ihren Parameter hinzu

Parameter Definition

Fügen Sie dem Bericht ein Textfeld mit Code hinzu:

= 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") & ")")

Führen Sie dann den Bericht mit oder ohne Wert für den Parameter aus:

Preview of Report

Preview with empty param

6
Fillet

Manchmal tritt dieser Fehler auf, wenn wir in DatasetName verschiedene Experssion verwenden.

Wie in meinem Fall habe ich diesen Fehler gelöst, indem ich folgendes getan habe:

Bevor es wie unten war,

="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"),"")

Nachdem es in unten geändert wurde, funktioniert es jetzt gut,

="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: Hier war der Fehler, dass ich den DataSet-Namen Von DataSet1 in LastChangedDataSetName geändert habe und diesen Namen in der letzten Expression, die ich bereits geschrieben habe, geändert habe, bevor _ geändert wurde.DataSet-Name.

8
pedram

Der Fehler, den ich in meinem Bericht hatte, war sehr ähnlich:

Fehler 1 [rsInvalidAggregateScope] Der Ausdruck Hidden für das Tablix ″ table1 ’weist einen Gültigkeitsbereichsparameter auf, der für eine Aggregatfunktion nicht gültig ist. Der scope-Parameter muss auf eine String-Konstante festgelegt werden, die entweder dem Namen einer enthaltenden Gruppe, dem Namen eines enthaltenden Datenbereichs oder dem Namen einer Datenmenge entspricht.

Ich habe das Problem gelöst, indem Sie mit der rechten Maustaste auf die Berichtsdatei in Solution Explorer + View Code (öffnet den XML-Editor) klicken, nach dem Namen des Haupt-DataSet des Berichts suchen und die Zeile ändern, die das Problem verursacht hat:

<TablixMember>
  <Visibility>
    <Hidden>=iIF(CountRows("MYDATASETNAME") = 0, false, true)</Hidden>
  </Visibility>
  <KeepTogether>true</KeepTogether>
</TablixMember>

In diesem Fall musste ich nur den Ausdruck im <Hidden>-Tag ändern, der den Namen eines nicht vorhandenen DataSet hatte (aufgrund des Kopierens aus einem anderen Bericht). Später war es einfacher, die Zeile in der Schnittstelle zu finden, die den Fehler verursacht hat.

Wenn sich der Fehler stattdessen auf Value bezieht, suchen Sie nach Vorkommen des DataSet-Namens des Berichts im XML-Code und überprüfen Sie die <Value>-Tags nach Namen, die im aktuellen Bericht nicht vorhanden sind.

2
CPHPython

Ich war kürzlich in einem meiner Berichte mit einem ähnlichen Problem konfrontiert. Der Grund für diesen Fehler liegt darin, dass der Name des Datensatzes und der Ausdruck im Bericht nicht übereinstimmen.

Ich habe ein Datumsfeld, das mit Benutzervorgaben aufgefüllt wird und der Ausdruck First(Fields!column.Value, "datasetname") ist. Der Name der Datenmenge und der Name der Datenmenge, die in den Berichtsdaten angegeben sind, sollten übereinstimmen.

2
Yagna

Dies tritt häufig auf, wenn eine gespeicherte Prozedur durch eine andere ersetzt wird. Dies ist häufig der Fall, wenn Sie eine Ableitung eines Berichts erstellen (möglicherweise einen vierteljährlichen Bericht anstelle eines monatlichen Berichts) und einen neuen SP erstellen, der ähnlich, aber unterschiedlich ist.

Es ist nicht erforderlich, den Datensatz umzubenennen. Dies kann häufig zu schwer zu diagnostizierenden Problemen führen.

Die Art des Berichtseditors ist sehr klick- und dialogintensiv. Es ist fast unmöglich, das Problem zu finden, indem Sie auf den Berichtsbereich klicken und nach dem problematischen Problem suchen.

Es wäre für MS einfach, den Editor für beleidigende Ausdrücke sofort nach dem Anzeigen der Meldung anzuzeigen, in der über den Ausdruck geklagt wird. Der Herausgeber ist nicht sehr gut, aber MS scheint wenig Anreiz zu haben, es besser zu machen.

Vorschlag 1 Um Ärger zu vermeiden, benennen Sie Ihren Hauptdatensatz DATA1 oder etwas Ähnliches. Wenn Sie den SP ändern, lassen Sie den Dataset-Namen in Ruhe.

Vorschlag 2, um Ärger zu vermeiden - Wenn Sie eine Kopie eines Berichts erstellen und das Tablix beibehalten möchten, sollten Sie die neuen SP) Spalten hinzufügen. Entfernen Sie keine Spalten, auch wenn sie null sind Manchmal ist das möglich, manchmal nicht.

Vorschlag 3 - Wenn Sie in Schwierigkeiten sind und Probleme haben möchten, speichern Sie den Bericht als RDL auf Ihrem Desktop und öffnen Sie ihn mit dem Editor. Suchen Sie nach "Fields!". Dies sollte Sie zu den Ausdrücken führen, die das Problem verursachen.

Suchen Sie auch nach dem alten Datensatznamen, wenn Sie ihn geändert haben. Suchen Sie auch nach Feldern, die im neuen Datensatz weggelassen wurden, falls vorhanden

1
greg

Ihre Bereichsreferenz ist nicht korrekt ("DataSetHrm"). Da in den Fehlernachrichten aus einem Textfeld nur auf einen einschließenden Bereich verwiesen wird, der eine Gruppe in einer Tabelle sein kann (Bereichsname = Gruppenname), kann die Tabelle selbst (Datenbereich -> Bereichsname = Datenbereichsname) oder die zugehörige Datenmenge verwendet werden zu einem Datenbereich (Bereichsname = Name der Datenmenge).

Wenn diese oben genannten Bereiche eingebettet sind und in der Datenmenge angegeben sind (Datensatz -> Datenbereich -> Datengruppe), können sie über ein Textfeld referenziert werden. In Ihrem Beispiel ist dies nicht der Fall.

Wenn Sie in Ihrem Textfeld einen anderen Datensatz verwenden möchten, der von Ihrem tatsächlichen Datensatz (dem Datensatz Ihrer Tabelle) abweicht, müssen Sie die Funktion lookup () verwenden.

1
Bimbam