Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1416 / 2272 ツリー ←次へ | 前へ→

【7247】ADOを使用したリンクテーブルの作成につい... 上を目指す者 06/2/8(水) 9:37 質問[未読]
【7249】Re:ADOを使用したリンクテーブルの作成につ... YU-TANG 06/2/9(木) 18:45 回答[未読]
【7252】Re:ADOを使用したリンクテーブルの作成につ... 上を目指す者 06/2/10(金) 9:36 回答[未読]
【7275】Re:ADOを使用したリンクテーブルの作成につ... 上を目指す者 06/2/14(火) 18:26 回答[未読]

【7247】ADOを使用したリンクテーブルの作成につい...
質問  上を目指す者  - 06/2/8(水) 9:37 -

引用なし
パスワード
   ODBCドライバ“SQL Server”を使用して、
MDBファイルへSQL Server上にあるテーブルへリンクテーブルを作成したいのですが、Windows 認証でログインする場合の作成方法が分かりません。

Windows 認証を使わずに、普通にID/PASSを入れてログインする方法なら分かります。

Dim tbl As New ADOX.Table
Dim cat As New ADOX.Catalog

'Open the catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  "Data Source=" & <MDBファイル名> & ";"

'Set the name and target catalog for the table
tbl.Name = "<テーブル名>"

Set tbl.ParentCatalog = cat

'Set the properties to create the link
tbl.Properties("Jet OLEDB:Create Link") = True
tbl.Properties("Jet OLEDB:Link Provider String") = _
  "ODBC;DSN=<DSN名>;UID=<ID>;PWD=<PASS>;"
tbl.Properties("Jet OLEDB:Remote Table Name") = "<テーブル名>"

' Append the table to the collection
cat.Tables.Append tbl
cat.Tables.Refresh

上記のコーディングを使用すれば、普通のログインでのリンクテーブル作成はできます。
しかし、Windows 認証の場合、これではダメです。

手動でリンクテーブルを作成していった際に、
「セキュリティ接続を使用する」のチェックボックスがあるので、
これに相当する tbl.Properties の設定項目があると思うのですが、
見つけられませんでした。

どなたかご存知の方いらっしゃいましたら教えてください。
よろしくお願いします。

【7249】Re:ADOを使用したリンクテーブルの作成に...
回答  YU-TANG  - 06/2/9(木) 18:45 -

引用なし
パスワード
   こんばんは、YU-TANG です。

▼上を目指す者 さん:
>手動でリンクテーブルを作成していった際に、
>「セキュリティ接続を使用する」のチェックボックスがあるので、

それは Access ではなく DSN の設定ではありませんか。
たまたま Access がシームレスに DSN マネージャを呼び出して
いるだけで、Access の機能ではないと思いますが。

手元に SQL Server が無いので確認できませんが、手動で
「セキュリティ接続を使用する」設定の DSN を予め作成し、
ADOX でその DSN を指定するのではダメでしょうか。

【7252】Re:ADOを使用したリンクテーブルの作成に...
回答  上を目指す者  - 06/2/10(金) 9:36 -

引用なし
パスワード
   YU-TANG さん、返信ありがとうございます。

>それは Access ではなく DSN の設定ではありませんか。
>たまたま Access がシームレスに DSN マネージャを呼び出して
>いるだけで、Access の機能ではないと思いますが。
はい、そのとおりです。

>手元に SQL Server が無いので確認できませんが、手動で
>「セキュリティ接続を使用する」設定の DSN を予め作成し、
>ADOX でその DSN を指定するのではダメでしょうか。
なるほど、ODBCでのDSN登録そのものの設定で
なんとかなるかもしれませんね。

DSN登録もプログラム上で行っているので、
このへんの情報を探ってみます。

また、報告させて頂きます。ありがとうございました。

【7275】Re:ADOを使用したリンクテーブルの作成に...
回答  上を目指す者  - 06/2/14(火) 18:26 -

引用なし
パスワード
   >DSN登録もプログラム上で行っているので、
>このへんの情報を探ってみます。
>
>また、報告させて頂きます。ありがとうございました。
調べてみた結果、以下のコーディングでうまく行きました。
参考のためにコーディングを載せておきます。

strDriver = "SQL Server"
strAttr = "SERVER=<サーバー名>" & vbNullChar
strAttr = strAttr & "DSN=<DSN名>" & vbNullChar
strAttr = strAttr & "DATABASE=<データベース名>" & vbNullChar
strAttr = strAttr & "TRUSTED_CONNECTION=YES" & vbNullChar  '←これを追加することでWindows認証の設定になる
lRet = SQLConfigDataSource(0, ODBC_ADD_DSN, strDriver, strAttr)

上記のコーディングを用いて、ODBCのDSN名そのものをWindows認証の設定にしておけば、
後は、以前載せたODBCリンクのコーディングを用いてリンクテーブルの作成が可能になります。

1416 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free