2013-07-08 2 views
0

Мне нужно использовать запрос Multi select, чтобы заполнить несколько полей даты. У меня есть контроль ввода 'date_id', который выбирает нужные даты. Его простой оператор выборапроблемы в Multi Select query

select distinct date_id from <table>. 

Мои date_id s имеют тип ДАТА

Я создал параметр date_id. Поскольку я должен использовать $X{IN,date_id,$P{date_id}} синтаксис, то есть, $X{IN,<field_name>,<parameter_name>} синтаксис, у меня есть параметр date_id типа java.util.Collections

При этом, я изменил запрос управления вводом также. Так что мой окончательный запрос управления входом

select distinct CAST(date_id AS CHAR) as date_id from <table> 

Но есть несоответствие.
Ошибка говорит, что тип параметра не поддерживается в запросе.
Я упоминал много SO Links и т. Д., Но это не помогло.
Может ли кто-нибудь сообщить мне ошибку, которую я совершаю здесь?
Любая помощь будет оценена по достоинству.

+1

Я не думаю, что вы используете $ {} о n ваш ввод, поскольку они имеют одно и то же имя, это может запутать, но я думаю, что он должен выглядеть как '$ X {IN, date_id, date_id}' Я бы переименовал свою Pram. что-то вроде In_Date_id, чтобы было легче читать '$ X {IN, date_id, In_date_id}' –

+0

Спасибо @Mnoland. Ваше объяснение действительно помогло мне. Вместо дат, я пробовал с нормальной строкой, и она отлично работала. Я пытаюсь посмотреть, как обрабатывать даты. –

ответ

1

После того как я добавил бросок к имени поля в синтаксисе $ X и удален $ P {} синтаксис от параметра, он работал т.е.

SELECT * FROM <Your Table> where $X{IN,CAST(date_id AS CHAR),date_id}

Надеется, что это помогает кто-то сталкивается с аналогичной проблемой

0

Другим способом решения было бы фильтровать невыбранные элементы, используя выражение фильтра в отчете, как это:

<filterExpression><![CDATA[$P{date_id}.contains($F{date_id})]]></filterExpression>