|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
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
|
|||
|
|||
1. Есть ошибка в записи самого запроса - с кавычками.
2. Возможно, там есть проблемы с подсоединенными таблицами. Перечитай основной запрос после выполнения обновления. |
#3
|
||||
|
||||
Если вы используете ограничение (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
|
|||
|
|||
Страдалецъ, попробовал то, что вы посоветовали - выдало ошибку "Ошибка синтаксиса (пропущен оператор) в выражении запроса "+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. |