![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Имеется запрос на обновление записи в таблице:
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. |