【问题标题】:MS Access: How to use a pulldown combo-box control to populate multiple text fields in a formMS Access:如何使用下拉组合框控件填充表单中的多个文本字段
【发布时间】:2021-09-13 16:27:23
【问题描述】:

有 3 个文本字段需要使用下拉组合中的列信息填充。

组合框控件名为 cmb_ao_owner(1),目标文本字段(用于传递列数据)分别为 txt_ao_owner_id(2)、txt_ao_owner_phone(3) 和 txt_ao_owner_email(4)。

文本字段将分别填充 column(1)、column(2) 和 column(3) 数据。来自组合框的查询是:

SELECT [dbo_SUP_CONTACTS].[sc_owner_id], [dbo_SUP_CONTACTS].[sc_owner], 
[dbo_SUP_CONTACTS].[sc_work], [dbo_SUP_CONTACTS].[sc_email]
FROM dbo_SUP_CONTACTS ORDER BY [sc_owner]; 

控件在子子窗体中

parent-form: workbench
sub-form: contacts
sub-sub-form: asset_owners

..但我现在知道这并不重要,因为我认为“我”参数可以解决这个问题。

我面临的挑战是在更新事件之后将组合数据传递到同一行中的文本字段的语法。

图 A:尝试 1

Private Sub cmb_ao_owner_AfterUpdate()
me.parent.txt_ao_owner_id = [cmb_ao_owner].Column(2)
me.parent.txt_ao_owner_phone = [cmb_ao_owner].Column(3)
me.parent.txt_ao_owner_email = [cmb_ao_owner].Column(4)
End Sub

图 A:尝试 2

Private Sub cmb_ao_owner_AfterUpdate()    
Me!txt_ao_owner_id = Me!cmb_ao_owner.Column(2)
Me!txt_ao_owner_phone = Me!cmb_ao_owner.Column(3)
Me!txt_ao_owner_email = Me!cmb_ao_owner.Column(4)
End Sub

每次尝试都会出错。有什么建议?非常感谢任何帮助。

谢谢。

【问题讨论】:

  • 什么错误?列索引从 0 开始。所以第一列是索引 0,等等。为什么要将所有者信息复制到另一个表中?

标签: forms ms-access textbox ms-access-2010 subform


【解决方案1】:

刚刚用一个快速的模型试了一下......

Private Sub Combo0_AfterUpdate()
Me.Text2.Value = Me.Combo0.Column(1)
End Sub

您的示例中的Me!txt_ao_owner_phone 等不应该也包含“.value”或“.text”吗?因此:Me!txt_ao_owner_phone.Value

【讨论】:

  • 在 VBA 中,Value 是字段和数据控件的默认属性,因此无需显式引用。文本不适合作为参考。
  • 实际上起作用的是 Me.txt_ao_owner_id.Value = Me.cmb_ao_owner.Column(0) 使用“!”和 .text 导致它失败。我用(点)和“值”替换了字符串,效果很好。我仍然相信你,因为 - 愚蠢的我忘了在我的查询末尾添加(值和文本)。不错的收获:)
  • @June7 虽然出于某种原因确实如此,但我需要明确添加 .text 或 .value 后缀才能使其正常工作。 MS Access(至少对我而言)很古怪,如果不是特别的话。谢谢大家!
  • 假设总是有例外。我知道的一个涉及列表框。明确地说当然没有坏处。不过,为什么要将数据复制到另一个表? Text 属性仅适用于具有焦点的控件。
猜你喜欢
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多