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


  共有3433人关注过本帖平板打印复制链接

主题:传入的表格格式数据流(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编辑过]

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