0

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

模块 AutomaticEmails 的过程 SendAutomaticEmails 中出现错误 -2147217900(无效的 SQL 语句;预期为“DELETE”、“INSERT”、“PROCEDURE”、“SELECT”或“UPDATE”。)

在即时窗口中,我复制正在使用的 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
4

1 回答 1

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
于 2014-11-09T06:11:09.330 回答