Ms access ms access将数据从子窗体插入SQL数据库表

Ms access ms access将数据从子窗体插入SQL数据库表,ms-access,vba,Ms Access,Vba,为我的格式问题道歉 我对Access数据库表单有问题 我有一个表单,可以从参与者表中调用参与者信息。然后,我需要一个子表单包含另一个表的子集,该表根据参与者表的id号(PK)进行过滤。子窗体(通过使用access子窗体向导创建)执行此作业正常。(两个表单通过主表单上的ID和子表单上的GI_ID进行链接,但在此处不相关) 现在棘手的是,在子表单上我有一个按钮,按下它会打开另一个表单(澄清),并在新表单表中插入新行,按子表单(Diary.ID)和dialysis.DiaryID链接。操作员现在可以填

为我的格式问题道歉

我对Access数据库表单有问题

我有一个表单,可以从参与者表中调用参与者信息。然后,我需要一个子表单包含另一个表的子集,该表根据参与者表的id号(PK)进行过滤。子窗体(通过使用access子窗体向导创建)执行此作业正常。(两个表单通过主表单上的ID和子表单上的GI_ID进行链接,但在此处不相关)

现在棘手的是,在子表单上我有一个按钮,按下它会打开另一个表单(澄清),并在新表单表中插入新行,按子表单(Diary.ID)和dialysis.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_HealthDialog_记录中按钮上的onClick控件上使用时不起作用。无论我尝试什么,它总是要求输入frm_HealthDialog_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\u healthdiary\u edit\u record.form.ID和Forms!frm_healthdiary_record..Form.ID,但总是得到请求输入的相同结果,并且找不到控件

这非常令人沮丧

让我澄清一下,我希望子窗体(onclick)上的按钮1-在tbl_HealthDaily_clarif中插入一个新行,然后2-在刚刚插入的记录处根据tbl_HealthDaily_clarif打开另一个窗体

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


提前感谢。

您不能在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 & ")"
要在当前窗体之外的窗体上引用子窗体,请执行以下操作:

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

然后,您可以在名为“澄清”的表单上引用Me.OpenArgs。

谢谢您今晚稍后再试。我得到“错误438;对象不支持此对象或方法。尝试了您的第一个代码,并将其修改为'SQL\u Txt=“INSERT INTO tbl\u HealthDialog\u clarif(HDR\u ID)值(“&&Forms.health\u dialog\u edit\u filtered.subfm\u healthdiary\u edit\u record.Form.ID&”)CurrentDb.执行SQL\u Txt,dbFailOnError'当我按原样尝试第一个脚本时—“找不到方法或数据方法”。似乎名称有误。您使用的是什么版本的MS Access?这已工作…Forms.frm\u healthdiary\u Edit\u Filtered.subrm\u healthdiary\u Edit\u record.Form.ID。。。。。。我的表单名称不正确-非常令人沮丧,我应该自己清理。