Bir rapor oluşturmak için Jaspersoft studio kullanıyorum. Veri bağdaştırıcısı, bir postgresql sorgusudur (bir postgres sunucusuna). Sorgu:datetime parametresi postgresql sql'ye nasıl aktarılır?
select * from dbo.FACTSALES where FactSales.saledatekey BETWEEN to_char($P!{StartDate}, 'YYYYMMDD')::INTEGER AND to_char($P!{EndDate}, 'YYYYMMDD')::INTEGER
FactSales.saledatekey
Integer
olduğunu.
Planım, raporda iki veri zamanı parametresi (StartDate, EndDate) koymak, böylece raporu çalıştırmak için başlangıç ve bitiş tarihleri seçebilirim. Yani sorgu yukarıdaki gibidir ve aynı isimde ve java.sql.Timestamp (varsayılan ifade yok) türünde Outline'da iki parametre oluşturdum. Ancak raporu çalıştırdığımda, SQL deyimini çalıştırırken hata alıyorum.
DÜZENLEME
yüzden $ P değişti! Bu hata hala aynı hatayı alıyorum.
<?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="test4" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="fd68b751-49c2-4153-b2a8-48a95af021c9">
<property name="com.jaspersoft.studio.data.sql.tables" value=""/>
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="datamart"/>
<property name="ireport.jasperserver.url" value="http://10.20.169.43:8080/jasperserver/"/>
<property name="ireport.jasperserver.user" value="Nian"/>
<property name="ireport.jasperserver.report.resource" value="/reports/NianTest/test4_files/main_jrxml"/>
<property name="ireport.jasperserver.reportUnit" value="/reports/NianTest/test4"/>
<parameter name="StartDate" class="java.sql.Timestamp">
<parameterDescription><![CDATA[]]></parameterDescription>
</parameter>
<parameter name="EndDate" class="java.sql.Timestamp"/>
<queryString>
<![CDATA[select customerkey, productkey from dbo.FACTSALES where $X{[BETWEEN], FactSales.saledatekey , to_char($P{StartDate} , 'YYYYMMDD')::INTEGER, to_char($P{EndDate}, 'YYYYMMDD')::INTEGER}]]>
</queryString>
<field name="customerkey" class="java.lang.Integer"/>
<field name="productkey" class="java.lang.Integer"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch"/>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch">
<staticText>
<reportElement x="50" y="0" width="100" height="30" uuid="1471918d-b246-4aea-ba5c-d65a7fa48284"/>
<text><![CDATA[customerkey]]></text>
</staticText>
<staticText>
<reportElement x="268" y="0" width="100" height="30" uuid="361e8408-7859-483f-8143-5834fff3594d"/>
<text><![CDATA[productkey]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="125" splitType="Stretch">
<textField>
<reportElement x="50" y="49" width="100" height="30" uuid="3423ea0c-aa51-4537-ab28-29ae255c313c"/>
<textFieldExpression><![CDATA[$F{customerkey}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="200" y="40" width="100" height="30" uuid="d8381278-1fc1-4f9f-bd85-e65a85b77630"/>
<textFieldExpression><![CDATA[$F{productkey}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
ve iki parametre:
jrxml
(Sadece iki sütun için * seçeneğini değiştirildi)StartDate class: java.sql.Timestamp
EndDate class: java.sql.Timestamp
hatası: kullanarak
ERROR: function to_char(unknown, unknown) is not unique Hint: Could not choose a best candidate function. You might need to add explicit type casts
$ P! {StartDate} 'iniz java.sql.Timestamp? string substitution yapıyorsunuz, bundan sonra sorgu [use-parameters-queries] arasında özel bir komut var (http://community.jaspersoft.com/documentation/tibco-jaspersoft-studio-user-guide/v60/using- parametre sorguları) –
Bunu http://stackoverflow.com/questions/11871042/jasperreports-passing-parameters-to-query olarak önereceğim, Alex yanıtı $ P {ve $ P! {arasındaki farka göre farklılık gösterecektir. Senin durumunda $ X {IS_BETWEEN, column, startParam, endParam} –
kullanmış olurum biraz daha fazla detay verebilir misin? Buna gerçekten yeniyim. – thotwielder