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

问题描述 投票:0回答:3

希望我能解释我想做的足够好...在这里...

我有一个数据输入表单...用户将输入员工ID。一旦正常运行,大多数人将只输入他们自己的EmpID,他们应该知道,因此一旦该数据库上线,这在99%的时间中就不会成为大问题。

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

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

enter image description here当用户在“学生”字段中双击时...我希望显示下一个表单,然后一旦他们键入名称并选择正确的人...然后单击“找到他们!”。我需要该绑定值返回。

enter image description here

我想说我现在有代码可以共享...但是我唯一的代码是启动查找表单。我很想如何降低价值。

vba ms-access access-vba
3个回答
1
投票

看起来您的数据表在一个子窗体中,因此还有更多工作要做,但是如果您不希望这样做,则它不必像上述解决方案那样复杂。 @ 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

这应该可以为您提供所需的东西,而不会产生任何开销,也不必使任何幽灵敞开。


1
投票

执行此操作的方式将小对话框形式启动为“ 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),此技巧使调用代码可以继续进行,此时您可以检查任何值在表格上。记住在获取值之后关闭表单。


0
投票

阿尔伯特,你的回答很棒!

杰西

© www.soinside.com 2019 - 2024. All rights reserved.