![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Здравствуйте. У меня случилась ошыбка с обновлением данных в БД 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
|
||||
|
||||
|
На какой из строк ошибка?
|
|
#3
|
||||
|
||||
|
Тема-повтор.
|
|
#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; |
|
#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); |
|
#8
|
||||
|
||||
|
|
|
#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; |