У меня есть существующая программа, написанная в 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);
Я был supsicious, что [headr] была проблема, что, возможно, это было какое-то макрос, который расширяется только в среде Access. Поэтому я пробовал некоторые другие операторы SQL, как тест, и всегда получал ту же синтаксическую ошибку в предложении FROM.
Я попытался
ВЫБОР MSysObjects.Name КАК table_name ОТ MSysObjects;
SELECT * FROM MSysObjects WHERE Тип = 1 И Флаги = 0;
SELECT 'ASDF' AS TEST FROM DUAL;
Все те же ошибки.
Любые идеи? Спасибо!
Что такое источник данных 'test.aaf'? Базы данных доступа заканчиваются на .mdb или .accdb и требуют полного пути в ссылке Источник данных. Если это другой источник данных, убедитесь, что ваш синтаксис SQL придерживается его. – Parfait