0

为我的格式道歉。

我在使用 Access 数据库表单时遇到问题。

我有一个表格,可以从参与者表中调用参与者信息。然后我需要一个子表单来包含另一个表的子集,该表根据参与者表的 id 号 (PK) 过滤。子表单(使用访问子表单向导创建)可以完成这项工作。(wtwo 表单通过主表单上的 ID 和子表单上的 GI_ID 链接,但此处不相关)。

现在棘手的部分是,在子表单上我有一个按钮,按下它会打开另一个表单(澄清)并在新表单表中插入一个新行,链接 bY 子表单(Diary.ID)和 clarification.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 & ")"

您还可以将 ID 作为 OpenForm 方法的 OpenArg 传递:

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

然后,您可以参考名为 Clarification 的表单上的 Me.OpenArgs。

于 2012-11-12T11:58:43.270 回答