Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.02.2013, 12:39
DOR DOR вне форума
Начинающий
 
Регистрация: 14.01.2011
Сообщения: 171
Версия Delphi: 7
Репутация: 10
По умолчанию Оптимизация быстродействия

Добрый день. Программа представляет собой следующее: есть главная форма (Ф1) которая через грид запросом отображает кратко информацию которая есть в БД (акцесс). С Ф1 вызывается форма (Ф2) через которую информация записывается в БД, в главную таблицу, либо для детального просмотра информации занесённой в БД. БД состоит из нескольких таблиц, главной и тех, что содержат списки (наименование продукта, партнер и т.д.). Соответственно в главную таблицу записываются ключи от «информационных» таблиц. Сейчас процесс отображения уже существующей информации на Ф2 реализован так: когда щелкаешь на строку в Ф1, курсор в главной таблице встает на первую строку и дальше идет цикл. Если ID таблицы = ID строки запроса, информация выгружается в Ф2. Когда было не большое количество строк работало быстро, но сейчас из-за большого кол-ва строк отображение Ф2 задерживает на 3-4 сек. Подскажите пжл, как можно модернизировать этот процесс.
Ответить с цитированием
  #2  
Старый 18.02.2013, 13:37
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
когда щелкаешь на строку в Ф1, курсор в главной таблице встает на первую строку и дальше идет цикл. Если ID таблицы = ID строки запроса, информация выгружается в Ф2
а что мешает доставать данные не в цыкле, а запросом ?
Код:
SELECT m.* 
FROM main_table m
  JOIN spravochnik s ON s.id = m.sprav_id
WHERE m.id = :id
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #3  
Старый 18.02.2013, 14:22
DOR DOR вне форума
Начинающий
 
Регистрация: 14.01.2011
Сообщения: 171
Версия Delphi: 7
Репутация: 10
По умолчанию

дело в том, что информация для записи или отображения появляется на Ф2. Ф2 представляет собой набор контролов из вкладки датаконтролс (вроде так называется). т.е. когда ID таблицы и грида на Ф1 совпали вся информация из таблицы появляется в контролах на Ф2.
Ответить с цитированием
  #4  
Старый 18.02.2013, 15:29
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

и зачем такие "грабли" ?
брось на Ф2 отдельную ADOQuery\ADODataSet и перенацель свои контролы на него.
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #5  
Старый 18.02.2013, 20:56
DOR DOR вне форума
Начинающий
 
Регистрация: 14.01.2011
Сообщения: 171
Версия Delphi: 7
Репутация: 10
По умолчанию

Огромное спасибо.Так действительно проще и быстрее)
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter