字符串变量的 MS Access 参考表
Posted
技术标签:
【中文标题】字符串变量的 MS Access 参考表【英文标题】:MS Access Reference Form by string variable 【发布时间】:2016-08-21 16:02:49 【问题描述】:我有一个组合框,它从MySysObjects
获取其行源并显示数据库中的完整表单列表。
从组合框中选择一个表单名称,并使用 VBA 将其作为字符串传递给函数(因为不知道如何将该字符串转换为表单)。
所以,一旦表单的字符串值被传递给函数,我现在就有了表单的字符串变量,我希望做一些事情......
我通常会使用:
Function MyFunction()
Dim frmForm as Form
Set frmForm = form("MyForm")
DoCmd.OpenForm frmForm.Name, acDesign, , , , acHidden
With frmForm
Do stuff...
End With
End Function
但是!因为我已将字符串变量传递给函数 - 例如:
Function MyFunction(strFormName as String)
Dim frmForm as Form
Set frmForm = Form(strFormName) 'THIS DOESN'T WORK
DoCmd.OpenForm frmForm.Name, acDesign, , , , acHidden
With frmForm
Do stuff...
End With
End Function
我的问题是如何使用Set
语句返回Form
对象?
我可以转换表单上的组合框值并将Form
对象传递给函数,或者将组合框值转换为函数并使用Set
或任何需要的东西进行转换。
我希望这是一个简单的语法问题,但我已经尝试了我所知道的一切,它一定是我没有尝试过的难以捉摸的答案!
【问题讨论】:
【参考方案1】:这一行有2个问题:
Set frmForm = Form(strFormName)
首先集合的名称是Forms
,而不是Form
。
第二个是Forms
是当前打开的表单的集合。所以如果strFormName
当时没有打开,Forms(strFormName)
会抛出一个错误。
如果你只是做DoCmd.OpenForm strFormName, acDesign, , , , acHidden
,表单将在设计视图中打开并隐藏,无论它是否已经打开。然后你可以在不触发错误的情况下执行Set frmForm
。
Function MyFunction(strFormName As String)
Dim frmForm As Form
DoCmd.OpenForm strFormName, acDesign, , , , acHidden
Set frmForm = Forms(strFormName)
With frmForm
'Do stuff...
End With
End Function
【讨论】:
感谢您的回复!是的,我看到我犯了几个错字!!我发现徒手输入更容易,并且显然错过了一些大写问题和缺少字母(尤其是's')!从根本上说,这是我之前多次了解并阅读过的 Set 部分的 ORDER(在打开表单之前您无法设置任何内容!),但由于之前从未真正使用过它,我选择忽略一个基本点!问题已解决!想想我也花了几个小时研究它!一旦你知道;你知道的! 还有...谢谢!谢谢!以上是关于字符串变量的 MS Access 参考表的主要内容,如果未能解决你的问题,请参考以下文章
长文本(> 255 个字符)在 MS Access 2013 中导入和添加到现有表时被截断