mf1 为显示控件MSFlexGrid名称
db_sjk.mdb 为access数据库
tb_in 为数据表,“商品名称”、“入库数量”、“入库单价”为字段名数据库链接:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db_sjk.mdb;Persist Security Info=False求助问题:利用VB代码,根据出库单mf1.TextMatrix(i, 2)的“商品名称”,mf1.TextMatrix(i, 3)的“数量”,从“tb_in 数据表”中,按照商品入库登记先后顺序,统计同名商品的出库总额,在mf1.TextMatrix(i, 4)显示出库总额的计算,是按照商品入库登记先后顺序的“入库数量”*“入库单价”(如图例)
db_sjk.mdb 为access数据库
tb_in 为数据表,“商品名称”、“入库数量”、“入库单价”为字段名数据库链接:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db_sjk.mdb;Persist Security Info=False求助问题:利用VB代码,根据出库单mf1.TextMatrix(i, 2)的“商品名称”,mf1.TextMatrix(i, 3)的“数量”,从“tb_in 数据表”中,按照商品入库登记先后顺序,统计同名商品的出库总额,在mf1.TextMatrix(i, 4)显示出库总额的计算,是按照商品入库登记先后顺序的“入库数量”*“入库单价”(如图例)
Dim d, k, t, tt
Set d = CreateObject("scripting.dictionary")
Sheet1.Activate
[d4:d20].ClearContents
arr = Sheet4.[a1].CurrentRegion
For i = 3 To UBound(arr)
d(arr(i, 2)) = d(arr(i, 2)) & i & ","
Next
k = d.keys: t = d.items
brr = [a1].CurrentRegion
For i = 4 To UBound(brr)
If brr(i, 2) <> "" Then
sl = brr(i, 3)
zje = 0
If d.exists(brr(i, 2)) Then
tt = d(brr(i, 2))
tt = Left(tt, Len(tt) - 1)
aa = Split(tt, ",")
For j = 0 To UBound(aa)
ca = sl - arr(aa(j), 3)
If ca < 0 Then
zje = zje + sl * arr(aa(j), 4)
Exit For
Else
zje = zje + arr(aa(j), 3) * arr(aa(j), 4)
sl = ca
End If
Next
Else
End If
Cells(i, 4) = zje
Else
Exit For
End If
Next
End Sub
逐一出库记录拉出来。dim 累加出库金额
for i= 1 to 出库数量小于入库记录条数
if 入库记录 i的(入库数量-出库数量) 小于等于出库数量
出库数量=出库数量-入库记录i的入库数量
入库记录i标记出库数量=入库数量
累加出库金额 = 累加出库金额额 + 入库金额
else
入库记录i标记出库数量= 入库记录i标记出库数量 + 出库数量
出库数量=0
累加出库金额 = 累加出库金额 + 出库数量* 入库记录i的单价
退出循环
end if
next
输出累加出库金额