|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблема с SQL запросом
Всем доброго времени суток!
Делаю я тут, значит, базу данных. И у меня возникла такая ошибка. У меня есть SQL запрос, который по нажатию кнопки должен брать айди из одной таблицы и записывать в другую, но еще он должен записывать данные введенные пользователем в DateEdit1, в итоге, как я понял, получается 2 оператора insert в одном запросе и из-за этого выдает ошибку или я понял что-то не так) Подскажите пожалуйста знающие люди. Вот процедура на кнопку: Код:
procedure TForm11.Button1Click(Sender: TObject); begin DataModule1.SQLQuery5.Close; DataModule1.SQLQuery5.SQL.Clear; DataModule1.SQLQuery5.SQL.Add('insert into SCHEDULE(ID_DIRECTION)'); DataModule1.SQLQuery5.SQL.Add('select ID_DIRECTION'); DataModule1.SQLQuery5.SQL.Add('FROM DIRECTION'); DataModule1.SQLQuery5.SQL.Add('UNION'); DataModule1.SQLQuery5.SQL.Add('insert into SCHEDULE(DATE_TIME) values (:DATE_TIME)'); DataModule1.SQLQuery5.ParamByName('DATE_TIME').AsDate := DateEdit1.Date; DataModule1.SQLQuery5.ExecSQL; DataModule1.SQLTransaction1.Commit; DataModule1.SQLQuery5.SQL.Text:='select * from SCHEDULE'; DataModule1.SQLQuery5.Open; Close; end; Ошибка такого рода: Проект project1 вызвал класс исключения 'EIBDatabaseError' с сообщением: IBCon: PrepareStatement: -Dynamic SQL Error -SQL error code=-104 -Token unknown -line5, column 1 -insert Как я понял, он ругается на эту строку, т.к. это линия 5: Код:
DataModule1.SQLQuery5.SQL.Add('insert into SCHEDULE(DATE_TIME) values (:DATE_TIME)'); |
#2
|
||||
|
||||
Попробуйте убрать или заменить (напр. на "?") префикс именованного параметра поскольку это работает только в тексте запроса, а у вас здесь микс
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#4
|
|||
|
|||
Да вообще бред в запросе написан. Даже если поправить, что бы работало, то в результате выполнения такой логики в таблицу будет вставлеы все ID из таблицы DIRECTION (отдельные строки, скажем их N) и еще одна строка с пустым ID, но с переданным значением в поле DATE_TIME. Итого N+1 строка.
Видимо, имелось в виду что-то типа такого: Код:
insert into SCHEDULE(ID_DIRECTION, DATE_TIME) (SELECT ID_DIRECTION, :DATE_TIME from DIRECTION) |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
xGoOdI (29.04.2015)
|
#5
|
|||
|
|||
Цитата:
|
#6
|
|||
|
|||
Цитата:
Только без фамильярности, плз. Есть мнение, что я раза в 2 старше. |