Foxtable(狐表)用户栏目专家坐堂 → 如何遍历来源表:问题反馈与整改,如果有符合条件的数据行那就再次判断目标表:反馈问题清单 中是否有存在的数据行 如果有 那就删除,如果不存在那就新增数据行 然后并保存


  共有4723人关注过本帖树形打印复制链接

主题:如何遍历来源表:问题反馈与整改,如果有符合条件的数据行那就再次判断目标表:反馈问题清单 中是否有存在的数据行 如果有 那就删除,如果不存在那就新增数据行 然后并保存

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
如何遍历来源表:问题反馈与整改,如果有符合条件的数据行那就再次判断目标表:反馈问题清单 中是否有存在的数据行 如果有 那就删除,如果不存在那就新增数据行 然后并保存  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/8/11 15:35:00 [只看该作者]

乱七八糟的没看懂。删除哪个表数据?新增哪个表数据,新增什么数据?

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)乱七八糟的没看懂。删除哪个表数据?...  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/8/11 16:05:00 [只看该作者]

【对应的列以cls()为准】还是没看懂,比如"巡察届别"这个列填入什么数据

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)【对应的列以cls()为准】还是没看懂,...  发帖心情 Post By:2022/8/11 16:40:00 [只看该作者]

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

 

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

 

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/8/11 17:11:00 [只看该作者]

不同表数据填充看这个:http://www.foxtable.com/webhelp/topics/1533.htm

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)不同表数据填充看这个:http://www.f...  发帖心情 Post By:2022/8/12 10:49:00 [只看该作者]

---------------------------
版本: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


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)先判断问题反馈与整改表中是否有符合...  发帖心情 Post By:2022/8/12 11:40:00 [只看该作者]

谢谢老师!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/8/12 11:51:00 [只看该作者]

学会把帮助的用法融合到自己的代码里,理解帮助处理问题的逻辑,而不只是会抄代码

 回到顶部