由于空格,ADODB.Recordset到SQL Server查询失败

时间:2013-08-29 23:17:16

标签: sql-server vba ms-access ado

我有一个SQL字符串,用于在MS Access中打开ADODB.Recordset。当我尝试打开记录集时,我收到此错误:

  

错误-2147217900(无效的SQL语句;预期'DELETE','INSERT',   'PROCEDURE','SELECT'或   在模块AutomaticEmails的过程SendAutomaticEmails '更新'。)

在即时窗口中,我复制正在使用的SQL,并将其粘贴到SQL Server Management Studio中。 SQL Server也不喜欢查询,红色下划线空格...当我手动删除SQL中的每个空格并将其添加回来时,查询有效。当我在Access VBA过程(对于SQL字符串)中执行相同操作时,它可以正常工作。

与空间有什么关系!?你认为这是一个文件编码问题吗?我应该注意,这个Access文件是在TFS中进行源代码控制的,所以源文件是从TFS中删除的(如果这很重要的话)。

这是字符串:

SELECT TOP 1 Person.PersonID, Person.TypeID, ToStatusID, FromStatusID 
FROM 
StatusTracking, 
Person 
WHERE Person.PersonID = 85432 
AND Person.PersonID = StatusTracking.PersonID 
ORDER BY ID DESC

1 个答案:

答案 0 :(得分:0)

正如我上面的评论所示,这是一个带有“”字符的编码问题。

在进行更多调查并使用Notepad ++进行一些编码更改后,似乎确实存在一些幻像字符。当我将SQL从VBA编辑器复制到Notepad ++并将编码更改为ANSI时,会出现一堆字符,几乎就是有空格的地方。

SELECTÂ TOPÂ 1Â 
     Person.PersonID
  , Person.TypeID
  , ToStatusID
  , FromStatusID 
FROM StatusTracking, Person 
WHEREÂ 1 = 1
   ANDÂ Person.PersonIDÂ =Â 85432 Â 
   ANDÂ Person.PersonIDÂ =Â StatusTracking.PersonIDÂ 
ORDERÂ BYÂ IDÂ DESC