Accessファイルを作成する上で、テーブル設計は避けて通れないものです。単純に画面系から必要なフィールドを設定することもできますが、どのようなデータを保存したいのかを考えながら設計することで、データベースの保守管理を効率良く行えるようになります。今回は、Accessデータベースのデータ型について紹介します。
テーブルのデータ型
テーブルを作成する際には、フィールド名とデータ型を決める必要があります。フィールド名は、後々データ処理をする際に分かりやすい名称にすることを推奨します。
さて、今回はデータ型について詳しく紹介をしていきます。
表 Accessにおけるデータ型
データ型 | 概要 | サイズ |
短いテキスト (テキスト型) |
文字列のデータを保持する。サイズが限られているため、比較的文字数の少ない文字列データを保持する場合に用いる。電話番号等、ハイフンが入る場合もテキスト型になる。また、ゼロから始まる数字の列を管理する場合もテキスト型を活用できる。 | 最大255文字 |
長いテキスト (メモ型) |
文章や段落などの比較的文字列数が長い場合に用い、備考欄、説明欄等に適用されることが多い。短いテキスト型では収まりきらない場合には、長いテキスト型を用いる。 | 最大65,536文字 |
数値型 | 数字データを扱う場合に用いる。数値型には、バイト型、整数型、長整数型、単精度浮動小数点型、倍精度浮動小数点型、レプリケーション ID型、十進型がある。 | 1、2、4、8、 16 バイトがあり、数値型のタイプにより異なる。別表参照。 |
大きい数値 | 桁で大きな数字を扱う際に効率的な計算を可能とする。 | -9,223,372,036,854,775,808から9,223,272,036,854,775,807 までの数字を取り扱える。 |
日付/時刻型 | 日付、時刻といった時間にかかわるデータを取り扱う際に用いる。 | 8バイト |
通貨型 | 4 桁の小数部の精度で保存される通貨のデータに使う。特に、丸め誤差に注意したい場合には通貨型を用いることが有効。 | 8バイト |
オートナンバー型 | 新しいレコードごとに Access で自動的に生成される固有の値に使いIDフィールド等に適用されることが多い。このため主キーとして設定することが多い。 | 4バイト |
Yes/No型 | ブーリアン(Boolean)型としてTrue/Falseの使い方もする。Yes(True) の場合は-1、No(False) の場合は0の数値として保存される二者択一のデータに使う。 | 1バイト |
OLEオブジェクト型 | 別の Windows ベースのアプリケーションからの画像やグラフなどの ActiveX オブジェクトに使う。 | 最大2GB |
ハイパーリンク型 | インターネット、イントラネット、ローカル エリア ネットワーク (LAN)、ローカル コンピューター上のドキュメントまたはファイルへのリンク アドレスに使う。 | 最大8,192文字 |
添付ファイル | 画像、文書、スプレッドシート、グラフなどのファイルを添付できる。添付ファイル フィールドに含めることができるレコードあたりの添付ファイルは無制限であるが、データベースのサイズのストレージ上限までとなる。添付ファイル データ型は MDB ファイル形式では利用できない。 | 最大2GB |
集計 | 1 つまたは複数のフィールドのデータを利用して式を作成できる。式からさまざまな結果データ型を指定できる。集計データ型は .mdb ファイル形式では利用できない。 | [結果の型] プロパティのデータ型に応じて異なり、短いテキスト データ型の場合は最大 243 文字、長いテキスト型、数値型、Yes/No 型、日付/時刻型の場合はそれぞれのデータ型のサイズと一致 |
ルックアップウィザード | デザイン ビューの [データ型] 列のルックアップ ウィザード エントリは、実際にはデータ型ではない。 このエントリを選ぶと、ウィザードが起動し、これを使って簡単または複雑なルックアップ フィールドを定義できる。 簡単なルックアップ フィールドでは、各行につき単一の値の内容を検証するための、別のテーブルまは値リストの内容を使う。 複雑なルックアップ フィールドには、各行に同じデータ型の複数の値を格納できる。 | ルックアップ フィールドのデータ型に応じる |
この内、短いテキスト、数値型、日付/時刻型、通貨型、オートナンバー型、Yes/No型は良く使うデータ型になります。文字列は「名称」等全般に、「数値型」は年齢や個数等の情報を取り扱う際に用います。日付/時刻型はFormat関数と組み合わせると、その効力は非常に大きいです。通貨型はお金を管理する場合には必ずと言っていいほど必要となります。オートナンバー型は、Accessで自動的にユニークな番号をセットしてくれるため、IDフィールドに適用し、リレーション設定時に有効活用されます。Yes/No型は、フラグを立てる際等、様々な場面で活用できます。
次に、数値型について、その詳細を見ていきましょう。
表2 数値型の詳細
型 | 概要 | サイズ |
バイト型 | 0~255の整数に使用する。 | 1バイト |
整数型 | -32,768~32,767の整数に使用する。 | 2バイト |
長整数型 | -2,147,483,648 ~ +2,147,483,647 の整数に使用する。 | 4バイト |
単精度浮動小数点型 | 最大有効桁数が 7 桁の -3.4 x 1038 ~ +3.4 x 1038 の浮動小数点値に使用する。 | 4バイト |
倍精度浮動小数点型 | 最大有効桁数が 15 桁の -1.797 x 10308 ~ +1.797 x 10308 の浮動小数点値に使用する。 | 8バイト |
レプリケーションID型 | レプリケーションに必要な GUID を保存する場合に使用する。 | 16バイト |
ここで、バイト型を見てみると、サイズは1バイトで0~255までの数字を取り扱うことができるとされています。1バイトとは8ビットと同値であり、1ビットは「0」か「1」をとることになります。したがって、0か1かの2進数で考えると2の8乗(2×2×2×2×2×2×2×2 = 256) となります。このとき、数字の「0」を取り扱うため、「256」が最大ではなく、「255」が最大値となります。以上のことから、サイズが1バイトの「バイト型」では取り扱うことができる数値が0~255になるというわけです。整数型や長整数型も考え方は同様ですが、これらは負の値を用いることができます。
データ型の取り扱い注意点 型変換
さて、データ型の取り扱いについて注意点を簡単に紹介します。
まずは、テキスト型と数値型の違いについて説明します。
テキスト型はあくまでも文字列としての扱いで、四則演算などはできません。四則演算が必要な場合は、数値型を用います。
また、テーブルの画面上も数値型の場合は左寄りに、テキスト型の場合は左寄りになります。
一つ目の注意点として、テキスト型と数値型の違いを挙げました。これは説明の通りですが、文字列型は数値として認識されないため、足し算引き算といった四則演算をすることができません。仮に、数値を文字列型で取得し、演算処理をしたい場合には「キャスト」といって強制的にデータ型の変換をする必要があります。
文字列型から数値型(整数型)への型変換方法: CInt関数, CLngを用いる。
今後、データベースを取り扱っていく中では、文字列として取得した数値を演算処理したいという場合も出てきます。この場合は、CInt関数(整数への変換)やCLng関数(小数への変換)を用いて文字列から数値型への型変換をすることで、演算処理をすることができるようになります。逆に、数値型から文字列型に型変換したい場合は、Cstr関数を用います。
図4は図3で示したテーブルの数値及びテキストフィールドを型変換するためのクエリです。
なお、クエリでの演算については、Accessで作る購買伝票について その8 クエリ作成(演算)を参考にしてください。
図4に示すように、数値型のフィールドをCStr関数を用いてテキスト型へ、またテキスト型のフィールドをCInt関数またはCLng関数を用いて数値型へキャストしています。
特に、テキスト型から数値型へのキャストをする際には、当然数値への変換を目的としているため、ひらがな等を数値型へキャストしようとするとエラーになりますのでご注意ください。
データ型の取り扱い注意点 整数と小数
次の注意点として、数値型としても整数の取り扱いか、小数まで含んだデータの取り扱いかが重要になってきます。例えば、「1.23」という数字を考えてみましょう。整数部は「1」小数部は「.23」となります。
この時、「1.23」という値を整数型のフィールドに入れようとするとどうでしょうか?
当然ながら、「.23」は小数部となり、この整数型のフィールドでは切り捨てされます。したがって、単精度浮動小数型や倍精度浮動小数型のデータを整数型のフィールドへコピーする際には、小数部がなくなることに注意してデータ操作をしてください。一方で、整数型から小数型へのデータ移動は、単に「.00」というように表記されるだけなので、大きな問題になることはほとんどありません(図6参照)。
まとめ
今回はAccessにおけるデータ型について紹介をしました。データ型は、保存するデータの型式によって選定をしますが、テーブル設計をする上では数値型の代わりにテキスト型を使う場合等、様々なケースがあります。本記事では、頻繁に使うデータ型を主に取り上げましたが、その際の注意点として文字列を取り扱うのか、数値を取り扱うのか、また数値を扱う場合に、整数型なのか、小数まで含まれるのかで、そのデータ型が異なることを説明しました。次回は、日付/時刻型について詳しく見ていきたいと思います。
スポンサーリンク
コメント