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