2016-04-20 6 views
1

die folgende Abfrage in db2 verwenden:Wie senden Sie mehrere Variablen mit Birt-Bericht?

select * from table where num in ('1a2334','1a43432','1a34243','1b34325','1b4545') 

Nun, wenn ich Daten erhalte ich die Zeilen erhalten zu berichten wie von den Nutzern:

1a23344 
1a43432 
1a34243 
1b34325 
1b45454 

Dann ++ Ich benutze Notizblock rf mit ersetzen '' so wird es

'1a2334','1a43432','1a34243','1b34325','1b4545' 

Was meine opti sind ons für die Erstellung eines Berichts, der Eingaben akzeptiert, die für den durchschnittlichen Benutzer einfach genug sind?

Dieser spezielle Benutzer hat eine Excel-Tabelle mit mehreren Spalten, ich verwende nur die erste Spalte (die oben genannten Beispiele sind Zeilen aus der ersten Spalte).

Eine gute Lösung von @Simulant, aber ich brauche dies, um Werte aus einer Excel-Datei (vorzugsweise durch Kopieren einfügen). Ich habe bemerkt, dass seine Lösung statische Werte verwendet, daher denke ich, dass ich dynamische Werte brauche. Für die Aufzeichnung bekam ich folgende Fehlermeldung mit dem Skript:

Error evaluating Javascript expression. Script engine error: TypeError: Cannot call method "replace" of null (/report/data-sets/script-data-set[@id="12"]/method[@name="beforeOpen"]#3) Script source: /report/data-sets/script-data-set[@id="12"]/method[@name="beforeOpen"], line: 0, text: __bm_beforeOpen(). (Element ID:1) Error.ScriptEvaluationError (1 time(s)) detail : org.eclipse.birt.report.engine.api.EngineException: There are errors evaluating script "var parameters = params["multiSelectParameter"].value; var replacesPart = "'" + parameters.join("', '") + "'"; this.queryText = this.queryText.replace("replaceMe", replacesPart);":

Antwort

2

Erstellen eines Berichts mit einem Multi-Select Parameter. Erstellen Sie einen Listenfeldparameter und lassen Sie mehrere Werte zu. Sie können statische Werte hinzufügen oder dynamic auswählen und das Ergebnis einer anderen Abfrage anzeigen.

enter image description here

Schreiben Sie Ihre Abfrage wie folgende SQL-Statement:

select * from table where num in (replaceMe); 

Wählen Sie Ihre Daten-Set und wählen Sie das script Tab. Geben Sie für das beforeOpen das folgende Skript ein. Dies ersetzt den Platzhalter replaceMe in der SQL-Anweisung mit dem verkettet Wert Ihres Parameter Multi-Select eingeschlossen in einfachen Anführungszeichen ' und mit Komma getrennt , wie Sie sie brauchen:

var parameters = params["multiSelectParameter"].value; 
var replacesPart = "'" + parameters.join("', '") + "'"; 
this.queryText = this.queryText.replace("replaceMe", replacesPart); 
+0

dies sahen eine gute Lösung zu sein, aber es funktioniert nicht so, wie ich es erwartet habe, der Benutzer wird eine Liste mit Werten haben (ich habe vorher noch nicht alles und sollte nicht aktualisiert werden). Ich brauche etwas, damit der Benutzer eine Excel-Zeile auswählen und kopieren und in diesen Bericht einfügen kann, ohne meine Hilfe. – davejal

Verwandte Themen