ADOのExecuteメソッドで交互にエラーが出る
こんにちは。
ExcelでADO+ODBCを用いてローカルのMySQLにアクセスしています。
とあるサイトから参考にさせてもらって作成した以下のソースで、
シート上のボタンをクリックしたら
ODBCに設定したDSNのテーブル一覧をシートに出力
するというマクロなのですが、実行してみると正常終了とエラーが交互に繰り返されます。
エラーが出るときにデバッグしてみると標準モジュールの
Set adoRS = adoCON.Execute("SHOW TABLES;")
を実行した時点でエラー(赤丸の×でエラー説明なし)がでて強制終了します。
この原因について心当たりがありましたら教えてください。
****シートモジュール****
Private dsn As String
Private uid As String
Private pwd As String
Private strsql As String
Sub para_get()
dsn = Range("C6")
uid = Range("C7")
pwd = Range("C8")
strsql = Range("C9")
End Sub
Sub ボタン1_Click()
Dim errflag As Integer
errflag = 0
Call para_get
errflag = DBconnect(dsn, uid, pwd)
If errflag <> 0 Then
MsgBox "データベースに接続できませんでした"
Else
MsgBox "データベースに接続できました"
End If
errflag = sql_exe
End Sub
*****標準モジュール******
Dim adoCON As New ADODB.Connection
Public Function DBconnect(dsn As String, uid As String, pwd As String)
Dim errflag As Integer
errflag = -1
On Error GoTo errflag
'Access VBA Tips
'4.5 MySQLのデータベースを開く・閉じる
'ADOでデータソースをオープン
adoCON.Open "dsn=" & dsn & ";uid=" & uid & ";pwd=" & pwd & ";"
errflag = 0
Exit Function
errflag:
'データベースのクローズ
adoCON.Close
Set adoCON = Nothing
End Function
Function sql_exe() As Integer
Dim adoRS As New ADODB.Recordset
'レコードセットの作成(SELECT文の実行)
Set adoRS = adoCON.Execute("SHOW TABLES;")
Range("B15").CopyFromRecordset adoRS
'データベースのクローズ
adoRS.Close
Set adoRS = Nothing
End Function