【问题标题】:Access VBA - Selecting newest option in combobox访问 VBA - 在组合框中选择最新选项
【发布时间】:2014-12-09 11:34:53
【问题描述】:

我有一个包含三个表的数据库:员工、咨询和客户。以下是关系:

员工咨询

咨询客户

我有一个用于输入咨询的表格(称为“咨询”),用户可以从组合框中选择客户。然后,这会以只读格式在表单上显示客户信息。如果用户需要更新客户信息(姓名、类型、部门等),他们可以单击一个按钮,打开该客户记录的另一个表单。他们可以更新信息,然后关闭该表格,“咨询”表格将更新为新的客户信息。这一切都很好。

如果客户表中不存在新客户记录,我还希望用户能够输入新客户记录。目前,用户可以单击一个按钮,然后打开一个表单,他们可以在其中输入所有新的客户信息,称为“添加客户”。一旦他们关闭表格,“咨询”表格就会再次显示。这是我遇到问题的地方。

我想要发生的是,在用户输入新客户后,应该在组合框中选择新客户。组合框包含客户的“姓氏,名字”。我能够让新记录出现在组合框中,但用户仍然需要手动选择它。我希望这会自动发生。

这是我在用户单击“添加客户”表单上的确定时运行的代码:

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 的变量,然后尝试让组合框选择该记录,但无法使其工作。我已经从上面的代码中删除了它。

谢谢!

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

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

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

    我假设您正在以模式打开“添加”表单。如果没有,那么您需要这样做。 (您需要更改以下代码以使用您的组合框名称和表单名称)

    1. 在主窗体上添加一个隐藏文本框,即命名为 txtNameHidden
    2. 在“添加”表单的关闭代码中,添加以下内容:

      Forms!frmMyMainForm!txtNameHidden = me.txtName ' 将出现在组合框中的值

    3. 在主窗体中,在打开窗体的代码行之后,添加以下代码:

      Me.cboNames.Value = 我。 txtNameHidden

    我对您的代码“DoCmd.Requery "CustomerLastName"”很好奇 - 这行得通吗?怎么知道引用主窗体上的控件?

    【讨论】:

    • 我看过那篇文章,但在这种情况下它对我没有帮助。添加新客户时,我不知道组合框中会有多少项目。一个新客户可能是第 9 个项目,然后另一个可能是第 25 个项目。所以使用绝对数字是行不通的。
    • 您需要遍历组合框中的列表以找到匹配的名称,然后设置“已选择”选项。你知道怎么做吗,还是我需要为你发布代码?
    • 如果您可以为此发布代码,那就太棒了!
    • 首先我需要一些信息: 1. 添加表单是 Modal 吗? 2. 您只想让 ComboBox 将刚刚添加的名称显示为默认名称(即当前选择的名称)?
    • 两个问题都是肯定的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2015-12-23
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多