VB6.0でDAOを用いてデータベースにアクセスする方法

解決


DAO  2011-09-22 10:04:09  No: 103051  IP: [192.*.*.*]

WindowsXP,VB6.0SP6にて開発をしています。

プロジェクトを起動し、下記コードを実行した最初はOpenrecordsetでエラーになります。

しかしながら、2回目以降は正常に動作します。
何か接続方法か書き方に問題があるのでしょうか。
ご存知の方は教えてください。

    ' DAOのオブジェクト変数を宣言する
    Dim ws As DAO.Workspace
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSql as string
    
On error goto ERR
    ' デフォルトのワークスペースを定義する
    Set ws = DBEngine.Workspaces(0)
    
    ' ODBC接続文字列を指定してデータベースを開く
    Set db = ws.OpenDatabase( _
                      "", False, False, _
                      "ODBC;Driver={SQL Server};" & _
                      "SERVER=" & strServerMei & ";DATABASE=pubs;" & _
                      "UID="" & strUser & ";PWD=;")
             
    ' SQLステートメントを指定してレコードセットを作成する
    strSql = "select * from "  + tblA
    Set rs = db.OpenRecordset( strSql ) <-ココでエラーになる。


ERR:
'    終了処理
    rs.Close
    db.Close
    ws.Close
    
    Set rs = Nothing
    Set db = Nothing
    Set ws = Nothing

編集 削除
DAO  2011-09-22 11:32:27  No: 103052  IP: [192.*.*.*]

自己解決です。

Set ws = DBEngine.Workspaces(0)

Set ws = DBEngine.CreateWorkspace("", "", "", dbUseODBC)

とし、

Set rs = db.OpenRecordset( strSql )

Set rs = db.OpenRecordset(strSql, dbOpenDynaset)

とすることでエラーが出なくなりました。

編集 削除