アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6のプログラム上から、ODBCのデータソースを登録する方法は、ありますか?

A 回答 (2件)

どもども田吾作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

    • good
    • 1
この回答へのお礼

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

お礼日時:2001/07/24 09:22

この関数を使えば出来るはずです。


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))
    • good
    • 0
この回答へのお礼

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

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

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

お礼日時:2001/07/23 18:48

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