1、单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,*,单击此处编辑母版标题样式,培训人:刘启逸,时 间:,启元WMS仓库管理系统,万能打印设计,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,第一部分,万能打印的总体结构,第二部分,万能打印设计,第三部分,典型打印场景案例,第四部分,单据打印设计注意点,第五部分,问题答疑,2,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印的总体结构,万能打印的适用产品:,CCERP,、,KSOA,、,CDM,、启元WM
2、S,打印技术基础平台:,FastReport 2.52,3,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印的整体结构,万能打印由打印设计和执行两部分组成:,打印设计:,设计打印方案,设计打印分类等。,打印执行:,系统会将所有的抬头项数据和求和项数据以单据变量的形式赋值到打印方案中,明细数据集合以数据集的的形式传递到打印方案中;,4,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印的整体结构,报表标题,页 头,主项头,主项数据,栏目脚,页 脚,典型单据打印的页面构成,5,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传
3、阅、引用或复制。,打印设计的整体结构,打印时的页面由各种元素组成,每个元素我们称为对象。,常见的对象:,Band,对象,:,可以理解成一个对象容器,在他之上又可以放置其他对象,一个对象放在不同的,BAND,上,赋予它的含义是不同的,他们之间是一个从属关系。,矩形框对象,:可以理解为数据的容器。数据可以在设计时输入静态数据,也可以是后台的数据集;打印时,系统负责把对应数据集的数据填入矩形框,然后打印出来。,图片对象,:在页面上打印图片。,线对象,:在页面上打印一条线。,Barcode,对象,:在页面上打印条形码。,Chart,对象,:在页面上打印图表。,6,此文档仅供内部使用。未经书面许可,其它
4、任何机构不得擅自传阅、引用或复制。,第一部分,万能打印的总体结构,第二部分,万能打印设计,第三部分,典型打印场景案例,第四部分,单据打印设计注意点,第五部分,问题答疑,7,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印设计环境,菜 单,标 准工具栏,对 象 工具栏,设计界面,8,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印设计环境,1,、文件菜单,以文件的形式存在,扩展名为,.frf,连打设置,9,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印设计环境,2,、编辑菜单,10,此文档仅供
5、内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印设计环境,3,、工具菜单,工具栏,工具箱,11,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印设计环境,12,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印设计环境,13,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印设计环境,14,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印设计环境,15,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印设计环
6、境,对象观察器允许你精确、成批地设置对象属性。,要显示对象观察器,选择“工具工具栏对象观察器”菜单项。要收缩对象观察器,双击标题栏,再次双击标题栏将展开对象观察器。,16,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印设计环境,可以采用拖放方法插入字段。用鼠标从底部列表选择所需源字段并按住不放,然后移动它到页面上。松开鼠标时,将出现一个新的“矩形”对象并连接到数据库字段。,17,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印设计环境,18,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印的
7、页面组成元素,1,“,Band,”,对象,BAND,它是万能打印工具中最基本的对象之一,所有需要显示的内容都必须在它的基础之上进行设计;,以一个报表为基准的话,这些,BAND,对象代表着报表不同的位置,如果您要让打印内容显示在某个固定的位置,显示的形式不一样,那么您就要借助于,BAND,对象来实现。,19,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印的页面组成元素,2,右键菜单:,伸展,这个意思是由区域中的对象高度决定区域高度。,“,Text,”,对象的自动折行选项激活时将按需要伸展。这允许自动调节区域(行)高度以适应行中的所有数据,分隔,在页面未满之前报
8、表新页面,强迫换页,强迫区域内容打印在一个新页面,在第一页,这个区域将打印在第一页(仅适用于页头和页脚),在末页,这个区域将打印在末页(仅适用于页脚),显示所有页,这个选项仅用于主项头、细项头、子细项头、分组头和交叉表头区域。如果这些头下面的数据强制到一个新页,这些头也将出现在那些页面中。,20,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印的页面组成元素,3,“,矩形,”,对象,矩形框,:,该对象即可以放在,BAND,对象上使用,也可以直接放在设计平面中使用,该对象可以用于:,固定文字、字段明细、合计项、变量、函数等等,的显示。,放在何种介质上一定要根据需
9、要而定。对矩形框可以进行,字段、变量、函数,的插入,也可以直接输入文字。,21,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印的页面组成元素,4,“,矩形,”,对象,22,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印的页面组成元素,5,“,矩形,”,对象,23,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,万能打印的页面组成元素,6,右键菜单:,编辑:,与双击对象效果一样,弹出矩形对象的编辑对话框。,变量格式:,设置对象的数据显示格式,比如小数位数、日期格式等。,字体:,设置矩形对象的的显示字
10、体。,清除内容,:,删除对象上的数据。,伸展:,由区域中的对象高度决定区域高度。“,Text”,对象的自动折行选项激活时将按需要伸展。这允许自动调节区域(行)高度以适应行中的所有数据,自动折行:,当数据一行显示不下时,自动换行显示。,自动大小:,对象将按打印时的实际数据大长自动延伸宽度。,只能是文本:,对象中显示的数据只能是文本。,压缩重复值:,重复的数据只显示一次。,隐藏零值:,数据为,0,时不显示“,0,”而显示空白。,24,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,在同一表单内指定不同的打印方案,首先,在打印设计内,先为指定的表单制作几个打印方案,制作完成
11、后,点Grid右上角的“获取打印方案ID”按钮将各个打印方案的ID记下来备用;,然后,点Grid上的打印分类,弹出“默认打印方案选择”对话框,在下面的“选择条件”内输入JS代码按不同场景指定打印方案,获取打印方案ID,25,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,一般设计步骤,1,、由实际的需求应用场景确定打印样式:,纸张大小是多少?,需要显示哪些数据?,需要显示的数据如何获取?,固定数据设计时填入,直接取 可能需要调整相关的单据、查询或表单,通过打印函数或公式计算用函数或表达式,临时从后台数据库提取,GetSQLVal(),函数,要先设计好,SQL,语句,数
12、据在纸张的哪个位置显示?,2,、分析需要用哪些页面对象和打印逻辑来实现打印样式。,3,、设计打印样式。,4、设计打印分类。,5、生成测试数据并进行打印测试。,6、调整打印样式。,7、导出打印样式。,26,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,第一部分,万能打印的总体结构,第二部分,万能打印设计,第三部分,典型打印场景案例,第四部分,单据打印设计注意点,第五部分,问题答疑,27,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,Band,对象和子,band,对象应用,填充空行,子,的效果,28,此文档仅供内部使用。未经书面许可,其它任何
13、机构不得擅自传阅、引用或复制。,子,Band,对象,子,band,万能打印设计方案,1,、首先要为子,Band,起一个名字,如:,aa,2,、子,band,区域中要以空白矩形框填充,格式于主项数据相同,3,、栏目脚的对象观察器中,“打印前执行”需要执行下面的一段程序:,Begin,while FREESPACE,79,-FREESPACE,表示打印剩余的空白区域,其后面的值视实际情况而定,do ShowBand(aa),-,其中,aa,是子,band,名字,end,4,、在使用,TOTALPAGESZ,时,需要在“报表设置”中选择“两遍报表”,这样显示总页数才有效,29,此文档仅供内部使用。未
14、经书面许可,其它任何机构不得擅自传阅、引用或复制。,小计和合计应用,合计及合计金额大写,本页小计,合计:指整体的金额合计,一般直接单据会以单据变量的形式直接传过来。,合计金额大写:一般直接从单据以单据变量的形成传过来,也可以设置对象的格式。,本页小计:使用打印函数来计算,SUM(,字段名,字段所在主项数据,band,名称,),比如:,SUM(,单据明细,.,“金额”,band2),30,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,分组打印,同一单据的若干条明细中,需要依据某字段值的不同来打印,相同类的打印在一起或一页。,31,此文档仅供内部使用。未经书面许可,其它
15、任何机构不得擅自传阅、引用或复制。,分组打印,例:按货位进行分组打印,32,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,分组打印设计,33,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,分组打印设计,1,、增加分组头,可将“页头”、“主项头”用分组头来代替。,2,、鼠标双击分组头区域,选择分组条件。此处的条件可以是单独的字段,也可以通过函数或表达式得到想要的结果。如右图,3,、在打印单据前,可以调用dataset1.sort(var index,bool DescSort)排序函数,设置其值为分组条件中的字段名称。,4,、“强迫换页”:
16、如果需要每类商品都以新页起始打印,那么需要在“分组头”右键菜单中选则此项。反之不选,1,、分组打印在当前单据存盘后生效。,2,、如需要在存盘前进行分组打印,则需对分组字段进行排序。即在分组字段标题上单击就可以。,34,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,演示,1,票据打印,特点:,1,、有页头页脚,2,、可能需要合计小计,3,、可能需要填充空行,4,、可能需要分组打印,35,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,票据打印的设计步骤,1,、设置好纸张大小;,2,、建立页头、页脚,Band,,并调整好位置、高度;,3,、建立
17、页头、页脚,Band,内的对象,并设置好数据;,4,、根据要求,建立主项头、主项数据、栏目脚等,band,,设置好相关,band,的数据集;,5,、在,band,上建立好对应的矩形框对象,并设置好格式和字段;,36,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,演示,2,明细表格的打印,37,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,演示,3,合同文本样式打印,38,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,第一部分,万能打印的总体结构,第二部分,万能打印设计,第三部分,典型打印场景案例,第四部分,单据
18、打印设计注意点,第五部分,问题答疑,39,单据打印设计注意点,1.什么时候需要两遍报表(Double pass)?,应用1 用于显示总的页数(TotalPages),例如:页脚显示第1页/共20页。系统第一遍扫描报表时计算出TotalPages,然后第二遍实际生成报表。如果不使用Double pass,则TotalPages返回0。,应用2 用于将明细项的合计值打印在报表起始位置,而不是在末尾。这需要在第一遍扫描报表时计算出然后在第二遍生成报表时显示在起始位置。,2.如何进行分组?,增加分组头,可将“页头”、“主项头”用分组头来代替;鼠标双击分组头区域,选择分组条件。此处的条件可以是单独的字段
19、也可以通过函数或表达式得到想要的结果;如果需要每类商品都以新页起始打印,那么需要在“分组头”右键菜单中选“强迫换页”。,单据打印设计注意点,3.单据打印中如何实现空表格填满剩余的空行?,创建子Band,并以空白矩形框填充,格式与主项数据相同;在页脚的对象观察器中,“打印前执行”属性需要执行以下语句:,Begin,while FREESPACE79-FREESPACE表示打印剩余的空白区域,其后面的值视 实际情况而定,do ShowBand(aa)-其中aa是子band名字,end,4.如何生成主数据项数据?,点击菜单栏“插入数据库数据”,选择可用表并选择需要打印的字段;其包含头,包含(ban
20、ds)选择框决定是否自动生成页头与主数据项。,单据打印设计注意点,5.如何生成本页合计与整单合计?,本页合计:使用打印函数来计算:SUM(字段名,字段所在主项数据band名称),比如:SUM(单据明细.“金额”,band2),整单合计:一般直接从单据以数据集字段的形成传过来,6.如何打印如作业类别,提货方式等字典值字段?,方法1 从单据页面中取到grid中的字段值,然后通过数据集传值到打印方案,例如:ds_hz_print.field(thfs).value=grid1.cell(grid1.currentRow,14).text;,方法2 在打印方案中取到字段的字典值,再通过对Memo对象中
21、下方代码区域写入if或switch语句从而依据字典值取到实际内容 例如:,if STR(ds_mxPrint_jh.作业类别)=0 then,begin,if ds_mxPrint_jh.计划件数 0 then,begin,Memo7.memo:=整件拣货;,end,单据打印设计注意点,7.主数据项中的明细字段显示不完全怎么办?,这种情况是由于主数据项中字段文本区域不足造成的,这时可点击“主数据项”右键菜单中选“伸展”,这时若数据过多,会自动换行打印,8.如何同时多次打印某一单据?,该项需求可通过在数据集中添加copys字段来实现,打印方案会识别一个写死的字段叫做 copys,只要数据集里有这
22、个字段就会根据其取值打印相应的份数,修改步骤:,1.在数据集中添加copys字段,该字段取计划件数的值;,2.在整件标签的打印方案中,对主数据项的copys属性进行维护,修改其值为1。,9.如何实现数据过滤?,若想实现在主项数据中依据固定条件实现数据过滤,可以修改主项数据中band数据源的过滤条件值,例如:ds_sub2.是否冲红=N,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,第一部分,万能打印的总体结构,第二部分,万能打印设计,第三部分,典型打印场景案例,第四部分,单据打印设计注意点,第五部分,问题答疑,44,此文档仅供内部使用。未经书面许可,其它任何机构不得擅自传阅、引用或复制。,大家一起想一想还有什么问题?,45,Thank you!,谢谢!,46,






