以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  遍历只能执行一行数据,不能将当前所有符合条件的数据全部执行告知内容的替换,麻烦老师指导下!谢谢!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=135252)

--  作者:李孝春
--  发布时间:2019/5/21 20:48:00
--  遍历只能执行一行数据,不能将当前所有符合条件的数据全部执行告知内容的替换,麻烦老师指导下!谢谢!
遍历只能执行一行数据,不能将当前所有符合条件的数据全部执行告知内容的替换,麻烦老师指导下!谢谢!
如当前有姓名为张三记录的值五条,下面代码执行时,值对应生成一条记录,不能一次性将五条记录全部进行执行。

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20190521204953.png
图片点击可在新窗口打开查看


\'获取告知内容表里面告知内容列值是空值 操作单位等于当前系统登录用户所在单位的  所有姓名值集合
Dim lsts As New List(Of String)
lsts=DataTables("告知内容").SQLGetValues("姓名" ,"操作单位=\'" & _usergroup & "\'and 告知内容 is null")
\'遍历姓名值结合
For Each lst As String In lsts
    \'查找告知内容表中操作单位等于当前系统登录用户所在单位  姓名等于姓名值结合的  且告知内容列值为空的数据
    Dim dr2 As DataRow = DataTables("告知内容").SQLfind("操作单位=\'" & _usergroup & "\' And  姓名 = \'" & lst &"\' And 告知内容 Is null ")
     \'如果找到
    If  dr2 IsNot Nothing Then
         \'如果告知内容列不是空值
        If dr2("告知内容") IsNot Nothing  Then
            \'查找信息模板中操作单位符合当前系统登录用户所在单位 案件类别等于告知内容表中的案件类别  案件状态等于告知内容表中的案件状态 适用人员等于告知内容表中的人员类型的数据
            Dim dr As DataRow =  DataTables("信息模板").sqlfind("操作单位=\'" & _usergroup & "\' And  案件类别 = \'" & dr2("案件类别") & "\'And 案件状态 =  \'" & dr2("案件状态") & "\'  and 适用人员=\'" & dr2("人员类型") & "\'"  )
            \'如果找到记录
            If dr IsNot Nothing Then
                \'定义字符串
                Dim str1 As String = dr("模板内容")
                \'定义遍历内容替换表查找内容
                Dim drs1 As List(of DataRow)  =   DataTables("内容替换表").SQLSelect("")
                For Each dr1 As DataRow In drs1
                    \'如果替换内容与列名不等于空时
                    If dr1("替换内容") > "" And dr1("列名") > "" Then
                        \'如果告知内容表列值中包含内容替换表中的列值时,进行对应替换
                        If DataTables("告知内容").DataCols.Contains(dr1("列名")) Then
                            str1 = str1.replace(dr1("替换内容"),dr2(dr1("列名")))
                        End If
                    End If
                Next
                \'输入替换后的值,并且写入告知内容表中的告知内容列,然后保存告知内容表
                output.show(str1)
                dr2("告知内容")=str1
                dr2.save
            End If
        End If
    End If
Next
[此贴子已经被作者于2019/5/21 20:50:37编辑过]

--  作者:有点蓝
--  发布时间:2019/5/21 21:07:00
--  
没看懂代码的意思。上传具体实例说明要什么效果
--  作者:李孝春
--  发布时间:2019/5/21 21:35:00
--  回复:(有点蓝)没看懂代码的意思。上传具体实例说明...
第一查找出告知内容表中 符合条件的姓名集合

图片点击可在新窗口打开查看此主题相关图片如下:告知内容表.png
图片点击可在新窗口打开查看
当前表中有两个不同姓名  蒙正欢和刘远华
第二 根据所得到的姓名集合值 再去查找对应符合姓名的记录
如果找到 且告知内容列不为空
第三 去查找信息模板中符合条件的 模板内容列值

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
第四 去查找内容替换表中的对应值 并进行切换

图片点击可在新窗口打开查看此主题相关图片如下:替换内容.png
图片点击可在新窗口打开查看

第五 生成新的告知内容列值  str1

图片点击可在新窗口打开查看此主题相关图片如下:告知内容表.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/5/21 21:36:08编辑过]

--  作者:有点蓝
--  发布时间:2019/5/21 22:00:00
--  
这个意思?

For Each dr2 As DataRow In DataTables("告知内容").SQLSelect("操作单位=\'" & _usergroup & "\' And 告知内容 Is null ")
    Dim dr As DataRow =  DataTables("信息模板").sqlfind("操作单位=\'" & _usergroup & "\' And  案件类别 = \'" & dr2("案件类别") & "\'And 案件状态 =  \'" & dr2("案件状态") & "\'  and 适用人员=\'" & dr2("人员类型") & "\'"  )
    \'如果找到记录
    If dr IsNot Nothing Then
        \'定义字符串
        Dim str1 As String = dr("模板内容")
        \'定义遍历内容替换表查找内容
        Dim drs1 As List(of DataRow)  =   DataTables("内容替换表").SQLSelect("")
        For Each dr1 As DataRow In drs1
            \'如果替换内容与列名不等于空时
            If dr1("替换内容") > "" And dr1("列名") > "" Then
                \'如果告知内容表列值中包含内容替换表中的列值时,进行对应替换
                If DataTables("告知内容").DataCols.Contains(dr1("列名")) Then
                    str1 = str1.replace(dr1("替换内容"),dr2(dr1("列名")))
                End If
            End If
        Next
        \'输入替换后的值,并且写入告知内容表中的告知内容列,然后保存告知内容表
        output.show(str1)
        dr2("告知内容")=str1
        dr2.save
    End If
Next

--  作者:李孝春
--  发布时间:2019/5/22 11:33:00
--  回复:(有点蓝)这个意思?For Each dr2 As DataRow ...
谢谢 有点蓝 老师  就是这个意思