标题:怎樣用replace命令更新表的數據!
只看楼主
yangbai
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:239
专家分:886
注 册:2006-9-21
结帖率:100%
 问题点数:0 回复次数:8 
怎樣用replace命令更新表的數據!
各位:
請教大家一個問題!
我有兩個表stock1,yl,表stock1包括字段:card_id,pariname,現時存倉,表yl中有job_no,model_no,barcode,需求量,追料數(此列為空)等字段,其中barcode=card_id。我要用yl表中的需求量(表中需求量為負數)+現時存倉才得出所欠物料,即追料數,這樣求追料數時,我必須同時更新stock1和yl表。比如0001的物料我需要1k,但現時存倉為0.5k,兩表更新後0001的物料現時存倉應為-0.5k,而在yl表中的追料數顯示為-0.5k(正數不用追料,負數需追料),在yl表中的下一個記錄如還需要0001的物料0.5k,更新後我的0001物料現時存倉數應顯示-1k,在此記錄中的追料數應顯示為-0.5k,這樣依次下去,直到求完yl表中的所有記錄,用replace命令該怎樣實現呢,我做時表中記錄老是達不到我的要求!
搜索更多相关主题的帖子: replace 命令 
2007-11-03 16:25
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
得分:0 

在不同的工作区别打开这两个表,选择各自所在工作区更新各表的数据。十分简单,只要您有工作区的概念!(两表之间的字段计算在字段名字注意加上表名,并用点“.”连接起来)
题外话:您的关系逻辑存在问题,应该是需求量-库存=追货量。仓库管理最基本的逻辑关系就是:期末数=期初数+本期增加数-本期减少数。从逻辑上讲,需求如果为负数,其意义就是库存比需求要多。


两人行已有我师……
2007-11-03 19:19
yangbai
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:239
专家分:886
注 册:2006-9-21
得分:0 

谢谢啸凡兄,我试下先!


将每一件简单的事情做到极至便是成功!
2007-11-04 22:53
yangbai
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:239
专家分:886
注 册:2006-9-21
得分:0 
sele 1
use yl.dbf
sele 2
use stock1.dbf
sele yl
goto top
do while not eof()
if yl.barcode=stock1.card_id
if stock1.現時存倉<0
replace yl.追料數 with yl.xql in yl
else
replace yl.追料數 with yl.xql+stock1.現時存倉 in yl
endif
sele stock1
replace stock1.現時存倉 with yl.xql+stock1.現時存倉 in stock1
endif
sele yl
skip
enddo
這樣做為什麼不行呢,請指點!程序運行沒錯誤,但數據不替換。

[此贴子已经被作者于2007-11-6 15:45:31编辑过]


将每一件简单的事情做到极至便是成功!
2007-11-05 13:54
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
得分:0 
不是sele y1 而是sele1 1

还是没明白工作区的概念!

2007-11-06 07:55
yangbai
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:239
专家分:886
注 册:2006-9-21
得分:0 

baichuan兄,sele yl跟sele 1是一樣的吧,表都已經打開了,現在的問題是我的數據表不知為何更新不了?難道不能按我上面的方法求?

[此贴子已经被作者于2007-11-6 9:23:51编辑过]


将每一件简单的事情做到极至便是成功!
2007-11-06 09:22
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
得分:0 
修改了一下,大概这样吧
sele 1
use yl.dbf
sele 2
use stock1.dbf
sele yl
goto top
do while not eof()
lcID=barcode
SELECT STOCK1
GO TOP
LOCATE FOR CARD_ID=lcID
IF ! eof()
IF 現時存倉<0
SELECT YL
lnXQL=xql
replace yl.追料數 with yl.xql
else
lnSTORED=現時存倉
SELECT YL
replace yl.追料數 with yl.xql+lnSTORED
endif
sele stock1
replace stock1.現時存倉 with lnXQL+stock1.現時存倉 in stock1
ELSE
MASSAGEBOX('数据替换已完成',25,'提示信息')
sele yl
skip
ENDIF
enddo

两人行已有我师……
2007-11-06 16:49
yangbai
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:239
专家分:886
注 册:2006-9-21
得分:0 

嘯凡兄,按照你的方法我試了試,會產生死鎖,可能哪還有問題,我自己再慢慢弄弄,謝謝!


将每一件简单的事情做到极至便是成功!
2007-11-06 19:03
yangbai
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:239
专家分:886
注 册:2006-9-21
得分:0 

程序已經搞定,原來是skip放的位置不對,謝謝嘯凡兄!


将每一件简单的事情做到极至便是成功!
2007-11-07 16:52



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




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

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