dポイントプレゼントキャンペーン実施中!

環境
Windows2000
VB6

DAOで同じデータベースを開くためのやり方がわかりません。
下記のようにマスタのキーを使用して他のテーブルの
内容を更新したいのですが

よろしくお願いします。m(__)m

Dim wsAs Workspace
Dim dbAs Database
Dim qdAs QueryDef
Dim rsAs 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

A 回答 (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/
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/16 14:31

データベースを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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/16 14:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!