以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]执行内部函数死循环 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=171823) |
-- 作者:zxlid -- 发布时间:2021/9/10 17:37:00 -- [求助]执行内部函数死循环 请问老师,以下代码(通过基本信息的姓名与线索、案件数据的被调查人比对,如发现数据库中有同名的,则把有关信息添加至查询结果库中)在命令窗口执行正常,但做成一内部函数bbdata(在首尾分别加上Dim e As RequestEventArgs = Args(0))、e.Handled = True),用代码:去调用,出现死循环,该怎么解决?谢谢! DataTables("协审查询结果").DataRows.Clear() Dim dt1 As DataTable = DataTables("基本信息") Dim dt2 As DataTable = DataTables("线索数据") Dim dt3 As DataTable = DataTables("案件数据") Dim dt4 As DataTable = DataTables("协审查询结果") Dim i As Integer = 0 For Each dr1 As DataRow In dt1.DataRows Dim xm As String = dr1("姓名").trim() Dim drs2 As List(Of DataRow) drs2 = dt2.Select("被调查人 = \'" & xm & "\'") For Each dr2 As DataRow In drs2 Dim dr4 As DataRow = dt4.AddNew() dr4("姓名") = dr2("被调查人") dr4("身份证号码") = "" dr4("现单位") = dr1("单位") dr4("处理类型") = dr2("组织措施") dr4("处理事由") = dr2("简要案情") dr4("处理时间") = dr2("处理时间") dr4("时任单位职务") = dr2("工作单位及职务") dr4("备注") = "" Dim cllx As String = dr2("组织措施") If cllx.Contains("诫勉") Then If Not dr2.IsNull("处理时间") Then dr4("影响时限") = dr2("处理时间").AddMonths(6) End If Else If Not dr2.IsNull("处理时间") Then dr4("影响时限") = dr2("处理时间") End If End If Next Dim drs3 As List(Of DataRow) drs3 = dt3.Select("被调查人 = \'" & xm & "\'") For Each dr3 As DataRow In drs3 Dim dr4 As DataRow = dt4.AddNew() dr4("姓名") = dr3("被调查人") dr4("身份证号码") = "" dr4("现单位") = dr1("单位") dr4("处理类型") = dr3("党纪处分") + "*" + dr3("政纪处分") dr4("处理事由") = dr3("简要案情") dr4("处理时间") = dr3("结案时间") dr4("影响时限") = "" dr4("时任单位职务") = dr3("工作单位及职务") dr4("备注") = "" Dim djcf As String = dr3("党纪处分") If djcf.Contains("开除党籍") Then If Not dr3.IsNull("结案时间") Then dr4("影响时限") = dr3("结案时间").AddMonths(480) End If ElseIf djcf.Contains("留党察看") Then If Not dr3.IsNull("结案时间") Then dr4("影响时限") = dr3("结案时间").AddMonths(48) End If ElseIf djcf.Contains("撤消党内职务") Then If Not dr3.IsNull("结案时间") Then dr4("影响时限") = dr3("结案时间").AddMonths(24) End If ElseIf djcf.Contains("严重警告") Then If Not dr3.IsNull("结案时间") Then dr4("影响时限") = dr3("结案时间").AddMonths(18) End If ElseIf djcf.Contains("警告") Then If Not dr3.IsNull("结案时间") Then dr4("影响时限") = dr3("结案时间").AddMonths(12) End If ElseIf djcf.Contains("延长预备期一年") Then If Not dr3.IsNull("结案时间") Then dr4("影响时限") = dr3("结案时间").AddMonths(12) End If Else If Not dr3.IsNull("结案时间") Then dr4("影响时限") = dr3("结案时间") End If End If Next Next |
-- 作者:有点蓝 -- 发布时间:2021/9/10 17:40:00 -- 函数在什么事件调用的? 异步函数里不能使用datatable:http://www.foxtable.com/mobilehelp/topics/277.htm
|
-- 作者:zxlid -- 发布时间:2021/9/10 17:50:00 -- 谢谢有点蓝老师!,针对我这个例,给我指点一下具体的解决办法,好吗 |
-- 作者:有点蓝 -- 发布时间:2021/9/11 8:56:00 -- 方法1、可以在异步函数里使用SQLCommand获取需要处理的表进行处理 2、把前3个表合并为一个查询表(如果是SqlServer可以设计为视图),然后遍历这个查询表进行处理。或者考虑是sql:insert into ...select...这种语法直接一条sql处理 3、这种需要长时间处理的数据如果不是即时需要使用的,可以专门做个项目,放到服务器24小时运行,做个计划管理,每晚2点自动处理。 |
-- 作者:zxlid -- 发布时间:2021/9/11 14:09:00 -- 有点蓝老师,非常感谢! |