Foxtable(狐表)用户栏目专家坐堂 → 有点甜老师,您再帮我看看,着急


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

主题:有点甜老师,您再帮我看看,着急

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


加好友 发短信
等级:幼狐 帖子:149 积分:1107 威望:0 精华:0 注册:2013/9/29 15:49:00
有点甜老师,您再帮我看看,着急  发帖心情 Post By:2014/3/6 19:25:00 [只看该作者]

今天测试,发现了一个问题,以前没有注意到。您在帮我看看怎么解决?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目.rar




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

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

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

工时核算的DATACOLCHANGING的代码是:

If e.DataCol.Name.StartsWith("工序") Then
    Dim filter As String = "产品名称 = '" & e.DataRow("产品名称") & "'"
    Dim fdr As DataRow = DataTables("产品信息").Find(filter)
    If fdr IsNot Nothing Then
        Dim fdr2 As DataRow  = DataTables("工时统计").Find(filter & " and 单号 = '" & e.DataRow("单号") & "'")
        If fdr2 Is Nothing Then
            fdr2 = DataTables("工时统计").AddNew
            fdr2("产品名称") = e.DataRow("产品名称")
            fdr2("日期") = e.DataRow("日期")
            fdr2("单号") = e.DataRow("单号")
            fdr2("数量") = e.DataRow("数量")
        Else
            For Each dc As DataCol In DataTables("工时统计").DataCols
                If dc.Name <> "日期" AndAlso dc.name <> "产品名称" AndAlso dc.name <> "单号" AndAlso dc.Name <> "数量" Then
                    fdr2(dc.name) = Nothing
                End If
            Next
        End If
        
        For Each dc As DataCol In e.DataTable.DataCols
            If dc.Name.StartsWith("工序") AndAlso e.DataRow(dc.name) > "" Then
                Dim names() As String = e.DataRow(dc.name).split(",")
                For Each name As String In names
                    Dim sum As Double = e.DataTable.Compute("sum(数量)", filter & " and 单号 = '" & e.DataRow("单号") & "' and " & dc.Name & " like '*" & name & "*'")
                    sum = sum * fdr(e.DataCol.Name)
                    If DataTables("工时统计").DataCols.Contains(name) Then
                        fdr2(name) += sum
                    End If
                Next
            End If
        Next
    Else
        msgbox("没有找到【产品信息】对应的数据!")
    End If
End If

只希望的是乘法关系,即数量乘以工时
[此贴子已经被作者于2014-3-6 23:10:58编辑过]

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


加好友 发短信
等级:幼狐 帖子:149 积分:1107 威望:0 精华:0 注册:2013/9/29 15:49:00
  发帖心情 Post By:2014/3/6 20:07:00 [只看该作者]

图片点击可在新窗口打开查看
[此贴子已经被作者于2014-3-6 20:13:29编辑过]

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


加好友 发短信
等级:幼狐 帖子:149 积分:1107 威望:0 精华:0 注册:2013/9/29 15:49:00
  发帖心情 Post By:2014/3/6 21:17:00 [只看该作者]

图片点击可在新窗口打开查看
[此贴子已经被作者于2014-3-6 22:58:21编辑过]

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


加好友 发短信
等级:幼狐 帖子:149 积分:1107 威望:0 精华:0 注册:2013/9/29 15:49:00
  发帖心情 Post By:2014/3/7 19:14:00 [只看该作者]

有点甜老师在吗?
每次选择人后,前面工序的值怎么都和本次值一样呀?
[此贴子已经被作者于2014-3-7 19:15:32编辑过]

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


加好友 发短信
等级:幼狐 帖子:149 积分:1107 威望:0 精华:0 注册:2013/9/29 15:49:00
  发帖心情 Post By:2014/3/7 19:48:00 [只看该作者]

图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/3/7 20:04:00 [只看该作者]

 呃,没看懂你的意思。不是每种工时的累加么?

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


加好友 发短信
等级:幼狐 帖子:149 积分:1107 威望:0 精华:0 注册:2013/9/29 15:49:00
  发帖心情 Post By:2014/3/7 20:23:00 [只看该作者]

有点甜老师您看


首先 产品信息表中,工时是给定的,不能更改。目的是要与数量相乘。

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



其次  在工时核算表中,对应的列(工序)中选择李军峰(有可能是多个人完成一个工序),在工时统计表中,李军峰得到的工时就是1乘以10=10

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


第三,选择石耀辉(他是完成打标的工作),所以石耀辉的工时应为2乘以10=20,但是,这时候,李军峰的值变了,变成石耀辉的工时值了。


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








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


加好友 发短信
等级:幼狐 帖子:149 积分:1107 威望:0 精华:0 注册:2013/9/29 15:49:00
  发帖心情 Post By:2014/3/7 20:23:00 [只看该作者]

然后您再看后面
图片点击可在新窗口打开查看此主题相关图片如下:5.jpg
图片点击可在新窗口打开查看




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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/3/7 20:53:00 [只看该作者]

 哦,你改一下代码

 

If e.DataCol.Name.StartsWith("工序") Then
    Dim filter As String = "产品名称 = '" & e.DataRow("产品名称") & "'"
    Dim fdr As DataRow = DataTables("产品信息").Find(filter)
    If fdr IsNot Nothing Then
        Dim fdr2 As DataRow  = DataTables("工时统计").Find(filter & " and 单号 = '" & e.DataRow("单号") & "'")
        If fdr2 Is Nothing Then
            fdr2 = DataTables("工时统计").AddNew
            fdr2("产品名称") = e.DataRow("产品名称")
            fdr2("日期") = e.DataRow("日期")
            fdr2("单号") = e.DataRow("单号")
            fdr2("数量") = e.DataRow("数量")
        Else
            For Each dc As DataCol In DataTables("工时统计").DataCols
                If dc.Name <> "日期" AndAlso dc.name <> "产品名称" AndAlso dc.name <> "单号" AndAlso dc.Name <> "数量" Then
                    fdr2(dc.name) = Nothing
                End If
            Next
        End If
       
        For Each dc As DataCol In DataTables("工时统计").DataCols
            If dc.Name.StartsWith("工序") Then
                fdr2(dc.Name) = Nothing
            End If
        Next

        For Each dc As DataCol In e.DataTable.DataCols
            If dc.Name.StartsWith("工序") AndAlso e.DataRow(dc.name) > "" Then
                Dim names() As String = e.DataRow(dc.name).split(",")
                For Each name As String In names
                    Dim sum As Double = e.DataTable.Compute("sum(数量)", filter & " and 单号 = '" & e.DataRow("单号") & "' and " & dc.Name & " like '*" & name & "*'")
                    sum = sum * fdr(dc.Name)
                    If DataTables("工时统计").DataCols.Contains(name) Then
                        fdr2(name) += sum
                    End If
                Next
            End If
        Next
    Else
        msgbox("没有找到【产品信息】对应的数据!")
    End If
End If


 回到顶部