以文本方式查看主题 - 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 -- 遍历只能执行一行数据,不能将当前所有符合条件的数据全部执行告知内容的替换,麻烦老师指导下!谢谢! 遍历只能执行一行数据,不能将当前所有符合条件的数据全部执行告知内容的替换,麻烦老师指导下!谢谢! 如当前有姓名为张三记录的值五条,下面代码执行时,值对应生成一条记录,不能一次性将五条记录全部进行执行。 \'获取告知内容表里面告知内容列值是空值 操作单位等于当前系统登录用户所在单位的 所有姓名值集合 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 -- 回复:(有点蓝)没看懂代码的意思。上传具体实例说明... 第一查找出告知内容表中 符合条件的姓名集合 当前表中有两个不同姓名 蒙正欢和刘远华 第二 根据所得到的姓名集合值 再去查找对应符合姓名的记录 如果找到 且告知内容列不为空 第三 去查找信息模板中符合条件的 模板内容列值 第四 去查找内容替换表中的对应值 并进行切换 第五 生成新的告知内容列值 str1
[此贴子已经被作者于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 ... 谢谢 有点蓝 老师 就是这个意思 |