<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 MS-Access97超入門>基本をマスターしよう
   テキスト型 メモ型 数値型 日付/時刻型 通貨型 オートナンバー型 Yes/No型 OLEオブジェクト型 ハイパーリンク型



 (読み終わりましたら、ブラウザの[←]戻るボタンで、戻ってください)

  
■データ型について

例えばワープロや表計算ソフトを操作するとき、「その値が数値なのか文字なのか?」なんてこと、いちいち気にしないですよね。
でも、データベースソフトの場合は、少なくとも「数値であるか文字であるか」という区別は、とってもタイセツなことなんです。

例えば、「会員番号」とか「社員番号」ってありますよね。
あれって数字で構成されてることがありますけれど、計算したり、合計したりしないですよねぇ。
こういうフィールドは、数字ですけれど文字扱いでよいことになります。

逆に、「売上高」とか「仕入れ個数」とかいうフィールドは明らかに計算の対象となります。
こういう場合は単なる数字ではなくて「数値」と考えるわけです。
いくら「売上高」のつもりで10000と入力しても、Accessは1と0でできている文字列としか思ってくれません。
見た目はあんまり変らないですけれど、計算の対象にはなりませんですし、多い順小さい順に並べ替えをしたとき、必ずしも正しく並び変りません。

1,2,3,5,10,22,75という数字を並べ替えたとき、1,10,2,22,3,5,75となってしまいます。(ちょっとわかりにくいかなぁ)

数値として扱うべきものと、特別数値でなくても処理ができるものと、見極めておかないとイケナイです。


見た目のお話では、文字型のフィールドは左詰め、数値型のフィールドは右詰めで表示されます。

番号 顧客名 住まい 年収 入力日
01 ジョン・ロード 東京 555,000,000 98/01/04
02 ジョン・テイラー 岡山 780,000,000 98/02/15
03 ジョン・ボン・ジョヴィ 新潟 987,000,000 98/01/16
04 ジョン・サイクス 福岡 579,440,000 98/01/18
↑数字だが文字扱い ↑「年収」は数値。 ↑日付は数値扱い。

数値に「xx円」と単位を付けたり、3桁ずつカンマ区切りをしたりすることがあります。
これは「見た目の設定(書式)」で行います。
テーブルの中には実数のみ入力するようになります。
この辺はフォームやレポートの作り方のところでお話しますね。
とにかくテーブルでは、すっぴんで勝負です。


んでは、データ型に付いて、ひとつずつ見てみましょう。
Accessでは、次のいずれかのデータ型を選ぶようになってます。

テキスト型 一般的な文字型。標準はこれ。
メモ型 64kb(メモ帳と同じね)
数値型 数値を入力するフィールド。詳細は別途。
日付/時刻型 日付や時刻を入力するためのフィールド。詳細は別途。
通貨型 数値型とほぼおんなじですが「金額専用」。詳細は別途。
オートナンバー型 レコードを追加する度に自動的に番号が採番される。
Yes/No型 「はい」か「いいえ」。二者択一タイプのフィールド。
OLEオブジェクト型 イラストとか写真とか、そういうデータを埋め込むフィールド。
ハイパーリンク型 さすがインターネット時代。こんなのまで。

いっぱいありますね・・・。
とりあえず「テキスト型」と「数値型」と「日付時刻型」の3パターンを押さえておけば、後のものは必要に応じてってことでOKだと思います。

日付時刻型は、他のパソコンソフトもそうですが、日付や時刻に関する計算式って、結構いろいろできるんですよ。
うるう年もちゃんと理解するし、「何月何日は、何曜日?」なんてカンジで曜日を計算したりもできます。
、「受注日」とか「入力日」とか、明らかに日付だな、と思われるフィールドは、この形式にしておくといろいろ便利なんですよ。

各データ型とも、その中でまた種類や設定がいろいろあります。
あんまり神経質になる必要はないと思うんですが、どこかで役に立つやもしれませんので、いろいろ書き並べてみます。参考になさってください。


[テキスト型]

いちばんオーソドックスなフィールドタイプ。特に計算する必要などなければ、全部これでいいんじゃないかと思います。
扱いについても特別面倒なことはありませんが、フィールドサイズだけ注意が必要です。

通常、ただフィールド名を入力しただけだと、自動的に50桁(半角で、ね)のテキスト型になってます。
フィールドサイズは、画面のチョットしたの方の「プロパティ」欄に数値で指定します。
何もしないと「50」という数字が入ってると思います。

テキスト型の最大フィールドサイズは255桁です。
ただ、ここを増やしたり減らしたりしても、テーブルのサイズに変動はありません。
郵便番号のフィールドだからといって無理矢理7桁に減らす必要はないです。
フツウは「50」のままでよいので、それ以上の桁数になりそうなとき(長い住所とか、ちょっとした備考欄とか)の場合だけ調節してください。


[メモ型]

基本的に「メモ」とか「備考欄」とか「レポート」とか、ちょっとした長文を入力したいときに使います。
65,535文字まで(アクセサリのメモ帳に書けるだけ)文字を保存することができます。
数値との組み合わせもできるらしいんですが・・・。


[数値型]

数値を格納するフィールドタイプです(当たり前か)。

数値といっても、コンピュータの世界にはいろいろあるみたいです。
Accessでは下のような区別をしてます。テキスト型と同じように、プロパティ欄の「フィールドサイズ」というところで設定します。
標準はたしか・・・「長整数型」になってたと思います。

フィールドサイズ 説明
バイト型
(Byte)
0〜255まで。小数部分はナシ。「年齢」とか「100点満点の点数」とか、小数点以下の数値が発生しない、明らかに桁数の少ないフィールドに最適ですね。
整数型
(Integer)
-32,768〜32,767まで。少数はナシ。「売上個数」とかそんなフィールドにいいんじゃないでしょうか。
長整数型
(Long Integer)
-2,147,483,648 〜 2,147,483,647まで。これも小数点以下の値を持ちません。これが標準形式になってます。
単精度
浮動小数点型
(Single)
負数については、-3.402823E38 〜 -1.401298E-45、正数については、1.401298E-45 〜 3.402823E38まで。なんのこっちゃってカンジですよね・・・。Eってなんだよ。。。
倍精度
浮動小数点型
(Double)
負数については、-1.79769313486231E308 〜 -4.94065645841247E-324、正数については、1.79769313486231E308 〜4.94065645841247E-324。ひ〜おぼえらんない。
ちょっと前のAccess(1.1とか2.0では、この形式が数値型の標準だったし、何も考えずにダブルを指定してたので、多分、小数点以下の数値を持たなくちゃイケナイ場合はこの形式が理想的なんだろうなと思います。専門的にはよく分からないんですけどね・・。
レプリケーションID
(ReplicationID)
Accessには、ネットワーク上でいろいろな人がひとつのデータベースを使うときのための「レプリケーション」という機能があります。オートナンバー型のフィールドを使うとき、このフィールドは通常は長整数型なんですが、レプリケーションをしているときは、定期的にデータベース同士同期をとるんですが、この時にオートナンバー型のフィールドがダブったりしないように用意されているフィールドサイズです。

数値型のフィールドを扱うときは、いろいろ気を付けなくちゃイケナイみたいです。
私は理数系は苦手なので、あんまり詳しくないんですけど・・・・。

コンピュータは内部では「2進数」です。それをいろいろこねくり回して「10進数」にしてから、Outputするんですね。
とすると、どうしても小数点以下の細かいレベルで何度も何度も計算を繰り返しているうちに、「2進数」のときの端数が生じてしまうのです。

ちょっと昔の電卓に、そういうのありましたよね。たしか。

何度も割り算とか掛け算とかしてるうちに、ホントは100なのに、99.9999とかいう答えが出てきちゃうの。
でも電卓はね、正確に計算してんですよ。きっと。

この辺の端数は、ソフト側でうまくデータの形式とかルールを作って、ケースバイケースでキチンと丸められるようにしないとならないわけです。
したがって、小数点以下の数値が発生しないような数値の場合は、長整数型とかバイト型をつかって、整数部分に響くような端数が発生しないようにするみたいです。

あと、なるべくそのフィールドにあったフィールドサイズを選ぶことが、しいては処理速度にもつながるようです。

でも、とりあえずは、「小数点以下の数字が必要なときは倍精度浮動小数点、整数部分だけでいいなら長整数型」って感じで、いいんじゃないかなと思います。


[日付/時刻型]

文字どおり日付と時刻を格納するためのフィールドタイプです。

他のソフトウェアでも使われる形式かもしれないですが、日付を入力するとき、「1998/05/18」みたいな感じで、半角スラッシュ(ナナメ線記号)で区切って、半角の数字で日付を入力することがありますよね。あれは単なる見た目の問題ではなくて、ちゃんと意味があるんです。

-(半角のハイフォン)でもいいんですが、この記号で区切ることは、年/月/日であるとみなされて、「12/98/64」みたいな、めちゃくちゃな入力ができないように見張ってくれることになるんです。実際には、「1899年12月31日から、今日で何日目?」(30日だったかも)という数値が格納されるんですが、スラッシュやハイフンで区切られて入力されることで、ちゃんと「年月日」で表示されるようになるのです。

チョットばかり実験です(笑)。お暇なら試してみてね。



テーブルを作って、データ型を最初「数値」にしておいて、
1とか200とか適当な数値を入力しておきます。
データの様子を見てみると、右のようになってます。
   


で、データ型を「日付/時刻型」に変更し、テーブルをいったん保存してから
再びデータの中身を表示します。
すると、1899/12/31から始まっている数値、ということがわかりますね。

日付/時刻型には、「書式」というものが付いて回ります。見てくれのところですね。
これは実際にはフォームやレポートを作るときに気にしていただければよいと思います。
テーブルそのものはデータが物理的にたまる器に過ぎないので、ここで見た目や体裁にこだわってもあんまり意味がないんです。

日付の表示形式は、標準は「yy/mm/dd」となってます。2000年対応?そんな心配はイリマセンよ。
書式はあくまでも見てくれですから、内部的にはちゃんと2000年過ぎた日付も認識できてます。
西暦の下二桁だけ表示するってやつですね。

ただ、画面下のフィールドプロパティ欄を見ると「書式」という欄がありますよね。

あらかじめ用意されている日付の書式には「L型(1998年9月30日)」と「M型(30-Sep-98)」と「S型(98/09/30)」、そしてS型の後に時刻まで表示する標準タイプの4種類があります。これ以外にも自分で作ることもできます。

例えば「書式欄」に

yyyy/mm/dd

と入力すると(半角ですよ。大文字小文字はどっちでもオッケー)、上の「実験じゃ」フィールドのように1998/09/30と表示してくれます。

yyyy/m/d

にすると、先行ゼロがなくなるわけですね。1998/9/30になります。微妙な違いですが・・・。

ggge/mm/dd

と入れると、和暦になります。明治とか大正とか昭和も識別しますよ。明治以前は・・・残念ながら数字だけになってしまいます。そりゃそうか。

でも、書式に関しては、テーブル自体に無理に設定する必要はないと思います。
この辺はとりあえず知識として持っておいて、フォームやレポートといったオブジェクトを作るときに役立ててください。


[通貨型]

基本的には「数値型」。金額の計算に不要な端数をいっさい出さないように考慮された精度の高い(らしい)データ型です。

これは、オカネの額を格納するためのフィールドですので、デフォルトでは「アタマに\マーク、3桁ずつのカンマ区切り」という書式が頼んでもないのに自動的に付きます。
いやなときは日付とおんなじように書式を変更します。

これも実際にはフォームやレポートで活用してください。テーブルのプロパティで無理に設定する必要はないと思います。
フォームの作り方のところでもちょっと解説してますので、そこと合わせて参照してください。

例えば書式欄に

#,###円(井桁とカンマは半角ね)

と入力すると、74,154円、と、円という単位付きで金額が表示されます。#は「何か数字やな」という意味です。

この辺工夫すれば、ドルとかポンドとかいった表示もできるでしょう。ドルはキーボードから記号が入力できますね。
ポンドも確か、単漢字検索をして探せば、フォントは用意されていたと思います。まあ、カタカナでもいいですよね。

通貨型のフィールドで、小数点以下の数値が必要になることがあるのかどうか分かりませんが、基本的には整数部分で丸められます。
小数点以下の値を表示させたい場合は

#,###.##円

と、もう一工夫します。そうすると、指定した桁数分表示して、その後ろは四捨五入して丸めます。
通貨型は小数点以下4桁まで精度が保証されているということなので、細かい計算が発生するような場合は、通貨型を指定した方がよいのでしょう。

数値の書式は自分で工夫ができますので、いろいろ試してみてくださいね。


[オートナンバー型]

他のページでもちょっと触れてますが、「Accessがかってに入力するフィールド」です。

例えば「ナンバー」というオートナンバー型のフィールドを設けたとします。
(オートナンバー)と表示されて、私たちの入力はいっさい受け付けません。
その代わり、右隣の「実験じゃ」というフィールドになんか金額を入力すると、10,11,12・・・と1ずつ増やして自動的に採番していきます。
んー、使いようによってはなかなか便利かも。

でも、残念かな、レコードを削除すると、その番号は欠番になります。
例えば隣の表で「ナンバーが3で-10円のレコード」を削除したとしますよね。
で、一番下に新しいレコードを1件入力したとします。
次に付く番号は10。オートナンバーの3は、永久に空いたままです。

番号の付け方は、上のような順番(インクリメント)がデフォルトですが、
ランダムに付けさせることもできます。
でも、基本的に「長整数型」なので、-2,147,483,648 〜 2,147,483,647の間でランダムに数字がつきますので、びっくりするような番号付けになります。

別にいけないことじゃないと思いますが・・・あんまり意味がないかも。

主キーのところでも解説してますが、とにかく絶対に同じテーブル内で同じ番号が付くことのないフィールドなので、
てっとりばやく主キーやインデックスといったフィールドを設けたいとき、手ごろです。

オートナンバー型のフィールドは、1個のテーブルの中にひとつしか作れません(あたりまえか?)。


[YES/NO型]

さて、後はAccessデータ型の「業師」3人組みの登場ですね(笑)。トップはYES/NO型です。

これは、いわゆる「はい」か「いいえ」か、2択の処理をするときに手ごろなフィールドです。

例えば、「資料を送付した/しない」とか「添付資料あり/なし」とか、その手のフィールドですね。
テキスト型のフィールドを使って「あり」「なし」と入力してもいいのですが、それよりは手軽で、多分Accessにとっても処理しやすいんじゃないかと思います。

テーブルの見た目としては、チェックボックスというタイプの表示になります。
マウスでクリックすると印が付いたり取れたりするやつです。付いてるときはYes、付いてないときはNoという感じですね。

チェックボックスの状態
印が付いている Yes True On -1
印が付いてない No False Off 0

その組み合わせでも働きますが、マクロとかモジュールを作るときはTrue/Falseの組み合わせが多いかもしれないですね。
大文字小文字はどっちでもいいのですが、半角で必ず入力します。内部的には-1か0、ということで、数字です。

入力の手間も省けるし、なかなか便利ですので、活用してみてください。


[OLEオブジェクト型]

続きましてはOLEオブジェクト型」です。

Accessが初めて世に出た当初、オキャクサマにお勧めするときにこの機能をずいぶん前面に押し出しました。
格納できるのは文字や数値だけではないのです。

例えば、顧客名簿を作って、お客さんの住所や電話番号、担当者の名前などのフィールドを設けて参照できるようにしますよね。
よく訪問するお客さんなら「地図が欲しいな」とか、「そのお客さんの会社のロゴマークかなんか、出てくると雰囲気でるな」とか、そんなことちらっと考えません?

そんなことを実現するためのフィールドです。

今でこそイメージ系のファイル形式っていろいろ充実してますけど・・・。
基本はビットマップ。スキャナで読み込んで、アクセサリのペイントなんかで表示できるイメージ形式ですね。拡張子にbmpって付くやつです。

あらかじめ、取り込みたい地図やロゴマークや写真などを、とりあえずイメージデータにしておきます。
名前が付いてファイルとしてどっかのフォルダに保存しておいて、これをひとつずつフィールドに取り込んでおくと、他のフィールドといっしょに、1レコードとして保存されるのです。
ただし、テーブルの中に取り込むと、見た目には「ビットマップイメージ」とかいう感じで、中にどんな種類のデータが入ってるか、という解説しか出てきません。

そうそう、イメージだけではアリマセンよ。
Wordの文章そのものとか、Excelで作った表とか、とにかく名前が付いて保存されてるファイルは、ほとんどしまえるといってもいいでしょう。

これは、Windowsのアプリケーションソフトが、OLEという約束事に基づいて作られていることのおこぼれなのです。

パソコンのソフトは、ソフトの名前やメーカーが違うと、ファイルの形式やデータの持ち方がまったく異なるので、データのやり取りができません。
でも、まったく道が閉ざされてしまうのではなく、ある程度お互いに歩み寄れば、何とかなるよ、という方法がいくつか用意されているのです。

OLEもそのうちのひとつと考えていいと思います。 Object Linking and Embeddingの略で、ファイルとソフトでやり取りするときのルールみたいなものをまとめた取り決めのようなもの。こういう形式をサポートしているソフトで作られたファイルなら、埋め込むことができるよ、ということなのです。

左の画面は、上の画面でご覧いただいた適当なテーブル「テーブル1」の内容を表示するために作ったフォームです。(フォームに関しては、フォームの作り方のページを参照にしてくださいね)
「ナンバー」や「実験じゃ」というフィールドとともに「イメージじゃ」というOLEオブジェクトタイプのフィールドを設け、ペイントで描いて保存しておいたビットマップファイルを取り込んであります。

テーブルでは上の画面図のようにビットマップイメージ、と表示されるだけですが、こうやってちゃんとフォームを作ると、中身が表示されるようになるわけです。
レポートを作れば印刷されます。

例えば不動産の見取り図とか、社員の顔写真とか、そういうイメージデータがあるならば、データベースの中の1フィールドの値として扱うことができるわけです。
取り込むのはちょっと手間ですけれどね・・・。

Wordの文書などは、文書の中身そのものをフォーム上に表示することもできますし、うっとうしければアイコンを表示させておくにとどめることもできます。
Wordなら、"W"というあのアイコンですね。で、ダブルクリックすれば、Wordが起動して文書が開きます。論文管理なんかにも便利かもしれないですね。

ただし、これはハイパーリンクみたいに文書やイメージデータをリンクするのではありません。
ファイルそのものをデータベースの中に取り込むため、データベースのファイルサイズはガンガンでかくなります。

マシンパワーやディスク容量、レスポンスなどを確認しながら活用してください。


[ハイパーリンク型]

これは確か、Access95(Access97のひとつ前のAccess、2〜3年前のやつで)にはなかったフィールドタイプだと思うんですけど・・・
まだ私は実用的な使い方をしたことはアリマセン。

ようするに、私たちがブラウザを使ってホームページを開くときなどに使っているURLを格納しておくためのフィールドです。
このデータ型にすると、フィールド内に入力されている文字列は、アンダーラインが引かれて青っぽい文字になります
(色は、マシンの設定によるのかな)
マウスポインタを近づけると手の形になるので、インターネット環境が整っているマシンなら、そのままテーブルやフォームからそのホームページを開くことができるのです。

顧客リストを作って、電話番号や住所と同じようにホームページアドレスを紹介できるようにしたい場合など、役に立つかも知れませんね。


データ型の一覧を見ると、もう一つ「ルックアップウィザード...」というのがあります。これはデータ型ではアリマセン。
他のテーブルの内容を参照して入力できるような仕組みを、自動的に作りましょう、という機能のことですね。


 (読み終わりましたら、ブラウザの[←]戻るボタンで、戻ってください)