2014-11-12 2 views
2

У нас есть отчет BIRT 4.4.0 с параметром отчета десятичного типа данных. Параметр отчета округляется вверх/вниз до ближайших 10 в результатах предварительного просмотра набора данных (и когда отчет выполняется, но мы сузили проблему до набора данных). . если это параметра Я 0-4, округляется до 0 5-9 раундов до 10 10-14 раундов до 10 15-20 раундов до 20 : : 90-94 раундов до 90 95-100 раундов до 100BIRT 4.4.0 ПАРАМЕТРЫ, округленные во время выполнения

База данных SQLServer 2012. Проблема не была протестирована в отношении других баз данных.

. .Rptdesign не включается, так как различные тесты ниже меняют его, и вы можете использовать пустой отчет. Проблема заключается в DataSet, и вам не нужно будет запускать отчет, но просматривать результаты в DataSet.

Действия по воспроизведению 1) Используйте BIRT 4.4.0 конструктор, Java 1.7 U25 (JDK-7u25-окна-i586.exe), SQLServer 2012

2)

Create a database (AlbumsDB) with a table (Albums) with the following columns 
Title varchar(50) not null 
Cost decimal(18,0) not null 
Type char(10) not null 

3)

Populate with the following 3 rows 
    Title   Cost   Type 
    APPLE   0    D 
    ABBEY ROAD  1    D 
    BEATLES  2    D 

4) Создать пустой отчет 5) Создание Datasource к SQLServer 6) Создание Dataset

Запрос набора данных в BIRT создается с использованием выбора столбцов из таблицы (и не вводится). Сохраните формат в точности так, как показано, используя только позиционирование курсора и дважды щелкнув имена столбцов/таблиц, чтобы выбрать их.

select dbo.Albums.Title, 
dbo.Albums.Cost, 
dbo.Albums.type 
from dbo.Albums 
where dbo.Albums.Cost = ? 

Параметр запроса:

Name: param_1 
Native Name: greyed out and not enterable 
Data Type: Decimal 
Direction: Input 
Default Value: 2 
Linked to Report Parameter: None 

параметр по умолчанию был установлен на 2, так что тесты будут либо производить правильный затрат = 2 строки, или округлить и производят неверную стоимость = 0 ряд ,

Тесты

1) Когда SQL заявление было настроить в этом формате, - «Предварительный просмотр результатов в наборе данных производится неверный результат (округленное вниз Стоимость = 0 строк) - в .rptdesign файл не имеет атрибута nativeDataType

2) Когда SQL был отредактирован и имя таблицы воспитывался в той же строке, что и последний столбец выбран:

select dbo.Albums.Title, 
dbo.Albums.Cost, 
dbo.Albums.type from dbo.Albums 
where dbo.Albums.Cost = ? 
  • «Результаты Peview» в наборе данных дали правильный результат (стоимость = 2 строки)
  • .rptdesign файл не имеет атрибута nativeDataType

3) Когда формат SQL был

select dbo.Albums.Title, dbo.Albums.Cost, 
dbo.Albums.type 
from dbo.Albums 
where dbo.Albums.Cost = ? 

или

select dbo.Albums.Title,.Albums.Cost,.Albums.type 
from dbo.Albums 
where dbo.Albums.Cost = ? 

то есть, некоторые или все столбцы, выбранные поставить на одной линии как «выбрать», удерживая «от» на отдельной строке - «Предварительный просмотр результатов» в наборе данных вызвал неверный результат (округленная строка «Столбец = 0») - файл .rptdesign не имел родной атрибут DataType

4) Когда весь SQL был поставлен на одну строку

select dbo.Albums.Title,.Albums.Cost,.Albums.type from dbo.Albums where dbo.Albums.Cost = ? 
- the "Peview Results " in the Data Set produced the correct result (the Cost=2 row) 
- the .rptdesign file now had the correct nativeDataType attribute `<propert name="nativeDataType">3</property>` 

5) Если какие-либо пробелы (пробелы) был введен в заявлении:

select    dbo.Albums.Title, 
dbo.Albums.Cost, 
dbo.Albums.type 
from dbo.Albums 
where dbo.Albums.Cost = ? 
- the "Preview Results' in the Data Set produced the wrong result (the rounded down Cost=0 row) 
- the .rptdesign file had an incorrect nativeDataType attribute `<property name="nativeDataType">0</property>` 

Во всех указанных выше испытаний, если формат SQL был возвращен, атрибут nativeDataType остался в файле .rptdesign. Он изменился с «0» на «3», когда «из dbo.Albums» был поднят до той же строки, что и «select».

6) Добавление линии nativeDataType к .rptdesign не имел никакого эффекта, до шага 6d) а) Под редакцией первоначального .rptdesign (без nativeDataType) и с форматом SQL, как создан в # 1, и добавили <property name="nativeDataType">3</property> - «Результаты предварительного просмотра» в наборе данных дали неверный результат (округленная строка «Столбец = 0») b) Затем добавлено <property name="nativeName"></property> - «Результаты предварительного просмотра» в наборе данных дали неверный результат (округленное значение «Стоимость = 0 ряд)

c) Затем добавлено <property name="isOptional">false</property> - «Предварительный просмотр результатов» в наборе данных вызвал неправильный результат (округленное значение = 0 ro w)

d) При внесении небольшого изменения в формат инструкции SQL (приведите «from db.Albums» до строки последнего выбранного столбца), CDReport.rptdesign дает правильный результат.

+0

Изменит ли это что-нибудь, если вы установите тип параметра запроса в «Поплавок» или «Integer» через дизайнер Eclipse?В противном случае создайте параметр отчета и привяжите его к параметру запроса. Позаботьтесь, чтобы тип данных параметра отчета был таким же, как параметр запроса. Попробуйте изменить значение параметра отчета через окно параметров вашего дизайнера Eclipse и сообщите нам, если это что-то изменит. – Dominique

+0

изменение параметров запроса и отчета в Integer не повлияло на добавление nativeDataType или получение правильного результата –

ответ

0

Если результаты зависят от формата операторов SQL (разные результаты, хотя семантика операторов одинакова), как вы упомянули в г), то это определенно ошибка, либо в BIRT 4.4.1, либо в драйвер JDBC (или в SQL Server, но я так не думаю).

Чтобы увидеть, где ошибка на самом деле происходит вы должны

  • испытания тот же отчет с BIRT 4.2.1

  • тест на SQL заявление (точно так же заявление, используя привязку VARS!) в какой-то среде SQL-JDBC IDE (для Oracle это будет SQL Developer, я не знаю, если что-то подобное доступно для MS SQL Server) или, не имея такой IDE, в автономной Java-программе.

  • испытания тот же отчет с другим драйвером JDBC

Смежные вопросы