我有一个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
答案 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