Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Delphi - ADO - DBF (Ошибка синтаксиса) [D7, XP]


Мальчик ©   (2012-02-29 17:14:00) 

Здравствуйте.

Столкнулся с проблемой при работе с ADO. Установил соединение с DBF,
выполняю INSERT. Работает. Но, если имя поля в таблице " Names"
добавление не выполняется. Ошибка синтаксиса Insert into. Я так понял, поле с зарезервированным именем. Но мне просто необходимо сажать именно в это поле.

qMain.SQL.Text := 'insert into mtk.dbf (NAMES) values (:ns)';
qMain.Parameters.ParamByName('ns').Value      := 'Тест';
qMain.ExecSQL;

Подскажите как быть?

Сторонние компоненты использовать мне нельзя, BDE тоже.


sniknik   (2012-02-29 18:05:00) [1]

надо поставить OEM в Jet (в реестре), + если используется "внешний" BDE (установлен и настроено на него) то в нем у драйвера поставить "без кодировки" ansi вроде бы.


Anatoly Podgoretsky   (2012-02-29 17:58:00) [2]

> Delphi2007  (29.02.2012 17:50:12)  [12]

В данной СУБД нет кодировки для dBase IV, она машинная


Smile   (2012-02-29 17:55:00) [3]

Может кто-нить подскажет какой сейчас год на дворе?
Заранее спасибо:)


Delphi2007   (2012-02-29 17:50:00) [4]


> Неизвестна ни версия СУБД, ни провайдер, ни версия "dbf"
> Ничего неизвестно


dBase IV.

Строка соединения: Provider=Microsoft.JET.OLEDB.4.0;Data Source=D:\;Extended Properties=dBase IV;


Anatoly Podgoretsky   (2012-02-29 17:44:00) [5]


> У нас нет выбора, нужно отправлять данные в ведомство где
> требуют именно в таком формате.

Тогда вопроса нет, нельзя, так нельзя


Anatoly Podgoretsky   (2012-02-29 17:43:00) [6]


> Delphi2007   (29.02.12 17:38) [6]

Неизвестна ни версия СУБД, ни провайдер, ни версия "dbf"
Ничего неизвестно


Delphi2007   (2012-02-29 17:40:00) [7]


> ИМХО, надо ноги за такие наименования отстреливать.
> Костыли на ровном месте.
> Впрочем, тема для холивара.


У нас нет выбора, нужно отправлять данные в ведомство где требуют именно в таком формате.


Ega23   (2012-02-29 17:39:00) [8]


> Подскажите пожалуйста как настраивать кодировку. Я сейчас
> сажаю данные с кириллицей, а они не читабельны в FoxPro.
>  Нужно прописывать в строке соединения или при передаче
> параметров менять кодировку?


И Collation настраивать.


Delphi2007   (2012-02-29 17:38:00) [9]

Подскажите пожалуйста как настраивать кодировку. Я сейчас сажаю данные с кириллицей, а они не читабельны в FoxPro. Нужно прописывать в строке соединения или при передаче параметров менять кодировку?


Ega23   (2012-02-29 17:38:00) [10]

ИМХО, надо ноги за такие наименования отстреливать.
Костыли на ровном месте.
Впрочем, тема для холивара.


Anatoly Podgoretsky   (2012-02-29 17:36:00) [11]

Или так

qMain.SQL.Text := 'insert into mtk.dbf ("NAMES") values (:ns)';

или так
qMain.SQL.Text := 'insert into mtk.dbf ([NAMES]) values (:ns)';

Какой подойдет, в зависимости от провайдера


Delphi2007   (2012-02-29 17:22:00) [12]


> такие имена, а также с пробелами и т.д. нестандартные, экранируются
> кавычками (или другими символами в зависимости от движка),
>  попробуй [Names].


То, что нужно. Спасибо.


Delphi2007   (2012-02-29 17:19:00) [13]


> qMain.SQL.Text := 'insert into mtk.dbf ("NAMES") values
> (:ns)';
> ?
>


'Инструкция INSERT INTO содержит неизвестное имя поля '"NAMES"'.  Проверьте, что имя задано без ошибок, и повторите операцию'.


sniknik   (2012-02-29 17:19:00) [14]

> с зарезервированным именем.
такие имена, а также с пробелами и т.д. нестандартные, экранируются кавычками (или другими символами в зависимости от движка), попробуй [Names ].

> BDE тоже.
ты его уже используешь. просто "с широко закрытыми глазами".


Ega23   (2012-02-29 17:15:00) [15]

qMain.SQL.Text := 'insert into mtk.dbf ("NAMES") values (:ns)';
?


Наверх

Титульная страница Поиск, карта сайта Написать письмо