比较初级的问题,新手高手都来看看吧,关于do form

hansbarkley 2004-06-14 07:31:13
把老式的prg文件转换成form,包含两个Function,用do form执行,没有问题,可放到菜单里,就会计算错误,CONVERT转换出来的结果不对.谁能告诉我是怎么回事?prg如下,谢谢大家
Set TALK ON
Set DEVICE TO SCREEN
Set PRINT OFF
MLOT = 'AESHA '
@10,10 SAY 'ENTER EXPORT MONTH LOT : ' GET MLOT
Read
Clear
If READ() = 268 OR READ() = 12 OR LEN(MLOT) < 6
Clear
Return
Endif
Select 1
Use MAWBCOST ORDER LOTNO
Select 2
Use INVOICE ORDER LOT
Select 3
Use ATABLE ORDER ALOTNO
Seek TRIM(MLOT)
MFILE = SYS(3) + '.TXT'
Set DEVICE TO FILE (MFILE)
GTTL = 0
NOHAWB = 0
TGW = 0
TVW = 0
@PROW()+1,1 SAY ' PROFIT AND LOSS R E P O R T '
@PROW()+1,1 SAY ' ---------------------------- '
Do WHILE LOTNO=TRIM(MLOT)
TINCOME = 0
TEXPENSE = 0
@PROW()+1,1 SAY 'LOT # ' + LOTNO+SPACE(2)+MAWB +'/GW '+ALLTRIM(STR(GW,10))+'/VW '+ALLTRIM(STR(VW,10))+' KGS' +' ( '+ TO +' )' + SPACE(2) + AGENT + ' ETD ' + DTOC(ETD)
@PROW()+1,1 SAY ' '
Select INVOICE
Seek TRIM(ATABLE.LOTNO)
Do WHILE LOT = ATABLE.LOTNO &&TRIM(ATABLE.LOTNO)
*!* Do WHILE VOID -- Modified by Jason 14 Dec 2001
*!* Skip -- If last invoice in Master has been void , the next invoice record its not releated
*!* Enddo -- to Lotno will print
If !Void && --
@PROW()+1,1 SAY SUBSTR(GETNAME(AC_NO),1,20)+' ( INV. '+ REF+ ' ) '+ ;
IIF(INVOICE.CHQAMT = INVOICE.TOTAL,' ('+DTOC(CHQDAY)+' PAID) ','')
@PROW(),64 SAY STR(ROUND(TOTAL*CONVERT(CUR),2),10,2)+ ' (INCOME)'
TINCOME = ROUND(TOTAL*CONVERT(CUR),2) + TINCOME
Endif
Skip
Enddo
@PROW()+1,1 SAY REPLIC('-',54)
Select MAWBCOST
Seek ATABLE.LOTNO
Do WHILE LOTNO = ATABLE.LOTNO
*!* Do WHILE VOID -- Modified by Jason 14 Dec 2001
*!* Skip -- If last invoice in Master has been void , the next invoice record its not releated
*!* Enddo -- to Lotno will print
If !Void && --
@PROW()+1,1 SAY SUBSTR(GETNAME(PAYACNO),1,20)+' ( INV. '+ INVNO + ' )'+;
IIF(MAWBCOST.PAY_AMOUNT>0,' ( PAID ) ','')
@PROW(),64 SAY STR(ROUND(PPDTTL*CONVERT(PPDCUR),2),10,2) + ' (EXP)'
TEXPENSE = ROUND(PPDTTL*CONVERT(PPDCUR),2) + TEXPENSE
Endif
Skip && --
Enddo
@PROW()+2,1 SAY 'PER LOT REVENUE = RMB ' + STR(TINCOME - TEXPENSE,10,2)
GTTL = TINCOME - TEXPENSE + GTTL
@PROW()+1,1 SAY REPLIC('=',80)
Select ATABLE
NOHAWB = 1 + NOHAWB
TGW = GW + TGW
TVW = VW + TVW
Skip
Enddo
@PROW()+1,1 SAY 'TOTAL MONTLY REVENUE = ' + ALLTRIM(STR(GTTL,10,2))
@PROW(),40 SAY '( RMB )'
@PROW()+1,1 SAY 'NUMBERS OF LOT = ' + ALLTRIM(STR(NOHAWB,10,2))
@PROW(),40 SAY '( LOTS )'
@PROW()+1,1 SAY 'MONTHLY MASTER GW = ' + ALLTRIM(STR(TGW,10,2))
@PROW(),40 SAY '( KGS )'
@PROW()+1,1 SAY 'MONTHLY MASTER VW = ' + ALLTRIM(STR(TVW,10,2))
@PROW(),40 SAY '( KGS )'
@PROW()+1,1 SAY REPLIC('=',80)
Set DEVICE TO SCREEN
Define WINDOW EPNL FROM 0,0 TO 35,120 TITLE ' PROFIT AND LOSS REPORT' FONT 'COURIER NEW',9 SYSTEM ZOOM NOMINI
Set PDSETUP TO
Set SYSMENU SAVE
Set SYSMENU TO _MFILE,_MEDIT
Modi COMM (MFILE) WINDOW EPNL
Set SYSMENU TO DEFAULT
Use
Dele FILE (MFILE)


Function GETNAME
Parameter VACNO
Store SELECT() TO OLD
Select 0
Use SHPR ORDER SIAC_NO
Seek VACNO
MCOMPANY = CONAME
Use
Select (OLD)
Return (MCOMPANY)

Function CONVERT
Parameter MCUR
If MCUR = 'USD'
CONVERTV = 8.30
Endif
If MCUR = ' '
CONVERTV = 1
Endif
If MCUR = 'HKD'
CONVERTV = 1.05
Endif
If MCUR='RMB'
CONVERTV = 1
Endif
Return (CONVERTV)
...全文
145 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧