Jasper reports 找不到iReport JRValidateException字段
我正试图通过JasperReports和iReport迈出第一步。最近,我在中解决了一个数据库连接问题。之后,我创建了另一个到MySQL数据库的成功连接,只是为了加强知识;我做了一个查询,但现在我得到了另一个与查询本身或类似内容相关的错误 形势 当我尝试创建报表查询时,会检索字段(表列)并正确识别其类型,但数据(行)会显示错误消息Jasper reports 找不到iReport JRValidateException字段,jasper-reports,ireport,Jasper Reports,Ireport,我正试图通过JasperReports和iReport迈出第一步。最近,我在中解决了一个数据库连接问题。之后,我创建了另一个到MySQL数据库的成功连接,只是为了加强知识;我做了一个查询,但现在我得到了另一个与查询本身或类似内容相关的错误 形势 当我尝试创建报表查询时,会检索字段(表列)并正确识别其类型,但数据(行)会显示错误消息 Error:net.sf.jasperreports.engine.jr异常:执行SQL语句for:data时出错 错误显示在下面的屏幕截图中: 然后,当我尝试预览
Error:net.sf.jasperreports.engine.jr异常:执行SQL语句for:data时出错
错误显示在下面的屏幕截图中:
然后,当我尝试预览带有查询字段的报告时,会出现以下错误:
net.sf.jasperreports.engine.design.JRValidationException: Report design not valid :
1. Field not found : idaddress
2. Field not found : city
at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:271)
at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:153)
at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:354)
at net.sf.jasperreports.engine.JasperCompileManager.compileToFile(JasperCompileManager.java:270)
at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:563)
at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:528)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)
在jrxml
文件中,字段定义正确,如我在中所见,如下所示:
<subDataset name="MyDataset" uuid="b9d7b569-d19e-451e-8a15-c558918e1698">
<queryString language="SQL">
<![CDATA[SELECT
address.`idaddress` AS address_idaddress,
address.`city` AS address_city
FROM
`address` address]]>
</queryString>
<field name="address_idaddress" class="java.lang.Integer"/>
<field name="address_city" class="java.lang.String"/>
</subDataset>
连接的配置如下:
注意:是的,服务器没有密码,只是一个测试环境
一些尝试
我在同一篇文章中尝试了其他答案,但没有一个对我有用。上一次我尝试更改连接URL添加端口和用户,但错误保持不变
不知道为什么在
元素下面我有以下XML:
<queryString>
<![CDATA[SELECT
*
FROM
`address` address
ORDER BY
city ASC]]>
</queryString>
<field name="idaddress" class="java.lang.Integer">
<fieldDescription><![CDATA[Address table ID]]></fieldDescription>
</field>
<field name="city" class="java.lang.String">
<fieldDescription><![CDATA[The city]]></fieldDescription>
</field>
<group name="city">
<groupExpression><![CDATA[$F{city}]]></groupExpression>
</group>
看起来与
相同,但它在那里。我不想删除,因为这是由iReport生成的,所以我认为它是正确的
所以问题是:我在这里遗漏了什么?我能试着解决这个问题吗?我在哪里可以找到线索
提前感谢您的回答。您对Jasper Report的工作原理、主数据源和子数据集之间的区别以及使用它们时需要引用与所使用的数据源相关的字段有些困惑 为了消除一些混乱:
- 主数据源将执行,jasper报告将迭代 (重复)每条记录的详细信息栏
- 子数据集是可以传递给组件的数据集
jr:table
,则使用只返回1条记录的主数据源,然后将子数据源和连接传递给jr:table
组件
在详细信息栏中使用textField的示例
注意:主查询如何仅选择1
,将返回1的mysql语句(在1条记录中),以及如何传递$p{REPORT\u CONNECTION}
,以便子数据集可以执行查询
错误。。。对于数据,数据可能是报表名称,您应该尝试获取整个堆栈跟踪,直到查询和/或连接的执行。好的,我得到一个
net.sf.jasperreports.engine.design.jrvalidateException
,其中在net.sf.jasperreports.engine.JRException
之后有一条关于查询字段的消息,这不意味着什么吗?如何获取JRException
的整个堆栈跟踪?在iReport控制台中,我只有jrvalidateexception
的stacktrace,它在帖子中更新。如果您有两个不同的问题,我的第一个评论与第一个问题相关。问题1“执行SQL语句时出错”,这是无法执行查询的iReport,它可能与驱动程序有关,它正在尝试执行resultSet.getInt(“idaddress”)和resultSet.getString(“city”),由于某些原因,它无法执行此操作,您需要检查iReport日志。问题2,您有一个子数据集(可能是表组件或类似数据集),使用此子数据集时,您试图引用主数据源字段(idaddress,city),但在子数据集中,它们被称为address_idaddress,address_city),您在子数据集下看到的jrxml可能是主数据集。一般来说,这很难回答,因为我们无法看到您的整个jrxml(如何引用thingzz)并且,在尝试执行查询时,我们没有与您的错误相关的完整堆栈跟踪。以上是最好的猜测,我不能做得比没有一个更好,也许你们也需要把问题一分为二。注意我不认为它们是相关的,只是两个不同的问题。
<queryString>
<![CDATA[SELECT
*
FROM
`address` address
ORDER BY
city ASC]]>
</queryString>
<field name="idaddress" class="java.lang.Integer">
<fieldDescription><![CDATA[Address table ID]]></fieldDescription>
</field>
<field name="city" class="java.lang.String">
<fieldDescription><![CDATA[The city]]></fieldDescription>
</field>
<group name="city">
<groupExpression><![CDATA[$F{city}]]></groupExpression>
</group>
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="PrimerReporte" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="eb8d4459-c8dc-4c96-bc35-ac988007e32a">
<queryString>
<![CDATA[SELECT
address.`idaddress` AS address_idaddress,
address.`city` AS address_city
FROM
`address` address]]>
</queryString>
<field name="address_idaddress" class="java.lang.Integer"/>
<field name="address_city" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch">
<textField>
<reportElement x="121" y="0" width="313" height="49" uuid="e3c5e2b7-14a4-4e26-a90c-ae4702f4ac65"/>
<textElement>
<font size="36"/>
</textElement>
<textFieldExpression><![CDATA[Mi primer reporte]]></textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<band height="35" splitType="Stretch">
<staticText>
<reportElement x="22" y="0" width="510" height="35" uuid="7d375361-1b1d-4a7b-8788-9dd432b86c43"/>
<textElement>
<font size="18"/>
</textElement>
<text><![CDATA[Este es un reporte de prueba para aprender a usar iReport]]></text>
</staticText>
</band>
</pageHeader>
<columnHeader>
<band height="20" splitType="Stretch">
<staticText>
<reportElement x="0" y="0" width="100" height="20" uuid="2604ec98-ab97-4192-9a22-c6c4f95b2416"/>
<text><![CDATA[address_idaddress]]></text>
</staticText>
<staticText>
<reportElement x="100" y="0" width="100" height="20" uuid="afb38cfb-3eeb-4af9-a520-93338b12eed9"/>
<text><![CDATA[address_city]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="100" height="20" uuid="aabd4a33-ecb9-4c60-b366-f770a01c32f8"/>
<textFieldExpression><![CDATA[$F{address_idaddress}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="100" height="20" uuid="58913924-4ffe-4e78-a783-b2364f66c27a"/>
<textFieldExpression><![CDATA[$F{address_city}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="PrimerReporte" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="eb8d4459-c8dc-4c96-bc35-ac988007e32a">
<style name="table">
<box>
<pen lineWidth="1.0" lineColor="#000000"/>
</box>
</style>
<style name="table_TH" mode="Opaque" backcolor="#A52A2A">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="table_CH" mode="Opaque" backcolor="#FFBFBF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="table_TD" mode="Opaque" backcolor="#FFFFFF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
</box>
<conditionalStyle>
<conditionExpression><![CDATA[new Boolean($V{REPORT_COUNT}.intValue()%2==0)]]></conditionExpression>
<style backcolor="#FFEFEF"/>
</conditionalStyle>
</style>
<subDataset name="MyDataset" uuid="b9d7b569-d19e-451e-8a15-c558918e1698">
<queryString language="SQL">
<![CDATA[SELECT
address.`idaddress` AS address_idaddress,
address.`city` AS address_city
FROM
`address` address]]>
</queryString>
<field name="address_idaddress" class="java.lang.Integer"/>
<field name="address_city" class="java.lang.String"/>
</subDataset>
<queryString>
<![CDATA[SELECT 1]]>
</queryString>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch">
<textField>
<reportElement x="121" y="0" width="313" height="49" uuid="e3c5e2b7-14a4-4e26-a90c-ae4702f4ac65"/>
<textElement>
<font size="36"/>
</textElement>
<textFieldExpression><![CDATA[Mi primer reporte]]></textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<band height="35" splitType="Stretch">
<staticText>
<reportElement x="22" y="0" width="510" height="35" uuid="7d375361-1b1d-4a7b-8788-9dd432b86c43"/>
<textElement>
<font size="18"/>
</textElement>
<text><![CDATA[Este es un reporte de prueba para aprender a usar iReport]]></text>
</staticText>
</band>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch"/>
</columnHeader>
<detail>
<band height="125" splitType="Stretch">
<componentElement>
<reportElement key="table" style="table" x="0" y="0" width="401" height="80" uuid="8c775bc1-4076-44c4-a7af-1fc405283908"/>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="MyDataset" uuid="ec302d39-8b71-4c05-86c0-74bb5a2b71d4">
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
<jr:column width="200" uuid="37b69ab0-be68-4dda-8739-08860a5dd8c7">
<jr:tableHeader style="table_TH" height="30" rowSpan="1"/>
<jr:columnHeader style="table_CH" height="30" rowSpan="1">
<textField>
<reportElement x="0" y="0" width="200" height="30" uuid="91dcc02e-4f54-446e-9092-d8e8fef6bc78"/>
<textFieldExpression><![CDATA[$F{address_idaddress}]]></textFieldExpression>
</textField>
</jr:columnHeader>
<jr:detailCell style="table_TD" height="20" rowSpan="1"/>
</jr:column>
<jr:column width="200" uuid="36dc21c0-a551-4df8-a180-95cf5b9cfc0c">
<jr:tableHeader style="table_TH" height="30" rowSpan="1"/>
<jr:columnHeader style="table_CH" height="30" rowSpan="1">
<textField>
<reportElement x="0" y="0" width="200" height="30" uuid="294719c1-d37b-4b53-ab0e-2045397c0d60"/>
<textFieldExpression><![CDATA[$F{address_city}]]></textFieldExpression>
</textField>
</jr:columnHeader>
<jr:detailCell style="table_TD" height="20" rowSpan="1"/>
</jr:column>
</jr:table>
</componentElement>
</band>
</detail>
</jasperReport>