Access VBA 課題1の解答例 特定のレコードを更新する方法。

VBA で特定のレコードだけを更新する課題は、ヒントを見ずに自力でできましたか?それともヒントを見れば、何とか作れたでしょうか。

この課題は、今までに学習してきたプログラムを、組み合わせるだけで作ることができます。各ステップごとの要点を理解している人は、多分できたと思います。

プログラムはいろんな書き方ができるので、答えは一つではありません。あなたなりの方法でできたのなら、それも正解です。

できなかった人も大丈夫です。以下の回答例を読んで、理解を深めてください。答えを見ると、「なーんだ」と簡単に思うかもしれません。


【1】Accessのファイル「SampleDB020.mdb」を起動し、更新前の「T01Prefecture2」を用意します。

access-vba-239.gif


【2】以下のように、標準モジュール「test7」の editDataTest() を完成させます。


Sub editDataTest()
  Dim db As DAO.Database
  Set db = CurrentDb
  
  Dim rs As DAO.Recordset
  Set rs = db.OpenRecordset("T01Prefecture2")
  
  Do Until rs.EOF
    If rs!PREF_CD >= 40 Then
      rs.Edit
        rs!PREF_NAME = "*" & rs!PREF_NAME & "*"
      rs.Update
    End If
    rs.MoveNext
  Loop
    
  rs.Close
  Set rs = Nothing
  db.Close
  Set db = Nothing
  
  Debug.Print "レコードを更新しました。"
  dispDataTest
End Sub


access-vba-240.gif

*赤枠の部分が、前回の課題だったところです。


【3】イミディエイト ウィンドウから editDataTest() を実行してください。

editDataTest

access-vba-241.gif

*この Subプロシージャは引数が無いので、 Call と ()カッコ は省略できます。


【4】更新のメッセージと、レコードの一覧が表示されました。

access-vba-242.gif


【5】イミディエイト ウィンドウをスクロールすると、特定のレコードだけが更新されています。

access-vba-243.gif


【6】テーブル「T01Prefecture2」側でも、レコードが更新されていることを確認してください。

access-vba-244.gif


【7】editDataTest() を繰り返し実行すると、「*」アスタリスクがどんどん増えますが・・・

access-vba-246.gif


【8】何度も実行すると、文字数がオーバーしてエラーが出ます。

access-vba-245.gif

エラーの原因は、PREF_NAME のフィールドサイズが「10文字」までだからです。「T01Prefecture2」を新しくコピーし直すと、再び実行できます。


【解説】
基本的な考え方は、レコードを1件ずつ取り出して、条件に合うレコードの場合だけ、更新処理を行なえばできるはずです。

それでは今回追加したプログラムを分解して説明します。

(1)レコードの終端になるまで、1件ずつ処理を繰り返している部分です。

Do Until rs.EOF
  ここに処理
  rs.MoveNext
Loop


(2)PREF_CD が 40 以上の場合だけ、処理を行なっている部分です。

If rs!PREF_CD >= 40 Then
  ここに処理
End If

*条件に満たないレコードは何もしません。


(3)実際に PREF_NAME を更新している部分です。

rs.Edit
  rs!PREF_NAME = "*" & rs!PREF_NAME & "*"
rs.Update

PREF_NAME の値を取得して、前後に「*」を加え、また PREF_NAME に代入しています。


とりあえずこれで目的は達成できました。

プログラミングで大事なことは、どんな方法でもよいので、まず目的の処理が行なえることです。一つの方法ができてから、次はもっと効率が良い方法がないか考えます。

初心者のうちは、最初から効率の良いプログラムを書こうとすると、難しくなります。まずは「とりあえずできること」が大切です。改良は後からいくらでもできます。


スポンサードリンク

スポンサードリンク






Access VBA 初心者入門講座 TOPへ