Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Обновление в Гриде  [new]
Соня_
Member

Откуда: Екатеринбург
Сообщений: 106
Можно ли сделать так,
чтобы в Гриде данные обновлялись с некой периодичностью(1 сек.),
при этом указатель выделенной строки не перемещался каждый раз наверх?

Данные в гриде - из CursorAdapter, соответственно для их обновления нужно перечитывать данные в нем : ca.CursorRefresh, после этого thisform.grid1.Refresh.

При этом данные обновляются конечно как надо, но указатель каждый раз переходит наверх Как этого избежать?
16 авг 04, 10:18    [883296]     Ответить | Цитировать Сообщить модератору
 Re: Обновление в Гриде  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Вопрос неоднократно обсуждался.

Общий вывод: оно того не стоит!

Огромное количество усилий при минимальном результате. Если пользователю нужно обновление, пусть использует специальную кнопку "Обновить" или выйдет и снова войдет в форму.

Позиционировать указатель тоже бесперспективно. У Вас есть уверенность, что такая запись не будет удалена другим пользователем? Куда позиционировать?
16 авг 04, 10:35    [883346]     Ответить | Цитировать Сообщить модератору
 Re: Обновление в Гриде  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8873
Ну уж если сильно хочется и аргументы Владимира Вас не убедили, то есть несколько вариантов:
- запоминать идентификатор до обновления и после обновления позиционировать на эту запись
- аналогично можно по номеру записи...

Все эти варианты имеют недостатки, упомянутые Владимиром...

Good luck!
16 авг 04, 10:43    [883377]     Ответить | Цитировать Сообщить модератору
 Re: Обновление в Гриде  [new]
Соня_
Member

Откуда: Екатеринбург
Сообщений: 106
Позиционировать каждый раз на запись конечно не хочется.
Тем более с такой частотой - 1 сек., и если курсор достаточно большой, то это опять будет мелькание.

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

Поэтому я предположила,что подобное можно сделать не только с обычными таблицами, но и с CursorAdapter.

Можно как-то так сделать так, чтобы в отдельной форме он обновлялся, а в отдельной - грид был настроен на этот CursorAdapter и обновлялся только грид? (И у форм были разные датасессии при этом).

Как настроить грид на CursorAdapter, созданный в другой форме, открытый в другой датасессии? Если можно как-то, то может все и получится!!!!
16 авг 04, 10:49    [883398]     Ответить | Цитировать Сообщить модератору
 Re: Обновление в Гриде  [new]
sar99
Member

Откуда: МАХАЧКАЛА
Сообщений: 117
**********************************************
Данные в гриде - из CursorAdapter, соответственно для их обновления нужно перечитывать данные в нем
**********************************************
Как раз для обновления перечитывать данные не надо!!!
после обычного repl в сursor_adapter надо дать команду
vvv=tableupdate()
и в случае vvv=.f.
разобраться (изменена запись кем то еще или вообще удалена )

Вот чтобы разобраться изменена запись или удалена
надо перечитать, но только запись с текущим ID
(но это проще сделать в отдельный RECORDSET и не рушить Ваш GRID)
20 авг 04, 15:59    [898047]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить