类似于顺序匹配,请帮忙
本帖最后由 dkfdtf 于 2013-03-22 21:05:17 编辑
表1 表2
NO NANE VALUE EXP1 ORD(查找的先后顺序) NANE PRICE
1 上衣 100 1000 1 上衣 10
2 上衣,标签 200 2000 2 标签 20
3 书,皮带,标签 300 6000 3 皮带 30
4 皮带,提单 400 12000 4 书 40
5 提单,标签,上衣 500 5000 5 提单 50
6 小册子 600 (空白)
Select Max(ord) From 表2 Into Array aTemp
nMaxOrd = aTemp[1]
Select 表1
Scan All
cName = Name
Alines(aTemp, Name, 1+4, ',')
nPrice = 0
nOrd = nMaxOrd
Select 表2
For ii = 1 To Alen(aTemp)
Locate For Alltrim(Name) == aTemp[ii]
If Found() And ord < nOrd
nOrd = ord
nPrice = price
Endif
Endfor
Select 表1
Replace Next 1 exp1 With Value * nPrice
Endscan
CREATE CURSOR T1 (NO N(8),NAME C(20),VALUE N(8),EXP1 N(8))
INSERT INTO T1 (NO,NAME,VALUE) VALUES (1,[上衣],100)
INSERT INTO T1 (NO,NAME,VALUE) VALUES (2,[上衣,标签],200)
INSERT INTO T1 (NO,NAME,VALUE) VALUES (3,[书,皮带,标签],300)
INSERT INTO T1 (NO,NAME,VALUE) VALUES (4,[皮带,提单],400)
INSERT INTO T1 (NO,NAME,VALUE) VALUES (5,[提单,标签,上衣],500)
INSERT INTO T1 (NO,NAME,VALUE) VALUES (6,[小册子],600)
CREATE CURSOR T2 (ORD N(8),NAME C(4),PRICE N(8))
INSERT INTO T2 VALUES (1,[上衣],10)
INSERT INTO T2 VALUES (2,[标签],20)
INSERT INTO T2 VALUES (3,[皮带],30)
INSERT INTO T2 VALUES (4,[书],40)
INSERT INTO T2 VALUES (5,[提单],50)
SELECT T1
SCAN
LCSTR=[]
FOR I=1 TO ALINES(A,ALLTRIM(NAME),[,])
LCSTR=LCSTR+'"'+A(I)+'"'+IIF(I<ALINES(A,ALLTRIM(NAME),[,]),[,],[])
ENDFOR
SELECT MIN(PRICE) FROM T2 WHERE INLIST(NAME,&LCSTR) INTO ARRAY ATEMP
REPLACE EXP1 WITH NVL(ATEMP(1)*T1.VALUE,0)
ENDSCAN
BLANK FIELDS EXP1 FOR EXP1=0 IN T1
BROWSE