我有一個用VBA編寫並在MS Access內運行的現有程序。出於各種原因,我們希望將其從Access中取出並製作一個獨立的程序。ADO Jet SQL引發「FROM子句中的語法錯誤」始終
因此我將VBA移植到C++。下面的代碼在VBA工作
Dim DataFile As New ADODB.Connection
Dim rstSrc As New ADODB.Recordset
DataFile.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.aaf;"
rstSrc.Open "SELECT * FROM [Headr];", DataFile, adOpenStatic, adLockReadOnly
我的代碼到C++下面的端口不起作用。它每次都會給出錯誤「FROM子句中的語法錯誤」。
_RecordsetPtr RS("ADODB.Recordset");
_ConnectionPtr CON("ADODB.Connection");
CON->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.aaf;","","",adConnectUnspecified);
RS->PutRefActiveConnection(CON);
RS->Open("SELECT * FROM [Headr];",vtMissing,adOpenStatic,adLockReadOnly,adCmdTable);
我當時覺得[headr]是個問題,也許這是某種僅在Access環境中擴展的宏。所以我嘗試了一些其他的SQL語句作爲測試,並且總是在FROM子句中得到相同的語法錯誤。
我試圖
SELECT MSysObjects.Name AS TABLE_NAME FROM MSysObjects;
SELECT * FROM MSysObjects WHERE Type = 1 AND Flags = 0;
SELECT'ASDF'as DEST FROM DUAL;
所有這些都給出了同樣的錯誤。
任何想法? 謝謝!
什麼是數據源'test.aaf'? Access數據庫以.mdb或.accdb結尾,並需要數據源引用中的完整路徑。如果這是另一個數據源,請確保您的SQL語法符合它。 – Parfait