SQLクエリのJSLリストの項目が存在しない場合にスキップするにはどうすればよいですか?こんにちは、みんな、
JSLリストからクエリを実行するスクリプトがあります。ただし、データベース上に何かが存在しない場合は、常にエラーが発生します。存在しないものをスキップして、リスト内の次の値に進む方法はありますか?
こんな例があります。
NameList = {"John","Jane","Anna","Dominic"};
NameItems = ConcatItems(NameList ,",");
Eval (Parse (Evalinsert("\[
db= Open Database("Server Specs", "SELECT * FROM dbNames WHERE name IN (^NameItems ^)")
]\")));;たとえば、ジョンは存在しないので、スキップしてジェーン、アンナ、またはドミニクを選択する必要があります。
自動化とスクリプト作成ウィンドウズRe: SQL クエリで JSL リストの項目が存在しない場合にスキップするにはどうすればよいですか?IN 演算子は、リスト内の値が見つからない限り失敗しません。 Try() 関数を使用してこの問題を保護できるはずです。
Eval (Parse (Evalinsert("\[
db= Try( Open Database("Server Specs", "SELECT * FROM dbNames WHERE name IN (^NameItems ^)") )
]\")));
また、私の経験では、IN 演算子は呼び出し内の文字要素を引用符で囲む必要があります。
WHERE name IN ('John','Jane','Anna','Dominic')
JSL を以下に変更すると、IN オペレーター呼び出しが上記の形式に変更されます。
NameList = {"John","Jane","Anna","Dominic"};
NameItems = "'" || ConcatItems(NameList ,"','") || "'";Re: SQL クエリで JSL リストの項目が存在しない場合にスキップするにはどうすればよいですか?*編集
ジムの反応が分かりませんでした。反応は良いんだけどね。
名前のリストが正しくフォーマットされていないようです。
ジョン、ジェーン、アンナ、ドミニク
「ジョン」、「ジェーン」、「アンナ」、「ドミニク」である必要があります
Concat Items() を使用したい場合は、次のようなことを行う必要があります。
NameItems = "'" || Concat Items(NameList,"','") || "'"