サイタパソコン教室・IT資格マイクロソフトOffice(オフィス)使い方講座Access 東京 AccessPro大親切スクール レッスンノート 業務内容のデータベース化

業務内容のデータベース化

Access(アクセス)使い方講座のレッスンノート

レッスンノートって?レッスンノートって?

作成中のAccessフォームに難があるとのことでしばらくぶりのご連絡をいただきました。新規レコード追加時に総レコード数の表示が更新されないことと、サブフォームの中からのタブ移動が意図どおりに動かないことが問題です。
フォームを拝見しながら業務内容の説明を行っていただきましたところ、お話が進む中で、作成途中のフォームの元になっているテーブルの構成に問題があるように思われてきました。むしろそちらの方が大きな問題で、またそれを解決することで、現行、複数設置されているサブフォーム間のタブ移動といった問題には直面せずに済むことになるのではないかという見通しが出てきました。

一連の業務をAccessのシステムに載せるためにはいくらかの経験と慣れが必要であるように思います。WordやExcelですとそれらの操作方法を学べばすぐに文書や計算表を作れるようになりますが、Accessの場合は、操作方法を勉強してもそれだけで業務システムが作れるようになるわけではなさそうです。このところがAccessでは一番難しいことなのかもしれません。

お話を伺いながら紙と鉛筆で業務構造を整理し、どのようなテーブル構成と入力フォームにすることが適当かをいろいろと相談しました。その結果、現在の4テーブルに基づいた1メインフォーム+3サブフォームではなく、2テーブル(あるいは4テーブルを2クエリとする)による1メインフォーム+1サブフォームの構成が最も適切という結論にたどり着くことができました。
このタイプのフォームですと以前のレッスンですでに扱ってこられましたので修正も難しくないですね。ただ今回は易しいフォームにするためにテーブル構成を考え直したというのではなく、あくまでも業務内容をAccessの上でシステムとして実現するための最適な構成を考えた結果です。
今回作成してこられたフォームは、これまでExcelで行ってきた入力のイメージを元にして指示を受けたものということでしたが、Excelでのデータ構造をそのままAccessに持ち込むとうまくいかないことが多いものです。
Accessではデータ間の「1対多」関係を扱う仕組みがありますので、その仕組みを業務データに見つけ出してテーブルを分けていくことが重要です。このあたりはAccessの操作の勉強とは別の学びが必要な部分ですので、機会がありましたらまたレッスンで学んでいただければと思います。

なお時間の関係で十分に扱えなかった総レコード数の表示についてですが、テキストボックスのデータソースに=Count("*")-[NewRecord]が設定されていましたが、この式はこれでOKです。NewRecordは新規レコードのときに「真」となるフォームプロパティに関連するもので、「真」は数値で-1になるのがAccessの決まりです(「偽」は0です)から、これを利用して総レコード数-(-1)とすることで、総レコード数+1のカウントを実現しているということです。
これは新規レコードの時に自動更新されませんので、このテキストボックスを、レコード移動時イペントでMe!テキストボックス名.Requery とする必要があります。ただしこの設定だけですと、新規入力時はうまく総レコード数が増えてくれますが、そこからPageDownキーなどでレコードを前後させた時に、今回ご相談いただいたレコード数が増えないままという状況が再現してしまいますので改善策としては不充分ですね。さらに改善が必要です。

余談になってしまいますが、私は以前からフォームでの[CurrentRecord]やレポートでの[Page][Pages]の正体について知らないままにしていることが気になっています。今回のフォームに使っておられた[NewRecord]も同じ仲間ですね。これらがフォームやレポートのプロパティに関連したものであることはわかるのですが、プロパティならばMe.Pagesと書かなければならず、実際、VBAの中ではそのように記述して使います。しかし[Pages]というように両端に[]があるのはどうしてなのでしょう。まるでフィールド名のようです。フォームやレポートには自動的に作られる隠されたフィールドがあるということなのでしょうか。いずれにせよ簡単に使えるものなので問題にする必要はないのですが、わからないままというのはどうも気分のよいものではありませんね。
このレッスンノートを書いたコーチ

重要な操作を効率よくレクチャー。データベースの基礎~VBAまで

新着レッスンノート

受講のために遠くから来京していただきありがとうございます。東京はまだコロナが蔓延している状況ですので、レッスン受講にも気後れされたことと思います。 今回は受注管理システムのフォーム作成の続きを行いました。 受注伝票のヘッダー部分に表示する「得意先」などをマスタテーブルから引用するコンボ...

名簿を管理するシステム作成の続きです。FileMakerProからデータを移行し、その後ご自身でカード型フォームにコンボボックスを置いて検索する仕組みを作成して、すでに現場で運用を始めているとのことです。機能としてはまだ不十分なものの実際に使えているということです! 今回はDatedif...

受注、加工、在庫を管理している現行システムの代わりとなるものをAccessで作成したいとのご要望です。前回までのレッスンでクエリ操作の全般を終えていますので、今後はレッスンで学んできたことを確認しながら実際のシステムを作成していきたいと思います。 受注伝票に関係するテーブルを作成しました...

前回からリレーショナルなデータを扱う上で欠かせないデータ間の関係について学んできました。今回はやや難しい多対多結合を確認しました。 一対多関係では、マスタデータ同士での一対多、トランザクションデータ同士での一対多、マスタデータとトランザクションデータ間での一対多を確認しましたが、それと同...

期間が空きましたがレッスン再開です。前回までに主に1つのテーブルを対象としたクエリ操作を終えましたので、今回からは2つのテーブルを横につなぐ結合クエリのレッスンに入ります。 Accessでは操作する対象を意識することが理解の早道です。1つのテーブルを扱う、あるいは2つのテーブルを縦に結合...

レッスンノート ページ先頭へ