Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/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,我正在用VBA编写一个应用程序,它使用ODBC和查询大型数据集。我发现将SQL放在一个字符串中——或者连接字符串中——是很混乱的,并且似乎对超过标准字符串长度的任何东西都不起作用 我采用了使用查询生成器并使用参数保存查询的方法。我正试图通过编程方式访问此查询。然而,这个查询有3个参数,我没有找到文章和答案 代码如下: Dim qdf Set qdf = CurrentDb.QueryDefs("Kilometers") qdf.Parameters("startDate").value = st

我正在用VBA编写一个应用程序,它使用ODBC和查询大型数据集。我发现将SQL放在一个字符串中——或者连接字符串中——是很混乱的,并且似乎对超过标准字符串长度的任何东西都不起作用

我采用了使用查询生成器并使用参数保存查询的方法。我正试图通过编程方式访问此查询。然而,这个查询有3个参数,我没有找到文章和答案

代码如下:

Dim qdf
Set qdf = CurrentDb.QueryDefs("Kilometers")
qdf.Parameters("startDate").value = startDate
qdf.Parameters("endDate").value = endDate
qdf.Parameters("workshopCode").value = garageRst!ID

Set rs = kpidb.OpenRecordset("Kilometers")
在sql语句中,我有一个名为“km”的参数,如下所示:

PARAMETERS startDate DateTime, endDate DateTime, workshopCode Text ( 255 );
在语句中,使用方括号表示参数。我还将它们设置在参数访问工具中

当我运行代码时,Access说它需要3个参数(错误3061)


这是我实现最终目标的方式吗?我做错了什么?

您需要使用创建的QueryDef对象打开记录集。更正后的代码应如下所示:

Dim qdf
Set qdf = CurrentDb.QueryDefs("Kilometers")
qdf.Parameters("startDate").value = startDate
qdf.Parameters("endDate").value = endDate
qdf.Parameters("workshopCode").value = garageRst!ID

Set rs = qdf.OpenRecordset

希望能有帮助。祝您的项目好运。

您是否尝试过在每个参数名称前加上
@