編集ボタンがクリックされたときの処理はリスト3のようになる。
Private Sub 編集ボタン_Click() Dim db As Database Set db = CurrentDb SQL = "UPDATE 顧客管理テーブル SET 氏名=" & "'" & 氏名テキストボックス.Value & "'" & ",性別=" & "'" & 性別コンボボックス.Value & "'" & ",年齢=" & "'" & CInt(年齢テキストボックス.Value) & " '" & ",郵便番号=" & "'" & 郵便番号テキストボックス.Value & "'" & ",住所=" & "'" & 住所テキストボックス.Value & " '" & ",電話番号=" & "'" & 電話テキストボックス.Value & "'" & " Where 電話番号=" & "'" & tel & "';" db.Execute SQL Me.一覧リストボックス.Requery db.Close Set db = Nothing End Sub
ここでは、
UPDATE文の書式は「UPDATE テーブル名 SET フィールド名=値,フィールド名=値…… WHERE 条件式」となる。テーブル名には「顧客管理テーブル」、フィールド名には「氏名」「性別」「年齢」「郵便番号」「住所」「電話番号」を指定し、値には、「氏名テキストボックスの値」「性別コンボボックス」の値などが入る。なお「年齢テキストボックスの値」は文字列で宣言していたので、CInt関数で数値に変換している。
プログラムで「SQL」文に変数を指定して記述する場合は、変数を「シングルコーテーション(‘)」でくくるように記述する必要がある。けっこう間違えやすいので注意してほしい。
WHERE句には条件を指定する。ここでは「電話番号」の値を指定している。WHERE句に指定する条件に合致するレコードを編集することになるので、必ず一意のデータを指定する必要がある。WHERE句を指定せずに編集を実行すると、全てのレコードが編集したデータに置き換わってしまうので注意が必要だ。SQL文の最後は「セミコロン(;)」で閉じる。
ここで編集したデータは、「顧客管理テーブル」にも反映される。
きちんと変更が反映されるかを試そう。岡目八目さんの住所を「愛媛県松山市道後今市」から「東京都多摩市諏訪」に変更し、郵便番号も「790-0845」から「206-0024」に変更してみる(図7)。
なお、今回の処理には「データの検証処理」は付けていない。こちらは、第4回「VBAで正規表現や関数を使った入力チェックを行い、Accessに新規レコードを追加、保存するには」で使用したコードがそのまま利用可能なので、応用実習として各自で実装してみてほしい。
今回までの内容で、「データの入力」「データの検索」「データの編集」が可能になった。これまでのテクニックを組み合わせた応用も思い付くようになったのではないだろうか。
次回は、顧客管理リストを利用した「タックシール印刷」のテクニックを解説する。お楽しみに。
薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。
1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。
1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。
2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。
Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。
Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)
Microsoft MVP for Development Platforms-Windows Platform Development (Oct 2014-Sep 2015)
Copyright © ITmedia, Inc. All Rights Reserved.