Access數(shù)據(jù)庫開發(fā)技巧(二)
來源:程序員人生 發(fā)布時間:2014-02-05 02:42:06 閱讀次數(shù):3171次
模塊的使用技巧
Access最重要的特征就是一般不必去寫程序,然而可能因為要執(zhí)行復(fù)雜或?qū)I(yè)的操作而必須在模塊中用Visual Basic編寫程序,然后通過窗體中的命令按鈕來執(zhí)行相應(yīng)的程序完成相應(yīng)的任務(wù)。比如排名次、分段統(tǒng)計等。在編寫Visual Basic程序時要注意以下一些問題和技巧。
1、變量的運用
?、賹ο笞兞康倪\用
在Access中運用Visual Basic編寫程序,需要運用其數(shù)據(jù)訪問對象。它包括數(shù)據(jù)庫引擎(DBEngine)、工作空間(Workspace)、數(shù)據(jù)庫以及數(shù)據(jù)庫對象中的表、查詢、記錄集等對象。如缺省工作空間:DBEngine.Workspaces(0),當(dāng)前數(shù)據(jù)庫:DBEngine.Workspaces(0).Databases(0)。我們可以用一個對象變量來表示一個對象,這樣將為編程帶來很大方便。為對象變量賦值要用Set語句,而不要直接賦值。例如:
Dim thedb As Database
Set thedb = DBEngine.Workspaces(0).Databases(0)
?、赩ariant 數(shù)據(jù)類型的運用
Variant 數(shù)據(jù)類型是所有沒被顯示聲明(如 Dim、Private、Public 或 Static等語句)為其他類型變量的數(shù)據(jù)類型。Variant 是一種特殊的數(shù)據(jù)類型,除了定長 String 數(shù)據(jù)及用戶定義類型外,可以包含任何種類的數(shù)據(jù)。Variant 也可以包含 Empty、Error、Nothing 及 Null特殊值。Empty 值用來標(biāo)記尚未初始化(給定初始值)的 Variant 變量。內(nèi)含 Empty 的 Variant 在數(shù)值的上下文中表示 0,如果是用在字符串的上下文中則表示零長度的字符串 ("")。Null 表示未知數(shù)據(jù)或丟失的數(shù)據(jù),即無效數(shù)據(jù)。不應(yīng)將 Empty 與 Null 弄混。Null 是表示 Variant 變量確實含有一個無效數(shù)據(jù)。
當(dāng)有些量可能出現(xiàn)Null值時,可將該變量定義為Variant 數(shù)據(jù)類型。Variant 數(shù)據(jù)類型為編程者提供很大的靈活性,但犧牲了代碼的速度和長度。
?、弁ㄟ^變量來間接引用數(shù)據(jù)庫對象及限定條件
為了增加靈活性,提高控制能力,減少代碼的重復(fù)和運用循環(huán)語句,在程序中應(yīng)充分運用變量來間接引用數(shù)據(jù)庫對象和限定條件。比如各個年級學(xué)生成績排名次的處理程序,只是各年級的成績表名不同,我們可以將程序中的成績表名用一個變量如“bzcjb”來表示,具體處理時再替換為具體的表名,如替換為高一年級的成績表名“g1cjb”。
在具體運用中有一些問題要注意,如:
Dim thedb As Database
Set thedb = DBEngine.Workspaces(0).Databases(0)
Dim thecsb As Recordset
Set thecsb = thedb.OpenRecordset(bzcjb, DB_OPEN_DYNASET)
這里“bzcjb”可代表任意一個成績表,若“bzcjb”本身就是一個已存在的數(shù)表名,則上述最后一個語句中的“bzcjb”應(yīng)加上引號,如下所示:
Set thecsb = thedb.OpenRecordset("bzcjb", DB_OPEN_DYNASET)
再比如Dcount 函數(shù)可用于確定特定記錄集中的記錄數(shù)??梢栽?Visual Basic、宏、查詢表達(dá)式,或計算控件中使用 DCount 函數(shù)。
語法是:DCount(expr, domain[, criteria])
其參數(shù)如下:
expr 表達(dá)式,用于標(biāo)識將統(tǒng)計其記錄數(shù)的字段??梢允且粋€標(biāo)識表或查詢中字段的字符串表達(dá)式。 Expr可為字段的名稱或“*”,除非是“*”, Dcount 函數(shù)對包含空字段的記錄不記數(shù),若為“*”,Dcount 函數(shù)計算記錄總數(shù)。domain字符串表達(dá)式,代表組成域的記錄集,可以是表的名稱或查詢的名稱。criteria 可選的字符串表達(dá)式,用于限制 DCount 函數(shù)執(zhí)行的數(shù)據(jù)范圍。對于其限制條件criteria 可用一個變量來代替,比如要統(tǒng)計表“g1cjb”中字段“語文”分?jǐn)?shù)大于等于80分的人數(shù),可用下式來完成:
DCount("*", "g1cjb", " [班級]>=80")
假若用數(shù)字型變量“n”來替換“80”則如下:
DCount("*", "g1cjb", " [班級]>=" & n)
假若用字符型變量“n”來替換“80”則如下:
DCount("*", "g1cjb", " [班級]>='" & n & "'")
要注意替代的形式是不同的。上面的符號“&”是連接運算符。
2、如何產(chǎn)生程序運行進(jìn)度框
若在程序運行時能產(chǎn)生一個程序運行進(jìn)度框?qū)黾硬簧贅啡?,Access可以實現(xiàn)這一要求。本人在實踐中摸索出一種簡單的方法,就是通過在窗體中建兩個文本框,一個大一點的長條形文本框(填充色為白色),作為外框,一個窄一點的長條形文本框(填充色為其他彩色,長度取為0.011厘米),作為產(chǎn)生程序運行流水線用,它們的初始狀態(tài)均為不可見。然后在程序中控制其屬性為可見的且修改進(jìn)度流水線文本框的寬度來顯示程序的進(jìn)展情況。要注意的是為了讓進(jìn)度框在程序運行時能及時顯示出來必須用SetFocus 方法將焦點移動到進(jìn)度框上,并且要調(diào)整好流水線文本框與外框文本框的初始位置。注意,在用Width 屬性改變控件寬度時其單位為“Twip”,1Twip=1/1440英寸,約為1/567厘米。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進(jìn)行捐贈