2013-08-29 48 views
0

我有一個SQL字符串用於在MS Access中打開一個ADODB.Recordset。當我嘗試打開記錄我得到這個錯誤:ADODB.Recordset到SQL Server查詢由於空格而失敗

Error -2147217900 (Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.) in procedure SendAutomaticEmails of Module AutomaticEmails

在不久的窗口,我複製了所使用的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 
+2

顯示字符串? – 2013-08-30 08:16:28

+0

嘿,不過。這裏的字符串:SELECT TOP 1 PERSON.PERSONID,Person.TypeID,ToStatusID,FromStatusID FROM StatusTracking,人 WHERE PERSON.PERSONID = 85432 AND PERSON.PERSONID = StatusTracking.PersonID ORDER BY ID DESC – StoneJedi

+0

做更多的調查和後使用記事本++做一些編碼改變,那裏似乎有一些幻影字符。當我將VBA編輯器中的SQL複製到Notepad ++並將編碼更改爲ANSI時,會出現一堆字符,幾乎存在任何空間。至於他們如何到達那裏,我不知道,但這是我們將要調查的事情。 SELECTA TOPA 1A PERSON.PERSONID,ÂPerson.TypeID,ÂToStatusID,ÂFromStatusIDÂ FROMA StatusTracking,人物角色 WHEREÂPerson.PersonIDÂ= A 85432Â 安達Person.PersonIDÂ= AStatusTracking.PersonIDÂ ORDERÂBYA IDA DESC – StoneJedi

回答

0

正如我上面的評論指出,這是一個編碼問題瓦特/「一」字。

在做了更多調查並使用Notepad ++進行一些編碼更改之後,確實出現了一些幻影字符。當我將VBA編輯器中的SQL複製到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