DOS上Foxbase编写的打印程序在Foxpro 9.0下运行,设为宋体8号字可在microsoft office Document Image Writer虚拟打印机上得到整齐的竖线,但输出到Canon真实打印机上则竖线不齐.改成其它9、11等字号后,则打印均不齐。我不想用表单设计器重新设计报表。请问有什么好方法没有。下面是我的打印程序(行太长,删了一些方便看些)从“应发合计”后的竖线不齐。楼上啸凡一看就是大家,问题说到点子上了。但我这个工资程序是给同事用的,每个月都要打,表单设计器重新设计报表用起来没有以前那么简单。所以还是希望用编程(也就是修改foxbase程序)的方式来做报表。请各位帮忙!看在我50岁、女的、非计算机专业的菜鸟份上。另外,还有一个问题,就是要退出Foxpro打印才能开始。
***************************PR1.PRG 打印工资发放表*
***************************
SET ESCAPE ON
set message to 0
SET TALK OFF
CLEAR
* SELE 1
* USE GZ&NHS&YFS INDEX BH&NHS&YFS
* SELE 2
* USE GZTJ&NHS&YFS INDEX BHTJ&NHS&YFS
DD='Y'
DO WHILE UPPE(DD)='Y'
SET DEVI TO SCRE
DO KSXZ1
if H1='
' .OR. H2='
'
*
CLOSE DATA
retu
endif
SELE 1
LOCA FOR SUBS(BH,1,2)=H1
IF EOF()
@ 10,10 SAY '该科不存在,请重新输入' GET DD PICT 'Y'
READ
LOOP
ENDIF
SET PRINT ON
SET DEVI TO SCRE
CLEAR
@ 4,17 SAY '■ □
正在打印['+KSMC+']工资发放表
□ ■'
DO WHILE SUBS(BH,1,2)>=H1.AND.SUBS(BH,1,2)<=H2.AND..NOT.EOF()
SET DEVI TO PRINT
SET CONS OFF
set prin font "宋体",8
Y=0
@ Y,62 SAY '
研究所
职工工资发放表'
Y=Y+2
@ Y,0 SAY '科室:'+KSMC+SPACE(60)+'20'+NHS+'年'+YFS+'月份'
Y=Y+1
L1='┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━'
L2='┃编
号┃
岗位工资
薪级工资
岗位津贴
住房补贴
地区差
节日补贴
公积金
交通费
其他
应发合计┃
扣水电
扣保'
L3='┃姓
名┃
┃
扣医保
电话'
L4='┣━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━'
L5='┃编
号┃
岗位工资
薪级工资
生活补贴
住房补贴
地区差
节日补贴
护理费
交通费
其他
应发合计┃
扣水电
扣保'
L6='┃姓
名┃
┃
扣医保
电话'
L8='┃编
号┃
退休费
特殊津贴
生活补贴
住房补贴
地区差
节日补贴
其他
应发合计┃
扣水电
扣保'
L7='┗━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━'
@ Y,0 SAY L1
Y=Y+1
IF SUBS(H1,1,1)='F'
@ Y,0 SAY L5
Y=Y+1
@ Y,0 SAY L6
ELSE
IF SUBS(H1,1,1)='G'
@ Y,0 SAY L8
Y=Y+1
@ Y,0 SAY L9
ELSE
@ Y,0 SAY L2
Y=Y+1
@ Y,0 SAY L3
ENDIF
ENDIF
X=0
DO WHILE X<15 .AND.SUBS(BH,1,2)=H1
y=y+1
@ Y,0 SAY L4
Y=Y+1
@ Y,0 SAY '┃'+BH+'
┃ '+STR(G1,10,2)+STR(G2,10,2)+STR(G3,10,2)+STR(G24,10,2)+STR(G9,10,2)+STR(G4,10,2)+STR(G5,10,2)+STR(G6,10,2)+STR(G7,10,2)+STR(G8,10,2)+STR(YF,10,2)+' ┃'
@ Y,124 SAY STR(K1,8,2)+STR(K2,8,2)+STR(K3,8,2)+STR(K4,8,2)+STR(K5,8,2)+STR(K6,8,2)+STR(K13,8,2)+'
┃'
Y=Y+1
@ Y,0 SAY '┃'+XM+'┃'+'
┃'
@ Y,124 SAY STR(K7,8,2)+STR(K8,8,2)+STR(K9,8,2)+STR(K10,8,2)+STR(K11,8,2)+STR(K12,8,2)+STR(YKHJ,8,2)+STR(UF,10,2)+'┃'
X=X+1
KSM=KSMC
SKIP
ENDDO
IF SUBS(BH,1,2)<>H1
H1=SUBS(BH,1,2)
SELE 2
LOCA FOR KSMC=KSM
Y=Y+1
@ Y,0 SAY L4
Y=Y+1
@ Y,0 SAY '┃本科合计│'+STR(G1,10,2)+STR(G2,10,2)+STR(G3,10,2)+STR(G24,10,2)+STR(G9,10,2)+STR(G4,10,2)+STR(G5,10,2)+STR(G6,10,2)+STR(G7,10,2)+STR(G8,10,2)+STR(YF,10,2)+'┃'
@ Y,124 SAY STR(K1,8,2)+STR(K2,8,2)+STR(K3,8,2)+STR(K4,8,2)+STR(K5,8,2)+STR(K6,8,2)+STR(K13,8,2)+'
┃'
Y=Y+1
@ Y,0 SAY '┃'+STR(RS,6)+'人│'+'
┃'
@ Y,124 SAY STR(K7,8,2)+STR(K8,8,2)+STR(K9,8,2)+STR(K10,8,2)+STR(K11,8,2)+STR(K12,8,2)+STR(YKHJ,8,2)+STR(UF,10,2)+'┃'
Y=Y+1
@ Y,0 SAY L7
Y=Y+1
@ Y, 0 SAY ' '
ELSE
Y=Y+1
@ Y,0 SAY L7
ENDIF
SET DEVI TO PRINT
SET CONS OFF
SELE 1
ENDDO
ENDDO
eject
SET PRINT OFF
SET DEVI TO SCRE
SET PRINT TO
SET CONS ON
* CLOSE DATA
RETURN
TEXT