Comment ignorer un élément de la liste JSL dans une requête SQL s'il n'existe pas ?Salut tout le monde,
J'ai un script qui interroge la liste JSL. Cependant, une erreur s'affiche chaque fois que quelque chose n'existe pas dans la base de données. Existe-t-il un moyen d'ignorer ce qui n'existe pas et de passer à la valeur suivante dans la liste ?
J'ai cet exemple :
NameList = {"John","Jane","Anna","Dominic"};
NameItems = ConcatItems(NameList ,",");
Eval (Parse (Evalinsert("\[
db= Open Database("Server Specs", "SELECT * FROM dbNames WHERE name IN (^NameItems ^)")
]\")));;Ainsi par exemple, John n'existe pas, il devrait sauter et aller avec Jane, Anna ou Dominic
Automatisation et scriptsles fenêtresRe : Comment ignorer un élément de la liste JSL dans une requête SQL s'il n'existe pas ?Un opérateur IN ne devrait pas échouer à moins qu'aucune des valeurs de la liste ne soit trouvée. Vous devriez pouvoir protéger ce problème avec une fonction Try()
Eval (Parse (Evalinsert("\[
db= Try( Open Database("Server Specs", "SELECT * FROM dbNames WHERE name IN (^NameItems ^)") )
]\")));
De plus, d'après mon expérience, votre opérateur IN doit placer les éléments de caractère dans l'appel avec des guillemets.
WHERE name IN ('John','Jane','Anna','Dominic')
Changer votre JSL comme ci-dessous modifiera l'appel de l'opérateur IN au formulaire ci-dessus
NameList = {"John","Jane","Anna","Dominic"};
NameItems = "'" || ConcatItems(NameList ,"','") || "'";Re : Comment ignorer un élément de la liste JSL dans une requête SQL s'il n'existe pas ?*modifier
Je n'ai pas vu la réponse de Jim. Bonne réponse cependant.
Il ne semble pas que la liste des noms soit correctement formatée.
John, Jane, Anna, Dominic
Devrait être « John », « Jane », « Anna », « Dominic »
Si vous souhaitez utiliser Concat Items(), vous devrez faire quelque chose comme ceci :
NameItems = "'" || Concat Items(NameList,"','") || "'"