我正在尝试创建一个宏,以根据查询结果更新表单中字段的值。
我对在 Access 中使用 vba 还很陌生,所以如果我问了一个基本问题,我深表歉意。
我应该提到,“测试”查询只返回一个结果。它的用法本质上与 VLookup 类似。
目前我的代码如下:
Private Sub UpdateBasic_Click()
Dim bucket As String
DoCmd.OpenQuery "test", acViewNormal, acReadOnly
'this line is meant to record the result of the query into a variable. It is not working but I haven’t found the right command to get it to pick up the data yet.
bucket = A1
DoCmd.Close acQuery, "test", acSaveNo
DoCmd.OpenForm "BasicData", acNormal, , , acFormEdit, acWindowNormal, "Global_ID = 'sdkfa'"
'this line is meant to update the value of the field on the form.
DoCmd.SetProperty testfield, acPropertyValue, bucket
End Sub
我根本没办法让 SetProperty 命令工作。无论我尝试给它一个变量(如 bucket)还是一个值(如 10),它总是告诉我数据类型不匹配。错误消息如下:
运行时错误“2948”:您输入的表达式对于其中一个参数来说是错误的数据类型。
任何帮助都将不胜感激。
答案1
DoCmd.SetProperty testfield, acPropertyValue, bucket
使用上述代码,您正在尝试设置property
对于控件,不改变value
。属性包括背景颜色、高度、宽度等。
如果要设置该值,您只需使用该me
函数来引用表单上的控件。
me.testfield = bucket
testfield
这告诉访问用变量保存的值来填充表单控件bucket
。
注意:您可能需要在该命令后添加一个命令me.refresh
来让表单更新字段。