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

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

Первое, что бросается в глаза, - это отсутствие закрывающей скобки справа. Второе - строки должны ограничиваться кавычками, а не апострофами, как у Вас. Как-то так:
Код: vbnet
1.
=Sum(Fields!Payment_Amount.Value*IIf(Fields!Currency_payment.Value="EUR",Parameters!EUR_Rate.Value,1) )
...
Рейтинг: 0 / 0
30.09.2013, 17:39
    #38412141
yanik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
О спасибо.
Код: 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
30.09.2013, 18:00
    #38412173
Madmech
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
Попробуйте применить конструкцию Switch, чтобы не запутаться в большем кол-ве вложенных IIF. Может, Вы там что-то напутали, в этих нагромождениях.
...
Рейтинг: 0 / 0
30.09.2013, 18:31
    #38412226
yanik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
Почему то всегда вот это условие авторFields!Currency_payment.Value="EUR", false (записи в евро конечно есть).
Есть какой то отладчик в этой среде?
...
Рейтинг: 0 / 0
30.09.2013, 18:41
    #38412245
Madmech
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
Насчет отладчика, по-моему, нет, я, по крайней мере, не знаю.
Проверьте, может быть, у Вас где-нибудь (либо в таблице, откуда берете названия валют, либо здесь, в VB-скрипте) буква "E" пишется кириллицей. Или в таблице-справочнике по краям могут быть невидимые символы, например, пробелы, и их просто нужно урезать слева-справа.
...
Рейтинг: 0 / 0
03.10.2013, 13:06
    #38415406
yanik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
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
03.10.2013, 15:38
    #38415677
Madmech
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
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
03.10.2013, 16:37
    #38415826
yanik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
Madmech,

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

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


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


Затем если сложить то, что получилось в строках не сходится со строкой итогов. В других столбцах все нормально.
Не совсем понятно что делает функция sum() .
...
Рейтинг: 0 / 0
08.10.2013, 10:13
    #38419776
yanik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
Можно как то просуммировать то, что выше в строках, а не так:
Код: sql
1.
=Sum(Fields!PO_Amount_RUB.Value)
...
Рейтинг: 0 / 0
08.10.2013, 12:08
    #38420003
Madmech
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
Попробуйте на всякий случай такой вариант:
Код: 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
08.10.2013, 14:50
    #38420376
yanik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
Madmech, пробовал и такой вариант. В таком случае я так понял получается сумма по всей таблице.

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

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

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

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

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

Код: sql
1.
=Sum(AVG(Fields!PO_amount.Value,"receipt_number"))
...
Рейтинг: 0 / 0
09.10.2013, 14:32
    #38421585
yanik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
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
09.10.2013, 16:11
    #38421775
Remind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
Можете приложить скриншот ваших группировок в отчете и то место, куда вы пытаетесь вставить формулу?
...
Рейтинг: 0 / 0
11.10.2013, 15:29
    #38424590
yanik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
Remind,
Сюда вставляю формула (название полей немного отличается.
[/IMG]
Группировка:
[/IMG]
...
Рейтинг: 0 / 0
11.10.2013, 15:31
    #38424591
yanik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
=Sum(avg((Fields!Payment_Amount.Value,"receipt_nember"))
вот такая формула... на скрине неточностность )
...
Рейтинг: 0 / 0
11.10.2013, 15:37
    #38424605
Remind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
Из вашего скриншота не видно в какую ячейку вы пытаетесь вставить формулу (на каком уровне группировки находится эта ячейка). Ну и плюс опечатка в слове "Receipt_number".
...
Рейтинг: 0 / 0
11.10.2013, 15:43
    #38424614
Remind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report Builder. Рассчет итоговый суммы в разной валюте
И кстати, какая вресия SSRS у вас? Насколько я знаю Nested aggregates поддерживаются только начиная с 2008.
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Report Builder. Рассчет итоговый суммы в разной валюте / 25 сообщений из 35, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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