ms访问从子表单插入数据到SQL数据库表

时间:2012-11-12 11:32:34

标签: ms-access access-vba

为我的格式道歉。

我遇到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打开另一个窗体。

如果有更好的方法请建议。

提前致谢。

1 个答案:

答案 0 :(得分: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。