- ベストアンサー
Accessで検索&入力 データの蓄積について
- Accessを使用して、歯科医院でのデータ蓄積を行いたい場合の方法やテーブルの作り方について助言をお願いします。
- 患者情報と処置履歴のテーブルをリレーションさせて、ウィザードを使用して処置履歴クエリを作成する方法を教えてください。
- 処置履歴テーブルにデータを入れてもクエリでデータが出てこない場合、テーブルの作り方に問題があるのでしょうか?超初心者のため、わかりやすく助言していただけると助かります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1、#3です。テーブルをドラッグ・ドロップで子フォームを作成したことはなかったので、試してみました。いくつか気付いた点 1.子フォームのレコードソース 「処置履歴」テーブルになっていますが、クエリにして並べ替え順を指定した方がよいでしょう。指定がないとDBがどのような順でデータを返すかは不定です 2.子フォームの表示形式 リストタイプ(データシートや帳票)でも良いでしょうが、単票にしてかつ日付降順にしておけば、最終レコードが表示され使いやすいかもしれません この問題に関し、さらなる疑問点などが生じた場合は、補足などで質問するより、新しい質問で投稿することをお奨めします。「補足」ではごく少数の人しか読まないし、従って回答も偏ったものになってしまいます。
その他の回答 (3)
#1です。親子フォームに関し、ちょっとサンプルを作ってみました。技術的には簡単ですが、作る課程を初心者向けに説明するのは、かなり長文になり大変です。親子フォームを解説する入門書沢山あるはずなので、そちらで勉強して、判らない部分を質問していただけないでしょうか? 取り敢えず無料の解説では http://www.btvm.ne.jp/~toyumi/foumu.html
補足
再度の回答 ありがとうございます。 親子フォーム、たどり着けました。 「処置履歴クエリ」を SELECT 患者情報.患者番号, 患者情報.患者氏名, 患者情報.フリガナ, 患者情報.生年月日, 患者情報.性別 FROM 患者情報 WHERE (((患者情報.患者番号)=[カルテ番号を入力して下さい])); と、変更しウィザードを使って 「患者情報フォーム」を作成しました。 ここに「処置履歴」テーブルをドラッグし 「処置履歴のサブフォーム」が出来ました。 こんな感じでいいでしょうか? サブフォーム部分はリスト状でOKでしょうか?
たぶん、リレーションの張り方の問題でしょう。 クエリデザインビューで、リレーションの線が矢印なしになっていませんか? この場合は、結びついている両方のテーブルにレコードが無いと表示されません(というか、両方に無いと表示されない、そういう種類のリレーションシップ)。 この線にカーソルをあてて、右クリックしてください。 手元にアクセスがないのでうろ覚えですが、「リレーションシップの種類」というような項目があります。 ここで「テーブル○○のレコード全部と、テーブル××の関連付けられたレコードを表示」というような(正確にはおぼえてません)種類を選びます。 分かりにくい文章なのですが、落ち着いて読めば意味がわかるはずです。 なお、こうして作ったクエリは更新できないクエリになるかもしれません。その場合は、入力のためには、No1方が提案されているように、親子フォームを作るのが便利です。
お礼
丁寧な回答ありがとうございます。 また お礼が遅くなってすみません。 リレーションですが 仰る通り矢印無しになっていました。 ご指摘頂きました親子フォームに挑戦したく思います。 初心者の私にも判るように 噛み砕いて説明していただき ありがとうございました!!
テーブルの設計は、ご呈示のもので、基本的に良いと考えます。 で、フツーは患者氏名をアイウエオ順に一覧し、その一人を選べば、処置履歴が見えるように作ったりします。しかし作成しようとしているシステムでは、カルテ番号が判っているので、一覧など必要ないということでしょうか? それならば親子フォームを作り、親フォームにカルテ番号を入力すると、子フォームにその患者の履歴一覧が表示され、これに追加もできます。そのようなフォームの作り方を知りたいのでしょうか? 後「処置履歴クエリ」の実体をSQL文でご呈示下さい。SQL文の表示方法が判らなければ、添付画像をご参考に。
補足
早速の丁寧な回答ありがとうございます。 また、お返事遅くなって 申し訳ありません。 ご指摘の通り カルテ番号は判っているので一覧は必要ありません。 親子フォーム! 初耳です!! そして ご提示していただいた方法、すごく魅力的です!!! 是非 知りたいです。お願いいたします。 「処置履歴クエリ」のSQLです。宜しくお願い致します。 SELECT 処置履歴.処置履歴ID, 処置履歴.患者番号, 患者情報.患者氏名, 患者情報.フリガナ, 患者情報.生年月日, 患者情報.性別, 衛生士マスタ.衛生士ID, 衛生士マスタ.衛生士名前, 処置内容マスタ.処置ID, 処置内容マスタ.処置内容, 処置履歴.処置日 FROM 処置内容マスタ INNER JOIN (患者情報 INNER JOIN (衛生士マスタ INNER JOIN 処置履歴 ON 衛生士マスタ.衛生士ID = 処置履歴.衛生士ID) ON 患者情報.患者番号 = 処置履歴.患者番号) ON 処置内容マスタ.処置ID = 処置履歴.処置ID WHERE (((処置履歴.患者番号)=[カルテ番号を入力してください]));
お礼
何度も丁寧に回答頂き ありがとうございました。 子フォームもご指摘の通り修復したお陰で無事作成できました。 今回作ったのをきっかけにさらに勉強していきたいと思います。 本当に ありがとうございました。