「SQL」文で登録されているデータをAccessを通じて編集し、変更をデータベースに反映させる方法:Access VBAで学ぶ初心者のためのデータベース/SQL超入門(6)(3/3 ページ)
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。今回は、「SQL」文で登録されているデータの編集処理を可能にし、変更をデータベースに反映させる方法を解説する。
編集ボタンがクリックされたときの処理──SQLのUPDATE文による更新処理
編集ボタンがクリックされたときの処理はリスト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
ここでは、
- 2行目:Databaseオブジェクトを扱う変数dbを宣言する。
- 3行目:CurrentDB関数の戻り値をDatabase型オブジェクトに代入する。CurrentDB関数は、開いているデータベースを参照する関数だ。
- 4行目:文字列型の変数「SQL」にUPDATE文を使ってレコードを更新する「SQL」文を記述する。
UPDATE文の書式は「UPDATE テーブル名 SET フィールド名=値,フィールド名=値…… WHERE 条件式」となる。テーブル名には「顧客管理テーブル」、フィールド名には「氏名」「性別」「年齢」「郵便番号」「住所」「電話番号」を指定し、値には、「氏名テキストボックスの値」「性別コンボボックス」の値などが入る。なお「年齢テキストボックスの値」は文字列で宣言していたので、CInt関数で数値に変換している。
ワンポイント
プログラムで「SQL」文に変数を指定して記述する場合は、変数を「シングルコーテーション(‘)」でくくるように記述する必要がある。けっこう間違えやすいので注意してほしい。
WHERE句には条件を指定する。ここでは「電話番号」の値を指定している。WHERE句に指定する条件に合致するレコードを編集することになるので、必ず一意のデータを指定する必要がある。WHERE句を指定せずに編集を実行すると、全てのレコードが編集したデータに置き換わってしまうので注意が必要だ。SQL文の最後は「セミコロン(;)」で閉じる。
- 5行目:db.Execute SQLのExecuteメソッドで「SQL」を実行する。
- 6行目:Requeryメソッドで、「一覧リストボックス」内のデータを再読み込みする。これで、編集されたデータが「一覧リストボックス」に反映される。
- 7〜8行目:dbを閉じ、全ての関連付けから解放する。
ここで編集したデータは、「顧客管理テーブル」にも反映される。
実行結果
きちんと変更が反映されるかを試そう。岡目八目さんの住所を「愛媛県松山市道後今市」から「東京都多摩市諏訪」に変更し、郵便番号も「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.
関連記事
- どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。初回はデータベースの基本を理解し、Accessを使い始めてみよう - Access VBAでデータ入力フォームを作り、各コントロールを追加するためのデザインビューの使い方
今回は、テーブルを基にデータ入力フォームを作成し、ラベル、テキストボックス、コンボボックス、ボタンリストボックスを追加する手順を解説する - SQLとはどういう言語か
- Accessを使うなら最低限知っておきたいSQL文を使ったさまざまな種類のクエリ操作の基本
今回は、テーブルに「SELECT文」や「BETWEEN演算子」などのSQLを入力し、データベースに蓄積したレコードを抽出する方法を解説する - 初心者でも図解で分かる! VBEの基本的な使い方とVBAプログラムの基礎文法
- Accessでフォームからデータを追加し、Excelのシートにエクスポートする
- SQLとはどういう言語か
- 数値判定、乱数発生、数値の丸めなど、数値に関する4つの関数の使い方
- 制御文で道案内
- 使うほどに良さが分かる正規表現
- .NET Frameworkがサポートする正規表現クラスを徹底活用する(前編)
- .NET Frameworkがサポートする正規表現クラスを徹底活用する(後編)