标题:VFP6.0 生成的程序,电脑重启后打印串行,崩溃中
只看楼主
freejyl
Rank: 1
等 级:新手上路
帖 子:59
专家分:3
注 册:2006-1-6
 问题点数:0 回复次数:21 
VFP6.0 生成的程序,电脑重启后打印串行,崩溃中


我用VFP6写了一个种子销售的程序,这套程序在其他公司运行了已经十年,从未出现过任何问题,并不是说自己有多自信,也是因为自己及时和优质的售后服务,经介绍卖给了外地的一家种子公司。
原以为会很顺利的弄完,以前生成的程序换台电脑只要在那台电脑上添加自定义票据纸张规格(20CM * 9.3CM),进项目管理器把报表重新进行页面设置,根据对方出示的票据套打位置稍作调整,重新连编一下生成可执行文件就OK了。可这次莫名其妙的问题出现了。

去那家公司后,发现对方的系统为WIN7,且汉字系统损坏,于是改装了XP,安装XP后按以往的经验重新连编后打印什么一切正常,于是打道回府乘火车回家。
几天之后,对方要求加一个单据退换货和作废的功能,于是按他们要求弄了另外一个程序,因为数据库没什么修改,直接把生成的可执行文件单独发了过去。
前三天开始问题出现了,告诉我打印出来的单据打印位置串行,于是远程桌面到对方电脑上调整报表中数据打印位置后重新连编生成可执行文件,对方告知打印正常了,虽然心里有些疑惑(之前已经弄完了,怎么会串行呢?)但既然问题解决,没多想什么就下线了。
没过多久,对方又打电话来,说重启了一下电脑,依然串行,心里觉得很诧异,再次远程桌面到对方电脑,这次没调整报表,直接重新连编可执行文件后打印就正常了。这次特意看了一下电脑,里面安装了很多其他的软件,如QQ电脑管家、WPSOFFICE等等,我在想是不是其他软件会影响打印机的默认纸张设置?因为前些天重装后做了GHOST备份,让对方恢复了一下系统,但重启打印串行的问题依旧存在。让对方查毒,用的金山毒霸未发现病毒存在。虽然对金山毒霸的查杀能力不完全相信,也只好暂时相信系统是无毒的了。但问题摆在面前总要解决,开始回想前几次连编的过程,都没有选择“重新编译全部文件”、“显示错误”和“重新生成组件ID”这三个选项,于是把这三项都打勾选项进行连编,生成程序之后,重启电脑了问题不再出现,心想终于可以无忧了。谁知今天早上打来电话,说程序不能打印,后来对方不知弄了什么,又说可以打印了,但还是有一些小小的串行,OMG,要崩溃的节奏!
静下心来仔细回想整个过程,我觉得有以下几个问题让我困惑


1、连编的那几个选项是否选择确实有必要么?之前连编时就选择“连编可执行文件”,下面选项区的那几项都没选过,以前给其他公司使用时也没出现过打印位置串行的问题,怎么这次会这样呢?对方前台有两个电脑,一台是我连编时选择“重新编译全部文件”、“显示错误”和“重新生成组件ID”这三个选项生成的,另一台因为对方的网速实在太慢,就让对方公司里面一个接触过VFP的员工替我重新连编的,而今天早上打电话来的恰恰是对方员工重新连编的那台电脑,现在不知道他在连编时是否真的选了那三项。
2、因为对方公司的网速实在是太慢,第二次添加功能时我没法在线在对方电脑上更改,于是单独发了一个生成后的可执行文件过去,现在对方电脑里实际上是有两个程序的,新修改的程序中,我加了一些功能也涉及到报表打印,里面的纸张规格有A4的,但他们用没用过新功能我就不清楚了。我和他们说尽量不要两个程序同时运行,以免造成数据冲突,但他们是否能真的照做不晓得,那么我想知道,如果他们真的两个程序同时运行了,并且打印了A4规格纸张的报表,会影响票据输出么?
3、每一次VFP6的项目文件挪到别的电脑打开时,都提示找 _FRAMEWK.VCX、_REPORTS、APPHOOK等一些文件,这次给这家公司修改程序时,为了省事,我把VFP6中这些文件都放到了项目文件夹,会不会我这次的自以为省事的举措造成了现在的问题?
4、怀疑对方电脑安装的其他软件改变了打印机的默认纸张规格,但已经恢复了原来的系统,是否可以排除其他软件干扰因素?
5、病毒!之前对方电脑我给安装了免费的金山毒霸,但说真的,对免费产品是否真能查杀出病毒,还是感觉未知。

以上这几个问题百思不得解,虽然从学VFP到现在已经有十三年的时间,按理说应该对VFP了解颇深了,但实在是惭愧得紧,我不是专职搞开发,期间工作调动频繁,根据工作和养家的需要先后做过网络维护、无盘安装、网站设计等,VFP期间间断过很久,很多知识确实没有更新和储备,很多方面确实是不太深入。
附上打印机的型号是:映美 FP 630k +
搜索更多相关主题的帖子: 电脑重启 项目管理 执行文件 台电脑 汉字 
2016-01-16 11:30
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
每一次VFP6的项目文件挪到别的电脑打开时,都提示找 _FRAMEWK.VCX、_REPORTS、APPHOOK等一些文件,因为你程序用到这些东西,移动项目后,由于你电脑安装VFP环境发生变化
打印位置串行的问题,好像报表和打印机型号有关系,以前听他们说过,比如你用LQ1600K打印机来设置报表的,最好,客户端的打印机也是这个型号的,
生成程序前,最好把报表的打印环境清理,如:把报表交费单.frx的打印纸张的设置清除掉。
Use form\交费单.frx
Replace All expr with "",Tag With "",tag2 With "" For ObjType=1 And ObjCode=53
Use
用户打印的时候,叫他自己根据报表选择纸张规格,如2等份纸140*241
2016-01-16 12:59
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
2016-01-16 13:03
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
第1张图,是没选择纸张规格打印的效果,默认是A4纸,第2个图,是用SYS(1037)调出的界面设置纸张规格,第3张图,是设置正确纸张后的打印效果
2016-01-16 13:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
VFP6的报表文件是保存设计时的打印机环境(VFP9可以选择是否保存),导致出现有楼上的清除打印机环境的解决方法:
Replace All expr with "",Tag With "",tag2 With "" For ObjType=1 And ObjCode=53

以前用VFP6时也曾经遇到过一些打印问题,有些电脑更换打印机时,系统的旧打印设备没删除,或安装了一些虚拟打印设备,当这些打印设备变成默认打印输出设备时, VFP6的打印输出有可能出现异常,用 SET PRINTER TO NAME WindowsPrinterName 指定打印机也无效。
2016-01-16 15:57
freejyl
Rank: 1
等 级:新手上路
帖 子:59
专家分:3
注 册:2006-1-6
得分:0 
以下是引用mywisdom88在2016-1-16 12:59:12的发言:

每一次VFP6的项目文件挪到别的电脑打开时,都提示找 _FRAMEWK.VCX、_REPORTS、APPHOOK等一些文件,因为你程序用到这些东西,移动项目后,由于你电脑安装VFP环境发生变化
打印位置串行的问题,好像报表和打印机型号有关系,以前听他们说过,比如你用LQ1600K打印机来设置报表的,最好,客户端的打印机也是这个型号的,
生成程序前,最好把报表的打印环境清理,如:把报表交费单.frx的打印纸张的设置清除掉。
Use form\交费单.frx
Replace All expr with "",Tag With "",tag2 With "" For ObjType=1 And ObjCode=53
Use
用户打印的时候,叫他自己根据报表选择纸张规格,如2等份纸140*241




感谢回复
如果清除了报表的打印纸张设置,以后连编出来的程序,是不是每次都要运行SYS(1037)来设置打印?
2016-01-16 17:51
freejyl
Rank: 1
等 级:新手上路
帖 子:59
专家分:3
注 册:2006-1-6
得分:0 
以下是引用吹水佬在2016-1-16 15:57:48的发言:

VFP6的报表文件是保存设计时的打印机环境(VFP9可以选择是否保存),导致出现有楼上的清除打印机环境的解决方法:
Replace All expr with "",Tag With "",tag2 With "" For ObjType=1 And ObjCode=53

以前用VFP6时也曾经遇到过一些打印问题,有些电脑更换打印机时,系统的旧打印设备没删除,或安装了一些虚拟打印设备,当这些打印设备变成默认打印输出设备时, VFP6的打印输出有可能出现异常,用 SET PRINTER TO NAME WindowsPrinterName 指定打印机也无效。



感谢回复
如果是这样,我想把这个程序在VFP9中打开,VFP6的项目可以不用改动的移植到VFP9中进行重新编译么?
另外,我有一个设想,如果我在编译时把报表文件排除,然后在其他电脑中运行时根据实际情况来调整,比如更改报表文件的页面设置中对应的自定义纸张,以及调整报表里面一些控件的位置,以便适应新的票据格式,保存一次以后在软件运行环境更改前(更换电脑或打印机)都不需要每次重新运行时都要再次设置打印机和选择默认的自定义纸张,能否实现?
2016-01-16 18:05
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
你应该自己连编,然后发EXE程序给用户,为什么让用户连编呢,难不成你的源码全部在用户电脑中!

活到老,学到老! http://www. E-mail:hu-jj@
2016-01-16 20:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
VFP6写的代码在VFP9编译应该没问题,编译后实测一下,有问题也是些细节问题。
如果不是动态报表,报表文件设计时就可以制定好。
喜好做法:
1、设计报表文件时,在报表属性设置不选择保存打印机环境。
2、用GETPRINTER()、APRINTERS()等获取打印设备信息供用户选择,并作为软件系统设置保存。
3、软件运行时取出保存的打印设备信息,用“SET PRINTER TO NAME 打印设备名”指定打印输出设备。
4、报表设计时,页面纸张选择一般选标准纸,如A3、A4、A5等,要看具体打印机纸盒进纸情况,有时可能要设计不同纸张模板的多种报表文件来适应不同的打印设备,这些纸张选择项也要作为软件系统设置由用户选择并保存,以便打印输出时确定用那种报表文件。也许有点繁杂,但报表设计时只要设置好实际打印区域或各边距,其实设计时页面设置选择什么纸张不重要,打印机纸盒和进纸能适应就能正常打印出来。设计时选择的纸张只是一个模板,如设计时页面选择A4纸,将打印内容设计输出在A4纸的上半部或中间, 实际打印时可用A5纸或非标准纸张(自定义纸张)放到打印机打印。


[此贴子已经被作者于2016-1-16 20:52编辑过]

2016-01-16 20:46
freejyl
Rank: 1
等 级:新手上路
帖 子:59
专家分:3
注 册:2006-1-6
得分:0 
以下是引用hu9jj在2016-1-16 20:06:06的发言:

你应该自己连编,然后发EXE程序给用户,为什么让用户连编呢,难不成你的源码全部在用户电脑中!



源码确实是在用户电脑中,就是为了方便在用户电脑上随时修改,这些种子公司的要求不一样,所以我卖出去的软件有N多的版本功能,这次的用户是外地的,而且他们那儿的网速实在是过慢,远程连接常常就断了,也不想随便把源码放在外面,以前的做法是源码用RAR加密打包,需要修改时自己远程解压,修改完成再重新打包。主要是以前都是在本地用,也没出现过这次的问题,不逼迫也确实没有今天的这次的提高,感谢各位朋友的指点与回复。
2016-01-17 19:06



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




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

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