Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отличия Refresh и Post, компонент TTable 
:(
    Опции темы
MacTep
Дата 24.7.2004, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Чем отличается Table1.Refresh от Table1.Post?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Alex
Дата 24.7.2004, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Метод Refresh обновляет набор данных, приводя его в соответствие с текущим состоянием базы данных. Это часто необходимо делать, например, при смене фильтра или отказе от фильтрации, чтобы обеспечить отображение нового множества записей:

Код
Table1.Filtered:=false;
Table1.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


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
MacTep
Дата 24.7.2004, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Благодабрю!!!


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0426 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.