标题:怎么修改报表的打印环境?
只看楼主
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
结帖率:98.96%
已结贴  问题点数:20 回复次数:15 
怎么修改报表的打印环境?
比如:清空打印环境用下面的方法,
SELECT 0
Use form\通知单.frx
Replace All expr with "",Tag With "",tag2 With "" For ObjType=1 And ObjCode=53
Use
然后在打印的时候,选择打印机和纸张。但每次都选择,能不能第1次选择后保存起来。
第2次进来的时候,就不用再选择了。
搜索更多相关主题的帖子: 打印机 通知单 
2016-06-03 17:26
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
选择打印机
c打印机名 = GetPrinter()

设定打印机
set printer to NAME (c打印机名)

页面参数:
ObjType==1 and ObjCode==53
Hpos字段 左边距
页面参数存放在字段 Expr
    PAPERSIZE、ASCII 页面纸张
    ORIENTATION 纵向、横向打印
2016-06-03 20:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
VFP9无需 Replace All expr with "",Tag With "",tag2 With "" For ObjType=1 And ObjCode=53
在报表属性,不选择保存打印环境。
2016-06-03 20:49
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
清空打印环境?
2016-06-03 20:54
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用吹水佬在2016-6-3 20:46:30的发言:

选择打印机
c打印机名 = GetPrinter()
 
设定打印机
set printer to NAME (c打印机名)
 
页面参数:
ObjType==1 and ObjCode==53  
Hpos字段 左边距
页面参数存放在字段 Expr
    PAPERSIZE、ASCII 页面纸张
    ORIENTATION 纵向、横向打印
我在编译前,清空了打印环境,我客户端使用时,打印前,选择打印机和纸张。
但有个问题出来了,每次启动软件,都要做上述步骤1次。
我现在想,怎么把第1次选择的打印机和纸张的参数保存起来,下次启动软件时,就不同选择了。
******* EXPR
DRIVER=winspool
DEVICE=EPSON LQ-1600K IIIH ESC/P 2
OUTPUT=LPT1:
ORIENTATION=0
PAPERSIZE=131
ASCII=0
COPIES=1
DEFAULTSOURCE=15
PRINTQUALITY=180
COLOR=1
YRESOLUTION=180
TTOPTION=2
COLLATE=0
**** TAG 好像第1个字符是乱码
***  TAG2 看不到,打开会死机。
我以上,怎么把 EXPR,TAG,TAG2 通过第1次读参数时保存回去?达到每个报表在每个客户端的第1次选择打印机和纸张后,就能正常工作,不再需要选择。
2016-06-04 10:11
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用吹水佬在2016-6-3 20:49:07的发言:

VFP9无需 Replace All expr with "",Tag With "",tag2 With "" For ObjType=1 And ObjCode=53
在报表属性,不选择保存打印环境。
这个知道,我想有时候:
1、表报A,用的是A4纸,用的打印机是普通打印,如 HP1000(名称可能不是)
2、表报B用的是二等分纸,也就是241*140,用的是 LQ1600K,
等等。
我想在第1次打印表报A时,如果打印机和纸张不合适,客户选择打印机和纸张后,能保存起来,等到下次再打印表报A时,就能自动的用A4纸在 HP1000上打印;
同样,第1次打印表报B时,第1次选择打印机为LQ1600K,选择纸张 241*140后,就保存起来,等到下次重新开机再打印表报B时,都能正确用 241*140在 LQ1600K上打印
我现在是,没次启动软件时,设置默认的打印机和纸张来做,能不能省去,每次都要选择这个步骤。。

2016-06-04 10:22
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
不保存打印环境时的 EXPR为
ORIENTATION=0
PAPERSIZE=131
COLOR=1
保存打印机环境的 EXPR 在5楼。

这个PAPERSIZE=131,好像就是我打印机的纸张规格的ID号,
我估计,就算我不保存打印环境,由于我电脑上的自定义的纸张 ID号和客户的电脑上的自定义纸张ID号估计是不相同的,也就是说我电脑上 241*140的ID=131,
客户那里的241*140纸张的ID号,也可能不是131,那能正常使用?
不知道,只保存下面4行,是不是就可以。
DEVICE=EPSON LQ-1600K IIIH ESC/P 2 &&这个可以从getprinter()得到
ORIENTATION=0
PAPERSIZE=131 &&从哪里得到??
COLOR=1

选择打印机是用 getprinter(),返回值是打印机名称
选择纸张规格用 sys(1037),但返回值是1,不是纸张ID号


[此贴子已经被作者于2016-6-4 11:39编辑过]

2016-06-04 10:33
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
用户通常是在“设置”功能选择打印机和页面参数,并保存在配置文件。
打印时再将相关参数读出写入报表文件。
问题是包含在EXE里面的报表文件是不能直接修改。
如果报表文件一定要包含在EXE里面,那只能当她是一个模板,用到时再(USE+COPY)临时复制一份出来用,用完删掉。
2016-06-04 16:30
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
用户通常是在“设置”功能选择打印机和页面参数,并保存在配置文件。
 打印时再将相关参数读出写入报表文件。
怎么保存和读取出打印机和页面参数?
2016-06-04 17:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
回复 7楼 mywisdom88
SYS(1037)是通过对话方式设置当前打印状态。
其中:
    SYS(1037, 0)是默认的页面设置。
    SYS(1037, 1)是报表页面设置,要求独占打开报表文件。
        USE XXX.frx EXCLUSIVE
        SYS(1037, 1)
设置了返回1,否则返回0.

其他页面相关数据,如纸张类型,纵向(横向)等,参考VFP帮助 PRTINFO() 函数,有详细说明。
2016-06-04 21:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-465559-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018189 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved