みなさん、こんにちは。
データベースに接続した後の変数 (または参照) の作成で問題が発生します。 変数を作りたかったコン後で別のクエリを実行するために使用できます。 ただし、最初は、同じ SQL サーバー上にある異なるデータベースのデータが必要だったので、2 つの接続を作成する必要がありました (同じユーザー名とパスワードが必要です)。 どちらの接続でも、特定のユーザー名に対してパスワードを 2 回入力する必要があります。 一度、できれば conn 変数の作成時に提供したいと考えています。
その後、以前に作成した conn 変数を使用して INSERT クエリを実行して 1 つのセルのみを更新しようとしましたが、成功しませんでした。 JMP ログには、「engineer」ユーザー名でデータベースへの接続を確立する際に問題があったことが示され、conn 変数を作成している行が示されています。
[Microsoft][ODBC SQL Server Driver][SQL Server] ユーザー「engineer」のログイン中にエラーが発生しました。
ただし、同じユーザー名を使用して、両方の「新しい SQL クエリ」を正常に実行できます (各クエリにパスワードを指定した後)。
evalinsert 関数は期待通りに動作しているようです。
問題を解決する方法のヒントと、何が欠けているかを示していただければ幸いです。 よろしくお願いします。
conn = Create Database Connection ("ODBC:Description=Server_Database;DRIVER=SQL Server;SERVER=Server;UID=engineer;PWD=%_PWD_%;APP=JMP;WSID=DDPC0283;DATABASE=Data_1;");
Param_Data = New SQL Query(
Version( 130 ),
//conn; //providing connection reference here instead of Connection (below) returns an error
Connection(
"ODBC:Description=Server_Database;DRIVER=SQL Server;SERVER=Server;UID=engineer;PWD=%_PWD_%;APP=JMP;WSID=DDPC0283;DATABASE=Data_1;"
),
QueryName("Data1"),
Select(
Column( "Param1", "t1"),
Column( "Param2", "t1"),
),
From( Table( "ParamData", Schema( "pi" ), Alias( "t1" ))),
);
Process_Data = New SQL Query(
Version( 130 ),
Connection(
"ODBC:Description=Server_Database;DRIVER=SQL Server;SERVER=Server;UID=engineer;PWD=%_PWD_%;APP=JMP;WSID=DDPC0283;DATABASE=Data_2;"
),
QueryName( "Data2" ),
Select(
Column( "Process1", "t2"),
Column( "Process1", "t2"),
),
From( Table( "ProcessData", Schema( "dbo" ), Alias( "t2" ))),
);
//sql query
sql_update = evalinsert(
"
UPDATE pi.ParamData
SET Param1 = '^combined_params^'
WHERE Process1 = '^selected_process^'
"
);
write(sql_update);
execute sql (conn, sql_update);
こんにちは、pmrozさん。
ご協力ありがとうございます! それは完璧に機能し、はるかに簡単です。 ただし、conn 変数の作成にはまだ問題がありました。 やったことは、一部を削除したことですUID=エンジニア認証は内部ネットワークへのログに基づいており、以前のユーザー名の設定を記憶していると思うので、パラメータ チェーンから削除します。 さらに、チェーンの最後にあるデータベースの名前はクエリで指定されているため、削除しました。 よろしくお願いします。
conn = Create Database Connection ("ODBC:Description=Server_Database;DRIVER=SQL Server;SERVER=Server;PWD=%_PWD_%;APP=JMP;WSID=DDPC0283;");
クエリ ビルダーは独自のデータベース接続を使用しているようです。このコードを使用すると、 SQLの実行より単純な場合もあり、データベースへの接続は 1 つだけ必要です。
conn = Create Database Connection ("ODBC:Description=Server_Database;DRIVER=SQL Server;SERVER=Server;UID=engineer;PWD=%_PWD_%;APP=JMP;WSID=DDPC0283;DATABASE=Data_1;");
sql1 =
"SELECT t1.Param1, t1.Param2
FROM pi.ParamData t1";
param_data = execute sql(conn, sql1, "Data1");
sql2 =
"SELECT t2.Process1, t2.Process2
FROM dbo.ProcessData t2";
process_data = execute sql(conn, sql2, "Data2");
//sql query
// Need to load values in for combined_params and selected_process variables
sql_update = evalinsert(
"
UPDATE pi.ParamData
SET Param1 = '^combined_params^'
WHERE Process1 = '^selected_process^'
"
);
write(sql_update);
execute sql (conn, sql_update);
close database connection(conn);