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

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

обновление записей [D6, IB6.x]


Bishop ©   (2002-10-08 10:28:00) 

Можно ли с помощью FIB сделать автообновляемый грид, так, чтобы не было кнопки "обновить"? Необходимо, чтобы, по крайней мере, добавленные записи показывались при скроллинге в гриде (при скроллинге вверх, так как запрос сортирован по desc добавлению).


AM   (2002-10-08 11:49:00) [1]

На самом деле это один из довольно распространенных задач в последнее время. Хочется иметь актуальные наборы данных, и чтобы эти наборы данных были всегда актуальны в любую секунду. Стоит ли это делать или нет решать вам. Но перед тем как это делать надо взвесить все за и против.

Для интересующихся можно пойти по ссылке:
http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=13073

хотя там БД MSSQL сервер но я думаю, что принципы одинаковы.

Удачи всем!


Prooksius   (2002-10-08 11:39:00) [2]

Все таки у меня такие подозрения, что нормальной, нетормозной реализации того, о чем я тут (и не тут) писал, наверное, не получится, хотя, время покажет.
Если большой датасет - так и так плохо. Тормоза будут по любому.


Desdechado   (2002-10-08 11:23:00) [3]

нельзя увидеть что-то, не посмотрев на него
поэтому для того, чтобы увидеть изменения на сервере, надо переоткрыть запрос


Prooksius   (2002-10-08 11:16:00) [4]

2 Max Zyuzin © (08.10.02 11:13)
Почитай на www.ibase.ru про транзакции.
Проблема заключается только в refresh. А транзакция - мелочи. Какой уровень изоляции поставишь, так и работать будешь.


Prooksius   (2002-10-08 11:14:00) [5]

2 Bishop (08.10.02 11:02)

> Но датасет просят не переоткрывать.

Ну это пока невозможно!
Если даже были бы параметры в событиях, если набор данных большой, а updates юзеров частые, это все равно бы тормозило.
Вышел FB 1.5 alpha, обещали сделать параметры событий в бетте.

Можно, конечно, будет попробовать, тем более, что FIB позволяют вставлять/изменять/удалять строчку в датасете без реального изменения в базе. (FilterIn/FilterOut) Но нужен крутой комп и не очень большие наборы данных. Тогда это будет нормально работать.


Max Zyuzin   (2002-10-08 11:13:00) [6]

Не переоткрывая датасет никак (АФАИК)
Дело в том, что ты будешь видеть только записи в твоей транзакции, а у пользователей они свои...


Леха_   (2002-10-08 11:08:00) [7]

с помощь DBGrid не переоткрывая никак
а если читать в обычный StringGrid то можно с некоторым интервалом добавлять свежие записи как это сделать конкретно зависит от задачи я например просто запоминал максимальное ключевое поле(но там оно создавалось из генератора)


Bishop   (2002-10-08 11:02:00) [8]

Записи добавляются не в гриде (они добавляются автоматически с разных клиентских мест и довольно часто). Мне необходим лишь browse. Кстати, Sergey 13 правильно уточнил - можно ли сделать запрос "на все времена", т.е. чтобы в пределах текущей транзакции были видны записи, добавленные после ее начала. Меня просили сделать автообновление без кнопки "обновить". Кажется,что это возможно лишь с помощью переоткрытия датасета (и восстановлением текущего курсора) при приходе события добавления новой записи (или изменения). Но датасет просят не переоткрывать.


Max Zyuzin   (2002-10-08 10:54:00) [9]

Не совсем понятен вопрос... Если у вас для навигации по НД и для джобавления используются разные компоненты, то можно по событию AfterInsrt в таблице которая добавляет переоткрывать датасет (навигации) еще раз...
Опишите пожалуйста что необходимо...


Sergey13   (2002-10-08 10:46:00) [10]

Еще один вопрос про ЭТО. Что то часто стали попадаться такие. Недавно 2 было. Светую переиначить твой вопрос с темы "Можно ли" на тему "Нужно ли" и ответить самому.
Запрос (по теории) возвращает СОГЛАСОВАННЫЙ НАДОР ДАННЫХ НА ТЕКУЩИЙ МОМЕНТ ВРЕМЕНИ. А ты хочешь НА ВСЕ ВРЕМЕНА?


Prooksius   (2002-10-08 10:39:00) [11]

Не совсем понятно, что ты хочешь.
К примеру ты вставил запись в гриде, ты хочешь, чтобы она сразу вставала на свое место согласно сортировке, а не в конце/где попало?
Попробуй делать Sort/FastSort твоего датасета сразу после вставки примерно так:

Запомнить положение курсора,
Dataset.DisableControls,
Sort/FastSort,
Вспомнить позицию,
Dataset.EnableControls.


Наверх

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