RDL/RDLC批量单据打印

使用RDL或RDLC进行单据打印时,单张单据打印比较直观简单,无需说明。下面我们来谈一下批量单据打印的实现方法。以下以RDL的ReportBuilder设计环境为例进行讲解,RDLC、VS设计环境同理。实现效果如下。

一、 基本思路

数据集:将单据表头、表体合并为一个数据集。例如将以下两个表合并为一个DataSet查询:单据号码、客户代码、部门、货品代码、货品名称、仓库、数量、单价、金额等。

  • 表头字段:单据号码、客户代码、部门等;
  • 表体字段:项次、货品代码、货品名称、仓库、数量、单价、金额等字段;

控件:列表、矩形、文本框、表。使用“列表”控件作为单据的边界,并在列表中设置一个“单号”分组,实现分页,在“列表”中设计单据表头及明细表体。

二、 详细步骤

1. 建立列表

在主体中插入一个列表,并指定其数据源。

选择列表,在行组中用鼠标右键选择详细信息,选择 组属性 ,设置“单据号码”分组,为了明了,修改组名称为 “单据号码”。排序选项根据需要设定。

在分页符选项卡上设置分页,这样可以实现一张单据分页的效果。

此时得到了一个单据容器,用以容纳我们即将要设计的单据。

2. 单据明细信息:列表与矩形

细心一点你会发现,在我们刚才插入的“列表”控件中,还有嵌套了一个“矩形”(Rectangle)控件,这是布局所需要的。如果没有矩形的话,我们拖进列表中的字段,将会成为列表本身的值。所以不管是列表、表或矩阵,如果想在Tablix表格之中再进行布局,则先铺一个矩形是非常必要的。

因为有矩形的存在,所以我们可以像普通报表一样,在列表中布置表头文本框,和表体详细数据。需要注意的是一些设计细节,比如表头居中,表体数量型字段需要居右,其他字段居左,小数位数的取舍等等。

表头的设计推荐两种方式:

1)表头信息可以使用下图中的“文本框”控件,设计空间比较自由。

2)也可以在详细数据表第一行之上再添加一个数据行,合并整行后插入个矩形控件,再插入一个无边框的数据表用来作为表头,这样比较整齐

3. 页眉页脚

将每页都有重复显示的东西放在页眉和页脚。当然还有表格的表头也要设置为在每页中重复。方法是先选中“表”,进入高级模式,在行组中选择作为表头的“静态”行,在属性中将RepeatOnNewPage设置为True。

如果有些信息需要在每页中都要显示,但因为针式打印中存在换页切纸问题,所以把一些重要信息设置在表中,也可以通过设置RepeatOnNewPage属性,在每页中显示。

4. 单据分页

在第一步中已经设置了单据分页,需要注意的是,这个列表空间与“页脚”之间不能存在空隙,否则单据最后一页就总会有一个空白页。

其实实现单据分页有很多种方法,不拘泥于这一种。大家自行摸索。

三、 其他细节

1. 大写金额

在报表空白处右击鼠标,选择报表属性,将下面的通过网络搜集的代码粘贴进去,在表中表达式中引用此函数即可。

=code.CNMoney(Sum(Fields!金额.Value))

  1 '#############################################################################
  2
  3 '货币转换为中文汉字表述  4  5 '函数名称:CNMoney  6  7 '参数:ls  8  9 '返回值:转换后的字符串  10  11 '整理人:阿泰  12  13 '版本历史  14  15 '本文函数来源于 feng442624978,原帖地址:  16  17 'http://topic.csdn.net/u/20100303/15/0f0ceca7-d29d-4269-b0f5-17ea09d0f139.html  18  19 '#############################################################################  20  21 Shared Function CNMoney(ls As Double) As String  22  23 Dim dx_sz As String  24  25 Dim dx_dw As String  26  27 Dim str_int As String  28  29 Dim str_dec As String  30  31 Dim dx_str As String  32  33 Dim fu As String  34  35 Dim a As String  36  37 Dim b As String  38  39 Dim c As String  40  41 Dim d As String  42  43 Dim b2 As String  44  45 Dim num_int As Long  46  47 Dim num_dec As Long  48  49 Dim len_int As Long  50  51 Dim i As Long  52  53 Dim a_int As Long  54  55 Dim pp As Long  56  57 dx_sz = "零壹贰叁肆伍陆柒捌玖"  58  59 dx_dw = "万仟佰拾亿仟佰拾万仟佰拾圆"  60  61 If ls = 0 Then  62  63 CNMoney = "零圆整"  64  65 Exit Function  66  67 End If  68  69 If ls < 0 Then  70  71 ls = Abs(ls)  72  73 fu = "负"  74  75 Else  76  77 fu = ""  78  79 End If  80  81 dx_str = CStr(ls)  82  83 dx_str = Replace(dx_str, "¥", "")  84  85 dx_str = Replace(dx_str, ",", "")  86  87 If (ls >= 0) And (ls < 1) Then dx_str = "0" + dx_str  88  89 pp = InStr(dx_str, ".")  90  91 If pp > 0 Then  92  93 str_int = Mid(dx_str, 1, InStr(dx_str, ".") - 1)  94  95 Else  96  97 str_int = dx_str  98  99 

转载于:https://www.cnblogs.com/bluedy1229/p/7266046.html

RDL/RDLC批量单据打印 [转]相关推荐

  1. 【C#】最全单据打印(打印模板、条形码二维码、字体样式、项目源码)

    系列文章 [C#]编号生成器(定义单号规则.固定字符.流水号.业务单号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/12912978 ...

  2. ccform 表单的单据打印

    为什么80%的码农都做不了架构师?>>>    9.0 特别注意事项 1, 模板里面不要有西文字符. 2, 尽量不要用word来编辑尤其是高版本的word,要用写字板来编辑. 1, ...

  3. 单据打印_Excel多功能进销存套表,自动库存单据,查询打印一键操作

    Hello大家好,我是帮帮.今天跟大家分享一张Excel多功能进销存管理套表,自动库存,单据打印,查询统算一键操作. 为了让大家能更稳定的下载模板,我们又开通了全新下载方式(见文章末尾),以便大家可以 ...

  4. 文件怎么批量全部打印出来,网上打印文件怎么操作

    在批量打印文件时,大家经常想要找一些资料打印价格比较便宜,且操作比较简单的打印平台,以此来节省打印的时间及费用,如果需要打印的文件比较多怎么批量全部打印出来呢? 通常我们在打印店打印资料时,会将文件资 ...

  5. vue 实现打印与批量分页打印功能

    安装 npm install print-js --save main.js 引入 import Print from 'vue-print-nb'Vue.use(Print) // 注册 3.打印效 ...

  6. 单据打印处理,自动缩小字体,自动换行

    一般ERP系统中单据打印,涉及文字较多的内容,比如品名规格.备注,会需要自动缩小字体,而且要自动换行,这样才能尽量把文字显示的清楚一些.很多报表工具,有直接这样的功能可以使用,但是如果不是用第三方报表 ...

  7. 批量横向打印Excel

    使用VBA脚本写的,具体使用如下:在批量需要打印的Excel文档下面,新建一个文档,将代码粘贴VBA工程里,然后运行即可. 具体代码如下: Attribute VB_Name = "模块1& ...

  8. 明宇报表连接mysql_五种主流web报表对比:批量报表打印

    阅读提示: 文章中与FineReport软件使用的相关内容,基于软件的V7.0旧版本编写,不代表软件最新的使用方式. FineReport最新版免费试用:https://www.finereport. ...

  9. 东软医疗打印设置java,关于单据打印的调试方法常见问题与使用技巧

    3.3.4.6.1什么是单据打印? 流程运转到特定的节点,需要把流程数据打印出来,这种根据流程数据生成特定格式文件的过程叫做单据打印. 单据打印首先需要根据用户的对打印的要求制作一个单据模板. 1, ...

最新文章

  1. 除了密钥,公有云还有哪些安全保护方式
  2. jQuery 追加元素的方法如append、prepend、before
  3. centos 6.5安装VMware tools
  4. 渗透测试中的一波三折
  5. 霍夫曼树(最优二叉树)的实现
  6. 一代杰出科学家--钱学森去世了
  7. centos6.8安装docker
  8. FileUpload之单个文件上传
  9. Python学习笔记:利用sorted()函数对序列排序
  10. 理解Android的手势识别
  11. linux 光纤网卡 软路由,请教关于配置双网卡软路由的问题
  12. 从俄罗斯方块,迈向强化学习大门
  13. 汉字转拼音开源工具包Jpinyin介绍
  14. php英文商城,童装英文外贸网站系统
  15. 四阶魔方用三阶魔方公式时,两个特殊情况处理方式(顶面十字、最后一步)
  16. PostgreSQL下载地址
  17. 注意力机制在视觉中的实战
  18. 数据库练习题(比较基础)
  19. 微信小程序之获取用户地址
  20. 虚拟机网络与物理机网络互通

热门文章

  1. 多文件编程 【多文件编程】(26)
  2. CentOS7安装wdCP面板,快速搭建web运行环境(图文详解)
  3. java xml 验证工具_验证xml格式
  4. mac mysql ip访问不了_解决mysql中只能通过localhost访问不能通过ip访问的问题
  5. 【科普】STP生成树协议
  6. 告别Kafka Stream,让轻量级流处理更加简单
  7. 进击的云原生,为开发者提供更多可能性
  8. oracle常用的监控,oracle常用性能监控及优化语句
  9. 查看go 安装了哪些包_如何灵活地进行 Go 版本管理
  10. 6 不更新无法使用_win10更新后无线网络无法使用