愚者の経験

「また今度」はほとんどこない

日別アーカイブ: 11月 15, 2011

VBAからODBC APIを使う 接続編

前の記事:VBAからODBC APIを使う 準備編

ハンドルの割り当てが完了したらデータベースへの接続を行います。

接続に使う関数は2種類ほど見つかりました。
・SQLConnect
・SQLDriverConnect
SQLConnect関数はDSNとユーザー、パスワードを指定し接続します。
SQLDriverConnect関数は接続文字列を指定し接続します。
DSNの作成がめんどくさいのでDSN-Lessの後者を利用します。
それにしても定数の値探すの大変orz

 
‘ SQLDriverConnect用オプション
Private Const SQL_DRIVER_NOPROMPT As Integer = 0
Private Const SQL_DRIVER_COMPLETE As Integer = 1
Private Const SQL_DRIVER_PROMPT As Integer = 2
Private Const SQL_DRIVER_COMPLETE_REQUIRED As Integer = 3
‘接続関数
Private Declare Function SQLDriverConnect Lib “odbc32.dll” ( _
                        ByVal hdbc As Long, _
                        ByVal hWindow As Long, _
                        ByVal szConnStr As String, _
                        ByVal cbConnnStr As Integer, _
                        ByVal szConnOut As String, _
                        ByVal cbConnOutMax As Integer, _
                        ByRef pcbConnOut As Integer, _
                        ByVal fDriverConpletion As Integer) As Integer
‘切断関数
Private Declare Function SQLDisconnect Lib “odbc32.dll” ( _
                ByVal hdbc As Long) As Integer
‘接続関数
Public Function ConnectODBC() As Boolean
    Dim OutConnStr As String
    Dim pcbConnOut As Integer
   
    OutConnStr = String$(512, 0)
   
    ‘SQLServerの場合
    InConnStr = “Driver={SQL Server};Server=????;Database=????”
   
    Ret = SQLDriverConnect(hdbc, hWndAccessApp, _
                            InConnStr, Len(InConnStr), _
                            OutConnStr, Len(OutConnStr), _
                            pcbConnOut, SQL_DRIVER_COMPLETE_REQUIRED)
    If Ret = SQL_SUCCESS Or Ret = SQL_SUCCESS_WITH_INFO Then
        ConnectODBC = True
        SQLDisconnect hdbc
    Else
        ConnectODBC = False
    End If
End Function
 
広告