トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 持続可能なスキーム編: 第17話「王様同士の連携」3/4 :ADOによる更新処理

やってみよう!Excel VBAで業務改善! 持続可能なスキーム編|第17話 「王様同士の連携」

ADOによる更新処理

「ADOで更新処理を行うためには、まずレコードセットのカーソルタイプとロックタイプに、
更新可能な定数を指定します」


sql = "SELECT * FROM 進捗TBL WHERE 番号='" & Cells(i, 1).Value & "'"
rs.Open sql, CN, adOpenKeyset, adLockOptimistic

「ここでは、第3引数の"adOpenKeyset"と、第4引数の"adLockOptimistic"が、それにあたります。
カーソルタイプとロックタイプは、いろいろな組み合わせがあるので、ここでは割愛しますが、
とりあえずこうすれば、レコードセットの更新を行うことができます」

岬さんと森川くんは、額に汗を光らせながら真剣な表情で解説を聞いています。
星くんは、もうよくわからないという顔をしています。
泉先輩は心ここにあらずといった表情で、明後日の方角を見つめていました。

「今回取得するレコードセットは、A列の"番号"で指定する1件のレコードです。
レコードがテーブルに存在するかどうかは、BOFプロパティで判定します。
レコードが存在したら…」


rs.Fields("案件").Value = Cells(i, 2).Value
rs.Fields("担当").Value = Cells(i, 3).Value
rs.Fields("進捗").Value = Cells(i, 4).Value
rs.Fields("企業名").Value = Cells(i, 5).Value
rs.Fields("備考").Value = Cells(i, 6).Value
rs.Fields("前回訪問日").Value = Cells(i, 7).Value
rs.Update

「…レコードセットの各フィールドに、セルの値を代入します。
テーブルからセルに取得するときの逆ですね。
ただ、この時点ではテーブルは更新されず、最後の"rs.Update"を行って、
初めてテーブルに反映されます」

岬さんと森川くんの表情が、若干曇ってきました。
星くんは腕組をしながら、何か他ごとを考えています。
泉先輩は、もう眠そうな表情をしています。

一覧にもどる