标题:求助:利用VB代码,按照记录先后顺序统计数据
只看楼主
时间旅行者
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-7-1
结帖率:40%
已结贴  问题点数:20 回复次数:19 
求助:利用VB代码,按照记录先后顺序统计数据
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)显示

出库总额的计算,是按照商品入库登记先后顺序的“入库数量”*“入库单价”(如图例)

搜索更多相关主题的帖子: VB 代码 顺序 统计 商品 
2017-07-19 19:41
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:5 
你的数据表与你需要显示的要求不符,最起码要有“出库数量”
tb_in  为数据表,需要必要的字段:“商品名称”、“入库单价”、“入库数量”、“出库数量”这几个字段名
才能实现你需要的结果,明天给你一个示例。

请不要选我!!!
2017-07-19 21:48
时间旅行者
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-7-1
得分:0 
回复 2楼 ZHRXJR
谢谢老师,我是刚接触学习vb,很多都是在仿照一些示例边学边做,期待能得到您的指教
2017-07-20 12:03
wlrjgzs
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:26
帖 子:212
专家分:1566
注 册:2017-4-10
得分:5 
回复 3楼 时间旅行者
放心,这位老师有大把的时间,他会指教你的。
2017-07-20 14:56
wlrjgzs
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:26
帖 子:212
专家分:1566
注 册:2017-4-10
得分:0 
回复 2楼 ZHRXJR
老师,说好的示例呢?其实我也很需要。
2017-07-21 14:03
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:5 
要按照记录顺序统计,则你必须有一个表征记录顺序的字段,一般是自增长的id或记录时间字段。似乎那种不要任何查询条件的sql语句也能按记录顺序输出,如“select * from tb_in”,不过我总觉得不可靠。
2017-07-21 18:42
时间旅行者
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-7-1
得分:0 
回复 6楼 xzlxzlxzl
在使用excel中用vba代码,单纯的以递进的方式查找和计算,可以很轻松的达到效果,由于对vb的语句还不熟悉,所以找不到方法,
2017-07-21 20:42
时间旅行者
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-7-1
得分:0 
分享一下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
2017-07-21 20:43
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:0 
回复 3楼 时间旅行者

不好意思,停了二天电,这二天身体又不舒舒,没有及时回复,今天晚上给你。

请不要选我!!!
2017-07-23 07:37
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
得分:0 
回复 3楼 时间旅行者
商品信息管理.rar (61.46 KB)

看看,如果可以,联系我。

请不要选我!!!
2017-07-23 22:06



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




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

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