使用用户选择的参数将XML显示为文本时出错

时间:2013-12-20 14:03:38

标签: sql apache parameters birt

在我的报告(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中的位置如何都会导致错误。

0 个答案:

没有答案