Ms access Access使用列表框中选定的项更新子窗体

Ms access Access使用列表框中选定的项更新子窗体,ms-access,listbox,subform,Ms Access,Listbox,Subform,我有以下代码,用于执行以下操作: 1.从视图表中删除数据 2.将数据从主表追加到主表 3.选择附加记录的ID和产品编号,并填充到视图表中 4.清除主窗体上的控件 5.刷新表单 注意:ID Listbox Rowsource是视图表中的Select ID查询。当我从列表框中单击ID时,子窗体将填充。但是,我希望它在填充ID框后提示子窗体进行填充 问题:追加记录后,ID列表框将填充,它将选择该项,但是子窗体(通过主-子窗体链接)不会使用列表框中所选ID nr的记录数据重新查询 Private Sub

我有以下代码,用于执行以下操作: 1.从视图表中删除数据 2.将数据从主表追加到主表 3.选择附加记录的ID和产品编号,并填充到视图表中 4.清除主窗体上的控件 5.刷新表单

注意:ID Listbox Rowsource是视图表中的Select ID查询。当我从列表框中单击ID时,子窗体将填充。但是,我希望它在填充ID框后提示子窗体进行填充

问题:追加记录后,ID列表框将填充,它将选择该项,但是子窗体(通过主-子窗体链接)不会使用列表框中所选ID nr的记录数据重新查询

Private Sub cmdInsert_Click()
Dim ctl As Control
DoCmd.SetWarnings (WarningsOff)
CurrentDb.Execute "delete from EC_ID_Table"
DoCmd.OpenQuery ("EC_Insert_New_Record")
DoCmd.OpenQuery ("EC_ID_Table qry")
For Each ctl In Form_frmEC.Controls
Select Case ctl.ControlType
Case acTextBox
    If ctl.Name <> "ID" Then
        ctl.Value = ""
    End If
    Case acOptionGroup, acComboBox, acListBox
    ctl.Value = Null
Case acCheckBox
    ctl.Value = False
End Select
Next
DoCmd.SetWarnings (Warningson)
MsgBox "Insert Complete!"
Me.Form.Refresh
Me.ID.Selected(0) = True
End Sub
Private Sub cmdInsert\u Click()
Dim-ctl作为对照
DoCmd.SetWarnings(警告关闭)
CurrentDb.执行“从EC_ID_表中删除”
DoCmd.OpenQuery(“EC_插入新记录”)
DoCmd.OpenQuery(“EC_ID_Table qry”)
对于表单_frmEC.Controls中的每个ctl
选择Case ctl.ControlType
Case acTextBox
如果ctl.Name“ID”,则
ctl.Value=“”
如果结束
案例A选项组、acComboBox、acListBox
ctl.Value=Null
病例检查盒
ctl.Value=False
结束选择
下一个
DoCmd.SetWarnings(警告)
MsgBox“插入完成!”
我。表格。刷新
选择的Me.ID(0)=真
端接头

谢谢大家!

尝试刷新子窗体。我想是这样的:

Forms!Mainform!Subform1.Form.Refresh 
(如果适用,请更改主窗体和子窗体1的名称)

否则,您可以尝试重建记录源:

Forms!Mainform!Subform1.Form.RecordSource = "SELECT * FROM MyTable"

@韦内格,邓恩-请帮忙
.Refresh
仅更新当前记录,但如果尚未加载任何记录,则必须使用
.Requery
。我想。@Andre451从我所看到的frmEC_sub.Form.Requery刷新子表单。但是,我的印象是,子窗体子字段没有看到主字段中存储的值。我必须单击它才能填充子表单。问题已解决-我添加了Me.Form.Refresh Me.ID.SetFocus Me.ID.Selected(0)=True frmEC_sub.Form.Requery谢谢大家!