Please visit our sponsors.
スポンサーも訪れて下さい

★MSアクセスウエッブカレッジサンプル(ダウンロードする)|業務統合4in1小さな会社用『感嘆!』  
▲▲MSアクセスバグ発見イベント▲▲

・・・サブフォームを使った図書貸出システムに学ぶ


  • あのマイクロソフト社が作った自慢のソフトにもバグはありました。今回は、めったにお目にかかれないビッグソフトのバグをお楽しみ頂きます。このバグはアクセス97(多分最新バージョンでもおこるはず?)のものです。アクセス2000では、さてどうなったか、今度はご自分で発見して、結果をメールください。
  • バグは、サブフォームにおいて発生するので、ついでにサブフォームを勉強します。個人に貸出した図書の管理をするシステムを事例紹介しながら、バグ発見から修復の過程を十分お楽しみください。それでは早速説明に入ります。

ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

1 システム概要

  個人に貸出した図書を入力して、その人の最新貸出日を管理するシステムです。今回の主目的は、バグですので、図書館システムは、ほんのさわりで、まだまだ足さなくては使えませんが、システム作成の大きなヒントを示しています。

2 テーブル

  1. 氏名テーブル
  2. 貸出テーブル

3 フォーム

  1. 氏名フォーム
  2. 氏名テーブルのフォーム

今回作成するものは、以上のみです。少ないですね。

安心しました。さあでは作りましょう。

作成手順1  データベースの作成

テーブルの作成前に、今回のためのデータベースを作成します。ファイルから新規作成を選択、新しいデータベースの名称で画面に表示されます、データベースを保存する場所を選択データベース名を「バグ発見」としましょう。

データベースそのものを作成できない方、バグではありません。貴方の操作に誤りがあります、マニュアルなどでゆっくりもう一度挑戦してください。

 

作成手順2 氏名テーブルの作成



新規テーブルの作成は、デザインビューで作成します。

  • 項目名:氏名番号を作成します。氏名番号、数値型、インデックスは「重複なし」上記画面のように設定します。重複無しとは、氏名番号が同じものは1つしかないということです。電話番号のようなものです。氏名および住所をテキスト(文字タイプ)に設定します。



テーブル名を「氏名テーブル」とします。作成手順2  貸出テーブルの作成次に、図書の貸出しデータを入力するテーブルを作成します。

テーブルをいくつどう作るか、なぜ分けるのかなど疑問をもたれるかたもいるでしょうが、そのうち、そのうちわかってきます。

  • 貸出テーブルの項目は下記にとおりです。

注意する点は、氏名番号です。氏名番号は、数値型、重複ありに設定します。これは、一人の人が、複数の本を借りると想定するからです。一人1冊しか貸出さないことにしたい場合は、これを重複無しにすれば、貸し出し図書は1つしか入力できません。間違って複数貸出しが出来なくなります。

  • だから、この項目は必ず「重複あり」とかなしでなく意味があって決められるものなのです。リレーショナルというのはこのあたりを示すものですが、頭が痛くなるので今回は、パス、パス。解りにくいところは飛ばす勇気も大事です。勇気は十分ですか?
  • 今日日曜、朝早く起きて作成しています。朝なのに暑いです。早く終わらせて、テニスに行きたいのですが、9時までに終わりそうもありません。ここまでの作成に、約3時間かかっています。1回のマガジンは5時間で作成が目標です。

作成したものをメールするのに、約3時間(編集も含め)かかりますが、これは仲間に頼みます。さあ続き、やりましょう。テーブルは出来ました。

次はフォームを作ります。


作成手順3 氏名フォームの作成

今回のポイントはフォームにあります。メインフォームとサブフォームがポイントです。

  • サブフォームとは、メインフォーム(単なるフォーム)の中に作成スルフォームをいいます。フォームの新規作成から、フォームウィザードを利用します。基になるテーブルに氏名テーブルを選択してOKクリック。

上記画面で、テーブル名が氏名テーブルになっていることを確認。もし違っていたら,最初からやりなおし。ご苦労様です。最初開いた画面は上記のようになっています。

次の操作は、左の項目(フィールド)を右の選択したフィールドに移す操作です。ここでは、全部を移動させます。真中のボタン>>をクリックします。

選択後が上記のようになればOK。操作が確実ですね。


うまく行かない方、少々気が短いですね、特に初心者は

急がば回れ、思い違いのないようにゆっくり,ゆっくり。


上記画面でOKをクリック、下記画面にいきます。

 

フォームの形式選択ですが、ここでは単票を選択して次へ進めてください。

フォーム名を氏名フォームと書き換えます。名前はそのままでいい、変えたくないという方、後悔します。騙されたと思って私の言うとおりやるほうが幸せが早くやって来ます。きっと…・

  • 出来ました!!氏名フォーム

何も手を加えない、フォームです。シンプルですね。フォームの編集(文字、レイアウト、色,サイズなど自在に行えますが、そんなこと承知か?あはは、すいません。

ここでは先を急ぎますのでそのまま。レイアウトに懲りたい方ここは我慢。

ここで一度、作成したものを保存してください、ファイル保存するを選択して、最初のデータベース画面に戻ります。作成途中でも、ファイル変更保存しますか?きたら保存しておいてください。私は、作成中、内容を変更するとすぐその場で、ファイルから上書き保存を実行しておきます。

作成手順4 貸出サブフォームの作成

いよいよ、問題のサブフォームを作成します。



まず、メインのフォームをデザインで開きます。そして下記のように、下の部分をサブフォーム用に適当に広げます。

 

  • 上記画面で、画面左側にツールボックスが表示されています。その中から、上記下に表示されているサブフォームをクリックしてそのまま、上記画面の空いているところにドラッグしてください。ウィザードが動いてサブフォームの作成モードに入ります。
  • 作成モードに入らない場合:原因1は、ウィザードモードになっていない、これは、ツールボックスの一番上のほうの

矢印のしたのボタンをクリックしてモードを変えてください。

ツールボックスそのものが表示されない場合、ツールバー設定で頑張ってください。今回はお付き合いできません。

ウィザードがしっかり動けば下記画面が表示されます。万歳

 

途中の画面でーテーブルを基に作成を選択します

下記画面でまず、テーブルの選択で上記のように「貸出テーブル」を選択します。必ず貸出しテーブルです。



もしサブフォームで内容の間違いがあればここのテーブル選択です。次にフィールドの選択です。これはさっきメインフォームで体験すむです。同じように全部選択して、右側に移動させてください。

 

次へをクリックすると次の画面が表示されます

こんな画面見たことない?

そうです、貴方も、アクセスの極意に近づいているのです。

え!もう極意、簡単ななだなと思う方、いい性格だと思います

 

  • 上記画面はメインフォームとサブフォームを関連付けるところです。上記画面と同じように設定してください。意味としては、メインフォームとサブフォームは氏名番号でくっついているという意味です。テーブル作成時、インデックスを作成し場合、自動ではIDとIDをリンクします、となりますが、「独自に設定する」を選択して、上記画面で設定にしてください。
  • 次へを押して、サブフォーム名はそのまま変更しないで終了してください(サブフォーム名は氏名テーブルのサブフォームです多分)

これで、準備完成.です。

  • 準備完了、早速データを入力しましょう。
  • 氏名フォームを開いてページ送りしながら入力します。

上記のように適当に,数人、図書も適当に入力します。

必ず、貸出日の月日を変えて入力してください

  • うまく行きましたか?なんですか、バグの話はどうなったか?そうです忘れてはいません、私も早くそれをやって終わらせたいのです。出しおしんでるわけでなく、この手順が最低どうしても必要なのです。ほんと大変。疲れた人は、ここでコーヒータイム、好きな人がいる人は、モジメール。

少し古い奥さんしかいない人は、黙って自分でコーヒータイム。独身若い貴方は休まづ先へ進みましょう。

*******************

作成手順 5 バグ発見その1

○氏名フォームをデザインで開く

上記画面で、ツールボックスのテキストボックスをクリック


氏名フォーム上部の空きのてきとうな所へドラッグ。

下記画面が出るので、そのまま完了クリック。

いろいろ設定は、今回省略。


上記画面にテキスト非連結のフィールドが作成されました。

テキスト番号(ここでは14)は何番でもOK、パソコンの

状況によって、又は貴方の作成失敗の回数によて異なりますが

バグ発見には関係ありません。気にせず先へ。

  • 作成された非連結ボックスに式を入れます。

作成したテキストボックスをクリックして、表示からプロパテイを選択上記画面になります。

プロパテーボックス(下記)が表示されます。

コントロールソースをクリックしてください・

下記画面で、テキストボックスの表示のもとのなる式を入力します。

 

上記は、式を入力する画面です。

まず画面左下で、表示するフォームを選択します。フォームは階段式に表示されます。

ここでは「フォーム」クリック「読み込まれたフォーム」又はすべてのフォーム」をクリック、氏名フォームが出たら、その氏名フォームをクリックすると、貸出テーブルのサブフォームが出ます。フォームの選択は完了。次は右の欄に移って、
いま表示されている中から、貸出日をクリックすると、上部空白欄に、下記のように表示されます。

これでOKをクリック。フォームを保存しながら閉じます。

作成テキストのコントロールソースは下記のようになっています。

  • テキストボックスが作成されました。氏名フォームを

開きます。バグが表示される瞬間です。

  • #Name?が出ましたか?出ないもう一度式をじっくり確認してください。
  • #Name?はバグのメッセイジではなくエラーの表示です。ただこのエラーが実は、原因がバグにあるのです。

何だこんなもの、なんて言う方は,あとでだんだんこの重要性がわかってきます。

******************

作成手順6 バグの解消方法

バグがこのままでは、業務に利用するシステムはほとんど作成できないでしょう。


バグを直す方法を紹介することが出来ます。

  • 下記画面はバグ修正後の画面です。わかりますか?

コントルールソースの内容が修正されています。

(修正前)

= [貸出テーブルのサブフォーム].フォーム![貸出日]

(修正後)

=[貸出テーブルのサブフォーム].[Form]![貸出日]

わかりましたね。上記フォームを[Form]にしただけです。

完全に、同じ状態に内容を書き換えてください。

表示させて、上書き修正でもOkです。

今度は、年月日が表示されました。

バグの修復が出来ました。アクセスそのものが直ったわけではないので上記のような利用場合(サブフォーム利用)その都度修正していかなければなりません。

この修正が必要な場合はサブフォームのデータを利用する場合にはすべて必要になります。

今回の場合、ここに貸出日を表示する必然性が希薄ですが、実務面では相当必要なケースが存在します。

  • そこで、貸出の最終日を表示する方法を、追加してあります。元気のある方は、サンプルを参考に挑戦してください
  • ダウンロードサンプルには、ここまでを含んでおきます。
  • そのためには、貸出サブフォームと氏名フォームのフィールド追加が必要です。

貸出フォームにテキストボックスを作成してコントロールソースに、下記式を設定します。

 

これも式にバグがでますから正しく修正します。

MAXという関数を使いますが、ここでは文字を入力してください

  • 次に氏名フォームに新しいテキストボクスを作成して、コントロールボックスに下記のような正しい式を入力します。(テキスト番号はサブフォームに作成した番号になります)

 

これが完成画面です。

  • 上の日付は、サブフォームの選択レコードのものです

青の下の欄が追加作成したもので、最新貸出日が表示

されてす。

  • 今回はこれで終了Dす。全部で5時間半の作業です。
  • 皆さんも頑張ってください

○元気のでる応援メールくださーい。

戻る