在我的报告(BIRT 4.2)中,我从SQL 2008 R2数据库中获取数据。客户要求在报告中添加新字段。该字段具有格式化为文本的xml数据(下面的示例数据)。我可以用html或Excel显示它;但是,如果我有一个用户选择的参数,则报告崩溃(下面的错误消息)。在预览(报告和SQL)中正常工作。 我不认为示例数据库中有任何xml作为文本,因此没有看到如何使用示例数据创建示例。
拥有字符串参数很好,但是一旦我把'?'它通过Apache在部署时崩溃了。参数是日期。
Works ; where OCMQM1.SUBMIT_DATE >= '2013-12-01'
Fails ; where OCMQM1.SUBMIT_DATE >= ?
我已经尝试过施放字段varchar(1)等,无论有多少个字符,或者我投射到的格式允许,我都会得到同样的错误。即使将xml转换为varchar的单个字符,然后在SQL中用空格替换该字符,也会在部署时出现相同的崩溃。我已经从头开始重新创建报告并修改了现有的工作报告,结果相同。
, replace (
cast (OCMQM1.SVC_OPTIONS as varchar (1) )
, '<' , ' '
) as 'Request_Details'
错误消息
The following items have errors:
Table (id = 1293):
+ Cannot execute the statement.
org.eclipse.birt.report.data.oda.jdbc.JDBCException: SQL statement does not return a ResultSet object.
SQL error #1:The value is not set for the parameter number 1.
;
com.microsoft.sqlserver.jdbc.SQLServerException: The value is not set for the parameter number 1. (Element ID:1293)
XML数据示例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><form><text id="ExistingServerName" label="Server Name:" multiline="false" readonly="false">WINHPLNSPRD128</text><text id="ProjectFunding" label="How is this project funded?" button="4001" multiline="false" readonly="false">34542 - Enable HealthPlaNET Architecture to Support Multiple Customers</text><text id="ImplementationDate" label="Requested Implementation Date:" multiline="false" readonly="false">12/12/2013 00:00:00</text><text id="CPUNeeded" label="Additinal CPU Needed:" multiline="false" readonly="false">1</text><text id="MemoryNeeded" label="Additional Memory Needed (in GB):" multiline="false" readonly="false">0</text><text id="AdditionalStorage" label="How much additional disk storage is needed (in GB)?" multiline="false" readonly="false">0</text><text id="ExpandDrive" label="If this request is to expand an existing drive, what drive letter should be expanded?" multiline="false" readonly="false"></text></form>
注意当xml不是报告的一部分时,用户提供的参数可以正常工作。将字段添加到SQL中,即使未添加到报表中,也无论SQL中的位置如何都会导致错误。