Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 server 带子查询的SQL查询出现MS Access VBA运行时错误3075_Sql Server_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

Sql server 带子查询的SQL查询出现MS Access VBA运行时错误3075

Sql server 带子查询的SQL查询出现MS Access VBA运行时错误3075,sql-server,ms-access,vba,ms-access-2010,Sql Server,Ms Access,Vba,Ms Access 2010,我在VBA中遇到了一个问题,SQL查询的执行会生成运行时错误3075 在Microsoft SQL Server Manager中运行相同的查询时,我没有遇到任何问题,并且返回了所需的结果 我尝试使用Debug.print打印sql查询(如这里所建议的那样:),以查看查询的外观-它看起来正常,并且粘贴到sql Server Manager中工作得非常好 我所做的是为某个经销商(以及其他一些标准)选择行总数(调查响应),将结果除以A2=5(通过子查询选择)的行总数,然后乘以100得到A2=5的百分

我在VBA中遇到了一个问题,SQL查询的执行会生成运行时错误3075

在Microsoft SQL Server Manager中运行相同的查询时,我没有遇到任何问题,并且返回了所需的结果

我尝试使用Debug.print打印sql查询(如这里所建议的那样:),以查看查询的外观-它看起来正常,并且粘贴到sql Server Manager中工作得非常好

我所做的是为某个经销商(以及其他一些标准)选择行总数(调查响应),将结果除以A2=5(通过子查询选择)的行总数,然后乘以100得到A2=5的百分比

你们觉得怎么了?是否存在我可能没有考虑的访问限制?错误消息中仅显示子查询

以下是我的问题(我用换行符将其切碎,以便阅读):

未切割版本(与上面完全相同,但没有换行符):

VBA代码段,查询过程:

strSQL = "SELECT DealerCode, (SELECT CAST(COUNT(A2) AS FLOAT) FROM dbo_Service WHERE A2 = 5 AND MarketCode = 'CA' AND DealerCode = '3140' AND CompleteDate BETWEEN '2014-01-20' AND '2015-01-20') / COUNT(*) * 100 AS TopBox FROM dbo_Service WHERE DealerCode = '3140' AND MarketCode = 'CA' AND CompleteDate BETWEEN '2014-01-20' AND '2015-01-20' GROUP BY DealerCode;"
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL)
topBox = rs!topBox
db.Close
这是我收到的错误图像的链接


最好的问候和感谢阅读

这是SQL Server方言查询,不是MS Access。您需要在SQL Server上执行查询,这是一个传递查询。有关更多信息和解决方案,请参阅。

这是SQL Server方言查询,而不是MS Access。您需要在SQL Server上执行查询,这是一个传递查询。有关更多信息和解决方案,请参阅。

因此,在遵循HansUp的回答后,我编辑了我的SQL查询,并用Cdbl替换了CAST

现在看起来是这样的:

"SELECT DealerCode, ((SELECT CDbl(COUNT(A2)) FROM dbo_Service WHERE A2 = 5 AND MarketCode = 'CA' AND DealerCode = '3140' AND CompleteDate BETWEEN '2014-01-20' AND '2015-01-20') / COUNT(*)) * 100 AS TopBox FROM dbo_Service WHERE DealerCode = '3140' AND MarketCode = 'CA' AND CompleteDate BETWEEN '2014-01-20' AND '2015-01-20' GROUP BY DealerCode;"
SELECT CDbl(COUNT(A2))
当转换为Cdbl而不是CAST时,我还必须在转换后删除“AS FLOAT”

简而言之,它看起来是这样的:

"SELECT DealerCode, ((SELECT CDbl(COUNT(A2)) FROM dbo_Service WHERE A2 = 5 AND MarketCode = 'CA' AND DealerCode = '3140' AND CompleteDate BETWEEN '2014-01-20' AND '2015-01-20') / COUNT(*)) * 100 AS TopBox FROM dbo_Service WHERE DealerCode = '3140' AND MarketCode = 'CA' AND CompleteDate BETWEEN '2014-01-20' AND '2015-01-20' GROUP BY DealerCode;"
SELECT CDbl(COUNT(A2))
与此相反:

SELECT CAST(COUNT(A2) AS FLOAT)
一个快速解决办法,做的工作


谢谢你的回答

所以,在遵循HansUp的回答之后,我编辑了我的SQL查询,并用Cdbl替换了CAST

现在看起来是这样的:

"SELECT DealerCode, ((SELECT CDbl(COUNT(A2)) FROM dbo_Service WHERE A2 = 5 AND MarketCode = 'CA' AND DealerCode = '3140' AND CompleteDate BETWEEN '2014-01-20' AND '2015-01-20') / COUNT(*)) * 100 AS TopBox FROM dbo_Service WHERE DealerCode = '3140' AND MarketCode = 'CA' AND CompleteDate BETWEEN '2014-01-20' AND '2015-01-20' GROUP BY DealerCode;"
SELECT CDbl(COUNT(A2))
当转换为Cdbl而不是CAST时,我还必须在转换后删除“AS FLOAT”

简而言之,它看起来是这样的:

"SELECT DealerCode, ((SELECT CDbl(COUNT(A2)) FROM dbo_Service WHERE A2 = 5 AND MarketCode = 'CA' AND DealerCode = '3140' AND CompleteDate BETWEEN '2014-01-20' AND '2015-01-20') / COUNT(*)) * 100 AS TopBox FROM dbo_Service WHERE DealerCode = '3140' AND MarketCode = 'CA' AND CompleteDate BETWEEN '2014-01-20' AND '2015-01-20' GROUP BY DealerCode;"
SELECT CDbl(COUNT(A2))
与此相反:

SELECT CAST(COUNT(A2) AS FLOAT)
一个快速解决办法,做的工作


谢谢你的回答

欢迎来到堆栈溢出<代码>强制转换在Access SQL中不受支持。谢谢!这感觉就像我真的应该早就想到的东西,如果有一个facepalm笑脸可以添加,我现在肯定会使用它!再次感谢您的快速回复!欢迎来到堆栈溢出<代码>强制转换在Access SQL中不受支持。谢谢!这感觉就像我真的应该早就想到的东西,如果有一个facepalm笑脸可以添加,我现在肯定会使用它!再次感谢您的快速回复!谢谢你的回答!在使用这两种解决方案进行测试之后,我开始在VBA中编辑SQL查询,它的工作非常出色。你提交的链接在其他方面帮助了我,谢谢!谢谢你的回答!在使用这两种解决方案进行测试之后,我开始在VBA中编辑SQL查询,它的工作非常出色。你提交的链接在其他方面帮助了我,谢谢!