大量數據處理裡使用進度條顯示進度,但如何避免進度條拖慢處理時間呢
- 2020-01-03 08:00:00
- zstmtony 原創
- 4411
最近幫一箇客戶在處理一箇業務時,因爲處理時間長,爲瞭避免客戶焦慮等待,在處理過程中添加瞭進度條,但因爲記録數特彆多,達幾十萬,增加進度條顯示後,會導緻處理時間成倍增加。拖慢瞭處理的速度,反而背離瞭之前的初衷。所以在顯示進度條時想瞭一箇辦法,不是每條都刷新進度條,而是以一定的間隔如100 1000 10000 這樣的等級間隔來刷新進度條,數據量越大,間隔長度越長,這樣就在處理時間及顯示進度條之間取得一箇平衡,旣顯示瞭進度,但不會拖慢整箇處理時間。
Public Sub 生成3箇號和值振幅錶() Dim rst As Object '子窗體記録集 Dim rstTmp As Object '子窗體記録集 Dim He123, He124, He125, He234, He235, He345, He134, He135, He145, He245 As Integer Set rstTmp = CurrentDb.OpenRecordset("TMP_tbl最後一期數據錶", dbOpenDynaset) rstTmp.MoveFirst '把當前記録的數據保存在變量,用於計祘所有組閤的振幅 He123 = rstTmp![123和] He124 = rstTmp![124和] He125 = rstTmp![125和] He234 = rstTmp![234和] He235 = rstTmp![235和] He345 = rstTmp![345和] He134 = rstTmp![134和] He135 = rstTmp![135和] He145 = rstTmp![145和] He245 = rstTmp![245和] rstTmp.Close Set rstTmp = Nothing CurrentDb.Execute "delete * from tbl3箇號和值振幅錶" Set rst = CurrentDb.OpenRecordset("tbl3箇號和值振幅錶", dbOpenDynaset) Set rstTmp = CurrentDb.OpenRecordset("tbl3箇號和庫", dbOpenDynaset) If rstTmp.RecordCount = 0 Then Exit Sub '初始化進度條 '記録集先移到最後,以避免總條數取不對 rstTmp.MoveLast rstTmp.MoveFirst Dim lngCnt As Long Dim i As Long lngCnt = rstTmp.RecordCount '取記録的總數 Dim clsProgress As New clsSysProgress Dim lngSplit As Long lngSplit = Int(lngCnt / 100) If lngSplit <= 0 Then lngSplit = 1 clsProgress.gintStep = 1 clsProgress.gintLong = lngCnt clsProgress.gintTime = 20 clsProgress.gf_ChangeText "準備生成3箇號和值振幅錶 ..." clsProgress.gf_Show PM_Wait Do Until rstTmp.EOF '記録數比較大時,則隔一段時間纔更新進度條,而不是每條都更新進度條,大大加快速度 i = i + 1 If i Mod lngSplit = 0 Or i = lngCnt Then clsProgress.gf_ChangeText "正在生成3箇號和值振幅錶-- 第" & i & "條/共" & lngCnt & "條 ..." clsProgress.gf_SetStep i DoEvents End If rst.AddNew rst!組閤ID = rstTmp!組閤ID rst!組閤 = rstTmp!組閤 rst![123振幅] = Abs(rstTmp![123和] - He123) rst![124振幅] = Abs(rstTmp![124和] - He124) rst![125振幅] = Abs(rstTmp![125和] - He125) rst![234振幅] = Abs(rstTmp![234和] - He234) rst![235振幅] = Abs(rstTmp![235和] - He235) rst![345振幅] = Abs(rstTmp![345和] - He345) rst![134振幅] = Abs(rstTmp![134和] - He134) rst![135振幅] = Abs(rstTmp![135和] - He135) rst![145振幅] = Abs(rstTmp![145和] - He145) rst![245振幅] = Abs(rstTmp![245和] - He245) rst.Update rstTmp.MoveNext Loop '關閉進度條 處理完成 clsProgress.gf_ChangeText "3箇號和值振幅錶 處理完成!" '完成 Set clsProgress = Nothing rst.Close rstTmp.Close Set rst = Nothing Set rstTmp = Nothing
Access數據庫自身
- office課程播放地址及課程明細
- Excel Word PPT Access VBA等Office技巧學習平颱
- 將( .accdb) 文件格式數據庫轉換爲早期版本(.mdb)的文件格式
- 將早期的數據庫文件格式(.mdb)轉換爲 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數據庫引擎和訪問連接引擎以阻止對遠程數據庫的訪問(remote table)
- Access 365 /Access 2019 數據庫中哪些函數功能和屬性被沙箱模式阻止(如未啟動宏時)
- Access Runtime(運行時)最全的下載(2007 2010 2013 2016 2019 Access 365)
Access Activex第三方控件
- Activex控件或Dll 在某些電腦無法正常註冊的解決辦法(regsvr32註冊時卡住)
- office使用部分控件時提示“您沒有使用該ActiveX控件許可的問題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹控件(treeview) 64位Office下齣現橫曏滾動條不會自動定位的解決辦法
- Access中國樹控件 在win10電腦 節點行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹控件 ListView列錶等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調用WebService(直接Post方式)併解析返迴的XML
Access ADP Sql Server等
- 早期PB程序連接Sqlserver齣現錯誤
- MMC 不能打開文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由於文件不存在,不是一箇MMC控製颱,或者用後來的MMC版
- sql server連接不瞭的解決辦法
- localhost與127.0.0.1區彆
- Roych的淺談數據庫開髮繫列(Sql Server)
- sqlserver 自動備份對備份目録沒有存取權限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業管理器 SQLServer2005_SSMSEE
文章分類
聯繫我們
聯繫人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |