Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Дождаться окончания fetch (Delphi)... / 6 сообщений из 6, страница 1 из 1
13.08.2016, 14:27
    #39291459
Softologic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания fetch (Delphi)...
Всем привет!
Вопрос давнишный, но все же нерешенный, снова возымел актуальность в одном из проектов с использованием Firebird и Delphi (+ Fibplus).
Что имеем: типичная связка фибдатасетов мастер-детейл, есть два грида Ehlib для их визуализации. В родительском гриде включена локальная сортировка по полю "дата\время последних изменений", по возрастанию.
Мои действия:
1) Поскольку датасеты оба закрыты, меняю некоторые параметры в родительском датасете, открываю его.
2) После открытия первый грид начинает отображать родительскую таблицу. Далее, следует команда Last, дабы курсор указывал на самую последнюю запись внизу.
3) Таким образом, получается что для родительской таблицы происходит полный fetch. Параллельно, пока было перемещение курсора в самый конец, дочерний грид тоже показывал постоянно меняющийся контент (что логично и понятно).

Теперь сам вопрос, вытекающий из п.3 - как сделать так, чтобы на время перемещения курсора после открытия родительского датасета с первой позиции до последней позиции, дочерний грид не показывал контент. Включение показа контента дочернего грида должно быть строго после достижения последней позиции в первом гриде.

Первое, что приходило на ум - открывать дочерний датасет вручную после команды Last. Однако, поскольку работает она асинхронно, то и ждать от нее результата бессмысленно. Использование WaitEndMasterScroll + WaitEndMasterInterval вроде косвенно помогли бы, но в этом случае я ведь не знаю точно значение через которое завершится ы родительском гриде скроллинг до последней позиции...

В общем, надеюсь понятно объяснил. Если у кого есть решение - поделитесь, пожалуйста)
...
Рейтинг: 0 / 0
13.08.2016, 14:42
    #39291461
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания fetch (Delphi)...
SoftologicПараллельно, пока было перемещение курсора в самый конец, дочерний грид тоже показывал
постоянно меняющийся контент (что логично и понятно).

Нет, это нелогично и непонятно. Обычно такого не происходит, поскольку на время вызова
Last либо вызывается DisableControls, либо оно вообще происходит одним шагом. Кто-то
должен быть совершенно сумасшедшим, чтобы реализовать Last через While not eof do next.

Softologicработает она асинхронно
Опять же: обычно Last не возвращается пока не выполнится, то есть работает таки совершенно
синхронно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.08.2016, 14:44
    #39291462
Softologic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания fetch (Delphi)...
Все, разобрался. Изначально, не договорил про то, что в некоторых случаях, после прокрутки до последней записи создавалась новая запись. А между ними стояла "лишняя" команда принудительного открытия дочернего датасета. Таким образом получалось, что и возникало это "промаргивание".
...
Рейтинг: 0 / 0
13.08.2016, 19:20
    #39291495
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания fetch (Delphi)...
Softologicнавсякий случай, а со свойством фибовского датасета dcWaitEndMasterScroll вы знакомы?
...
Рейтинг: 0 / 0
13.08.2016, 21:19
    #39291510
Softologic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания fetch (Delphi)...
S.G.Softologicнавсякий случай, а со свойством фибовского датасета dcWaitEndMasterScroll вы знакомы?
Знаком и использую конечно. Вообще перечитав первый пост, понял что несколько неправильно объяснил. Сортировка на самом деле не локальная, а серверная использовалась, ибо использование Last с локальной сортировкой как то несовсем уместно. Правильнее для локальной сортировки использовать гридовый метод DefaultApplySorting.

Но в итоге все заработало как положено. Использую для родительского датасета DisableControls + EnableControls, для дочернего WaitEndMasterScroll + WaitEndMasterInterval.

Всем спасибо, тема закрыта.
...
Рейтинг: 0 / 0
14.08.2016, 11:09
    #39291554
Dmitry Kurbsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дождаться окончания fetch (Delphi)...
Softologic,

Почему Last, а не FetchAll ?
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Дождаться окончания fetch (Delphi)... / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]