Sql 执行依赖于表单参数值的已保存访问查询时出错
我试图简单地打开一个查询,然后从中选择所有内容。查询需要从和到日期。我有一个Sql 执行依赖于表单参数值的已保存访问查询时出错,sql,ms-access,vba,Sql,Ms Access,Vba,我试图简单地打开一个查询,然后从中选择所有内容。查询需要从和到日期。我有一个frmA,通过它我将参数传递给查询。我打开frmA,输入两个日期。有趣的是,当我执行docmd.openQuery“qryInsurance”时,它会毫无问题地打开它,然而,当我尝试从qryInsurance中选择*时,它告诉我它需要两个参数 代码如下: 公共函数CountFollowup()为布尔值 错误转到错误处理程序时: 作为DAO.Recordset的Dim rs1 作为DAO.Recordset的Dim rs2
frmA
,通过它我将参数传递给查询。我打开frmA
,输入两个日期。有趣的是,当我执行docmd.openQuery“qryInsurance”
时,它会毫无问题地打开它,然而,当我尝试从qryInsurance
中选择*时,它告诉我它需要两个参数
代码如下:
公共函数CountFollowup()为布尔值
错误转到错误处理程序时:
作为DAO.Recordset的Dim rs1
作为DAO.Recordset的Dim rs2
作为字符串的Dim strsql
Dim rcount为整数
Set DB=CurrentDb
CountFollowup=False
DoCmd.OpenQuery“qryInsurance”
strsql=“从[qryInsurance]中选择*;”
'CurrentDb.Execute“从临时数据中删除*
Set rs1=CurrentDb.OpenRecordset(strsql,dbOpenSnapshot)'这里是它给我一个错误的地方,在strsql之前打开它时需要两个参数
Set rs2=CurrentDb.OpenRecordset(“temp_InsData”)
调试.打印strsql
退出功能
错误\u处理程序:
MsgBox错误编号&“-”&错误说明
端函数
似乎qryInsurance包含对表单控件的引用,可能是这样的<代码>表格!弗玛!从
这些引用在使用DoCmd.OpenQuery
时解析,但在使用DAO.Database.OpenRecordset
方法时不会解析。使用OpenRecordset
,它们被解释为未提供值的参数
如果打开查询的QueryDef
,然后将每个参数Name
提供给Eval()
,它将为您提供这些表单控件的值。。。因此,您可以将它们作为参数值提供
这个描述可能不容易理解,但是代码非常简单
在设置db=CurrentDb之前添加这些变量声明
Dim db作为DAO.Database
作为DAO.Parameter的Dim prm
将qdf设置为DAO.QueryDef
什么样的后续行动?布尔值?
后来
Set db=CurrentDb
CountFollowup=False
'DoCmd.OpenQuery“qryInsurance”
'strsql=“从[qryInsurance]中选择*;”
'CurrentDb.Execute“从临时数据中删除*
设置qdf=db.querydfs(“qryInsurance”)
对于qdf.参数中的每个prm
prm.Value=Eval(prm.Name)
下一个
“Set rs1=CurrentDb.OpenRecordset(strsql,dbOpenSnapshot)”这里是它给我一个错误的地方,在strsql之前打开它时需要两个参数
Set rs1=qdf.OpenRecordset(dbOpenSnapshot)
“其余的。。。