Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2013, 12:15   #1
GROSS777
Пользователь
 
Регистрация: 27.05.2010
Сообщений: 18
По умолчанию afterscroll Zeos 7. Медленный запуск приложения

Всем привет!
Проект на SQLite. Все хорошо компилируется и работает пока не объявлю событие в датасете afterscroll. После объявления приложение запускается очень долго... Дело в том, что мне надо выводить данные в таблицу detail, связанные с таблицей master. При изменении курсора должны выводиться определенные данные в detail.
Значит дальше включаю отладку. от меня делфи требует файл ZAbstractrodataset.pas Прописываю в опциях пути где лежат всякие разные модули zeos'a. Все, файлы все на месте, отладчик перескакивает на файл ZAbstractrodataset и начинает там делать какие то дикие циклы. Понимаю что тормоза происходят из-за этих циклов. Вопрос: для чего он это делает и как мне быть? Может здесь есть специалисты по зеосу или те, кто сталкивался с этой проблемой.
кол-во записей в таблице мастер около 1600
в детэйл где-то 8000 тыс.
GROSS777 вне форума Ответить с цитированием
Старый 22.02.2013, 12:40   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А что прописано в обработчике события afterscroll? Наверно там собака зарыта. И не забывайте, afterscroll отрабатывает при любом изменении указателя на запись в DataSet. Не важно программно ли вы меняете его или в гриде по записям ходите
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.02.2013, 12:42   #3
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

отключи событие AfterScroll в дизайнере на компоненте, а потом на OnShow формы присвой это событие в коде вручную.
Аватар, AfterScroll отрабатывает не на каждой записи, а с некоторой задержкой. пока курсор изменяется - он не срабатывает, как только курсор остановится на одной записи на определенное время - он сработает. (по крайней мере в FIB+ так, думаю и в других тоже)
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 22.02.2013 в 12:48.
Yurk@ вне форума Ответить с цитированием
Старый 22.02.2013, 12:55   #4
GROSS777
Пользователь
 
Регистрация: 27.05.2010
Сообщений: 18
По умолчанию

Аватар, вот что там написано
Код:
procedure TfDM.TBaseNameAfterScroll(DataSet: TDataSet);
begin
  with fDM.TBasePriv do
  begin
    SQL.Text := 'Select * From TBasePriv Where Key_fio_foreign='+fDM.TBaseName.FieldByName('Key_fio').AsString;
    Open;
  end;
end;
При открытии проекта курсор встаёт на первую запись в датасете и срабатывает событие афтерскролл, как я понимаю..тормоза происходят только при загрузке, потом этот афтерскролл работает как надо
GROSS777 вне форума Ответить с цитированием
Старый 22.02.2013, 13:11   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Yurk@, проверить просто:
Код:
DataSet.First;
while not DataSet.Eof do begin
  DataSet.Next;
end;
И точку останова на первой команде обработчика AfterScroll. Я это прежде всего имел ввиду, а не процесс загруки данных из внешнего источника в DataSet и внутренние перемещения по данным (например Locate в процессе перебора) в обход методов явного управления положением указателя

GROSS777Тормоза там хорошие. Попробуйте то, что Yurk@ предлагает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.02.2013, 07:02   #6
GROSS777
Пользователь
 
Регистрация: 27.05.2010
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
отключи событие AfterScroll в дизайнере на компоненте, а потом на OnShow формы присвой это событие в коде вручную.
Спасибо! Вот это мне помогло
GROSS777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация приложения компонента Zeos NaomoVal Фриланс 0 21.05.2012 18:31
Медленный выход приложения (многопоточность) YarUnderoaker Общие вопросы Delphi 1 15.10.2010 16:57
Запуск приложения jkpro Помощь студентам 16 08.11.2009 12:31
Запуск приложения Zloy_Doomer Общие вопросы Delphi 2 10.10.2008 13:47
Запуск приложения Артэс Общие вопросы C/C++ 2 07.06.2008 17:38