|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
ADO ошибка с UPDATE
Здравствуйте. У меня случилась ошыбка с обновлением данных в БД Acess.
Все данные нужного типа, но не вставляются. Выдает ошибку: Вот структура БД: И пример кода: Код:
try FormMain.ADOConnection.BeginTrans; //Обновити кількість c/м людей в таблиці днів WQuery.SQL.Clear; WQuery.SQL.Add('UPDATE days SET misk=:misk, silsk=:silsk, all=:all WHERE id=:id'); WQuery.Parameters.ParamByName('id').Value.AsInteger:=date_id; WQuery.Parameters.ParamByName('all').Value.AsInteger:=all; WQuery.Parameters.ParamByName('misk').Value.AsInteger:=misk; WQuery.Parameters.ParamByName('silsk').Value.AsInteger:=silsk; WQuery.ExecSQL; FormMain.ADOConnection.CommitTrans; except if FormMain.ADOConnection.InTransaction then FormMain.ADOConnection.RollbackTrans; ShowMessage('Помилка: Обновити кількість c/м людей в таблиці днів'); end; |
#2
|
||||
|
||||
На какой из строк ошибка?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
Тема-повтор.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#4
|
||||
|
||||
Цитата:
Нет, не повтор. Посмотри еще раз. Здесь совсем другая проблема. Я уже перепробовал разные способы, но ошибка одна и та ж. Выше в коде значения в таблице етим же способом обновляються на ура, а здесь выдает ошибку. |
#5
|
||||
|
||||
Цитата:
Вот тебе говорят повтор, а ты еще и споришь. Ты когда в динамике задаешь запрос кверику с переменными, не знаешь или забываешь задавать тип переменным, да и вообще коряво ты валуи задаешь, запиши себе как надо на будущее: Код:
WQuery.Parameters.ParamByName('id').DataType:= ftInteger; WQuery.Parameters.ParamByName('all').DataType:= ftInteger; WQuery.Parameters.ParamByName('misk').DataType:= ftInteger; WQuery.Parameters.ParamByName('silsk').DataType:= ftInteger; WQuery.Parameters.ParamByName('id').Value:=date_id; WQuery.Parameters.ParamByName('all').Value:=all; WQuery.Parameters.ParamByName('misk').Value:=misk; WQuery.Parameters.ParamByName('silsk').Value:=silsk; Google в помощь |
#6
|
||||
|
||||
Цитата:
Я ж уже говорил, что перепробовал разные способы. Вот этот код работает на ура: Код:
WQuery.SQL.Clear; WQuery.SQL.Add('UPDATE patients SET data_vyp=:date_v,chas_vyp=:chas_v WHERE id=:id'); WQuery.Parameters.ParamByName('id').Value:=id_s; WQuery.Parameters.ParamByName('date_v').Value:=date_vyp; WQuery.Parameters.ParamByName('chas_v').Value:=chas_vyp; WQuery.ExecSQL; А тот что я показывал не работает. А ваш пример работает вот так: |
#7
|
||||
|
||||
Код:
WQuery.SQL.Add('UPDATE days SET [misk]='+misk+ ', [silsk]='+silsk+', [all]='+all+' WHERE [id]='+date_id); Google в помощь |
#8
|
||||
|
||||
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#9
|
||||
|
||||
Спасибо всем.
Вот так помогло: Код:
WQuery.SQL.Clear; WQuery.SQL.Add('UPDATE days SET [misk]=:misk, [silsk]=:silsk, [all]=:all WHERE [id]=:id'); WQuery.Parameters.ParamByName('id').Value:=IntToStr(date_id); WQuery.Parameters.ParamByName('all').Value:=IntToStr(all); WQuery.Parameters.ParamByName('misk').Value:=IntToStr(misk); WQuery.Parameters.ParamByName('silsk').Value:=IntToStr(silsk); WQuery.ExecSQL; |