【问题标题】:Access Form show other table's fields of selected combobox item访问表单显示所选组合框项目的其他表字段
【发布时间】:2014-10-09 20:12:04
【问题描述】:

我是 Microsoft Access 的新手。这是我的结构:

Suppliers 和字段 NameAddressZipPhoneNumber
Purchases 包含字段 SupplierAddressZipPhoneNumber(以及其他一些不相关的字段)

Purchases 表中的Supplier 字段应包含对Suppliers 表中记录的引用。

现在我正在制作一个表格,以便用户可以输入Purchases 记录。它有一个组合框来选择SupplierAddressZipPhoneNumber 的一些文本字段。我想要的是,当用户选择Supplier 时,AddressZipPhoneNumber 的值将从选定的Supplier 复制到表单中的相应文本字段。

如何使用 Visual Basic 代码实现此结果?

【问题讨论】:

  • 我假设此表单仅用于添加记录(没有对现有数据的修改?)
  • 是的,仅用于添加记录

标签: vba ms-access


【解决方案1】:

首先要注意一点。复制日期有时是错误的方法,因为它会破坏数据的关系完整性。也就是说,有时这样做可能有完全正当的理由。此处不再赘述。

最简单的方法之一是确保您的供应商组合框的记录源中有可用的数据。它们不需要可见,您可以将列宽设置为 0 以隐藏它们。 假设您的记录源是:

SELECT Suppliers.[Name], Suppliers.Address, Suppliers.Zip, Suppliers.PhoneNumber from Suppliers

现在在组合框 AfterUpdate 事件中,我们复制数据。

Private Sub SupplierCombo_AfterUpdate()
  If IsNull(Me.SupplierCombo) Then
    Me.txtAddress=Null
    Me.txtZip=Null
    Me.txtPhoneNumber=Null
  Else
    Me.txtAddress=me.SupplierCombo.Column(1)
    Me.txtZip=me.SupplierCombo.Column(2)
    Me.txtPhoneNumber=me.SupplierCombo.Column(3)
  End If

End Sub

如果你的文本框被绑定,你就完成了。如果它们未绑定,您还需要表单当前事件中的代码,以确保文本框在您从 1 条记录移动到下一条记录时更新。

希望有帮助

【讨论】:

  • 谢谢,完美运行。但是为什么会有空检查呢?
  • Null 检查适用于用户清除组合框的情况。您不想将“旧”数据留在文本框中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
  • 2010-12-11
  • 1970-01-01
相关资源
最近更新 更多