Страница 1 из 2

Сумма в DBGridEH

Добавлено: 14 мар 2007, 15:42
Лелик_1044
Есть таблица нужно вывести
Сумму четных и нечетных и общую сумму внизу таблицы
В зависимости от значения поля

Re: Сумма в DBGridED

Добавлено: 14 мар 2007, 18:51
namomelkor
Единственное что приходит на ум это проход по всей таблице и считывание по одной записи с последующей проверкой на четность ну и накапливание четных в одной пременной а нечетных в другой.

Re: Сумма в DBGridED

Добавлено: 14 мар 2007, 19:06
Лелик_1044
Вот я сейчас и думаю над этим
Но заметно просто как он бегает по таблице
А вот тсандратный сумматорв в dbgrideh рабоатет все четко

Re: Сумма в DBGridED

Добавлено: 14 мар 2007, 20:03
namomelkor
чтобы небыло заметно можно предватительно таблицу загнать в запрос или другую Table

Re: Сумма в DBGridED

Добавлено: 15 мар 2007, 02:09
Игорь Акопян
Лелик, а что мешает воспользоваться стандартными сумлистами?

Re: Сумма в DBGridED

Добавлено: 15 мар 2007, 13:06
Лелик_1044
Я что то тыклася но толком ничего не понял
А примеров не нашел

Re: Сумма в DBGridEH

Добавлено: 16 мар 2007, 10:53
Игорь Акопян
Лелик, там не сложно:
свойство грида FooterRowCount выставляешь нужное кол-во строк итогов, 3 в твоём случае
далее создаёшь колонку в Columns.
Там лезешь в Footers, и создаёшь там 3 строки.
Теперь чтобы отобразить кол-во чётных/нечётных... Ну к примеру создаём в запросе пару полей (even, odd), в которых будет 1 для чётного и нечётного соответственно (можно сделать калькулируемое поле в дельфях). Ну и вешаем наши Футеры на кажде из полей. Не забыть выставить у футера ValueType = fvtCount

вроде ничего не забыл :)

Re: Сумма в DBGridEH

Добавлено: 16 мар 2007, 12:03
Лелик_1044
Ну к примеру создаём в запросе пару полей (even, odd), в которых будет 1 для чётного и нечётного соответственно (можно сделать калькулируемое поле в дельфях). Ну и вешаем наши Футеры на кажде из полей. Не забыть выставить у футера ValueType = fvtCount

Вот на этом подробнее
Уменя запрос возаращает 1 колнку номер + N колонок для которых надо вывести сумму мне для каждой надо "Ну к примеру создаём в запросе пару полей (even, odd)"

Re: Сумма в DBGridEH

Добавлено: 19 мар 2007, 13:36
Игорь Акопян
Так, стоп. Не внимательно просмотрел условие :)
Тебе надо посчитать по колонке сумму, а так же суммы при чётных и нечётных значениях номера.
Значиццо так... Забил табличку в акцессе указанного вида.
ADOQuery.SQL.Text :=
[syntax='sql']
SELECT
T1.Nomer,
T1.F1,
IIf([Nomer] Mod 2=0,[F1],0) AS chet_f1,
(f1-chet_f1) as nc_f1,
T1.F2,
IIf([Nomer] Mod 2=0,[F2],0) AS chet_f2,
(f2-chet_f2) as nc_f2
FROM T1;
[/syntax]
DBGridEh1.FooterRowCount := 3;
DBGridEh1.SumList.Active := true;
далее на гриде создаём три колонки на поля Nomer, F1, F2.
во второй колонке открываем Footers и создаём 3 штуки:
первый FieldName := chet_f1, ValueType := fvtSum
второй FieldName := nc_f1, ValueType := fvtSum
третий FieldName := f1, ValueType := fvtSum

и так далее - если непонятно могу форму кинуть :)

Re: Сумма в DBGridEH

Добавлено: 19 мар 2007, 17:15
Лелик_1044
Игорь Акопян писал(а):Так, стоп. Не внимательно просмотрел условие :)
Тебе надо посчитать по колонке сумму, а так же суммы при чётных и нечётных значениях номера.
Значиццо так... Забил табличку в акцессе указанного вида.
ADOQuery.SQL.Text :=
[syntax='sql']
SELECT
T1.Nomer,
T1.F1,
IIf([Nomer] Mod 2=0,[F1],0) AS chet_f1,
(f1-chet_f1) as nc_f1,
T1.F2,
IIf([Nomer] Mod 2=0,[F2],0) AS chet_f2,
(f2-chet_f2) as nc_f2
FROM T1;
[/syntax]
DBGridEh1.FooterRowCount := 3;
DBGridEh1.SumList.Active := true;
далее на гриде создаём три колонки на поля Nomer, F1, F2.
во второй колонке открываем Footers и создаём 3 штуки:
первый FieldName := chet_f1, ValueType := fvtSum
второй FieldName := nc_f1, ValueType := fvtSum
третий FieldName := f1, ValueType := fvtSum

и так далее - если непонятно могу форму кинуть :)
Дело в том что колонок не 2 это я для примера привел :( их больше
И во творых если пользователь будет редактировать значения сумма же меняться не будет :(