循环访问数据库中的文本框

时间:2012-11-08 13:41:46

标签: database vba ms-access loops textbox

我有一个Access数据库,我想循环浏览某些文本框,以便进行计算并在单独的文本框中显示答案。当我尝试循环时,循环遍历我的表单上的每个控件(使用Form.Controls)方法。我想在单击我的按钮时只循环浏览4个特定的文本框(txtbx1,txtbx2,txtbx3,txtbx4)。

...说明 TextBox_A包含一个数字 单击按钮后,从TextBox_A中取数字,乘以2800,然后除以12 在txtbx1中显示计算的答案。

我会为上面提到的4个文本框中的每一个执行此操作。然后有一个“总计”文本框,它将每个文本框(txtbx1,txtbx2,txtbx3,txtbx4)的总和相加。请帮忙,对此不熟悉并完全失败。

2 个答案:

答案 0 :(得分:4)

每个控件都有一个Tag属性。为要包含在算法中的值的文本框设置Tag属性(例如“INClUDE”)。它是免费的格式文本,因此您可以放置​​自己喜欢的内容。

然后编写附加到类似于此的某个表单事件的代码:

 Dim c As Control
Dim txt As TextBox

For Each c In Me.Controls

    'check it's a text box ...
    If TypeOf c Is TextBox Then

        'see if including ...
        Set txt = c
        If Len(txt.Tag) > 0 Then

            'do something here (I've coloured, to show works)
            txt.BackColor = 10

        End If

    End If

Next c

我设置了一个额外的变量txt来引用有问题的文本框,这样我就可以使用自动完成来获取TAG属性(我相信这称为缩小转换!)。

答案 1 :(得分:0)

如果将TextBox_A(_B / _C等)重命名为TextBox_1 / _2 / _3等,会更容易。 然后试试这个:

Dim i As Integer
For i = 1 To 4
    Controls("txtbx" & i) = Val(Controls("TextBox_" & i)) * 2800 / 12
Next

否则,这也会起作用,但它的可读性不高:

= Val(Controls("TextBox_" & Chr(Asc("A") + i - 1))) * 2800 / 12