Vba 如何启动查找表单,并从组合框返回值

Vba 如何启动查找表单,并从组合框返回值,vba,ms-access,Vba,Ms Access,希望我能解释我想做的足够好…就这样 我有一个数据输入表单…用户将输入EmployeeID。一旦进入正常操作,大多数人将只输入他们自己的EmpID,他们应该知道这一点,因此,一旦这个DB上线,99%的时间里这不会是一个大问题 但是,我需要一些临时工将纸质表格中的历史数据输入数据库。这些人不会知道其他人的EmpID。我想在子窗体的数据表中设置Student字段的OnDblClick事件,以打开一个带有组合框的小窗体。组合框包含所有员工姓名的列表,并绑定到EmpID。一旦该用户输入姓名并选择此人,我就

希望我能解释我想做的足够好…就这样

我有一个数据输入表单…用户将输入EmployeeID。一旦进入正常操作,大多数人将只输入他们自己的EmpID,他们应该知道这一点,因此,一旦这个DB上线,99%的时间里这不会是一个大问题

但是,我需要一些临时工将纸质表格中的历史数据输入数据库。这些人不会知道其他人的EmpID。我想在子窗体的数据表中设置Student字段的OnDblClick事件,以打开一个带有组合框的小窗体。组合框包含所有员工姓名的列表,并绑定到EmpID。一旦该用户输入姓名并选择此人,我就有了一个按钮,他们可以单击返回数据表

我可以使用函数启动表单,没有问题。但是如何将EmpID返回到双击的数据表中的字段

当用户双击“学生”字段时…我希望下一个表单出现,然后一旦他们键入姓名并选择正确的人…然后单击“找到他们”!。。。我需要那个绑定值来返回


我很想说我现在有代码要共享…但我唯一的代码是启动查找表单。我在思考如何将值拉回来。

这样做的方法是以“acDialog”的形式启动您的小对话框。这将导致调用代码等待

然后“神奇”的部分是当他们点击“找到他们”时,你不关闭弹出表单,只需将表单的visible=false。这具有弹出此窗体的调用代码的效果,该代码暂停以继续(执行此操作时,窗体将退出对话框模式)。现在您的呼叫代码继续

因此,您的代码将如下所示:

  Dim strF       As String      ' name of popup form

  strF = "frmPopUp"

  ' open form, wait for user selection

  DoCmd.OpenForm strF, , , , , acDialog

  ' if for is NOT open, then assume user hit cancel buttion
  ' (you should likly have a cancel button on the form - that cancel buttion will
  ' execute a docmd.close

  If CurrentProject.AllForms(strF).IsLoaded = True Then
     ' grab the value of thee combbo box

     strComboBoxValue = Forms(strF)!NameOfComboBox

     DoCmd.Close acForm, strF

  End If

如前所述,Found Themes按钮后面的代码不执行关闭窗体,而是将forms visible=false(me.visible=false)设置为,此技巧允许调用代码继续,此时您可以检查窗体上的任何值。请记住在获取值后关闭表单。

看起来您的数据表位于子表单中,因此还有一些工作要做,但如果您不希望它像上面的解决方案那样复杂,它不必像上面的解决方案那样复杂@Andre451很接近,但是您需要额外的步骤来识别表单和子表单。为了演示,让我们调用表单考勤和子表单条目,然后调用第二个表单查找。因此,在“子窗体”字段中双击的代码当然如下所示:

Private Sub Student_DblClick(Cancel As Integer)
 DoCmd.OpenForm "LookUp" 
End Sub
你真的不需要其他什么花哨的东西。对于“查找”按钮,您将显示以下内容:

Private Sub Command2_Click()

Forms![Attendance]![Entry].Form![Student] = Forms!Lookup!Student
DoCmd.Close acForm, "LookUp"

End Sub

这会让你得到你想要的东西,而不需要任何开销,也不需要让任何鬼魂打开

您是否尝试过直接在FoundThemes click事件中设置该值<代码>表格!出席!employeeID=Me.EmpID或类似的东西。