ACCESS最重要的特征就是一般不必去寫程序,然而可能因為要執(zhí)行復雜或?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),當前數(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 值用來標記尚未初始化(給定初始值)的 Variant 變量。內(nèi)含 Empty 的 Variant 在數(shù)值的上下文中表示 0,如果是用在字符串的上下文中則表示零長度的字符串 ("")。Null 表示未知數(shù)據(jù)或丟失的數(shù)據(jù),即無效數(shù)據(jù)。不應(yīng)將 Empty 與 Null 弄混。Null 是表示 Variant 變量確實含有一個無效數(shù)據(jù)。
當有些量可能出現(xiàn)Null值時,可將該變量定義為Variant 數(shù)據(jù)類型。Variant 數(shù)據(jù)類型為編程者提供很大的靈活性,但犧牲了代碼的速度和長度。
、弁ㄟ^變量來間接引用數(shù)據(jù)庫對象及限定條件
為了增加靈活性,提高控制能力,減少代碼的重復和運用循環(huán)語句,在程序中應(yīng)充分運用變量來間接引用數(shù)據(jù)庫對象和限定條件。比如各個年級學生成績排名次的處理程序,只是各年級的成績表名不同,我們可以將程序中的成績表名用一個變量如“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、宏、查詢表達式,或計算控件中使用 DCount 函數(shù)。
語法是:DCount(expr, domain[, criteria])
其參數(shù)如下:
expr 表達式,用于標識將統(tǒng)計其記錄數(shù)的字段。可以是一個標識表或查詢中字段的字符串表達式。 Expr可為字段的名稱或“*”,除非是“*”, Dcount 函數(shù)對包含空字段的記錄不記數(shù),若為“*”,Dcount 函數(shù)計算記錄總數(shù)。domain字符串表達式,代表組成域的記錄集,可以是表的名稱或查詢的名稱。criteria 可選的字符串表達式,用于限制 DCount 函數(shù)執(zhí)行的數(shù)據(jù)范圍。對于其限制條件criteria 可用一個變量來代替,比如要統(tǒng)計表“g1cjb”中字段“語文”分數(shù)大于等于80分的人數(shù),可用下式來完成:
DCount("*", "g1cjb", " [班級]>=80")
假若用數(shù)字型變量“n”來替換“80”則如下:
DCount("*", "g1cjb", " [班級]>=" & n)
假若用字符型變量“n”來替換“80”則如下:
DCount("*", "g1cjb", " [班級]>='" & n & "'")
要注意替代的形式是不同的。上面的符號“&”是連接運算符。
2、如何產(chǎn)生程序運行進度框
若在程序運行時能產(chǎn)生一個程序運行進度框?qū)黾硬簧贅啡,ACCESS可以實現(xiàn)這一要求。本人在實踐中摸索出一種簡單的方法,就是通過在窗體中建兩個文本框,一個大一點的長條形文本框(填充色為白色),作為外框,一個窄一點的長條形文本框(填充色為其他彩色,長度取為0.011厘米),作為產(chǎn)生程序運行流水線用,它們的初始狀態(tài)均為不可見。然后在程序中控制其屬性為可見的且修改進度流水線文本框的寬度來顯示程序的進展情況。要注意的是為了讓進度框在程序運行時能及時顯示出來必須用SetFocus 方法將焦點移動到進度框上,并且要調(diào)整好流水線文本框與外框文本框的初始位置。注意,在用Width 屬性改變控件寬度時其單位為“Twip”,1Twip=1/1440英寸,約為1/567厘米。
[此貼子已經(jīng)被作者于2006-3-23 11:52:08編輯過]
|