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


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

主题:费用分摊、统计

帅哥哟,离线,有人找我吗?
狐狸爸爸
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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("统计")


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/21 7:56:00 [显示全部帖子]

我测试没有问题,如果不齐,具体举例说明。

 

 

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


 回到顶部