Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi DBPivotGrid Вычисляемые поля

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

xxbesoxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте ребята.   Задача такой , надо делать Вычисляемые поля из DBPivotGrid .  
//---------------------------------------------------------------------------------------------------------
 
это из учебное базе Northwind  

SQL

 
Код:
 
select UnitPrice, Quantity , ProductID  
from [Order Details]

 
хочу умножить   UnitPrice на  Quantity
 
добавляю DBPivotGrid  новое поля и из свойства OnCalculateCustomSummary  пишу  
 
Delphi

Код:
procedure TForm1.cxDBPivotGrid1Field1CalculateCustomSummary(
  Sender: TcxPivotGridField; ASummary: TcxPivotGridCrossCellSummary);
  var
  a , b: Double;
begin
   a := ASummary.Owner.GetSummaryByField(cxDBPivotGrid1UnitPrice, stSum);
   b := ASummary.Owner.GetSummaryByField(cxDBPivotGrid1Quantity, stSum);
   cxDBPivotGrid1Field1.DataBinding.ValueType := 'Float';
    ASummary.Custom :=  a * b;

 
Результат выводит не правильно ,   Помогите пожалуйста , в чем может быт проблема ?  
 
Добавлено:
http://img690.imageshack.us/img690/4216/m7ta.jpg  Вот скриншот

Всего записей: 46 | Зарегистр. 13-04-2013 | Отправлено: 13:11 22-08-2013
xxbesoxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Второе пример и так тоже не правильно работает ,  Ребята пожалуйста помогите читает  

Код:
procedure TForm1.cxDBPivotGrid1Field1CalculateCustomSummary(
  Sender: TcxPivotGridField; ASummary: TcxPivotGridCrossCellSummary);
begin
   ASummary.Custom := ASummary.Owner.GetSummaryByField(cxDBPivotGrid1Quantity, stSum) *
    ASummary.Owner.GetSummaryByField(cxDBPivotGrid1UnitPrice, stSum) ;
end;

 
   
 
Ребята что я делаю не правильно ?  почему так читает ?   Как сделать вычисляемые поля из DBPivotGrid1 ???
 
Добавлено:
http://img543.imageshack.us/img543/8862/h4ii.jpg  Вот скриншот

Всего записей: 46 | Зарегистр. 13-04-2013 | Отправлено: 03:23 23-08-2013
reenoip



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Ребята что я делаю не правильно ?

 
По DE вопрошать лучше там - ибо там вероятность ответа выше.

Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 08:24 23-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
http://img690.imageshack.us/img690/4216/m7ta.jpg  Вот скриншот  

По скриншоту сложно что-то понять. Отметьте на нем, какие числа вы складываете и что получается.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 13:11 23-08-2013
xxbesoxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UnitPrice  =   money   тип поля денежные (валютные)
 
Quantity = smallint Типы точных числовых данных, использующие целые значения.
 
А потом добавляю DBPivotGrid поля и из свойства OnCalculateCustomSumary пишу следующий код
 

Код:
procedure TForm1.cxDBPivotGrid1Field1CalculateCustomSummary(
  Sender: TcxPivotGridField; ASummary: TcxPivotGridCrossCellSummary);
  var
  a , b: Double;
begin
   a := ASummary.Owner.GetSummaryByField(cxDBPivotGrid1UnitPrice, stSum);
   b := ASummary.Owner.GetSummaryByField(cxDBPivotGrid1Quantity, stSum);
   cxDBPivotGrid1Field1.DataBinding.ValueType := 'Float';
    ASummary.Custom :=  a * b;

 
Получаю неправильный результат .    
 

Всего записей: 46 | Зарегистр. 13-04-2013 | Отправлено: 13:26 23-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В отладчике посмотрите, чему равняется ASummary.Owner.GetSummaryByField(cxDBPivotGrid1UnitPrice, stSum) и ASummary.Owner.GetSummaryByField(cxDBPivotGrid1Quantity, stSum)
Правильные ли значения Вы получаете.
 
Я так понимаю, 24,8 (UnitPrice) должно умножаться на Quantity (14, 15, 16, 20, 24, 30)
И соответственно, в последней колонке должны быть такие значения:
347,2
372
369,8
496
595,2
744

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 13:44 23-08-2013
xxbesoxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не понял  что я делаю не правильно !      Да вы хорошо понимаите что я хочу делать, да так точно .
 
Я так понимаю, 24,8 (UnitPrice) должно умножаться на Quantity (14, 15, 16, 20, 24, 30)
И соответственно, в последней колонке должны быть такие значения:
347,2
372
369,8
496
595,2
744

 
Вот у меня как получается ,  Почему ?  что я делаю не правильно ?  Пожалуйста помогите    
 
Добавлено:
Почему такой результат ? http://img716.imageshack.us/img716/5712/0m32.jpg
 
Добавлено:
Здесь тоже самое http://img844.imageshack.us/img844/3949/00uy.jpg

Всего записей: 46 | Зарегистр. 13-04-2013 | Отправлено: 14:09 23-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что говорит отладчик? Какие значения передаются переменным a и b?

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 15:49 23-08-2013
xxbesoxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MGAlex   Друг поменял переменное , Но тоже не правильный результат
 

Код:
procedure TForm1.cxDBPivotGrid1Field1CalculateCustomSummary(
  Sender: TcxPivotGridField; ASummary: TcxPivotGridCrossCellSummary);
  var
  a :  real;
  b: integer;
begin
    a := ASummary.Owner.GetSummaryByField(cxDBPivotGrid1UnitPrice, stSum);
    b := ASummary.Owner.GetSummaryByField(cxDBPivotGrid1Quantity, stSum);
    cxDBPivotGrid1Field1.SummaryType := stCustom;
    cxDBPivotGrid1Field1.DataBinding.ValueType := 'Float';
    if a <> 0 then
    ASummary.Custom :=  a * b
    else
    ASummary.Custom := 0
end;

 
Добавлено:
если UnitPrice  =   money  то его переменное a :  real;  , потом Quantity = smallint Типы точных числовых данных, использующие целые значения   его переменное b: integer;
 
 
Где еще ошибка ?    Что не так ?
 
Добавлено:
Вот это тоже меняю , но без результат  ......   Что здесь у нас еще ?
 

Код:
   a := ASummary.Owner.GetSummaryByField(cxDBPivotGrid1UnitPrice, stCustom);
    b := ASummary.Owner.GetSummaryByField(cxDBPivotGrid1Quantity, stCustom);

Всего записей: 46 | Зарегистр. 13-04-2013 | Отправлено: 16:16 23-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вы можете сказать, какое число присваивается переменной a и какое переменной b?
Поставьте Breakpoint и по F8 пройдитесь по процедуре.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 16:33 23-08-2013
xxbesoxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а   UnitPrice  =   money
---------------------------
24,80
5,50
2,30
 
 
b   Quantity = smallint
----------------------------------
5
2
3
4
8
 
http://img843.imageshack.us/img843/5229/xa5c.jpg
 
В примере выбрал это  
 
Добавлено:
Задача такой что именно из DBPivotGrid .....   Пожалуйста 2 день сижу и не как не магу получить правильни результат...  Пожалуйста помогите как это делать ?  

Всего записей: 46 | Зарегистр. 13-04-2013 | Отправлено: 16:57 23-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Значит, проблема в ASummary.Custom
Попробуйте использовать не Custom, а другое значение.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 18:30 23-08-2013
xxbesoxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все это перепробовал и не компилируется  
----------------------------------------------------------
Average
Sum
Variance
VarianceP
Count
DataField  
StdDev
GetValue
 
 
подходящий вот это . Но результат тоже самое  
------------------------------------------------------------------
SummaryVariation
 
 
Да ,  такой дела.  Что вы скажете ?   Как можно реализовать вычисляемые поля из DBPivotGrid

Всего записей: 46 | Зарегистр. 13-04-2013 | Отправлено: 19:13 23-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот здесь есть тема подобная:
http://www.devexpress.com/Support/Center/Question/Details/Q137659
 

Код:
procedure TRBPivotForm.OnCustomCalculation(Sender: TcxPivotGridField;
  ASummary: TcxPivotGridCrossCellSummary);
....
    tmpField:= FindField('Sum1');
    ASummary.Custom:= ASummary.Owner.GetSummaryByField(tmpField, stCustom);
...
end;

 
Т.е.. здесь по-другому значение присваивается. В данном примере 2 поля суммируются, вам же нужно умножать.
Посмотрите, есть ли функция умножения, что-то сродни GetMultiplyByField

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 20:15 23-08-2013
xxbesoxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подобная тема есть да много. Но там нету осмысленный имя не одного {поля} и код не магу почитать.  У меня нету опить работы DevExpress VCL  если бы это задача был SQL ,  можно делать  легко и просто.
 

Код:
select UnitPrice, Quantity , ProductID , vichSumm= (UnitPrice * Quantity)
from [Order Details]

 
или вычисляемые поля на простои DbGrid
 

Код:
procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
 
  Query1Vichislenie.AsFloat := OraQuery1.FieldByName('UnitPrice').AsFloat *
  Query1.FieldByName('Quantity').AsInteger  ;
end;
 
 
MGAlex  Я на  DevExpress VCL переходил не давно ,  Пожалуйста я вас прошу по человечески покажите пример . Если для вас не трудно   {умножить или разделить}    вот здесь простои таблица создал в Access    http://dfiles.ru/files/3b1h8rq2s   или вы создайте пожалуйста ,   2 Поля денежный тип и покажите на него умножить или разделить ......  Пожалуйста  
 

Всего записей: 46 | Зарегистр. 13-04-2013 | Отправлено: 00:47 24-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дело в том, что у меня не установлены DevExpress VCL. Особой нужды в них у меня нет, поэтому особого опыта работы с "девками" у меня нет. Когда-то давно использовал ExpressBars.
 
Но тут главное принцип.
 
Для начала попробуйте сделать сложение, как в примере, который я привел выше. Будет ли правильно складывать.
 
Вполне возможно, что этот грид не умеет умножать.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 01:38 24-08-2013
xxbesoxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MGAlex  Я тоже не люблю , Но это задача понимайте ? .....    Вполне возможно, что этот грид не умеет умножать.  Я понимаю,  Но если скажу что не возможно и потом можно....   Это не красиво,  Мне надо увидит реальный пример. если в общем можно .    
  MGAlex  Я думал что вы знали и за это пишу......  Я Прошу прошения, Какой смысл ваши ответь здесь ? Я не понимаю ....  
     все равно спасибо за поддержку    
-----------------------------------------------------------------------
РЕБЯТА ТЕМА ЕЩЕ АКТУАЛЬНО    
 
Добавлено:
Сам не разбирали,  не знайте и меня отвечайте еще здесь.....  http://forum.ru-board.com/topic.cgi?forum=33&topic=10884&start=5160#lt     Я не понимаю смысл ваши ответа.....   Это все пустой разговор .....  

Всего записей: 46 | Зарегистр. 13-04-2013 | Отправлено: 02:16 24-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Я Прошу прошения, Какой смысл ваши ответь здесь ? Я не понимаю ....  

В программировании думать надо и пробовать, а не ждать готового ответа. Никто за Вас ничего делать не будет.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 11:58 24-08-2013
xxbesoxx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MGAlex  Вы не рассказывайте меня пожалуйста сказка ......   Форуме для того что бы помогать друг-другу ,  если человек что то не понял показать простои пример !     Ваши  разговор пустои   и даже больше  отвлекаете .....  
Цитата:
думать надо и пробовать
 =  Да вы что рассказчик .  Вам наверно скучно и делать нечего  

Всего записей: 46 | Зарегистр. 13-04-2013 | Отправлено: 12:35 24-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xxbesoxx
Вы сначала научитесь мысли излагать корректно. Читать вас - ломать глаза. Такое ощущение, что текст переведен гуглом с арабского.
Как Вам помочь, если Вы даже думать не хотите?
Такое ощущение, что вы программировать только вчера начали, элементарно по отладчику посмотреть не можете, что к чему.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 13:11 24-08-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi DBPivotGrid Вычисляемые поля


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru