将TextBox绑定到Access中的ComboBox

时间:2015-06-02 16:42:20

标签: vba ms-access combobox

我有一个如下所示的Access表:

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

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

基本上,我希望能够通过选择ComboBox中的字段然后在TextBox中设置字段的值来添加/编辑表格中的某些字段。但是,我只想编辑表格中的Thing#字段。那么我将如何创建一个宏或VBA系统来实现这一目标呢?

1 个答案:

答案 0 :(得分:0)

这是一个让你入门的例子,尽管你可能想要添加一些额外的东西,比如验证检查和诸如此类的东西。

首先,您的表单应绑定到您提供给我们的表,以便更新该表中的数据。我在我的例子中调用了你的表“tblThings”,所以不管你怎么称它都应该在表单的记录源属性中:

enter image description here

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

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

enter image description here

接下来,我会添加一个按钮,允许您将编辑内容提交到当前记录,也可以使用几个导航按钮转到下一个/上一个记录。

这是我的模特:

enter image description here

当您想要将文本框中放置的内容提交到您在组合框中选择的Thing#字段时,勾选按钮将被按下。

“tick”按钮的点击事件中包含以下VBA:

Private Sub cmdApply_Click()

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

End Sub

这是“下一个”按钮的VBA,可以将您移动到下一条记录(再次点击事件):

Private Sub cmdNext_Click()

    DoCmd.GoToRecord , , acNext

End Sub

和“上一个”按钮的VBA将您移动到下一条记录(再次在点击事件中):

Private Sub cmdPrev_Click()

    DoCmd.GoToRecord , , acPrevious

End Sub

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

  1. 选择您要修改的“Thing”字段
  2. 使用文本框为选定的Thing字段提供值
  3. 点击“勾选”按钮,该值将进入所选的“事物”字段
  4. enter image description here

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

    Here's a link to my example Access file

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

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

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

    enter image description here

    然后当您从组合框中选择Thing字段时,文本框中的数据将被放入所选的相应Thing字段中:

    enter image description here

    为了实现这个目的,你基本上把我们用于勾选按钮的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

    还有一些验证,在文本框为空时锁定组合框..如果你想允许使用nulls / zero-length字符串,你可能想删除/忽略项目中的那些。 / p>