Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как быстро поместить содержимое Query в Memo 
:(
    Опции темы
Garyck
Дата 26.1.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 11.10.2007

Репутация: нет
Всего: нет



Здравствуйте, товарищи!
Хочу обратиться к вам за помощью. У меня есть проблема над которой я последнее время безуспешно бьюсь. smile 

В общем задачка такая:
Есть БД InterBase
C помощью TIBQuery к ней сделан запрос, например SELECT Name FROM Mans (около 4000 записей)
Нужно поместить содержимое в обычный компонент MEMO.

Первым делом я решил его в лоб, т.е.:
Код

while not IBQuery1.Eof do
 begin
   Memo1.Strings.Add(IBQuery1.FieldsByName('Name').AsString;
   IBQuery1.Next
 end;

Но запрос выполняется недопустимо медленно (порядка 40 секунд)

Потом решил с помощью Query1.BatchOutput записать запрос в текстовый файл, а потом этот файл загрузить в Memo.LoadFromFile.
И все стало на свои места, запрос выполняется порядка 2-3 секунд smile 

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

Кто-нибудь может подсказать как сделать это по-другому, например через TStreamsmile


PM MAIL   Вверх
Akella
Дата 27.1.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Код

Memo1.lines.BeginUpdate;

твой код

Memo1.lines.EndUpdate;

PM MAIL   Вверх
jsa
Дата 27.1.2009, 09:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 5
Всего: 20



Цитата(Garyck @  27.1.2009,  02:48 Найти цитируемый пост)
Но запрос выполняется недопустимо медленно (порядка 40 секунд)Потом решил с помощью Query1.BatchOutput записать запрос в текстовый файл, а потом этот файл загрузить в Memo.LoadFromFile.И все стало на свои места, запрос выполняется порядка 2-3 секунд 

чето бред какой-то, не может Batch так повлиять на скорость, может быть на этапе добавление в memo возникают тормоза при отрисовке, еще поверю
попробуй BeginUpdate, EndUpdate

Код

Memo1.Lines.BeginUpdate;
while not IBQuery1.Eof do
 begin
   Memo1.Lines.Add(IBQuery1.FieldsByName('Name').AsString);
   IBQuery1.Next
 end;
Memo1.Lines.EndUpdate;


Добавлено через 1 минуту и 4 секунды
не успел smile 

Это сообщение отредактировал(а) jsa - 27.1.2009, 09:22


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Frees
Дата 27.1.2009, 09:44 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(jsa @  27.1.2009,  11:21 Найти цитируемый пост)
попробуй BeginUpdate, EndUpdate

и еще
Код

Memo1.WordWrap := false;
Memo1.Lines.BeginUpdate;
....



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Garyck
Дата 27.1.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 11.10.2007

Репутация: нет
Всего: нет



Спасибо Всем Огромное за Помощь! smile 
Действительно вся проблема была в обновлении экрана и выполнении кода OnChange.
Кароче, BeginUpdate, EndUpdate - рулит! smile 
 smile 
PM MAIL   Вверх
morpheyushka
Дата 28.1.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: нет
Всего: 8



Цитата(Garyck @  27.1.2009,  22:17 Найти цитируемый пост)
Кароче, BeginUpdate, EndUpdate - рулит! 

Кто бы сомневался smile 


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.