如何打印多份带有条形码的报告\或在一份报告中打印多个条形码

2024-01-08

我有一个barcode使用序列的报告(Oracle后端)来生成我的barcode数字。

这是我的查询中的:

SELECT to_char(PALLET_ID_NO_SEQ.nextval) FROM dual

我将此字段放置在设计器窗口中,它将显示barcode value.

我有一张带有表情的图像:

new com.pepkorit.BarbecueRotateRenderer(
    net.sourceforge.barbecue.BarcodeFactory.createCode128C(
    $F{TO_CHAR(PALLET_ID_NO_SEQ.NEXTVAL)}), false, true, 1, 50, 190, 50)

以上是barcode使用序列值。

我希望能够打印/生成 100 份或更多报告。目前我一次只能生成一份报告。

所以我的第一个猜测是获取一个参数,提示用户一个值,该值将指示有多少barcodes打印出来并且每个都有一个单独的编号。

我不确定我关于解决这个问题的想法是否正确以及如何去做。

有人可以帮忙吗?


只需对查询进行少量修改即可轻松完成,无需通过多种方式进行编程。

解决方案 1. 在详细信息区域中使用带有条形码组件的单个报告

您可以使用单个报告的模板来生成多个条形码one report.

在这种情况下请求参数表达式(适用于OracleDB)将是这样的:

SELECT seq_barcode.nextval AS barcode, rownum FROM dual CONNECT BY LEVEL <= $P{quantity}

- 它会根据您需要的次数从序列中生成一个值。这$P{数量}参数确定要生成的行数(条形码)。

工作中rjxml file:

<jasperReport ...>
    <parameter name="quantity" class="java.lang.Integer">
        <defaultValueExpression><![CDATA[20]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[SELECT seq_barcode.nextval AS barcode, rownum FROM dual CONNECT BY LEVEL <= $P{quantity}]]>
    </queryString>
    <field name="BARCODE" class="java.lang.Integer"/>
    <field name="ROWNUM" class="java.lang.Integer"/>
    <title>
        <band height="82" splitType="Stretch">
            <textField>
                <reportElement x="145" y="18" width="240" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA["The number of barcodes is: " + $P{quantity}]]></textFieldExpression>
            </textField>
        </band>
    </title>
    <detail>
        <band height="47" splitType="Stretch">
            <componentElement>
                <reportElement x="145" y="10" width="200" height="28"/>
                <jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="2of7" drawText="false" checksumRequired="false">
                    <jr:codeExpression><![CDATA[$F{BARCODE}]]></jr:codeExpression>
                </jr:barbecue>
            </componentElement>
        </band>
    </detail>
</jasperReport>

结果将是($P{数量} == 5):


在你的情况下请求参数表达式将是这样的:

SELECT to_char(PALLET_ID_NO_SEQ.nextval) AS barcode, rownum FROM dual CONNECT BY LEVEL <= $P{quantity}

和表达Barcode组件将是:

new com.pepkorit.BarbecueRotateRenderer(
    net.sourceforge.barbecue.BarcodeFactory.createCode128C($F{barcode}),
    false, true, 1, 50, 190, 50)

解决方案 2. 使用组标头带

您可以使用相同的请求参数表达式如第一个解决方案中所示。该小组于rownum字段将帮助我们生成single报告包含属于其自己组的许多条形码(一组 - 一个条形码)。这Barcode组件应放置到组标题 band.

使用是开始新页我们可以管理是否在新页面上生成组的属性。

The rjxml file:

<jasperReport ...>
    <parameter name="quantity" class="java.lang.Integer">
        <defaultValueExpression><![CDATA[20]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[SELECT seq_barcode.nextval AS barcode, rownum FROM dual CONNECT BY LEVEL <= $P{quantity}]]>
    </queryString>
    <field name="BARCODE" class="java.lang.Integer"/>
    <field name="ROWNUM" class="java.lang.Integer"/>
    <group name="rownumGroup" isStartNewPage="true">
        <groupExpression><![CDATA[$F{ROWNUM}]]></groupExpression>
        <groupHeader>
            <band height="50">
                <componentElement>
                    <reportElement x="145" y="11" width="200" height="28"/>
                    <jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="2of7" drawText="false" checksumRequired="false">
                        <jr:codeExpression><![CDATA[$F{BARCODE}]]></jr:codeExpression>
                    </jr:barbecue>
                </componentElement>
            </band>
        </groupHeader>
    </group>
    <title>
        <band height="82" splitType="Stretch">
            <textField>
                <reportElement x="145" y="18" width="240" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA["The number of barcodes is: " + $P{quantity}]]></textFieldExpression>
            </textField>
        </band>
    </title>
</jasperReport>

In case isStartNewPage=“假”对于团体罗纳姆集团结果将是($P{数量}== 7):

In case isStartNewPage="true"对于团体罗纳姆集团结果将是($P{数量} == 5):

解决方案 3. 使用子报表

我们可以添加子报告组件到Detail band (请参阅第一个解决方案) or 组标题 (请参阅第二个解决方案) 乐队。在这种情况下,您不仅可以将Barcode组件,但你想要的一切。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何打印多份带有条形码的报告\或在一份报告中打印多个条形码 的相关文章

随机推荐

  • 更新序列中的多个值

    要获得更新了一个值的序列 可以使用 seq updated index value 我想为一系列元素设置一个新值 有这个库函数吗 我目前使用以下功能 def updatedSlice A seq List A ind Iterable In
  • 如何在C#中访问JS变量

    假设我有 div 500 div 上下文 asp net aspx 页面 如何允许 C 代码访问该值 我正在考虑一些类似于 jQuery 的事情 有没有更好的办法 使用隐藏的输入框
  • 为什么 Weak::new() 不起作用,而 Rc::downgrade() 起作用?

    我正在创建一个返回一个的函数Weak对特征对象的引用 在找不到对象的情况下 它是一个查找函数 我想返回一个空的Weak参考使用Weak new use std rc self Rc Weak use std cell RefCell pub
  • QNetworkAccessManager 发送 GET 两次

    我有一些类可以干扰 HTTP 服务器 这是有意义的代码部分 const QString someClass BASEURL QString http 127 0 0 1 8000 someClass someClass manager ne
  • 如何在luxon中创建momentLocaleData.firstDayOfWeek()?

    您立即可以致电 momentLocaleData firstDayOfWeek Luxon 是否有可能获得相同的功能 更新答案 Luxon 在版本中添加了本地化周支持3 4 4 现在你可以使用startOf https moment git
  • 服务总线处置对象

    我通过服务总线在 Azure 上使用消息队列架构 有时 当我尝试向队列发送消息时 它会失败 这是我得到的错误 有时我会收到此消息 Message Can t create session when the connection is clo
  • 使用 highcharter 自定义箱线图的颜色

    我在 highcharter 上有箱线图 我想自定义 填色 边框颜色 这是我的代码 df data frame cbind categ rep c a b c d value rnorm 1000 hcboxplot var df cate
  • 监听网络端口并将数据保存到文本文件[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 linux中有没有一些简单的方法来监听网络上的数据并将它们保存到文本文件中 谢谢 Netcat 是您的
  • AngularJS 指令 $destroy

    我有一个有角度的应用程序设置ng view 在一个视图中 除了视图本身之外 该视图内部还有一个动态加载的组件 该组件是一个指令 本质上是编译内容 因此内容可以进一步与其他指令挂钩 确实如此 该组件内的内容是使用编译的 compile ele
  • Delphi中如何读取JPendingIntent?

    如何阅读deliveryIntent在这段代码中 uses Androidapi JNI JavaTypes Androidapi JNI Telephony procedure TForm1 Button1Click Sender TOb
  • 我想将 javascript 变量分配给 javascript 内的 html 元素

    我试图在 javascript 内的 html 元素中插入 javascript 变量值 但它无法正常工作 以下是我的代码 window onload function var image document getElementById i
  • 如何在打字稿中正确创建和导入节点模块

    如何在打字稿中创建要导入到其他打字稿文件中的节点模块 我搜索了又搜索 但找不到如何正确执行此操作 我想创建一个 typescript 模块 导出一些可以使用 require 导入到我的 app ts 中的函数 我正在使用 typescrip
  • 为什么 ListView.ScrollIntoView 不起作用?

    我试图滚动到视图中 以便始终显示垂直列表中的最后一项 但 ListView ScrollIntoView 永远不会工作 我努力了 button1 Click object sender EventArgs e activities Add
  • docker容器中arangodb数据备份策略

    我想备份 arangodb 数据 以防 arangodb 在 docker 容器中运行 arangodb 的数据作为卷安装到主机系统 一种解决方案是创建一个 docker 映像 基于官方 arangodb 映像 其中包含用于备份的脚本阿兰戈
  • 如何解锁或删除无意中使用存储桶策略锁定的 AWS S3 存储桶?

    我是 AWS 账户所有者 admin IAM 和 root 密码 我知道不推荐 但有一些依赖 root 密码的遗留应用程序 我最近添加了一个存储桶策略 该策略随后使存储桶锁定为我无法访问 aws s3 rb s3
  • 多维 NumPy PolyFit 和 PolyVal?

    假设一个 n 维观测值数组被重塑为一个 2d 数组 其中每一行都是一个观测值集 使用这种重塑方法 np polyfit可以计算整个 ndarray 矢量化 的二阶拟合系数 fit np polynomial polynomialpolyfi
  • Accepts_nested_attributes_for 导致 SQLException

    我想用accepts nested attributes for创建一个 Article 对象has many部分 class Article lt ActiveRecord Base has many sections order gt
  • C#、硒网络驱动程序

    我想创建一个可以在所有测试中调用的变量网络驱动程序 我目前有以下示例用于显示目的 在这里我定义了我想要使用的网络驱动程序 using OpenQA Selenium using System using System Collections
  • Apache - Init:无法打开服务器私钥文件

    我正在本地主机上运行的 apache 上启用 ssl 我生成了一个自签名证书并将其放在通常的位置 david david web ll etc ssl certs rwxrwxrwx 1 david david 977 Mar 7 13 1
  • 如何打印多份带有条形码的报告\或在一份报告中打印多个条形码

    我有一个barcode使用序列的报告 Oracle后端 来生成我的barcode数字 这是我的查询中的 SELECT to char PALLET ID NO SEQ nextval FROM dual 我将此字段放置在设计器窗口中 它将显