ショボ短歌会

いつもお世話になっております。
VBにてDAO接続する際にJETとODBCDirectとあると思いますが、この2つの違いはどこで判断するのでしょうか。

以下に自分がODBCDirect接続だと思っているロジックを記述します。

-------------プログラムスタート-------
_1 Private Sub Form_Load()
_2
_3 Dim Mydb As Database
_4 Dim wk_str As String
_5 Dim Mydata As Recordset
_6 Dim str_sql As String
_7
_8 'ODBC接続文字列
_9 wk_str = "ODBC;DSN = DataSoce_Name;"
10 wk_str = wk_str & "UID = User_Name;"
11 wk_str = wk_str & "PWD = PassWord"
12
13 'データベースとの接続
14 Set Mydb = DBEngine.OpenDatabase("DataSoce_Name", False, False, wk_str)

15 'SQL文
16 str_sql = "select name from sample"

17 'SQLの実行
18 Set Mydata = Mydb.OpenRecordset(str_sql, dbOpenDynaset)

19 'SQLの結果
20 MsgBox Mydata.Fields("name").Value

21 'レコードセットのクローズ
22 Mydata.Close

23 'データベースのクローズ
24 Mydb.Close

25 End Sub
-------------プログラムエンド-------

●Jet経由の場合
上記プログラム9行目のDSNと14行目のOpenDatabaseの"DataSoce_Name"にmdbのパスを設定している場合。
(OpenDatabaseにmdbのパスのみを設定している場合はローカル接続だと思う。)

●ODBCDirect経由の場合
上記プログラム9行目のDSNと14行目のOpenDatabaseの"DataSoce_Name"にODBCデータソース名を設定している場合。

2つの違いはこのような感じではと思いますが間違いであればご指摘いただけないでしょうか。
また、プログラム自体にも間違いがあればご指摘下さい。

A 回答 (1件)

※略引用


>JETとODBCDirect
>この2つの違いはどこで判断
>●Jet経由の場合
>上記プログラム9行目のDSNと14行目~
>●ODBCDirect経由の場合
>上記プログラム9行目のDSNと14行目~

実験しておりませんが、あなたの言う通りの判断でよいのかも知れません。

しかしコードから判断をするのでは、あまり個人的にはすっきりしません。
ODBCデータソース名から、使用するドライバを割り出した方が良いかもしれません。

ユーザDSN
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
システムDSN
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI


[ODBCのデータソース登録内容の確認]
http://okweb.jp/kotaeru.php3?q=239652

[PCインストール済みのアプリケーション情報の取得方法]
http://okweb.jp/kotaeru.php3?q=1253134
    • good
    • 0
この回答へのお礼

ご解答有難う御座います。
記述して頂いたURLを見てみたのですが、あまり理解できず、もっと勉強が必要だと思いました。
少しでも内容を理解できるように頑張ります。

お礼日時:2005/10/16 10:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!