访问VBA - 选择组合框中的最新选项

时间:2014-10-14 15:40:11

标签: ms-access access-vba

我有一个包含三个表的数据库:Employees,Consultations和Customers。以下是关系:

员工与LT; --->协商

协商< --->客户

我有一个进入咨询的表格(称为“咨询”),用户可以从组合框中选择客户。然后,它以只读格式显示表单上的客户信息。如果用户需要更新客户信息(名称,类型,部门等),他们可以单击一个按钮,打开另一个表单到该客户的记录。他们可以更新信息,然后关闭该表单,并使用新的客户信息更新“咨询”表单。一切正常。

我还希望用户能够在customers表中不存在的情况下输入新的客户记录。目前,用户可以单击按钮,并打开表单,在表单中可以输入所有新客户信息,称为“添加客户”。关闭表单后,将再次显示“咨询”表单。这是我遇到问题的地方。

我想要发生的是,在用户输入新客户后,应在组合框中选择新客户。组合框保存客户的“LastName,FirstName”。我能够将新记录显示在组合框中,但用户仍需要手动选择它。我希望这是自动发生的。

以下是用户在“Add-Customer”表单上单击“确定”时运行的代码:

Private Sub Command1_Click()

'save customer record
DoCmd.RunCommand acCmdSaveRecord

'make add-customer form invisible
Me.Visible = False

'requery the customerlastname field on consultations form
DoCmd.Requery "CustomerLastName"

'close add-customer form
DoCmd.Close acForm, "Add-Customer"

End Sub

我尝试添加一个存储新记录ID的变量,然后尝试让组合框选择该记录,但无法使其工作。我从上面的代码中删除了它。

谢谢!

1 个答案:

答案 0 :(得分:1)

更新:意识到你正在使用第二种形式 - 这不是子形式,这是一种可能的解决方案。

您需要将新值传回原始表单。您可以通过以下几种方式实现这一目标:(a)全局变量; (b)隐藏的文本框; (c)以主要形式创建公共职能。我选择使用隐藏的字段。

我假设你打开'添加'表单作为模态。如果没有,那么你需要这样做。 (您需要更改以下代码才能使用组合框名称和表单名称)

  1. 在主窗体上添加一个隐藏的文本框,即名为txtNameHidden
  2. 在'添加'的密切代码中表格,添加以下内容:

    Forms!frmMyMainForm!txtNameHidden = me.txtName'它将显示在组合框

  3. 在Main表单中,在打开表单的代码行之后,添加以下代码:

    Me.cboNames.Value =我。 txtNameHidden

  4. 我很好奇您的代码' DoCmd.Requery" CustomerLastName"' - 这有用吗?如何知道在主窗体上引用控件?