以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=47289)

--  作者:happly145
--  发布时间:2014/3/7 16:30:00
--  求助
产品信息表中数据式要计算的

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

选择人员后,数据直接计算出来。

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

问题是:


当选择第二个工序时,第一列工序的值发生了变化,和第二列一样

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

一次类推




--  作者:happly145
--  发布时间:2014/3/7 16:31:00
--  

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

[此贴子已经被作者于2014-3-7 16:31:16编辑过]

--  作者:Bin
--  发布时间:2014/3/7 16:34:00
--  
全部统一变3了这个意思是吧?
[此贴子已经被作者于2014-3-7 16:34:19编辑过]

--  作者:happly145
--  发布时间:2014/3/7 18:55:00
--  
这也是我想问的?3是数量乘以除油工序后等到的值,应该只附给杨明,李军峰和石耀辉不应该变化呀
--  作者:happly145
--  发布时间:2014/3/7 18:59:00
--  
我的问题是,我要统计每个人的工时(数量乘以工时标准)
[此贴子已经被作者于2014-3-7 19:07:05编辑过]

--  作者:happly145
--  发布时间:2014/3/7 19:08:00
--  
例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目.rar


--  作者:有点甜
--  发布时间:2014/3/7 20:54: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