在 Access 中将 TextBox 绑定到 ComboBox

Bind TextBox to ComboBox in Access

我的访问权限 table 如下所示:

+------------+--------+--------+--------+-------+
| PartNumber | Thing1 | Thing2 | Thing3 | Item1 |
+------------+--------+--------+--------+-------+
|        123 | ABC    | XYZ    | ASD    | poi   |
|        456 | QWE    | SDF    | ERT    | lkj   |
|        789 | JKL    | IOP    | YUI    | mnb   |
+------------+--------+--------+--------+-------+

我希望创建一个带有 ComboBox 和 TextBox 的 MS Access 表单,如下所示:

基本上,我希望能够 add/edit 我 table 中的某些字段,方法是在 ComboBox 中选择字段,然后在 TextBox 中设置该字段的值。但是,我只想编辑 table 中的 Thing# 字段。那么我将如何创建宏或 VBA 系统来完成此操作?

这是一个让您入门的示例,但您可能还想添加一些额外的东西,例如验证检查等等。

首先,您的表单应与您提供给我们的 table 绑定,这样可以更轻松地更新 table 中的数据。我在我的例子中称你的 table "tblThings" ,所以无论你怎么称呼它都应该在记录源 属性 中的形式:

接下来,将您的组合框和文本字段创建为未绑定控件(即只需从“设计”功能区的“控件”中添加它们)。

对于组合框,您可以使用向导键入所需的值(选项),也可以跳过向导并手动编辑组合框的属性,如下所示:

接下来,我将添加一个按钮以允许您将编辑提交到当前记录,也许还有几个导航按钮以转到 next/previous 记录。

这是我的模型:

当您想将文本框中的内容提交到您在组合框中 select 编辑的 Thing# 字段时,勾选按钮将显示您按下的内容。

"tick" 按钮在其单击事件中具有以下 VBA:

Private Sub cmdApply_Click()

    Forms(frmThings).Controls(Me.cboFieldSelect) = Me.txtFieldValue

End Sub

这里是 "next" 按钮的 VBA 将您移动到下一条记录(再次在单击事件中):

Private Sub cmdNext_Click()

    DoCmd.GoToRecord , , acNext

End Sub

和 "previous" 按钮的 VBA 将您移动到下一条记录(再次在单击事件中):

Private Sub cmdPrev_Click()

    DoCmd.GoToRecord , , acPrevious

End Sub

因此,当您使用表格时,如果您:

  1. Select 您要编辑的 "Thing" 字段
  2. 使用文本框为 selected 事物字段提供值
  3. 单击 "tick" 按钮,值应进入 selected 事物字段

在上面的示例中,我展示了表单的绑定字段,因此您可以看到效果(尽管您不一定需要在表单上显示这些字段)。

Here's a link to my example Access file.

更新 - 使用组合框更改事件的替代方法

根据下面的评论,这里有一种获取组合框的更改事件以将数据放入您的事物字段的方法(消除了对按钮传递数据的需要)。

调换文本框和组合框的顺序,先在文本框中输入数据:

然后当您 select 组合框中的 Thing 字段时,文本框中的数据将被放入适当的 Thing 字段中 selected:

要实现这一点,您基本上需要在组合框的更改事件中放置我们之前为勾选按钮设置的相同 VBA(之后我还清空了文本框,以便让用户需要为他们需要输入的下一个字段输入新值):

Private Sub cboGblFieldsSelect_Change()

    Forms(frmThings).Controls(Me.cboGblFieldsSelect) = Me.txtGblFieldsValue

    Me.txtGblFieldsValue = ""

End Sub

Here's the updated file for you to have a look at.

那里还有一些验证,可以在文本框为空时锁定组合框。如果您想要允许使用 [=92=,您可能需要 remove/ignore 在您的项目中] 字符串。