Access最重要的特征就是一般不必去寫程序,然而可能因為要執行復雜或專業的操作而必須在模塊中用
Visual Basic編寫程序,然後通過窗體中的命令按鈕來執行相應的程序完成相應的任務。比如排名次、分段統計等。在編寫Visual Basic程序時要注意以下一些問題和技巧。
1、變量的運用
①對象變量的運用
在Access中運用Visual Basic編寫程序,需要運用其數據訪問對象。它包括
數據庫引擎(DBEngine)、工作空間(Workspace)、數據庫以及數據庫對象中的表、查詢、記錄集等對象。如缺省工作空間:DBEngine.Workspaces(0),當前數據庫:DBEngine.Workspaces(0).Databases(0)。我們可以用一個對象變量來表示一個對象,這樣將為編程帶來很大方便。為對象變量賦值要用Set語句,而不要直接賦值。例如:
Dim thedb As Database
Set thedb = DBEngine.Workspaces(0).Databases(0)
②Variant 數據類型的運用
Variant 數據類型是所有沒被顯示聲明(如 Dim、Private、Public 或 Static等語句)為其他類型變量的數據類型。Variant 是一種特殊的數據類型,除了定長 String 數據及用戶定義類型外,可以包含任何種類的數據。Variant 也可以包含 Empty、Error、Nothing 及 Null特殊值。Empty 值用來標記尚未初始化(給定初始值)的 Variant 變量。內含 Empty 的 Variant 在數值的上下文中表示 0,如果是用在字符串的上下文中則表示零長度的字符串 ("")。Null 表示未知數據或丟失的數據,即無效數據。不應將 Empty 與 Null 弄混。Null 是表示 Variant 變量確實含有一個無效數據。
當有些量可能出現Null值時,可將該變量定義為Variant 數據類型。Variant 數據類型為編程者提供很大的靈活性,但犧牲了代碼的速度和長度。
③通過變量來間接引用數據庫對象及限定條件
為了增加靈活性,提高控制能力,減少代碼的重復和運用循環語句,在程序中應充分運用變量來間接引用數據庫對象和限定條件。比如各個年級學生成績排名次的處理程序,只是各年級的成績表名不同,我們可以將程序中的成績表名用一個變量如“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”本身就是一個已存在的數表名,則上述最後一個語句中的“bzcjb”應加上引號,如下所示:
Set thecsb = thedb.OpenRecordset("bzcjb", DB_OPEN_DYNASET)
再比如Dcount 函數可用於確定特定記錄集中的記錄數。可以在 Visual Basic、宏、查詢表達式,或計算控件中使用 DCount 函數。
語法是:DCount(expr, domain[, criteria])
其參數如下:
expr 表達式,用於標識將統計其記錄數的字段。可以是一個標識表或查詢中字段的字符串表達式。 Expr可為字段的名稱或“*”,除非是“*”, Dcount 函數對包含空字段的記錄不記數,若為“*”,Dcount 函數計算記錄總數。domain字符串表達式,代表組成域的記錄集,可以是表的名稱或查詢的名稱。criteria 可選的字符串表達式,用於限制 DCount 函數執行的數據范圍。對於其限制條件criteria 可用一個變量來代替,比如要統計表“g1cjb”中字段“語文”分數大於等於80分的人數,可用下式來完成:
DCount("*", "g1cjb", " [班級]>=80")
假若用數字型變量“n”來替換“80”則如下:
DCount("*", "g1cjb", " [班級]>=" & n)
假若用字符型變量“n”來替換“80”則如下:
DCount("*", "g1cjb", " [班級]>='" & n & "'")
要注意替代的形式是不同的。上面的符號“&”是連接運算符。
2、如何產生程序運行進度框
若在程序運行時能產生一個程序運行進度框將會增加不少樂趣,Access可以實現這一要求。本人在實踐中摸索出一種簡單的方法,就是通過在窗體中建兩個文本框,一個大一點的長條形文本框(填充色為白色),作為外框,一個窄一點的長條形文本框(填充色為其他彩色,長度取為0.011厘米),作為產生程序運行流水線用,它們的初始狀態均為不可見。然後在程序中控制其屬性為可見的且修改進度流水線文本框的寬度來顯示程序的進展情況。要注意的是為了讓進度框在程序運行時能及時顯示出來必須用SetFocus 方法將焦點移動到進度框上,並且要調整好流水線文本框與外框文本框的初始位置。注意,在用Width 屬性改變控件寬度時其單位為“Twip”,1Twip=1/1440英寸,約為1/567厘米。