以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 运行程序就未响应,是不是for循环太多了。怎么改 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=149865) |
-- 作者:zaq3574020 -- 发布时间:2020/5/14 9:50:00 -- 运行程序就未响应,是不是for循环太多了。怎么改 Dim kh As WinForm.ComboBox = e.Form.Controls("款号") Dim jj As WinForm.CheckedComboBox = e.Form.Controls("季节") Dim pl As WinForm.ComboBox = e.Form.Controls("品类") Dim pm As WinForm.ComboBox = e.Form.Controls("品名") Dim drts As WinForm.TextBox = e.Form.Controls("调入天数") Dim cks As WinForm.CheckedComboBox = e.Form.Controls("仓库") Dim Filter As String Dim cnt As Integer Dim dr As DataRow Dim dc As DataRow If DeleteFilter.Length>0 Then Dim Values() As String Values = DeleteFilter.Split(",") For Index As Integer = 0 To Values.Length-1 DataTables("库存分发总部库存").DataCols.Delete(Values(Index)) Next End If If cks.Text.Length>0 Then DeleteFilter = cks.text For Each ck As DataRow In DataTables("销售统计").Select("仓库 In (\'" & cks.text.replace(",", "\',\'") & "\')") DataTables("库存分发总部库存").DataCols.Add(ck("仓库"),Gettype(String), "") Next Else For Each ck As DataRow In DataTables("销售统计").Select("") If DataTables("库存分发总部库存").DataCols.Contains(ck("仓库")) Then Else DataTables("库存分发总部库存").DataCols.Add(ck("仓库"),Gettype(String), "") End If Next End If Filter="款号 Like \'" & kh.Value & "%\' and 品类 Like \'*" & pl.Value & "\'and 品名 like \'*" & pm.Value & "\'And 数量>\'0\'" If jj.Text.Length>0 Then Filter = Filter & "and 季节 in (\'" & jj.text.replace(",", "\',\'") & "\')" End If Tables("库存分发总部库存").Filter=Filter For Each drs As DataRow In DataTables("库存分发总部库存").Select(Filter) cnt=drs("数量") For Each v As String In DataTables("销售统计").GetValues("仓库","仓库 In (\'" & cks.text.replace(",", "\',\'") & "\')","销售总金额 desc") If DataTables("转仓单明细").Compute("sum(数量)","款号=\'" & drs("款号") & "\' And 花色=\'" & drs("花色") & "\' and 尺码 = \'" & drs("尺码") & "\'and 仓库=\'" & v & "\'") = 0 Then If cnt > 0 Then drs(v) = 1 cnt = cnt - 1 Else drs(v) = Nothing End If End If Next If cnt>0 Then For Each ck As String In DataTables("销售款号统计").GetValues("仓库","款号=\'" & drs("款号") & "\' And 花色码=\'" & drs("花色码") & "\' and 尺码码 = \'" & drs("尺码码") & "\'","数量 desc") If DataTables("销售统计").Find("仓库=\'"& ck &"\'and 仓库 In (\'" & cks.text.replace(",", "\',\'") & "\')") IsNot Nothing Then If DataTables("库存表").Compute("sum(数量)","款号=\'" & drs("款号") & "\' And 花色=\'" & drs("花色") & "\' and 尺码 = \'" & drs("尺码") & "\' and 仓库=\'" & ck & "\'") <= 0 Then If drts.Text.Length>0 Then dr=DataTables("转仓单明细").Find("款号=\'" & drs("款号") & "\' And 花色=\'" & drs("花色") & "\' and 尺码 = \'" & drs("尺码") & "\' and 仓库=\'" & ck & "\'","日期") dc=DataTables("转仓单明细").Find("款号=\'" & drs("款号") & "\' And 花色=\'" & drs("花色") & "\' and 尺码 = \'" & drs("尺码") & "\' and 调出仓库=\'" & ck & "\'","日期") If dc IsNot Nothing And dr IsNot Nothing Then Dim t1 As TimeSpan = dc("日期") - dr("日期") If t1.TotalDays<drts.Text If cnt > 0 Then drs(ck) = 1 cnt = cnt - 1 Else drs(ck) = Nothing End If End If End If Else If cnt > 0 Then drs(ck) = 1 cnt = cnt - 1 Else drs(ck) = Nothing End If End If End If End If Next End If If cnt>0 Then For Each cv As String In DataTables("销售统计").GetValues("仓库","仓库 In (\'" & cks.text.replace(",", "\',\'") & "\')","销售总金额 desc") If DataTables("库存表").Compute("sum(数量)","款号=\'" & drs("款号") & "\' And 花色=\'" & drs("花色") & "\' and 尺码 = \'" & drs("尺码") & "\' and 仓库=\'" & cv & "\'") <= 0 Then If drts.Text.Length>0 Then dr=DataTables("转仓单明细").Find("款号=\'" & drs("款号") & "\' And 花色=\'" & drs("花色") & "\' and 尺码 = \'" & drs("尺码") & "\' and 仓库=\'" & cv & "\'","日期") dc=DataTables("转仓单明细").Find("款号=\'" & drs("款号") & "\' And 花色=\'" & drs("花色") & "\' and 尺码 = \'" & drs("尺码") & "\' and 调出仓库=\'" & cv & "\'","日期") If dc IsNot Nothing And dr IsNot Nothing Then Dim t1 As TimeSpan = dc("日期") - dr("日期") If t1.TotalDays<drts.Text If cnt > 0 Then drs(cv) = 1 cnt = cnt - 1 Else drs(cv) = Nothing End If End If End If Else If cnt > 0 Then drs(cv) = 1 cnt = cnt - 1 Else drs(cv) = Nothing End If End If End If Next End If drs("剩余")=cnt Next
|
-- 作者:有点蓝 -- 发布时间:2020/5/14 10:00:00 -- 我也判断不了是什么问题。调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm 可以参考下面的代码计算一下各段代码执行的时间,看哪一段代码慢: Dim t1 As Date = Date.Now 另外可以看看:http://www.foxtable.com/webhelp/topics/2225.htm |