• ベストアンサー

DAOでデータベースを二つ開くには?

環境 Windows2000 VB6 DAOで同じデータベースを開くためのやり方がわかりません。 下記のようにマスタのキーを使用して他のテーブルの 内容を更新したいのですが よろしくお願いします。m(__)m Dim ws As Workspace Dim db As Database Dim qd As QueryDef Dim rs As Recordset Dim STRSQL As String dim strsql2 as string Set ws = DBEngine.Workspaces(0) Set db = ws.Databases(0) STRSQL = "SELECT KEY FROM マスタ" Set qd = db.CreateQueryDef("", STRSQL) Set rs = qd.OpenRecordset() Do While Not rs.EOF strsql2 = "Update data from マスタ where key = " & rs!key ???? rs.MoveNext Loop rs.Close qd.Close db.Close

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>Set ws = DBEngine.Workspaces(0) > >Set db = ws.Databases(0) 肝心な部分が記述されていません 使用しているRDBは? ちょっと妄想してみてアドバイスを >質問:DAOでデータベースを二つ開くには? ↓ 質問:DAOでデータベース内のテーブルを二つ開くには? だとしたら、 strsql2 = ~ の後に Call db.Execute(strsql2) だが、SQL(UPDATE)の記述が間違っています ここから以下は仮定で ・使用しているRDBを「Access」とする ・Accessのファイルは、Cドライブの直下に"test.mdb"として存在する ・「マスタ」テーブルの「KEY」フィールドを基にして、  「テスト」テーブルの「KEY」フィールドを更新する   (「KEY」フィールドの値をマスタ、テストともに更新する) 簡潔にコーディングしたもの   Dim db As DAO.Database   Dim rs As DAO.Recordset   Dim STRSQL As String   Dim strsql2 As String   Set db = DAO.OpenDatabase("C:\test.mdb")   STRSQL = "SELECT KEY FROM マスタ"   Set rs = db.OpenRecordset(STRSQL, dbOpenDynaset)   Do While Not rs.EOF     strsql2 = "UPDATE テスト " & _          "SET KEY = " & rs.Fields("KEY").Value + 1000 & " " & _          "WHERE KEY=" & rs.Fields("KEY").Value     Call db.Execute(strsql2)     rs.Edit     rs.Fields("KEY").Value = rs.Fields("KEY").Value + 1000     rs.Update     rs.MoveNext   Loop   rs.Close   db.Close 下記サイトなどをみてもっと頑張って下さい VBでデータベース http://homepage2.nifty.com/inform/vbdb/

boo3
質問者

お礼

有難う御座います。がんばります。

その他の回答 (1)

回答No.1

データベースを2つ開きたい場合は Dim db2 As Database の変数を追加して 同じようにセットしてあげればいいと思います。 ソースを見た限りでは、 データベースを2つ開かなくてもいいような気がします。 ????の部分をdb.Execute(strsql2) とすれば、SQLが実行されます。 Executeの意味は、ヘルプで調べてみてください。 これで処理が通ると思います。 Dim ws As Workspace Dim db As Database Dim qd As QueryDef Dim rs As Recordset Dim STRSQL As String dim strsql2 as string Set ws = DBEngine.Workspaces(0) Set db = ws.Databases(0) STRSQL = "SELECT KEY FROM マスタ" Set qd = db.CreateQueryDef("", STRSQL) Set rs = qd.OpenRecordset() Do While Not rs.EOF strsql2 = "Update data from マスタ where key = " & rs!key '???? db.Execute(strsql2) rs.MoveNext Loop rs.Close qd.Close db.Close

boo3
質問者

お礼

それがまずわかりませんでした(T.T) そうだったんですね ありがうとございます。