![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Чем отличается Table1.Refresh от Table1.Post?
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Метод Refresh обновляет набор данных, приводя его в соответствие с текущим состоянием базы данных. Это часто необходимо делать, например, при смене фильтра или отказе от фильтрации, чтобы обеспечить отображение нового множества записей:
Не все наборы данных полностью поддерживают метод Refresh. Например, в компонентах TQuery метод срабатывает только в том случае, если работа идет с "живыми" данными (см. свойство RequestLive). В противном случае, для обновления данных надо закрыть и открыть соответствующий набор данных. Выполнение метода Refresh сопровождается событиями BeforeRefresh и AfterRefresh, наступающими до и после обновления. При выполнении метода Refresh делается попытка не изменять положение курсора, указывающего на текущую запись. Но это не всегда возможно. Например, при обновлении может оказаться, что данная запись уже удалена из базы данных другим пользователем. Невозможно сохранить текущую позицию также в однонаправленных наборах данных. В них после обновления курсор всегда переходит на первую запись. Вообще надо учесть, что для однонаправленных наборов данных выполнение Refresh сводится к закрытию и открытию курсора. Это связано с генерацией событий BeforeClose, AfterClose, BeforeOpen, AfterOpen. Так что надо учитывать, что при этом будут срабатывать коды обработчиков этих событий. Если метод Refresh применяется к клиентскому набору данных, то обновляется все содержимое набора. Если оказывается, что в наборе хранятся еще не зафиксированные в базе данных результаты редактирования, то генерируется исключение. В отличие от метода Refresh, метод RefreshRecord клиентских наборов данных обновляет только текущую запись, запрашивая у провайдера ее текущие значения в базе данных. В результате обновления изменяются (если есть изменения) начальные значения полей, полученные от провайдера ранее, но сохраняются все изменения, сделанные в клиентском наборе. Процедура Post заносит измененную методами Edit, Insert, Append запись в базу данных. Метод Post может в ряде случаев вызываться неявно: как последствие вызова методов навигации First, Last, Next, Prior. Поэтому прежде, чем перемещаться на новую запись, полезно проверять свойство Modified, чтобы установить, была ли изменена текущая запись. Для проверки правильности измененных данных и получения от пользователя подтверждения записи в базу данных можно использовать обработчик события BeforePost. Это сообщение отредактировал(а) alex-co - 24.7.2004, 06:32 -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Благодабрю!!!
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |