JMPを使用してデータベースに接続し、レコードを挿入する最近、JMPを使用してデータベース操作を実行する方法について、お客様からいくつか質問があります。問題の1つは、JMPを使用してデータベースに接続できるかどうかです。あり JMP はい、JMPスクリプト言語またはデータベースを開くダイアログインターフェイスを使用して、ODBC準拠のデータベースに接続できます。適切なODBCドライバがインストールされている(そしてデータソース名またはDSNが定義されている)場合は、[ファイル] - > [データベース] - > [データベースを開く]コマンドを使用してデータベースに接続し、JMP内で指定のテーブルを開きます。このビデオ Microsoft Accessデータベースファイルを使用してODBC DSNを構成する方法を示します。
この記事の例では、マシンデータソース名を使用してMicrosoft Accessデータベースに接続し、データベーステーブルtblVehicleを選択しました。ORACLE DBMS、MySQLデータベース、さらにはSQL Serverデータベースにも接続できました。

メニューオプションを使用したくない場合は、JSLを使用しても同じことができます。デモ用に提供されているこのサンプルスクリプトでは、Microsoft Accessデータベースに接続し、"tblVehicle"というタイトルのテーブル内のすべてのレコードを返しました(上記を参照)。
//データベースに接続してテーブルを選択
データベースを開く (
"DSN = MSアクセスデータベース; DBQ = C:\ Users \ stkopr \ Documents \ MovinOn.accdb; DriverId = 25; FIL = MSアクセス; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;"、
"SELECT * FROM tblVehicle"、
"tbl車両"
) ;

もう1つ質問がありますが、最近顧客から寄せられたのは、JMPを使用してデータベースにレコードを挿入できるかどうかです。繰り返しますが、答えは「はい」です。JMPを使用して何らかの分析を実行してから、分析結果表または単一の個々のレコードをデータベースに挿入することもできます。
データベーステーブルに単一のレコードを挿入するためのデモンストレーションスクリプトを以下に示します。
//データベースに接続して新しいレコードを挿入する
データベースを開く ( "DSN = MSアクセスデータベース; DBQ = C:\ Users \ stkopr \ Documents \ MovinOn.accdb; DriverId = 25; FIL = MSアクセス; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;"、
"tbl車両に挿入
(VehicleID、LicensePlateNum、Axle、Color)
値( 'TRK-199'、'JMP 429'、4、'青'); " ) ;
以前に送信したのと同じJSLを使用して、新しく挿入されたレコードを選択した状態でJMPでテーブルを表示できます。

レコードの順序付け、where句でのデータのサブセット化、ネストしたサブクエリの送信、または単一のレコードの削除も、すべてJMPの快適さの範囲内で可能です。
すべてのデータベース操作を完了したら、データベース接続を閉じることを忘れないでください。繰り返しますが、これは[データベースを開く]ダイアログウィンドウの[切断]ボタンまたはJSLを使用して実行できます。
JMP ODBCインターフェイスの使用に関する詳細は、ヘルプドキュメントの「データベースからデータをインポートする」を参照してください。
この機能を使ってレコードを挿入したかどうかを教えてください。それとも、通常はテーブル全体をデータベースに書き戻しますか。
Guillaumeは書きました:こんにちは、そしてこのヒントを本当にありがとう。ログ...ギヨーム書きました:
こんにちは、
そして、このヒントを本当にありがとう。Log Capture機能は私が探していたものです。
について、
ギヨーム
スタンKoprowskiは書きました:こんにちはGuillaume、あなたのCをありがとう...スタン・コプロフスキ書きました:
こんにちはギローム、
ご意見ありがとうございます。JSLが再計算を実行しなくても済むようになったことをうれしく思います。
はい、あなたの質問に対する答えとして、データベースからJSL変数に返されたエラーメッセージを文字列として取得することができます。
これを行う1つの方法は、ログキャプチャ機能を使用することです。JSLコードをテストするために、2種類のエラーをシミュレートしました。
指定されたテーブルから列を選択する前にAccessデータベースへの接続を確立しないことによる失敗エラー。
適切なODBCドライバがインストールされていないことによる失敗エラー。
次のJSLコードとその結果のエラーメッセージに、やりたいことを達成する方法の例を含めました。
デフォルトはここにあります(1)。
AccessError01 = "アクセスエラー:" ||ログキャプチャ(オープンデータベース(
"DSN = MSアクセスデータベース; DBQ = C:UsersstkoprDocumentsMovinOn.accdb; DriverId = 25; FIL = MSアクセス; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;"、
"SELECT * FROM tblVehicle"、
"tbl車両"
;);
以下がログに書き込まれ、シナリオテスト1のエラー文字列が変数AccessError01に格納されます。
"アクセスエラー:
[Microsoft] [ODBC Microsoft Access Driver]ファイル '(unknown)'が見つかりませんでした。
「
以下がログに書き込まれ、シナリオテスト2の文字列は変数AccessError01に格納されます。
"アクセスエラー:
[iODBC] [Driver Manager]データソース名が見つからず、デフォルトドライバも指定されていません。ドライバをロードできませんでした
「
ご意見ありがとうございました。
スタン
Guillaumeは書きました:こんにちはスタン、私はこのINSERTステートメントを使用します...ギヨーム書きました:
こんにちはスタン、
期間ごとの統計指標を節約するために、いくつかのjslアプリケーションについては、このINSERTステートメントをあなたの投稿に記述されているように使用します。
このように私は後でこれらの指標を要求することができます(これは再計算を避けます)。
しかし私は一つ質問があります。JMPがデータベースエラーをキャッチしてデータベースエラーを1つのjsl変数に格納できるかどうか知っていますか?もしそうなら、どうすればいいの?
私はここで問題をより詳しく説明します: https://communities.sas.com/message/167531#167531
ありがとう
ギヨーム