Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Auto refresh timer pFibDataSet  [new]
LMag
Member

Откуда:
Сообщений: 37
Добрый вечер.

У меня следующий вопрос. Как мне сделать автоматическое обновление в pFibDataSet, по таймеру?

У меня есть таблица, мне нужно чтоб она через определенное время сама обновлялась.

Я знаю у pFibDataSet, ест два метода, Refresh и FullRefresh.

У меня сейчас следующее
  TRefrOrdersTimer(Sender: TObject) // событие onTimer

  FOrdDetails.DisableControls;
    
    FOrders.FullRefresh;

  FOrdDetails.EnableControls;

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

Не могли бы подсказать, как мне слелать обновление , чтоб при переходе по записям не происходили тормажение.
10 июн 20, 00:06    [22148433]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
LMag
... Как мне сделать автоматическое обновление в pFibDataSet, по таймеру?
... есть таблица, мне нужно чтоб она через определенное время сама обновлялась.

...при большом объеме...набор данных подвисает...

...как мне сделать ...

Если большие объемы - отказаться от обновления по таймеру.
Аминь.
10 июн 20, 00:19    [22148442]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
Док
Member

Откуда: Казань
Сообщений: 6699
LMag
Но я заметил , что при большом объеме, когда я бегаю по записям, набор данных подвисает, видимо при обновлении по таймеру.

у вас этот код в таймере прописан?

В доке по фибам написано следующее
+
procedure FullRefresh;
Этот метод производит переоткрытие датасета. При этом отключаются методы, влияющие на
отображение: визуальные компоненты данных и прокрутка.

Т.е. производятся последовательно две процедуры для датасета: Close и Open. Поэтому, видимо, и подвисание.

Можно сделать ReopenLocate

+ из доки
procedure ReopenLocate(const LocateFieldNames:string);
Этот метод переоткрывает TpFIBDataSet с позиционированием на том же месте, где был
курсор перед закрытием. Параметр определяет, по каким полям будет сделан последующий
Locate. Если полей несколько, их нужно писать через ';'

Попробуйте сделать просто Refresh датасету, предварительно запомнив ID записи и перейдя к ней после обновления содержимого дататсета.
10 июн 20, 00:30    [22148448]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11913
LMag
Как мне сделать автоматическое обновление в pFibDataSet, по таймеру?
Для начала классический вопрос: "Зачем?"
10 июн 20, 14:17    [22148782]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14193
LMag
Как мне сделать автоматическое обновление в pFibDataSet, по таймеру?


ты уверен, что пользователю понравится то, что без его разрешения/ведома будет обновляться и моргать сетка и "сбивать" его курсор в самый неподходящий момент?
10 июн 20, 14:23    [22148787]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14193
Если ты только начинаешь проект, то я бы не рекомендовал использовать FibPlus, т.к. он уже давно не развивается. Я уверен, там не будет поддержки новых фишек Firebird.

От себя лично я бы порекомендовал DevArt UniDAC.
10 июн 20, 14:25    [22148788]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
sg729
Member

Откуда:
Сообщений: 51
X11
От себя лично я бы порекомендовал DevArt UniDAC.

Поддержка Firebird в UniDAC только для Delphi? Для C# нет?
10 июн 20, 15:57    [22148853]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
Док
Member

Откуда: Казань
Сообщений: 6699
_Vasilisk_
Для начала классический вопрос: "Зачем?"

классический же ответ: "Надо!"

[youtube=]

X11
"сбивать" его курсор в самый неподходящий момент?

ничего не будет, если вовремя вертать курсор взад :)

Сообщение было отредактировано: 10 июн 20, 16:08
10 июн 20, 16:09    [22148860]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 2323
Док
ничего не будет, если вовремя вертать курсор взад :)
Угу, особенно если начать редактировать))
10 июн 20, 20:19    [22149012]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14193
sg729
Поддержка Firebird в UniDAC только для Delphi? Для C# нет?


https://www.devart.com/ru/dotconnect/

К сообщению приложен файл. Размер - 69Kb
11 июн 20, 14:33    [22149388]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
Док
Member

Откуда: Казань
Сообщений: 6699
white_nigger
Угу, особенно если начать редактировать))

ты про букмарки?
11 июн 20, 14:57    [22149403]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28883
sg729
Поддержка Firebird в UniDAC только для Delphi? Для C# нет?

UniDAC это для Delphi и C++. Для C#, т.е. .Net, всегда есть отдельные драйверы.
У Firebird это штатный .Net provider
https://firebirdsql.org/en/net-provider/
X11
Я уверен, там [в FIBPlus] не будет поддержки новых фишек Firebird.

FIBPlus уже давно модифицируют другие люди. Однако, правовой статус этого дела неясен.
X11
https://www.devart.com/ru/dotconnect/

тут надо сравнивать его функционал со штатным firebird .net provider, надо-ли идентичную поддержку остальных серверов (и насколько она идентична), и т.д.
11 июн 20, 15:51    [22149438]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
sg729
Member

Откуда:
Сообщений: 51
X11
sg729
Поддержка Firebird в UniDAC только для Delphi? Для C# нет?

https://www.devart.com/ru/dotconnect/

"Firebird: versions 2.x, 1.x; "
https://www.devart.com/dotconnect/universal/compatibility.html

Поддержка Firebird 3.X планируется?
15 июн 20, 10:11    [22150801]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14193
kdv
FIBPlus уже давно модифицируют другие люди.


Проблема в том, что новые фичи Firebird`а библиотека не поддерживает.
15 июн 20, 10:30    [22150816]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 1119
уберите таймер и сделайте обновление по таймауту во время неактивности пользователя.
если я конечно правильно понимаю задачу :)
15 июн 20, 11:27    [22150851]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
X11
kdv
FIBPlus уже давно модифицируют другие люди.


Проблема в том, что новые фичи Firebird`а библиотека не поддерживает.

Назовешь эти "фичи"?
15 июн 20, 21:22    [22151253]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28883
X11
новые фичи Firebird`а библиотека не поддерживает.

а кто поддерживает? назови! :-)
15 июн 20, 21:43    [22151257]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14193
Всех нововведений с Firebird 2 до Firebird 4 не назову.
Ну вот хотя бы boolean-поля.
Насколько мне известно, то UniDAC поддерживает. А FireDAC что, не поддерживает boolean-поля?
16 июн 20, 09:28    [22151366]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
X11, ну понятно, "бла-бла".

Булевские поля в фиб+ использовать можно.
16 июн 20, 11:46    [22151492]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
KonstFB
Member

Откуда:
Сообщений: 50
А оно надо - "по таймеру" ?!
Кому, для чего?!

Чем не вариант - рассчитать процедурой на стороне сервера количество записей, и если оно изменилось от вашего текущего делать рефрешь!

А подряд рефрешить ... да если еще и несколько пользователей - такое себе!
17 июн 20, 11:18    [22152214]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11913
KonstFB
Чем не вариант - рассчитать процедурой на стороне сервера количество записей, и если оно изменилось от вашего текущего делать рефрешь!
Я долго это читал и терпел. Какой таймер? Какое количество записей? Обычный POST_EVENT в AFTER триггере. Всё!

Сообщение было отредактировано: 17 июн 20, 13:21
17 июн 20, 13:23    [22152319]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
_Vasilisk_
...Обычный POST_EVENT в AFTER триггере. Всё!

А потом - все равно авторефрешь? :)
17 июн 20, 13:40    [22152342]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
alekcvp
Member

Откуда:
Сообщений: 2178
_Vasilisk_
KonstFB
Чем не вариант - рассчитать процедурой на стороне сервера количество записей, и если оно изменилось от вашего текущего делать рефрешь!
Я долго это читал и терпел. Какой таймер? Какое количество записей? Обычный POST_EVENT в AFTER триггере. Всё!


У постэвент есть одна проблема: если изменения вносишь ты (в зависимые таблицы), то надо либо на post_event() рассчитывать, либо принудительно Refresh() вызывать. А если EventAlerter не смог подключиться к серверу, то обновлений ты не увидишь.
17 июн 20, 13:49    [22152348]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
alekcvp
...
У постэвент есть одна проблема: если изменения вносишь ты (в зависимые таблицы), то надо либо на post_event() рассчитывать, либо принудительно Refresh() вызывать...

?
17 июн 20, 13:52    [22152350]     Ответить | Цитировать Сообщить модератору
 Re: Auto refresh timer pFibDataSet  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11913
alekcvp
А если EventAlerter не смог подключиться к серверу, то обновлений ты не увидишь.
А еще я их не увижу, если пропала связь с сервером. Но никто же не предлагает отказаться от удаленного сервера и крутить все на локальной машине?
17 июн 20, 13:54    [22152351]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить