Foxtable(狐表)用户栏目专家坐堂 → [求助]谁有做过在仓库移动加权平均单价的算法啊


  共有16320人关注过本帖树形打印复制链接

主题:[求助]谁有做过在仓库移动加权平均单价的算法啊

帅哥哟,离线,有人找我吗?
mr725
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/15 22:43:00 [显示全部帖子]

你要把问题说清楚,是按自然顺序做移动加权平均,还是按日期来做呢?


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/15 23:34:00 [显示全部帖子]

项目中没看到你的货号,如果是品种,大概是这样:


Dim I As Integer
I = Tables("序时帐").Compute("Max(_identify)", "_identify < " & Tables("序时帐").current("_identify") & _
" And 收入数量 Is not null and 品种 = '" & Tables("序时帐").current("品种") & "'")
Dim dr As DataRow
If I > 0
    With DataTables("序时帐")
        dr = .Find("_identify = " & I )
        Tables("序时帐").current("结存单价") = (dr("结余金额")+ _
        Tables("序时帐").current("收入金额")) / _
        (dr("结存数量") + Tables("序时帐").current("收入数量"))
    End With

Else
    With DataTables("序时帐")
        dr = .Find("_identify = " & I )
        Tables("序时帐").current("结存单价") = Tables("序时帐").current("收入单价")
    End With
End If

[此贴子已经被作者于2012-5-15 23:59:04编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/16 0:34:00 [显示全部帖子]

每次数量、单价变动后,数量、金额还要重新计算···  上面只是确定结存单价部分。
[此贴子已经被作者于2012-5-16 0:43:42编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/17 11:53:00 [显示全部帖子]

这样可以吗,代码没有整理 都是测试状态,还有很多多余的无用代码···呵呵。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:移动加权平均.table

[此贴子已经被作者于2012-5-17 11:54:40编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/17 12:08:00 [显示全部帖子]

这样的设计都是自找麻烦,还好我只是玩耍,昨晚被玩了几个小时···

 

建议大家类似这样的“表格”式的表界面最好是一个查询结果,而不是录入用的表;论坛有责任劝阻这样的录入“表格”  。

 

录入数据的表越简单越好,需要任何形式的界面,通过查询几乎都能得到。

 

而且,foxtable现在不比从前了,运行起来飞快(当时09年吧,比蜗牛还慢,呵呵),应该嘉奖老六团队,周末去付款搞个开发板玩玩···· 狐爸,不许涨价···!

[此贴子已经被作者于2012-5-17 15:31:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/17 12:16:00 [显示全部帖子]

以下是引用lihe60在2012-5-17 11:59:00的发言:

移动加权代码:

 

Dim t As Table=e.form.controls("table1").Table
Dim r1,r2 As Row
For  i As Integer=0 To t.rows.count-1
    If i=0
        r1=t.rows(i)
        r1("结存数量")=r1("收入数量")-r1("出货数量")
        r1("结存金额")=r1("收入金额")-r1("出货金额")
    Else
        r1=t.rows(i-1)
        r2=t.rows(i)
        r2("出货单价")=(r1("结存金额")+r2("收入金额"))/(r1("结存数量")+r2("收入金额"))
        r2("出货金额")=r2("出货单价")*r2("出货数量")
        r2("结存数量")=r1("结存数量")+r2("收入数量")-r2("出货数量")
        r2("结存金额")=r1("结存金额")+r2("收入金额")-r2("出货金额")
    End If
Next

你这个应该可以,对查询表不错。

我玩的太复杂了,包括可以在楼主原表上的收入 和 出货可以在同一行输入、修改,甚至收入单价都可以修改,发现因此而产生的其他同品种所在的某行出货数量超标时都提示。当然还没完全完善··· 但基本可用了。


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/17 15:33:00 [显示全部帖子]

以下是引用狐狸爸爸在2012-5-17 14:39:00的发言:

 

呵呵,等你买了,我再涨价。

谢谢哈···

 

哈哈,(比蜗牛还慢,呵呵) 应该改为:(当时09年吧,比蜗牛还慢,呵呵


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/17 15:35:00 [显示全部帖子]

以下是引用hp001在2012-5-17 13:13:00的发言:
MR725我们一起买,狐爸有给折扣吗。

狐爸常说:都“白菜”价了,还打折??? 

我想除非你能再召集大批购买····  


 回到顶部