access數(shù)據(jù)庫(kù)的使用大概有兩大部分,一是數(shù)據(jù)的計(jì)算與處理,像數(shù)據(jù)表、查詢這些都是來(lái)完成數(shù)據(jù)處理工作的,他們會(huì)按照我們的需要完成數(shù)據(jù)的計(jì)算和處理,形成數(shù)據(jù)信息以供參考;二是用戶界面(UI)的制作,這一部分雖然不是核心,但是也非常重要,。因?yàn)閷?duì)于一般用戶來(lái)講,不會(huì)懂得怎樣去建立查詢等等這些工作,他們所需要的只是點(diǎn)點(diǎn)按鈕就能得到必要的信息,所以,我們需要制作大量的窗體來(lái)引導(dǎo)用戶進(jìn)行數(shù)據(jù)庫(kù)的操作,以得到他們所需的信息。所以對(duì)于一個(gè)好的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)來(lái)講,這兩大部分缺一不可。
在建立窗體,引導(dǎo)用戶使用的過(guò)程中,經(jīng)常會(huì)遇到這樣的問(wèn)題:有時(shí)候用戶按下某個(gè)命令按鈕,當(dāng)程序開始執(zhí)行那個(gè)按鈕所關(guān)聯(lián)的程序時(shí),由于涉及到大量的計(jì)算工作,所以電腦運(yùn)行會(huì)變慢,在Access中會(huì)表現(xiàn)為屏幕沒(méi)有任何反應(yīng),時(shí)間稍長(zhǎng),就會(huì)讓人感覺(jué)是不是死機(jī)了?所以,在這種情況下,如果有提示框來(lái)告訴用戶電腦此時(shí)在做什么會(huì)比較好,另外這樣也可以感覺(jué)時(shí)間短些,因?yàn)闆](méi)有任何變化的等待會(huì)讓人感覺(jué)更加漫長(zhǎng)!
要完成這個(gè)即時(shí)信息顯示窗口,我們首先想到的就是在程序的某一部分加上一段代碼,這段代碼打開一個(gè)新的窗口,窗口中會(huì)有相關(guān)文字,如“程序正在運(yùn)行,請(qǐng)稍等……”等等,代碼也很簡(jiǎn)單,在Access中就是
……
DoCmd.OpenForm "wait"
Forms!Wait!lblwait.Caption = "程序正在運(yùn)行,請(qǐng)稍等……"
……
其中,wait是窗體(Form)的名字,lblwait是窗體中的一個(gè)標(biāo)簽(Label)控件的名稱,程序運(yùn)行到省略號(hào)這里時(shí),會(huì)打開wait窗口,然后把標(biāo)簽控件的名稱改為“程序正在運(yùn)行,請(qǐng)稍等……”。
可是當(dāng)你真正運(yùn)行這段程序代碼時(shí),會(huì)發(fā)現(xiàn)效果并不是你想象的那樣,wait窗口確實(shí)出來(lái)了,但是上面只是一片白色區(qū)域,沒(méi)有任何文字,最初你可能覺(jué)得是自己的電腦運(yùn)行慢,顯示不出來(lái),但是即使你換到最快的電腦上來(lái)運(yùn)行,結(jié)果還會(huì)是這樣,豈不郁悶?!
這個(gè)時(shí)候,就輪到Repaint方法大顯身手了,將上面的代碼稍作修改,如下面這樣:
……
DoCmd.OpenForm "wait"
Forms!Wait!lblwait.Caption = "程序正在運(yùn)行,請(qǐng)稍等……"
Forms!Wait.Repaint
……
再運(yùn)行一下,就可以看到窗口正常顯示出來(lái)提示了。
之后,你可以在需要的地方都加上這段代碼,把其中的文字換換,就可以在程序的運(yùn)行過(guò)程當(dāng)中實(shí)時(shí)提示用戶程序在做什么了!
道理其實(shí)也很簡(jiǎn)單,就是在程序運(yùn)行過(guò)程當(dāng)中,不會(huì)實(shí)時(shí)的更新屏幕顯示,這樣會(huì)加快程序運(yùn)行的速度,所以在設(shè)計(jì)到大量計(jì)算時(shí),程序就不會(huì)有任何顯示更新,像死機(jī)了一樣,但是加入了Repaint方法就會(huì)強(qiáng)制更新屏幕顯示,就會(huì)讓我們動(dòng)態(tài)看到程序運(yùn)行狀況了。
|
新聞熱點(diǎn)
疑難解答
圖片精選