研究患者を追跡するために、MS Access 2007 (病院が持っているもの...) での 2 週間の経験を使用して、DB をゼロから作成しています。基本的な情報の流れは、開始画面から、新しい患者を入力するか、古い患者を見つけることができるようになります (それぞれボタンから) - それらのパーツを取得します... (患者の人口統計フォームに移動します)
患者を見つけると、コンボボックスから以前の訪問を選択するか (その部分を取得)、新しい訪問を作成することができます (コンボボックスの追加フォームをポップアップ表示するボタンから) - その部分を取得します... (彼らは訪問フォームに行きます)
これが私の問題です。Visit Form で、Lab エントリを生成できるようにする必要があります (各 Lab エントリには、データを格納する複数のテーブルがあります)。フォーム (患者情報領域と、データシート ビューに異なるサブフォームを含む 12 個のタブ (1 つを除く)) を作成し、テーブルに入力した現在の「偽の」結果を取得して、タブに表示することができます。私の問題は、タブのいずれかに新しいラボの日付を入力すると (新しい一意の LabID が生成されます)、他の 11 個のタブ (すべてその一意の LabID に関連付けられている) にその日付が入力されるようにすることです。各ベーステーブルに記録します。訪問にラボが関連付けられていない場合、サブフォームは空白のデータシートで、新しい labID を入力できます。それ以外の場合は、すでに訪問中の場合は、
そうそう....また、結果が利用可能になったときに、それらの他のラボ記録に戻って編集/追加できる必要があります(病理学は他のものよりもはるかに時間がかかります-など)。ただし、LabID と関連する日付が 12 個のタブすべての各フォームに入力されている場合は、その情報が利用可能になったときにその情報を待つ空白のスペースが必要です。そのため、それほど問題ではないかもしれません。
基本的に、一意の患者は複数の一意の訪問を生成します --> 各訪問は、1 つ以上の一意の LabID を生成し、多数のラボ データ ポイントに関連付けることができます (すべてそのラボ ID に対して一意)。まだ混乱していますか?私の頭の中でそれが正しければ、それは1対多対多対1の関係ですか?
これが私のリレーションテーブルの一部です:
訪問フォームは次のとおりです。
訪問フォームのタブにあるサブフォームごとに、'Link master Fields' を VisitID に設定し、'Link Child Fields' を Lab ID に設定しました。驚くほど少量の VBA コーディングでこれらすべてを行うことができましたが、患者の人口統計ページのコンボ ボックスから取得するコーディングは次のとおりです。
Private Sub VisitCBO_Change()
Dim ptWHERE As String
ptWHERE = "[VisitID] = " & Me.VisitCBO.Value
DoCmd.OpenForm "NewVisitsF", acNormal, , ptWHERE, acFormEdit
VisitCBO = Null
End Sub
現在のところ、私のビルダーには訪問ページ用のコードはありません。サブフォームは、lab グループ テーブルと labID テーブルから取得したクエリに基づいています。
私は 1 週間に 1 回、答えを求めて Web と Access 2007 聖書を探し回っていますが、頭がいっぱいで立ち往生しているときは認めます... スペシャリスト、助けてください! - 必要に応じて、DB へのリンクを提供できます。