以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何遍历来源表:问题反馈与整改,如果有符合条件的数据行那就再次判断目标表:反馈问题清单 中是否有存在的数据行 如果有 那就删除,如果不存在那就新增数据行 然后并保存  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=179177)

--  作者:cnsjroom
--  发布时间:2022/8/11 15:24:00
--  如何遍历来源表:问题反馈与整改,如果有符合条件的数据行那就再次判断目标表:反馈问题清单 中是否有存在的数据行 如果有 那就删除,如果不存在那就新增数据行 然后并保存

如何遍历来源表:问题反馈与整改,如果有符合条件的数据行

那就再次判断目标表:反馈问题清单  中是否有存在的数据行  如果有  那就删除,如果不存在那就新增数据行 然后并保存

 

当前代码如下:【没有正常运行完毕,麻烦老师帮忙看看!】

Dim cmd As SQ LCo mmand
cmd.Connecti
cmd.CommandText = "s ele ct * from 问题反馈与整改 where 巡察组=\'" & e.Values("巡察组") & "\' and  被巡单位=\'" & e.Values("被巡单位") & "\' and 巡察届别=\'" & e.Values("巡察届别") & "\' and 巡察轮次=\'" & e.Values("巡察轮次") & "\'"
If cmd.ExecuteScalar > 0 Then
    Dim cmd1 As SQ L Command 

    cmd1.Connecti

    cmd1.CommandText = "s ele ct * from 反馈问题清单 where 巡察组=\'" & e.Values("巡察组") & "\' and  被巡单位=\'" & e.Values("被巡单位") & "\' and 巡察届别=\'" & e.Values("巡察届别") & "\' and 巡察轮次=\'" & e.Values("巡察轮次") & "\'"
    If cmd1.ExecuteScalar > 0 Then
        cmd1.CommandText = "DE LETE FROM {反馈问题清单} WHERE 巡察组=\'" & e.Values("巡察组") & "\' and  被巡单位=\'" & e.Values("被巡单位") & "\' and 巡察届别=\'" & e.Values("巡察届别") & "\' and 巡察轮次=\'" & e.Values("巡察轮次") & "\'"
        cmd1.ExecuteNonQuery()
    Else
        Dim dt1 As DataTable = cmd1.ExecuteReader(True)
        Dim dr1 As DataRow
        Dim cls() As String = {"巡察届别","巡察轮次","被巡单位","巡察组","问题类别","具体表现","存在问题","来源","反馈时间","反馈状态"} \'定义列名
        For i As Integer = 0 To  cls.Length - 1
            dr1 = dt1.AddNew()
            dr1(i)=cls(i)
            dr1("反馈状态")="已反馈"
        Next

        dt1.Save
    End If
   
End If

[此贴子已经被作者于2022/8/11 15:24:22编辑过]

--  作者:有点蓝
--  发布时间:2022/8/11 15:35:00
--  
乱七八糟的没看懂。删除哪个表数据?新增哪个表数据,新增什么数据?
--  作者:cnsjroom
--  发布时间:2022/8/11 16:03:00
--  回复:(有点蓝)乱七八糟的没看懂。删除哪个表数据?...

先判断问题反馈与整改表中是否有符合巡察组 巡察单位  届别  轮次的数据
cmd.CommandText = "s ele ct * from 问题反馈与整改 where 巡察组=\'" & e.Values("巡察组") & "\' and  被巡单位=\'" & e.Values("被巡单位") & "\' and 巡察届别=\'" & e.Values("巡察届别") & "\' and 巡察轮次=\'" & e.Values("巡察轮次") & "\'"
If cmd.ExecuteScalar > 0 Then    如果有数据
    Dim cmd1 As SQ L Command 

    cmd1.Connecti

    cmd1.CommandText = "s ele ct * from 反馈问题清单 where 巡察组=\'" & e.Values("巡察组") & "\' and  被巡单位=\'" & e.Values("被巡单位") & "\' and 巡察届别=\'" & e.Values("巡察届别") & "\' and 巡察轮次=\'" & e.Values("巡察轮次") & "\'"

那就判断反馈问题清单中是否有数据,如有有 就删除对应条件的数据
    If cmd1.ExecuteScalar > 0 Then
        cmd1.CommandText = "DE LETE FROM {反馈问题清单} WHERE 巡察组=\'" & e.Values("巡察组") & "\' and  被巡单位=\'" & e.Values("被巡单位") & "\' and 巡察届别=\'" & e.Values("巡察届别") & "\' and 巡察轮次=\'" & e.Values("巡察轮次") & "\'"
        cmd1.ExecuteNonQuery()
    Else

如果没有,就把问题反馈与整改表对应条件的数据,全部写入反馈问题清单中,对应的列以cls()为准
        Dim dt1 As DataTable = cmd1.ExecuteReader(True)
        Dim dr1 As DataRow
        Dim cls() As String = {"巡察届别","巡察轮次","被巡单位","巡察组","问题类别","具体表现","存在问题","来源","反馈时间","反馈状态"} \'定义列名
        For i As Integer = 0 To  cls.Length - 1
            dr1 = dt1.AddNew()
            dr1(i)=cls(i)
            dr1("反馈状态")="已反馈"
        Next

        dt1.Save
    End If
   
End If


--  作者:有点蓝
--  发布时间:2022/8/11 16:05:00
--  
【对应的列以cls()为准】还是没看懂,比如"巡察届别"这个列填入什么数据
--  作者:cnsjroom
--  发布时间:2022/8/11 16:40:00
--  回复:(有点蓝)【对应的列以cls()为准】还是没看懂,...

Dim cls() As String = {"巡察届别","巡察轮次","被巡单位","巡察组","问题类别","具体表现","存在问题","来源","反馈时间","反馈状态"}

 

这些字段是两个表都有的  就是要将问题反馈与整改中 上述字段的数据  写入 反馈问题清单中  对应的字段数据

 

目前一楼的代码实现了符合条件数据的全部删除  但是新增就没有实现了!

[此贴子已经被作者于2022/8/11 16:40:10编辑过]

--  作者:有点蓝
--  发布时间:2022/8/11 17:11:00
--  
不同表数据填充看这个:http://www.foxtable.com/webhelp/topics/1533.htm
--  作者:cnsjroom
--  发布时间:2022/8/12 10:49:00
--  回复:(有点蓝)不同表数据填充看这个:http://www.f...

---------------------------
版本:2022.1.30.2
---------------------------
代码执行出错,错误信息:

 

System.NullReferenceException: 未将对象引用设置到对象的实例。

   在 UserCode.Test()
---------------------------
确定  
---------------------------

 

 

当前代码如下:


Dim cmd As SQLCommand
cmd.Conne ctio nName = "主数据源"
cmd.Comm andText = "se lect * from 巡察问题反馈与整改"
If cmd.ExecuteScalar > 0 Then
    Dim cmd1 As SQLCommand
    cmd1.Con ne cti
    cmd.CommandText = "sel ect * from 巡察问题反馈与整改"
    Dim dt As DataTable = cmd.ExecuteReader()
    cmd1.Com m andText = "se lect * from 反馈问题清单"
    Dim dt2 As DataTable = cmd1.ExecuteReader()
    Dim cols1() As String = {"巡察届别","巡察轮次","被巡单位","巡察组","问题类别","具体表现","存在问题","来源","反馈时间"} \'定义列名
    Dim cols2() As String = {"巡察届别","巡察轮次","被巡单位","巡察组","问题类别","具体表现","存在问题","来源","反馈时间"} \'定义列名
    For Each dr1 As DataRow In dt.Sel ect("被巡单位=\'县\'")
       
        Dim dr2 As DataRow = dt2.AddNew()
        For i As Integer = 0 To Cols1.Length -1
            output.show(dr2(Cols2(i)))
            dr2(Cols2(i)) = dr1(Cols1(i))
            dr2("反馈状态")="已反馈"
        Next
        dt2.save
    Next
End If


--  作者:有点蓝
--  发布时间:2022/8/12 11:13:00
--  

先判断问题反馈与整改表中是否有符合巡察组 巡察单位  届别  轮次的数据
cmd.CommandText = "s ele ct count(*) from 问题反馈与整改 where 巡察组=\'" & e.Values("巡察组") & "\' and  被巡单位=\'" & e.Values("被巡单位") & "\' and 巡察届别=\'" & e.Values("巡察届别") & "\' and 巡察轮次=\'" & e.Values("巡察轮次") & "\'"
If cmd.ExecuteScalar > 0 Then    如果有数据
    Dim cmd1 As SQ L Command 

    cmd1.Connecti

    cmd1.CommandText = "s ele ct count(*) from 反馈问题清单 where 巡察组=\'" & e.Values("巡察组") & "\' and  被巡单位=\'" & e.Values("被巡单位") & "\' and 巡察届别=\'" & e.Values("巡察届别") & "\' and 巡察轮次=\'" & e.Values("巡察轮次") & "\'"

那就判断反馈问题清单中是否有数据,如有有 就删除对应条件的数据
    If cmd1.ExecuteScalar > 0 Then
        cmd1.CommandText = "DE LETE FROM {反馈问题清单} WHERE 巡察组=\'" & e.Values("巡察组") & "\' and  被巡单位=\'" & e.Values("被巡单位") & "\' and 巡察届别=\'" & e.Values("巡察届别") & "\' and 巡察轮次=\'" & e.Values("巡察轮次") & "\'"
        cmd1.ExecuteNonQuery()
    Else

如果没有,就把问题反馈与整改表对应条件的数据,全部写入反馈问题清单中,对应的列以cls()为准

cmd.CommandText = "s ele ct * from 问题反馈与整改 where 巡察组=\'" & e.Values("巡察组") & "\' and  被巡单位=\'" & e.Values("被巡单位") & "\' and 巡察届别=\'" & e.Values("巡察届别") & "\' and 巡察轮次=\'" & e.Values("巡察轮次") & "\'"

Dim dt As DataTable = cmd1.ExecuteReader()

    cmd1.CommandText = "s ele ct * from 反馈问题清单 where _identify is null"
        Dim dt1 As DataTable = cmd1.ExecuteReader(True)
        Dim dr1 As DataRow
        Dim cls() As String = {"巡察届别","巡察轮次","被巡单位","巡察组","问题类别","具体表现","存在问题","来源","反馈时间"} \'定义列名

for each dr as datarow in dt.datarows
            dr1 = dt1.AddNew()
            dr1("反馈状态")="已反馈"
        For i As Integer = 0 To  cls.Length - 1
            dr1(cls(i))=dr(cls(i))
        Next

next

        dt1.Save
    End If

   
End If


--  作者:cnsjroom
--  发布时间:2022/8/12 11:40:00
--  回复:(有点蓝)先判断问题反馈与整改表中是否有符合...
谢谢老师!
--  作者:有点蓝
--  发布时间:2022/8/12 11:51:00
--  
学会把帮助的用法融合到自己的代码里,理解帮助处理问题的逻辑,而不只是会抄代码