У меня проблема с BIRT, когда я пытаюсь передать несколько значений из параметра отчета.Множественные значения параметров
Я использую BIRT 2.6.2 и затмение.
Я пытаюсь поместить несколько значений из каскадного параметра группы последний параметр «JDSuser». Параметру разрешено иметь несколько значений, и я использую список.
Для того, чтобы это сделать, я пишу свой sql-запрос с инструкцией where-in, где я заменяю текст на javascript. В противном случае BIRT sql не может получить несколько значений из параметра отчета.
My SQL запрос
select jamacomment.createdDate, jamacomment.scopeId,
jamacomment.commentText, jamacomment.documentId,
jamacomment.highlightQuote, jamacomment.organizationId,
jamacomment.userId,
organization.id, organization.name,
userbase.id, userbase.firstName, userbase.lastName,
userbase.organization, userbase.userName,
document.id, document.name, document.description,
user_role.userId, user_role.roleId,
role.id, role.name
from jamacomment jamacomment left join
userbase on userbase.id=jamacomment.userId
left join organization on
organization.id=jamacomment.organizationId
left join document on
document.id=jamacomment.documentId
left join user_role on
user_role.userId=userbase.id
right join role on
role.id=user_role.roleId
where jamacomment.scopeId=11
and role.name in ('sample grupa')
and userbase.userName in ('sample')
и мой Javascript код этого набора данных на beforeOpen состоянии:
if(params["JDSuser"].value[0] != "(All Users)"){
this.queryText=this.queryText.replaceAll('sample grupa', params["JDSgroup"]);
var users = params["JDSuser"];
//var userquery = "'";
var userquery = userquery + users.join("', '");
//userquery = userquery + "'";
this.queryText=this.queryText.replaceAll('sample', userquery);
}
I судимое много различных вариантов цитаты, с этим я не получаю сообщения об ошибках, но если я выберу 1 значение, я не получаю никаких данных из базы данных, но если я выберу не менее двух значений, я получу последние данные выбранного значения.
Если я раскомментировать один из этих дополнительных линий цитаты сценария, то я получаю ошибку синтаксиса, как это:
Следующие элементы имеют ошибки: Таблицы (ID = 597): + Исключение во время обработки , Для получения дополнительной информации см. Следующее сообщение: Не удалось подготовить выполнение запроса для набора данных : Организация Не удается получить метаданные набора результатов. org.eclipse.birt.report.data.oda.jdbc.JDBCException: оператор SQL не возвращает объект ResultSet. Ошибка SQL # 1: у вас есть ошибка в ваш синтаксис SQL; проверьте руководство, соответствующее вашей серверной версии MySQL , для правильного синтаксиса для использования рядом с 'rudolfs.sviklis', 'sample') 'в строке 25; com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для корректного синтаксиса использовать вблизи «rudolfs.sviklis», «образец»)»в строке 25
Кроме того, я должен сказать вам, что я делаю это глядя на рабочий пример. Все одно и то же, предыдущий код привел к той же синтаксической ошибке, я изменил его на этот скрипт, который делает то же самое. Пример можно найти здесь: http://developer.actuate.com/community/forum/index.php?/files/file/593-default-value-all-with-multi-select-parsmeter/
Если кто-то может дать мне хотя бы ключ к тому, что я должен делать, это было бы здорово.
Спасибо за ваш ответ, хотя это мне не помогло. Я не получаю никаких данных, либо я выбираю 1 значение или 2 значения. Думал, что вы спасете мне несколько строк кода, а не нулевое значение тоже хорошо. Любые другие идеи? – rudolfs
Хм, это должно сработать. Я бы рекомендовал сохранить содержимое окончательного «this.queryText» в глобальной переменной и временно отобразить эту переменную в динамическом тексте отчета. Таким образом, вы увидите сгенерированный запрос, и, вероятно, вам будет легче узнать, что не так. – Dominique
Спасибо Dominique, ваш совет по глобальным переменным помог мне, я узнал, что я оставил разные имена для замены для параметра группы, поэтому он не изменился. Это работает. Теперь я должен выяснить, как исправить проблему, чтобы показать всех пользователей, потому что она не работает. – rudolfs