十萬(wàn)條Access數(shù)據(jù)表分頁(yè)的兩個(gè)解決方法
導(dǎo)讀:后臺(tái)數(shù)據(jù)庫(kù)用是Access,客戶用了一年后說(shuō)打開(kāi)界面非常慢,查看了數(shù)據(jù)庫(kù)后發(fā)現(xiàn)數(shù)據(jù)表中的記錄已有五萬(wàn)多條,自己試過(guò)將記錄復(fù)制到10 萬(wàn)條,打開(kāi)界面非常慢,翻頁(yè)也是同樣的問(wèn)題,我采用的方式是每頁(yè)裝入20條記錄,循環(huán)寫在表格中顯示出來(lái),再定四個(gè)翻頁(yè)鍵用來(lái)查看數(shù)據(jù),但問(wèn)題是雖然是 每次裝入頁(yè)面的記錄只有二十條,但每次要打開(kāi)記錄集時(shí)還是必須一次性裝入所有的記錄,所以才慢。速度慢了必然會(huì)大大影響工作效率,下文將為大家介紹兩種解決方法,幫助大家實(shí)現(xiàn)快速操作的技巧。
解決方法一:
1.設(shè)置一個(gè)自增長(zhǎng)字段,并且該字段為INDEX。
2.由于是 ACCESS ,所以,只能是前臺(tái)分頁(yè)。自增長(zhǎng)字段目的,就是為了實(shí)現(xiàn)分頁(yè)功能。
1> 記錄用戶前頁(yè)的***一個(gè) 自增值 ,例如 M 。
2> 下一頁(yè),取下一頁(yè)的開(kāi)始值.M+1 ,結(jié)束值: M+1+1.5*PAGESIZE (注:由于數(shù)據(jù)庫(kù)會(huì)有增刪操作,故應(yīng)該取頁(yè)大小應(yīng)該有一個(gè)系數(shù),你可以根據(jù)情況自定一個(gè)1大的系數(shù)。)
3> 前臺(tái)循環(huán)取 RS 的前 PAGESIZE 條, 寫到一個(gè) 新的RS中,并返回.
注:新的RS是一個(gè)無(wú)連接的RS .
解決方法二:
十萬(wàn)條記錄不是 Access 數(shù)據(jù)庫(kù)的極限。何況你的方法不是真正意義上的分頁(yè)(應(yīng)當(dāng)利用 PageSize 和 AbsolutePage 屬性)。
VBScript code
Set rs = New ADODB.Recordsetrs.CursorLocation = adUseClientrs.PageSize = 20rs.Open "Select * From 客戶", iConc, adOpenKeyset, adLockOptimisticlngPages = rs.PageCountlngCurrentPage = 1
此時(shí)打開(kāi)的記錄集只有 20 條記錄。
翻頁(yè)時(shí):
VBScript code
If lngCurrentPage < lngPages Then lngCurrentPage = lngCurrentPage + 1 rs.AbsolutePage = lngCurrentPageEnd If
這兩種方法大家完全可以在遇到類似問(wèn)題時(shí)試試,當(dāng)然,這兩種解決方法并不是***的,也不是絕對(duì)權(quán)威的,所以大家要靈活掌握,靈活運(yùn)用。
【編輯推薦】