以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  多值分配统计问题,请老师指点  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=123765)

--  作者:dy6608
--  发布时间:2018/8/22 16:10:00
--  多值分配统计问题,请老师指点
多值分配统计问题,请老师指点
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:dy6608
--  发布时间:2018/8/22 16:35:00
--  
按钮中的代码:ElseIf lst1.Contains ("A") = True And  dr2("等级") <> 1只是定位到了姓名=“A”的产值,是个个案,要同时定位其它等级为1的姓名不知如何修改代码。


--  作者:有点蓝
--  发布时间:2018/8/22 16:35:00
--  
Dim dict As new Dictionary(of String,Double)
Dim level1 As List(Of String) = DataTables("员工表").GetValues("姓名","等级=\'1\'")
Dim v1 As new List(Of String)
Dim va As new List(Of String)
For Each r As Row In Tables("产值表").Rows
    If r.IsNull("xm") = False Then
        v1.Clear
        va.Clear
        For Each s As String In r("xm").split(",")
            If level1.Contains(s) Then
                v1.Add(s)
            Else
                va.Add(s)
            End If
        Next
        Dim cz As Double = r("cz")
        If v1.Count > 0 Then
            Dim kfp As Double = cz * 0.7
            If va.Count = 0 Then
                kfp = cz
            End If
            Dim fp As Double = kfp / v1.Count
            For Each yh As String In v1
                If dict.ContainsKey(yh) Then
                    dict(yh) = dict(yh) + fp
                Else
                    dict.Add(yh,fp)
                End If
            Next
        End If
        If va.Count > 0 Then
            Dim kfp As Double = cz * 0.3
            If v1.Count = 0 Then
                kfp = cz
            End If
            Dim fp As Double = kfp / va.Count
            For Each yh As String In va
                If dict.ContainsKey(yh) Then
                    dict(yh) = dict(yh) + fp
                Else
                    dict.Add(yh,fp)
                End If
            Next
        End If
    End If
Next

For Each key As String In dict.Keys
    Dim dr As DataRow = DataTables("产值分配").Find("姓名=\'" & key & "\'")
    If dr Is Nothing Then
        dr = DataTables("产值分配").AddNew
        dr("姓名") = key
    End If
    dr("产值") = dict(key)
Next

--  作者:dy6608
--  发布时间:2018/8/22 16:46:00
--  
谢老师,达到目的,代码有点抽象,好好理会消化