[[20130401000229]] 『adoについて』(taka) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『adoについて』(taka) Excel2007です。adoを勉強しているのですが、ネット等で調べているのですが分からないので教えて下さい。

Excelからaxxessのデータを変更したいです。 seekを使って変更しているのですが、検索キーに合致するものを全てを変更させる書き方を教えて頂けないでしょうか?

accessのIndex = コード 検索キー = 1002です。キーが一件の場合は最初にhitしたら変更しますがキーが複数(1002が3件など)の場合はどのように一括処理を行えばよいですか?

1001 印刷済

1002 印刷済

1002 印刷済

1002 印刷済

1003

1003

Dim db As Object, rs As Object Const adOpenKeyset = 1, adLockOptimistic = 3, adCmdTableDirect = 512 Const adSeekFirstEQ = 1 '最初のキーを検索

Set db = CreateObject("ADODB.Connection")

db.Provider = "Microsoft.Ace.OLEDB.12.0"

db.Open ThisWorkbook.Path & "\サンプル.accdb"

Set rs = CreateObject("ADODB.Recordset")

rs.Open "T_顧客マスター", db, adOpenKeyset, adLockOptimistic, adCmdTableDirect

rs.Index = "コード"

rs.Seek 1002, adSeekFirstEQ

If Not rs.EOF Then

rs!印刷確認 = "印刷済"

rs.Update

End If

rs.Close: db.Close

Set rs = Nothing: Set db = Nothing


 Seekは、絞り込みをするわけではないですからねえ

 私なら・・・、

 Sub test2()
    Dim db As Object
    Set db = CreateObject("ADODB.Connection")
    db.Provider = "Microsoft.Ace.OLEDB.12.0"
    db.Open ThisWorkbook.Path & "\サンプル.accdb"
    db.Execute "Update T_顧客マスター set [印刷確認]='印刷済' where [コード]=1002;"
    db.Close
 End Sub

 尚、Sql中の[コード]は、インデックスが付けられているフィールド名です。インデックス名ではないです

 フィールド名 と インデックス名が違うなら、訂正してください

 ichinose


ichinose様、ありがとうございます。

無事、作動確認できました。

指摘の「Sql中の[コード]は、インデックスが付けられているフィールド名です。インデックス名ではないです
」恥ずかしながら最近知りました!

Updateの使い方、勉強になりました。

(taka)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.