| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5307 人关注过本帖, 1 人收藏
标题:怎么修改报表的打印环境?
取消只看楼主 加入收藏
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
结帖率:98.98%
收藏(1)
已结贴  问题点数:20 回复次数:5 
怎么修改报表的打印环境?
比如:清空打印环境用下面的方法,
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
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册: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
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册: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
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册: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
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
用户通常是在“设置”功能选择打印机和页面参数,并保存在配置文件。
 打印时再将相关参数读出写入报表文件。
怎么保存和读取出打印机和页面参数?
2016-06-04 17:31
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用吹水佬在2016-6-4 21:34:09的发言:

SYS(1037)是通过对话方式设置当前打印状态。
其中:
    SYS(1037, 0)是默认的页面设置。
    SYS(1037, 1)是报表页面设置,要求独占打开报表文件。
        USE XXX.frx EXCLUSIVE
        SYS(1037, 1)
设置了返回1,否则返回0.
 
其他页面相关数据,如纸张类型,纵向(横向)等,参考VFP帮助 PRTINFO() 函数,有详细说明。
sys(1037) 有选择纸张的界面,但 sys(1037,1)无选择界面,我怎么选?
难道是3句一起用的?
sys(1037,0)
us XXX.frx excl
sys(1037,1) &&找到答案了,要先打开1个表,才有界面



[此贴子已经被作者于2016-6-5 12:02编辑过]

2016-06-05 11:24
快速回复:怎么修改报表的打印环境?
数据加载中...
 
   



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

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