C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Ошибка:Не удается найти строку для обновления
aida
Отправлено: 08.12.2005, 16:53


Не зарегистрирован







Добрый день!
У меня есть селект в котором фактически открывается два раза одна и та же база (glav). Код:
SELECT glav.rela as rela,RTRIM(ispoln.Name) AS ispoln_Ispoln, rtrim(fio.FioS) as fio_Fio FROM glav
INNER JOIN glav glav_1 ON glav.Ispoln = glav_1.Uin
INNER JOIN ispoln ON ispoln.Uin = glav_1.Ispoln
INNER JOIN fio ON glav_1.Fio = fio.Uin

Селект работает нормально, НО я столкнулась с одной проблемой, выяснилось, что я не могу изменить поля в этом селекте. Я работаю с компонентами TADOQuery и TDBGrid, с селектом я работаю как с обычной таблицей, то есть методы Edit и Post. При применении Post вылетает ошибка:Не удается найти строку для обновления.Некоторые значения могли быть изменены со времени ее последнего чтения

Я думаю, что это из-за того, что у меня открыто 2 раза одна и таже база, как мне выкрутиться из этой ситуации?

Сейчас я делаю изменения через TADOCommand используя команду update, а потом обновляю запрос, но это не очень красиво, двгрид прыгает, и для пользователя это неудобно.

Помогите пожалуйста
olegenty
Отправлено: 12.12.2005, 08:58


Ветеран

Группа: Модератор
Сообщений: 2412



TMemTableEh (клиентский набор данных) + TADODataDriverEh (компонент, содержащий команды выборки, вставки, обновления, удаления, обновления текущей записи) + TADOConnection (или без этого компонента, поскольку TADODataDriverEh умеет работать со строкой подключения) = необходимое поведение.

Вернуться в Работа с базами данных в C++Builder