Come saltare l'elemento nell'elenco JSL nella query SQL se non esiste?Ciao a tutti,
Ho uno script che esegue query dall'elenco JSL. Tuttavia, viene visualizzato un errore ogni volta che qualcosa non esiste nel database. Esiste un modo per saltare ciò che non esiste e procedere al valore successivo nell'elenco?
Ho questo esempio:
NameList = {"John","Jane","Anna","Dominic"};
NameItems = ConcatItems(NameList ,",");
Eval (Parse (Evalinsert("\[
db= Open Database("Server Specs", "SELECT * FROM dbNames WHERE name IN (^NameItems ^)")
]\")));;Quindi, ad esempio, John non esiste, dovrebbe saltare e andare con Jane, Anna o Dominic
Automazione e scriptingfinestreRi: Come saltare l'elemento nell'elenco JSL nella query SQL se non esiste?Un operatore IN non dovrebbe fallire a meno che non venga trovato nessuno dei valori nell'elenco. Dovresti essere in grado di proteggere questo problema con una funzione Try()
Eval (Parse (Evalinsert("\[
db= Try( Open Database("Server Specs", "SELECT * FROM dbNames WHERE name IN (^NameItems ^)") )
]\")));
Inoltre, secondo la mia esperienza, l'operatore IN dovrebbe racchiudere gli elementi del carattere all'interno della chiamata tra virgolette.
WHERE name IN ('John','Jane','Anna','Dominic')
Modificando il tuo JSL nel formato riportato di seguito, la chiamata dell'operatore IN verrà modificata nel modulo riportato sopra
NameList = {"John","Jane","Anna","Dominic"};
NameItems = "'" || ConcatItems(NameList ,"','") || "'";Ri: Come saltare l'elemento nell'elenco JSL nella query SQL se non esiste?*modificare
Non ho visto la risposta di Jim. Buona risposta, comunque.
Non sembra che l'elenco dei nomi sia formattato correttamente.
John, Jane, Anna, Domenico
Dovrebbe essere 'John','Jane','Anna','Dominic'
Se vuoi usare Concat Items(), dovrai fare qualcosa del genere:
NameItems = "'" || Concat Items(NameList,"','") || "'"