| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1810 人关注过本帖
标题:ucdos7.0 程序在 vfp6.0 下打印无法对齐
取消只看楼主 加入收藏
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:9 
ucdos7.0 程序在 vfp6.0 下打印无法对齐
各位大侠
公司的工资打印系统是在 ucdos7.0下编写的 都用了10几年了   还必须是在win98下运行  可98太落后了 用起来很不方便
于是在xp下搞了个98的虚拟机  勉强用着
最近想在vfp6.0下运行打印程序,可是程序在 vfp6.0 下打印无法对齐
还请各位大侠帮帮忙,看看哪里需要修改(以下为ucdos7.0下的打印程序源码),不胜感激!
红色部分老是对不齐,
标准格式
|基分| 生活费|岗位工资| 加 班 |年功|中夜餐|福 利|交通通讯|独子费|书报费|级别|保健费|
|280 | 68.00 |1259.00 | 536.00| 50 |100.00|17.00| 50.00  |5.00  |17.00 |50  |60    |
对不齐的格式
|基分| 生活费|岗位工资| 加 班 |年功|中夜餐|福 利|交通通讯|独子费|书报费|级别|保健费|
|280 | 68.00|1259.00|536.00| 50|100.00|17.00| 50.00|5.00  |17.00 |50  |60  |

源码
SET PRIN OFF
SET TALK OFF
SET DATE ANSI
wbh=0
QYH=1
ZYH=99
SELE 1
USE XTZK   &&如果修改XTZK.DBF中 BH 的类型,程序将出错.
do while .t.
  clear
  @8,20 say '是否已执行JS3B程序?'
  @12,20 SAY '编号为99时退出打印'
  @13,20 say '单位编号:' GET WBH PICT '99'
  READ
  @16,20 say '开始页号:' GET QYH PICT '99'
  @17,20 SAY '终止页号:' GET ZYH PICT '99'
  READ
  IF WBH=99
    EXIT
  ENDIF
  SELE 1
  LOCATE FOR BH=WBH
  IF EOF()
    @18,20 SAY '该单位不存在!'
      ?CHR(7)+CHR(7)
    LOOP
  ENDIF
  IF WBH<10
    I=STR(WBH,1)
  ELSE
    I=STR(WBH,2)
  ENDIF
  WNAME=NAME
  WHD1=HD1
  WHD2=HD2
  @19,20 SAY '正在打印'+WNAME+'工资表'
  SELE 2
  USE GZZ&I
  SET DEVICE TO PRINT
  SET CONS OFF
  SET PRINT ON
  HH=1
* WQYH=17*(QYH-1)+1  && 一页打印 18 行
  WQYH=24*(QYH-1)+1  &&打印 25 行
  GO WQYH     &&指向库中WQYH的记录
  DO WHILE .NOT.EOF().AND.QYH<=ZYH
    IF HH=1
      do cr32401
*     ?chr(27)+'IA'
      ?SPACE(30)+LTRIM(TRIM(WNAME))+'工资表'
      DO CR32402
*     ?CHR(27)+'IA'  
      ?SPACE(10)+'打印日期:'
      do tm
      ??'12'+SPACE(160)+'第'+STR(QYH,2)+'页'
    ENDIF
    ?'...................................................................................................................................................................................................'
    ?yh1+' |基分| 生活费|岗位工资| 加 班 |年功|中夜餐|福 利|交通通讯|独子费|书报费|级别|保健费| '
    ??subs(whd1,1,10)+'|房水电|病事假|失业金|新工险|养老金|医  保| 个  税 |'
    ??SUBS(WHD2,1,6)+'|暖气费| 补  贴|实 发 数|'
    ?xm+space(12)+'|'
    @prow(),pcol() say jf pict '@Z 9999'  
    ??'|'
    @prow(),pcol() say SHF pict '@Z 9999.99'
    ??'|'
    @prow(),pcol() say FDGZ pict '@Z 99999.99'
    ??'|'
    @prow(),pcol() say JBF pict '@Z 9999.99'   
    ??'|'
    @prow(),pcol() say GLGZ pict '@Z 9999'
    ??'|'
    @prow(),pcol() say ZYC pict '@Z 999.99'
    ??'|'
    @prow(),pcol() say FLF pict '@Z 99.99'
    ??'|'
    @prow(),pcol() say CB pict '@Z  99999.99'
    ??'|'
    @prow(),pcol() say DZF pict '@z 999.99'
    ??'|'
    @prow(),pcol() say SBF pict '@Z 999.99'
    ??'|'
    @prow(),pcol() say JIBGZ pict '@Z 9999'
    ??'|'
    @prow(),pcol() say BJF pict '@Z 999.99'
    ??'|'
    @prow(),pcol() say FJ pict '@Z999.99'  &&烤火费
    ??' |'
    @prow(),pcol() SAY FZSD pict '@Z 999.99'
    ??'|'
   && @prow(),pcol() SAY CX pict '@Z 9999'
   && ??'|'
    @prow(),pcol() SAY BSJ pict '@Z 999.99'
    ??'|'
    @prow(),pcol() SAY BXJ pict '@Z 999.99'  &&失业保险金
    ??'|'
    @prow(),pcol() SAY YYF pict '@Z 999.99'   &&
    ??'|'
    @prow(),pcol() SAY YLJ pict '@Z 999.99'
    ??'|'
    @prow(),pcol() say hd3 pict '@z 999.99'   
    ??'|'
    @prow(),pcol() say hd7 pict '@z 99999.99'  &&个税
    ??'|'
  &&@prow(),pcol() say lc pict '@z 9999.99'
  &&??'|'
    @prow(),pcol() SAY HD2 pict '@Z 999.99'
    ??'|'
    @PROW(),PCOL() SAY HD4 PICT '@Z 999.99'
    ??'|'
    @PROW(),PCOL() SAY HD5 PICT '@Z 9999.99'
    ??'|'
    @prow(),pcol() SAY SFGZ pict '@Z 99999.99'
    ??'|'

    HH=HH+1
    IF HH=25     
      HH=1
      ?'.....................................................................................................................................................................................................'
      ?' '
      QYH=QYH+1

      EJEC
    ENDIF
    SKIP
  ENDDO
  set print off
  sum BJF,shf,fdgz,jbf,glgz,zyc,flf,cb,dzf,sbf,hd1,fzsd,bsj,bxj,hd2,sfgz,JIBGZ,yyf,ylj,fj;
  to BJF1,shf1,fdgz1,jbf1,glgz1,zyc1,flf1,cb1,dzf1,sbf1,hd11,fzsd1,bsj1,bxj1,hd21,sfgz1,JIBGZ1,YYF1,ylj1,fj1
  SUM HD3,HD4,HD5 TO HD31,HD41,HD51
  sum hd6,hd7,hd8,lc to hd61,hd71,hd81,lc1
  set print on
  ?'....................................................................................................................................................................................................'
  ?' 合计数  '+SPACE(11)+STR(SHF1,12,2)+'   '+STR(JBF1,14,2)+STR(ZYC1,10,2)+STR(CB1,14,2)+'    '+STR(SBF1,12,2)+' '+str(bjf1,10,2)+str(fj1,10,2)+'         '+str(bxj1,14,2)+' '+str(ylj1,13,2)+str(HD31,7,2)+'  '+str(hd41,17,2)+STR(sfgz1,19,2)
  ?space(22)+sTR(FDGZ1,19,2)+'    '+STR(GLGZ1,10,2)+STR(FLF1,10,2)+STR(DZF1,16,2)+STR(jibgz1,15,2)+'            '+STR(fzsd1,10,2)+STR(bsj1,10,2)+str(yyf1,11,2)+'       '+str(hd71,16,2)+str(hd21,8,2)+'  '+stR(HD51,12,2)
  ?' '
  EJEC
  SET DEVI TO SCRE
  SET PRINT OFF
  SET CONS ON
ENDDO
RETURN&&
*
*?
搜索更多相关主题的帖子: 打印 
2010-05-15 20:39
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
收藏
得分:0 
回复 2楼 wzxc
你好 wzxc
谢谢,回头试试
不过个人感觉,不能从根本上解决问题
 
重新开发的话 ,太费时间,不知有何可行性建议,还请赐教
2010-05-15 22:21
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
收藏
得分:0 
回复 3楼 啸凡
你好
谢谢回复
我是初学者,对这方面不是很了解
弱弱的问一下,您所说的重新开发,是指在vfp下重新编写打印程序吗
2010-05-15 22:29
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
收藏
得分:0 
回复 3楼 啸凡
补充一下
问这个问题的目的主要是:实现vfp打印的工资表达到ucdos7.0下的打印工资表的效果
2010-05-15 22:31
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
收藏
得分:0 
回复 6楼 啸凡
噢 ……那回头再研究研究报表
我们的工资系统打印出来的大概有24个字段
要打在差不都a3大小的三联链式打印纸上,一张纸打印24个人的工资,页首行是部门名称
大约有70个部门,如果用报表方便吗
而且每个部门的每个字段都需要有小计
2010-05-15 22:36
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
收藏
得分:0 
回复 11楼 啸凡
在vfp下我试过设置字体
遗憾是总找不到合适的,或者是字体对齐了,上边的点和下边的点间距就缩小了 很难看
现在正在学习如何用报表打印,谢谢您的关注
再问一下,报表能打印在381mm*279三联打印纸上吗,还有报表默认好像是a4的  如何调整啊
2010-05-16 14:48
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
收藏
得分:0 
回复 6楼 啸凡
表格已经画好了
打印的效果还不错
只是插入打印日期、打印页码,以及单位汇总的问题还解决不了
日期要求:年.月.12   打印页码:第**页
单位汇总:要求在最后一个人名的下一行打印,如何实现呢(我用求和得到的是本页的合计数,如果一个单位有几页的话 就不好办了,每页都有小计,而没有总计,而这工资表只需要总计数)
还请指点,谢谢
2010-05-17 10:24
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
收藏
得分:0 
回复 13楼 wzxc
页码问题已经解决
按照您所说的自定义纸张设置后
在vfp中找不到设置后的纸张,是不是哪里出问题一了
请明示
2010-05-17 14:05
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
收藏
得分:0 
回复 15楼 qq156059757
谢谢大家的关注
现在合计数的问题已经解决
还有纸张设置的问题啦

2010-05-17 15:36
qq156059757
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2010-5-15
收藏
得分:0 
回复 17楼 wzxc
我用的是ds-800的打印机,驱动也是ds-800的
在里面找不到,可能是次驱动不支持自定义纸张吧
后来更换驱动为epson lq-1600kIII    哈哈 找到自定义纸张了
谢谢各位大侠的支持,谢谢
问题已基本解决
2010-05-17 17:46
快速回复:ucdos7.0 程序在 vfp6.0 下打印无法对齐
数据加载中...
 
   



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

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