如何使用jasper报告在同一行中打印两个带空格的电话号码?

时间:2016-01-22 05:08:18

标签: jasper-reports

我需要在空行或逗号的同一行打印两个数字 442233378,556664446以这种方式我需要使用jasper报告打印。我使用变量作为$ F(alias_name)来打印这些数字。但是它打印出来的页面如图所示它必须打印上面的数字打印第一个数字的行。请帮帮我。

1 个答案:

答案 0 :(得分:1)

我认为只需更改查询即可获得解决方案。 我在GROUP_CONCAT字段中添加了alias_name函数,您可以详细了解here的内容。

SELECT
  GROUP_CONCAT(DISTINCT alias_name SEPARATOR ', ') AS alias_name
FROM
  service_alias
WHERE
  service_id IN
    (
      SELECT
        id
      FROM
        service
      WHERE
        order_id IN
          (
            SELECT
              id
            FROM
              purchase_order
            WHERE
              id IN
                (
                  SELECT
                    order_id
                  FROM
                    order_process
                  WHERE
                    invoice_id = $P{invoiceId}
                )
            AND
              period_id != 1
          )
    )

以下是添加到entityDetails.jrxml文件中的查询:

<?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="Entity details" pageWidth="595" pageHeight="875" whenNoDataType="AllSectionsNoDetail" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" >
<property name="com.jasperassistant.designer.GridHeight" value="12"/>
<property name="com.jasperassistant.designer.GridWidth" value="12"/>
<property name="com.jasperassistant.designer.SnapToGrid" value="false"/>
<property name="com.jasperassistant.designer.Grid" value="false"/>
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="invoiceId" class="java.lang.Integer"/>
<queryString>
 <![CDATA[
   SELECT
     GROUP_CONCAT(DISTINCT alias_name SEPARATOR ', ') AS alias_name
   FROM
     service_alias
   WHERE
     service_id IN
       (
         SELECT
           id
         FROM
           service
         WHERE
           order_id IN
             (
               SELECT
                 id
               FROM
                 purchase_order
               WHERE
                 id IN
                   (
                     SELECT
                       order_id
                     FROM
                       order_process
                     WHERE
                       invoice_id = $P{invoiceId}
                   )
               AND
                 period_id!=1
             )
       )
 ]]>
</queryString>
 <field name="alias_name" class="java.lang.String"/> 
<title>
 <band splitType="Stretch"/>
</title>
<detail>
 <band height="62">
     <textField isBlankWhenNull="true">
         <reportElement x="50" y="5" width="197" height="15" />
         <textElement>
             <font size="10" isBold="true"/>
         </textElement>
         <textFieldExpression class="java.lang.String"><![CDATA[$F{alias_name}]]></textFieldExpression>
     </textField>
     <image>
         <reportElement x="18" y="4" width="18" height="13" />
         <imageExpression><![CDATA["/opt/apps/openbrm-2.0/openbrm/resources/logos/phone-symbol.png"]]></imageExpression>
     </image>
 </band>
</detail>
</jasperReport>