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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.05.2009, 17:58
Alter1989 Alter1989 вне форума
Прохожий
 
Регистрация: 10.05.2009
Сообщения: 4
Репутация: 10
По умолчанию sql-запрос на обновление

Имеется запрос на обновление записи в таблице:
dm.UpdateQuery.close;
dm.UpdateQuery.SQL.Clear;
dm.UpdateQuery.SQL.add('update z_l set rayon="+rayon.text+",vsego="+Vs.text+",1SP="+P1.te xt+",1SF="+F1.text+",2sp="+P2.text+",2sf="+F2.text +",3sp="+P3.text+",3sf="+F3.text+",4sp="+P4.text+" ,4sf="+F4.text+" where z_l.id like "+IDD.text+"');
dm.UpdateQuery.ExecSQL;

Если изменяю поле rayon и потом перехожу на другую запись, то появляется ошибка: "Недостаточно сведений ключевого поля для обновления", но если изменяю любые другие поля, такой ошибки не возникает.
База MS Access, способ доступа - ADO, ключевое поле - ID. Все поля числового типа.
В чем причина и как это исправить? Заранее спасибо.
Ответить с цитированием
  #2  
Старый 10.05.2009, 19:27
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,032
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Есть ошибка в записи самого запроса - с кавычками.
2. Возможно, там есть проблемы с подсоединенными таблицами. Перечитай основной запрос после выполнения обновления.
Ответить с цитированием
  #3  
Старый 10.05.2009, 19:40
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Если вы используете ограничение (where) при обновлении то надо в явном виде указывать какая таблица для этого ограничения будетс использована, т.е. from z_l является обязательной частью вашего запроса и тогда будет выглядеть гдето так:
Код:
dm.UpdateQuery.SQL.add('update z_l set rayon="+rayon.text+",
vsego="+Vs.text+",1SP="+P1.te xt+",1SF="+F1.text+",
2sp="+P2.text+",2sf="+F2.text +",3sp="+P3.text+",3sf="+F3.text+",
4sp="+P4.text+" ,4sf="+F4.text+" from z_l where z_l.id like "+IDD.text+"');
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 10.05.2009 в 19:42.
Ответить с цитированием
  #4  
Старый 10.05.2009, 20:37
Alter1989 Alter1989 вне форума
Прохожий
 
Регистрация: 10.05.2009
Сообщения: 4
Репутация: 10
По умолчанию

Страдалецъ, попробовал то, что вы посоветовали - выдало ошибку "Ошибка синтаксиса (пропущен оператор) в выражении запроса "+F4.text+" from z_l". В синтаксисе команды update ведь не должно быть конструкции "from table".
lmikle, а что не так с кавычками? Запрос ведь работает, если обновлять любые другие поля, кроме поля rayon, вот только не могу понять, почему не хочет обновлять поле rayon.
Вот запросы на выборку и добавление записей в таблицу z_l:
Код:
dm.SelectQuery.SQL.add('select z_l.id,rayons.rayon,vsego,[z_l.1SP],[z_l.1SF],
[z_l.2SP],[z_l.2SF],[z_l.3SP],[z_l.3SF],[z_l.4SP],[z_l.4SF] from rayons, z_l 
where z_l.kateg like "'+cat+'" and z_l.rayon=rayons.id order by z_l.rayon asc');
Код:
dm.InsertQuery.SQL.add('Insert into z_l(rayon,vsego,kateg,1SP,1SF,2sp,2sf,
3sp,3sf,4sp,4sf) values ("'+rayon.text+'","0'+Vs.text+'","'+cat+'","0'+P1.text+'",
"0'+F1.text+'","0'+P2.text+'","0'+F2.text+'","0'+P3.text+'","0'+F3.text+'",
"0'+P4.text+'","0'+F4.text+'")');
Оба работают нормально.

Последний раз редактировалось Alter1989, 10.05.2009 в 20:42.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter