Access动态表单开发:使用CreateForm函数遇7870错误咨询
错误原因与解决方法
错误根源
你误用了CreateForm函数的参数:CreateForm([database][, formtemplate])的第一个参数是数据库路径/名称,第二个参数才是用来作为模板的表单名。你把已存在的表单名alpha传给第一个参数,Access会误认为要查找名为alpha的数据库,因此抛出错误7870。
CreateForm的作用是创建新表单,而非获取已存在的表单对象,这是你对函数的核心误解。
正确实现步骤
1. 获取已存在的alpha表单对象
根据表单当前状态选择对应方式:
- 若表单已在设计视图打开:
Dim frm As Form Set frm = Forms("alpha") - 若表单未打开,先以隐藏设计视图打开再获取:
Dim frm As Form DoCmd.OpenForm "alpha", acDesign, , , acHidden ' 以隐藏设计视图打开 Set frm = Forms("alpha")
2. 动态创建控件(以文本框为例)
获取表单对象后,调用CreateControl创建控件:
Dim ctl As Control ' 参数说明:表单名、控件类型、所在节、关联标签名、控件值、左、上、宽、高 Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 100, 100, 200, 50) ' 设置控件属性 ctl.Name = "txtDynamicInput" ctl.Caption = "动态生成的文本框"
3. 保存修改(可选)
若需要保留动态创建的控件,最后执行保存:
DoCmd.Save acForm, frm.Name
内容的提问来源于stack exchange,提问作者Kingsley Obeng
相关产品推荐
相关产品推荐

