Parameter (mehrwertig) im Bericht anzeigen

80

Kann mir jemand sagen, wie ich alle ausgewählten Werte meines mehrwertigen Parameters im SSRS-Bericht anzeigen soll? Wenn Sie eine parameter.valueOption angeben, wird ein Fehler ausgegeben.

Jakub Hampl
quelle
1
Hier ist die Möglichkeit, dies mithilfe der JOIN-Funktion als Teil eines größeren Blogs zu mehrwertigen Parametern zu tun : wiseowl.co.uk/blog/s187/multivalue-report-builder.htm .
Andy Brown

Antworten:

153

Mit der Funktion "Verbinden" können Sie eine einzelne Zeichenfolge aus dem Array von Beschriftungen erstellen:

=Join(Parameters!Product.Label, ",")
Matt Hamilton
quelle
Wenn er den Join-Ausdruck zum Header hinzufügt, werden die Ergebnisse über den Hauptteil des Berichts hinaus wachsen.
Mirezus
Vielen Dank für die tolle Antwort, bevor ich mir beim Googeln die Haare ausreißen musste!
Pulsehead
2
oder=Join(Parameters!Product.Value, ",")
Doug_Ivison
Was ist, wenn bei jedem Produkt Seitenumbrüche auftreten? Ist es möglich, ein Produkt pro Seite anzuzeigen?
Pepys
12

= Join (Parameter! Product.Label, vbcrfl) für neue Zeile


quelle
1
@nadiObi: Es sollte stattdessen vbCrLf sein .
Stomy
6

Ich wusste nichts über die Join-Funktion - Schön! Ich hatte eine Funktion geschrieben, die ich in den Codeabschnitt eingefügt hatte (Berichtseigenschaften-> Registerkarte Code:

Public Function ShowParmValues(ByVal parm as Parameter) as string
   Dim s as String 

      For i as integer = 0 to parm.Count-1
         s &= CStr(parm.value(i)) & IIF( i < parm.Count-1, ", ","")
      Next
  Return s
End Function  
Booji Boy
quelle
+1 Dies funktioniert in einem Berichtskopf, in dem für die "Join" -Lösung eine Tabelle erforderlich ist (die nicht in einen Berichtskopf aufgenommen werden kann).
Jeff
0

Hoffentlich findet das jemand anderes nützlich:

Die Verwendung des Joins ist der beste Weg, um einen mehrwertigen Parameter zu verwenden. Aber was ist, wenn Sie ein effizientes "Alles auswählen" möchten? Wenn es 100s + gibt, ist die Abfrage sehr ineffizient.

Um dies zu lösen, anstatt eine SQL-Abfrage unverändert zu verwenden, ändern Sie sie in einen Ausdruck (klicken Sie oben rechts auf die Schaltfläche Fx) und erstellen Sie dann Ihre Abfrage wie folgt (Sprachmarkierungen sind erforderlich):

= "Select * from tProducts Where 1 = 1 " 
IIF(Parameters!ProductID.Value(0)=-1,Nothing," And ProductID In (" & Join(Parameters!ProductID.Value,"','") & ")")

Gehen Sie in Ihrem Parameter wie folgt vor:

    SELECT -1 As ProductID, 'All' as ProductName Union All
    Select  
    tProducts.ProductID,tProducts.ProductName
    FROM
    tProducts

Wenn Sie die Abfrage als Ausdruck erstellen, können Sie die SQL-Anweisung effizienter gestalten, aber auch die Schwierigkeiten bewältigen, die SQL Server beim Umgang mit Werten in einer In-Anweisung hat.

Markiv
quelle