Ситуация такая: есть 2 формы, DataModule. На первой есть кнопка, при нажатии на не открывается форма для добавления нового материала. По нажатию на кнопку"Добавить" на это форме вырабатывается ошибка.
Что делать?
Код обработчика нажатия кнопки "Добавить":
procedure TForm3.BitBtn1Click(Sender: TObject);
begin
DataModule5.Query2.SQL.Add('INSERT INTO mat (nm_m,kod_m) VALUES (:nm, :kod)');
DataModule5.Query2.Params.Clear;
DataModule5.Query2.Params.ParseSQL(DataModule5.Query2.SQL.Text, true);
DataModule5.Query2.Params.ParamByName('kod').Value:= Form3.Edit1.Text;
DataModule5.Query2.Params.ParamByName('nm').Value:=Form3.Edit2.Text;
DataModule5.Query2.ExecSQL;//--------------здесь видимо ошибкаend;
Ошибка:
Project Project1.exe raised exception class EDBengineError with message 'Invalid use of keyword. Token INSERT line: 2'
Что посоветуете спецы??? Может есть какой-нибудб альтернативный способ добавления новой записи?
Здравствуйте, kazanova, Вы писали:
K>Ситуация такая: есть 2 формы, DataModule. На первой есть кнопка, при нажатии на не открывается форма для добавления нового материала. По нажатию на кнопку"Добавить" на это форме вырабатывается ошибка. K>Что посоветуете спецы???
Попробуй добавить выделенную строку:
procedure TForm3.BitBtn1Click(Sender: TObject);
beginDataModule5.Query2.SQL.Clear;
DataModule5.Query2.SQL.Add('INSERT INTO mat (nm_m,kod_m) VALUES (:nm, :kod)');
DataModule5.Query2.Params.Clear;
DataModule5.Query2.Params.ParseSQL(DataModule5.Query2.SQL.Text, true);
DataModule5.Query2.Params.ParamByName('kod').Value:= Form3.Edit1.Text;
DataModule5.Query2.Params.ParamByName('nm').Value:=Form3.Edit2.Text;
DataModule5.Query2.ExecSQL;//--------------здесь видимо ошибкаend;
... << RSDN@Home 1.0 beta 6 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, kazanova, Вы писали:
K>Увы не помогает и ошибка опять в той же строке(
очистку коллекции параметров поставить после очистки текста запроса.
parsesql — выкинуть. ибо используя его ты заменяешь именованые параметры на "?"
попробуй...
... << RSDN@Home 1.0 beta 6a >>
— сколько программистов надо чтобы заменить сгоревшую лампочку?
— сколько не бери, а лампочку не поменять — проблема аппаратная, программным путем не решается...
Здравствуйте, serjhp, Вы писали:
K>>Что посоветуете спецы??? Может есть какой-нибудб альтернативный способ добавления новой записи? S>У тебя не совпадение типов в Params, т.е. в таблице Params[0] у тебя описан как integer(возможно и другой тип) а ты ей пытаешся присвоить String.
Здравствуйте, serjhp, Вы писали:
S>У тебя не совпадение типов в Params, т.е. в таблице Params[0] у тебя описан как integer(возможно и другой тип) а ты ей пытаешся присвоить String.
это нормально, ибо работа идет с Variant.
кинь, плиз, текст запроса после присвоения параметров (до попытки его выполнить)...
... << RSDN@Home 1.0 beta 6a >>
— сколько программистов надо чтобы заменить сгоревшую лампочку?
— сколько не бери, а лампочку не поменять — проблема аппаратная, программным путем не решается...
Здравствуйте, kazanova, Вы писали:
K>Здравствуйте, serjhp, Вы писали:
K>>>Что посоветуете спецы??? Может есть какой-нибудб альтернативный способ добавления новой записи? S>>У тебя не совпадение типов в Params, т.е. в таблице Params[0] у тебя описан как integer(возможно и другой тип) а ты ей пытаешся присвоить String.
K> K>что делать, я новичок в Delphi....
В Query5.Params[0].DataType:=ftString;
Query5.Params[1].DataType:=ftString;
перед тем как присваивать!
Здравствуйте, serjhp, Вы писали:
S>Здравствуйте, kazanova, Вы писали:
K>>Здравствуйте, serjhp, Вы писали:
K>>>>Что посоветуете спецы??? Может есть какой-нибудб альтернативный способ добавления новой записи? S>>>У тебя не совпадение типов в Params, т.е. в таблице Params[0] у тебя описан как integer(возможно и другой тип) а ты ей пытаешся присвоить String.
K>> K>>что делать, я новичок в Delphi.... S>В Query5.Params[0].DataType:=ftString; S> Query5.Params[1].DataType:=ftString; S>перед тем как присваивать!
ошибка Неописанный идентификатор ftString, что делать?
Здравствуйте, kazanova, Вы писали:
K>Здравствуйте, _MarlboroMan_, Вы писали:
_MM_>>кинь, плиз, текст запроса после присвоения параметров (до попытки его выполнить)...
не текст программы, а содержимое поля SQL у твоего квери.
... << RSDN@Home 1.0 beta 6a >>
— сколько программистов надо чтобы заменить сгоревшую лампочку?
— сколько не бери, а лампочку не поменять — проблема аппаратная, программным путем не решается...