我在Microsoft Access 2010中创建了一个查询和一个表单。名为TEST的表单如下所示:
Field1 Field2
a 200
b 400
在VBA中,我尝试访问表单中的不同字段:
Form_TEST.Field1....
我想将值200和400保存在整数变量(Dim a As Integer)中并使用MsgBox打印它。我怎样才能实现这个目标?
答案 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。它不太舒服。
请告诉我这是不是你要找的。 p>
再见 WIZ