Ошибка синтаксиса в предложении from драйвер odbc
Microsoft dBase driver обеспечивает подключение к файлами DBF и DBT по ODBC.
- Драйвер предустановлен в современных версиях Windows – не требуется установка дополнительных компонентов для работы с dBase
- Файлы DBF хранят однобайтовый текст – хранить Unicode текст в текстовых полях не получится
- Работа с таблицами, название которых длинее 8 символов, требует дополнительных действий, об этом ниже
Поэтому применять dBase для новых проектов не рекомендуется, для локальных решений лучше использовать Microsoft Access driver (*.mdb).
Строка подключения Microsoft dBase driver
Driver
CollatingSequence
Порядок сортировки текста (не кодировка). Возможные значения
Обязательный параметр. Каталог с файлами DBF.
Текущий каталог можно указать точкой DBQ=.
Deleted
Показывать или не показывать удалённые записи (поскольку в DBF при удалении из таблицы запись просто помечается как удалённая, но физически не удаляется из файла):
DriverId
Числовой идентификатор типа драйвера
ReadOnly
Позволяет ограничить внесение изменений.
При попытке внесения изменений на подключении с ReadOnly=1 выдаётся ошибка:
Exclusive
Задаёт исключительный доступ (также называется монопольный доступ) к базе данных.
Примеры строки подключения Microsoft dBase
Текущий каталог, только на чтение:
Каталог C:\Program\Database, монопольный доступ:
Примеры SQL запроса на выборку данных из БД Microsoft dBase:
Примеры SQL запроса на обновление данных в БД Microsoft dBase:
Особенности Microsoft dBase
Длинные имена таблиц
Если имя таблицы имеет длину больше 8 символов, то запрос с таким именем будет давать ошибку 42000:
Это происходит потому, что Microsoft dBase driver работает только с короткими именами файлов – 8.3, и поэтому вместо длинных имён нужно указывать короткие имена файлов, к тому же в квадратных скобках:
Автоматически в bat файле можно определить короткие имена через dir /x:
Кодировка текста в DBF файлах
ODBC драйвер Microsoft dBase использует кодировку OEM (866 для русской Windows) для текста в DBF файлах, и это значение изменить нельзя.
Байт 29 в заголовке DBF используется для обозначения кодировки текста (Code Page Mark) в FoxPro (см. Table File Structure, Code Pages Supported by Visual FoxPro), но не ODBC драйвером Microsoft dBase.
Поэтому при одновременном использовании Microsoft dBase и, например, BDE необходимо настроить BDE на хранение текста в OEM (866) кодировке.
Пробую подключиться к экселевскому файлу как к бд.
Но вот ничего не получается.
Использую ADO, кидаю на форму компонент ADOConnection, создаю строку подключения:
Выбираю провайдера Microsoft OLE DB Provider for ODBC Drivers
Создаю DSN файл:
Выбираю драйвер Driver do Microsoft Excel(*.xls)
В окне выбора файла источника данных указываю мой файл экселевский C:\test\qqq.xls
В выборе книги так же выбираю мой файл.
После чего создается файл DSN, который я и выбираю далее.
Содержание DSN файла:
[ODBC]
DRIVER=Driver do Microsoft Excel(*.xls)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
ReadOnly=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=excel 8.0
DriverId=790
DefaultDir=C:\test
DBQ=C:\test\qqq.xls
Нажимаю проверка подключения, выдается: проверка подключения выполнена.
Потом ставлю свойство Connected у ADOConnection в true, все успешно.
Строка подключения получается следующая:
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DBQ=C:\test\qqq.xls;DefaultDir=C:\test;Driver=;DriverId=790;FIL=excel 8.0;FILEDSN=C:\test\qqq.xls.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;R eadOnly=0;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
После чего кидаю на форму ADOQuery, соединяю его с ADOConnection в поле SQL ввожу простейший запрос:
select * from qqq
Делаю Active выдает ошибку:
Объект qqq не найден ядром базы данных Microsoft Jet, проверьте существование объекта и правильность имени и пути.
то же самое выводится и если пишу запрос:
select * from qqq.xls
> делай лучше прямой коннект, без посредников.
не совсем понял. Ты предлагаешь выбирать поставщика Microsoft Jet 4.0 OLE DB Provider?
но если там выбрать екселевский файл, при проверке подключения выдается ошибка:
Не выполнена проверка подключения из-за ошибки при инициализации поставщика. Нераспознаваемый формат базы данных: C:\test\qqq.xls
говорит: Синтаксическая ошибка в запросе. Неполное предложение запроса.
делаю даже через конструктор для CommandText в ADODataSet
получается запрос:
select * from first$
Может кому интересно и полезно будет. Тут все положения, все формы и форматы в экселе, которые предоставляются в ЦБ и ФОИВ (см. разные листы книги экселя),
И отдельно инструкции по каждому положению порядок подписания и шифрования файлов.
p.s. если кто-то не поленится и сделает по 440-П такую инструкцию (только ее не хватает), буду очень благодарен.
Комментарий
Коллеги, подскажите как в настройках DSN на ODBC прописать 64 битный драйвер до базы акцесса?
так не работает
ptk.dsn
[ODBC]
DRIVER=Microsoft Access Driver (*.mdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=x:\PSD\DATABASE
DBQ=x:\PSD\DATABASE\etalon97.mdb
Комментарий
Добрый день.
Пробуем мигрировать на SQL, подскажите пожалуйста как быть с настройками справочников?
справочники NSI
В файле elo.ini нужно оставить так?
DataBase]
ODBC=PTK_MS_SQL
;ODBC=PTKPSD
;ODBC=ORA_PTK_DB
;DBF=NSI (раскоментить и оставить настройку в ODBC)?
LICENZ=
DBF=
[Path]
Комментарий
Добрый день.
Пробуем мигрировать на SQL, подскажите пожалуйста как быть с настройками справочников?
справочники NSI
В файле elo.ini нужно оставить так?
DataBase]
ODBC=PTK_MS_SQL
;ODBC=PTKPSD
;ODBC=ORA_PTK_DB
;DBF=NSI (раскоментить и оставить настройку в ODBC)?
LICENZ=
DBF=
[Path]
"Единственный способ научиться играть лучше - играть с более сильным соперником!"
Комментарий
Строка с DBF должна быть одна (нижнюю закоментировать, верхнюю раскоментировать), в ODBC прописать NSI с ссылкой на каталог с НСИ (dBase IV).
Вот за ответ, большое спасибо.
Я так думаю можно оставить и (dBase 5)?
Есть еще вопросик:
Как правильно поступить с пользователями при миграции?
Вопрос, как поступать, заводить существующих пользователей с помощью ПО Администратор ПТК ПСД и назначать им привилегии и формы, или средствами SQL заводить пользователей, а только применять привилегии и формы в ПО?
Пробовали, и так и так, что то не получается J….
И как быть с новыми пользователями?
Спасибо.
Комментарий
Коллеги, кто нибудь может поделиться последним релизом?Комментарий
Вот за ответ, большое спасибо.
Я так думаю можно оставить и (dBase 5)?
Есть еще вопросик:
Как правильно поступить с пользователями при миграции?
Вопрос, как поступать, заводить существующих пользователей с помощью ПО Администратор ПТК ПСД и назначать им привилегии и формы, или средствами SQL заводить пользователей, а только применять привилегии и формы в ПО?
Пробовали, и так и так, что то не получается J….
И как быть с новыми пользователями?
Спасибо.
Нужно dBase IV почему - не знаю, так повелось в коллективе. :-)
Новых пользователей нужно заводить и в БД и в ПТК ПСД, последовательность не имеет значения, главное чтобы логины совпадали (может быть и пароли должны совпадать - не помню). При миграции думаю, что то же самое, но не проверял. Для заведения пользователей в БД есть специальный скрипт, там помимо регистрации еще права раздаются.
Последнего релиза у меня нет, скрипта для регистрации пользователей у меня сейчас тоже нет. Сорри.
"Единственный способ научиться играть лучше - играть с более сильным соперником!"Комментарий
Коллеги, подскажите как в настройках DSN на ODBC прописать 64 битный драйвер до базы акцесса?
так не работает
ptk.dsn
[ODBC]
DRIVER=Microsoft Access Driver (*.mdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=x:\PSD\DATABASE
DBQ=x:\PSD\DATABASE\etalon97.mdb
Должен быть установлен например AccessDatabaseEngine_2010_X64.exe
и выглядит у меня так.
[ODBC]
DRIVER=Microsoft Access Driver (*.mdb, *.accdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=281
DefaultDir=O:\PTKPSD\Database
DBQ=O:\PTKPSD\Database\etalon97.mdb
[ODBC]
DRIVER=Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)
UID=admin
UserCommitSync=Yes
Threads=3
Statistics=0
SafeTransactions=0
PageTimeout=600
MaxScanRows=8
MaxBufferSize=2048
FIL=dBASE 5.0
DriverId=533
Deleted=1
DefaultDir=O:\PTKPSD\NSI
DBQ=O:\PTKPSD\NSI
CollatingSequence=ASCII
Комментарий
Всем добрый день!
Кто-нибудь уже тестировал ПТК ПСД с Сигнатурой 6?
Комментарий
Добрый день. Подскажите, мб кто сталкивался. 250 форма на старых ОС (win xp, win server 2003 )проходит контроль, на Win10x64 ошибка - F250p12_0_100 - Контроль территории с кoдом 37000
Ошибка F250p12_2_L_06/08002_8002 - !(120) Раздел 2. Присутствует система расчетов 8002, отсутствующая в справочнике ee_sr250.dbf.
odbc версии IV на каталоги nci настроил. Сама ПТК на Oracle, подключение проходит.
Комментарий
Всем добрый день!
Кто-нибудь уже тестировал ПТК ПСД с Сигнатурой 6?
Комментарий
Добрый день. Подскажите, мб кто сталкивался. 250 форма на старых ОС (win xp, win server 2003 )проходит контроль, на Win10x64 ошибка - F250p12_0_100 - Контроль территории с кoдом 37000
Ошибка F250p12_2_L_06/08002_8002 - !(120) Раздел 2. Присутствует система расчетов 8002, отсутствующая в справочнике ee_sr250.dbf.
odbc версии IV на каталоги nci настроил. Сама ПТК на Oracle, подключение проходит.
Комментарий
Добрый день. Подскажите, мб кто сталкивался. 250 форма на старых ОС (win xp, win server 2003 )проходит контроль, на Win10x64 ошибка - F250p12_0_100 - Контроль территории с кoдом 37000
Ошибка F250p12_2_L_06/08002_8002 - !(120) Раздел 2. Присутствует система расчетов 8002, отсутствующая в справочнике ee_sr250.dbf.
odbc версии IV на каталоги nci настроил. Сама ПТК на Oracle, подключение проходит.
Комментарий
Коллеги, после установки клиента версии 6.24 ни у кого нет проблем с формой "СКАД Сигнатура.Обработка файлов"?Комментарий
по форме 0403205 ошибка в квитанции Ошибка определения кода организации по справочнику КО для типа посылки sx и кода организации 20428 Почеиу?Комментарий
Коллеги, проводим миграцию ПТК с одного сервера на другой.
При попытке формирования отчета выходит ошибка:
"Ошибка синтаксиса в предложении FROM.
State:37000,Native:-3506,Origin:[Mirosoft]Драйвер ODBC dBase]
SELECT n_on, s_kob, n_ame, long_name FROM \\server\formslist\nsi\file.DBF
Шаг 2 SQLAllocHandle"
В чем мб проблема? И как ее лечить?
Комментарий
прошу помочь с переходом на х64 ПТКПСД:
надо перенести х32 ПТКПСД верс.6.23 на Win10 х64
Доки нет никакой, старый админ не оставил..
под Вин10 прописал в ODBC64 настройки для NSI и PTKPSD по аналогии.
в elo_64.ini исправил на DBF_x64=NSI и ODBC_x64=PTKPSD
Скопировал х32 на нов.комп, пути и каталоги - одинаковые, затем поверх с заменой бросил х64 клиента
Офис х64, Visual C++ Redistributable 2010 Package стоит х64 и х32, Сигнатуру вот только пока не ставил.
делаю ярлычок на Client64 с параметром - полным путем к elo_64.ini
запускаю правой мышой от Админа.
получаю "Ошибка соединения, недопустимый путь(нет данных) SQLSetConnectAttr для драйвера"
Замучался. КУДА ПОСМОТРЕТЬ?
упс. Заработало. Извините. Само. Блин.. надо настройки писать в системном DSN в ODBC - тогда таких глюуов не будет
Комментарий
Тестируем сигнатуру 6 вместе с ПТК ПСД (клиент 6.24 32-разрядный, база Access)делаю sa посылку, пытаюсь обработать её обработчиком посылок, всплывает окно
"Системные ошибки формирования ИЭС1" в нём:
Пробовал на windows 10 32-разрядной, на Windows 10 64-разрядной - одна и та же ошибка.
Что ещё интересно - есть форма "СКАД Сигнатура. Обработка файлов". Там всё работает корректно: инициализация, подпись, шифрование. А из обработки посылок - никак.
Комментарий
Отвечу на свой же вопрос, вдруг кому пригодится.Запустил нового администратора и увидел на закладке "настройка КА" что в настройке шифрования стоит другая система (Verba)
(хотя в старом стояла Signatura5)
поменял, вышел, зашёл - ничего не изменилось.
Дело оказалось в elo.ini, который лежит в каталоге windows
Видимо, система не давала сохранить туда изменения.
Внёс вручную (хотя наверное, можно было запустить от имени администратора программу администрирования)
и всё заработало.
Комментарий
Дело оказалось в elo.ini, который лежит в каталоге windowsВидимо, система не давала сохранить туда изменения.
Используйте elo.ini в любом другом удобном месте и указывайте в комстроке ярлыка. Важный момент только, что если путь к указываемому elo.ini содержит пробелы, то НЕ НАДО его окружать кавычками, вопреки общим правилам путей Windows.
Мы используем ярлыки на сетевую установку с
- очень удобно! (Еще и файловые DSN - вообще ничего не надо на станциях прописывать.)
Комментарий
Комментарий
На Win 10 x64 в режиме мониторинга (большая зеленая буква М) выводятся квитанции в Internet Explorer, но не печатаются на принтер Подскажите, пож., где это настраивается.
Комментарий
dievДобрый день!
ПТК ПСД Обозреватель отчетности еще поддерживаете?
Будет доработка в связи с переходом на Сигнатуру 6?
Комментарий
Если используется вариант ПТК ПСД стоит на сервере и запуск его проводиться с клиентских мест, то:
1) не обязательно переписывать elo.ini на клиентскую машину, это позволит администратору настраивать пути или параметры данного файла настроек со своего рабочего места а также позволит пользователю с любой машины зайти со своими настройками. Т.е. расположите elo.ini в сети и пропишите путь к нему в ярлыке
"X:\PTKPSD\Client PTK PSD\Client.exe" X:\PTKPSD\KO\INI\elo_user1.ini
сам файл elo.ini можно обозвать по другому.
2) необязательно настраивать ODBC на каждом рабочем месте. Достаточно использовать "Файловый DSN", т.е. на рабочем месте пользователя достаточно присутствие самих драйверов ODBC а необходимые настройки берутся из файлов.
Например содержимое файла BASE_KO.DSN
[ODBC]
DRIVER=Driver do Microsoft Access (*.mdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=X:\PTKPSD\KO\Database
DBQ=X:\PTKPSD\KO\Database\etalon97.mdb
содержимое файла NSI_KO.DSN
[ODBC]
DRIVER=Driver do Microsoft dBase (*.dbf)
UID=admin
UserCommitSync=Yes
Threads=3
Statistics=0
SafeTransactions=0
PageTimeout=600
MaxScanRows=8
MaxBufferSize=2048
FIL=dBase IV
DriverId=277
Deleted=1
DefaultDir=X:\PTKPSD\NSI
DBQ=X:\PTKPSD\NSI
CollatingSequence=ASCII
Данные файлы base_ko.dsn и nsi_ko.dsn необходимо расположить на сервере и путь к ним пропишите в файле настроек elo.ini должно выглядеть вот так:
[DataBase]
FILEDSN=X:\PTKPSD\KO\DSN\base_ko.dsn
FILEDSN_DBF=X:\PTKPSD\KO\DSN\nsi_ko.dsn
DBF=
ODBC=
две последние строки должны быть без параметров иначе ПТК ПСД будет использовать конкретно указанные алиасы базы и файлов DBF.
3) если путь к каталогам TEMP и LOG в файле настроек elo.ini указать на сетевые папки (т.е. данные каталоги расположить в сети, для каждого пользователя должны быть свои каталоги) то при разборах ситуаций возникновения ошибки или некорректности администратор со своего рабочего места может их просматривать на предмет выявления причины либо некорректности работы самого пользователя либо ПО.
4) наличие в файле elo.ini в секции [user] строк:
CtrltheDebug=1
DebugLevel=1
позволит вести логи и дебаги работы при обработке посылок сканером ПТК ПСД или при контроле. Правда существенный недостаток использования данных строк это в замедление работы при большом количестве обработки.
Подключение пользователей к ПТК ПСД проводиться только помещением ярлыка на рабочий стол, при условии что на машине установлены драйвера ODBC и пользователю дан доступ к сетевым каталогам и файлам настроек.
Читайте также: