powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / BIRT запрос возвращает пустые значения
16 сообщений из 16, страница 1 из 1
BIRT запрос возвращает пустые значения
    #38795083
svirfneblyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Возможно кто то подскажет..

В эклипсе создается простой отчет.
ДатаСет запрос :

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select public.warehouse_item_types.title, public.warehouse_item_units.code, 
 public.warehouse_document_operation_entries.amount,public.warehouse_document_operation_entries.price,
 public.warehouse_document_operation_entries.cost,public.vat_rate.value,public.warehouse_document_operation_entries.sum_vat_rate,
 public.warehouse_document_operation_entries.cost_with_vat
from public.warehouse_item_types, public.warehouse_item_units,public.warehouse_document_operation_entries,public.vat_rate
where public.warehouse_item_types.id in 
(select public.warehouse_operation_entries.warehouse_item_type_id
from public.warehouse_operation_entries 
where public.warehouse_operation_entries.warehouse_operation_id in 
(select public.warehouse_outgoing_goods_waybill.warehouse_operation_id 
from public.warehouse_outgoing_goods_waybill 
where public.warehouse_outgoing_goods_waybill.id = 493)) 
and public.warehouse_item_units.id = public.warehouse_item_types.units_id
and public.warehouse_document_operation_entries.warehouse_item_type_id = public.warehouse_item_types.id 
and public.vat_rate.id = public.warehouse_document_operation_entries.vat_rate_id 



Не могу понять, и найти в документации, почему он себя ведет таким образом :

если знаячение where public.warehouse_outgoing_goods_waybill.id <= 455 - данные выводятся.
если это значение больше, то возвращаются пустые значения.


и в продолжении темы :
http://www.sql.ru/forum/1123775/birt-peredacha-massiva-v-otchet-cherez-setparametervalue

каким образом обработать полученный массив в параметре и вывести его в отчете ?
примеров тоже не нашел пока что.. пытаюсь сделать что то вроде:
Код: java
1.
2.
3.
4.
5.
6.
7.
beforeOpen

var  a = new Array;
a=getParameter(params["dateInvoice"]);
while(a.iter.hasNext){
row["dateInvoice"]=iter.next();
}





пробовал формировать запрос в скрипте :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
beforeOpen
maximoDataset = MXReportDataSetProvaider.create(this.getDataSource().getName(),this.getName());
maximoDataset.open();
var sqlText = new String();
sqlText = "select public.warehouse_item_types.title " +
"from public.warehouse_item_types"+
"where public.warehouse_item_types.id "+
" in (select public.warehouse_operation_entries.warehouse_item_type_id"+
" from public.warehouse_operation_entries "+
" where public.warehouse_operation_entries.warehouse_operation_id in "+
" (select public.warehouse_outgoing_goods_waybill.warehouse_operation_id " +
"from public.warehouse_outgoing_goods_waybill where public.warehouse_outgoing_goods_waybill.id = 455 )) ";
maximoDataSet.setQuery(sqlText);



Код: java
1.
2.
3.
4.
5.
6.
onFetch
if(!maximoDataset.fetch()){
return (false);
}
row["title"]=maximoDataset.getString("title");
return(true);



в данном случае при попыткке просмотра отчета вылетает эксепшн :
авторA BIRT exception occurred. See next exception for more information.
ReferenceError: "MXReportDataSetProvaider" is not defined. (/report/data-sets/oda-data-set[@id="592"]/method[@name="beforeOpen"]#1).
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38795092
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svirfneblyn,

Не могу понять, и найти в документации, почему он себя ведет таким образом :

если знаячение where public.warehouse_outgoing_goods_waybill.id <= 455 - данные выводятся.
если это значение больше, то возвращаются пустые значения.


А что у тебя вернёт?

Код: plsql
1.
2.
select count(*) from public.warehouse_outgoing_goods_waybill 
where public.warehouse_outgoing_goods_waybill.id <= 455



и

Код: plsql
1.
2.
select count(*) from public.warehouse_outgoing_goods_waybill 
where public.warehouse_outgoing_goods_waybill.id > 455
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38795105
svirfneblyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторselect count(*) from public.warehouse_outgoing_goods_waybill
where public.warehouse_outgoing_goods_waybill.id <= 455

count = 455

select count(*) from public.warehouse_outgoing_goods_waybill
where public.warehouse_outgoing_goods_waybill.id > 455

count = 41 o_0

Забыл еще написать, что эти запросы пустые в эклипсе, в pgAdmin запрос выводит значения ..
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38795190
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя - "лесенка" из подзапросов с предложением IN (...). Отлаживать их надо в обратном порядке.

На каком-то шаге - получишь пустое множество. Почему - догадаешся сам.
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38795234
svirfneblyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton ,менял селекты на джойны, результат тот же.. попробую разложить в обратном порядке, может что будет .. Спасибо за совет!

если кто то знает как правильно пишется скрипт на обработку объекта в виде массива в параметре birt-desinger из сервлета, киньте информацию. спасибо!
в сервисе :
Код: java
1.
2.
3.
4.
5.
 Long warehouseEntryId =  em.createQuery("SELECT w.operation.id FROM WarehouseOutgoingGoodsWaybill AS w WHERE w.id =:id", Long.class).setParameter("id",id).getSingleResult();
        List<String> itemTitle = em.createQuery("SELECT i.itemType.title FROM WarehouseOperationEntry AS i WHERE i.warehouseOperation.id=:warehouseEntryId", String.class).setParameter("warehouseEntryId",warehouseEntryId).getResultList();
        root.put("warehouseOperationId", warehouseEntryId);
        root.put("docId", id);
        root.put("itemTitle", itemTitle);



в сервлете :
Код: java
1.
task.setParameterValue("itemTitle", objectMap.get("itemTitle"));
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38795254
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svirfneblynДобрый день. Возможно кто то подскажет..
...
и в продолжении темы :
http://www.sql.ru/forum/1123775/birt-peredacha-massiva-v-otchet-cherez-setparametervalue

каким образом обработать полученный массив в параметре и вывести его в отчете ?
...


Я бы сделал через Scripted DataSet. Полученный датасет -- как обычно в Table.
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38795262
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпробовал формировать запрос в скрипте :
...


Чтобы определить свой запрос в скрипте, в beforeOpen надо просто установить свой запрос:
Код: javascript
1.
this.queryText = "select * from МОЯ_ТАБЛИЦА";


Никаких новых датасетов создавать не надо.
Сам датасет, конечно же, должен быть типа SQL Select Query.
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38795324
svirfneblyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
Никаких новых датасетов создавать не надо.
Сам датасет, конечно же, должен быть типа SQL Select Query.



Я пробовал и через Scripted DataSet. в первом посте код before open. НО, я не додумался удалить созданный датасет ранее. Возможно скриптед дата сет и не работал как надо из-за этого.. Спасибо, попробую )
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38795353
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу beforeOpen в первом посте. Чтобы уменьшить непонимание.

У Scripted DataSet в beforeOpen должно остаться только
Код: javascript
1.
2.
a=getParameter(params["dateInvoice"]);
iter = a.iterator();


Кстати, что такое getParameter? Вроде params["dateInvoice"] должен вернуть переданный параметр? Я через контекст объекты передаю, про параметры не уверен и проверять лень.
В общем, тут мы должны инициализировать нечто, по которому будем пробегать и выдавать очередную запись. В данном случае это Iterator. Могли бы определить переменную-счетчик значением 0.

В fetch должно быть что-то типа такого:

Код: javascript
1.
2.
3.
4.
5.
if (iter.hasNext()) {
   row["dateInvoice"]=iter.next();
   return true;
}
return false;



BIRT сам организует цикл, ориентируясь на результат события fetch, поэтому while(iter.hasNext()) не нужен. Мы в fetch должны сообщить получили ли очередную запись (true) или набор данных закончился (false).
Это пример для прохода по итератору. Если бы использовали переменную-счетчик, то надо было брать n-ное значение из списка, увеличивать счетчик и возвращать true/false в зависимости от n<size().
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38795801
svirfneblyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak, спасибо огромное за объяснение! :)
Не хочу показаться наглым, можно ли небольшой пример использования контекста для передачи объекта?
Я совсем начинающий , поэтому задаю подобные вопросы.. )
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38796355
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня это выглядит примерно так.

В Java-части:
Код: java
1.
2.
3.
4.
5.
IRunTask runTask = engine.createRunTask(design);
...
Map ctx = runTask.getAppContext();
...
ctx.put ("model", model);



В шаблоне BIRT-а в событии initialize:
Код: javascript
1.
2.
var ctx = reportContext.getAppContext();
var model = ctx.get("model"),
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38797185
svirfneblyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak,

Спасибо! Пока еще не пробовал, но надеюсь это мне поможет )

Может подскажите, как правильно аггрегацию вводить ?

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



в одном из примеров создается скрипт :

initialize:
Код: java
1.
columnTotal = 0;



в таблице в которой нужно суммирование
onCreate:
Код: java
1.
columnTotal = columnTotal + row["Aggregation"];





вобщем то ж самое (
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38797216
svirfneblyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл написать :)

<VALUE-OF format="BYR#,###.00">columnTotal</VALUE-OF> вставляю в футер, но там 0.0
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38797280
svirfneblyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
удалил аггрегацию, скрипт заработал ..
Вроде бы добавлял функцию так же, как и в офиц. доках, но она не работает. :(
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38797483
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно. Достаточно на футер положить элемент Aggregation. Откроется этот самый Aggregation Builder, он создаст binding у таблицы и элемент, ссылающийся на этот binding.

Начните с простого: просто положите Aggregation. Никаких дополнительных скриптов не надо.
Еще могу предположить, что поле "cost_with_vat" не числовое.
...
Рейтинг: 0 / 0
BIRT запрос возвращает пустые значения
    #38797511
svirfneblyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak,

авторОткроется этот самый Aggregation Builder, он создаст binding у таблицы и элемент, ссылающийся на этот binding.

Да, везде в примерах так и есть, а у меня это почему то не работает.. С скриптами эту проблему пытаюсь решить, т.к. стандартная функция не работает. Попробую эклипс переутсановить, что ли.. А то не все данные выбирает, то аггрегацию отказывается делать (..
Или может еще какие то могут быть нюансы ?
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / BIRT запрос возвращает пустые значения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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