JSL: selezione multipla da un elenco da inserire in una richiesta SQL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao, ho un piccolo problema,
Ho creato un elenco quindi una casella di riepilogo per selezionare valori diversi da questo elenco, vorrei inserire la mia selezione di valori in una richiesta SQL.
Ma non funziona, ecco il mio script:
scelta = {"rouge","vert","bleu", "jaune"};
flag_richiamo = 0;
NO=Nuova finestra("Prova",
Casella di riepilogo H (Casella di testo ("scegli colori"), y = Casella di riepilogo (scelta)),
Casella di riepilogo V(
Casella dei pulsanti ("OK",
scelta = (y << getselected);
::richiamo_flag = 1;
NO << Chiudi finestra;
)
)
);
seleziona = "SELEZIONA...
DA ...
DOVE Colori IN '" || scelta || "' " ;
Hai qualche idea del problema?
Grazie per le tue risposte !
Ri: JSL - Selezione multipla da un elenco da inserire in una richiesta SQLIL elementi concatenati La funzione accetta solo stringhe come argomenti, quindi non funzionerà per un elenco numerico.
Non sapevo che potevi continuare ad aggiungere argomenti di sostituzione dopo i primi due.Grazie per avermi mostrato quel trucco MS!
Ri: JSL - Selezione multipla da un elenco da inserire in una richiesta SQLIn un contesto Listbox come nell'esempio originale, gli elementi devono essere stringhe per essere selezionabili nella casella di riepilogo. Cioè, i numeri devono comunque essere convertiti in stringhe in anticipo.
Ma supponiamo che l'elenco sia dato come scelta = {12,156,13,25}, quindi la stringa SQL potrebbe essere concatenata in questo modo:
scelta = { 12 , 156 , 13 , 25 } ;
Selezionare = "SELEZIONA...DA...DOVE ID IN" || sostituire ( car ( scelta ) , "{" , "(" , "}" , ")" , " " , "" ) ;
Ri: JSL - Selezione multipla da un elenco da inserire in una richiesta SQLCiao,
Sì, anche la funzione concat funziona ma solo per la stringa e non per il numero. VERO ?
Hai qualche consiglio per un elenco numerico?
Ad esempio: invece di avere choice = {"rouge", "vert", "bleu", "jaune"}; abbiamo valori numerici come choice = {12,156,13,25};
e alla fine vogliamo avere:
Selezionare = "SELEZIONA...DA...DOVE ID IN (12,156,13,25)
Ri: JSL - Selezione multipla da un elenco da inserire in una richiesta SQLC'è una funzione carina chiamata elementi concatenati che può essere utilizzato per creare la tua lista in con una riga:
scelta = { "rossetto" , "vert" , "blu" , "giallo" } ;
richiamo_flag = 0 ;
NO = Nuova finestra ( "Test" ,
<< modale ,
Casella di riepilogo H ( Casella di testo ( "scegli i colori" ) , sì = Casella di riepilogo ( scelta ) ) ,
Casella di riepilogo V (
Casella dei pulsanti ( "OK" ,
scelta = ( sì << essere selezionato ) ;
:: richiamo_flag = 1 ;
)
)
) ;
scelte_in_list = "('" || elementi concatenati ( scelta , "', '" ) || "')" ;
Selezionare = "SELEZIONA...DA...DOVE I colori IN " || scelte_in_list ;
Ri: JSL - Selezione multipla da un elenco da inserire in una richiesta SQLGrazie Guillaume, che funzione!
Grazie MS!
Ri: JSL - Selezione multipla da un elenco da inserire in una richiesta SQLOltre a trasformare la lista in una stringa, cosa che gbu risolve bene sopra, c'è anche il problema della valutazione della selezione prima che la selezione sia stata effettuata a meno che la finestra non sia modale o la costruzione della stringa di selezione venga spostata in OK- script del pulsante.
Esempio di finestra modale:
scelta = { "rossetto" , "vert" , "blu" , "giallo" } ;
richiamo_flag = 0 ;
NO = Nuova finestra ( "Test" ,<< modale ,
Casella di riepilogo H ( Casella di testo ( "scegli i colori" ) , sì = Casella di riepilogo ( scelta ) ) ,
Casella di riepilogo V (
Casella dei pulsanti ( "OK" ,
scelta = ( sì << essere selezionato ) ;
:: richiamo_flag = 1 ;
)
)
) ;
scelte = "'" || scelta [ 1 ] || "'" ; // Primo elemento selezionato
// Aggiungi più elementi se ce ne sono più di uno
Per ( io = 2 , io <= N articoli ( scelta ) , io ++,
scelte = scelte || ", '" || scelta [ io ] || "'"
) ;
Selezionare = "SELEZIONA...DA...DOVE I colori IN (" || scelte || ")" ;
Esempio non modale:
scelta = { "rossetto" , "vert" , "blu" , "giallo" } ;
richiamo_flag = 0 ;
NO = Nuova finestra ( "Test" , //<
Casella di riepilogo H ( Casella di testo ( "scegli i colori" ) , sì = Casella di riepilogo ( scelta ) ) ,
Casella di riepilogo V (
Casella dei pulsanti ( "OK" ,
scelta = ( sì << essere selezionato ) ;
:: richiamo_flag = 1 ;
scelte = "'" || scelta [ 1 ] || "'" ;
Per ( io = 2 , io <= N articoli ( scelta ) , io ++,
scelte = scelte || ", '" || scelta [ io ] || "'"
);
Selezionare = "SELEZIONA...DA...DOVE I colori IN (" || scelte || ")" ;
NO << Chiudi la finestra ;
)
)
) ;
Ri: JSL - Selezione multipla da un elenco da inserire in una richiesta SQLSaluti Antonio,
Puoi fare così:
==========================================
scelta = {"rouge","vert","bleu", "jaune"};
flag_richiamo = 0;
NO=Nuova finestra("Prova",
Casella di riepilogo H (Casella di testo ("scegli colori"), y = Casella di riepilogo (scelta)),
Casella di riepilogo V(
Casella dei pulsanti ("OK",
scelta = (y << getselected);
::richiamo_flag = 1;
NO << Chiudi finestra;
)
)
);
seleziona = "SELEZIONA...
DA ...
DOVE Colori IN 'strchoice' ";
/* Passaggio 1: crea una stringa dall'elenco utilizzando loop - Creazione di una catena di carne nel formato attendu in bouclant sul nome del valore */
string_color = "('" || scelta[1] || "'";
For( i = 2, i <= Nitems(scelta), i++,
colore_stringa = colore_stringa || ",'" || scelta || "'"
);
colore_stringa = colore_stringa || ")";
/* Passaggio 2: sostituisci stingchoice con il valore di string_color */
select = replace(select,"'strchoice'",string_color);
==========================================
Cordialmente,
Guillaume