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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2009, 21:25   #1
Football_lady
 
Регистрация: 27.11.2009
Сообщений: 7
Смущение Много SQL запросов что компьютер подвисает!!

Люди пожалуйста помогите у меня программа продажи билетов, у меня когда форма активна 665 image'ов каждый из них обращается к 3 базам!!!!! Все работает,но это занимает минуты 2-3!! Не подскажите как сделать что бы она быстрей думала!!! Вот текст самого обращение:
var Arr: array [1..665] of TImage;
-------------------------------------------------
j:=1;
for i:=0 to ComponentCount-1 do //просматриваем
if (Components[i] is TImage) then begin //если подходит
Arr[j]:=(Components[i] as TImage);//помещаем
j:=j+1;
end;
--------------------------------------------------------
for o:=1 to 35 do begin
for t:=1 to 19 do begin
sv:=0;
with form11.ADOQuery1 do begin
Close;
SQL.Clear; // удалить текст предыдущего запроса
SQL.Add('select * FROM Купленые WHERE (сектор= '+QuotedStr(sektor)+' and ряд= '+inttostr(o)+' and место= '+inttostr(t)+');');
Open;
end;
if form11.ADOQuery1.RecordCount <> 0 then
sv:=sv+1;
with form10.ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add('select * FROM Места WHERE (сектор= '+QuotedStr(sektor)+' and ряд= '+inttostr(o)+' and место= '+inttostr(t)+');');
Open;
end;
if form10.ADOQuery1.RecordCount <> 0 then
sv:=sv+1;
with form9.ADOQuery1 do begin
Close;
SQL.Clear; // удалить текст предыдущего запроса
SQL.Add('select * FROM Абонемент WHERE (сектор= '+QuotedStr(sektor)+' and ряд= '+inttostr(o)+' and место= '+inttostr(t)+');');
Open;
end;
if form9.ADOQuery1.RecordCount <> 0 then
sv:=sv+1;
if sv=0 then begin
if o>1 then
i:=((o-1)*19)+t
else i:=o*t;
Arr[i].Picture.LoadFromFile('0.bmp');
Arr[i].Enabled:=true;
Arr[i].Hint:=inttostr(t)+' место '+inttostr(o)+' ряд';
Arr[i].Showhint:=true;
end;
end;
-------------------------------------------------------------------
Пожл люди помогите!!! В программировании я чайник с крышечкой, поэтому пишите пожалуйста понятней!!!
Football_lady вне форума Ответить с цитированием
Старый 27.11.2009, 21:45   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну и не удивительно!
что ж Вы в цикле творите то?!
665 раз закрываете датасет, формируете запрос (кстати, после формирования он по умолчанию ещё сам парсится на предмент параметров), выполняете запрос к БД, потом обрабатываете результаты!!
Так делать, мягко говоря, СТРАННО!

Точно надо менять логику работы...
получать данные за таблицы (3-х таблиц) и уже на клиенте разбирать...

p.s. если расскажите поподробнее условия задачи, запакуете исходники проекта + тестовую БД и выложите это - то можно и более конкретно об изменении логики работы поговорить...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.11.2009, 22:09   #3
Football_lady
 
Регистрация: 27.11.2009
Сообщений: 7
По умолчанию

Вобщем тема продажи билетов на стадион, где графически изображается 1 сектор (Всего их 45) в котором 665 мест, он проходит по базам ищет это место в базе, если не находит загружает зеленый квадратик, 2 цикла для проверки каждого места их 19 на одном ряду, в секторе их 35!
Football_lady вне форума Ответить с цитированием
Старый 27.11.2009, 23:08   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну я бы сделал так.
выполнил выборку (или выборки - а почему три таблицы то?).
потом в цикле прошёлся по всем полученным данным,
анализируя каждый полученный результат и закрашивая соответствующее место (кстати, вам не кажется, что рисовать прямо на канве (или хотя бы использовать shape'ы) намного быстрее будет?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.11.2009, 13:05   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

да уж - ну и реализация...
если бы еще написал что за субд, то можно было бы попробовать реализовать все запросы через один запрос - портянка со всеми сектора - рядами - местами + необходимые признаки
все летать будет
soleil@mmc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ограничение кол-ва SQL запросов в BDE ?!!! Qdesnik БД в Delphi 1 15.05.2009 17:24
Помогите написать несколько SQL запросов grinch SQL, базы данных 12 23.03.2009 13:15
Написание SQL-запросов tsergey Помощь студентам 9 12.02.2009 11:17
использование SQL запросов в коде VBA b00s Microsoft Office Access 3 26.04.2008 13:40
несколько запросов SQL Arteom БД в Delphi 3 09.09.2007 23:39