Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подсчет среднего значения с нулевыми числами [D7, WinXP]


Страницы:   1 2 3 4

kyn66 ©   (2009-10-23 09:53:00) 

Сталкнулся с данной ситуацией, пытаясь установить в футоре DBGridEh подсчет среднего значения по столбцу. Вот ведь как оно получается, имеется два ряда чисел:

5      5
4      0
3      3
2      0
1      1
=      =
3     1.8

Но для реальной отчетности нужны реальные данные среднего значения, без нулей. Это как-то решается? Может есть какой дополнительный параметр для компонента или ....?


kyn66   (2009-10-23 18:16:00) [1]

Уважаемые коллеги. В конце концов решение найдено с подсказки автора компонента. Если вдруг кто сталкнется с такой ситуацией:
1) Использование DBGridEh
2) Поиск среднего значения среди ненулевых чисел, в списке которых есть нули

Решение:
т.к. грид осекает при подсчете среднего значения поля со значением Null, то  нужно создать Calculated поле, с типом данных таким как и основное и присвоить ненулевые значения. В футоре в качестве параметра FieldName указать это созданное поле.

Проверено, все работает. Всем спасибо, вопрос закрыт.


kyn66   (2009-10-23 17:40:00) [2]


> Так это завсегда с ним было ... И чего тут нового ...


У кого есть желание - тот поймет!

ВЫяснилось новое обстоятельство, что скорее всего проблема в ADS, поля таблицы не хотят принимать значение Null. Может кто работает с ADS?


Amoeba   (2009-10-23 17:36:00) [3]


> brother ©   (23.10.09 10:40) [14]
>
> имхо автор партизан... и шифрами говорит...)

Так это завсегда с ним было ... И чего тут нового ...


Anatoly Podgoretsky   (2009-10-23 15:47:00) [4]

> kyn66  (23.10.2009 15:30:11)  [71]

Я сообщения читать умею.


kyn66   (2009-10-23 15:30:00) [5]


> Ты что творишь, полю типа Double пытаешься присвоить NULL


ДА не Double оно совсем, а Variant(+ калькулируемое). А Variant потому, что будет принимать 2 значения и Null и Double


Anatoly Podgoretsky   (2009-10-23 15:27:00) [6]

> kyn66  (23.10.2009 15:04:08)  [68]

Ты что творишь, полю типа Double пытаешься присвоить NULL


kyn66   (2009-10-23 15:16:00) [7]

Вот отсюда идет ошибка
goAvg:
  begin
     if (FDataSet.FieldByName(Item.FieldName).IsNull = False) then
       Inc(Item.FNotNullRecordCount);
    Item.FSumValueAsSum := Item.FSumValueAsSum +
            FDataSet.FieldByName(Item.FieldName).AsFloat;

Т.е. получается противоречие. Спtрва проверяется что значение поля не Null. Если истинно, счетчик увеличивается. И идет далее, где это Null-поле приводится к типу Float.


kyn66   (2009-10-23 15:04:00) [8]

Связался с атором компонента. Он посоветовал вот что:

В DataSet'e можно создать калькулируемое поле в котором для нулей
устанавливать значение Null. И по нему подсчитывать.

Я так и сделал, однако появилась ошибка http://yurec66.narod.ru/Vopros/erobor.jpg.Полю OborotTblFNotNull присвоен тип Variant


Сергей М.   (2009-10-23 14:54:00) [9]

По барабану где и в каком виде он должен их видеть, все равно это отчет.


> вносить дополнения в список, редактировать и т.д.


Это и есть то что подразумевается под интерактивным отчетом.


kyn66   (2009-10-23 14:40:00) [10]


> То что ты продемонстрировал на картинке - это тот же самый
> отчет, только интерактивный.


Я бы так не сказал, это просто данные в том виде, в котором юзер должен видеть на своем экране монитора, чтобы вносить дополнения в список, редактировать и т.д.


Сергей М.   (2009-10-23 13:56:00) [11]


> Пока об отчетах речь не идет


То что ты продемонстрировал на картинке - это тот же самый отчет, только интерактивный.


Сергей М.   (2009-10-23 13:54:00) [12]


> Представь, что нет его там


А что там тогда вместо него будет ?)


kyn66   (2009-10-23 13:53:00) [13]


> Зачем пихать на одну и ту же форму отчеты в различных разрезах
> ?


Пока об отчетах речь не идет. Изначально на форму был положен компонент DBgridEh для предоставления данных по определенному критерию и использована функция этого грида показывать в футоре суммы и средние значения. И все

Кстати, поля кол-во - суммируются, а лишь по суммам идуд средние значения.


kyn66   (2009-10-23 13:50:00) [14]


> оманда на размещение в форме в графе "ИТОГО" среднеарифметического
> вместо суммы ?


Вот далось тебе это слово ИТОГО. Представь, что нет его там


Сергей М.   (2009-10-23 13:33:00) [15]


> интересует на какую среднюю сумму реализовано гофроящиков


Ну и оформи этот отчет в виде отдельнойформы !
Зачем пихать на одну и ту же форму отчеты в различных разрезах ?


Sergey13   (2009-10-23 13:32:00) [16]

Плюсом к [55] Sergey13 ©   (23.10.09 13:19)

Если ты один раз продал вагон чего то, то по твоейотчетности выдет, что ты весь год продавал по вагону в месяц, и тем самым скрыл от государства 11/12 налогов. Статья лет на 10 наверное тянет, а то и более. 8-)


Сергей М.   (2009-10-23 13:31:00) [17]


> руководство и интересует средняя сумма на разные виды ящиков


А что, руководство разве не интересует общаясумма поставок и реализаций за период тех самых картинных гофроящиков ящиков, коль скоро тебе была дана команда на размещение в форме в графе "ИТОГО" среднеарифметического вместо суммы ?


kyn66   (2009-10-23 13:27:00) [18]

В превом столбце указана розничная цена на все типоразмеры ящиков. А в течение месяца не по всем была реализация. Вот и интересует на какую среднюю сумму реализовано гофроящиков.


Сергей М.   (2009-10-23 13:24:00) [19]


> Sergey13 ©   (23.10.09 13:19) [55]


Угу. В прокуратуре тоже люди далеко не больные на голову, и под цифирью в графе "ИТОГО" подразумевают именно "ИТОГО", а не какое-то там хитромудрое среднеарифметическое)


kyn66   (2009-10-23 13:23:00) [20]


> Вот хоть убей - ума не приложу, кому и зачем может понадобиться
> среднее арифметическое суммы прихода и/или расхода..


МЫ сейчас начнем обсуждать другую тему... Как видно из картинки, в списке гофроящик. Они могут быть одного номинала(типоразмер) но с разной розничной ценой. Все зависит от закупки. Поэтому руководство и интересует средняя сумма на разные виды ящиков. Так понятно?


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо