みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

accessで検索&入力 データの蓄積について

初心者なのですが どうぞ宜しくお願い致します。
accessに挑戦しているのですが判らないことが沢山あるので
お手すきの方 助言お願いいたします。

まず、やりたい事をのべます。
歯科医院での使用目的です。
1.カルテ番号を入力すると患者情報が出てきて
2.各歯科衛生士が毎日の作業(処置内容)を入力していきます。
 (内容は衛生士ID、処置ID、処置日)
3.患者は月に2回来る事もあるのでデータの上書きではなく蓄積させ
4.毎月締め日に各衛生士ごとの処置一覧をレポートで出したい。

それにあたり今現在進めている作業は以下です。
[テーブル]
「患者情報」
 カルテ番号、患者氏名、フリガナ、生年月日、性別
 データはすべてインポート済みです。レコードは5000程です。
「衛生士マスタ」
 衛生士ID、衛生士名前
 3人いるので 3レコード作ってあります。
「処置内容マスタ」
 処置ID、処置内容
 3種あるので 3レコード作ってあります。
「処置履歴」
 処置履歴ID(オートナンバー)、カルテ番号、衛生士ID、処置ID、処置日
 データを蓄積させる為のテーブルと思って作ったのですが
 そもそもこれはいらない??

上記4テーブルをリレーションさせ
ウィザードで「処置履歴クエリ」を作成。
カルテ番号の抽出条件に 
=[カルテ番号を入力してください]と入力、保存。

「処置履歴クエリ」でカルテ番号を入力するも
データ出てこないので ためしに「処置履歴」テーブルに
カルテ番号100でデータを入れてみました。
すると カルテ番号100を入れると出てきました。
って事は やはり「処置履歴」テーブルにはデータが入っていないといけないと言う事ですよね。

だとすると 私のテーブルの作り方が間違っていると…。

今 この段階で足踏みしています。

どなたか 超初心者の私に 噛み砕いて助言いただけたら幸いです。
どうぞ 宜しくお願い致します。

投稿日時 - 2009-08-12 19:23:50

QNo.5202262

困ってます

質問者が選んだベストアンサー

#1、#3です。テーブルをドラッグ・ドロップで子フォームを作成したことはなかったので、試してみました。いくつか気付いた点

1.子フォームのレコードソース
「処置履歴」テーブルになっていますが、クエリにして並べ替え順を指定した方がよいでしょう。指定がないとDBがどのような順でデータを返すかは不定です

2.子フォームの表示形式
リストタイプ(データシートや帳票)でも良いでしょうが、単票にしてかつ日付降順にしておけば、最終レコードが表示され使いやすいかもしれません

この問題に関し、さらなる疑問点などが生じた場合は、補足などで質問するより、新しい質問で投稿することをお奨めします。「補足」ではごく少数の人しか読まないし、従って回答も偏ったものになってしまいます。

投稿日時 - 2009-08-19 10:45:08

お礼

何度も丁寧に回答頂き ありがとうございました。

子フォームもご指摘の通り修復したお陰で無事作成できました。
今回作ったのをきっかけにさらに勉強していきたいと思います。
本当に ありがとうございました。

投稿日時 - 2009-08-19 18:49:30

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

#1です。親子フォームに関し、ちょっとサンプルを作ってみました。技術的には簡単ですが、作る課程を初心者向けに説明するのは、かなり長文になり大変です。親子フォームを解説する入門書沢山あるはずなので、そちらで勉強して、判らない部分を質問していただけないでしょうか?
取り敢えず無料の解説では
http://www.btvm.ne.jp/~toyumi/foumu.html

投稿日時 - 2009-08-18 13:43:14

補足

再度の回答 ありがとうございます。
親子フォーム、たどり着けました。

「処置履歴クエリ」を
SELECT 患者情報.患者番号, 患者情報.患者氏名, 患者情報.フリガナ, 患者情報.生年月日, 患者情報.性別
FROM 患者情報
WHERE (((患者情報.患者番号)=[カルテ番号を入力して下さい]));

と、変更しウィザードを使って
「患者情報フォーム」を作成しました。

ここに「処置履歴」テーブルをドラッグし
「処置履歴のサブフォーム」が出来ました。

こんな感じでいいでしょうか?
サブフォーム部分はリスト状でOKでしょうか?

投稿日時 - 2009-08-18 20:01:14

たぶん、リレーションの張り方の問題でしょう。
クエリデザインビューで、リレーションの線が矢印なしになっていませんか?
この場合は、結びついている両方のテーブルにレコードが無いと表示されません(というか、両方に無いと表示されない、そういう種類のリレーションシップ)。

この線にカーソルをあてて、右クリックしてください。
手元にアクセスがないのでうろ覚えですが、「リレーションシップの種類」というような項目があります。
ここで「テーブル○○のレコード全部と、テーブル××の関連付けられたレコードを表示」というような(正確にはおぼえてません)種類を選びます。
分かりにくい文章なのですが、落ち着いて読めば意味がわかるはずです。

なお、こうして作ったクエリは更新できないクエリになるかもしれません。その場合は、入力のためには、No1方が提案されているように、親子フォームを作るのが便利です。

投稿日時 - 2009-08-13 14:27:32

お礼

丁寧な回答ありがとうございます。
また お礼が遅くなってすみません。

リレーションですが 仰る通り矢印無しになっていました。
ご指摘頂きました親子フォームに挑戦したく思います。
初心者の私にも判るように 噛み砕いて説明していただき
ありがとうございました!!

投稿日時 - 2009-08-17 17:14:30

テーブルの設計は、ご呈示のもので、基本的に良いと考えます。
で、フツーは患者氏名をアイウエオ順に一覧し、その一人を選べば、処置履歴が見えるように作ったりします。しかし作成しようとしているシステムでは、カルテ番号が判っているので、一覧など必要ないということでしょうか?
それならば親子フォームを作り、親フォームにカルテ番号を入力すると、子フォームにその患者の履歴一覧が表示され、これに追加もできます。そのようなフォームの作り方を知りたいのでしょうか?
後「処置履歴クエリ」の実体をSQL文でご呈示下さい。SQL文の表示方法が判らなければ、添付画像をご参考に。

投稿日時 - 2009-08-13 10:13:16

補足

早速の丁寧な回答ありがとうございます。
また、お返事遅くなって 申し訳ありません。

ご指摘の通り カルテ番号は判っているので一覧は必要ありません。

親子フォーム! 初耳です!!
そして ご提示していただいた方法、すごく魅力的です!!!
是非 知りたいです。お願いいたします。

「処置履歴クエリ」のSQLです。宜しくお願い致します。
SELECT 処置履歴.処置履歴ID, 処置履歴.患者番号, 患者情報.患者氏名, 患者情報.フリガナ, 患者情報.生年月日, 患者情報.性別, 衛生士マスタ.衛生士ID, 衛生士マスタ.衛生士名前, 処置内容マスタ.処置ID, 処置内容マスタ.処置内容, 処置履歴.処置日
FROM 処置内容マスタ INNER JOIN (患者情報 INNER JOIN (衛生士マスタ INNER JOIN 処置履歴 ON 衛生士マスタ.衛生士ID = 処置履歴.衛生士ID) ON 患者情報.患者番号 = 処置履歴.患者番号) ON 処置内容マスタ.処置ID = 処置履歴.処置ID
WHERE (((処置履歴.患者番号)=[カルテ番号を入力してください]));

投稿日時 - 2009-08-17 15:50:41

あなたにオススメの質問