數(shù)據(jù)庫(kù)拆分的優(yōu)點(diǎn)和必要性想必各位都明白,一旦把后端庫(kù)放到了局域網(wǎng)上(無(wú)論對(duì)等網(wǎng)、局域網(wǎng)),前端運(yùn)行速度將大為減緩,特別是在前端修改查詢、窗體更為緩慢,這種情況在論壇中經(jīng)常提及,但始終不能找到滿意的答案。
前段時(shí)間,無(wú)意中發(fā)現(xiàn)了網(wǎng)友發(fā)布的相關(guān)帖子,原文如下:
問(wèn):我的單位已連局域網(wǎng),有一臺(tái)SERVER2000服務(wù)器,有四臺(tái)WIN98工作站。共同使用Access調(diào)用服務(wù)器上的庫(kù)文件?SERVER.MDB。?
現(xiàn)在的解決方法是在服務(wù)器上建一共享目錄存共享庫(kù)文件SERVER.MDB?
工作站上用鏈接表對(duì)此相連,但是總覺得兩人以上運(yùn)行時(shí)速度太慢。?
請(qǐng)問(wèn)是不是有更好的方法??
答:其實(shí)不慢,只是需要技巧
Dim?cn?As?Connection?
Dim?rs?As?New?ADODB.Recordset?
Dim?sql?As?String?
Set?cn?=?CurrentProject.Connection?
sql?=?"select?*?from?1"?
rs.Open?sql,?cn,?3,?3,?1?
你的軟件最好有個(gè)主控面板,一打開軟件它就打開,關(guān)閉軟件它才關(guān)閉。在后臺(tái)數(shù)據(jù)庫(kù)文件里建一個(gè)只有一個(gè)字段的空表,名為1(其它名也可以),然后把上面的代碼放在主控面板的OPEN事件里。?
這里面用到的小技巧就是:打開了一個(gè)空表,但沒關(guān)閉它,這樣后臺(tái)數(shù)據(jù)庫(kù)就一直在打開狀態(tài)(你可以看到后臺(tái)數(shù)據(jù)庫(kù)會(huì)生成一個(gè)LDB文件),你要操作其它表的時(shí)候就不用頻繁地打開、關(guān)閉后臺(tái)數(shù)據(jù)庫(kù),這樣程序運(yùn)行起來(lái)可以提升級(jí)幾倍的速度,試試看吧。?
其中談到,在前端數(shù)據(jù)庫(kù)中打開一個(gè)鏈接自后端的表,讓起一直開著,“這樣程序運(yùn)行起來(lái)可以提升級(jí)幾倍的速度”,講的的確有道理,但是,我看不懂代碼的意思,照本宣科也不行,只得束之高閣.....遺憾??!
前幾天下載了一個(gè)后端監(jiān)測(cè)軟件,可以看到有誰(shuí)正在使用后端文件,雖然用處不大,但卻帶來(lái)意外收獲,運(yùn)行監(jiān)測(cè)軟件后,在前端編輯和修改查詢、窗體時(shí),速度大為提高,為什么呢?幾經(jīng)分析和實(shí)踐,終于找到一種簡(jiǎn)便的方法來(lái)達(dá)到提高運(yùn)行速度的目的??!不敢獨(dú)享,在此提供給各位需要的朋友,以解燃眉之急。
1、在后端創(chuàng)建一個(gè)只有一個(gè)字段的表。不要輸入任何數(shù)據(jù)。
2、鏈接到前端數(shù)據(jù)庫(kù)中。
3、在前端中建立該表的窗體,任何形式都行,越簡(jiǎn)單越好。
4、編寫以隱藏方式打開該窗體的代碼或宏命令。
5、在切換面板的打開事件中運(yùn)行打開命令,這樣每當(dāng)數(shù)據(jù)庫(kù)打開,自然就會(huì)打開該窗體,直到關(guān)閉數(shù)據(jù)庫(kù)為止。
這樣一來(lái)就達(dá)到了“不用頻繁地打開、關(guān)閉后臺(tái)數(shù)據(jù)庫(kù)”的目的,速度自然提高許多。
上面提到的代碼,想來(lái)肯定有用,為什么沒有效果呢?如用代碼以隱藏的方式直接打開表,豈不更好,還可以省掉一個(gè)窗體,還望VBA高手解答。?
隱藏方式打開該窗體