今回の記事では、マイクロソフトの「Access」を初めてさわる人向けに、そもそもAccessでは何ができるのかを紹介し、Accessを覚える際の習得すべき機能をステップごとに紹介していきます。
はじめに
Accessは昔から多くの企業で利用されており、データ抽出、集計処理や、業務システムの開発環境や動作環境として使われています。
個人向けデータベースソフトですが、非常に多機能であり、データベースとしての使用方法以外にも、外部データベースを参照してデータ抽出やデータ集計をするためのBIツールとしての役割や、強力なフォーム作成機能や、帳票作成機能を活用した業務システムの開発環境、動作環境としても利用されています。
また、標準搭載されているVBAを用いてプログラミングを駆使することで、上記の様な活用方法をより高度に、より便利に実装することができます。
ただ、多機能であるが故、新しくAccessの使い方を習得しようとする場合は、何から覚えていけばよいか戸惑うこともしばしばです。
よって、今回の記事では、そんなAccess初心者さんを対象に、Accessを初めてさわる場合にどの機能から覚えていけば良いのかを紹介し、その機能の習得において必要になる機能に対する大まかな知識や、それを理解するための一般的なデータベースに関する基礎知識や、業務システムに関する基礎知識も併せて紹介していきます。
また、Accessの主要な機能を広く扱うことで、記事が長くなり読み難くなることから、記事を前編と後編の二つに分けた二部構成で作成します。
そもそもAccessって何なの?
マイクロソフトが提供するOfficeスイートのPro以上のエディションで提供されているソフトウェアです。
Accessはスタンドアローンでの使用を前提とした個人向けデータベースソフトです。
スタンドアローンとは、大人数で使用するのではなく、個人ごとのパソコン上でネットワークを介さずに使用するといった意味合いになります。
「データベース」についても簡単に紹介しておきます。
まずはWikipediaの記事を抜粋しましょう。
データベース(英: database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 通常はコンピュータによって実現されたものを指す。コンピュータを使用したデータベース・システムでは、データベース管理用のソフトウェアであるデータベース管理システムを使用する場合も多い。プログラムで扱うデータ構造やデータそのものを独自実装の場合に比べて少ない工数で操作できるようにしている。膨大なデータを扱う現代の情報システムでは最重要と言える技術である。
データベース -Wikipedia-
一言で説明するなら大量のデータを管理するためのソフトです。
大量のデータを管理するという意味合いでは、同じOffice製品の「Excel」でも良いのではないかと思われるかも知れませんが、Accessは「個人向けデータベースソフト」であり、Excelは「表計算ソフト」です。
本来の目的が違います。
過去に「Excel」と「データベース」の違いについて簡単に記事を書いています。
良かったらご参照ください。
「Excel」では、データを「セル」単位で扱い、「データベース」では、データを「レコード」と呼ばれる行単位で扱います。
Accessなどのデータベース製品では、データはレコードという塊単位で扱い、データの整合性の担保はテーブル設計などの元にデータベースが行います。
そのイメージを図にすると以下になります。
このように、データベース製品には、データの整合性を担保するための仕組みが備わっていることが大きな特徴です。
また、一般的なデータベース製品では、「サーバー」と呼ばれる、ネットワーク越しに大人数がアクセスしてくることを前提に作られたコンピューターにインストールして使用します。
よって大人数で使用することを想定した作りになっており、導入には費用と専門的な知識が必要です。
そのデータベースを個人ごとで手軽に利用できるようにした製品が「Microsoft Access」です。
どの機能から覚えれば良いの?機能ごとの習得優先順位と習得レベル
当項では、私の独断と偏見による、Accessの機能ごとの習得優先順位と、その機能ごとの習得度合いに応じたランク付けを紹介していきます。
紹介する意図としては、Accessの勉強を始めた最初はこの機能を覚えて、次はこの機能を覚える・・・といった感じで、Access初心者の人がどの機能を学んでいけば良いかの参考にしていただければと考えています。
尚、習得レベルの名称は適当です(笑)
尚、各ステップの詳細な機能の使い方は割愛させていただきます。
ステップ1:「テーブル」を作成してデータを入れてみよう
習得レベル:アルバイト
まずは「データベース」における、最も基本的な仕組みである「テーブル」を理解しましょう。
前述のように、ここでもExcelと比較してみましょう。
Excelでデータを管理する場合、主にシート単位でデータを分けて管理することが多いかと思います。
その場合、「シート」がデータを格納する入れ物と考えるのことができます。
様々なデータは、テーブルをいくつも作成して管理していきます。
よって、データベースでは、まずは必ず「テーブル」が必要になります。
「テーブル」を理解するために必要な知識
前述したExcelのシートとは違い、「テーブル」には大量のデータを適切に管理するための仕組みが色々あります。
その仕組みはAccessに限らず、他のデータベース製品でも共通の仕組みです。
まずはそこを理解しましょう。
テーブルに格納する一件ずつのデータの総称を「レコード」と呼びます。
「行」とも呼びます。
データベースではレコード単位でデータを格納します。
総称であり、単位でもあるため、データ件数のことを1レコード、2レコードと数えたりします。
同様に1行、2行とも数えます。
このレコードには後述する「列」ごとに様々な制約を設定することができ、その制約を上手く利用することで、格納するデータの値の整合性を担保できます。
テーブルを理解するうえで、レコード(行)は非常に重要な仕組みです。
Accessでは、列のことを「フィールド」と呼称します。
前述したレコードが横の並びのことであり、当項の「フィールド」は列であり、縦の並びのことを指します。
テーブルに格納するデータは、前述した「行」ごとで管理され、「列」ごとでは管理できません。
このフィールドには名前を付けることができて、そのフィールドに格納する値はそのフィールドの名称でどんな値が入っているかを管理します。
例えばID番号を管理するフィールドの名前は「ID」だったり、「〇〇番号」といった名前を設定します。
また、前述したように、フィールドには様々な制約を設けることができます。
具体的には以下です。
- データ型
- 主キー
- インデックス
- 既定値
などなど。
これらについても詳しく後述しますが、データベースにおけるテーブルは、前述した行と列を組み合わせてデータを管理していきます。
テーブルを作成する際に知っておくべき列の設定項目
テーブルを作成する際には、そのテーブルを構成するフィールドを作成する必要があります。
Accessではフィールドの作成もGUIのみで簡単に実施できますが、それでも初心者の人が知っておいた方が良い、Accessやその他のデータベース製品全般に共通する基本的な知識があります。
以下で、最低限知っておいた方が良い、データベースにおける列(フィールド)の特性や機能について紹介していきます。
機能名名 | 説明 |
---|---|
主キー | プライマリーキーとも呼びます。 テーブルに格納するデータを一意に識別するための仕組みであり、とても重要な設定です。 テーブル内の特定の列を単体や、複数の列を組み合わせを「主キー」として設定できます。 主キーとして指定した列のデータでは、重複は許されません。 重複する値は入れることができないように制限されます。 一般的には、「〇〇番号」や「〇〇ID」といった識別番号を主キーとして指定します。 尚、テーブル自体では主キーの作成は必須ではなく、主キーの存在しないテーブルを作成することはできますが、あまりオススメはしません。 |
データ型 | テーブルには複数の列を用意しますが、その列には数値が入るのか、名前などの文字列が入るのか、日付が入るのか・・・といった、格納するデータの列ごとのデータ形式を指定する設定を「データ型」と呼びます。 これはデータベースを扱う上で非常に大事な仕組みです。 例えば、「作成日付」と言う名前のフィールドに、間違って顧客名を登録しようとした場合に、そのフィールドのデータ型に日付型が指定されていれば、日付として判別できない値はすべてエラーになります。適切なデータ型を指定してテーブルを作成することで、誤った値が格納されてしまうことを防ぐことができます。 |
インデックス | 大量にあるレコードから目的のデータを探す場合に、人は並んでいるデータを上から順番に一件ずつ目視で探します。 これはデータベースでも同じなのですが、数十件や数百件程度のレコード数であれば、流石にコンピューターなので一瞬で探し出せます。 ただ、これが100万件、1000万件といったデータ量になってくると、コンピューターであっても探し出すのには時間が掛かります。 そういった大量のデータから目的のデータを効率よく探し出す仕組みに「インデックス」があります。 インデックスは名前の通り「目次」であり、インデックスを設定したフィールドに対しては、データを上から順番に探すことはせず、内部的に作成している目次を使って効率よくデータを探し出します。 大量のデータを扱うデータベースにとって、インデックスはとても重要な仕組みです。 |
既定値 | テーブルにレコードを追加する際に、そのフィールドの値が空だった場合に自動的に入る値を指定することができます。 良くあるのは、「登録日時」と言うフィールドに対して、既定値として「そのパソコンの現在日時」が自動的に入るように設定するといったケースです。 |
Accessで使用するテーブルの種類
Accessでは主に二種類のテーブルを作成することができます。
まずはこの二種類のテーブルの違いを理解しましょう。
Access内に作成するテーブルです。
Accessでは、異なる環境のテーブルにも接続することができる為、その対比として「ローカルテーブル」とも呼んだりします。
通常は、Accessのファイル内にこのローカルテーブルもいくつも作成して、データを管理していくことになります。
因みに、何件までレコードを登録できるのか?と疑問に思う人もいるかも知れませんが、Accessではテーブルに格納できるデータ件数に上限を設けていません。
何件でも格納できます。
ただし、Accessの仕様として、Accessのファイル自体のサイズが最大2GBまでという制限があります。
その為、格納するレコード件数によっては、この2GBを上限を迎えることになり、そのデータ件数で上限となります。
Accessファイル内にはテーブルを作らず、別のAccessファイル内のテーブルや、SQL ServerやOracleといったその他のデータベース内に作成されているテーブルに対して接続し、あたかもローカルテーブルのように開いたり更新したりできる機能です。
この機能があることによって、Accessから様々な外部のデータベースのテーブルとシームレスに接続できるようになるため、Accessにとっては非常に重要な機能です。
また、リンクテーブル機能で接続できるのは、データベースにおける「テーブル」だけではなく、Excelファイル内のシートだったり、CSVファイルなどでも、それをテーブルに見立ててリンクテーブルとして接続できます。
リンクテーブルとして外部テーブルに接続できるようにするには、Windowsの管理系機能である「ODBCアドミニストレーター」から接続先のデータベースを指定する必要があります。
まずはローカルテーブルを作成して、レコードを色々と登録してみましょう!
ステップ2:クエリを使ってデータを抽出したり更新しよう
習得レベル:平社員
テーブルの次は、Accessにおいて最も重要で強力な機能の一つである「クエリ」について理解していきましょう。
一般的に、データベースに対してデータを取得したり更新したりする場合は「SQL」と呼ばれるデータベース操作専用のプログラミング言語を扱う必要があります。
ただ、SQLを書いてデータベースを操作するのは初心者には大変です。
そこで、データベースのテーブルに対して、データを特定の条件で抽出したり、更新するといった操作をGUIで作成して登録でき、それを自由に呼び出せる機能をAccessは提供しており、それが「クエリ」です。
この機能があることで、Accessではデータベース操作に対する敷居を大きく下げることができ、データベースに関して知識が浅い人でも高度なデータ抽出などの処理をすることができます。
Accessを使用して業務システムを開発するといった場合は、クエリはパフォーマンスや管理上の問題がいくつか有り、SQLなどのより高度な技術を習得していくことによって最終的には使わなくなる人も多いのですが、初心者や中級者まではAccessユーザーにとっては必須の機能です。
Accessで作成できるクエリにはいくつか種類があり、まず最初に習得すべきものや、そもそもあまり使用する機会の少ないものなど色々あります。
当項では、Accessで作成できるクエリの種類と、習得すべき優先順位について紹介していきます。
習得優先度:高「選択クエリ」
Accessにおいて、最も使用されることになるクエリです。
SQLで言えば「SELECT文」に相当します。
ローカルテーブルやリンクテーブルに対して、指定した条件でデータを抽出することができます。
また、複雑ではない抽出条件で抽出したデータに対してであれば、更にその抽出結果の行に対して直接値を書き変えるといった編集をすることも可能です。
クエリのデータを編集する -Microsoft Officeサポートページ
また、作成した選択クエリをテーブルに見立てて、更にそのクエリを抽出元テーブルとしてクエリを作成できます。
SQLでは「サブクエリ」という概念がありますが、Accessのクエリではサブクエリは使用できません。
その代わり、上記のように作成したクエリを抽出元テーブルに見立ててクエリを作ることで、SQLにおける「サブクエリ」と同様のクエリを作成することができます。
後、ローカルテーブル以外にも、リンクテーブルに対してもクエリでデータを抽出することが可能です
リンクテーブルでは、前述した通り、一般的なデータベースにおける「テーブル」以外にも、ExcelのシートやCSVデータもリンクテーブルとして扱うことができ、それをデータ抽出元テーブルと見立ててデータ抽出することも可能です。
Accessでクエリを初めて使用する場合は、まずは「選択クエリ」の使い方をマスターしましょう。
習得優先度:中「アクションクエリ
「アクションクエリ」とは、Access固有の名称でありデータの更新を伴うクエリの総称です。
このアクションクエリのなかには、以下のクエリが存在します。
- テーブル作成クエリ
- 更新クエリ
- 追加クエリ
- 削除クエリ
このなかでも、「更新クエリ」「追加クエリ」「削除クエリ」はクエリを用いた一括でのデータ更新処理では必須の機能なので、是非習得してください。
これらのクエリは、SQLで言う「UPDATE文」「INSERT文」「DELETE文」などに相当します。
それぞれの機能を簡単に以下で紹介します。
ローカルテーブルやリンクテーブルの特定の条件に合う行の特定の列の値に対して、まとめて一気に更新を掛けることができます。
アクションクエリのなかでは最もよく使用するクエリなので、是非マスターしましょう。
ローカルテーブルやリンクテーブルに対してレコードを追加することができます。
追加する行は、個々の列の値を指定することもできますし、別のテーブルから条件に合うレコードを取得して追加することもできます。
こちらもよく使用されるアクションクエリです。
ローカルテーブルやリンクテーブルに対して、条件に合うレコードをまとめて一気に削除することができます。
データベースの処理では、レコードの更新や追加以外にも、削除もまとめて実施する機会は多いです。
ローカルテーブルやリンクテーブルを元に、新しいテーブルを作成して、その参照元のテーブルの条件に合うレコードをまとめて追加してくれるます。
SQLで言う「SELECT INTO句」に相当します。
例えば特定のテーブルをまるっとコピーしたテーブル作成したり、特定のテーブルから条件に合うレコードだけを抽出して新規テーブルを作るといったことができます。
ただ、最初はあまり使う機会はないかも知れません。
習得優先度:低「パススルークエリ」
「パススルークエリ」はAccess固有の名称です。
習得優先度を「低」と紹介しましたが、これは習得の必要性が低い訳ではなく、初心者の場合は後回しにしても良いという意味合いであり、Accessを使いこなすにあたって、実はとても重要なクエリです。
Accessのクエリは大変便利な反面、大量のデータを抽出するような場合には、処理速度があまり速くないというネガティブな特徴もあります。
詳しくは、過去に記事を書いているので、そちらをご参照ください。
このクエリの遅いという特徴を回避するための仕組みとして提供されているのが「バススルークエリ」です。
パススルークエリは、リンクテーブルを使わず、SQL ServerやOracleといったデータベースに対して、直接SQLを投げる機能です。
それにより、データの抽出や成形、加工などのすべての処理は、Accessではなく、パススルークエリで指定した外部のデータベースサーバーが実行して、Accessではその処理結果を受け取るだけなので、非常に高速な処理が期待できます。
その代わり、パススルークエリでは、クエリエディターを用いたGUIでの抽出条件の作成ができず、SQLを書く必要があります。
そのため、初心者にとっては敷居の高い機能です。
ただ、上手く活用することで、データ抽出処理が劇的に速くなるかも知れません。
以下のリンク先では、パススルークエリの仕組みやメリットデメリットや使いどころのポイントをまとめています。
もし興味があればこちらもご一読ください。
「リレーションシップ」で複数のテーブルを一つの表に
クエリを使いこなすうえで必ず必要になる知識として、Accessにおける「リレーションシップ」があります。
「リレーション」とも呼びますが、これは一般的なSQLで言う「内部結合」「外部結合」と同じものです。
複数のテーブルの特定の列と列をクエリエディタ画面内でドラッグすることで、その互いの列同士が結合します。
結合したテーブル同士は合体し、一つのテーブルのように扱えて、更に条件を指定してレコードを絞り込むこともできます。
Accessはデータベース製品のなかでも、「RDB(リレーショナルデータベース)」と呼ばれる分類であり、データを複数のテーブルに分割して合理的に管理し、必要によってそれらを結合して使用します。
その「テーブルを分割」する場合のテーブル構成の検討作業を「正規化」と呼びます。
正規化はデータを効率的に格納できるように、重複するデータを別のテーブルに分けるといったテーブル設計手法です。
例えば、顧客データには顧客番号があり、購買データには購買者の顧客番号が入ります。
ただ、一人の顧客に対して購買データは複数存在するため、正規化の概念では、その顧客の顧客データと購買データは一つテーブルには格納せず、必ず顧客データ用のテーブルと、顧客番号を含んだ購買データ用のテーブルで分けて管理します。
顧客データと購買データを一つのテーブルに格納してしまった場合、もしその顧客の名前や電話番号などの情報に変更が発生すると、その顧客が購入した購買データ全ての行の顧客名や電話番号の値を書き変える必要が生じます。
顧客データと購買データが異なるテーブルで管理されており、購買データでは購入した顧客の顧客番号だけを持つ場合は、顧客データテーブル内の対象行を一行編集するだけで済みます。
この様なテーブル設計手法を「正規化」と呼びます。
上記のように、一般的なRDBではこの様に効率的なデータ管理がなされているため、それらの点在したテーブル群をリレーションで結合しながら目的のデータを取得します。
正規化も別途学習していくことをおススメします。
取り敢えず、Accessでクエリを用いてデータ抽出をする場合は、「リレーション」も必ず理解する必要があると認識しておいてください。
Accessでは、まず「クエリ」を習得することが基本です。
選択クエリを使用して、必要なデータを自由に抽出できるようになれば、初心者は卒業ですね!
ステップ3:マクロを作成して処理を自動化してみよう
習得レベル:主任
Accessでは、Access内での操作の一つ一つがパーツとして自由に呼び出せるようになっており、それらのパーツを組み合わせて複数の処理をまとめて実行できる「マクロ」と呼ばれる機能があります。
一般的には、何らかの条件によってメッセージを画面に表示したり、いくつかの処理をまとめて順番に実行させるには、プログラミングの知識が必要なります。
Accessの場合は、マイクロソフトのOffice製品に共通して提供されている「VBA」と呼ばれるプログラミング言語を使用することができます。
VBAを使用することで、様々な処理を自動化することができますが、VBAは簡易的とは言え、立派なプログラミング言語であり、初心者が習得するには大変敷居が高いと言えます。
その点で、当項で紹介する「マクロ」であれば、Access内で提供されている個々の機能の多くを、マクロ用のパーツとして提供しており、個々のパーツに対して処理内容を設定し、複数のパーツを組み合わせ、マクロとして登録することで、それをいつでも自由に呼び出せるようになります。
この操作の大半はマクロの設定画面上をマウス操作で作成することができて、プログラミングの知識は不要です。
作成したマクロは、そのマクロを直接実行することもできますし、後述するフォームのボタンなどに埋め込むことができて、自作した入力フォーム内のボタンを押下すると、組み込んだマクロが実行されるといった使い方もできます。
以下の項では、具体的なマクロの活用例を紹介していきます。
マクロ活用例:ローカルテーブルのデータ作成処理を自動化
Accessのよくある使い方としては、リンクテーブルで接続したSQL Serverなどの外部データベースから必要なデータをAccess内のワークテーブルに追加して、取得したレコードに対して必要な加工を施したあとに、Excelに出力したり、帳票に印刷するといった操作です。
上記の文面に登場してきた「ワークテーブル」について説明します。
Access内にそのような機能のテーブルがある訳ではなく、テーブルの用途によって「ワークテーブル」と呼ぶ場合があります。
一般的には「ワークテーブル」は一時的にデータを格納する作業用のテーブルです。
メインのテーブルから取得したデータをワークテーブルに格納して、データの加工や集計などを行い、目的が終わればワークテーブル内のレコードは削除します。
処理の流れとしては以下になります。
- 削除クエリでワークテーブルの前回データを削除
- 追加クエリでワークテーブルのデータを作成
- ワークテーブルのデータをExcel出力とかレポート印刷など
マクロとして登録しておくことで、このような一連の処理をまとめて一気に実行することができます。
複数の処理をまとめる以外にも、「フォームを開く」、「クエリを開く」、「メッセージボックスを表示する」、「Accessを閉じる」などの様々な処理を単体で呼び出すこともできます。
マクロはプログラミング無しで処理を自動化できる便利なツールです。
マクロでは多くの処理がパーツとして提供されており、積極的に色々な処理を試してみましょう!
「フォーム」「レポート」「VBA」「ADOとDAO」については【後編】で紹介
後編では、Accessの機能としてとても重要な「フォーム」作成機能について紹介します。
また、企業の業務において欠かせない様々な帳票の作成を支援する「レポート」についても紹介します。
更にAccessをより便利に使用するためにはVBAを使用したプログラミングも覚える必要があるため、VBAに関しても解説していきます。
こちらも是非併せてご一読ください。