以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 获取不重复的对象属性后,怎么根据对象属性值去对应的遍历表中是否有符合条件的列,如果有就对应的计算值 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=179080) |
-- 作者:cnsjroom -- 发布时间:2022/8/6 11:01:00 -- 获取不重复的对象属性后,怎么根据对象属性值去对应的遍历表中是否有符合条件的列,如果有就对应的计算值 获取不重复的对象属性后,怎么根据对象属性值去对应的遍历表中是否有符合条件的列,如果有就对应的计算值 当前代码如下: Dim cmd As New SQL Command
输出值: 2022 |
-- 作者:有点蓝 -- 发布时间:2022/8/6 11:05:00 -- 表数据是怎么样的?希望得到什么结果? |
-- 作者:cnsjroom -- 发布时间:2022/8/6 11:27:00 -- 回复:(有点蓝)表数据是怎么样的?希望得到什么结果...
想实现红色部分的值通过Product 来对应到列名 并赋值给对应的列下 然后对应汇总 并根据年度值 按年度生成对应的数据行
Dim cmd As New SQLCommand
输出得到: 党政机关 党政机关_本年度 |
-- 作者:有点蓝 -- 发布时间:2022/8/6 11:51:00 -- 请上传实例测试 |
-- 作者:cnsjroom -- 发布时间:2022/8/6 11:58:00 -- 回复:(有点蓝)请上传实例测试 已初步实现,老师有没有办法简化代码提高运行效率呢?
当前代码如下:
Dim cmd As New SQLCommand cmd.CommandText ="Sel ect * From {巡察工作覆盖情况}"
|
-- 作者:有点蓝 -- 发布时间:2022/8/6 13:47:00 -- 试试 Dim cmd As New SQLCommand cmd.Connecti cmd.CommandText = "Select distinct 巡察对象属性 From {巡察工作安排}" Dim dt As DataTable dt = cmd.ExecuteReader() Dim Products As List(Of String) Products = dt.GetValues("巡察对象属性") Dim time As String = Date.today.Year Dim y As Integer = time \'指定年份 Dim time1 As New Date(y, 1, 1) Dim time2 As New Date(y, 12, 31) cmd.CommandText = "Select * From {巡察工作覆盖情况} where [_identify] = -1" Dim dt1 As DataTable dt1 = cmd.ExecuteReader(True) Dim bb As DataRow = dt1.AddNew Dim yxs As Integer Dim yxs1 As Integer Dim bnd As Integer For Each Product As String In Products Dim cl As String = Product & "_应巡数" Output.Show(cl) If dt1.DataCols.Contains(cl) Then cmd.CommandText = "Select Count(*) From {巡察对象信息} Where 巡察对象属性 = \'" & Product & "\'" Dim sl2 As Integer = cmd.ExecuteScalar If sl2 > 0 Then bb(cl) = sl2 yxs = yxs + sl2 End If End If cl = Product & "_已巡数" If dt1.DataCols.Contains(cl) Then cmd.CommandText = "Select Count(*) From {巡察工作安排} Where 巡察对象属性 = \'" & Product & "\'" Dim sl2 As Integer = cmd.ExecuteScalar If sl2 > 0 Then bb(cl) = sl2 yxs1 = yxs1 + sl2 End If End If cl = Product & "_本年度" If dt1.DataCols.Contains(cl) Then cmd.CommandText = "Select Count(*) From {巡察工作安排} Where 巡察对象属性 = \'" & Product & "\' and 巡察开始时间 >= \'" & time1 & "\' And 巡察开始时间 <= \'" & time2 & "\'" Dim sl2 As Integer = cmd.ExecuteScalar If sl2 > 0 Then bb(cl) = sl2 bnd = bnd + sl2 End If End If Next output.show(yxs) bb("总计_应巡数") = yxs bb("总计_已巡数") = yxs1 bb("总计_覆盖率") = bnd bb.save |
-- 作者:cnsjroom -- 发布时间:2022/8/12 18:20:00 -- 回复:(有点蓝)试试Dim cmd As New SQLCommandcmd.C... For Each Product As String In Products
比如巡察工作安排表中有如下记录: 巡察对象属性 巡察对象 事业单位 某某医院 企业单位 某某投资工资 企业单位 某某投资工资 统计数据的话 就只能算两个数据 不能计算为三个数据 [此贴子已经被作者于2022/8/12 18:30:25编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/8/13 8:34:00 -- 数据统计的结果肯定没有问题,如果有问题也是条件不对,或者数据有问题 |