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