Foxtable(狐表)用户栏目专家坐堂 → 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确


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

主题:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确  发帖心情 Post By:2023/1/6 11:56:00 [只看该作者]

传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确

想实现:从干部平时考核民主测评表中获取数据并汇总

如果操作人员所属部门是委领导,那么就将该领导对应测评对象给出的考评等次统计到A开头的 好  较好  一般 较差里面 

如果操作人员所属部门不是委领导,那么就将该操作人员对应测评对象给出的考评等次统计到B开头的 好  较好  一般 较差里面 

然后将A开头的 好  较好  一般 较差与B开头的 好  较好  一般 较差  数值统计到对应的  好  较好  一般  较差等次里面汇总

最后根据算法计算总分

 

当前代码运行出现原本只有50个人员参加考核   96个操作人员   结果生成的数据达到4000多条

怎么确保数据只有50条呢?也就是有多少个人员参加考核就生成多少条数据,然后对应的将好  较好 一般 较差统计在这个人员名下

 

当前代码如下:

Dim cmd As New S QLCommand
cmd.Conne ctio nName = "主数据源"
Dim dt,dt1,dt12 As DataTable

cmd.CommandText = "delet e {干部平时考核民主测评汇总表}"    '运行之前先清空  干部平时考核民主测评汇总表
cmd.ExecuteReader
cmd.CommandText = "SEL ECT * From {干部平时考核民主测评表}"
dt = cmd.ExecuteReader()
cmd.CommandText = "SEL ECT * From {干部平时考核民主测评汇总表}"
dt1 = cmd.ExecuteReader(True)
cmd.CommandText = "SEL ECT * From {干部台账} where 所属部门='委领导'"
dt12 = cmd.ExecuteReader()

Dim Products As List(Of String)
Products = dt.GetValues("测评对象","测评对象<>''")   '从干部平时考核民主测评表中获取测评对象  不重复值

Dim Products12 As List(Of String)
Products12 = dt12.GetValues("姓名","姓名<>''")  '从干部台账中获取所属部门属于委领导的姓名 不重复值

Dim cnt,cnt1,cnt2,cnt3,cnt4,cnt5 As Integer
Dim cnt11,cnt111,cnt112,cnt113,cnt114,cnt115 As Integer

For Each Product12 As String In Products12    '遍历所获取得到的委领导名字,然后去查找所有测评对象中   操作人员是委领导名字的数据
    For Each Product As String In Products   '遍历所有测评对象值,
        Output.Show(Product)
        Dim Products1 As List(Of String())
        Products1 = dt.GetValues("测评对象|年度|季度|测评对象身份|职务职级|编制类型|操作人员|考核类型"," 测评对象='"& Product &"' ")   'and操作人员='"& Product12 &"'
        For Each Product1 As String() In Products1
            Output.Show(Product1(0)&Product1(1)&Product1(2))
            Dim dr  As  DataRow
            dr =dt1.AddNew
            dr("guid")=System.Guid.NewGuid().ToString()
            dr("测评对象")=Product1(0)
            dr("年度")=Product1(1)
            dr("季度")=Product1(2)
            dr("测评对象身份")=Product1(3)
            dr("职务职级")=Product1(4)
            dr("编制类型")=Product1(5)
            dr("考核类型")=Product1(7)
            dr("是否完成")="已完成"
            If Product1(6) = Product12  Then    '如果操作人员等于委领导人员
               
                cnt = dt.Compute("Count([好])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")    '如果操作人员属于委领导,则将对应的好等次的数据 计算为A好里面的
                If cnt>0 Then
                    dr("A好")=cnt
                Else
                    dr("A好")=Nothing
                End If
                cnt1 = dt.Compute("Count([较好])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")
                If cnt1>0 Then
                    dr("A较好")=cnt1
                Else
                    dr("A较好")=Nothing
                End If
                cnt2 = dt.Compute("Count([一般])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")
                If cnt2>0 Then
                    dr("A一般")=cnt2
                Else
                    dr("A一般")=Nothing
                End If
                cnt3 = dt.Compute("Count([较差])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")
                If cnt3>0 Then
                    dr("A较差")=cnt3
                Else
                    dr("A较差")=Nothing
                End If
               
            Else  '如果操作人员不等于委领导人员
               
                cnt11 = dt.Compute("Count([好])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")  '如果操作人员不属于委领导,则将对应的好等次的数据 计算为B好里面的
                If cnt11>0 Then
                    dr("B好")=cnt11
                Else
                    dr("B好")=Nothing
                End If
                cnt111 = dt.Compute("Count([较好])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")
                If cnt111>0 Then
                    dr("B较好")=cnt111
                Else
                    dr("B较好")=Nothing
                End If
                cnt112 = dt.Compute("Count([一般])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")
                If cnt112>0 Then
                    dr("B一般")=cnt112
                Else
                    dr("B一般")=Nothing
                End If
                cnt113 = dt.Compute("Count([较差])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")
                If cnt113>0 Then
                    dr("B较差")=cnt113
                Else
                    dr("B较差")=Nothing
                End If
               
            End If
            '计算好 较好  一般   较差 总数据
            dr("好")=dr("A好")+dr("B好")
            dr("较好")=dr("A较好")+dr("B较好")
            dr("一般")=dr("A一般")+dr("B一般")
            dr("较差")=dr("A较差")+dr("B较差")
           
            '计算总分  分别按照好1?较好0.8?一般0.6?弃权0.3的权重对应piao数,计算班子成员投piao总数+一般干部职工投piao总数之和除2来获取当前考核总分,并以总分进行从高到低顺序排名,获取考核结果.
            'If cnt3 >1 Then  '如果存在较差数据,则总分直接为零
            'dr("备注")=0
            'Else
            dr("总分")= (((cnt*1+cnt1*0.8+cnt2*0.6+cnt3*0.3)/cnt4*100)+((cnt11*1+cnt111*0.8+cnt112*0.6+cnt113*0.3)/cnt114*100))/2
            'End If
           
            dr.save
        Next
    Next
Next

[此贴子已经被作者于2023/1/6 12:01:44编辑过]

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/6 12:05:00 [只看该作者]

调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)调试技巧:http://www.foxtable.com/...  发帖心情 Post By:2023/1/6 13:22:00 [只看该作者]

已解决:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确

 

想实现:从干部平时考核民主测评表中获取数据并汇总

如果操作人员所属部门是委领导,那么就将该领导对应测评对象给出的考评等次统计到A开头的 好  较好  一般 较差里面 

如果操作人员所属部门不是委领导,那么就将该操作人员对应测评对象给出的考评等次统计到B开头的 好  较好  一般 较差里面 

然后将A开头的 好  较好  一般 较差与B开头的 好  较好  一般 较差  数值统计到对应的  好  较好  一般  较差等次里面汇总

最后根据算法计算总分

 

【当前代码运行耗时较长,且存在假死现象】

当前代码运行出现原本只有50个人员参加考核   96个操作人员   结果生成的数据达到4000多条

怎么确保数据只有50条呢?也就是有多少个人员参加考核就生成多少条数据,然后对应的将好  较好 一般 较差统计在这个人员名下

 

当前代码如下:

Dim cmd As New SQ LC ommand
cmd.Conn ecti onN ame = "主数据源"
Dim dt,dt1,dt12 As DataTable

cmd.CommandText = "dele te {干部平时考核民主测评汇总表}"    '运行之前先清空  干部平时考核民主测评汇总表
cmd.ExecuteReader
cmd.CommandText = "SEL ECT * From {干部平时考核民主测评表}"
dt = cmd.ExecuteReader()
cmd.CommandText = "SEL ECT * From {干部平时考核民主测评汇总表}"
dt1 = cmd.ExecuteReader(True)
cmd.CommandText = "SEL ECT * From {干部台账} where 所属部门='委领导'"
dt12 = cmd.ExecuteReader()

Dim Products As List(Of String)
Products = dt.GetValues("测评对象","测评对象<>''")   '从干部平时考核民主测评表中获取测评对象  不重复值

Dim Products12 As List(Of String)
Products12 = dt12.GetValues("姓名","姓名<>''")  '从干部台账中获取所属部门属于委领导的姓名 不重复值

Dim cnt,cnt1,cnt2,cnt3,cnt4,cnt5 As Integer
Dim cnt11,cnt111,cnt112,cnt113,cnt114,cnt115 As Integer

For Each Product12 As String In Products12    '遍历所获取得到的委领导名字,然后去查找所有测评对象中   操作人员是委领导名字的数据
    For Each Product As String In Products   '遍历所有测评对象值,
        Output.Show(Product)
        Dim Products1 As List(Of String())
        Products1 = dt.GetValues("测评对象|年度|季度|测评对象身份|职务职级|编制类型|操作人员|考核类型")  '," 测评对象='"& Product &"' and操作人员='"& Product12 &"'")   
        For Each Product1 As String() In Products1
            Output.Show(Product1(0)&Product1(1)&Product1(2))
            Dim dr  As  DataRow
            dr =dt1.AddNew
            dr("guid")=System.Guid.NewGuid().ToString()
            dr("测评对象")=Product1(0)
            dr("年度")=Product1(1)
            dr("季度")=Product1(2)
            dr("测评对象身份")=Product1(3)
            dr("职务职级")=Product1(4)
            dr("编制类型")=Product1(5)
            dr("考核类型")=Product1(7)
            dr("是否完成")="已完成"
            If Product1(6) = Product12  Then    '如果操作人员等于委领导人员
               
                cnt = dt.Compute("Count([好])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")    '如果操作人员属于委领导,则将对应的好等次的数据 计算为A好里面的
                If cnt>0 Then
                    dr("A好")=cnt
                Else
                    dr("A好")=Nothing
                End If
                cnt1 = dt.Compute("Count([较好])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")
                If cnt1>0 Then
                    dr("A较好")=cnt1
                Else
                    dr("A较好")=Nothing
                End If
                cnt2 = dt.Compute("Count([一般])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")
                If cnt2>0 Then
                    dr("A一般")=cnt2
                Else
                    dr("A一般")=Nothing
                End If
                cnt3 = dt.Compute("Count([较差])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")
                If cnt3>0 Then
                    dr("A较差")=cnt3
                Else
                    dr("A较差")=Nothing
                End If
               
            Else  '如果操作人员不等于委领导人员
               
                cnt11 = dt.Compute("Count([好])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")  '如果操作人员不属于委领导,则将对应的好等次的数据 计算为B好里面的
                If cnt11>0 Then
                    dr("B好")=cnt11
                Else
                    dr("B好")=Nothing
                End If
                cnt111 = dt.Compute("Count([较好])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")
                If cnt111>0 Then
                    dr("B较好")=cnt111
                Else
                    dr("B较好")=Nothing
                End If
                cnt112 = dt.Compute("Count([一般])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")
                If cnt112>0 Then
                    dr("B一般")=cnt112
                Else
                    dr("B一般")=Nothing
                End If
                cnt113 = dt.Compute("Count([较差])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")
                If cnt113>0 Then
                    dr("B较差")=cnt113
                Else
                    dr("B较差")=Nothing
                End If
               
            End If
            '
            '计算好 较好  一般   较差 总数据
            dr("好")=dr("A好")+dr("B好")
            dr("较好")=dr("A较好")+dr("B较好")
            dr("一般")=dr("A一般")+dr("B一般")
            dr("较差")=dr("A较差")+dr("B较差")
            cnt4=9
            cnt114=87
            '计算总分  分别按照好1?较好0.8?一般0.6?弃权0.3的权重对应piao数,计算班子成员投piao总数+一般干部职工投piao总数之和除2来获取当前考核总分,并以总分进行从高到低顺序排名,获取考核结果.
            'If cnt3 >1 Then  '如果存在较差数据,则总分直接为零
            'dr("备注")=0
            'Else
            Dim i1 As Integer= ((dr("A好")*1)+(dr("A较好")*0.8)+(dr("A一般")*0.6)+(cnt3*0.3))/(cnt4*100)
            Dim i2 As Integer= ((dr("B好")*1)+(dr("B较好")*0.8)+(dr("B一般")*0.6)+(cnt113*0.3))/(cnt114*100)
            'dr("总分")= (i1+i2)/2
            dr("总分")=((((dr("A好")*1)+(dr("A较好")*0.8)+(dr("A一般")*0.6)+(cnt3*0.3))/(cnt4*100))+(((dr("B好")*1)+(dr("B较好")*0.8)+(dr("B一般")*0.6)+(cnt113*0.3))/(cnt114*100)))/2
            'End If
           
            dr.save
        Next
    Next
Next

[此贴子已经被作者于2023/1/6 13:30:19编辑过]

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/6 13:33:00 [只看该作者]

这50个人员都是哪个表哪个列的数据,就遍历这50个人就行了,看上面代码嵌套了n多层的for循环代码

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)这50个人员都是哪个表哪个列的数据,...  发帖心情 Post By:2023/1/6 13:58:00 [只看该作者]

当前代码如下:  当前运行后会生成50*96=480条记录    麻烦老师指导下  哪个循环弄重复了  

Dim cmd As New SQL Co mmand
cmd.Connect ion Name = "主数据源"
Dim dt,dt1,dt12 As DataTable

cmd.CommandText = "del  ete {干部平时考核民主测评汇总表}"    '运行之前先清空  干部平时考核民主测评汇总表
cmd.ExecuteReader
cmd.CommandText = "SELE CT * From {干部平时考核民主测评表}"      ‘50个人员名单是从这个表中获取的不重复姓名值’
dt = cmd.ExecuteReader()
cmd.CommandText = "SELE CT * From {干部平时考核民主测评汇总表}"   然后要将50个人员名单生成一个汇总表,每个人员对应的有96个操作人员,其中有9个是委领导
dt1 = cmd.ExecuteReader(True)
cmd.CommandText = "SELE CT * From {干部台账} where 所属部门='委领导'"   ‘这里获取9个委领导的不重复值’
dt12 = cmd.ExecuteReader()

Dim Products As List(Of String)
Products = dt.GetValues("测评对象")   '从干部平时考核民主测评表中获取测评对象  不重复值

Dim Products12 As List(Of String)
Products12 = dt12.GetValues("姓名","姓名<>''")  '从干部台账中获取所属部门属于委领导的姓名 不重复值

Dim cnt,cnt1,cnt2,cnt3,cnt4,cnt5 As Integer
Dim cnt11,cnt111,cnt112,cnt113,cnt114,cnt115 As Integer

For Each Product12 As String In Products12    '遍历所获取得到的委领导名字,然后去查找所有测评对象中   操作人员是委领导名字的数据
    For Each Product As String In Products   '遍历所有测评对象值,
        Output.Show(Product)
       
        Dim Products1 As List(Of String())
        Products1 = dt.GetValues("测评对象|年度|季度|测评对象身份|职务职级|编制类型|操作人员|考核类型"," 测评对象='"& Product &"' and 操作人员='"& Product12 &"'")
        For Each Product1 As String() In Products1
            Output.Show(Product1(0)&Product1(1)&Product1(2))
            Dim dr  As  DataRow
            dr =dt1.AddNew
            dr("guid")=System.Guid.NewGuid().ToString()
            dr("测评对象")=Product1(0)
            dr("年度")=Product1(1)
            dr("季度")=Product1(2)
            dr("测评对象身份")=Product1(3)
            dr("职务职级")=Product1(4)
            dr("编制类型")=Product1(5)
            dr("考核类型")=Product1(7)
            dr("是否完成")="已完成"
            If Product1(6) = Product12  Then    '如果操作人员等于委领导人员
               
                cnt = dt.Compute("Count([好])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")    '如果操作人员属于委领导,则将对应的好等次的数据 计算为A好里面的
                If cnt>0 Then
                    dr("A好")=cnt
                Else
                    dr("A好")=Nothing
                End If
                cnt1 = dt.Compute("Count([较好])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")
                If cnt1>0 Then
                    dr("A较好")=cnt1
                Else
                    dr("A较好")=Nothing
                End If
                cnt2 = dt.Compute("Count([一般])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")
                If cnt2>0 Then
                    dr("A一般")=cnt2
                Else
                    dr("A一般")=Nothing
                End If
                cnt3 = dt.Compute("Count([较差])", "测评对象 = '"& Product1(0) &"' and 操作人员='"& Product12 &"'")
                If cnt3>0 Then
                    dr("A较差")=cnt3
                Else
                    dr("A较差")=Nothing
                End If
               
            Else  '如果操作人员不等于委领导人员
               
                cnt11 = dt.Compute("Count([好])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")  '如果操作人员不属于委领导,则将对应的好等次的数据 计算为B好里面的
                If cnt11>0 Then
                    dr("B好")=cnt11
                Else
                    dr("B好")=Nothing
                End If
                cnt111 = dt.Compute("Count([较好])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")
                If cnt111>0 Then
                    dr("B较好")=cnt111
                Else
                    dr("B较好")=Nothing
                End If
                cnt112 = dt.Compute("Count([一般])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")
                If cnt112>0 Then
                    dr("B一般")=cnt112
                Else
                    dr("B一般")=Nothing
                End If
                cnt113 = dt.Compute("Count([较差])", "测评对象 = '"& Product1(0) &"' and 操作人员<>'"& Product12 &"'")
                If cnt113>0 Then
                    dr("B较差")=cnt113
                Else
                    dr("B较差")=Nothing
                End If
               
            End If
            '
            '计算好 较好  一般   较差 总数据
            dr("好")=dr("A好")+dr("B好")
            dr("较好")=dr("A较好")+dr("B较好")
            dr("一般")=dr("A一般")+dr("B一般")
            dr("较差")=dr("A较差")+dr("B较差")
            cnt4=9
            cnt114=87
            '计算总分  分别按照好1?较好0.8?一般0.6?弃权0.3的权重对应piao数,计算班子成员投piao总数+一般干部职工投piao总数之和除2来获取当前考核总分,并以总分进行从高到低顺序排名,获取考核结果.
            'If cnt3 >1 Then  '如果存在较差数据,则总分直接为零
            'dr("备注")=0
            'Else
            Dim i1 As Integer= ((dr("A好")*1)+(dr("A较好")*0.8)+(dr("A一般")*0.6)+(cnt3*0.3))/(cnt4*100)
            Dim i2 As Integer= ((dr("B好")*1)+(dr("B较好")*0.8)+(dr("B一般")*0.6)+(cnt113*0.3))/(cnt114*100)
            'dr("总分")= (i1+i2)/2
            dr("总分")=((((dr("A好")*1)+(dr("A较好")*0.8)+(dr("A一般")*0.6)+(cnt3*0.3))/(cnt4*100))+(((dr("B好")*1)+(dr("B较好")*0.8)+(dr("B一般")*0.6)+(cnt113*0.3))/(cnt114*100)))/2
            'End If
           
            'dr.save
        Next
    Next
Next
dt1.Save

 


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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/6 14:09:00 [只看该作者]

没看懂这个业务逻辑。既然只有50个,就遍历这50个,遍历96个是干嘛用的

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)没看懂这个业务逻辑。既然只有50个,...  发帖心情 Post By:2023/1/6 14:50:00 [只看该作者]

经过调整  现在只生成52条数据了   但是A好 A较好  A一般  A较差不能写值到数据表   代码中红色部分  输出的结果有值   但是就不见写入对应的A好 A较好  A一般  A较差列值,相应的写入了B好 B较好  B一般  B较差列值中,  总数 好  较好  一般  较差  数值又对的   怎么解决A好 A较好  A一般  A较差没有写入值呢?

 

 

如果注释掉蓝色部分  A好 A较好  A一般  A较差  B好 B较好  B一般  B较 的及  好  较好  一般  较差 全部没有数据

当前代码如下:

Dim cmd As New SQ LC ommand
cmd.Connect ion Name = "主数据源"
Dim dt,dt1,dt12 As DataTable

cmd.CommandText = "dele te {干部平时考核民主测评汇总表}"    '运行之前先清空  干部平时考核民主测评汇总表
cmd.ExecuteReader
cmd.CommandText = "SEL ECT * From {干部平时考核民主测评表}"
dt = cmd.ExecuteReader()
cmd.CommandText = "SEL ECT * From {干部平时考核民主测评汇总表}"
dt1 = cmd.ExecuteReader(True)
cmd.CommandText = "SEL ECT * From {干部台账} where 所属部门='委领导'"
dt12 = cmd.ExecuteReader()

Dim Products As List(Of String)
Products = dt.GetValues("测评对象")   '从干部平时考核民主测评表中获取测评对象  不重复值

Dim Products12 As List(Of String)
Products12 = dt12.GetValues("姓名","姓名<>''")  '从干部台账中获取所属部门属于委领导的姓名 不重复值

Dim cnt,cnt1,cnt2,cnt3,cnt4,cnt5 As Integer
Dim cnt11,cnt111,cnt112,cnt113,cnt114,cnt115 As Integer


For Each Product As String In Products   '遍历所有测评对象值,
    Output.Show(Product)
    Dim dr  As  DataRow
    dr =dt1.AddNew
    dr("guid")=System.Guid.NewGuid().ToString()
    dr("测评对象")=Product
    For Each Product12 As String In Products12    '遍历所获取得到的委领导名字,然后去查找所有测评对象中   操作人员是委领导名字的数据
        dr("是否完成")="已完成"

        cnt = dt.Compute("Count([好])", "测评对象 = '"& Product &"' and 操作人员='"& Product12 &"'")    '如果操作人员属于委领导,则将对应的好等次的数据 计算为A好里面的
        If cnt>0 Then
            dr("A好")=cnt
            output.show("A好" & cnt)
            output.show(dr("A好"))

        Else
            dr("A好")=Nothing
        End If
        cnt1 = dt.Compute("Count([较好])", "测评对象 = '"& Product  &"' and 操作人员='"& Product12 &"'")
        If cnt1>0 Then
            dr("A较好")=cnt1
            output.show("A较好" & cnt1)
        Else
            dr("A较好")=Nothing
        End If
        cnt2 = dt.Compute("Count([一般])", "测评对象 = '"& Product  &"' and 操作人员='"& Product12 &"'")
        If cnt2>0 Then
            dr("A一般")=cnt2
        Else
            dr("A一般")=Nothing
        End If
        cnt3 = dt.Compute("Count([较差])", "测评对象 = '"& Product  &"' and 操作人员='"& Product12 &"'")
        If cnt3>0 Then
            dr("A较差")=cnt3
        Else
            dr("A较差")=Nothing
        End If
       
        'Else  '如果操作人员不等于委领导人员
       
        cnt11 = dt.Compute("Count([好])", "测评对象 = '"& Product  &"' and 操作人员<>'"& Product12 &"'")  '如果操作人员不属于委领导,则将对应的好等次的数据 计算为B好里面的
        If cnt11>0 Then
            dr("B好")=cnt11
        Else
            dr("B好")=Nothing
        End If
        cnt111 = dt.Compute("Count([较好])", "测评对象 = '"& Product  &"' and 操作人员<>'"& Product12 &"'")
        If cnt111>0 Then
            dr("B较好")=cnt111
        Else
            dr("B较好")=Nothing
        End If
        cnt112 = dt.Compute("Count([一般])", "测评对象 = '"& Product  &"' and 操作人员<>'"& Product12 &"'")
        If cnt112>0 Then
            dr("B一般")=cnt112
        Else
            dr("B一般")=Nothing
        End If
        cnt113 = dt.Compute("Count([较差])", "测评对象 = '"& Product  &"' and 操作人员<>'"& Product12 &"'")
        If cnt113>0 Then
            dr("B较差")=cnt113
        Else
            dr("B较差")=Nothing
        End If

        

        '计算好 较好  一般   较差 总数据
        dr("好")=dr("A好")+dr("B好")
        dr("较好")=dr("A较好")+dr("B较好")
        dr("一般")=dr("A一般")+dr("B一般")
        dr("较差")=dr("A较差")+dr("B较差")
        cnt4=9
        cnt114=87
        '计算总分  分别按照好1?较好0.8?一般0.6?弃权0.3的权重对应piao数,计算班子成员投piao总数+一般干部职工投piao总数之和除2来获取当前考核总分,并以总分进行从高到低顺序排名,获取考核结果.
        Dim i1 As Integer= (((dr("A好")*1)+(dr("A较好")*0.8)+(dr("A一般")*0.6)+(cnt3*0.3))/cnt4)*100
        Dim i2 As Integer= (((dr("B好")*1)+(dr("B较好")*0.8)+(dr("B一般")*0.6)+(cnt113*0.3))/cnt114)*100
        dr("总分")= (i1+i2)/2
        
        dr.save
        'Next
    Next
Next

 

[此贴子已经被作者于2023/1/6 14:55:13编辑过]

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/6 14:55:00 [只看该作者]

说明没有符号条件的数据
msgbox("测评对象 = '"& Product &"' and 操作人员='"& Product12 &"'")
cnt = dt.Compute("Count([好])", "测评对象 = '"& Product &"' and 操作人员='"& Product12 &"'")    '如果操作人员属于委领导,则将对应的好等次的数据 计算为A好里面的
msgbox(cnt)
        If cnt>0 Then
            dr("A好")=cnt
            output.show("A好" & cnt)
            output.show(dr("A好"))

        Else
            dr("A好")=Nothing
        End If

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)说明没有符号条件的数据msgbox("测评...  发帖心情 Post By:2023/1/6 15:05:00 [只看该作者]

输出时有值的呢  就是不写表……

 


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

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/6 15:08:00 [只看该作者]

应该还是遍历的问题。不管Products12有多少个,其实只有最后有一个有效,因为写的都是同一个单元格

For Each Product12 As String In Products12

 回到顶部
总数 14 1 2 下一页