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)顯示
出庫總額的計算,是按照商品入庫登記先后順序的“入庫數量”*“入庫單價”(如圖例)

uj5u.com熱心網友回復:
呵呵,居然是非線性的資料庫表。uj5u.com熱心網友回復:
剛接觸vb,很多東西都是仿照一些示例邊做邊學,期待得到老司機們的指教
uj5u.com熱心網友回復:
在使用excel中用vba代碼,單純的以遞進的方式查找和計算,可以很輕松的達到效果,分享一下vba的查詢和統計代碼,不知是否能作參考Sub lqxs()
Dim arr, j&, i&, brr, aa, sl, je, zje, ca
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
uj5u.com熱心網友回復:
沒理解,為啥一定要按順序,直接某一時間段的流水拉出來,累加軋差一下就完事了,不需要管順序吧uj5u.com熱心網友回復:
因為每個入庫批次的價格可能不同,目的是做到先進先出,然后統計出庫存額uj5u.com熱心網友回復:
那就是入庫批次按時間排序,出庫的時候逐一出庫記錄拉出來。
dim 累加出庫金額
for i= 1 to 出庫數量小于入庫記錄條數
if 入庫記錄 i的(入庫數量-出庫數量) 小于等于出庫數量
出庫數量=出庫數量-入庫記錄i的入庫數量
入庫記錄i標記出庫數量=入庫數量
累加出庫金額 = 累加出庫金額額 + 入庫金額
else
入庫記錄i標記出庫數量= 入庫記錄i標記出庫數量 + 出庫數量
出庫數量=0
累加出庫金額 = 累加出庫金額 + 出庫數量* 入庫記錄i的單價
退出回圈
end if
next
輸出累加出庫金額
uj5u.com熱心網友回復:
你好老師,由于對vb代碼撰寫還研究的不透,您的這個方式,用代碼如何撰寫呢,謝謝uj5u.com熱心網友回復:
是本人vb知識水平太低?還是本問題難度大?期待得到一個滿意的答案轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/55877.html
標籤:VB基礎類
上一篇:VB對話框
