Ms access 尝试为access中的查询设置QueryDefs参数时发生VBA错误
我在access中有这个qry,如果我进入它的设计,它有一个标准(据我所知,这是一个参数) 本qry基于的报告效果很好,点击它会弹出一个小东西,询问所需信息,然后关闭它。在代码中,我试图这样做,并得到一个Ms access 尝试为access中的查询设置QueryDefs参数时发生VBA错误,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我在access中有这个qry,如果我进入它的设计,它有一个标准(据我所知,这是一个参数) 本qry基于的报告效果很好,点击它会弹出一个小东西,询问所需信息,然后关闭它。在代码中,我试图这样做,并得到一个 Run-time error '424' Object Required 冒犯的界线是: qdf.Parameters("Insurance Name").Value = inputStr 前几行: Set qfd = CurrentDb.QueryDefs("qryInsGrpRost
Run-time error '424'
Object Required
冒犯的界线是:
qdf.Parameters("Insurance Name").Value = inputStr
前几行:
Set qfd = CurrentDb.QueryDefs("qryInsGrpRoster")
Dim inputStr As String
inputStr = InputBox("Enter Insurance")
'Supply the parameter value
qdf.Parameters("Insurance Name").Value = inputStr
inputStr
肯定等于该值,但它失败了
qry中的标准行为:
Like "*" & [Insurance Name] & "*"
我需要类似的东西来设置参数吗 访问查询的parameters属性是只读的 这里基本上有两种选择,我可以马上想到 第一种方法是在每次需要使用时完全重写已保存查询的SQL。您可以在此处看到这样一个示例: 第二个选项是在每次打开报告时手动设置报告的RecordSource。使用此方法,您根本不会使用已保存的查询。当报表打开时,您需要在代码中设置/存储整个SQL语句,请求用户提供任何输入,并将获得的输入附加到SQL语句中。您可以设置一个系统,将基本SQL存储在一个表中,但为了简单起见,这并不是实现您在这里尝试的操作所必需的
MS Access确实允许您以这里尝试的方式使用参数化查询(与代码不同),但据我所知,它需要您在MS SQL Server或MySQL中使用存储过程,然后需要使用ADO。一个很大的缺点是Access报告无法绑定到ADO记录集,因此这实际上不是您在这个特定实例中尝试执行的操作的选项。Access查询的parameters属性是只读的 这里基本上有两种选择,我可以马上想到 第一种方法是在每次需要使用时完全重写已保存查询的SQL。您可以在此处看到这样一个示例: 第二个选项是在每次打开报告时手动设置报告的RecordSource。使用此方法,您根本不会使用已保存的查询。当报表打开时,您需要在代码中设置/存储整个SQL语句,请求用户提供任何输入,并将获得的输入附加到SQL语句中。您可以设置一个系统,将基本SQL存储在一个表中,但为了简单起见,这并不是实现您在这里尝试的操作所必需的
MS Access确实允许您以这里尝试的方式使用参数化查询(与代码不同),但据我所知,它需要您在MS SQL Server或MySQL中使用存储过程,然后需要使用ADO。一个很大的缺点是Access报告无法绑定到ADO记录集,因此这实际上不是您在这个特定实例中尝试执行的选项。在Access 2010和2013中 这使用DAO,可能会引起兴趣
DIM MyQryDef as querydef
Dim a as string
a = ""
a = a & "PARAMETERS Parameter1 INT, Parameter2 INT; "
a = a & "SELECT f1, f2 FROM atable WHERE "
a = a & "f3 = [Parameter1] AND f4 = [Parameter2] "
a = a & ";"
Set MyQryDef = currentdb().CreateQueryDef("MyQueryName", a)
MyQryDef.Parameters("Parameter1").Value = 33
MyQryDef.Parameters("Parameter2").Value = 2
' You could now use MyQryDef with DAO recordsets
' to use it with any of OpenQuery, BrowseTo , OpenForm, OpenQuery, OpenReport, or RunDataMacro
DoCmd.SetParameter "Parameter1", 33
DoCmd.SetParameter "Parameter2", 2
DoCmd.Form YourFormName
”“或者
请看这里:
哈维在Access 2010和2013中 这使用DAO,可能会引起兴趣
DIM MyQryDef as querydef
Dim a as string
a = ""
a = a & "PARAMETERS Parameter1 INT, Parameter2 INT; "
a = a & "SELECT f1, f2 FROM atable WHERE "
a = a & "f3 = [Parameter1] AND f4 = [Parameter2] "
a = a & ";"
Set MyQryDef = currentdb().CreateQueryDef("MyQueryName", a)
MyQryDef.Parameters("Parameter1").Value = 33
MyQryDef.Parameters("Parameter2").Value = 2
' You could now use MyQryDef with DAO recordsets
' to use it with any of OpenQuery, BrowseTo , OpenForm, OpenQuery, OpenReport, or RunDataMacro
DoCmd.SetParameter "Parameter1", 33
DoCmd.SetParameter "Parameter2", 2
DoCmd.Form YourFormName
”“或者
请看这里:
哈维似乎是个打字错误。您正在创建名为“qfd”的对象,并尝试使用名为“qdf”的对象
设置qfd=
。。。
然后
qdf.Para
我喜欢在我的模块中加入
选项Explicit
,以帮助我找到这些类型的问题。看起来像是打字错误。您正在创建名为“qfd”的对象,并尝试使用名为“qdf”的对象
设置qfd=
。。。
然后
qdf.Para
我喜欢在我的模块中加入
选项Explicit
,以帮助我找到这些类型的问题。Ty你证实了我的恐惧。Ty你证实了我的恐惧。