Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.29;
Скачать: CL | DM;

Вниз

SQL - запрос проблемы...   Найти похожие ветки 

 
SkyR   (2002-04-09 08:32) [0]

//ComboPrepar - ЭТО ComboBox в котором лежит название всех препаратов
//Нужно для КАЖДОГО препарата подсчитать сумму по полям
//
//Demand
//REMAINSTY
//EXPENSE
//FINDEMAND
//

***
for j:=0 to ComboPrepar.Items.Count-1 do
Begin

DM.DM1.SQLQuery.Close;
DM.DM1.SQLQuery.SQL.Strings[0]:="select * from Main where "+"NAME="+chr(39)+ComboPrepar.Items.Strings[j]+chr(39);
DM.DM1.SQLQuery.Open;

DM.DM1.TableSvodRep.Open;
DM.DM1.TableSvodRep.Append;

DM.DM1.TableSvodRep.FieldByName("Name").AsString:=ComboPrepar.Items.Strings[j];

for i:=0 to DM.DM1.SQLQuery.RecordCount do
Begin
DM.DM1.TableSvodRep.FieldByName("Demand").AsFloat:=DM.DM1.TableSvodRep.FieldByName("Demand").AsFloat+DM.DM1.SQLQuery.FieldByName("Demand").AsFloat;
DM.DM1.TableSvodRep.FieldByName("REMAINSTY").AsFloat:=DM.DM1.TableSvodRep.FieldByName("REMAINSTY").AsFloat+DM.DM1.SQLQuery.FieldByName("REMAINSTY").AsFloat;
DM.DM1.TableSvodRep.FieldByName("EXPENSE").AsFloat:=DM.DM1.TableSvodRep.FieldByName("EXPENSE").AsFloat+DM.DM1.SQLQuery.FieldByName("EXPENSE").AsFloat;
DM.DM1.TableSvodRep.FieldByName("FINDEMAND").AsFloat:=DM.DM1.TableSvodRep.FieldByName("FINDEMAND").AsFloat+DM.DM1.SQLQuery.FieldByName("FINDEMAND").AsFloat;
DM.DM1.SQLQuery.Next;
End;

DM.DM1.TableSvodRep.Post;
End;
***

В принципе работает, но на P100 где она будет работать все это дело занимает около 3 мин!
Помогите плиз перевести часть между *** *** на SQL


 
fnatali   (2002-04-09 08:40) [1]

А названия всех препаратов у тебя хранятся в какой-то таблице? (по логике задачи надо-бы хранить)
Например,
таблица PREPAR
id
name
таблица MAIN
id_prepar
Demand
REMAINSTY
EXPENSE
FINDEMAND
Тогда можно уложиться в один запрос
DM.DM1.SQLQuery.Close;
DM.DM1.SQLQuery.SQL.Strings[0]:="select p.name,sum(m.demand),sum(m.remainsty), sum(m.expense), sum(m.findemand) from Main m, PREPAR p where p.id=m.id_prepar group by p.name");
DM.DM1.SQLQuery.Open;




 
roottim   (2002-04-09 08:42) [2]

супер!... как это читабельно :))

select f1,f2,...,sum(fn) from mytable1,... where...
grup by f1,f2,...,fn


 
Johnmen   (2002-04-09 09:03) [3]

Дополнение, вот так вот короче и читабельней :
with DM.DM1.SQLQuery do begin;
Close; SQL.Clear;
SQL.Append(...);
Open;
end;

PS Не совсем понятно, что такое DM и DM1 в связке ?







Страницы: 1 вся ветка

Текущий архив: 2002.04.29;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.008 c
1-94501
Miwa
2002-04-16 09:54
2002.04.29
Опять ТП7.


1-94518
asdf
2002-04-16 14:34
2002.04.29
Признак работы Delphi


14-94549
Nest
2002-03-21 14:42
2002.04.29
Как сделать недоступными некоторые items в TListBox? Или есть другой компонент с такой фичей?


3-94254
glaxo
2002-04-05 18:52
2002.04.29
Вопрос на засыпку для крутых программеров!!!


3-94255
Octav
2002-04-05 19:12
2002.04.29
Pack gdb





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский