希望我能解释我想做的足够好...在这里...
我有一个数据输入表单...用户将输入员工ID。一旦正常运行,大多数人将只输入他们自己的EmpID,他们应该知道,因此一旦该数据库上线,这在99%的时间中就不会成为大问题。
但是,我需要一些时间才能将纸张的历史数据输入数据库。这些人不会知道任何人的EmpID。我想在子窗体的数据表中设置Student字段的OnDblClick事件,以使用组合框打开一个小窗体。组合框具有所有雇员姓名的列表,并绑定到EmpID。一旦该用户输入了姓名并选择了该人,我就会有一个按钮,他们可以单击以返回到数据表。
我可以使用函数来启动表单,在那里没有问题。但是,如何将EmpID返回到被双击的数据表中的字段?
当用户在“学生”字段中双击时...我希望显示下一个表单,然后一旦他们键入名称并选择正确的人...然后单击“找到他们!”。我需要该绑定值返回。
我想说我现在有代码可以共享...但是我唯一的代码是启动查找表单。我很想如何降低价值。
看起来您的数据表在一个子窗体中,因此还有更多工作要做,但是如果您不希望这样做,则它不必像上述解决方案那样复杂。 @ Andre451很接近,但是您需要额外的步骤来识别表单和子表单。为了演示的目的,我们将表单称为Attendance和subform Entry,然后将其称为第二个表单LookUp。因此,您在子表单字段中双击的代码当然看起来像这样:
Private Sub Student_DblClick(Cancel As Integer)
DoCmd.OpenForm "LookUp"
End Sub
您真的在那里不需要别的东西了。对于“ LookUp”上的按钮,请输入以下内容:
Private Sub Command2_Click()
Forms![Attendance]![Entry].Form![Student] = Forms!Lookup!Student
DoCmd.Close acForm, "LookUp"
End Sub
这应该可以为您提供所需的东西,而不会产生任何开销,也不必使任何幽灵敞开。
执行此操作的方式将小对话框形式启动为“ 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 Them按钮后面的代码不执行关闭表单,而是将表单设置为visible = false(me.Visible = false),此技巧使调用代码可以继续进行,此时您可以检查任何值在表格上。记住在获取值之后关闭表单。
阿尔伯特,你的回答很棒!
杰西