Foxtable(狐表)用户栏目专家坐堂 → 我想想,你们也帮我想想,复杂的数学逻辑题


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

主题:我想想,你们也帮我想想,复杂的数学逻辑题

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/26 14:13:00 [显示全部帖子]

 无语,不说哪里错,就请自行解决。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/28 14:13:00 [显示全部帖子]

1、集体分配、个人分配的情况,以前的代码已经告诉你了啊;

 

2、按比例分配参考下面的代码

 

Dim dt As DataTable = DataTables("打砂车间工资表")
For Each ary() As String In dt.GetValues("日期|生产形式", "日期 is not null and 生产形式 = '安比例分配'")
    Dim count_rs As Integer = dt.GetValues("姓名", "日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "'").count
    Dim drs_ds As List(Of DataRow) = dt.Select("日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "' and (备注 <> '机动' or 备注 is null)")
    Dim drs_jd As List(Of DataRow) = dt.Select("日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "' and 备注 = '机动'")
    Dim smoney As Double = dt.compute("sum(金额)", "日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "'")
    Dim bl As Double = 0
    If count_rs < 8 Then
        bl = 0.77
    Else
        bl = 0.74
    End If
    Dim stime As Double = dt.compute("sum(计件工时)", "日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "'and ( 备注 <> '机动' or 规格 is null)")
   
    For Each dr As DataRow In drs_ds
        dr("分配后金额") = dr("金额") * bl
    Next
   
    stime = dt.compute("sum(计件工时)", "日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "' and 备注 = '机动'")
    dim dj = smoney * (1-bl) / stime
    For Each dr As DataRow In drs_jd
        dr("分配后金额") = dj * dr("计件工时")
    Next
Next


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/28 16:12:00 [显示全部帖子]

Dim dt As DataTable = DataTables("打砂车间工资表")
For Each ary() As String In dt.GetValues("日期|生产形式", "日期 is not null and 生产形式 = '安比例分配'")
    Dim drs_ds As List(Of DataRow) = dt.Select("日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "' and (备注 <> '机动' or 规格 is null)")
    Dim drs_jd As List(Of DataRow) = dt.Select("日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "' and 备注 = '机动'")
    Dim bl As Double = 0
    If drs_ds.count + drs_jd.count < 8 Then
        bl = 0.77
    Else
        bl = 0.74
    End If
    Dim smoney As Double = dt.compute("sum(金额)", "日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "'")
    Dim stime As Double = dt.compute("sum(计件工时)", "日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "' and (备注 <> '机动' or 规格 is null)")
    Dim dj As Double = smoney * bl
    For Each dr As DataRow In drs_ds
        dr("分配后金额") = format(dj,"0.00")
    Next
    stime = dt.compute("sum(计件工时)", "日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "' and 备注 = '机动'")
    dj = iif(stime=0, 0, smoney * (1-bl) / stime)
    For Each dr As DataRow In drs_jd
        dr("分配后金额") = format(dj * dr("计件工时"),"0.00")
    Next
Next
For Each ary() As String In dt.GetValues("日期|生产形式", "日期 is not null and 生产形式 like '*直接分配*'")
    Dim drs As List(Of DataRow) = DataTables("打砂车间工资表").Select("日期=#" & ary(0)& "# and 生产形式='" & ary(1) & "'")
    Dim stime As Double = dt.compute("sum(计件工时)", "日期=#" & ary(0) & "# And 生产形式='" & ary(1) & "'")
    Dim ls As new List(Of String)
    Dim smoney As Double = dt.compute("sum(金额)", "日期=#" & ary(0) & "# and 生产形式='" & ary(1) & "'")
    Dim count As Integer = 0
    For Each dr As DataRow In drs
        Dim str As String = dr("姓名")
        If ls.Contains(str) = False Then
            count += 1
            ls.add(str)
            dr("备注") = dr("备注").replace("重复", Nothing)
        Else
            dr("备注") = "重复" & dr("备注").replace("重复", Nothing)
        End If
    Next
    For Each dr As DataRow In drs
        If dr("备注") Like "*重复*" Then
            dr("分配后金额") = Nothing
        Else
            dr("分配后金额") = format(smoney/count, "0.00")
        End If
    Next
Next
For Each dr As DataRow In DataTables("打砂车间工资表").Select("生产形式 = '个人'")
    dr("分配金额") = format(dr("数量") * dr("单价"),"0.00")
Next
[此贴子已经被作者于2016/2/28 17:14:41编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/28 17:14:00 [显示全部帖子]

按比例分配,请看35楼的代码

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/28 17:15:00 [显示全部帖子]

39楼测试也是没问题的,至少不报错。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/28 18:10:00 [显示全部帖子]

看35楼的代码,如果不对,然后举例说明哪里不对。

 

39楼,是上面的不对,还是下面的不对?要说明白。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/28 19:30:00 [显示全部帖子]

 叫你举例说明,你至少要说明正确的值应该是什么啊?!

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/28 19:35:00 [显示全部帖子]

我说的是39楼的问题。问题一个一个解决。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/29 9:31:00 [显示全部帖子]

以下是引用意悠心轻在2016/2/28 19:46:00的发言:
    我已经改过来了,你可以用计算机算一下验证,当天少于8个不重复人,打砂员工的分配工资是计件金额乘于77%,机动的是计件金额的23%除于机动人员计件工时之和乘该机动员工计件工时,否则打砂员工的分配工资是计件工资的74%,机动的是计件金额的26%除于机动人员计件工时之和乘该机动员工计件工时。

 

35楼的代码,一点都计算没有错。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/29 9:39:00 [显示全部帖子]

以下是引用意悠心轻在2016/2/29 9:16:00的发言:
    我的Table文件目录树更新,及安条件引用单价还是有问题,麻烦帮我看一下,文件上传在48楼。

 

1、

 

Select Case e.DataCol.name
    Case "规格", "备注"
        Dim fdr As DataRow = DataTables("价目表").find("规格 = '" & e.DataRow("规格") & "'")
        If fdr IsNot Nothing
           
            If e.DataRow("备注") Like "双面返工*" Then
                e.DataRow("单价") = fdr("单价") * 5
            ElseIf e.DataRow("备注") Like "*喷涂返工*" Then
                e.DataRow("单价") = fdr("单价") * 3
            ElseIf e.DataRow("备注") Like "*客户返工*" OrElse  e.DataRow("备注") Like "*双面打砂*" Then
                e.DataRow("单价") = fdr("单价") * 2
            Else
                e.DataRow("单价") = fdr("单价")
            End If
        End If
End Select

 

2、

 

Dim tb As New DropTreeBuilder
tb.SourceTable = DataTables("价目表") '指定目录树表
tb.TreeCols = "规格" '指定用于生成目录树的列
tb.SourceCols = "规格" '指定数据来源列
tb.ReceiveCols = "规格" '指定数据接收列

Tables("打砂车间工资表").Cols("规格").DropTree = tb.Build()


 回到顶部
总数 38 上一页 1 2 3 4 下一页