有2个table
table1 :
SKU Batch ExpectQty Discrepency
A 123 3
B 234 2
A 123 2
B 234 1
table2(table可以加field,我暂时加了一个Flag)
SKU Batch Qty Flag
A 123 1
A 123 1
A 123 1
A 123 1
B 234 1
B 234 1table2中的Qty都是1,想实现,根据table1中的每一行记录,在table2中找到相同的SKU,Batch,累加其数量,凑够table1中的ExpectQty,如果不够,或者多了,就是discrepency数量,table2中累加过的记录,就不能再累加了。
注意,这两个表都没有key值,SKU和Batch都是可以重复的。就是累加table2的数量,凑够table1中的每一行,不够的,差异数就是discrepency如果可以用SQL直接实现,最好了,如果不行
想用VB实现可以将table1的变成
SKU Batch ExpectQty Discrepency 注意 :这里的discrepency:
A 123 3 0 3-(1+1+1)
B 234 2 0 2-(1+1)
A 123 2 1 2-(1) :注意此时能累加的A,123只有1条了
B 234 1 1 1-0 谢谢高手了
table可以增加field,如果有必要。
如果能用sql写出来更好,不过我用的是access数据库。所以可能不能写procedure.
要是能用VB实现,也很好了,总之,能写出来,就好了。提前谢了。
用一SQL語句就得想想了
凑够table1中的ExpectQty,如果不够,或者多了,就是discrepency数量有點不明白
說不夠還說得過去,多了是怎麼回事呢?
rs2.CursorLocation = adUseClient
Do Until rs1.EOF
rs2.Open "Select Top " & Cstr(rs!ExpectQty) & " * From table2 Where SKU='" & rs!SKU & "' And Batch=" & rs1!Batch & " And Flg=False", cn, 1, 3
Do Until rs2.EOF
rs2!Flag = True
rs2.Update
rs2.MoveNext
Loop
rs1!Discrepency = rs1!ExpectQty - rs2.RecordCount
rs1.Update
rs1.MoveNext
rs2.Close
Loop
rs1.Close
Set rs1 = Nothing
Set rs2 = Nothing
是对的,没有多了的情况,总之table2中的flag标示这个record是否已经被累计过了,flag没选的话,就是没用到的。
我用的是ADODB.recorset
rs2!Flag = True
rs2.Update
rs2.MoveNext
这条不知道怎么写。
ADODB.recorset.Update
ADODB.recorset.MoveNext