- ベストアンサー
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
- みんなの回答 (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/
その他の回答 (1)
- marumaru_a_w
- ベストアンサー率37% (3/8)
データベースを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
お礼
それがまずわかりませんでした(T.T) そうだったんですね ありがうとございます。
お礼
有難う御座います。がんばります。