2

当您单击子表单表中某个字段旁边的那个小框时,我试图弹出一个窗口,然后单击“更多信息”按钮。该表格将弹出有关该记录的所有额外信息;在文本框中,以便您可以编辑它。在此表单上它会弹出,它只有一个返回按钮,当您单击返回时,它会保存在您正在查看更多信息的记录中的文本框中所做的所有更改......并更新它。然后它会调回以前的表单,并更新该表单上的子表单,以便显示对表所做的所有更改。我不是在寻找更多信息按钮来显示所有记录的更多信息。我正在寻找它来为您仅选择的一条记录显示更多信息,并且要获取有关另一条记录的更多信息,您必须单击返回并选择一个新记录。

例如,我按下更多信息按钮的意思是,这是一张图片:

在图片中,它是一张桌子。单击那个小空间会突出显示整个记录,您可以按键盘上的 DEL 删除记录(尽管在这种情况下并不重要,只需指出它是一个表。)

在此处输入图像描述


我在“更多信息”按钮中的代码:

    Private Sub CustomerMoreInfoBtn_Click()
   On Error Resume Next
   DoCmd.Close acForm, "CustomerInfoF"
   DoCmd.DeleteObject acQuery, "CustomerMoreInfoQ"
   On Error GoTo Err_CustomerMoreInfoBtn_Click

   Dim qdef As DAO.QueryDef
   Set qdef = CurrentDb.CreateQueryDef("CustomerMoreInfoQ", _
                                       "SELECT * " & _
                                       "FROM CustomersT " & _
                                       "WHERE CustomerID = " & txtCustID.Value)
   DoCmd.OpenForm "CustomerInfoF"

Exit_CustomerMoreInfoBtn_Click:
   Exit Sub
Err_CustomerMoreInfoBtn_Click:
   MsgBox Err.Description
   Resume Exit_CustomerMoreInfoBtn_Click
End Sub

以它自己的形式编码:

Private Sub Form_Close()
   On Error Resume Next
   DoCmd.DeleteObject acQuery, "CustomerMoreInfoQ"
End Sub
4

1 回答 1

2

在下面的示例中,您的按钮名为cmdMoreInfo。当您单击按钮时,它会MyCustDetail根据客户 ID 的值创建查询。然后它打开frm_CustDetailEdit表格。将表单记录源设置为MyCustDetail

为了能够创建查询,它必须不存在。因此,我事先检查并删除它,如果它存在。此外,当关闭主窗体时,它也会删除查询,因为无论如何都不再需要它了。

Private Sub cmdMoreInfo_Click()
   On Error Resume Next
   DoCmd.Close acForm, "frm_CustDetailEdit"
   DoCmd.DeleteObject acQuery, "MyCustDetail"
   On Error GoTo Err_cmdMoreInfo_Click

   Dim qdef As DAO.QueryDef
   Set qdef = CurrentDb.CreateQueryDef("MyCustDetail", _
                                  "SELECT * " & _
                                  "FROM tbl_Customer " & _
                                  "WHERE CustomerID = " & txtCustID.value)
   DoCmd.OpenForm "frm_CustDetailEdit"

Exit_cmdMoreInfo_Click:
   Exit Sub
Err_cmdMoreInfo_Click:
   MsgBox Err.Description
   Resume Exit_cmdMoreInfo_Click
End Sub


Private Sub Form_Close()
   On Error Resume Next
   DoCmd.DeleteObject acQuery, "MyCustDetail"
End Sub
于 2013-10-29T12:48:07.503 回答