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

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

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

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

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

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

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

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

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


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