0

私の書式設定についてお詫び申し上げます。

Access データベース フォームに問題があります。

参加者テーブルから参加者情報を呼び出すフォームがあります。次に、サブフォームに、参加者テーブルの ID 番号 (PK) でフィルター処理された別のテーブルのサブセットを含める必要があります。サブフォーム (アクセス サブフォーム ウィザードを使用して作成されたもの) は、このジョブを正常に実行します。(wtwo フォームは、プライマリ フォームの ID とサブフォームの GI_ID によってリンクされていますが、ここでは関係ありません)。

サブフォームにはボタンがあり、ボタンを押すと別のフォーム(明確化)が開き、新しいフォームテーブルに新しい行が挿入され、byYサブフォーム(Diary.ID)と明確化.DiaryIDがリンクされます。オペレーターは、明確化テーブルのフィールドに入力できるようになりました。これは、常にダイアリー テーブルにリンクされます。要約すれば

Participant table; ID (pk)
healthdiary Table; ID (PK) GI_ID (fk - participant table) form= frm_healthdiary_edit_record.ID
Clarification Table ID (PK), DiaryID (fk) form=tbl_healthdiary_clarif

これは、サブフォームでない場合に (別のフォームで) 機能するボタンの背後にあるコードです。

SQL_Txt = "INSERT INTO tbl_healthdiary_clarif (HDR_ID) Values (forms!frm_healthdiary_record.ID)"
DoCmd.RunSQL SQL_Txt
SQL_Txt = ""
DoCmd.OpenForm "frm_healthdiary_clarif", , , "[HDR_ID] = forms!frm_healthdiary_record.ID"

以下の SQL 挿入コードは、サブフォーム frm_healthdiary_record のボタンの onClick コントロールで使用すると機能しません。何を試しても、常に frm_healthdiary_record.ID の入力を求められます。

SQL_Txt = "INSERT INTO tbl_healthdiary_clarif (HDR_ID) Values (me.frm_healthdiary_edit_record.form.ID)"
DoCmd.RunSQL SQL_Txt

SQL_Txt = ""

コードを me.frm_healthdiary_edit_record.form.ID および Forms!frm_healthdiary_record..Form.ID に変更しようとしましたが、入力を求めると常に同じ結果が得られ、コントロールが見つかりません。

とてもイライラします。

はっきりさせておきますが、サブフォーム (onclick) のボタンで 1- 新しい行を tbl_healthdiary_clarif に挿入し、次に 2- 挿入したレコードの tbl_healthdiary_clarif に基づいて別のフォームを開きます。

より良い方法があれば提案してください。

前もって感謝します。

4

1 に答える 1

2

フォームへの参照を sql テキスト内に含めることはできません。フォームは変数であるため、外部にある必要があります。たとえば、ID が現在のフォームのサブフォームにある場合:

SQL_Txt = "INSERT INTO tbl_healthdiary_clarif (HDR_ID) Values ( " _
   & me.frm_healthdiary_edit_record.form.ID & ")"
CurrentDB.Execute SQL_Txt, dbFailOnError

現在のフォームの外にあるフォームのサブフォームを参照するには:

SQL_Txt = "INSERT INTO tbl_healthdiary_clarif (HDR_ID) Values ( " _
   & Forms.MyFormName.frm_healthdiary_edit_record.form.ID & ")"

OpenForm メソッドの OpenArg として ID を渡すこともできます。

DoCmd.OpenForm "Clarification", , , , , , Me.ID

その後、Clarification というフォームで Me.OpenArgs を参照できます。

于 2012-11-12T11:58:43.270 に答える