老师可否帮忙修正简化一下呢?
当前代码初步实现预期效果
代码如下:
Dim cmd As New SQ LC ommand
cmd.Connec tio nName = "主数据源"
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 = "SELE CT * 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 dr1 As DataRows =
'Dim Products1 As List(Of String())
'Products1 = dt.GetValues("测评对象|年度|季度|测评对象身份|职务职级|编制类型|操作人员|考核类型"," 测评对象='"& Product &"'")
'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("测评对象")=Product
'For Each Product12 As String In Products12 '遍历所获取得到的委领导名字,然后去查找所有测评对象中 操作人员是委领导名字的数据
'dr("年度")=Product1(1)
'dr("季度")=Product1(2)
'dr("测评对象身份")=Product1(3)
'dr("职务职级")=Product1(4)
'dr("编制类型")=Product1(5)
'dr("考核类型")=Product1(7)
dr("是否完成")="已完成"
'If Product1(6) = Product12 Then '如果操作人员等于委领导人员
output.show("测评对象 = '"& Product &"' and 所属部门='委领导'")
cnt = dt.Compute("Count([好])", "测评对象 = '"& Product &"' and 所属部门='委领导'") '如果操作人员属于委领导,则将对应的好等次的数据 计算为A好里面的
output.show(cnt)
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 所属部门='委领导'")
If cnt1>0 Then
dr("A较好")=cnt1
'output.show("A较好" & cnt1)
Else
dr("A较好")=Nothing
End If
cnt2 = dt.Compute("Count([一般])", "测评对象 = '"& Product &"' and 所属部门='委领导'")
If cnt2>0 Then
dr("A一般")=cnt2
Else
dr("A一般")=Nothing
End If
cnt3 = dt.Compute("Count([较差])", "测评对象 = '"& Product &"' and 所属部门='委领导'")
If cnt3>0 Then
dr("A较差")=cnt3
Else
dr("A较差")=Nothing
End If
'Else '如果操作人员不等于委领导人员
cnt11 = dt.Compute("Count([好])", "测评对象 = '"& Product &"' and 所属部门<>'委领导'") '如果操作人员不属于委领导,则将对应的好等次的数据 计算为B好里面的
If cnt11>0 Then
dr("B好")=cnt11
'output.show("B好" & cnt11)
'output.show(dr("B好"))
Else
dr("B好")=Nothing
End If
cnt111 = dt.Compute("Count([较好])", "测评对象 = '"& Product &"' and 所属部门<>'委领导'")
If cnt111>0 Then
dr("B较好")=cnt111
Else
dr("B较好")=Nothing
End If
cnt112 = dt.Compute("Count([一般])", "测评对象 = '"& Product &"' and 所属部门<>'委领导'")
If cnt112>0 Then
dr("B一般")=cnt112
Else
dr("B一般")=Nothing
End If
cnt113 = dt.Compute("Count([较差])", "测评对象 = '"& Product &"' and 所属部门<>'委领导'")
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
[此贴子已经被作者于2023/1/6 15:30:34编辑过]