Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.11.2011, 18:22
Аватар для TaraZZZ
TaraZZZ TaraZZZ вне форума
Прохожий
 
Регистрация: 09.11.2011
Сообщения: 8
Репутация: 10
По умолчанию 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  
Старый 18.11.2011, 19:11
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

На какой из строк ошибка?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 18.11.2011, 19:24
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Тема-повтор.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #4  
Старый 18.11.2011, 23:19
Аватар для TaraZZZ
TaraZZZ TaraZZZ вне форума
Прохожий
 
Регистрация: 09.11.2011
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Тема-повтор.

Нет, не повтор. Посмотри еще раз.
Здесь совсем другая проблема.

Я уже перепробовал разные способы, но ошибка одна и та ж.
Выше в коде значения в таблице етим же способом обновляються на ура, а здесь выдает ошибку.
Ответить с цитированием
  #5  
Старый 19.11.2011, 09:16
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от TaraZZZ
Нет, не повтор. Посмотри еще раз.
Здесь совсем другая проблема.

Я уже перепробовал разные способы, но ошибка одна и та ж.
Выше в коде значения в таблице етим же способом обновляються на ура, а здесь выдает ошибку.

Вот тебе говорят повтор, а ты еще и споришь. Ты когда в динамике задаешь запрос кверику с переменными, не знаешь или забываешь задавать тип переменным, да и вообще коряво ты валуи задаешь, запиши себе как надо на будущее:

Код:
  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  
Старый 19.11.2011, 18:21
Аватар для TaraZZZ
TaraZZZ TaraZZZ вне форума
Прохожий
 
Регистрация: 09.11.2011
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от Ildar-tsr
Вот тебе говорят повтор, а ты еще и споришь. Ты когда в динамике задаешь запрос кверику с переменными, не знаешь или забываешь задавать тип переменным, да и вообще коряво ты валуи задаешь, запиши себе как надо на будущее:

Код:
  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;

Я ж уже говорил, что перепробовал разные способы.

Вот этот код работает на ура:
Код:
  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  
Старый 19.11.2011, 19:15
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Код:
 WQuery.SQL.Add('UPDATE days SET [misk]='+misk+
', [silsk]='+silsk+', [all]='+all+' WHERE [id]='+date_id);
__________________
Google в помощь
Ответить с цитированием
  #8  
Старый 19.11.2011, 19:16
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

А это что?
http://delphisources.ru/forum/showthread.php?t=18957
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #9  
Старый 19.11.2011, 21:57
Аватар для TaraZZZ
TaraZZZ TaraZZZ вне форума
Прохожий
 
Регистрация: 09.11.2011
Сообщения: 8
Репутация: 10
По умолчанию

Спасибо всем.
Вот так помогло:

Код:
  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;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter