2

我可以访问这个 qry,如果我进入它的设计,它有一个标准(据我所知,它是一个参数)。

此 qry 基于的报告非常好,单击它会弹出一个小东西,询问所需的信息并关闭它。在代码中,我试图这样做并得到一个

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] & "*"

我需要喜欢和所有这些来设置该参数吗?

4

3 回答 3

3

在 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

' 或者

DoCmd.SetParameter "Parameter1", 33
DoCmd.SetParameter "Parameter2", 2
DoCmd.OpenQuery MyQryDef.Name

见这里: https ://msdn.microsoft.com/en-us/library/office/ff194182(v=office.14).aspx

哈维

于 2015-06-10T23:05:14.340 回答
1

Access Query 的参数属性是只读的。

你基本上有两个选择,我可以马上想到。

第一种是每次需要使用保存的查询时,完全重写SQL。你可以在这里看到一个例子:How to change querydef sql programmatically in MS Access

第二个选项是每次打开报表时手动设置报表的 RecordSource。使用这种方法,您根本不会使用已保存的查询。当报告打开时,您需要在代码中设置/存储整个 SQL 语句,询问用户的任何输入并将您获得的输入附加到您的 SQL 语句中。您可以设置一个系统,将基本 SQL 存储在一个表中,但为简单起见,这对于实现您在此处尝试执行的操作不是必需的。

MS Access 确实允许您以您在此处尝试的方式使用参数化查询(与您拥有的代码不同),但据我所知,它需要您在 MS SQL Server 或 MySQL 中使用存储过程,然后您'd需要使用ADO。一个很大的缺点是 Access 报告不能绑定到 ADO 记录集,因此对于您在此特定实例中尝试执行的操作而言,这并不是一个真正的选择。

于 2013-09-16T12:08:15.043 回答
1

好像是笔误。您正在创建名为“qfd”的对象,并尝试使用名为“qdf”的对象 Set qfd =......然后 qdf.Para......

我喜欢放入Option Explicit我的模块来帮助我找到这些类型的问题。

于 2018-07-07T16:55:39.460 回答