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

ExcelVBAよりAccessデータの追記は、AddNewを使用してできたのですが、単純な更新ができません。

strWhere = "Select * From 集計テーブル Where [フィールド1]='001'"
Set dbWS = DBEngine.Workspaces(0)
Set dbWB = dbWS.OpenDatabase("C:\対象MDB.mdb) 'データベースを呼び出す
Set dbRes = dbWB.OpenRecordset(strWhere, dbOpenDynaset)

上記はそもそも更新ステートメントがありません。どのように書けばよいのでしょうか?どうかアドバイスお願いします。

A 回答 (3件)

>Editメソッドとは、何でしょうか?


Editメソッドはレコードを編集可能な状態にするメソッドです。
>単に「dbRes.Edit」を書けばよいのでしょうか?
'以降は説明として見てください。と言う事で
dbRes.Edit
で良いです。
>更新させる処理とは、SQL文を書くのでしょうか
ここはフィールドをセットします。
補足から参照すればフィールド2='aaa'であれば
dbRes.Edit
dbRes!フィールド2 = "aaa"
dbRes.Update
となります。
strWhereでセットしたSQLで複数のレコードが抽出される場合はEOFプロパティを使って先頭レコードから最後のレコードを対象としてLoopさせます。
Do Until rs.EOF
dbRes.Edit
dbRes!フィールド2 = "aaa"
dbRes.Update
dbRes.MoveNext
Loop
    • good
    • 0
この回答へのお礼

大変ありがとうございます。なんとかできそうです。

お礼日時:2006/03/09 12:23

DAO Edit UpdateでWEB照会してみてください。


沢山例も出てきます。(16万?)
http://msdn.microsoft.com/library/ja/default.asp …
「DAO では Edit メソッドを使って Recordset オブジェクトを編集可能に する必要があったのに対し、ADO では編集モードを明示的に指定する必要がないことです。」
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2006/03/09 12:23

最近はADOを使ってるのでDAOは書かなくなりましたが・・


下記ではどうでしょうか。
Dim dbWS As DAO.Workspace
Dim dbWB As DAO.Database
Dim dbRes As DAO.Recordset
Dim strWhere As String

strWhere = "Select * From 集計テーブル Where [フィールド1]='001'"
Set dbWB = dbWB.OpenDatabase("C:\対象MDB.mdb)
Set dbRes = dbWB.OpenRecordset(strWhere, dbOpenDynaset)

dbRes.Edit 'Editメソッドを記述し編集可能な状態に設定
'更新させる処理
dbRes.Update 'Updateメソッドを記述して編集内容を更新

dbRes.Close: Set dbRes = Nothing '後処理
dbWB.Close: Set dbWB = Nothing

記述間違ってたらゴメンなさい。

この回答への補足

早速の回答ありがとうございます。
Editメソッドとは、何でしょうか?
単に「dbRes.Edit」を書けばよいのでしょうか?
また、更新させる処理とは、SQL文を書くのでしょうか?
具体的には、「UPDATE 集計テーブル SET フィールド2='aaa'」など?

補足日時:2006/03/07 12:51
    • good
    • 0

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