データ型

 テーブルのそれぞれの列にどのような形のデータを記録するのかを、「データ型」として定めることができます。このデータ型の概要と設定方法について説明します。

データ型とは

 テーブルには自由に列を設けて好きなように値を記録していくことが出来ますが、入力する内容に一定の制約を課したいという場合があります。
 たとえば、生年月日という列があれば、通常は「1982/6/18」といった値を記録することが期待されます。この列に「昭和60年秋分の日」とか「平成5年の春」などと入力されてしまった場合でも、人間にはある程度意味がわかりますが、一括して年齢を算出するなどして活用することができなくなります。特に多数のデータを集計して活用しようとしている場合、集計そのものが不能になったり、統計的な信頼性が低下することで目的を達成できなくなってしまいます。そこで、入力する際の制約を「データ型」として定めておくことにより確実に守らせることができます。Excelの「データの入力規則」に相当する機能といえます。Excelでセルごとに設定できますが、Accessでは列ごとにしか設定できません。

データ型の種類

 Accessで設定できるデータ型は以下の12種類です。ただし「集計」と「ルックアップウイザード」については値の取得の仕方を定めるものであり、それ自体は記録されるデータの形式を定めるものではありません。

データ型説明
短いテキスト255文字までの文字列を記録できます
長いテキスト最大1GB分のテキストを記録できるとされています。ただし、テーブルに直接入力する場合は64000文字が上限となります。
数値型数字を記録することができ、四則計算等の演算や集計の対象とすることができます。また、フィールドサイズや書式の設定により、小数を記録したりパーセント形式で表示することが可能です。
日付/時刻型年月日を記録することができます。さらに書式の設定により時分秒まで記録したり、時分秒のみを記録することも可能です。
通貨型数値型と同じく数を扱う型ですが、小数計算の誤差を抑えることができるため、金銭の計算に適しています。
オートナンバー型新しい行(レコード)が発生するたびに、他の行と重複しないような値が自動的に割り振られます(ユーザーが値を直接入力したり変更することはできません)。オートナンバー型を設定できる列は1つのテーブルにつき1つまでです。
Yes/No型Yes/Noの2種の値を記録できます。入力はチェックボックスによるものとなり、必然的にこれら以外の値は入力できなくなります。
OLEオブジェクト型各種のファイルを保存することができます。WordやExcelなどOLE(Object Linking and Embedding)機能に対応したファイルを保存するのに適しています。
ハイパーリンク型URLやメールアドレス、ローカルドライブのパスなどを記録できます。データシートビューで値をクリックすると既定のソフトで開かれます。
添付ファイル各種のファイルを保存することができます。1つのフィールドに複数のファイルを保存することができるという特徴があります。
集計他の列の値を参照して式を作成し、その計算結果を記録することができます。正確にはデータ型を定めるものではなく(集計というデータ型があるわけはない)、実際に記録されるデータ型は「結果の型」プロパティ(集計型の列に現れるプロパティです)の値で決めることができます。Excelでセルに関数を入力するようなものですが、データシートビュー(入力画面)で値を上書きすることは出来ません。
ルックアップウイザード他のテーブルやクエリの列の値を参照し、その値を記録することができます。また、(わざわざ他のテーブル等を作成しなくとも)リストの内容をその場で設定することもできます。入力はコンボボックスによるものとなります(直接入力も可)。これも正確にはデータ型を定めるものではなく、実際に記録されるデータ型はルックアップの内容によります

データ型の設定方法

 データ型は、デザインビューの画面にある「データ型」の値を変更することで設定・変更できます。


各種データ型の設定例

短いテキスト

 基本的に、デザインビューで新しい列を追加したとき、データ型は「短いテキスト」となります。


 データシートビューの様子です。入力できる文字種に制限はないので漢字やひらがな、英字だけでなく数字や日付なども(単に文字列として)自由に記録でき、基本的に何のチェックもはたらきません。


長いテキスト

 右の例では「備考」列を「長いテキスト」としています。
 「短いテキスト」では255文字までしか入力できませんでしたが、長いテキストにすると長文の入力が可能となります。
 ただし、この型に設定した列は、後で紹介するインデックスという機能を用いることができなくなるため、検索するときに速度面で不利になる場合があります。


 再度デザインビューに戻ります。長いテキストの特徴として、「文字書式」というプロパティを「リッチテキスト」に変更することでリッチテキスト形式を扱えることが挙げられます。


 短いテキストなどの場合、入力した内容の一部だけ色を変えたり太字にすることはできませんが、リッチテキスト形式にすることで可能となります。


数値型

 右の例では「身長」列を「数値型」としています。
 名前のとおり、数字だけを入力できます。
 英字(右の例では「unknown」)を入力しようとするとエラーが出て入力を完了できません。


日付/時刻型

 右の例では「生年月日」列を「数値型」としています。
 数字と記号(/)により年月日を直接入力することもできますし、右のようにカレンダーコントロールを使って選択し入力することもできます。


 和暦での入力も可能です。


 ただし、入力完了とともに西暦表示に変換されます。
 和暦で表示したい場合は、後で紹介する書式の設定により変更することも可能です。


 ちなみに、「昭和35年元日」と入力してみます。人間にはこれが1960/01/01と同じ日付であることがわかりますが、Accessが許容する日付の形式になっていませんのでエラーとなり、入力を完了できません。


通貨型

 右の例では「年収」列を「数値型」としています。
 数字だけを入力できます。右の例では\マークも表示されていますが、自動的に設定されている書式によるものです。
 英字(右の例では「unknown」)を入力しようとするとエラーが出て入力を完了できません。


オートナンバー型

 右の例では「番号」列を「オートナンバー型」としています。
 行ごとに異なる数字が自動的に入力されるので、手で入力する必要がありません。それぞれの行を区別できるような番号を設定したい、という場合に便利です。
 ただし、自動的に入力された値を変更することはできませんので注意が必要です。また、オートナンバー型の列は1つのテーブルに1つしか設けることができません。


Yes/No型

 右の例では「配偶者」列を「Yes/No型」としています。
 チェックボックスによる入力となり、チェックの有無のみ選択できるようになります。


OLEオブジェクト型

 右の例では「住所位置図」列を「OLEオブジェクト型」としています。
 ファイルを保存するときはドラッグ&ドロップでの保存も可能ですが、ここでは右クリックして「オブジェクトの挿入」を選択してみます。


 するとこのようなウインドウが現れます。ここでWordやExcelのデータを一から作成して保存することも可能ですが…


 既存のファイルを保存してみることとします。「ファイルから」を選択して「参照」をクリックし、保存しようとするファイルを選びます。


 選び終わるとこのような形で保存されます。


 ファイルを削除するときはDeleteキーで、開くときはダブルクリックでOKです。
 内容を変更して保存しなおすことも可能です。このとき、Accessに保存されているファイルが変更されるだけであり、元のファイル「斉藤三郎宅.xls」の内容は変更されません。また、元のファイルを変更してもAccessに保存されているファイルは変更されません(次に紹介する「リンク」と対比して「埋め込み」と表現されます。なお、ファイルをドラッグ&ドロップで保存したときも埋め込みによる保存となります)。


 さて、先ほどのウインドウに戻ります。ファイルを選択するときに、「リンク」にチェックを入れておいて保存すると…


 ファイルを開いたときに、元のファイルそのものが開かれます。ウインドウに表示されているファイル名が先ほどと違っていることに注意してください。
 このファイルを変更して保存すると、当然ですが元のファイルそのものが変更され保存されます。もちろん元のファイルを直接開いて変更することもできます。よって、「埋め込み」のように別々のファイルが存在するような状態にはならず、両者の不一致が生じることもありません。


ハイパーリンク型

 右の例では「ホームページ」列を「ハイパーリンク型」としています。
 入力した文字列はハイパーリンクとなり、クリックするとブラウザで開かれます。
 URLのほかローカルドライブやメールアドレスを指定することも可能で、クリックした場合エクスプローラやメールソフトにより開かれます。
 ローカルドライブやメールアドレスとみなされない文字列を入力した場合、「http://」が補われます(よって省略可能です)。右の画像の「製作中」は「http://製作中」とみなされ、開こうとするとエラーとなります。


添付ファイル

 各種のファイルを保存するデータ型の一つとして添付ファイル型があります。添付ファイル型は1つの列に複数のファイルを保存できるという特徴があるため、多数のファイルを扱いたい場合には便利なデータ型です。

 データ型を「添付ファイル」とする列を設けます。なお、新しい列を作っても、一度(別のデータ型として)テーブルを保存してしまうと、その列を添付ファイル型に変更することはできません(エラーが表示されます)ので注意してください。


 添付ファイル型の列にはクリップのマークと数字(保存されているファイルの数)が表示されます。ファイルを記録しようとする箇所をダブルクリックします。


 新しいウインドウが現れますので、「追加」をクリックし…


 保存しようとするファイルを選択(複数選択可)したうえで「開く」をクリックします。すると先ほどのウインドウに戻るのでさらに「OK」をクリックすれば保存完了です。


 ファイルを開くときはクリップマークをダブルクリックし、さらにファイル名をダブルクリックすればOKです(ΦωΦ


集計

 データシートビューでデータ型「集計」を選択すると…


 式を入力するためのウインドウ「式ビルダー」が現れますので、適当な式を入力して「OK」をクリックします。なおFix関数は数値の整数部分を返す関数ですので、つまり小数部分の切捨てとして機能します。


 入力した式はプロパティ「式」に記録されますので、後で式を変更する場合はここを書き換えればOKです。


 データシートビューです。表示されている値を直接書き換えることはできません。
 集計を使えばちょっとした計算のためにいちいちクエリを作る手間が省けますが、使える関数は多くありません。Sum関数やDLookUp関数など、他の行や他のテーブルを参照するような関数は全く使えませんし、同一の行を参照するような関数でも使えないものが多くありますので注意が必要です。


ルックアップウィザード

 右の例では「出身地」列について、ルックアップウィザードにより値の取得方法を設定するものとします。


 別途作成してあるこの「都道府県」テーブルの「都道府県」列の値を取得するものとします。


 さて、ルックアップウィザードを選択すると、あとは設定用のウインドウ上での操作となります。この例では既に値の取得元があるため、「ルックアップフィールドの値を別のテーブルまたはクエリから取得する」を選びます。


 テーブル「都道府県」を選びます。


 どの列の値を取得するか聞かれます。列は1つしかありませんので、その「都道府県」列を選んだ状態で「>」マークをクリックします。


 値の取得元として「都道府県」列が選択されました。「次へ」をクリックします。 


 並べ替え順を聞かれます。省略も可能ですが、一応「都道府県」列の昇順としておきます。


 いくつか設定が続きますが適当に進め、最後にここで「はい」とすると設定は終了です。


 設定終了後の様子です。ルックアップウィザードはあくまで値の取得方法を定めるものでしたので、データ型は値の取得元(都道府県テーブルの「都道府県」列)のデータ型である「短いテキスト」となっています。


 データシートビューです。入力はコンボボックスによるものとなり、表示されるリストから値を選択できます。


 選択できる以外の値を直接入力することもできます。


 リストに含まれる値以外の値を入力させないようにする場合は、デザインビューに戻り、列のプロパティ「入力チェック」を「はい」とします。
 ルックアップの設定は多岐にわたるため一旦ここまでとし、改めて説明します。


まとめ

 上記の「データ型とは」で例示したように、目的に見合ったデータ型を設定しておかないと、集計や抽出に適さないデータがたまっていき結局は使えないデータベースになってしまいます。「何でも入力できるようテキスト型にしておこう」などと考えず、必ず適切なデータ型を設定してください。
 また、データ型とともに定型入力(数字のみ入力、6文字以内で入力といったように文字種や字数の制限を設定できます)や入力規則(「10以上」といったように値そのものの範囲を定めます)の設定を行うことでより詳細な入力のルールを定めることができます。ただし、細かい制約になるほど、入力する側にとっては融通が利かない、ときには厄介なルールにもなり得ます。特に現実に入手可能なデータと比べて制約が厳しすぎるせいで、不正確な値が入力されたり入力されずに放置されてしまうようでは制約の意味がなくなってしまいます。設定しようとする制約が適切なものかどうか、きちんと検討しておく必要があります。