ODBC Driver for 4Dを経由して、外部アプリケーションから4D SQLエンジンに接続できます。
Note: この設定は例題として使用されます。4Dアプリケーションに直接SQLで接続することができます。詳細についてはSQL LOGINコ マンドの説明を参照してください。
- チュートリアル例題データベースのコピーを作成します。
- データベースを含むフォルダの名前を"Client" と"Server"にそれぞれ変更します。
- "Server"フォルダの例題データベースを起動し、データベース設定のSQL/設定ページで"起 動時にSQLサーバを起動する"チェックボックスにチェックを入れ、アプリケーションの開始時にSQLサーバーが起動されるようにします:

- "Server"フォルダのデータベースを再起動し、SQLサーバを有効にします。
- 4D ODBC Driver for 4Dをインストールし、ODBCデータソースアドミニストレータに名前が表示されているか確認します:

- データソース "Test_ODBC_Driver" を作成します:

そして "Test" ボタンをクリックして、接続をテストします:

- "Client"フォルダの例題データベースを起動し、メインウィンドウを開いて、 "Connect to 4D" ボタンをクリックします。このボタンに書かれているコードは以下のとおりです:
C_TEXT($Crt_DSN;$My_4D_DSN)
ARRAY TEXT(aDSN;0)
ARRAY TEXT(aDS_Driver;0)
ARRAY TEXT(aTitles;0)
ARRAY TEXT(aDirectors;0)
ARRAY TEXT(aMedias;0)
REDUCE SELECTION([MOVIES];0)
$Crt_DSN:=Get current data source
ALERT("The current DSN is "+$Crt_DSN)
Begin SQL
SELECT Title, Director, Media
FROM MOVIES
ORDER BY 1
INTO :aTitles, :aDirectors, :aMedias;
End SQL
GET DATA SOURCE LIST(User data source;aDSN;aDS_Driver)
$My_4D_DSN:="Test_ODBC_Driver_v11"
If(Find in array(aDSN;$My_4D_DSN)>0)
SQL LOGIN($My_4D_DSN;"Administrator";"";*)
If(Ok=1)
$Crt_DSN:=Get current data source
ALERT("The current DSN is "+$Crt_DSN)
ARRAY TEXT(aTitles;0)
ARRAY TEXT(aDirectors;0)
ARRAY TEXT(aMedias;0)
Begin SQL
SELECT Title, Director, Media
FROM MOVIES
ORDER BY 1
INTO :aTitles, :aDirectors, :aMedias;
End SQL
SQL LOGOUT
$Crt_DSN:=Get current data source
ALERT("The current DSN is "+$Crt_DSN)
Else
ALERT("Unable to connect to the external data source")
End if
Else
ALERT("ODBC Driver data source not found")
End if
ご覧頂いたとおり、メソッドの最初の部分でローカルデー タベースへのクエリを作成しています。次に、ODBC Driverを経由して他の4Dデータベースに接続し、同じクエリを行っています。結果はもちろん同じはずです。