9) フォームを使ってデータ入力
このフォームを使って、新規に会員データを追加入力してみましょう。
入力した後、「データシートビュー」で入力したときと、どっちが入力しやすいか、考えてみてください。機能的な違いとか仕様ではなくて、皆さんご自身の感想ですよ。使ってみた感想って、大切ですからね。
新規レコードへ移動
フォームをフォームビューの状態で表示します。
左上の「表示」のところのボタンでしたよね。右図の絵柄が、フォームビューへの切り替えボタンです。
フォームビューになりました?
図1:フォームビューに切り替えてデータ入力をしよう
フォームのデザインを変更したいときはレイアウトビューまたはデザインビューに切り替えて、フォームを使うとき(データを入力したり照会するとき)はフォームビューに切り替える・・・このリズムを忘れないで下さいね。
また、「今、何ビューなのか区別が付かない」という場合は、画面左下のほうのお知らせ表示をチラッと見るクセをつけておくといいですよ。慣れてくればちょいと見ただけでフォームビューかレイアウトビューか区別が付くようになりますから、慣れるまでの間、まごまごしそうだったら、左下をチラ見です。
”フォームビュー”とか、書いてありますよね。
さてさて、本題に戻りまして、フォームビューに切り替わったら、まず、フォーム全体を眺めてください。
え?言われなくても眺めてるって?おお、それは失礼。
フォームビューにすると、特に何の指定もしていなければ、基になるテーブル「会員テーブル」の一番最初のレコードが表示されます。「会員テーブル」は会員番号を中心としたテーブルなので、一番若い会員番号を持つ人のデータが表示されるはずです。皆さんの画面でも、”会員番号0001の織田信長さん”のデータが表示されてると思います。
特別な仕掛けを施さない限りは、フォームを開いた直後は1件目のデータが表示される仕組みになってるので、そういうものだと理解しておいてください。特別な仕掛けって何かって?それは今は言えませんよ。フォームの作り方とか基本的な操作に慣れてきたら、そういう仕掛けを施したフォーム作りにも挑戦しましょう。後のお楽しみです。
で、新規に追加したい場合は・・・
フォーム下部分の「移動ボタン」に注目です。
同じ形のボタンが、テーブルを作ったときの「データシートビュー」にもありましたよね。同じものがフォームでも表示されるんです。
右端のほうにある「新規レコード追加」のボタンをクリックしましょう。
新しくデータを追加入力したいときは、このボタンをクリックします。
図2:
そうすると、織田さんのデータは無くなって、まっさらな状態になります。
織田さんのデータが消えたわけではありませんよ。下のほう、移動ボタンに注目してください。
「会員テーブル」には、おそらく115件のデータが入っていたと思います。なので今回の場合、新規にデータを追加するということは、116件目のデータを入れる、ということになるんですね。
なので、今、「会員テーブル」の116件目のデータを表示している、という状態なんです。
ボタンをクリックしたことで、1件目から116件目へポーンと移動した、ってわけなんです。
図3:116件目、つまり新規入力行が表示される:
入力
では、入力しましょう。
入力自体は別段特別なことでもなく、データシートビューと同じ要領です。要は、”見え方が違うだけ”ってことなんですよ。
まず、会員番号を入力しましょう。”0116”です。
図4:新規会員の会員番号は0116だそうだ
新規会員は「カエルダケロ」さんです。
ええと、あれ?ふりがなって、ひらがなで入力してたっけ、カタカナだったかな・・・。
まあ、どっちでもいいや。カタカナで入力しちゃえ。
郵便番号のテキストボックス内の入力も、テーブル作るときに設定した定型入力の機能が生きてるはずです。どうでしょう?
図5:新規会員の会員番号は0116だそうだ
「郵便番号」は定型入力プロパティの設定をしていますので、郵便番号専用の項目となっています。記号とかアルファベットは入力できませんよ。必ず、1とか2とか、半角の数字を入力してくださいね。
「チーム名」も、一覧から選択することができるようになってますね。蛙田ケロさんはかもめチームなので、一覧から”かもめ”を選んでください。
この、クリックすると一覧がペロッと出てくるタイプのコントロールのことを、「コンボボックス」って言うんです。
このフォームには、
・ラベル
・テキストボックス
・コンボボックス
と、3種類のコントロールが存在することになりますね。
どれがテキストボックスで、ラベルってのはどういう役割のコントロールなのか、おさらいしておいてくださいね。
図6:新規会員の会員番号は0116だそうだ
ESCキーはUndo レコード追加・編集の取り消しの合図
さてさて、再び、フォームの横っちょに注目してください。
データシートビューのときもチラリと確認していただいた”エンピツマーク”、フォームビューにもありますね。
このエンピツマークが出ている間は、まだこのレコードは「会員テーブル」に完全に溶け込んでない状態、ってことになるんです。”追加中”または”編集中”ってことになるんですけどね。
このエンピツマークは、他のレコードにカーソルを移動したり、このフォームを閉じたりすると消えて、自動的に「会員テーブル」の正式なデータとなります。エンピツマークの有り無しが合図ってわけなんです。
図7:エンピツマークがあるうちはまだまだ
つまり、この状態のときはまだ、入力を始める前の状態に戻せる・・・言い方を変えれば入力・編集内容を取り消すことができる状態、っていうわけなんです。
せっかく入力していただいたのにもったいないですが、レコードが取り消される様子を見ていただきたいので、入力内容を一度破棄します。
キーボードのEscキーを押してください。
すると、右図のように、蛙田ケロさんのデータを入力する前の状態に戻ります。つまり、116レコード目の入力はキャンセルされたということですね。
エンピツマーク中は、まだそのレコードは”保存されていない状態”ということになります。
今回のように新規レコード入力中なら、空の状態に辞戻ります。
チーム名を変更したり、住所を書き換えたりと、データの変更している最中なら、変更する前の状態に戻ります。
図8:エンピツマーク中にEscキーを押すと、入力内容が取り消されるのだ
主キーは重複を許さない
せっかく入力していただいたのにキャンセルさせてしまって、すみませんでしたねぇ。
それじゃ改めて、蛙田ケロさんのデータを入力しましょう。
ええと、蛙田さんの会員番号、何番だったっけ。
011....うーんと、いいや、適当で。0115とかそんな番号だったような気がする。新人さんなんで、自分で自分の会員番号がまだわからないみたいなんですよね。
住所と電話番号と、生年月日と、チーム名を選んで、と・・・。
図9:会員番号0115は、確かもう既に使用済みのはずだけど・・・
蛙田さんの情報の入力は完了です。
もう一人新規会員のデータを入力したいので、例のボタンをクリックして・・・
図10:会員番号ダブり疑惑のまま、次の入力をしようとすると・・
図11:このテーブルで「会員番号」をダブって入力すると、こんな仰々しいメッセージが・・・
・・・・・。
なんか、妙なメッセージが出てきましたですね・・・。
インデックス、主キー、またはリレーションで値が重複しているので、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。
えらく小難しい内容のエラーメッセージですね・・・。
まあでも、このメッセージ見ていただきたくてわざと間違い入力をやらかしただけなので、まずは落ち着いてこのメッセージの内容を眺めてください。別に異常事態でも何でもありません。皆さんがが悪いんです。え?そりゃあんまりだろうって?
ははは。いや、申し訳ない。今のは、会員番号をわざとダブって入力させた私が悪いんでしたな。
このエラーメッセージの対処についてお話しする前に、Accessのエラーメッセージなどについて少しお話させていただきます。
ちょいと長くなりますが、ご容赦ください。
<Accessのエラーメッセージについて思うこと>
エラーメッセージの大半は、作り手側の凡ミスや勘違いによるものなんです。
でも、Accessのエラーメッセージは、少々わかりにくい。間接的だったり、原因となる箇所とのつながりがイマイチわかりにくかったりするので、エラーが出ると人のせいにしたり、自分は何もしていないのにと文句を言ったり、スルーしてしまう人が多い。エラーメッセージの文言が、今現在自分が直面している状況とかけ離れているために、エラーの原因を探ろうという気持ちが失せる傾向があるのかもしれないな、と。私個人の感想ですが・・・。
コマゴマといろいろな作りこみができるソフトなので、メッセージの文言も、そうそう”至れり尽くせり”というわけにはいかないのかもしれないですね。
とにかく、そういうこともあって、Accessでデータベース作成中にエラーが出ても、調べようとしない人は多い。確かに今のご時勢、大声で叫べば誰か助けてくれるかもしれませんし、他人に調べさせるほうがラクだと思う人もいるのかもしれませんが、自分で何とかできるものは何とかしたいと考えている人もいるんじゃないか、と、うっすら希望を抱いたりもしています。
最初のうちにエラーメッセージに対して、ある程度免疫を作っておくと、冷静に対処できるようになるものなんですよ。
Access2007は、
テーブルにしてもフォームにしてもオブジェクトの作成手順は、今までのAccessのバージョンに比べると格段にカンタンお手軽に作れるようになってます。たぶん、データベースや開発ソフトなどの使い方に慣れていない人でも、誰でもカンタンにデータベースが作れるように・・・ということなんだろうと思いますが、でも、エラーメッセージの文言は昔のまま。カンタンお手軽操作で、詳しい知識が無くてもデータベースを作ることはできるかもしれませんが、いざエラーが出たとき、逆に対処に困ってしまう・・・そういう人も少なくないようです。
多少は小難しいことも理解しないと、結局、使いこなせることにはならない・・・と、私は思うんですけどね。
その筆頭が、このエラーメッセージです。
まず、この段階で(今までの手順でテーブルの作り方などを一通り習得した段階)、”主キー”とか”インデックス”とか”重複”とか、ひとっことも出てきません。Excelと同じような感覚でカンタンにテーブル作らせておいて、「Accessはカンタンですよー初心者でも使いこなせますよー」と微笑んでおきながら、データ入力するとき、主キーというものの意味や役割を知らずに「会員番号」をダブって入力してしまった利用者に対してこのメッセージをバーン。
いきなりハードルを上げるMicrosoft。ベタなコントに近い展開です。
「何これ、ワケわかんないメッセージが出るんだけど?」
利用者が眉をひそめ、「Accessって不便。使いにくい」と吐き捨てて、その後二度と使用しない。
わかるような気もします。
でも、どうか皆さんはそうならないで。
このメッセージが出るのには理由があるんです。でも、今までの作業のやり方では、その理由にも原因にも一切触れずに進めることができてしまいます。ちょっぴりMicrosoft批判みたいなことを言っちゃいましたが、これって結局、使う人への愛情なのかなって思うんです。”主キー”とか”インデックス”とかって、ちゃんと理解するとなるとかなり難しいものなんですよ。”テーブルを作るための操作”はカンタンでも、”どういうテーブルを作るべきか”ってトコは、すごくすごく高い技術が必要なんです。
だから、最初はこういうものに触れずにデータベースを作成できるように、あれこれ工夫しているんじゃないかと思うんですよ。テンプレートとかゴロゴロ用意されているのも、そのためなんじゃないかと・・・。
愛情ってなかなか相手に伝わらないものなんですよね。。。
と、話が長くなってしまいましたが、そんなわけで、わけわからないメッセージが出ても、投げやりにならず、焦らず、人のせいにせず、冷静に対処するよう心がけてください。
エラーメッセージをYahoo!やGoogleでヤホったりググったりすれば、同じメッセージで困っている人の体験談とか、対処方法とか、ゴロゴロ出てきますよ。そういうのいくつか読ませてもらっているうちに、対処方法も見えてきますし、気持ちも楽になってくるはずです。Access使ってる人は多いですからね。
ユーザー数が多いこともAccessの強みのひとつです。一千万の味方がいるんですよ、皆さんには。だいぶ大げさだけど。
ではでは、本題に戻りまして・・・。
このメッセージが何を意味しているのかと、このテーブルに(フォームから)データを入力するとき、気をつけなければいけないことは何か、等等、お話いたします。とっても奥が深いことなので、今日のところは、「何を気をつけなければいけないのか」という点だけ理解してください。
テーブルのデザインをもう一度見てみましょう。
「会員テーブル」は閉じてあるので、開かないといけないですね。
ナビゲーションウィンドウから「会員テーブル」を右クリックし、「デザインビュー」を選択してください。
図12:テーブルをデザインビューで開いて、詳細を確認しよう
すると、
テーブル”会員テーブル”にバインドされているオブジェクトが開いているため、他のユーザーがテーブルを開いています。テーブルを読み取り専用で開きますか?
という、物々しいメッセージが表示されると思います。
ほら、ここで慌てて「何これ!どうしたらいいの?何もしてないのに!」と取り乱したりしないことですよ。
メッセージの文言はハア?って感じですが、ちゃんと意味があるので、ここで嫌になったり、「Accessなんか使いにくい」とかネットに書き込みしたりしないように気をつけてください。
図13:ものものしいメッセージが出ても取り乱したり絶望したりしないで、よく読んで状況を理解しよう
今、「会員テーブル」を基にしたフォーム、開いてますよね?
つまり、 「会員テーブルを基にしたフォームが開いている状態なので、会員テーブルのデザインとか、プロパティとか、データ型などを変更すると、そのフォームにも影響が出てしまうかもしれませんよ。だからすんなり開くわけにはまいりません」 と、言っているんですね。まあ、AccessはAccessでいろいろ考えて、良かれと思ってやってるんですから、あまり悪く思わないでやってください。なべ奉行みたいなもんです。
で、今日は、主キーの状態を見たいだけなので、読み取り専用でもOK。「はい」のボタンをクリックして先に進もう、ってわけです。
メッセージ、難しいよなぁ・・・。まあ、今日は、半ばわざとこの手の警告メッセージを出して免疫を作っちゃおうとしてるフシもあるので、普段はこんなメッセージ、見る機会もないと思いますけどね。大丈夫。安心してください。
さてさて、本題に戻りまして、
デザインビューに切り替わったら、「会員番号」フィールドに注目してください。
ちょっとしたマークがついてるんですが・・・。
これが、「主キー」のマークです。
このテーブルが、このフィールドを中心に成り立っていることを現しています。
え?人の形に見える?
違いますよ。かぎです。鍵。KEY。鍵の形ですよ。人じゃありませんって。
そんなこと言うと、人に見えてきちゃうじゃないですかっ。
図14:主キーのマークに注目だ
このテーブルを作ったときのこと、ちょっと思い出してみてください。
この一番端のフィールド、最初は「ID」っていう名前のフィールドだったんですよね。
あの「ID」というフィールドには最初から主キーの設定がされてたんですね。どうやら、Accessはどうしてもテーブルに主キーを設けてほしいようです。
しかしなぁ。主キーってちゃんと意味があるものなので、「IDとかいう名前で適当にフィールド作っとこう」みたいなノリはよくないと思うんですけどね・・・。
プロパティの様子を見てみましょう。
「会員番号」フィールドをクリックして選択した状態で、画面下部分のプロパティの一覧を見てください。
「インデックス」っていうプロパティがあるんですが、「重複なし」ってなってますよね。主キーに設定したフィールドは、必ずこうなってます。
テーブルの中心的存在ですからね、ダブってたらしめしがつきません。もちろん、未入力なんてのももってのほかです。
さっきのメッセージは、この設定に反したから、出たんですね。
図15:インデックスとは?・・・後日学習するとしよう
主キーについて、ちょっとだけ余談です。
「変なエラーが出るから」という理由で、テーブルに主キーを設定しない人も結構いるんです。
しかしそれはちょっと・・・Accessのデータベースとしては、主キーが無くてもデータの入力はできるし、動作するかもしれませんが、リレーショナルデータベースとしてはあまり、いただけないことです。
それに、Accessから離れて考えてみても、「会員番号がダブってもかまわない」ということになり、そもそもこのサークルのあり方を問うことにもなりそうです。
このサークルは人数が多いし、顔を合わせたことのない人もいます。人数が増えてくれば同姓同名の人も入ってくるかもしれないし、名前や雰囲気だけで会員の識別や管理を行っていると、勘違いや間違いが起きたり、資料を別の人に送ってしまったり、混乱が起きる可能性もあります。
そこで、名前とか顔とか雰囲気とかじゃなくて、もっと機械的な事務的なやり方で個人を識別できるよう、「会員番号」というものを設けたのです。Accessでデータベースを作るとかいう話よりずっと前から、「会員番号」は重複しない、ダブらない番号を振るものだと決まってるわけなんですよね。
で、Accessでデータベース作ったとき、「会員テーブル」っていうテーブルに会員のデータを入れることにして、「会員番号」っていうフィールドを主キーにしたわけなんです。
別に、Accessのためにわざわざ設けたものではないんですよ。主キーって。データベース化したい業務(今回の場合は、このサークルの会員の管理)に必要なことを形にしただけなんです。
で、その約束事を破って、同じ会員番号をダブって入力したから、例のインデックスがどうしたこうしたというエラーメッセージが出た・・・というわけです。あ、ええ。今回はわざと、私がそう入力してくださいとお願いしたから、ですけどね。ええ。
主キーってすごく堅苦しく考えている人も多くて、テーブルに付けたがらない人も多いんです。
「気をつけて入力していれば、会員番号が重複することもないし、別に必要ないんじゃない?」っていう人も。
この辺が、正しく理解することが難しい点なんですが、結果の話をしてるんじゃないんですよ。結果的に、会員番号がダブらなければいい、という意味ではないんです。
主キーとは、Accessと皆さんの間に交わされる「約束事」なんです。「会員テーブルに於いては、今後未来永劫一切、会員番号がダブルことは絶対にないことをお約束します」と、皆さんがAccessに対して約束した証と考えてください。今現在入力されているデータがダブっていないことを証明するものではなくて、データが入っていようがいまいが、今後、一切重複しないことをAccessに約束し証明するための設定・・・・そう理解してください。皆さんがそう約束することで、Accessはさらに実力を発揮します。
実のところ・・・テーブルがひとつだけのデータベースでは、確かに、主キーはあってもなくてもあんまり違いは無いんです。
テーブルを二つ三つ・・・たくさん作らなければならない場合に、主キーをきちんとつけておくことで、Accessはリレーショナルデータベースとしての仕事をしっかりと果たせるようになります。
なので、テーブルを二つ三つ作るような業務と向き合わないと、主キーの必要性がイマイチ理解できない、という意見も、ごもっともなんですよね。主キーの役割は、もうちょっと規模の大きなデータベースを作っていかないとなかなか見えてこない、と理解いただいて、今回はとにかく、Accessの基本的なことを理解するに留めておきましょう。
ちょっと踏み込まないと、「今はまだ踏み込まなくてもいいんだ」ということが理解できない、というのも、なかなか歯がゆいものですが・・・。とにかく、Accessなんか、根気強く使っていれば、短時間で使いこなせるようになりますから、自信を持ってください。
え??蛙田さん??えーと、どなたでしたっけ?
検索
主キーの話が長くなってしまいましたが、とにかくそういうわけで、データベースの理論的なところと、Accessの使い方と、両方をバランスよくちょっとずつ掻い摘んで理解していくといいかもしれないですね。なかなか難しいんですけどね・・・。
主キーとは??というところは、またいずれお話する機会があると思いますので、続きはそのときにお話いたしましょう。
次に、「検索」についてお話します。
データの入力だけでなくて、「○○さんの住所を調べたい」なんてこともありますよね。
フォームでのデータ検索は、自分で検索機能を誂えることもできるんですが(クエリとかマクロとかVBAとかを組み合わせで)、フォームに最初から備わっている検索機能も結構便利なんですよ。知って損はありませんよ。
ここでちょっと使ってみようと思います。
再び、フォームビューに戻りましょう。
フォームビューに戻るときは・・・左上のボタンでしたよね。
「表示」がフォームビューの絵柄になっていることを確認して、クリックします。
図16 フォームビューを表示するよろし
移動ボタンの右の入力欄に、検索したいキーワードを入力します。
例えば、”うしわかまる”とひらがなで入力すると・・・
図17 検索したいキーワードを入力
すると、”うしわかまる”という値を持つレコードが、フォームに表示されます。
牛若丸さん、会員番号0069、東京都xxx市にお住まいですね。
検索結果が数件ある場合は、一番最初に見つかったものが表示されます。該当するものがない場合は何も変わりません。
漢字が違っていると見つけられないので、字がわからないときはふりがなで検索したほうがよさそうですね。
ウチのサークル、なぜか難しい字の人が多いんですよ。
完全に一致していなくても、”神奈川県”というキーワードで検索すれば、住所に”神奈川県~~”と入力してあるデータを検索することができますよ。ただし、この場合、数名いるはずですから、そのうちの一番最初(会員番号が一番若い人)が表示されるはずです。
検索キーワードを変えて、いろいろ試してみてください。
図18 そのレコードがフォームに表示される。いろいろ試してみよう。
どうでしょう。十分、データの検索が可能ですよね。
これが、「キーワードの入力欄が目立たないので、フォームの上のほうに配置したい」とか「もっと大きくしたい」とか、そうしたいのであれば、こうした出来合いの機能ではなく、自分で検索の仕組みをイチから作る・・・ということになります。フォームだけではなく、クエリとかマクロとかVBAとか、そのほかのオブジェクト等の作り方もマスターして、それらを組み合わせることになるので、それなりに手間もかかります。「手間がかかっても、このフォームに沿った検索の仕組みを作りたい」という場合もありますよね。
でも、それはまた後日ということで・・・。
この、フォームに付いてる検索機能も、なかなか使い勝手がいいと思うんで、今日のところはこれを活用してください。
それでは、この「会員フォーム」の操作はこの辺で終わりにしましょう。
「会員フォーム」を閉じましょう。
右端の×ボタンをクリックしてフォームを閉じてください。
図19 「会員フォーム」を閉じる。メッセージが出たら「OK」ってことで。
もし、閉じるときに、”保存しますか?”というメッセージが表示されたら、おそらく、名前をつけて保存した後に、デザインを少し変更したのでしょう。
(コントロールを少し動かしたとか、プロパティをちょっと変えてみたとか、そういうことも”変更”扱いとなります)
保存が必要であればOKを・・・といっても、「必要かどうかよくわからない」と思われる方も多いと思いますので、右図のようなメッセージが出たら、「OK」ボタンをクリックしてください。
こういうのも、慣れですから、今日、理解できなくても投げやりにならないでくださいね。大丈夫大丈夫。
このページのまとめなど
- 「会員フォーム」は「会員テーブル」のデータを表示するオブジェクトである。
- Escキーで入力取り消し。レコードセレクタのエンピツマークをちょっとだけ意識しよう。
- 主キーとはこのテーブルの中心となるフィールドのこと。奥が深いので少しずつ理解していこう。
- データの検索には、フォームに付随する「検索機能」を活用していこう。
作成日:2008-12-29