環境
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
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/
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー3131 FROM 句の構...
-
codeigniter 複数モデルでトラ...
-
SQL文が実行できません
-
VBAをつかってクエリの情報を抽...
-
Call to undefined method MDB2...
-
テキストボックスに入れた内容...
-
MySQLでデータベースにデータin...
-
<VB.NET>INSERT文でDBにデータ...
-
PHPで[]の使い方について
-
JAVA SQLServerException 列名 ...
-
phpにて出欠登録管理を作成して...
-
配列に値が入らない
-
ResultSetインターフェイスでの...
-
php データ削除
-
csvファイルのデータをSQLiteに...
-
エクセルVBAについて
-
SQL文2つ実行
-
php mysqlで作ったデータをgoog...
-
php テーブルが作成できない
-
mysqliを使ってデータベースを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー3131 FROM 句の構...
-
VBAをつかってクエリの情報を抽...
-
SQL文が実行できません
-
テキストボックスに入れた内容...
-
in 'where clause'のエラーの理由
-
エラー3011
-
SQL文の実行に失敗しました???
-
LocalのNotesメールDBをVBAで参...
-
SELECT COUNTで取得した結果の表示
-
codeigniter 複数モデルでトラ...
-
PHP(PDO)でDBの情報を完全一...
-
Accessのテーブルへ複数の主キ...
-
phpのPEARのMDB2を使って出たエ...
-
ASPでRecordCountが使用でき...
-
データフォームウィザードで追...
-
Call to undefined method MDB2...
-
PHP4でのSmarty派生クラスの定...
-
zend(phpフレームワーク)でトラ...
-
DAOでデータベースを二つ開くに...
-
SQLiteでカラムを追加
おすすめ情報