Foxtable(狐表)用户栏目专家坐堂 → 关于月结表的小数计算问题


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

主题:关于月结表的小数计算问题

帅哥哟,离线,有人找我吗?
大红袍
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/20 14:08:00 [只看该作者]

不可能结果不对。上传实例。


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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2015/9/20 14:15:00 [只看该作者]

希望类似以下代码
Tables("材料月结").Cols("上月结存_金额").position = Tables("材料月结").Cols("本月结存_金额").Position - 1

to 11楼:以下是运算结果(错误) (你给的代码放在Button5按钮中)

图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2015/9/20 14:16:43编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2015/9/20 14:19:00 [只看该作者]

以下是"生成报表1"的按钮代码,红色的部分修改了一下,还是不行.(先运行生成报表1按钮,再运行Button 按钮)
DataTables("材料月结").DataRows.Clear
Dim Arys As List(Of String())
Arys = DataTables("材料明细").GetValues("月|材料分类|材料名称|型号规格","月 >= '" & e.Form.Controls("起始月").Text & "' And 月 <= '" & e.Form.Controls("截止月").Text & "' ")
For Each Ary As String() In Arys
    Dim r As Row = Tables("材料月结").AddNew
    r("月") = Ary(0)
    r("材料分类") = Ary(1)
    r("材料名称") = Ary(2)
    r("型号规格") = Ary(3)
Next
Dim dt As DataTable = DataTables("材料明细")
For Each dr As DataRow In DataTables("材料月结").DataRows
    Dim Filter As String = "材料分类 = '" & dr("材料分类") & "' and 材料名称 = '" & dr("材料名称") & "' and 型号规格 = '" & dr("型号规格") & "'"
    Dim Sum,Sum1,P As Double
    
    dr("本月入仓_数量") = dt.Compute("Sum(入仓数量)",Filter & " And 月 = '" & dr("月") & "'")
    dr("本月入仓_金额") = dt.Compute("Sum(入仓金额)",Filter & " And 月 = '" & dr("月") & "'")
    dr("本月出仓_数量") = dt.Compute("Sum(出仓数量)",Filter & " And 月 = '" & dr("月") & "'")
    dr("上月结存_数量") = dt.Compute("Sum(入仓数量)",Filter & " And 月 < '" & dr("月") & "'") - dt.Compute("Sum(出仓数量)",Filter & " And 月 < '" & dr("月") & "'")
    Sum = DataTables("材料明细").Compute("Sum(入仓金额)",Filter & " And 月 < '" & dr("月") & "'")
    Sum1 = DataTables("材料明细").Compute("Sum(入仓数量)",Filter & " And 月 < '" & dr("月") & "'")
    'dr("上月结存_金额") = Sum / Sum1 * dr("上月结存_数量")
    P = Sum / Sum1 * dr("上月结存_数量")
    dr("本月结存_数量") = dr("上月结存_数量") + dr("本月入仓_数量") - dr("本月出仓_数量")
    dr("本月加权平均单价") = (P + dr("本月入仓_金额"))/(dr("上月结存_数量") + dr("本月入仓_数量"))
    dr("本月出仓_金额") = dr("本月加权平均单价") * dr("本月出仓_数量")
    dr("本月结存_金额") = dr("本月加权平均单价") * dr("本月结存_数量")
    'dr("本月结存_金额") = dr("上月结存_金额") + dr("本月入仓_金额") - dr("本月出仓_金额") 
    

Next

[此贴子已经被作者于2015/9/20 14:20:04编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/20 14:41:00 [只看该作者]

DataTables("材料月结").DataRows.Clear
Dim Arys As List(Of String())
Arys = DataTables("材料明细").GetValues("月|材料分类|材料名称|型号规格","月 >= '" & e.Form.Controls("起始月").Text & "' And 月 <= '" & e.Form.Controls("截止月").Text & "' ")
For Each Ary As String() In Arys
    Dim r As Row = Tables("材料月结").AddNew
    r("月") = Ary(0)
    r("材料分类") = Ary(1)
    r("材料名称") = Ary(2)
    r("型号规格") = Ary(3)
Next
Dim dt As DataTable = DataTables("材料明细")
For Each dr As DataRow In DataTables("材料月结").DataRows
    Dim Filter As String = "材料分类 = '" & dr("材料分类") & "' and 材料名称 = '" & dr("材料名称") & "' and 型号规格 = '" & dr("型号规格") & "'"
    Dim Sum,Sum1,P As Double
   
    dr("本月入仓_数量") = dt.Compute("Sum(入仓数量)",Filter & " And 月 = '" & dr("月") & "'")
    dr("本月入仓_金额") = dt.Compute("Sum(入仓金额)",Filter & " And 月 = '" & dr("月") & "'")
    dr("本月出仓_数量") = dt.Compute("Sum(出仓数量)",Filter & " And 月 = '" & dr("月") & "'")
    dr("上月结存_数量") = dt.Compute("Sum(入仓数量)",Filter & " And 月 < '" & dr("月") & "'") - dt.Compute("Sum(出仓数量)",Filter & " And 月 < '" & dr("月") & "'")
    Sum = DataTables("材料明细").Compute("Sum(入仓金额)",Filter & " And 月 < '" & dr("月") & "'")
    Sum1 = DataTables("材料明细").Compute("Sum(入仓数量)",Filter & " And 月 < '" & dr("月") & "'")
   
    Dim pdr As DataRow = DataTables("材料月结").find(filter & " and 月 < '" & dr("月") & "'", "月 desc")
    If pdr IsNot Nothing Then
        dr("上月结存_金额") = pdr("上月结存_金额")
    End If

    dr("本月结存_数量") = dr("上月结存_数量") + dr("本月入仓_数量") - dr("本月出仓_数量")
    dr("本月加权平均单价") = (P + dr("本月入仓_金额"))/(dr("上月结存_数量") + dr("本月入仓_数量"))
    dr("本月出仓_金额") = dr("本月加权平均单价") * dr("本月出仓_数量")
    dr("本月结存_金额") = dr("本月加权平均单价") * dr("本月结存_数量")
    'dr("本月结存_金额") = dr("上月结存_金额") + dr("本月入仓_金额") - dr("本月出仓_金额")
   
   
   
Next

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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2015/9/20 14:49:00 [只看该作者]

计算结果还是不对

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/20 14:51:00 [只看该作者]

上传实例

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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2015/9/20 14:59:00 [只看该作者]

14楼的代码,我修改了两处:
1 加了   P = Sum / Sum1 * dr("上月结存_数量")
2 修改   dr("上月结存_金额") = pdr("月结存_金额")
计算结果如图 (接近要求,只是"上月结存_金额"第一行应该有数据,就像1楼图例)

图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2015/9/20 14:59:33编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/20 15:00:00 [只看该作者]

Dim pdr As DataRow = DataTables("材料月结").find(filter & " and 月 < '" & dr("月") & "'", "月 desc")
If pdr IsNot Nothing Then
    dr("上月结存_金额") = pdr("上月结存_金额")
Else
    dr("上月结存_金额") = Sum / Sum1 * dr("上月结存_数量")
End If

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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2015/9/20 15:14:00 [只看该作者]

搞定了,谢谢大红袍.

 回到顶部
总数 19 上一页 1 2