以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]代码优化的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160304) |
-- 作者:81538475 -- 发布时间:2021/1/28 13:25:00 -- [求助]代码优化的问题 目前有段代码是为了把“内网数据源”的数据读取出来的功能,但是目前由于里面的 遍历行的代码,所以导致运行很慢,想问下这种有没有可能用 SQLReplaceFor 或者其他什么方式简化呢。 Dim ps As String = args(0) \'-----部门 Dim ncb1 As WinForm.NumericComboBox = Forms("任务插入").Controls("NumericComboBox1") If Connections.Contains("内网数据源") =True Then \'Dim st2 As Date = Date.Now Dim d As Date= Date.Today.AddMonths(0 - ncb1.Value) Dim d1 As Date = New Date(d.Year,d.Month,1) \'最近两个月的进度记录 Dim rwjl As New SQLCommand rwjl.C rwjl.CommandText = "SE/ECT _identify,日期,编号,任务状态,当前进度,预期进度,提审内容,通过截图 From {任务进度记录} where 日期>= \'" & d1 &"\' And 部门 In (" & ps & ")" dtrw= rwjl.ExecuteReader(True) \'=-------确认办公地点属于哪个分部 Dim gs As String Dim cmd As New SQLCommand CMD.C cmd.CommandText = "Se/ect 归属地 From {服务器连接列表} Where 办公地点 = \'"& SQLselect &"\'" gs = cmd.ExecuteScalar() systemready =False For Each r1 As DataRow In DataTables("XMFP").DataRows Dim rdd As DataRow = dtry.Find("姓名 = \'" & r1("成员") &"\'") If rdd IsNot Nothing Then \'--------------- \'test += r1("成员") If rdd("人员归属")= gs Then If r1("任务状态")<> "通过" Then Dim max As Date max= dtrw.Compute("max(日期)","编号 = \'"& r1("_identify") &"\'") Dim fdr1 As DataRow = dtrw.Find("编号= \'"& r1("_identify") & "\'and 日期 = \'"& max &"\' ") Dim fdr2 As DataRow = dtrw.Find("编号= \'"& r1("_identify") & "\'and 日期 = \'"& date.Today &"\' ") Dim fdr3 As DataRow = dtrw.Find("编号= \'"& r1("_identify") & "\'and (通过截图 is not null or 通过截图 <>\'\')") \'----------------找通过截图行 \'Dim fdrxx As DataRow = dtrw.Find("编号= \'23240\'and 日期 = \'"& max &"\' ") If fdr1 IsNot Nothing AndAlso (r1("任务状态")<> "待截图" AndAlso r1("任务状态")<> "关闭") Then r1("任务状态") = fdr1("任务状态") End If If fdr2 IsNot Nothing Then r1("当前进度") = fdr2("当前进度") End If If fdr3 IsNot Nothing Then r1("通过截图")=fdr3("通过截图") r1.Save End If End If End If End If \' Next systemready =True End If
|
-- 作者:有点蓝 -- 发布时间:2021/1/28 14:08:00 -- 没看懂这些业务逻辑。如果数据需要复杂计算的没有办法的。 截图说明一下,什么表的什么数据,根据什么规则进行更新?
|
-- 作者:81538475 -- 发布时间:2021/1/28 14:23:00 -- DataTables("XMFP") 这个是一个任务表,是由管理员添加的,然后 内网数据源的 任务进度记录 是由组员添加的。这两个表在两个不同的数据源。现在希望加载“XMFP” 表的时候,能够吧内网数据源中员工填写的信息根据上面的一些条件同步到“XMFP”表对应的行上面。 |
-- 作者:有点蓝 -- 发布时间:2021/1/28 14:35:00 -- 上面只是描述了一个过程,对于具体的业务逻辑我还是不懂 截图说明一下,什么表的什么数据,根据什么规则进行更新?
|