Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

работа TQuery.OnUpdateRecord [D5, IB6.x]


Вольный Стрелок ©   (2003-12-12 11:16:00) 

Не пойму в чем дело: судя по описанию, этот обработчик должен вызываться для каждой модифицированной записи. Так и происходит.
Вот только текущая запись в передаваемом ему параметром DataSet"е не меняется.
Как же определить, какую запись обрабатывать?


Sandman25   (2003-12-12 18:13:00) [1]

[8] Вольный Стрелок (12.12.03 16:35)

Дело в том, что для UpdateRecord создается новый Dataset, а не используется существующий. В этом новом DataSet находятся копии только тех записей, которые добавлялись/изменялись/удалялись. Но, в общем, Вы уже и сами разобрались :)


Вольный Стрелок   (2003-12-12 16:35:00) [2]

Спасибо. Понял, в чем была причина.
Действительно, надо обращаться к полям через OldValue и NewValue.
А обращение через DataSet.Fields[ 0 ]. AsInteger, например, ведет к описанной ситуации. Хотя почему ведет, не знаю :(


Sandman25   (2003-12-12 11:42:00) [3]

Странно. Попробуйте поставить Use Debug DCU и потрассировать.


Вольный Стрелок   (2003-12-12 11:40:00) [4]

да, иначе как бы в обработчик попадал бы?
На входе в обработчик смотрю на первичный ключ и для каждой записи вижу одно и то же. Поэтому и определить, что за запись текущая, не могу.


Sandman25   (2003-12-12 11:34:00) [5]

CashedUpdates = True?
Вызываете ApplyUpdates?


Вольный Стрелок   (2003-12-12 11:32:00) [6]

Я по нему и смотрю.
И на всех записях он одинаковый. Это в тупик и ставит.


Sandman25   (2003-12-12 11:28:00) [7]

Не надо идентифицировать данные по номеру записи. У Вас в данных нет уникального ключа?


Вольный Стрелок   (2003-12-12 11:24:00) [8]

я имел ввиду номер текущей записи - не меняется


Sandman25   (2003-12-12 11:20:00) [9]

Смотрите DataSet.FieldByName(..).OldValue и NewValue


Наверх

Титульная страница Поиск, карта сайта Написать письмо