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.


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

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


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  

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.