Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Ошибка вида: MyQuery: Field 'имя_поля' not found.


Автор: malor 7.6.2007, 15:06
Делаю вставку в таблицу:
Код
SQL_PAY= 'INSERT INTO pay (pay_dt,pay_service,pay_account,pay_ammount,pay_comission,pay_state) VALUES (здесь перечисляю значения)';
PayQuery.SQL.Text:=SQL_PAY;
PayQuery.ExecSQL;
На последней из этих строк выскакивает сообщение:
PayQuery: Field 'pay_id' not found.
Как видите это поле в запросе вообще не упомянуто! Чего тогда проге не нравится? 
Тем не менее, если проверить содержимое таблицы,то выяснится, что вставка строки происходит!

При создании таблицы данное поле объявлялось так:
`pay_id` int(10) unsigned NOT NULL auto_increment

Раньше, вместо строки PayQuery.ExecSQL; я использовал PayQuery.Active := True;. Одну запись внести я успел, а затем стала выскакивать ошибка:
Can not open a Resultset.
На http://www.delphipages.com/threads/thread.cfm?ID=151324&G=151230  написано - использовать ExecSQL.

Что делать с ошибками ?

У челов в постах
http://forum.vingrad.ru/topic-106352.html
http://forum.vingrad.ru/forum/topic-125266.html
в какой-то степени похожие проблемы.

MySQL 5.0.37, ZeosDBO-6.6.1_beta (2007-02-25), Delphi 7, WinXP_sp2

Автор: Rodman 7.6.2007, 20:50
Код

SQL_PAY= 'INSERT INTO pay (pay_dt,pay_service,pay_account,pay_ammount,pay_comission,pay_state) VALUES (здесь перечисляю значения)';//вот после VALUES должны быть параметры
PayQuery.SQL.Text:=SQL_PAY;

PayQuery.ExecSQL;

Автор: malor 7.6.2007, 22:05
C ошибкой про "PayQuery: Field 'pay_id' not found" разобрался, это дальше по коду располагалось неадекватное обращение к записям таблицы. Но тем не менее, Rodman, что за параметры вы имели ввиду?

Вопрос про 'Can not open a Resultset.' остается в силе...

Автор: zews2006 8.6.2007, 07:33
SQL_PAY= 'INSERT INTO pay (pay_dt,pay_service,pay_account,pay_ammount,pay_comission,pay_state) VALUES (:p1,:p2,:p3,:p4,:p5,:p6)';
PayQuery.SQL.Text:=SQL_PAY;
PayQuery.Parameters.ParamByName('p1').Value:=<значение для pay_dt>;
PayQuery.Parameters.ParamByName('p2').Value:=<значение для pay_service>;
PayQuery.Parameters.ParamByName('p3').Value:=<значение для pay_account>;
PayQuery.Parameters.ParamByName('p4').Value:=<значение для pay_ammount>;
PayQuery.Parameters.ParamByName('p5').Value:=<значение для pay_comission>;
PayQuery.Parameters.ParamByName('p6').Value:=<значение для pay_state>;

PayQuery.ExecSQL;

Автор: Savek 8.6.2007, 08:04
Цитата(malor @  7.6.2007,  22:05 Найти цитируемый пост)
Вопрос про 'Can not open a Resultset.' остается в силе...

Вероятно запрос не возвращает данные (Insert, update,Delete ...) а ты пытаешься отправить его командой Open

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)