0

これは私のプロジェクト(臨床試験フォームの設計)に関するフォローアップの質問です。私の最初の質問はここにあります:Filemaker Pro:タブコントロールでテーブルの複数のエントリを作成します

簡単にするために、テストFMPファイルを作成しました。データベースの設計とレイアウトは次のとおりです。
データベース構造
例のレイアウト

患者ごとに、PatientTableにレコードを作成しています-Patient_IDは識別子です。一般的な情報をいくつか載せます(ここでは名前のみを使用しました)。「Tableau_Data」というラベルの付いたもう一方のテーブルには、いくつかのデータを格納します。Data_IDは識別子です。テーブルPatient」と「Tableau_Data」はPatient_IDにリンクされています。

データは常に同じフィールド(私の例では「Turlututu」)で構成されます-実際には50を超えるパラメーターです。5日間のデータを収集します(つまり、5つのタブがあります)。Sam Barnumの助けを借りて、ポータルを使用することで、各タブに「Tableau_Data」の異なるレコードを作成することができます。

ただし、「Tableau_Data」の各レコードに、元のタブ(「Jour」フィールド)を格納したいと思います。そこで、タブに応じて「Jour」の値を自動的に設定する方法が必要です。スクリプトはおそらくポータルまたはフィールドにリンクしています。しかし、どのように?

理想的には、「Jour」フィールドを非表示にします。

デフォルトでは、ドロップダウンリストを作成して、ユーザーにこの変数の値を設定させることができます。私はむしろそれを望みます。人間工学的ではなく、データのキャプチャ中にエラーが発生する可能性があります。

Sam Barnumは、Patient_IDへのTableau_Dataリンクの5つのレコードを事前に生成できる可能性があることをほのめかしました。したがって、レコード1、6、11、16、...はJour = 1用であり、レコード2、7、12、...はJour=2用であることがわかります。しかし、私はそれを行う方法さえ知りません。

4

2 に答える 2

1

スクリプトと計算の自動入力により、ユーザーがどのタブにいるかを自動的に「知る」ことができます。これは、レイアウトオブジェクト名と関数Get(ActiveLayoutObjectName)を使用して実現されます。

FileMakerでは、各レイアウトまたはレイアウトオブジェクトのグループに「名前」を付けることができます。名前の一意性はFileMakerによって強制されるため、同じ名前のオブジェクトを2つ持つことはできません。レイアウトオブジェクト名は、[位置]タブのインスペクターで設定します。その上部にあります。

あなたの場合、各タブに名前を付けることができます。これは、レイアウトモードでタブをダブルクリックすることで実行されます。選択すると、周囲に黒い境界線が表示されます。次に、上記のようにインスペクターを使用して名前を割り当てます。

各タブに一意の名前が付けられたら。Get(ActiveLayoutObjectName)を使用して、ユーザーが現在アクティブにしているタブを判別できます。

シナリオによっては、スクリプトを使用してこれを行うことができます。または、データベースのフィールドに自動入力計算を「Get(ActiveLayoutObjectName)」に設定する方が簡単な場合もあります。これにより、データベースは、レコードの作成時にユーザーが使用していたタブを記録します。どちらがあなたの望む結果だと思います。

于 2012-04-28T14:06:07.773 に答える
0

Jourの値が少ない場合(ご指摘のとおり5)、Jourの値ごとに新しい関係を設定するのが最も簡単な場合があります(タブごとに1つ)。

Patient_IDテーブルに、Jourの値ごとに1つの新しいフィールドを追加します。各フィールドは計算フィールドになり、計算の値はJourの特定の値になります。たとえば、Patient_IDテーブルの値は次のとおりです。

Patient_ID::Patient_ID
Patient_ID::Nom
Patient_ID::Jour1 (Calculation value set to 1)
Patient_ID::Jour2 (Calculation value set to 2)
  ...
Patient_ID::Jour5 (Calculation value set to 5)

次に、5つの新しい関係を設定し、Patient_IDと各Jourフィールドの両方を一度に1つずつ、Tableau_Dataフィールドの新しいTable Occurrences(この例ではTableau_Data_Jour#:)にリンクします。

Jour1
Patient_ID::Patient_ID = Tableau_Data_Jour1::Patient_ID
Patient_ID::Jour1 = Tableau_Data_Jour1::Jour

すべての方法を介して:

Jour5
Patient_ID::Patient_ID = Tableau_Data_Jour5::Patient_ID
Patient_ID::Jour5 = Tableau_Data_Jour5::Jour

新しい関係ごとに、「この関係によるこのテーブルでのレコードの作成を許可する」をオンにする必要があります。

次に、各タブのフィールドを変更して、[Jour 1]タブがTableau_Data_Jour1テーブルのフィールドを使用し、[Jour5]タブがTableau_Data_Jour5テーブルのフィールドを使用するようにします。

また、次のことを検討することもできます。

上記は問題なく機能するはずですが、それは醜く、多くの作業を作成します。タブが厳密な要件ではない場合は、代わりに次のことを行うことをお勧めします。

  1. 患者テーブルに新しい「JourCurrent」番号フィールドを作成します。
  2. 上記と同様の関係を作成し、Tableau_Data_Jourテーブルに新しいレコードを作成できるようにします。

    Patient_ID :: Patient_ID = Tableau_Data_Jour :: Patient_ID

    Patient_ID :: JourCurrent = Tableau_Data_Jour :: Jour

  3. Jourのすべての値を使用して新しい値リストを作成します

  4. JourCurrentフィールドをレイアウトに配置し、値リストからポップアップメニューとして値を取得するように設定します。
  5. タブを使用する代わりに、ポップアップメニューから今日の入力に適したジャーナルをユーザーに選択してもらいます。

これの利点は、関連する各フィールド(Tableau_Data_Jourフィールド)を1回だけ維持する必要があり、タブごとに1回ではなく、1回だけ新しいフィールドを追加できることです。

于 2012-04-28T14:35:20.950 に答える