powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Report Builder. Рассчет итоговый суммы в разной валюте
35 сообщений из 35, показаны все 2 страниц
Report Builder. Рассчет итоговый суммы в разной валюте
    #38412116
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Пишу свой первый отчет в Report Builder. Столкнулся с такой проблемой, что не могу в посчитать итоговую стоимость по столбцу.
В этом столбце хранится информация о сумме заказа. В соседнем столбце валюта. Пробовал вот так:
Код: plaintext
=Sum(Fields!Payment_Amount.Value*IIf(Fields!Currency_payment.Value='EUR',Parameters!EUR_Rate.Value,1)
но выдает ошибку.
Подскажите в чем ошибка? и можно ли так делать?

PS можете посоветовать какую-нибудь книгу, желательно в электронном виде.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38412130
Madmech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая ошибка выдается?

Первое, что бросается в глаза, - это отсутствие закрывающей скобки справа. Второе - строки должны ограничиваться кавычками, а не апострофами, как у Вас. Как-то так:
Код: vbnet
1.
=Sum(Fields!Payment_Amount.Value*IIf(Fields!Currency_payment.Value="EUR",Parameters!EUR_Rate.Value,1) )
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38412141
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О спасибо.
Код: plaintext
=Sum(Fields!Payment_Amount.Value*IIf(Fields!Currency_payment.Value="EUR",Parameters!EUR_Rate.Value,IIf(Fields!Currency_payment.Value="USD",Parameters!USD_Rate.Value,IIf(Fields!Currency_payment.Value="GBP",Parameters!GBP_Rate.Value,1))))
Получилось вот так. Но, что то все-равно считает так же как и
Код: plaintext
Sum(Fields!Payment_Amount.Value)
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38412173
Madmech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте применить конструкцию Switch, чтобы не запутаться в большем кол-ве вложенных IIF. Может, Вы там что-то напутали, в этих нагромождениях.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38412226
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему то всегда вот это условие авторFields!Currency_payment.Value="EUR", false (записи в евро конечно есть).
Есть какой то отладчик в этой среде?
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38412245
Madmech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет отладчика, по-моему, нет, я, по крайней мере, не знаю.
Проверьте, может быть, у Вас где-нибудь (либо в таблице, откуда берете названия валют, либо здесь, в VB-скрипте) буква "E" пишется кириллицей. Или в таблице-справочнике по краям могут быть невидимые символы, например, пробелы, и их просто нужно урезать слева-справа.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38415406
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Madmech,
спасибо за совет. Позже попробую.

Пока взялся за простенький отчет целью которого вывести количество документов опеределенного пользователя. авторSystem.Web.Services.Protocols.SoapException: The Group expression for the grouping ‘Buyer’ refers to the field ‘Buyer’. Report item expressions can only refer to fields within the current dataset scope or, if inside an aggregate, the specified dataset scope. Letters in the names of fields must use the correct case.
at Microsoft.ReportingServices.WebServer.ReportingService2010Impl.CreateReportEditSession(String Report, String Parent, Byte[] Definition, String& EditSessionID, Warning[]& Warnings)
at Microsoft.ReportingServices.WebServer.ReportingService2010.CreateReportEditSession(String Report, String Parent, Byte[] Definition, String& EditSessionID, Warning[]& Warnings)
Столкнулся вот с такой ошибкой. Подскажите в чем проблема. В datasets написал вот такой запрос: авторSELECT name, status, count(PO_id)

FROM Order PO, Users
WHERE PO.Buyer = Users.ID
GROUP BY name,status
ORDER BY name, status
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38415677
Madmech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yanik,

Судя по всему, в группировке таблицы/матрикса Вы ссылаетесь на поле DataSet'а, которого в самом DataSet'е нет, или оно именуется как-то иначе. Я так понимаю, в группировке вместо Buyer должно стоять name или наоборот, в запросе надо заименовать name, как Buyer. Плюс, проверьте, что данная таблица завязана на этот набор данных.

авторSystem.Web.Services.Protocols.SoapException: The Group expression for the grouping ‘Buyer’ refers to the field ‘Buyer’ . Report item expressions can only refer to fields within the current dataset scope or, if inside an aggregate, the specified dataset scope. Letters in the names of fields must use the correct case.
at Microsoft.ReportingServices.WebServer.ReportingService2010Impl.CreateReportEditSession(String Report, String Parent, Byte[] Definition, String& EditSessionID, Warning[]& Warnings)
at Microsoft.ReportingServices.WebServer.ReportingService2010.CreateReportEditSession(String Report, String Parent, Byte[] Definition, String& EditSessionID, Warning[]& Warnings)



Код: sql
1.
2.
3.
4.
5.
SELECT name, status, count(PO_id)
FROM Order PO, Users 
WHERE PO.Buyer = Users.ID
GROUP BY name,status
ORDER BY name, status
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38415826
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Madmech,

спасибо, разобрался уже. Что то с группировкой было.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38419750
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще небольшой вопросик.
Почему может неправильно суммировать?
Делаю суммирование по нескольким столбцам и почему то по одному из них сумма получается какая то другая.

В строке пишу вот так:
Код: sql
1.
=Fields!PO_Amount_RUB.Value


В итоговой колонке написанно вот так:
Код: sql
1.
=Sum(Fields!PO_Amount_RUB.Value)


Затем если сложить то, что получилось в строках не сходится со строкой итогов. В других столбцах все нормально.
Не совсем понятно что делает функция sum() .
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38419776
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно как то просуммировать то, что выше в строках, а не так:
Код: sql
1.
=Sum(Fields!PO_Amount_RUB.Value)
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38420003
Madmech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте на всякий случай такой вариант:
Код: vbnet
1.
=Sum(Fields!PO_Amount_RUB.Value, "DataSet")



Вместо DataSet подставляете имя того набора данных, на который завязана эта таблица.

Также расхождение может быть связано с округлением/усечением десятичных чисел.
Например, у Вас есть первоначальный набор чисел:
0.85
0.37
0.29

Вы его на уровне отчета в таблице округляете с помощью функции ROUND:
0.9
0.4
0.3
В сумме - это 1.6 .

Если отсечь лишний знак после запятой в настройках ячейки, то получим такой набор:
0.8
0.3
0.2
В сумме - это 1.3 .

Если посмотреть итог в таблице, то это будет сумма "сырых" данных - это 1.51 (и округление, и усечение дает 1.5 ). Как видно, все 3 числа различаются.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38420376
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Madmech, пробовал и такой вариант. В таком случае я так понял получается сумма по всей таблице.

Хотя вроде понял в чем проблема, только не знаю как ее решить. Суть в том, что в одном заказе может быть несколько товаров (строк), а информация хранится в одной таблице. Например:
PO_NumberReceipt_NumberPO_Amount Currency_payment Item71610110500RUBItem171610110500RUBItem2716102200RUBItem2716102200RUBItem3
В данном случае общая сумма заказа должна быть 10700. У меня получается 21400, что в принциппе логично. Можно ли как то исправить ситуацию не меняя структуру данных?
В Row Groups стоит группировка по [PO_Number]
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38420438
SilverVolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yanik,
Скорее всего в запросе идет размножение записей за счет каких нибудь join'ов.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38420597
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SilverVolg,

причину то я знаю. вопрос как быть и что делать?
пока кроме как выкинуть item и сгруппировать по avg(), например, ничего в голову не приходит.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38420633
Madmech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yanik,

Можно, например, считать итоги отдельным запросом, помещенным в др. DataSet, потом эти итоги передавать в параметр, а далее ячейку таблицы с итогами завязывать на этот парметр. Это если речь идет о Grand Total в конце таблицы.

А если надо считать подитоги для каждого заказа, то я бы применил конструкцию WITH ROLLUP на уровне запроса. И потом в таблице выводил и саму детализацию, и подитоги сплошным массивом, с помощью условного выделения подкрашивая и ожирняя подитоги.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38420655
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Madmechyanik,
А если надо считать подитоги для каждого заказа, то я бы применил конструкцию WITH ROLLUP на уровне запроса. И потом в таблице выводил и саму детализацию, и подитоги сплошным массивом, с помощью условного выделения подкрашивая и ожирняя подитоги.
Да, надо подитоги и общий итог.
WITH ROLLUP использоваться здесь:
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38421123
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Madmech,

попробовал WITH ROLLUP. На примере выше все-равно получается 21400, а не 10700.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38421334
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yanik,

Код: sql
1.
=Sum(AVG(Fields!PO_amount.Value,"receipt_number"))
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38421585
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Remind,

ошибкаSystem.Web.Services.Protocols.SoapException: The Value expression for the text box ‘Textbox132’ specifies a scope that is not valid for a nested aggregate. The scope must be the same name of the scope specified by the outer aggregate or the name of a group or data region that is contained in the scope specified by the outer aggregate.
at Microsoft.ReportingServices.WebServer.ReportingService2010Impl.CreateReportEditSession(String Report, String Parent, Byte[] Definition, String& EditSessionID, Warning[]& Warnings)
at Microsoft.ReportingServices.WebServer.ReportingService2010.CreateReportEditSession(String Report, String Parent, Byte[] Definition, String& EditSessionID, Warning[]& Warnings)
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38421775
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можете приложить скриншот ваших группировок в отчете и то место, куда вы пытаетесь вставить формулу?
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38424590
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Remind,
Сюда вставляю формула (название полей немного отличается.
[/IMG]
Группировка:
[/IMG]
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38424591
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
=Sum(avg((Fields!Payment_Amount.Value,"receipt_nember"))
вот такая формула... на скрине неточностность )
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38424605
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из вашего скриншота не видно в какую ячейку вы пытаетесь вставить формулу (на каком уровне группировки находится эта ячейка). Ну и плюс опечатка в слове "Receipt_number".
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38424614
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кстати, какая вресия SSRS у вас? Насколько я знаю Nested aggregates поддерживаются только начиная с 2008.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38426325
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Remind,

поле находится на уровне группировки "PO_number".
Полазил по службам, не нашел, где посмотреть версию.
Сам sql sercer 2008 R2.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38426329
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А по-поводу опечатки просто сюда вставил такой скриншот. Сейчас попробовал без опечатки - все-равно не работает.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38429223
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такая формула думаю была бы логична, но тоже почему то выдат ошибку
Код: sql
1.
=Sum(Fields!PO_Amount_RUB.Value/count(Fields!PO_Amount_RUB.Value,Fields!PO_Number.Value))


Еще пробовал вот так:
Код: sql
1.
=Sum(Fields!PO_Amount_RUB.Value/count(Fields!PO_Amount_RUB.Value,"PO_Number"))



Правильно ли я понимаю, что вторым параметром в count идет фильтр? Что в данном случае должно быть фильтром: значение или имя поля?
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38429421
Madmech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yanik,

А что должна считать эта формула?

Сдается мне, что она должна выглядеть несколько иначе:

Код: vbnet
1.
 = Sum(Fields!PO_Amount_RUB.Value) / count(Fields!PO_Amount_RUB.Value)


Ошибка, скорее всего, связана с тем, что Вы пытаетесь разделить значение поля на уже агрегированную величину.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38429502
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Madmech,

да, Ваш вариант работает, но делает немного не то, что я хотел. Ваш вариант выдает среднюю стоимость заявки, аналогично функции avg.

авторА что должна считать эта формула?
Т.к. структура таблицы такая, что одной заявке может соответствовать несколько строк. в поле PO_Amount хранится сумма всей заявки. Получается если несколько строк соответствует одной заявке, то при применение функции sum сумма увеличивается во столько раз сколько строк встречается с таким заказом.
Таким способом я хотел получить сумму по одному заказу.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38429609
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yanik,

Создайте тестовый отчетик с аналогичной группировкой и убедитесь, что Sum(Avg()) работает (у меня все отлично считается). А дальше уже разбирайтесь почему в вашем отчете это не хочет работать.
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38430029
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Remind,

count как выяснилось с одним параметром работает, а если 2 - то уже нет. Не подскажите, что именно указывается вторым параметром?
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38430308
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38431481
yanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Remind, спасибо.

А можно ли в одну табличную часть выводить данные из разных DataSer'ов?
...
Рейтинг: 0 / 0
Report Builder. Рассчет итоговый суммы в разной валюте
    #38431560
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Report Builder. Рассчет итоговый суммы в разной валюте
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]