以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [推荐]进度条显示异常 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=170887) |
-- 作者:huangfanzi -- 发布时间:2021/8/10 15:41:00 -- [推荐]进度条显示异常 下面代码,进度条显示到1/4处左右就不动了,之前一直正常的,前几周升级到新版本后才出现的问题,加入调试代码MessageBox.Show(p.Value)后,一步一步的按回车执行,发现进度条可以正常显示到最后,好奇怪,请老师看看。 Forms("进度条独立窗口").Show \'打开进度条独立窗口 Dim p As WinForm.ProgressBar \'定义进度条 Dim Lab1 As WinForm.Label p = Forms("进度条独立窗口").Controls("ProgressBar") Lab1 = Forms("进度条独立窗口").Controls("Label1") Lab1.Text = "正在加载截止日期前的工序合并表全部数据..." Application.DoEvents() \'即刻暂停代码的执行,重新绘制控件后,继续执行代码. Dim cmd_工序表 As New SQLCommand cmd_工序表.C cmd_工序表.CommandText = "S elect 工序,道次,卷号,母卷号,牌号,厚度,宽度,长度,重量,件数,起始时间,结束时间,投料量,成材率,作业分钟数,库存标记,往来合同,往来公司,往来内容 From {工序合并表} Where 起始时间 < \'" & dtp.Value.AddDays(1) & " \'" dt = cmd_工序表.ExecuteReader() Dim drs As List(Of DataRow) = dt.Select("", "卷号,起始时间") \'指定母卷号计算 p.Maximum = drs.Count \'设置最大值 p.Minimum = 0 \'设置最小值 If drs.Count=1 Then drs(0)("库存标记") = True Else For i As Integer = 1 To drs.Count - 1 If i Mod 100 = 0 Then \'每运算100条更新一次进度条 p.Value = i \'当前值为已经完成的行数 \'MessageBox.Show(p.Value) Lab1.Text = "工序合并表加载完成,开始计算..." & i + 1 & " / " & drs.Count Application.DoEvents() \'即刻暂停代码的执行,重新绘制控件后,继续执行代码 ElseIf i=drs.Count-1 \'当i为最大值减1时 p.Value = drs.Count \'当前值直接等于最大值 Lab1.Text = "工序合并表加载完成,开始计算..." & drs.Count & " / " & drs.Count Application.DoEvents() \'即刻暂停代码的执行,重新绘制控件后,继续执行代码 End If If drs(i)("卷号").Contains(drs(i-1)("卷号")) Then drs(i-1)("库存标记") = False Else drs(i-1)("库存标记") = True End If Next drs(drs.Count-1)("库存标记") = True Lab1.Text = "完成计算,正在调整列宽与显示格式..." & drs.Count & " / " & drs.Count Application.DoEvents() \'即刻暂停代码的执行,重新绘制控件后,继续执行代码 End If |
-- 作者:有点蓝 -- 发布时间:2021/8/10 16:11:00 -- 看不出什么问题,请上传实例测试 |