こんばんは。「闘うプログラマーの十番弟子」です。
久しぶりに質問させて頂きます。
VBのプログラムからODBCへの登録方法を知りたいのですが、
どなたかご存知ないですか?
クライアントのソフトをインストールする時に一台一台設定するのが、
面倒なんです。(横着かなぁ)
開発環境:VB6SP5,ACCESS2000,ADOでやってます。
よろしくお願いします。
SQLConfigDataSource API を使用して、
ODBC への登録・編集・削除ができます。
DSN 文字列については、御自分で調べて下さい。
Public Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" ( _
ByVal hWndParent As Long, _
ByVal fRequest As Long, _
ByVal lpszDriver As String, _
ByVal lpszAttributes As String _
) As Long
Public Const ODBC_ADD_DSN = 1 '* ユーザーデータソースの追加
Public Const ODBC_CONFIG_DSN = 2 '* ユーザーデータソースの編集
Public Const ODBC_REMOVE_DSN = 3 '* ユーザーデータソースの削除
Public Const ODBC_ADD_SYS_DSN = 4 '* システムデータソースを追加
Public Const ODBC_CONFIG_SYS_DSN = 5 '* システムデータソースを編集
Public Const ODBC_REMOVE_SYS_DSN = 6 '* システムデータソースを削除
Public Const ODBC_REMOVE_DEFAULT_DSN = 7 '* デフォルトDSNを削除
Dim lRet As Long
Dim sDRV As String
Dim sDSN As String
'* ドライバ名
sDRV = "Microsoft Access Driver (*.mdb)"
'* DSN 文字列
sDSN = ""
sDSN = sDSN & "DBQ=d:\My Documents\db1.mdb" & vbNullChar
sDSN = sDSN & "DSN=DSN_SAMPLE" & vbNullChar
sDSN = sDSN & "DESCRIPTION=This is Sample" & vbNullChar
lRet = SQLConfigDataSource(0, ODBC_ADD_DSN, sDRV, sDSN)
If lRet = 0 Then MsgBox "ODBC の登録に失敗しました。"
う〜ん、上手くいきません。
なにかおかしな事してますかねぇ。
よろしければ見てもらえませんか?
Dim lngRequest As Long
Dim strDriver As String 'ドライバ名
Dim strDSN As String 'DSN文字列
'ドライバ名
strDriver = "Microsoft Access Driver (*.mdb)"
'DSN文字列
strDSN = "DBQ=C:\kensetu\db\Genka.mdb" & vbNullChar
strDSN = strDSN & "DSN=Nippo Database" & vbNullChar
strDSN = strDSN & "DESCRIPTION=Test DataSourceName" & vbNullChar
lngRequest = SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, strDriver, strDSN)
If lngRequest = 0 Then
MsgBox "ODBCの登録に失敗しました!", vbCritical, "ODBC登録エラー"
End If
私の環境では、あなたの提示したコードで
正しく登録できましたけど...
もしかすると、
システムデータソースを登録する権限がないのでは?
試しに、
ODBC_ADD_SYS_DSN ではなく
ODBC_ADD_DSN でやってみるとどうですか?
あるいは、 Access が入っていないとか?
Access が入っていないと Access Driver がないかもしれないので、
この方法だとできない可能性がありますよ。
その場合は、
DAO の RegistDatabase
あるいは
RDO の rdoRegisterDataSource
を使うことになります。
こんにちは、
自分も同じ事がしたくて、いろいろ探しているとここに辿りつきました
実は自分の環境でも、とろさんのコードがうまくいかなかったのですが、
他のページで見つけた方法でうまくいきました。
下記コードです。試してみてください。
Private Const ODBC_ADD_DSN = 1 ' データ ソースの追加
Private Const ODBC_CONFIG_DSN = 2 ' データ ソースの編集
Private Const ODBC_REMOVE_DSN = 3 ' データ ソースの削除
' API 宣言
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
Private Sub Form_Load()
Dim lngRequest As Long
Dim strDriver As String 'ドライバ名
Dim strDSN As String 'DSN文字列
'ドライバ名
strDriver = "Microsoft Access Driver (*.mdb)"
'DSN文字列
strDSN = "DBQ=C:\kensetu\db\Genka.mdb" & vbNullChar
strDSN = strDSN & "DSN=Nippo Database" & vbNullChar
strDSN = strDSN & "DESCRIPTION=Test DataSourceName" & vbNullChar
lngRequest = SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, strDriver, strDSN)
If lngRequest = 0 Then
MsgBox "ODBCの登録に失敗しました!", vbCritical, "ODBC登録エラー"
End If
End Sub
良くみたら、すんごい古いスレッドでしたね・・・
失礼しました。。。
ツイート | ![]() |