JSL スクリプトで SQL と JMP 文字列を使用してデータをプルするこんにちは、みんな。
JSLスクリプトからSQLを使用して特定のデータベースにアクセスしています。
必要なデータを取得するには、仕様を指定する必要があります。
この仕様は、JMP/JSL ではリストまたはマトリックスの形式で提供されます。
個別の項目名を手動で入力すると、機能します。 =>
/* Fetch Single Items from Database*/
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN ('A','B','C','D')");ただし、アイテムは数千にもなる可能性があるため、アイテムのリスト (またはマトリックス) を表す 1 つの名前を使用する方法を見つける必要があります。
もちろん、このようには機能しません。 =>
/* Fetch Data from Data Table*/
Items_M = :Items << get as matrix();
/* Fetch Data from Database*/
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN ('^Items_M^')");とは何ですか最も単純なこれを行う方法は?
ありがとう!
データアクセスRe: JSL スクリプトで SQL と JMP 文字列を使用してデータをプルするありがとう!
これも同様に機能します。 そしてそれはとても便利です!
最高、
ヴァレリオ
Re: JSL スクリプトで SQL と JMP 文字列を使用してデータをプルする例によって使用するように変更しました連結アイテムリストをカンマ区切りの文字列に変換する関数。 コードでは ^^ を使用していますが、これは挿入を行う賢い方法ですが、それは と組み合わせてのみ機能します。評価インサート関数。
Re: JSL スクリプトで SQL と JMP 文字列を使用してデータをプルするこれが私が通常行う方法です:
- 列値の一意のリストを作成する
- そのリストを SQL にフィードする
- データベースからデータを新しいテーブルに戻します
私はこれまでのところ、このタスクを実行する最も簡単な方法を知っており、それをよく使用しています。
すぐに手元に届くように、これをメニューに実装しました。
// take unique values from the column :items
dt = open("$SAMPLE_DATA\Big Class.jmp");
summarize( Current Data Table(), item_lst = by( :NAME /* :item */ ) );
// show list
show(item_lst);
// prepare list for sql
item_lst_str=substitute (char(item_lst),"{","(","}",")","\!"","'");
// open SQL Query with inserted item_lst
New SQL Query(
Connection(
"ODBC:DSN=DSN_NAME;UID=user;DBQ=database;" // connection string to be modified
),
QueryName( "ITEMS_Query" ),
CustomSQL( eval insert("SELECT * from database_table dt where dt.item in ^item_lst_str^;") )
) << modify;
// or directly run if neccessary
// ) << Run;Re: JSL スクリプトで SQL と JMP 文字列を使用してデータをプルするどうもありがとうございます!
それが私が探していたものだった... 週末はデータベースへのアクセスが不安定だったのでうまくいきませんでした。
再度、感謝します。
Re: JSL スクリプトで SQL と JMP 文字列を使用してデータをプルするなんとも言えない最も単純な、しかし、これが私がそれを行う方法です:
// for test purposes
lstItems = {"A","B","C","D"};
// build a comma separated list
strItems = ConcatItems(lstItems,",");
/* Fetch Data from Database*/
eval(parse(evalinsert("\[
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN (^strItems^)")
]\")));;