Foxtable(狐表)用户栏目专家坐堂 → 费用分摊、统计


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

主题:费用分摊、统计

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


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
费用分摊、统计  发帖心情 Post By:2011/3/20 10:42:00 [只看该作者]

 师傅你好:

1、在出单日期同一天内,按处理总量对运费进行自动分摊。

2、在开始日期和结束日期内,按用盘单位统计运输费用、处理费用。(我在录入窗口右下角已设日期输入框和统计按钮)

统计格式:

用盘单位   运输费用   处理费用   合计
中天日立

..........

..........

..........

合计

谢谢

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生产管理.rar


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/3/20 11:54:00 [只看该作者]

你最好把分摊和统计的公式列出来,别让人猜测嘛。

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


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
  发帖心情 Post By:2011/3/20 15:03:00 [只看该作者]

1、运费分摊:如:2011-01-04这一天,处理总量四行共5只,运费金额950元,

950/5=190,同一天处理总量列数量:2*190=380  1*190=190  1*190=190  1*190=190,也就是在运费分摊列从上向下显示:380 190 190 190

2:统计:是指从开始出单日期到结束出单日期的天数内,对同一个用盘单位分别汇总运输费用和处理费用,

列合计是指同一个用盘单位,运输费用和处理费用相加。

行合计是指各个用盘单位,运输费用相加、处理费用相加。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/20 16:53:00 [只看该作者]

运费分摊我帮你做好了,下面代码加粗的部分,就是计算运费分摊的:

 

Dim dr1 As DataRow = e.DataRow
Dim dr2 As DataRow
If e.DataCol.Name = "驾驶员" Then
    dr2 = DataTables("参数").Find("驾驶员 = " & "'" & dr1("驾驶员") & "'" )
    If dr2 IsNot Nothing '如果找到, 则设置各列内容
        dr1("车号")= dr2("车号")
        dr1("车长")= dr2("车长")
    End If
End If
Select Case e.DataCol.Name
    Case  "运输地点" ,"车号", "车长"
        dr2 = DataTables("参数").Find("运输地点 = " & "'" & dr1("运输地点") & "' And 车长 = '" & dr1("车长") & "' And 车号 = '" &  dr1("车号") & "'" )
        If dr2 IsNot Nothing '如果找到, 则设置各列内容
            dr1("运费")= dr2("运费")
        End If
    Case "出单日期","运费","处理总量"
         Dim drs As List(of DataRow) = e.DataTable.Select("出单日期 = #" & dr1("出单日期") & "#")
         Dim cnt As Integer = e.DataTable.Compute("sum(处理总量)", "出单日期 = #" & dr1("出单日期") & "#")
         Dim val As Double = e.DataTable.Compute("sum(运费)", "出单日期 = #" & dr1("出单日期") & "#") /cnt
         For Each dr As DataRow In drs
            dr("运费分摊") = val * dr("处理总量")
         Next
End Select
If e.DataCol.Name = "二次运输" Then
    dr2 = DataTables("参数").Find("驾驶员 = " & "'" & dr1("二次运输") & "'" )
    If dr2 IsNot Nothing '如果找到, 则设置各列内容
        dr1("二次车号")= dr2("车号")
        dr1("二次车长")= dr2("车长")
    End If
End If
Select Case e.DataCol.Name
    Case  "运送地点" ,"二次车号", "二次车长"
        dr2 = DataTables("参数").Find("运输地点 = " & "'" & dr1("运送地点") & "' And 车长 = '" & dr1("二次车长") & "' And 车号 = '" &  dr1("二次车号") & "'" )
        If dr2 IsNot Nothing '如果找到, 则设置各列内容
            dr1("二次运费")= dr2("运费")
        End If
End Select
Select Case e.DataCol.Name
    Case "处理方式","品种1","规格1"
        dr2 = DataTables("参数").Find("处理方式 = '" & dr1("处理方式") & "' And 产品名称 = '" & dr1("品种1") & "' And 产品规格 = '" & dr1("规格1") & "'")
        If dr2 IsNot Nothing Then
            dr1("单价1")  = dr2("报价")
        End If
End Select
Select Case e.DataCol.Name
    Case "处理方式","品种2","规格2"
        dr2 = DataTables("参数").Find("处理方式 = '" & dr1("处理方式") & "' And 产品名称 = '" & dr1("品种2") & "' And 产品规格 = '" & dr1("规格2") & "'")
        If dr2 IsNot Nothing Then
            dr1("单价2")  = dr2("报价")
        End If
End Select
Select Case e.DataCol.Name
    Case "处理方式","品种3","规格3"
        dr2 = DataTables("参数").Find("处理方式 = '" & dr1("处理方式") & "' And 产品名称 = '" & dr1("品种3") & "' And 产品规格 = '" & dr1("规格3") & "'")
        If dr2 IsNot Nothing Then
            dr1("单价3")  = dr2("报价")
        End If
End Select
Select Case e.DataCol.Name
    Case "处理方式","品种4","规格4"
        dr2 = DataTables("参数").Find("处理方式 = '" & dr1("处理方式") & "' And 产品名称 = '" & dr1("品种4") & "' And 产品规格 = '" & dr1("规格4") & "'")
        If dr2 IsNot Nothing Then
            dr1("单价4")  = dr2("报价")
        End If
End Select
Select Case e.DataCol.Name
    Case "处理方式","品种5","规格5"
        dr2 = DataTables("参数").Find("处理方式 = '" & dr1("处理方式") & "' And 产品名称 = '" & dr1("品种5") & "' And 产品规格 = '" & dr1("规格5") & "'")
        If dr2 IsNot Nothing Then
            dr1("单价5")  = dr2("报价")
        End If
End Select
Select Case e.DataCol.Name
    Case "处理方式","品种6","规格6"
        dr2 = DataTables("参数").Find("处理方式 = '" & dr1("处理方式") & "' And 产品名称 = '" & dr1("品种6") & "' And 产品规格 = '" & dr1("规格6") & "'")
        If dr2 IsNot Nothing Then
            dr1("单价6")  = dr2("报价")
        End If
End Select
Select Case e.DataCol.Name
    Case "处理方式","品种7","规格7"
        dr2 = DataTables("参数").Find("处理方式 = '" & dr1("处理方式") & "' And 产品名称 = '" & dr1("品种7") & "' And 产品规格 = '" & dr1("规格7") & "'")
        If dr2 IsNot Nothing Then
            dr1("单价7")  = dr2("报价")
        End If
End Select
Select Case e.DataCol.Name
    Case "处理方式","品种8","规格8"
        dr2 = DataTables("参数").Find("处理方式 = '" & dr1("处理方式") & "' And 产品名称 = '" & dr1("品种8") & "' And 产品规格 = '" & dr1("规格8") & "'")
        If dr2 IsNot Nothing Then
            dr1("单价8")  = dr2("报价")
        End If
End Select


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


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
  发帖心情 Post By:2011/3/20 17:20:00 [只看该作者]

师傅你好!

代码复制后,运费分摊列没有显示


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/20 17:22:00 [只看该作者]

至于统计,其实你不需要写代码的,筛选副某个日期范围内的行,然后用菜单分组统计即可。

如果你一定要写代码,新建一个窗口,插入两个日期输入框,一个按钮,按钮的代码设置为:

 

If e.Form.Controls("DateTimePicker1").Value Is Nothing OrElse e.Form.Controls("DateTimePicker2").Value Is Nothing Then
    MessageBox.Show("请输入起始日期和结束日期")
    Return
End If
Dim dtb As New DataTableBuilder("统计")
Dim Filter As String = "出单日期 >= #" & e.Form.Controls("DateTimePicker1").Value & "# And 出单日期 <= #" & e.Form.Controls("DateTimePicker2").Value & "#"
Dim nms As List(of String) = DataTables("出口处理").GetUniqueValues("","用盘单位")
Dim dr As Row
dtb.AddDef("用盘单位", Gettype(String), 32)
dtb.AddDef("运输费用", Gettype(Double))
dtb.AddDef("处理费用", Gettype(Double))
dtb.AddDef("合计", Gettype(Double))
dtb.Build()
For Each nm AS String In nms
    dr = Tables("统计").Addnew()
    dr("用盘单位") = nm
    dr("运输费用") = DataTables("出口处理").compute("Sum(运输费用)", "用盘单位 = '" & nm & "' And " & Filter)
    dr("处理费用") = DataTables("出口处理").compute("Sum(处理费用)", "用盘单位 = '" & nm & "' And " & Filter)
    dr("合计")  = dr("运输费用") + dr("处理费用")
Next
dr = Tables("统计").AddNew
dr("用盘单位") = "合计"
dr("运输费用") = DataTables("出口处理").compute("Sum(运输费用)",Filter)
dr("处理费用") = DataTables("出口处理").compute("Sum(处理费用)",Filter)
dr("合计")  = dr("运输费用") + dr("处理费用")
e.Form.Close
MainTable= Tables("统计")


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/20 17:25:00 [只看该作者]

以下是引用caoxy在2011-3-20 17:20:00的发言:

师傅你好!

代码复制后,运费分摊列没有显示

 

设置完成后,重置一下出单日期列即可,我测试是可以出来的。

至于为啥要重置某个参与计算的列,请看看:

 

http://help.foxtable.com/topics/1469.htm

 

其实狐表不算难的,在处理复杂问题的时候,比易表更容易。

建议你系统性地看看帮助,你会认同我的观点。


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


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
  发帖心情 Post By:2011/3/20 17:29:00 [只看该作者]

好的,谢谢


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


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
  发帖心情 Post By:2011/3/20 18:00:00 [只看该作者]

两个日期框要不要改变什么属性,和写什么代码,

我试验了,第一次输入开始的日期和结束日期,能够统计内容,再试增加两者之间的天数,统计的内容还是一样。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/20 18:30:00 [只看该作者]

如果你增加的那些天,本来就没有数据或者值,那么统计内容自然是一样的
[此贴子已经被作者于2011-3-20 18:29:52编辑过]

 回到顶部
总数 12 1 2 下一页