| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4531 人关注过本帖
标题:VFP6.0 生成的程序,电脑重启后打印串行,崩溃中
只看楼主 加入收藏
freejyl
Rank: 1
等 级:新手上路
帖 子:59
专家分:3
注 册:2006-1-6
收藏
得分:0 
以下是引用吹水佬在2016-1-16 20:46:11的发言:

VFP6写的代码在VFP9编译应该没问题,编译后实测一下,有问题也是些细节问题。
如果不是动态报表,报表文件设计时就可以制定好。
喜好做法:
1、设计报表文件时,在报表属性设置不选择保存打印机环境。
2、用GETPRINTER()、APRINTERS()等获取打印设备信息供用户选择,并作为软件系统设置保存。
3、软件运行时取出保存的打印设备信息,用“SET PRINTER TO NAME 打印设备名”指定打印输出设备。
4、报表设计时,页面纸张选择一般选标准纸,如A3、A4、A5等,要看具体打印机纸盒进纸情况,有时可能要设计不同纸张模板的多种报表文件来适应不同的打印设备,这些纸张选择项也要作为软件系统设置由用户选择并保存,以便打印输出时确定用那种报表文件。也许有点繁杂,但报表设计时只要设置好实际打印区域或各边距,其实设计时页面设置选择什么纸张不重要,打印机纸盒和进纸能适应就能正常打印出来。设计时选择的纸张只是一个模板,如设计时页面选择A4纸,将打印内容设计输出在A4纸的上半部或中间, 实际打印时可用A5纸或非标准纸张(自定义纸张)放到打印机打印。


感谢经验奉献
如果在设计报表时页面设置成A4,在打印的时候走纸也是按A4纸的长度去走吧?对于票据打印来说,通过后面卷纸器一次输出的是连续多张票据,在打印完成后,票据走纸后停止后要恰好停在撕纸位。
2016-01-17 19:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 11楼 freejyl
菲林纸进纸比较特别
2016-01-17 22:39
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:991
专家分:4966
注 册:2013-2-16
收藏
得分:0 
我说一个方法,看对你有没有用,就是到报表这个环节,如果用户的打印环境不确定,我比较倾向于生成一个EXCEL文件,
然后,用户打印这个EXCEL文件时,让他自己根据自己的打印环境来调整吧,反正那个EXCEL界面大多数用户都熟悉,他爱怎么调整就怎么调整。 
2016-01-18 11:40
freejyl
Rank: 1
等 级:新手上路
帖 子:59
专家分:3
注 册:2006-1-6
收藏
得分:0 
回复 9楼 吹水佬
我想我可能知道串行的原因了。
当然是多方面的。
原因一:确实是之前的打印环境没有清除,之后和所使用电脑的系统环境、打印设置不相同,而造成莫名的错误。
解决:用Replace All expr with "",Tag With "",tag2 With "" For ObjType=1 And ObjCode=53清除报表打印环境数据,到所运行的电脑上重新设计报表,重新进行页面设置得到解决。但出现了一点状况,是我之前没有想到的,于是又有了原因之二,现在也仅仅是猜测
猜测的原因二:打印报表之前,数据表里一些字段值为空,在报表设计时对应域控件的“打印条件”中设为默认的“若是空白行则删除”,于是在报表打印时由于该行为空值被删除,下面几行的域控件被提上去,造成了打印串行,无法正确的套打到票据上。如下图,分别为报表设计截图、没有空值的记录正常打印、有空值产生串行图片
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

未实际证明的解决思路:为什么会有空值存在呢?因为此种子公司在打印赠品时是不输入用户姓名、地址和电话的,这样造成了报表设计第1行都为空值,所以此行被删除了,下面第2、3、4、5行被提了上去,产生了串行发生。
第一个想法:不让第一行的对应字段为空值,输入时的表单文本框设置默认值为“.”,这样就避免了空行的存在。
第二个想法:在域控件属性的“域控件位置”中有三个选项,浮动、相对于带区顶端固定、相对于带区底端固定,(那么问题来了,浮动选项是啥意思?实际打印时会怎样?)将第1行控件属性设为“相对于带区顶端固定”,将第2、3、4、5行控件属性设为“相对于带区底端固定”,因为在产品为赠品时是不输入的,只有第一行会出现空值,所以将第1行设为相对于带区顶端固定,其余的行不会为空,设为相对于底端固定,避免因第1行空值时删除往上提产生串行。
图片附件: 游客没有浏览图片的权限,请 登录注册

第三个想法:把所有域控件的属性中的打印条件里的“若是空白行则删除”项上的对勾取消。
以上的想法已付诸实际,发给对方,只待结果。


[此贴子已经被作者于2016-1-19 14:43编辑过]

2016-01-19 14:32
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
套打格式固定,打印行数也不能变。
PS:
中国特色表格就是多姿彩,制表如制图,图表不分。
鬼佬比较实际,好多时不用表格,有一行就打印一行,不拘一格,省时省料。
2016-01-20 16:29
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
建议楼主不要直接用源表作报表的数据源,另外建一个结构相同的自由表,需要打印时将筛选出的数据复制到这个自由表中再打印,打印完之后清空自由表。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-01-21 07:44
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
既然是套打,很多信息的位置都是固定的,此时不应再设置“若是空白行则删除”选项。我觉得这是问题的根源。

泉城飞狐
2016-01-21 13:21
freejyl
Rank: 1
等 级:新手上路
帖 子:59
专家分:3
注 册:2006-1-6
收藏
得分:0 
以下是引用吹水佬在2016-1-20 16:29:23的发言:

套打格式固定,打印行数也不能变。
PS:
中国特色表格就是多姿彩,制表如制图,图表不分。
鬼佬比较实际,好多时不用表格,有一行就打印一行,不拘一格,省时省料。



套打确实让人感觉挺闹心,但格式已定,也只好一再调整
2016-01-28 08:52
freejyl
Rank: 1
等 级:新手上路
帖 子:59
专家分:3
注 册:2006-1-6
收藏
得分:0 
以下是引用厨师王德榜在2016-1-18 11:40:37的发言:

我说一个方法,看对你有没有用,就是到报表这个环节,如果用户的打印环境不确定,我比较倾向于生成一个EXCEL文件,
然后,用户打印这个EXCEL文件时,让他自己根据自己的打印环境来调整吧,反正那个EXCEL界面大多数用户都熟悉,他爱怎么调整就怎么调整。 




这个我还真没有尝试过,是用VFP来控制EXCEL表格的生成么?
是不是在生成之后,直接用VFP就打印了的?
进一步想知道的是,关于纸张设置、连续出纸在VFP也一并能实现,还是需要用户手动去设置EXCEL?
2016-01-28 08:55
freejyl
Rank: 1
等 级:新手上路
帖 子:59
专家分:3
注 册:2006-1-6
收藏
得分:0 
以下是引用hu9jj在2016-1-21 07:44:36的发言:

建议楼主不要直接用源表作报表的数据源,另外建一个结构相同的自由表,需要打印时将筛选出的数据复制到这个自由表中再打印,打印完之后清空自由表。





我沿用的做法,是票据打印时在自由表中进行,打印结束开新单据后,向销售记录表中添加打印的记录,自由表清除,主要是不想加上筛选这一过程,如果以后补打,把销售表中当前记录发送至自由表中单条打印。

你的建议有别的含义在里面吗?
2016-01-28 09:02
快速回复:VFP6.0 生成的程序,电脑重启后打印串行,崩溃中
数据加载中...
 
   



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

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