-PR-
解決済み

ODBCの自動登録について

  • 暇なときにでも
  • 質問No.108207
  • 閲覧数1835
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 53% (22/41)

VB6のプログラム上から、ODBCのデータソースを登録する方法は、ありますか?
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 65% (276/422)

どもども田吾作7です。
以下のソースを標準モジュールにて実行してみてください。

※注意
スペースは全て全角で行っていますので、コピペがうまくいかないときは、全角スペース1つを、半角スペース2つに置き換えてください。


Option Explicit

Private Const ODBC_ADD_DSN = 1  ' 追加
Private Const ODBC_CONFIG_DSN = 2 ' 編集
Private Const ODBC_REMOVE_DSN = 3 ' 削除

Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
    (ByVal hwndParent As Long, _
     ByVal fRequest As Long, _
     ByVal lpszDriver As String, _
     ByVal lpszAttributes As String) As Long

Sub Main()
  'SQL-Server
  Call AddDSN_SQL("SQL_DSN")
  Call RemoveDSN("SQL_DSN", "SQL Server")
  
  'Access
  Call AddDSN_ACCESS("AccessDSN", "《MDBファイルのフルパス》")
  Call RemoveDSN("AccessDSN", "Microsoft Access Driver (*.mdb)")
End Sub


' データソースの追加 for SQL-Server
Private Sub AddDSN_SQL(inDSNName As String)
  Dim wkSts      As Long
  Dim strDriver    As String
  Dim strAttributes  As String
  
  ' ODBCドライバ
  strDriver = "SQL Server"
  
  ' 属性
  strAttributes = "DSN=" & inDSNName & vbNullChar & _
          "Description=SampleDSN" & vbNullChar & _
          "Server=(local)" & vbNullChar & _
          "Database=pubs" & vbNullChar
  
  ' データソースの登録
  wkSts = SQLConfigDataSource(0&, ODBC_ADD_DSN, strDriver, strAttributes)
  
  ' 登録の成功・失敗の判断
  If wkSts Then
    MsgBox "登録成功 SQL"
  Else
    MsgBox "登録失敗 SQL"
  End If
  
End Sub

' データソースの追加 for ACCESS
Private Sub AddDSN_ACCESS(inDSNName As String, inMdbFile As String)
  Dim wkSts      As Long
  Dim strDriver    As String
  Dim strAttributes  As String
  
  ' ODBCドライバ
  strDriver = "Microsoft Access Driver (*.mdb)"
  
  ' 属性
  strAttributes = "DSN=" & inDSNName & vbNullChar & _
          "Uid=Admin" & vbNullChar & "pwd=" & vbNullChar & _
          "DBQ=" & inMdbFile & vbNullChar
   
  ' データソースの登録
  wkSts = SQLConfigDataSource(0&, ODBC_ADD_DSN, strDriver, strAttributes)
  
  ' 登録の成功・失敗の判断
  If wkSts Then
    MsgBox "登録成功 ACCESS"
  Else
    MsgBox "登録失敗 ACCESS"
  End If
End Sub

' データソースの削除
Private Sub RemoveDSN(inDSNName As String, inServerDriver As String)
  Dim wkSts      As Long
  Dim strDriver    As String
  Dim strAttributes  As String
  
  ' ドライバ名を指定する
  strDriver = inServerDriver
  
  ' 削除するデータソース名を指定する
  strAttributes = "DSN=" & inDSNName & vbNullChar
  
  ' データソースを削除する
  wkSts = SQLConfigDataSource(0, ODBC_REMOVE_DSN, strDriver, strAttributes)
  
  ' 削除の成功・失敗の判断
  If wkSts Then
    MsgBox "削除成功"
  Else
    MsgBox "削除失敗"
  End If
End Sub

お礼コメント
Hk2001

お礼率 53% (22/41)

細かい回答ありがとうございます。
削除や変更もできるんですね。使用するかはわからないですけど
参考になりました。DSNやServerなどのプロパティ設定はODBCのデータソースファイルを作成してみて、エディタで確認しました。INIファイル形式になってました。
投稿日時 - 2001-07-24 09:22:33
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル12

ベストアンサー率 45% (207/457)

この関数を使えば出来るはずです。
Declare Function SQLConfigDataSource Lib "odbccp32.dll" (ByVal hwndParent As Integer, ByVal fRequest As Integer, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long


rtn = SQLConfigDataSource(0, 1, "ドライバ名", "DSN=データソース名" & Chr$(0) & "SERVER=サーバ名" & Chr$(0) & "DATABASE=データベース名" & Chr$(0))
お礼コメント
Hk2001

お礼率 53% (22/41)

早速の回答ありがとうございます。
なるほどAPI使うんですね。
そこで 補足質問何ですけど

●アクセスの場合
サーバー名は不要ですか?
またドライバは {Micrsoft Access Driver}でいいのでしょうか?
●SqlServerの場合
データベース名は不要ですか?

一応、簡易的にコーディングしてみましたが、実行後に
コントロールボックスのODBCアドニミストレータを開きましたが追加されていませんでした。rtn = は、0でした。rtn は実行時の返り値だと思うのですが、0てエラーなんですか?
いろいろと質問させていただいてすみませんがよろしくお願いします。
投稿日時 - 2001-07-23 18:48:38


このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ