Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Добрый вечер
Может кто сталкивался.
В построителе отчетов создан отчет по запросу ниже
все работает кроме одного момента - при выборе нескольких параметров @Год или @Месяц в браузере появляется ошибка :
Произошла ошибка при обработке отчета. (rsProcessingAborted)
Не удалось выполнить запрос для набора данных "DataSet1". (rsErrorExecutingCommand)
Неправильный синтаксис около конструкции ",".

Может в строке Where что не так?.. При выборе по одному значению в каждом параметре все работает.

SELECT year ([DatePosting]) as 'Год', month ([DatePosting]) as 'Месяц', sum ([76]) as 'Премии', count ([ContractNumber]) as 'Количество договоров'

FROM [BD_REPORT].[dbo].[таблица]
WHERE (year ([DatePosting]) = @Год) and (month ([DatePosting]) = @Месяц)
group by year ([DatePosting]), month ([DatePosting])
order by year ([DatePosting]), month ([DatePosting])
18 дек 13, 02:45    [15308299]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
googlogmob,

трейсом посмотрите что там исполняется и все поймете сами
18 дек 13, 03:23    [15308339]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
googlogmob
Может в строке Where что не так?.. При выборе по одному значению в каждом параметре все работает.

SELECT  year ([DatePosting]) as 'Год', month ([DatePosting]) as 'Месяц', sum ([76]) as 'Премии', count ([ContractNumber]) as 'Количество договоров'
     
  FROM [BD_REPORT].[dbo].[таблица]
WHERE (year ([DatePosting]) = @Год) and (month ([DatePosting]) = @Месяц)
  group by year ([DatePosting]), month  ([DatePosting])
  order by year ([DatePosting]), month  ([DatePosting])

Да кто бы сомневался. При выборе нескольких значений одного параметра эти значения подставляются в предикат in. Соответственно, и в запросе должен быть in, а не равенство.
18 дек 13, 06:31    [15308451]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
Владимир Меньшиков
Member

Откуда: Санкт-Петербург
Сообщений: 68
Сон Веры Павловны
Да кто бы сомневался. При выборе нескольких значений одного параметра эти значения подставляются в предикат in. Соответственно, и в запросе должен быть in, а не равенство.


Ага [DatePosting] in (Year, Month) - интересно, что такой запрос вернет?

Запрос
create table [таблица] ([DatePosting] datetime, [76] numeric(20,2), [ContractNumber] int)

insert into [таблица] values('20130101', 25.25, 5)
insert into [таблица] values('20130101', 125.25, 15)
insert into [таблица] values('20130201', 225.25, 25)
insert into [таблица] values('20130201', 325.25, 35)
insert into [таблица] values('20130201', 425.25, 45)
insert into [таблица] values('20130301', 525.25, 55)
insert into [таблица] values('20130301', 625.25, 65)
insert into [таблица] values('20130301', 725.25, 75)
insert into [таблица] values('20130301', 825.25, 85)

declare @Год int, @Месяц int 

set @Год = 2013 
set @Месяц = 2  

SELECT  year ([DatePosting]) as 'Год', month ([DatePosting]) as 'Месяц', sum ([76]) as 'Премии', count ([ContractNumber]) as 'Количество договоров'
FROM [таблица]
WHERE (year ([DatePosting]) = @Год) and (month ([DatePosting]) = @Месяц)
  group by year ([DatePosting]), month  ([DatePosting])
  order by year ([DatePosting]), month  ([DatePosting]) 

drop table [таблица] 

Выполняется без ошибок, проверьте типы переменных, и в случае если они строковые попробуйте задать явное преобразование к числовому типу.
18 дек 13, 09:57    [15309002]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
Владимир Меньшиков
Member

Откуда: Санкт-Петербург
Сообщений: 68
Владимир Меньшиков
Ага [DatePosting] in (Year, Month) - интересно, что такой запрос вернет?

Прошу прощения, не сразу въехал в вопрос, в этом случае действительно
year([DatePosting]) in (@Год) and Month([DatePosting]) in @Месяц 
18 дек 13, 10:02    [15309027]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Владимир Меньшиков
Сон Веры Павловны
Да кто бы сомневался. При выборе нескольких значений одного параметра эти значения подставляются в предикат in. Соответственно, и в запросе должен быть in, а не равенство.


Ага [DatePosting] in (Year, Month) - интересно, что такой запрос вернет?

Запрос
create table [таблица] ([DatePosting] datetime, [76] numeric(20,2), [ContractNumber] int)

insert into [таблица] values('20130101', 25.25, 5)
insert into [таблица] values('20130101', 125.25, 15)
insert into [таблица] values('20130201', 225.25, 25)
insert into [таблица] values('20130201', 325.25, 35)
insert into [таблица] values('20130201', 425.25, 45)
insert into [таблица] values('20130301', 525.25, 55)
insert into [таблица] values('20130301', 625.25, 65)
insert into [таблица] values('20130301', 725.25, 75)
insert into [таблица] values('20130301', 825.25, 85)

declare @Год int, @Месяц int 

set @Год = 2013 
set @Месяц = 2  

SELECT  year ([DatePosting]) as 'Год', month ([DatePosting]) as 'Месяц', sum ([76]) as 'Премии', count ([ContractNumber]) as 'Количество договоров'
FROM [таблица]
WHERE (year ([DatePosting]) = @Год) and (month ([DatePosting]) = @Месяц)
  group by year ([DatePosting]), month  ([DatePosting])
  order by year ([DatePosting]), month  ([DatePosting]) 

drop table [таблица] 

Выполняется без ошибок, проверьте типы переменных, и в случае если они строковые попробуйте задать явное преобразование к числовому типу.



при "set @Год = 2013 set @Месяц = 2 " и у меня выполняется правильно. Вопрос в том, что не срабатывает когда условий параметра несколько - set @Год = 2013 и 2012 например

Сам скрипт наботает на сервере отчетов. Значения 2012 и 2013 (и месяца) указаны вручную в пункте допустимых значений. Пользователю нужно выбрать одну или несколько позиций параметра из выпадающего списка на сайте сервера отчетов
18 дек 13, 11:58    [15309922]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Владимир Меньшиков
Владимир Меньшиков
Ага [DatePosting] in (Year, Month) - интересно, что такой запрос вернет?

Прошу прощения, не сразу въехал в вопрос, в этом случае действительно
year([DatePosting]) in (@Год) and Month([DatePosting]) in @Месяц 


при таком построении строки появляется ошибка..

System.Web.Services.Protocols.SoapException: Выражение Group для группирование "Месяц" ссылается на поле "Месяц". Выражения элементов отчета могут ссылаться только на поля в области текущего набора данных или (если выражение входит в статистическую функцию) на поля в области заданного набора данных. Буквы в именах полей должны иметь правильный регистр.
в Microsoft.ReportingServices.Library.ReportingService2010Impl.CreateReport(String Report, String Parent, Boolean Overwrite, Byte[] Definition, Property[] Properties, ItemType ItemType, CatalogItem& ItemInfo, Warning[]& Warnings)
в Microsoft.ReportingServices.Library.ReportingService2010Impl.CreateCatalogItem(String ItemType, String Name, String Parent, Boolean Overwrite, Byte[] Definition, Property[] Properties, CatalogItem& ItemInfo, Warning[]& Warnings)
в Microsoft.ReportingServices.WebServer.ReportingService2010.CreateCatalogItem(String ItemType, String Name, String Parent, Boolean Overwrite, Byte[] Definition, Property[] Properties, CatalogItem& ItemInfo, Warning[]& Warnings)

может @Год и @Месяц нужно указать по другому?..
18 дек 13, 12:01    [15309956]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
Glory
Member

Откуда:
Сообщений: 104751
googlogmob
Вопрос в том, что не срабатывает когда условий параметра несколько - set @Год = 2013 и 2012 например

Потому что невозможно целому чмслу присвоить два значения
Поэтому все пользуются сравнением периодов
declare @period_begin datetime, @period_end datetime
set @period_begin = '2013-02-01'
set @period_begin = '2013-02-28'

select ...
where DatePosting between @period_begin and @period_end
18 дек 13, 12:04    [15309987]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Glory
googlogmob
Вопрос в том, что не срабатывает когда условий параметра несколько - set @Год = 2013 и 2012 например

Потому что невозможно целому чмслу присвоить два значения
Поэтому все пользуются сравнением периодов
declare @period_begin datetime, @period_end datetime
set @period_begin = '2013-02-01'
set @period_begin = '2013-02-28'

select ...
where DatePosting between @period_begin and @period_end


а как это связать с параметрами отчета? Вложил скриншот
(при выборе одного значения параметра все работает)

К сообщению приложен файл. Размер - 61Kb
18 дек 13, 13:53    [15311084]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
DmitryVT
Member

Откуда: VRN
Сообщений: 192
 Month([DatePosting]) in (@Месяц)
просто скобки добавь и проверьте настройки параметра Multi-value и allow blanc value
18 дек 13, 14:07    [15311236]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
Glory
Member

Откуда:
Сообщений: 104751
googlogmob
а как это связать с параметрами отчета? Вложил скриншот

Спросите у того, кто создавал этот отчет
18 дек 13, 14:35    [15311590]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
o-o
Guest
кто делал отчет, считал, что выбор не может быть multiple.
но нагло поставил галки на Allow multiple values.
выбор такой: убрать эти галки с параметров
либо переписать основной запрос, учитывая возможность выбрать эти самые multiple values
18 дек 13, 14:41    [15311655]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Glory
googlogmob
а как это связать с параметрами отчета? Вложил скриншот

Спросите у того, кто создавал этот отчет


да я и создавал )))
18 дек 13, 18:34    [15313382]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
o-o
Guest
ну так написали же выше про скобки, переписали как указал DmitryVT?
DmitryVT
 Month([DatePosting]) in (@Месяц)
просто скобки добавьe
18 дек 13, 18:41    [15313421]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
DmitryVT
 Month([DatePosting]) in (@Месяц)
просто скобки добавь и проверьте настройки параметра Multi-value и allow blanc value


добавил. все равно ошибка: " Произошла ошибка при обработке отчета. (rsProcessingAborted)
Не удалось выполнить запрос для набора данных "DataSet1". (rsErrorExecutingCommand)
Неправильный синтаксис около ключевого слова "group".

Как правильно составить запрос на мульти выбор..? :(

Вот код:
SELECT year ([DatePosting]) as 'Год', month ([DatePosting]) as 'Месяц', sum ([76]) as 'Премии', count ([ContractNumber]) as 'Количество договоров'

FROM [BD_REPORT].[dbo].[76]
WHERE year ([DatePosting]) in (@Год) and (month ([DatePosting]) in (@Месяц)
group by year ([DatePosting]), month ([DatePosting])
order by year ([DatePosting]), month ([DatePosting])
18 дек 13, 18:43    [15313440]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
sdet
Member

Откуда:
Сообщений: 463
googlogmob,
скобку забыл
18 дек 13, 18:46    [15313455]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
o-o
Guest
>>> (month ([DatePosting]) in (@Месяц)
убрать скобку: (month -> month
18 дек 13, 18:47    [15313461]     Ответить | Цитировать Сообщить модератору
 Re: Reporting Services ошибка при выборе нескольких допустимых параметров  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
o-o
>>> (month ([DatePosting]) in (@Месяц)
убрать скобку: (month -> month


верно. не успел отписаться)
Огромное Спасибо.
DmitryVT, sdet, o-o - респект, и Благодарность)
Уже неделю голову ламал
18 дек 13, 18:51    [15313483]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить