JSL – Mehrfachauswahl aus einer Liste zum Einfügen in eine SQL-Anfrage<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo, ich habe ein kleines Problem,
Ich habe eine Liste und dann ein Listenfeld erstellt, um verschiedene Werte aus dieser Liste auszuwählen. Ich möchte meine Werteauswahl in eine SQL-Anfrage einfügen.
Aber es funktioniert nicht, hier ist mein Skript:
choice = {"rouge", "vert", "bleu", "jaune"};
Recall_flag = 0;
NW=Neues Fenster("Test",
H Listenfeld( Textfeld( „Farben auswählen“), y = Listenfeld( Auswahl) ),
V-Listenfeld(
Schaltflächenfeld( „OK“,
choice = (y << getselected);
::recall_flag = 1;
NW << Fenster schließen;
)
)
);
select = "SELECT ...
AUS ...
WHERE Colors IN '" || choice || "' " ;
Haben Sie eine Vorstellung von dem Problem?
Danke für deine Antworten !
Betreff: JSL – Mehrfachauswahl aus einer Liste zum Einfügen in eine SQL-AnfrageDer Concat-Elemente Die Funktion akzeptiert nur Zeichenfolgen als Argumente, sodass dies für eine numerische Liste nicht funktioniert.
Ich wusste nicht, dass man nach den ersten beiden weiterhin Substitutionsargumente hinzufügen kann.Danke, dass du mir diesen Trick gezeigt hast, MS!
Betreff: JSL – Mehrfachauswahl aus einer Liste zum Einfügen in eine SQL-AnfrageIn einem Listbox-Kontext wie im ursprünglichen Beispiel müssen die Elemente Zeichenfolgen sein, damit sie in der Listbox ausgewählt werden können. Das heißt, Zahlen müssen ohnehin vorher in Strings umgewandelt werden.
Nehmen wir jedoch an, dass die Liste als choice = {12,156,13,25} angegeben ist, dann könnte der SQL-String wie folgt verkettet werden:
Auswahl = { 12 , 156 , 13 , 25 } ;
wählen = „SELECT ...FROM ...WHERE ID IN“ || Ersatz ( verkohlen ( Auswahl ) , „{“ , "(" , „}“ , ")" , " " , „“ ) ;
Betreff: JSL – Mehrfachauswahl aus einer Liste zum Einfügen in eine SQL-AnfrageHallo,
Ja, die Concat-Funktion funktioniert auch, aber nur für Zeichenfolgen und nicht für Zahlen. WAHR ?
Habt ihr Tipps für eine numerische Liste?
Zum Beispiel: anstatt have choice = {"rouge", "vert", "bleu", "jaune"}; wir haben numerische Werte wie choice = {12,156,13,25};
und am Ende wollen wir haben:
wählen = „SELECT ...FROM ...WHERE ID IN (12,156,13,25)“
Betreff: JSL – Mehrfachauswahl aus einer Liste zum Einfügen in eine SQL-AnfrageEs gibt eine raffinierte Funktion namens Concat-Elemente mit dem Sie Ihre In-Liste mit einem Einzeiler erstellen können:
Auswahl = { "Rouge" , „vert“ , „blau“ , „gelb“ } ;
Recall_Flag = 0 ;
NW = Neues Fenster ( "Prüfen" ,
<< modal ,
H-Listenfeld ( Textfeld ( „Farben wählen“ ) , j = Listenfeld ( Auswahl ) ) ,
V-Listenfeld (
Button-Box ( "OK" ,
Auswahl = ( j << getselected ) ;
:: Recall_Flag = 1 ;
)
)
) ;
choice_in_list = "('" || Concat-Elemente ( Auswahl , "', '" ) || "')" ;
wählen = „SELECT ...FROM ...WHERE Farben IN“ || choice_in_list ;
Betreff: JSL – Mehrfachauswahl aus einer Liste zum Einfügen in eine SQL-AnfrageMerci Guillaume, es hat funktioniert!
Vielen Dank, MS!
Betreff: JSL – Mehrfachauswahl aus einer Liste zum Einfügen in eine SQL-AnfrageAbgesehen davon, dass die Liste in einen String umgewandelt wird, was gbu oben gut löst, gibt es auch das Problem, dass die Auswahl ausgewertet wird, bevor die Auswahl getroffen wurde, es sei denn, das Fenster ist modal oder der Aufbau der Auswahlzeichenfolge wird in den OK-Bereich verschoben. Schaltflächenskript.
Beispiel für ein modales Fenster:
Auswahl = { "Rouge" , „vert“ , „blau“ , „gelb“ } ;
Recall_Flag = 0 ;
NW = Neues Fenster ( "Prüfen" ,<< modal ,
H-Listenfeld ( Textfeld ( „Farben wählen“ ) , j = Listenfeld ( Auswahl ) ) ,
V-Listenfeld (
Button-Box ( "OK" ,
Auswahl = ( j << getselected ) ;
:: Recall_Flag = 1 ;
)
)
) ;
Entscheidungen = "'" || Auswahl [ 1 ] || "'" ; // Erstes ausgewähltes Element
// Weitere Elemente hinzufügen, wenn mehr als eines
Für ( ich = 2 , ich <= N Artikel ( Auswahl ) , ich ++,
Entscheidungen = Entscheidungen || ", '" || Auswahl [ ich ] || "'"
) ;
wählen = "SELECT ...FROM ...WHERE Farben IN (" || Entscheidungen || ")" ;
Nichtmodales Beispiel:
Auswahl = { "Rouge" , „vert“ , „blau“ , „gelb“ } ;
Recall_Flag = 0 ;
NW = Neues Fenster ( "Prüfen" , //<
H-Listenfeld ( Textfeld ( „Farben wählen“ ) , j = Listenfeld ( Auswahl ) ) ,
V-Listenfeld (
Button-Box ( "OK" ,
Auswahl = ( j << getselected ) ;
:: Recall_Flag = 1 ;
Entscheidungen = "'" || Auswahl [ 1 ] || "'" ;
Für ( ich = 2 , ich <= N Artikel ( Auswahl ) , ich ++,
Entscheidungen = Entscheidungen || ", '" || Auswahl [ ich ] || "'"
);
wählen = "SELECT ...FROM ...WHERE Farben IN (" || Entscheidungen || ")" ;
NW << Fenster schließen ;
)
)
) ;
Betreff: JSL – Mehrfachauswahl aus einer Liste zum Einfügen in eine SQL-AnfrageGruß Antoine,
Sie können so vorgehen:
=========================================
choice = {"rouge", "vert", "bleu", "jaune"};
Recall_flag = 0;
NW=Neues Fenster("Test",
H Listenfeld( Textfeld( „Farben auswählen“), y = Listenfeld( Auswahl) ),
V-Listenfeld(
Schaltflächenfeld( „OK“,
choice = (y << getselected);
::recall_flag = 1;
NW << Fenster schließen;
)
)
);
select = "SELECT ...
AUS ...
WHERE Colors IN 'strchoice' " ;
/* Schritt 1: Erstellen Sie eine Zeichenfolge aus der Liste mithilfe einer Schleife – Erstellen Sie eine Dateikette im Format, die auf der Anzahl der Werte angezeigt wird */
string_color = "('" || choice[1] || "'";
For( i = 2, i <= Nitems(choice), i++,
string_color = string_color || ","'" || Auswahl || "'"
);
string_color = string_color || ")";
/* Schritt 2: Stingchoice durch den Wert von string_color ersetzen */
select = replacement(select,"'strchoice'",string_color);
=========================================
Herzliche Grüße,
Guillaume