环思产品论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5189|回复: 1
打印 上一主题 下一主题

如何在环思软件中实现单据自动打印

[复制链接]

10

主题

14

帖子

844

积分

超级版主

多多

Rank: 8Rank: 8

积分
844
QQ
跳转到指定楼层
楼主
发表于 2014-12-31 14:07:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mengxiangduo 于 2014-12-31 16:05 编辑

原理:通过刷新“打印任务表”中的任务,来实现单据的打印,打印到某台打印机,需要报表设计时,进行指定。
1、通过TIIP的“自动打印任务”模块(需要运行TIIP后,启动开始打印),与“打印服务”同用时,此模块只用来设计报表和指定打印机。
2、通过“打印控制台程序”,配置后,无需启动TIIP,即可随Windows自动启动,刷新打印任务。

单据自动打印配置步骤:
一、创建表:
1、打印任务表:pbBillReportTask.sql
2、打印历史表:pbBillReportHistory.sql

二、升级插件【29703】自动打印任务到数据库:(当前所属于产品ID为:11)
菜单、及相应脚本,可以DIP中打包生成,此模块在TIIP中,主要用来设计报表和指定打印机。


三、注册任务接口过程:EXEC dbo.sppbRegisterBillReportTask
@sBillNo NVARCHAR(25)  --单据号
,@iBillTypeId INT      --单据类型ID
,@sCreator NVARCHAR(20)  --创建人
,@sPrintName NVARCHAR(100) =NULL  --指定打印机名称
,@sFileName NVARCHAR(1000) =NULL  --指定打印某个文件名(带上路径)
,@sReportSQL NTEXT =NULL  --指定报表SQL
,@upbReportFormatDtlGUID UNIQUEIDENTIFIER = NULL  --指定报表格式
,@iQtyINT = 1  -- 指定打印份数


四、找台电脑或服务器,来注册打印服务,并执行打印。
1、打印服务程序:ReportSer.exe,后台运行。
2、打印控制程序:ReportConsole.exe, 前台运行,通过些模块配置服务,依次配置即可。
3、当配置完成后,“未知”按钮,会变成“开始”,点“开始”即自动执行打印任务的刷新,“停止”则不执行打印任务。


其他说明:
1.通过表的pbBillType.iIden字段来注册单据,即单据类型ID.(Generate Iden的表及过程,另行下载.)
2.注册任务如:EXEC sppbRegisterBillReportTask @sBillNo,@iBillTypeID,@sCreator
3.打开“自动打印任务”,可以刷新出注册的单据,在此通过单据号来画报表(SQL自行写在报表中)。
4.需要点“开始打印”,按钮才会执行打印,后面是刷新单据的时间间隔。
5.不需要打印的,可以通过 “自动打印管理” 删除。
6.报表中,指定打印机的方法:(与安装的打印机名称对应即可,装打印机命名时:可以是IP地址,可以是1#,2#随意.)
begin
  if SameText(<Label."sEquipmentNo">,'01') then
    begin
      Report.PrintOptions.Printer := '192.168.5.160';
      Report.SelectPrinter;         
    end
    else if SameText(<Label."sEquipmentNo">,'02') then
    begin
      Report.PrintOptions.Printer := '\\192.168.5.103\HS-701';
      Report.SelectPrinter;                                                        
    end;   
end.

7.如需对现有的单据模块,为每个单据号设定一个报表格式,可以在DELPHI单据模块中,引有pbReportTaskMenuUnt单元,放置一个按钮来注册报表格式,需要创建表(pbBillReportDefine.sql):
例://有传入报表的单据类型ID时
if trim(sRegisteReportBillTypeID) <> '' then
  btnRegisteReport.DropDownMenu := TpbReportTaskMenu.ResultTaskMenu(Self, sRegisteReportBillTypeID, GetBillNo, 0)
else
  btnRegisteReport.DropDownMenu := TpbReportTaskMenu.ResultTaskMenu(Self, '1004', GetBillNo, 0);

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享
回复

使用道具 举报

10

主题

14

帖子

844

积分

超级版主

多多

Rank: 8Rank: 8

积分
844
QQ
沙发
 楼主| 发表于 2016-4-14 14:03:46 | 只看该作者
推荐在注册打印时,直接通过条件得到打印机名,在Exec dbo.sppbRegisterBillReportTask注册时带入,不在要报表代码中写。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|上海环思 ( 沪ICP备11022428号 )

GMT+8, 2024-9-17 09:55 , Processed in 0.095510 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表