Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизСуммирование данных.Ошибка в коде? Найти похожие ветки
← →
Wiedzmin (2006-08-26 17:23) [0]Здравствуйте, уважаемые!
Помогите с проблемой.Объясняю:
Есть таблица table1. В ней столбец quantity. После нажатия на кнопку button1 должна быть подсчитана сумма всех чисел столбца и выведена в Edit1.
Проблема: считает совершенно не так. берет последнюю запись и умножает на число строк.
Вопрос: почему? как исправить?
Вот отрывок из листинга:
x:=0;
table1.Last;
y:=table1.FieldByName("quantity").Value;
for n:=table1.RecordCount downto 1 do x:=x+y;
edit1.Text:= inttostr(x);
← →
Anatoly Podgoretsky © (2006-08-26 17:45) [1]Все правильно это умножение последней строки на количество.
← →
Virgo_Style © (2006-08-26 18:33) [2]мы в восхищении (с)
← →
Fay © (2006-08-26 19:25) [3]"Вы берёте, и стреляете себе в ногу."
Это тот самый случай.
← →
Desdechado © (2006-08-27 15:49) [4]
with(table1) do begin
First;
x:=0;
while( not EOF ) do
begin
x:=x+FieldByName("aaa").AsFloat;
Next;
end;
end;
Но через SELECT Sum(aaa) будет быстрее и правильнее
← →
Wiedzmin (2006-08-28 15:37) [5]спасибо. рад был услышать ваше мнение
← →
StriderMan © (2006-08-28 15:41) [6]может как-нибудь запросиком проще? SUM?
← →
SergP. (2006-08-28 15:56) [7]> x:=0;
> table1.Last;
> y:=table1.FieldByName("quantity").Value;
> for n:=table1.RecordCount downto 1 do x:=x+y;
>
> edit1.Text:= inttostr(x);
М-да... в 5 строках 3 ошибки...
1). Цикл for - нехорош в данном случае. Нужно while not table1.bof do
2). Нет перехода к предыдущей записи. Table1.Prior
3). В теле цикла написана херня.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c