![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем доброго времени суток. Интересует следующий вопрос: имеется таблица БД товары, в ней поля наименование, кол-во, цена. Нужно подсчитать общую сумму товара на складе. И делать это постоянно ну или как бы правильно выразиться динамически, когда добавляется товар пересчитывать, удаляется тоже пересчитывать. Я делал до этого времени с помощью цикла, по каждой записи умножая кол-во на цену и складывая. Но все же пришел к выводу что при больших объемах информации это очень сильно будет тормозить...... Каким способом было бы лучше всего это реализовать?
|
|
#2
|
|||
|
|||
|
Запросом.
Код:
SELECT ID, Name, SUM(Quantity*Price) FROM Table GROUP BY ID, Name Код:
UPDATE Table SET Summa = Quantity * Price WHERE ID = 555 -- если есть какой-то ID, то делать для него, если для все - убери эту строку |
|
#3
|
|||
|
|||
|
и потом в процедуре на добавление или удаление товара заного деактивировать и активировать запрос?
Подскажи еще для таких расчетов dll библиотеки используются или это вообще не то просто незнаком все хочу научиться ими пользоваться![]() |
|
#4
|
|||
|
|||
|
Ну я не знаю, зачем тебе это надо. Вообще, глупо хранитьь эту сумму, т.к. ее очешь просто посчитать.
|
|
#5
|
|||
|
|||
|
Цитата:
Есть еще 1 вопрос Таблицу сортирую по алфавиту с помощью события онTitleClick Код:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
Var
f:string;
begin
f:= Column.FieldName;
dm.Tovar.Sort:=f + ' DESC';
end;Можно ли как нибудь сделать так чтобы, нажимаешь 1 раз на столбец сортируется по возрастанию, еще раз щелкаешь по убыванию? |
|
#6
|
|||
|
|||
|
Цитата:
Код:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
Var
f:string;
begin
f:= Column.FieldName;
if dm.Tovar.Sort=f + ' DESC' then dm.Tovar.Sort:=f
else
dm.Tovar.Sort:=f + ' DESC';
end;![]() |
|
#7
|
|||
|
|||
|
как просто все оказывается
а я думаю может там событие какое есть чтобы определяло второй щелчек.....![]() А что за флаг, интересно? Последний раз редактировалось windaws, 17.07.2010 в 13:54. |
|
#8
|
|||
|
|||
|
Цитата:
Код:
fl:boolean; и на шелчке тогда будет вот так: Код:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
Var
f:string;
begin
f:= Column.FieldName;
fl:=not fl;
if fl then dm.Tovar.Sort:=f
else
dm.Tovar.Sort:=f + ' DESC';
end; |