Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DBGridEh Суммирование в итоговой строке, СУБД-ОРАКЛ,ADOQuery 
:(
    Опции темы
vino
Дата 26.3.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



ЗДРАВСТВУЙТЕ!
Мне надо просуммировать по определенному столбцу(11) в DBGridEh и высветить в конце эту сумму в этом же столбце.
Я написал
Код

   DBGridEh1->FooterColor=clCream;
   DBGridEh1->Columns->Items[0]->Footer->ValueType=fvtStaticText;
   DBGridEh1->Columns->Items[0]->Footer->Alignment=taCenter;
   DBGridEh1->Columns->Items[0]->Footer->Value="Итого:";
   DBGridEh1->SumList->Active=true;
   DBGridEh1->FooterRowCount=1;
   DBGridEh1->Columns->Items[11]->Footer->ValueType= fvtSum;

Завершается аварийно.Не могу понять в чем дело.

PM MAIL   Вверх
Данкинг
Дата 26.3.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



А запросом нельзя?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
vino
Дата 26.3.2008, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



У меня и так по ADOQuery в DBGridEh все отображается запросом (строк 3000).Но я хочу в конце этого грида в последней строке (она кремового цвета) отобразить в начале строки в нулевом столбце слово "Итого:  "  и в последнем столбце (11-й по счету ) сумму жирнім цветом.

PM MAIL   Вверх
korian
Дата 26.3.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



имху тока так
есть таблица (я плохо знаю SQL, поэтому псевдкод)
MyTable
{
    int id;
    int IsSum;
    string name;
    int data;
}

insert into MyTable (id, IsSum, name) values (0, 1, "");

перед показом
update MyTable set data = (select SUM(data) from MyTable where IsSum != 1)  where IsSum == 1;
вывод
select name, data from MyTable order by IsSum, name

PM   Вверх
vino
Дата 26.3.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



На то он и DBGridEh,чтобы пользоваться возможностью с помощью свойств DBGridEh (Footer)
суммировать в итоговой строке значения определенных полей.
PM MAIL   Вверх
korian
Дата 26.3.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



Код

   DBGridEh1->FooterColor=clCream;
   DBGridEh1->SumList->Active=true;
   DBGridEh1->FooterRowCount=1;
   DBGridEh1->Columns->Items[0]->Footer->ValueType=fvtStaticText;
   DBGridEh1->Columns->Items[0]->Footer->Alignment=taCenter;
   DBGridEh1->Columns->Items[0]->Footer->Value="Итого:";
   DBGridEh1->Columns->Items[11]->Footer->ValueType= fvtSum;

так имху, если остальные настройки сделаны верно
покрайней мере
Цитата

The footer appears only if the FooterRowCount > 0.
т.е.
   DBGridEh1->FooterRowCount=1;
надо делать раньше чем обращение к футеру

Это сообщение отредактировал(а) korian - 26.3.2008, 15:41
PM   Вверх
vino
Дата 26.3.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Я вместо строки 
Код

   DBGridEh1->Columns->Items[11]->Footer->ValueType= fvtSum;

нарисала
Код

DBGridEh1->Columns->Items[11]->Footer->SumValue;

Проходит без ошибок,но кроме "итого" ничего в подсвеченной строке не формирует.
Не вываливается,как прежде.
А строку
Код

DBGridEh1->FooterRowCount=1;

Я поставила раньше, ничего не тпоменялось.
Я в событии ADOAfterOpen() формирую названия столбцов,их размерность и после этого перехожу к формированию итоговой строки.Потом откріваю запрос.И опять на это событие переходит .
PM MAIL   Вверх
korian
Дата 26.3.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



необходимо указывать какое поле надо суммировать, если все делается на лету, то и это надо делать
Код

   DBGridEh1->FooterColor=clCream;
   DBGridEh1->FooterRowCount=1;
   DBGridEh1->Columns->Items[0]->Footer->ValueType=fvtStaticText;
   DBGridEh1->Columns->Items[0]->Footer->Alignment=taCenter;
   DBGridEh1->Columns->Items[0]->Footer->Value="Итого:";
   DBGridEh1->Columns->Items[11]->Footer->FieldName = "имя поля"; //необходимо указать название поля
   DBGridEh1->Columns->Items[11]->Footer->ValueType = fvtSum;
   DBGridEh1->SumList->Active=true;

PM   Вверх
vino
Дата 26.3.2008, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Как предложили,вілетает с ошибкой,что поле не найдено (по которомусуммирование).А оно есть.
Заменила в предпоследней строке на 
Код

DBGridEh1->Columns->Items[11]->Footer=SumValue;


Без ошибок,но не суммтрует.Пусто.
?
PM MAIL   Вверх
korian
Дата 26.3.2008, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



если поле не найдено, значит так оно и есть...
может оно case sensitivity или еще что, экперементируйте с названием поля имху... впишите правильное название
название там должно быть такое же как в таблице в базе поидее, или такое же как в select запросе.
может надо писать вместе с таблицей... я хз кароче
самый простой вариант настроить в ручную с помощью Object inspectora и посмотреть какое должно быть значение.

Это сообщение отредактировал(а) korian - 26.3.2008, 18:20
PM   Вверх
vino
Дата 27.3.2008, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Любое поле не проходит.Все они есть.Без этой строки все проходит,отбражаются все данные из запроса.Дело не в этом.Но я не знаю в чем.
Именно на этой строке
Код

  DBGridEh1->Columns->Items[11]->Footer->ValueType = fvtSum;
 вылетает.
Что такое  fvtSum?Может что-то прописать в Свойствах (propertis) надо ?
PM MAIL   Вверх
korian
Дата 27.3.2008, 10:18 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



DBGridEh1->Columns->Items[11]->Footer->ValueType = fvtSum; - это означает, что данная ячейка содержит в себе сумму
   DBGridEh1->Columns->Items[11]->Footer->FieldName = "имя поля"; //суммирует оно ячейки поля под названием <имя поля>

короче я с DBGridEh1 не работал, и устанавливать его влом. скачал его и говорю то, что написано в справке по нему...
добавить футер статически можно?
т.е. в настройках DBGridEh1 параметр FooterRowCount поставить равным 1
потом перейти к футеру и указать в 11 ячейке ValueType=fvtSum и FieldName (имху там будет предоставлен выбор, какое имя туда можно записать, если DataSet тоже подключен статически)

Добавлено через 12 минут и 55 секунд
если ничего не получится, тогда установлю DBGridEh1 и расскажу по порядку...

Это сообщение отредактировал(а) korian - 27.3.2008, 10:19
PM   Вверх
vino
Дата 27.3.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Спасибо.Язык неважно знаю.
В настройках DBGridEh1 параметр FooterRowCount поставила равным 1.Больше ничего нет.
В футере и указать в 11 ячейке ValueType=fvtSum и FieldName не нашла где.Ситуация не изменилась.

PM MAIL   Вверх
korian
Дата 27.3.2008, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



рисунок прилагается.
устанавливаем в DBGridEh1, FooterRowCount=1
устанавливаем ValueType в lvtSum (это на рисунке обозначено цифрой "1")
устанавливаем FieldName (на рисунке цифра "2"), там должно быть такое же значение как и в FieldName обозначенный цифрой "3", если вы хотите, чтобы суммирование происходило по этому столбцу.

Присоединённый файл ( Кол-во скачиваний: 60 )
Присоединённый файл  2.JPG 43,74 Kb
PM   Вверх
korian
Дата 27.3.2008, 13:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



во =) терь знаю как кодом записать...
Код

   DBGridEh1->FooterColor=clCream;
   DBGridEh1->FooterRowCount=1;
   DBGridEh1->Columns->Items[0]->Footer->ValueType=fvtStaticText;
   DBGridEh1->Columns->Items[0]->Footer->Alignment=taCenter;
   DBGridEh1->Columns->Items[0]->Footer->Value="Итого:";
   DBGridEh1->Columns->Items[11]->Footer->FieldName = DBGridEh1->Columns->Items[11]->FieldName;
   DBGridEh1->Columns->Items[11]->Footer->ValueType = fvtSum;
   DBGridEh1->SumList->Active=true;


Это сообщение отредактировал(а) korian - 27.3.2008, 13:59
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0591 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.