Access超入門
Accessのデータ型
作成日:2015/11/18

ページ内目次

  1. はじめに
  2. テキスト型
  3. ふりがなの設定
  4. メモ型
  5. 数値型
  6. 日付/時刻型
  7. 通貨型
  8. オートナンバー型
  9. YES/NO型
  10. ハイパーリンク型
  11. インデックス型

はじめに

Accessで テーブル 内のフィールドを登録するときや 変数 を定義するときはデータの型を指定する必要があります。
ここでは、Accessで使用できる型を詳しく説明します。 ただし、今回の講座の主旨を考慮して不要と思われるものは省いています。

各データ型ごとにフィールドプロパティがありますのでその説明も行います。
フィールドプロパティはデータ型ごとの詳細なプロパティを指定するものです。
なお、 フィールドプロパティには「標準」と「ルックアップ」のタブがありますが、 この稿では「ルックアップ」の説明は行いません。

データ型のフィールドプロパティには「インデックス」がありますが、 これは「インデックス」として別項を設けていますので参照して下さい。

テキスト型

文字列を格納するデータ型です。
住所、氏名などのフィールドに設定します。
また、 郵便番号、電話番号などの計算する必要のない数字も格納します。

フィールドプロパティ
テキスト型のフィールドプロパティ テキスト型のフィールドプロパティでの重要な項目は
フィールドサイズ:文字数を指定する
IME入力モード:ひらがな、全角カタカナ、半角英数など
ふりがな:別項のふりがなの設定で詳細に説明します。

フィールドサイズ
このフィールドに格納するデータの最大の文字数を指定します。
指定できる文字数は最大で255文字です。
またUniCodeを使用しているため、 全角文字も半角文字も1文字として扱います。
Accessの既定値は「255」です。
常に「255」のままでも実際のデータ長だけをHDDに保存します。
無駄に255文字分を保存するわけではないので、 HDDの容量を圧迫することはありません。
このコントロールに入力したデータ長が指定したフィールドサイズを超えないようにAccessが制御してくれます。
(つまり指定したフィールドサイズ以上にデータを入力することができません。)

IME入力モード
フォームオブジェクトでこのフィールドがコントロールとして貼り付けられている場合、 このコントロールにカーソルが来た時(フォーカスを得た時)のIMEの入力モードを指定します。 つまり、 このフィールドがフォーカスを得た時にIMEをコントロールします。
指定できるモードは「ひらがな」、「全角カタカナ」、「半角カタカナ」、「オフ」などです。
社名、氏名、住所などは漢字に変換する必要があるので「ひらがな」に設定します。
郵便番号や電話番号、メールアドレスなどは通常半角の英数字で入力しますので「オフ」を設定します。

ふりがなの設定

例えば「住所録テーブル」を作成した場合、一般的には氏名順に表示します。
普通に「氏名フィールド」順に表示すると漢字コード順になってしまって、 利用者には意味のない表示順になってしまいます。

対策として「氏名フィールド」以外に「ふりがなフィールド」を追加で定義し、 その「ふりがなフィールド」順に表示すると正しく(意味のある)順に表示されます。
例えば、 「徳川家康」という氏名の場合、 「氏名フィールド」に「とくがわいえやす」と入力して変換すると「徳川家康」と変換されます。
この変換前(つまり読み)の「とくがわいえやす」を「ふりがなフィールド」に入力して 「ふりがなフィールド」順に表示すれば正しく指名順に表示されることになります。

Accessにはこの作業を自動的に行ってくれる機能があります。
つまり、 「氏名フィールド」に「とくがわいえやす」と入力して変換すると、
「氏名フィールド」には変換結果である「徳川家康」が入力されます。
同時に「ふりがなフィールド」に自動的に変換前(つまり読み)の 「とくがわいえやす」 を入力してくれる機能です。

ここではこの機能を設定する手順を説明します。

ふりがな項目の設定手順(テーブルの定義)

左のテーブルで説明します。

このテーブルには「id」、「氏名」、「ふりがな」の3つのフィールドが定義されています。
「氏名フィールド」に入力した氏名のふりがなを「ふりがなフィールド」に設定したいので、
1. 「氏名フィールド」をクリックして選択し、フィールドプロパティを表示します。
2. フィールドプロパティの一番下にある「ふりがな」をクリックして選択します。
3. 「ふりがな」の一番右に出現したビルドボタンをクリックします。

ふりがなウィザードの初期画面 「ふりがなウィザード」が起動されました。

一番上の右側に「フィールド’氏名’の入力時」と書いてありますが、 これは「氏名」フィールドから「ふりがなウィザード」を起動したためAccessが自動で「氏名」と表示してくれています。

ふりがなを設定するフィールドは既に定義済みなので「既存のフィールドを使用する」にチェックをいれて、 プルダウンから「ふりがな」を選択します。
「ふりがなの文字種」は自動で全角ひらがなに変わります。

ふりがなウィザード これが入力結果です。

「完了」をクリックすれば設定は終わりです。

「ふりがなの入力先」で「新しいフィールドを作成し、ふりがなを入力する」を選択して、 新しいフィールドを作成することもできますが 今回は既に「ふりがなフィールド」を定義済みなので「既存のフィールドを使用する」を選択します。

「ふりがなの文字種」は初期状態では「全角カタカナ」ですが、 定義済みの「ふりがな」フィールドの「IME入力モード」が「ふりがな」で定義されているので自動的に「全角ふりがな」に変わります。

メモ型

テキスト型と同様に文字列を格納するデータ型です。
テキスト型では格納できないような大きな文字列を格納できます。
格納できる文字数は最大65,536文字です。 (UniCodeを使用しているため全角文字も半角文字も1文字として扱います)
また、テキスト型とは違い改行コードを格納することができます。

フィールドプロパティ
メモ型のフィールドプロパティ メモ型のフィールドプロパティでの重要な項目はIME入力モードです。

IME入力モード
フォームオブジェクトでこのフィールドがコントロールとして貼り付けられている場合、 このコントロールにカーソルが来た時(フォーカスを得た時)のIMEの入力モードを指定します。 指定できるモードは「ひらがな」、「全角カタカナ」、「半角カタカナ」、「オフ」などです。

数値型

「数字」と「数値」について
この講座では「数字」と「数値」について明確に言葉を使い分けています。
「数字」とは計算する必要のない、 文字としての数字を言います。
「数値」とは計算する必要のある、 あるいは計算することができる数字を言います。
つまり、 郵便番号や電話番号は計算する必要が無いので「数字」といいます。
そして、 金額や人数、得点などは通常は計算する必要があるので「数値」といいます。
テキスト型には計算する必要のない「数字」を格納します。

数値型は計算する必要のある数値データを格納する場合に使用します。
ただし通貨(金額)の場合は通貨型を使用します。

数値と数字はコンピューター上では明確に区別されています。
右のトピックスを参照して下さい。

数値型は下の表で説明していますが、 「詳細な形名」として多くの種類に分かれています。
そのフィールドに格納されるデータによって適切な型を指定します。

フィールドプロパティ
数値型のフィールドプロパティ 数値型のフィールドプロパティです。
下記の項目について説明します
  フィールドサイズ
  書式
  小数点以下の桁数
  文字配置

フィールドサイズ
数値型のフィールドはいくつもの「詳細な形名」を持っています。
フィールドサイズはプルダウンから下記の詳細な形名一覧の「詳細な形名」を選択します。
選択を間違えると思った通りの結果が出ない場合があるので注意が必要です。

書式
このフィールドをフォームやレポートで表示する際の書式を指定します。
指定はプルダウンから選択することも直接入力することもできます。
具体的な指定方法は練習問題やヘルプから調べるようにして下さい。

小数点以下の桁数
このフィールドをフォームやレポートに表示する際の小数点以下の桁数を指定します。
通常は「自動」のままで良いでしょう。

文字配置
このフィールドをフォームやレポートに表示する際の文字の配置方法を指定します。
「標準」、「左」、「中央」、「右」、「均等割り付け」のどれかを指定します。
「標準」を指定するとテキスト型は左寄せ、 数値型は右寄せになります。

詳細な形名一覧
(詳細な形名の英語表記はVBAでの表記です)
詳細な型名 説   明 小数部 サイズ
バイト型
(Byte)
0~255までの数値を扱う型
少数は扱えません。
なし 1Byte
整数型
(Integer)
-32,768 ~ +32,767までの数値を扱う型
少数は扱えません。
なし 2Byte
長整数型
(Long)
-2,147,483,648 ~ +2,147,483,647までの数値を扱う型
少数は扱えません。
なし 4Byte
単精度浮動小数点型
(Single)
負数の場合 -3.402823E38 ~ -1.401298E-45
整数の場合 +1.401298E-45 ~ +3.402823E38
の範囲の数値を扱う型
ただし、ほとんどの場合実用上差し支えない程度の誤差が発生することがあります
7 4Byte
倍精度浮動小数点型
(Double)
負数の場合 -1.79769313486231E308 ~ -4.94065645841247E-324
整数の場合 +1.79769313486231E308 ~ +4.94065645841247E-324
の範囲の数値を扱う型
ただし、ほとんどの場合実用上差し支えない程度の誤差が発生することがあります
15 8Byte
十進型
(Decimal)
-10^28-1 ~ 10^28-1の範囲の数値を扱う型
ただし、Accessプロジェクトの場合 -10^38-1 ~ 10^38-1
28 12Byte
レプリケーションID型 レプリケーションID型は、 GUID (Globally Unique Identifier)と呼ばれるもので、
ネットワーク上で複数の人がひとつのデータベースを使用するときに使います。
今回はネットワーク上で使用することの説明は省いていますので特に覚える必要はないでしょう。
なし 16Byte

単精度浮動小数点型と倍精度浮動小数点型の説明で「実用上差し支えない程度の誤差」と書きましたが、 これは処理の内容により異なります。
誤差は当然有効桁の一番小さなところで発生しますので、数値としては「実用上差し支えない程度の誤差」と書きました。
しかし、例えば整数型で扱える程度の数を計算結果が保管されている整数型の変数と倍精度浮動小数点型の変数で比較した場合、 論理上同じ値であっても、同じではないという結果が出ることがあります。

日付/時刻型

8Byteの格納エリアに、日付および時刻の値を格納します。
日付として指定できる値の範囲は 西暦100年1月1日 ~ 9999年12月31日 です。

フィールドプロパティ
日付/時刻型のフィールドプロパティ 日付/時刻型のフィールドプロパティです。
日付や時刻は半角数値で入力しますのでIME入力モードは「オフ」に設定しておきます。

書式
「書式」は格納されているデータをフォームやレポートで表示する際の書式を指定します。
格納するデータの形式は「書式」の指定には関係なく、常に8Byteの格納エリアに、日付および時刻の値を格納します。
指定はプルダウンから選択することも直接入力することもできます。
日付/時刻型の書式一覧 プルダウンで表示される書式の一覧表です。この中から表示したい形式を選択します。
プルダウンから選択する場合はWindowsの地域設定の設定内容により変わります。

上記の一覧表に表示したい形式が無い場合は、書式を直接入力する(カスタム書式)事もできます。
この場合は「yyyy/mm/dd」のように指定します。(ダブルクォーテーションなどでくくることはしません)
要素の抜粋です。(詳細は「Access で日付/時刻型フィールドの書式を設定する【別窓】」を参照して下さい)

要素 表示形式
yyyy 西暦の年を4桁で表示します。(例「2001」)
yy 西暦年の下2桁で表示します。(例 2001年なら「01」)
mm 月を2桁で表示します。(例「03」)
m 月を1桁または2桁で表示します。(例「3」、「11」)
dd 日を2桁で表示します。(例「03」)
d 日を1桁または2桁で表示します。(例「3」、「27」)
hh 時を2桁で表示します。(例「03」、「11」)
H 時を1桁または2桁で表示します。(例「3」、「11」)
nn 分を2桁で表示します。(例「09」、「12」)
N 分を1桁または2桁で表示します。(例「9」、「12」)
ss 秒を2桁で表示します。(例「09」、「58」)
s 秒を1桁または2桁で表示します。(例「9」、「58」)
g 和暦の年号の頭文字を表示します。(M,T,S,H)
gg 和暦の年号の先頭の1文字を表示します。(明,大,昭,平)
ggg 和暦の年号を表示します。(明治,大正,昭和,平成)
e 和暦の年号に基づいた年を1桁または2桁で表示します。
ee 和暦の年号に基づいた年を2桁で表示します。

上記の要素に区切り文字を付けることができます。
「/(スラッシュ)」、「-(ハイフン)」、「:(コロン)」などを区切り文字として使用することができます。
それ以外の文字もダブルクォーテーション(")で囲むか円記号(¥)を文字の前に付加する事によって区切り文字として使用することができます。
(直接「年」と指定してもAccessが自動的に円記号を付加して「¥年」としてくれます)
具体的な使用方法は下記の表を参照して下さい。(「△」は半角スペースを意味します)

指定書式 表示形式
yyyy/mm/dd△hh:nn:ss 2003/03/09△08:09:05
yy¥年m¥月d¥日△H¥時N¥分s¥秒 03年3月9日△8時9分5秒
ge¥年m¥月d¥日 H6年3月9日
ggee¥年m¥月d¥日 平06年03月09日
ggge¥年m¥月d¥日 平成3年3月9日

日付と時刻の入力

Accessでは様々な入力形式をサポートしてくれています。
日付/時刻型のフィールドを持つコントロールに日付や時刻を入力すると、 そのコントロールがフォーカスを失った時に上記の書式で指定した形式の表示に変わります。
日付だけの入力、 時刻だけの入力も可能です。
下の表でいくつかの入力方法を説明します。書式は「日付(標準)」を指定したものとします。
(△は半角スペースを意味します)

入力形式 具体例 結果 説    明
西暦年(4桁)/月/日△時:分:秒 2016/3/23△11:5:20 2016/03/23△11:05:20 日付と時刻を入力する一般的な形式です。
西暦年(4桁)/月/日 2016/03/23 2016/03/23 日付を入力する一般的な形式です。
月/日 3/23 2016/03/23 月日だけを入力すると年には入力時の年を付加します。
西暦年(2桁)/月/日 16/3/23 2016/03/23 西暦年の下2桁を入力すると4桁に変換します。
和暦年/月/日 平成28年/3/23 2016/03/23 和暦の年を入力することもできます。

通貨型

Accessで数値をあつかう場合、 その数値が金額の場合はこの通貨型を使用します。
通貨型は8Byteの格納エリアに、小数以上が15桁、小数以下は4桁で格納します。

金額の場合に通貨型を使用する理由は小数以下の処理にあります。
これは計算時の丸めによる誤差をなくすことを目的にしています。
なので、 小数以下を使用しない場合は他の数値型でもかまいません。

フィールドプロパティ
通貨型のフィールドプロパティ 通貨型のフィールドプロパティです。

「小数点以下表示桁数」の初期値は「自動」となっていますが、 これではAccessが判断して表示桁数を決めてしまいますので必ず必要な桁数を指定するようにして下さい。
また、 プルダウンから「小数点以下表示桁数」を選択しようとすると14桁まで指定できるようになっていますが、 通貨型の小数以下の桁数は4桁までなので4桁以上を指定しても後ろにゼロが表示されるだけです。

オートナンバー型

オートナンバー型は長整数型のフィールドで、 テーブルにこのオートナンバー型のフィールドを定義しておくことで、 レコードが追加される都度 「1からの連続番号」 あるいは 「ランダムな番号」 を自動的に設定します。
また、 オートナンバー型フィールドの値を更新することはできません。

このフィールドはテーブル内のレコードに一意(unique)な番号 (つまり、テーブル内に同じ番号を持つレコードは存在しない) を割り振って他のレコードと識別するために使用します。
この講座でテーブルを作成する場合は 「主キー」 にこのオートナンバー型のフィールドを割り当てます。

オートナンバー型の功罪について
オートナンバー型を使用することにの功罪については、 種々取り上げられているようですが(詳細については説明しません)
この講座では原則的にフィールド名が「id」のオートナンバー型を主キーとするテーブルを作成します。

フィールドプロパティ
オートナンバー型のフィールドプロパティ オートナンバー型のフィールドプロパティです。

「インデックス」は、 このフィールドの目的から、 「はい(重複なし)」を指定しないといけません。

ここからの説明はこのフィールドを主キーに設定した場合の説明です。
「新規レコードの値」には「インクリメント」と「ランダム」を指定することができますが、 この講座では「インクリメント」を指定することにします。
「インクリメント」を指定すると新しくレコードを登録するたびに1から始まり、 1づつ加算された値が自動的に設定されます。
つまり、 主キーに設定したフィールドにはユーザが値を入力することはありません。
また、 主キーを持つレコードを削除するとその主キーの値は二度と自動的には使用されません。
つまり、 1からの連番になっていた主キーが歯抜け状態になります。
主キーを意味のあるデータとしてフォームやレポートに表示している場合は、 この歯抜け状態がとても気になると思いますが、 この講座では主キーをデータとして表示しませんので歯抜け状態は全く問題ありません。
どうしても気になる場合はネットで検索するとオートナンバー型の番号を振り直し方法がいくつもありますのでそちらを参照して下さい。

YES/NO型

二者択一のデータ(はい/いいえ、Yes/No、True/False、On/Offなど)を格納する1bitのデータです。
Null値を格納することはできません。
値はゼロが「No/False/Off」です。

フィールドプロパティ
YES/NO型のフィールドプロパティ YES/NO型のフィールドプロパティです。
この画像は「書式」のプルダウンを表示した状態です。

「True/False」、「Yes/No」、「On/Off」を選択できますが全て動作は同じです。
そのフィールドの用途に合わせれば良いでしょう。

ハイパーリンク型は簡単に説明しておきます。

ハイパーリンクとはアドレスを格納しておき、 クリックするとその指定先を開くものです。
ホームページアドレス(URL)を指定するとそのホームページを開きます。
ファイルのパスを指定するとそのファイルを開きます。
開くプログラムはそれぞれの既定のプログラムになります。
ホームページアドレスの場合は既定のブラウザ、Word文書の場合はWoedを起動して開きます。


インデックス

フィールドプロパティ内のインデックスについて説明します。

インデックスにカーソルを合わせて表示される右端の逆三角形をクリックすると、 プルダウンに設定する候補が表示されますので選択します。
表示される候補は「いいえ」、「はい(重複あり)」、「はい(重複なし)」の3種類です。 「いいえ」を選択すると「インデックス」と呼ばれる機能を使用しないのでインデックスについて知る必要はありません。
しかし、 「はい(重複あり)」や「はい(重複なし)」を選択すると「インデックス」と呼ばれる機能を使用ことになります。
ここでは「インデックス」と呼ばれる機能を説明します。

テーブル内のフィールドでデータの検索あるいは並べ替えを頻繁に行う場合、 レコード内の全てのフィールドをスキャンするのではなく、 予めそのフィールドだけを取り出したインデックスを作成しておけばパフォーマンスが上がることが予想されます。
例えば、 会社コードのインデックスを作成しておけば、 会社コード順の並べ替えを効率よく行えます。
この場合は、 会社コードのフィールドプロパティのインデックスに「はい(重複あり)」または「はい(重複なし)」を設定します。
Accessは新しいレコード(会社コード)を登録した時には自動的に会社コード用のインデックスに新しい会社コードを追加します。
これは会社コードの変更や削除の場合も同様です。

インデックスはテキスト型にも指定できますが、 これはお勧めできません。
上記の例では、 会社名にインデックスを作成するのではなく、 数値型の会社コードを割り振ってそこにインデックスを作成します。

ここでは、 会社コードを例に説明します。

「はい(重複あり)」と「はい(重複なし)」の違い
「はい(重複あり)」も「はい(重複なし)」も、 そのフィールドのインデックスを作成することは同じです。
「はい(重複なし)」を指定すると、 Accessがチェックして、 テーブル内に同じデータが既に存在する場合は入力できないようにします。
例えば会社(取引先)マスターの会社コードの場合、 新しい会社を登録するとき、 既に存在する会社コードを設定するとどちらの会社か特定できないので重複を許さない設定にします。
例えば売上伝票の会社コードに設定します。
売上伝票の会社コードの場合は「はい(重複あり)」を設定します。
売上伝票には同じ取引先の会社コードが複数存在するため重複を許していないと、 ある会社の売上伝票を1件登録すると2件目以降は登録できなくなってしまうので重複を許します。

ここまでは、 ひとつのフィールドのインデックスを作成する方法を説明してきました。
Accessでは複数フィールドの組み合わせのインデックスを作成することができます。

複数フィールドの組み合わせのインデックスを作成するには、
まず、 インデックスを設定するテーブルをデザインビューで開きます。
組み合わせる全てのフィールドのフィールドプロパティのインデックスに「はい(重複あり)」または「はい(重複なし)」を設定します。

デザインタブ デザインタブの「インデックス」をクリックします。

インデックスウィンドウ 「インデックスウィンドウ」が表示されます。

「インデックスウィンドウ」にはフィールドプロパティでインデックスに「はい」を設定した全てのフィールドが表示されています。
この「インデックスウィンドウ」では先ず「会社コード」フィールドで昇順に並べられ、 同じ会社コードの中で「支店コード」の昇順に並べられます。
「並べ替え順序」はデフォルトでは「昇順」ですが「降順」も選択できます。

この仕組を理解してテーブルのフィールド定義の時点で「会社コード」、「支店コード」の順に定義すると「インデックスウィンドウ」を開いて確認する必要はありません。
(降順に並べ替える必要のある時は「インデックスウィンドウ」を開く必要があります)

この講座では、 テーブル定義を行うときは、 原則としてオートナンバー型の主キーを定義することにしていますが、 この場合は「オートナンバー型の主キー」は定義しないか順位を一番下にする必要があります。


免責免責