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