Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 执行依赖于表单参数值的已保存访问查询时出错_Sql_Ms Access_Vba - Fatal编程技术网

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)
“其余的。。。