使用vba访问表单中的字段

时间:2015-01-26 16:38:19

标签: forms vba ms-access-2010

我在Microsoft Access 2010中创建了一个查询和一个表单。名为TEST的表单如下所示:

Field1   Field2
a        200
b        400

在VBA中,我尝试访问表单中的不同字段:

Form_TEST.Field1....

我想将值200和400保存在整数变量(Dim a As Integer)中并使用MsgBox打印它。我怎样才能实现这个目标?

2 个答案:

答案 0 :(得分:0)

如果您知道文本框的名称,可以将Me用作打开表单并指定变量。

Dim intValue as Integer
'If text box name = TextBox1
intValue = Me.TextBox1.Value

答案 1 :(得分:0)

我会尽力帮助你。 我知道你创建了表单,向导将2个字段放在表单上。 不清楚的是您正在使用的视图。

嗯,您的表单可以以不同的方式显示:    - 单一表格    - 连续表格    - 数据表

这是由默认视图属性定义的。

要查看表单的属性,请按F4查看属性,然后选择“表单”作为您要查看的对象。

如果您的表单是单个表单或连续表单,您可以访问您放在其上的两个字段,只需解决它们。

单击您在表单上放置的控件,然后按F4查看控件名称。

案例1 - 单一表格视图 假设您的控件名为Text1(200)和Text2(400),为方便起见,您的表单是单个表单。

所以你可以参考2个控件写作中的值

Dim intText1 As Integer, intText2 As Integer

intText1 = Me.Text1.Value
intText2 = Me.Text2.Value

.Value属性不是必需的,因为它是默认属性。 此时,您可以使用MsgBox打印出intText1,2

MsgBox "Text1 = " & CStr(intText1)+ " - Text2 = " & CStr(intText2)

这将显示Text1 = 200 - Text2 = 400

案例2 - 连续形式视图 我们现在假设您的视图是连续形式。 因此,包含200和400的字段只是一个,但每个记录(行)是一个重复记录数量的表单。 在这种情况下,要访问所有记录并将它们存储到数组,您可以在Form_Load事件中使用它(您可以通过控件属性窗口访问它 - F4)

Option Explicit 
Option Base 1                      ' Set the base index for vectors to 1

Dim rst as DAO.Recordset           ' Define a recordset to allocate all query records
Dim Values as Variant              ' Define a variant to allocate all the values

set rst = me.RecordsetClone        ' Copy all records in rst

rst.MoveLast                       ' Go to last record
intNumRecords = rst.RecordCount    ' Count records
rst.MoveFirst                      ' Go back to recordset beginning

ReDim Values(intNumRecords)        ' Resize Values to allocate all values 

i = 1
Do While Not rst.EOF               ' Cycle over all records
    Values(i) = rst!FieldName      ' FieldName is the name of the field of
                                   ' the query that stores 200 and 400    
    i = i + 1                      ' Move to next array element
    rst.MoveNext                   ' Move to next record
Loop

rst.Close                          ' Close recordset
set rst = Nothing                  ' Release memory allocated to rst

for i = 1 To intNumRecords         ' Show easch value as message box
  MsgBox Values(i)
next i

备注 如果您要显示的记录少于32767(具有可以存储的符号的最大整数),请注意此解决方案是否有效。 msgbox要求您在每个值上按OK。它不太舒服。

请告诉我这是不是你要找的。

再见 WIZ