Accessでデータを蓄積、運用していると、情報を更新しなければならない場面に出くわすことがあります。データ数が少なければ、手作業で修正することもできますが、大量にデータがある場合には現実的な方法ではありません。このため、Accessにはデータを更新するための更新機能として「更新クエリ」が用意されています。
更新クエリを用いれば、効率的にデータの修正等作業を行えます。そこで今回は、データ更新において、作業効率を著しく改善できる「更新クエリ」について紹介をしていきます。
作業効率を著しく改善できる更新クエリとは
更新クエリは、テーブル内に既にあるレコードの情報を変更する際に使用します。WordやExcel等では頻繁に使用される「検索と置換」に相当する機能と考えることができます。ここで注意すべき点は、データベースに新しいレコードを追加したり、データベースからレコードを削除したりするために更新クエリを使用することはできません。あくまでも既存のレコードの情報を更新する際に用いるものです。
また、更新クエリに係る制限がありますが、例えば「オートナンバー型」のフィールド情報や主キーに設定しているフィールドに対して既に同じ情報が登録されている場合に、更新をすることはできません。
このような制約はありますが、それを超えるだけの可能性が更新クエリにはあります。Accessの更新クエリでは、WordやExcelの「検索」と異なり、可変的、かつ複数の検索条件を設定することもでき、さらにフォームと更新クエリを連携させることもでき、幅広いデータ更新の処理機能を実装することができます。
まずは、更新クエリの作成方法を理解していくことが、このような機能実装の第一歩になりますので、次からその作成方法について見ていきましょう。
更新クエリの作成
更新クエリの作成例として、図1に示す「T_従業員」テーブルの内、部署コードが「A111」のレコードを「A101」に更新するクエリを作成します。
テーブル作成クエリの作成方法と同じように、更新クエリもはじめは更新するレコードを特定する選択クエリを作成し、これを「更新クエリ」に変換します。テーブル作成クエリの作成方法については、以下の記事をご参照ください。
まず、「作成」タブの「クエリ」グループで「クエリ デザイン」をクリックし、「テーブルの表示」画面で更新するレコードが含まれているテーブル(又は選択クエリ)を選択し、「追加」をクリックします。この際、複数のテーブルを結合して更新したいレコードを抽出し、更新処理をすることもできるため、必要なテーブルを全て選択して追加します。今回の例の場合は、一つのテーブル内のレコード更新となり、「T_従業員」テーブルを追加します。
図2に示すように、クエリデザイン上に追加したテーブルが表示され、各テーブルのすべてのフィールドが一覧表示されます。複数テーブルを追加した場合、必要に応じて選択クエリの処理方法と同様に結合処理をします。
続いて、更新するフィールドをダブルクリックし「フィールド」項目に追加します。例の場合では、「部署コード」フィールドを追加しています。
続いて、図3に示すように「クエリデザイン」の「更新」をクリックすることで、選択クエリから更新クエリへ変換します。
クエリデザインの下段項目が一部変わり、「レコードの更新」項目が表示されるため、図4のように「”A101”」を、また「抽出条件」項目には「”A111”」を入力します。
なお、「抽出条件」項目にはデータ型に合わせて様々な条件設定をすることができますので、以下の記事を参考にしてみてください。
更新クエリの実行
更新クエリの抽出条件およびレコードの更新内容を設定後、「実行」アイコン(図5参照)をクリックすることで、更新処理が開始されますが、データベースの特性として更新クエリを実行し、データの情報を書き換えると元に戻すことができなくなりますので、実行する前にデータベースのバックアップを取ることをお勧めします。
更新処理を実行すると、図6のアラートメッセージが表示され、「はい」をクリックすることで更新が完了します。
この結果、部署コード「A111」のレコードの値が「A101」に更新されました(図7)。例では、1レコードに対しての更新でしたが、複数のレコードがある場合も、対象レコードを抽出し、一括で更新処理を行うことができます。
まとめ
今回は、更新クエリの作成例として単純な情報更新機能を設定しましたが、例えば、日付情報を持つフィールドの抽出条件に「> DateAdd(“m”,-1,Date())」のような記載をすれば、今日より1か月前のレコードのみを抽出する、といった可変的な抽出条件を設定することもできますので、更新したいレコードも可変的に抽出することができます。
このように、抽出条件を上手く組み合わせることで効率的なデータ更新機能が実装でき、業務効率の改善が期待できます。
スポンサーリンク
コメント