VFP 小问题

hainanyehaihotel 2010-04-11 10:31:36
各位大哥,帮我看看这个代码,要是SUM1的数字变了,SUM2就自动为0了,或是SUM2的数字变,SUM1也自动为0,怎么做才能让SUM1的数字改变后,SUM2的不变呢??
SELE grpmastr
p1=ALLT(STR(nmcount+ccc))
p2= ALLT(STR(giverooms+ccc))
p3="'"+ALLT(SUBSTR(pswdchar,1,4))+"'"
p4="'"+TTOC(DATETIME()) +"'"
leftrm=THISFORM.text3.VALUE
p21="0"
p22="0"
p23="0"
p24="0"
p25="0"
p26="0"
p27="0"
p28="0"
xxx=grpmastr.nmcount+1
REPL nmcount WITH nmcount+ccc,giverooms WITH giverooms+ccc,givepswd WITH SUBSTR(pswdchar,1,4),givetime WITH DATETIME()
IF ALLTRIM(type1)=ALLTRIM(rmtype)
leftrm=IIF(leftrm>=0,sum1-leftrm,sum1+leftrm)
REPL sum1 WITH IIF(leftrm<=0,0,leftrm)
p21=IIF(leftrm<=0,"0",ALLT(STR(leftrm)))
ENDIF
IF ALLTRIM(type2)=ALLTRIM(rmtype)
leftrm=IIF(leftrm>=0,sum2-leftrm,sum2+leftrm)
REPL sum2 WITH IIF(leftrm<=0,0,leftrm)
p22=IIF(leftrm<=0,"0",ALLT(STR(leftrm)))
ENDIF
IF ALLTRIM(type3)=ALLTRIM(rmtype)
leftrm=IIF(leftrm>=0,sum3-leftrm,sum3+leftrm)
REPL sum3 WITH IIF(leftrm<=0,0,leftrm)
p23=IIF(leftrm<=0,"0",ALLT(STR(leftrm)))
ENDIF
IF ALLTRIM(type4)=ALLTRIM(rmtype)
leftrm=IIF(leftrm>=0,sum4-leftrm,sum4+leftrm)
REPL sum4 WITH IIF(leftrm<=0,0,leftrm)
p24=IIF(leftrm<=0,"0",ALLT(STR(leftrm)))
ENDIF
IF ALLTRIM(type5)=ALLTRIM(rmtype)
leftrm=IIF(leftrm>=0,sum5-leftrm,sum5+leftrm)
REPL sum5 WITH IIF(leftrm<=0,0,leftrm)
p25=IIF(leftrm<=0,"0",ALLT(STR(leftrm)))
ENDIF
IF ALLTRIM(type6)=ALLTRIM(rmtype)
leftrm=IIF(leftrm>=0,sum6-leftrm,sum6+leftrm)
REPL sum6 WITH IIF(leftrm<=0,0,leftrm)
p26=IIF(leftrm<=0,"0",ALLT(STR(leftrm)))
ENDIF
IF ALLTRIM(type7)=ALLTRIM(rmtype)
leftrm=IIF(leftrm>=0,sum7-leftrm,sum7+leftrm)
REPL sum7 WITH IIF(leftrm<=0,0,leftrm)
p27=IIF(leftrm<=0,"0",ALLT(STR(leftrm)))
ENDIF
IF ALLTRIM(type8)=ALLTRIM(rmtype)
leftrm=IIF(leftrm>=0,sum8-leftrm,sum8+leftrm)
REPL sum8 WITH IIF(leftrm<=0,0,leftrm)
p28=IIF(leftrm<=0,"0",ALLT(STR(leftrm)))
ENDIF
REPL nmcount WITH nmcount+ccc,giverooms WITH giverooms+ccc,givepswd WITH SUBSTR(pswdchar,1,4),givetime WITH DATETIME()
**更新grpmastr,本地表已更新
p0=STR(grpmastr.fno)
SQL="update grpmastr set nmcount= &p1,giverooms=&p2,givepswd=&p3,givetime=&p4,"
SQL=SQL+"sum1=&p21,sum2=&p22,sum3=&p23,sum4=&p24,sum5=&p25,sum6=&p26,sum7=&p27,sum8=&p28 "
SQL=SQL+" where fno=&p0"
...全文
82 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hainanyehaihotel 2010-04-15
  • 打赏
  • 举报
回复
自己在顶一下吧!~各位大虾,帮小弟看看啊
hainanyehaihotel 2010-04-14
  • 打赏
  • 举报
回复
对了!~SUM1和SUM2这些变量就是房间的数量!
hainanyehaihotel 2010-04-14
  • 打赏
  • 举报
回复
各位大大,是这样的。这个一个酒店团队排房的代码。我预定了两种房型,假设各定10间,一种是大床房,一种是豪华房,然后进入团队排房,我先排大床房5间,豪华房5间,然后退出重新进入后豪华房自动变为0了(应该还是有5间,没排完嘛),大床房还有5间。假如我先排豪华房5间,大床房5间,然后退出,重新进入后就变成大床房为0,豪华房还有5间了。感觉是先排什么房型,这个房型就正确,后排的房型数量都会变成0。
lc_apple 2010-04-12
  • 打赏
  • 举报
回复
这也算是小问题啊,郁闷了
1)没有你的数据表无法得知你的数据关系
2)楼主下面这一段:
IF ALLTRIM(type1)=ALLTRIM(rmtype)
leftrm=IIF(leftrm>=0,sum1-leftrm,sum1+leftrm)
REPL sum1 WITH IIF(leftrm<=0,0,leftrm)
p21=IIF(leftrm<=0,"0",ALLT(STR(leftrm)))
ENDIF
IF ALLTRIM(type2)=ALLTRIM(rmtype)
leftrm=IIF(leftrm>=0,sum2-leftrm,sum2+leftrm)
REPL sum2 WITH IIF(leftrm<=0,0,leftrm)
p22=IIF(leftrm<=0,"0",ALLT(STR(leftrm)))
ENDIF
我做了一下推算,假定两个IF都成功执行了自己的语句,再假设leftrm,sum1,sum2的初值分别是10,10,10
那第一个IF运行完之后leftrm,sum1,p21分别成了0,0,'0'了,继续第二个IF运行完成之后
leftrm,sum2,p22分别成了10,10,'10'
只所以会出现楼主说的那种情况,不难看出是因为程序中sum1,sum2的值是受同一个量leftrm的影响,不过没有具体的数据,也不知道楼主这段代码是做啥用的,只能这样猜测了,原因知道了,想实现不让楼主的目标应该更是一个小CASE了
wwwwb 2010-04-12
  • 打赏
  • 举报
回复
要是SUM1的数字变了,SUM2就自动为0了,或是SUM2的数字变,SUM1也自动为0,怎么做才能让SUM1的数字改变后,SUM2的不变呢??
举例说明
hainanyehaihotel 2010-04-12
  • 打赏
  • 举报
回复
自己顶一下,大侠帮帮忙吧!

2,727

社区成员

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

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