第6章模塊與VBA編程_第1頁
第6章模塊與VBA編程_第2頁
第6章模塊與VBA編程_第3頁
第6章模塊與VBA編程_第4頁
第6章模塊與VBA編程_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、模塊是Access的一個重要對象,它以VBA編程語言為基礎,以函數(shù)和子過程為單元。使用模塊可以解決循環(huán)控制和數(shù)據(jù)庫自動管理等復雜問題,實現(xiàn)宏所不能實現(xiàn)的功能,大大擴展了數(shù)據(jù)庫的應用范圍。本章將介紹VBA的編程語法、數(shù)據(jù)類型、變量及作用范圍、流程控制、數(shù)組、自定義過程、ADO數(shù)據(jù)庫編程和錯誤調試等內容。模塊對象的功能是用代碼的方式去控制Access中的各種對象。代碼是最靈活的功能實現(xiàn)方式,代碼可以最直接的反映開發(fā)人員的想法和具體實現(xiàn)過程。代碼是一種計算機可以識別的語言。VBA(Visual Basic for Application)就是開發(fā)Access數(shù)據(jù)庫應用程序的編程語言,也是其他Offi

2、ce套件的應用程序開發(fā)語言。模塊可以理解為編寫代碼的場所。程序需要實現(xiàn)什么功能程序最后有什么結果輸出程序執(zhí)行之前需要有什么前提條件輸入模模塊塊如何控制其他對象如何控制其他對象或控件或控件AccessAccess的對象:的對象:DocmdDocmd窗體或控件:窗體或控件:對象的屬性(對象名對象的屬性(對象名. .屬性名屬性名= =值)值)Box0.BackColorBox0.BackColor= = RGB(255,0,0)RGB(255,0,0)對象對象的的方法方法( (對象對象名名. .方法方法名名) )Box0.Move 100,200Box0.Move 100,200怎樣實現(xiàn)怎樣實現(xiàn)特定

3、特定功能功能數(shù)據(jù)類型數(shù)據(jù)類型變量、數(shù)組變量、數(shù)組流程流程控制控制自定義過程自定義過程控制對象及實現(xiàn)功控制對象及實現(xiàn)功能的時機能的時機對象的事件對象的事件算法算法操作要求: 為以下窗體上的各命令按鈕添加單擊事件處理程序,實現(xiàn)各控件功能。知識點:VBA(Visual Basic for Application)是開發(fā)Access數(shù)據(jù)庫應用程序的編程語言,也是其他Office套件的應用程序開發(fā)語言。在Access及其他Office組件的各版本中,都以VBA為核心編程語言,其語言結構和編程環(huán)境都是一樣的。Docmd對象的主要功能是通過調用包含在內部的方法實現(xiàn)對Access的操作。這些內部的方法和宏中的

4、操作基本相同。知識點: MsgBoxMsgBox函數(shù)功能是在對話框中顯示消息。調用格式為:函數(shù)功能是在對話框中顯示消息。調用格式為:MsgBox(Prompt, Buttons, Title)其中,Prompt指定要在對話框中顯示的信息,Prompt可以是常量、變量或表達式;Buttons是整型表達式,指定消息框按鈕的數(shù)目和類型,以及對話框上的圖標;Title指定對話框標題欄顯示信息。 接收用戶輸入數(shù)據(jù)的接收用戶輸入數(shù)據(jù)的InputBoxInputBox函數(shù)函數(shù),格式為:格式為:InputBox(Prompt, Title, Default)其中,Prompt、Title與MsgBox函數(shù)對應

5、的參數(shù)相同;Default是字符串表達式,當在輸入對話框中無輸入時,則該默認值作為輸入的內容。知識點: 域聚合域聚合函數(shù)函數(shù) 1 1)DLookupDLookup函數(shù)函數(shù)函數(shù)功能:從指定記錄集內獲取特定字段的值。語法格式:DLookup(Expr, Domain, Criteria)實例:在“tbl患者”表中查找“患者ID”為10的患者姓名。 DLookup(姓名, tbl患者, 患者ID=10)(2 2)DCountDCount函數(shù)函數(shù)語法格式:DCount(Expr, Domain, Criteria)函數(shù)功能:確定特定記錄集內的記錄數(shù)。實例:計算“tbl患者”表中男患者人數(shù)DCount(

6、*, tbl患者,性別=男 )知識點: MeMeMe表示窗體或報表本身,如果代碼所在的對象是窗體,Me就表示窗體;如果代碼所在的對象是報表,Me就表示報表。代碼如下: Me.text1 表示窗體或報表上的控件text1 注釋語句注釋語句可使用Rem或單引號()添加注釋語句。使用Rem注釋時,Rem必須位于行首,不能位于程序語句之后;單引號注釋可位于行首或程序語句句尾。程序執(zhí)行時不會運行注釋語句,會將其忽略掉。 在窗體中實現(xiàn)如下功能。單擊“顯示”按鈕,可以在對應的文本框中顯示當前的日期、星期幾和現(xiàn)在時間。單擊“清除”按鈕可以將所有文本框中的內容去掉。 date() weekday() time(

7、)知識點: 窗體窗體的的TimerTimer事件事件窗體的 Timer 事件按窗體的 TimerInterval 屬性指定的時間間隔定期發(fā)生。 窗體窗體的的TimerIntervalTimerInterval屬性屬性使用 TimerInterval 屬性可以為窗體的 Timer 事件指定時間間隔(以毫秒為單位)。 RndRnd函數(shù)函數(shù)Rnd 函數(shù)返回小于 1 但大于或等于 0 的值為了生成某個范圍內的隨機整數(shù),可使用以下公式:Int(upperbound - lowerbound + 1) * Rnd + lowerbound) 在窗體中實現(xiàn)如下功能。單擊“飛一會”按鈕,窗體中的紅色矩形可以在

8、窗體的主體范圍內隨機“飛動”,并且矩形顏色可以隨機變動。單擊“停止”按鈕,矩形將停下來。操作要求: 根據(jù)體重指數(shù)公式計算用戶的體重指數(shù)。 已知:體重指數(shù)=體重(Kg)/身高(m)2 注:指數(shù)保留1位小數(shù)知識點:變量是指在程序中其值允許改變的量。每一個變量都必須有一個名稱,可以使用Dim聲明變量,聲明格式:Dim Dim 變量變量名名 As As 數(shù)據(jù)類型數(shù)據(jù)類型 賦值語句: 賦值語句是為變量指定一個值或表達式。通常以等號(=)連接。 Let Let 變量名變量名= =值或表達式值或表達式知識點:數(shù)據(jù)類型是按被定義變量的性質、表現(xiàn)形式、占用存儲空間的多少、構造特點來劃分的。在Access中,創(chuàng)建

9、表對象時涉及的很多字段數(shù)據(jù)類型,在VBA中都有對應的變量數(shù)據(jù)類型。知識點:用Dim語句聲明多個變量時,需特別注意:Dim Dim x1 As Integer, x2 As Integer, x3 As Integer x1,x2,x3x1 As Integer, x2 As Integer, x3 As Integer x1,x2,x3均為均為integerinteger型型Dim x1, x2, x3 As Integer x1Dim x1, x2, x3 As Integer x1和和x2x2為為VariantVariant型,型,x3x3為為integerinteger型型 在“圓周長面

10、積計算”窗體上實現(xiàn)如下運算:操作要求:基于實例2,使用If語句對用戶輸入的身高、體重信息進行檢查,如果輸入的值小于0,則給出錯誤提示;如果輸入正確,則計算體重指數(shù)?;谏弦粚嵗?,使用Select語句,根據(jù)體重指數(shù)顯示WHO標準中相應的評價如下圖所示:知識點:分支結構是在程序執(zhí)行時根據(jù)不同的條件選擇執(zhí)行不同語句的結構。在VBA中有兩種選擇語句:If語句和Select Case語句。知識點:IF語句語法格式格式1:If 條件表達式 Then 語句格式2:If條件表達式 Then 語句塊End If格式3:If 條件表達式 Then 語句塊1Else 語句塊2End If格式4If 條件語1 The

11、n 語句組1elseif 條件2 Then 語句組2elseif 條件3 Then 語句組3 elseif 條件n Then 語句組nelse 語句組n+1end if 語句塊中可以是任何語句,可以是一行或多行語句。知識點:Select Case語句語法格式格式1:Select Case 表達式 Case 條件1 語句序列1 Case 條件n 語句序列n Case Else 語句序列x End Select Select Case語句運行時,首先計算Select Case 后面“表達式”的值,然后將表達式的值依次與Case后的條件進行比較,直到匹配成功,然后執(zhí)行第一個相匹配的Case條件后的語

12、句序列,并結束Select Case語句。如果沒有匹配的Case條件,則執(zhí)行Case Else后的語句序列并結束Select Case語句。Case后的“條件”有以下幾種形式:(1) 單個值或一列值,相鄰兩個值之間用逗號隔開,例如,Case A,B。(2) 用關鍵字To指定值的范圍,其中第1個值不應大于第2個值,例如,Case C To E、Case 1 to 5。(3) 使用關鍵字Is接關系運算符指定范圍,例如,Case IsQ。(4) 以上各種條件可以混用,例如,Case A,B,C To E, Is Q操作要求:世界人口狀況報告統(tǒng)計顯示,2011年世界總人口達到70億,按年人口增長率1.

13、2%算,50年后世界人口數(shù)量將達多少?到哪一年世界人口數(shù)將會超過80億?例 計算累加程序:S=1+2+3+4.+n,并輸出結果。Dim i As IntegerDim n As IntegerDim s As Integern = Me.Text3For i = 1 To n Step 1 s = s + iNext iMe.Text5 = si=1i0時:循環(huán)變量值終值,退出循環(huán)。(2)步長=終值,循環(huán)繼續(xù); 循環(huán)變量值終值,退出循環(huán)。(3)步長=0時:循環(huán)變量值終值,一次也不執(zhí)行循環(huán)。(4)步長為1時,關鍵字Step可以省略。步長一般是整數(shù)取值,用實數(shù)也可以,但不常見。For k=5 to

14、 10 Step 2 k=2*kNext k知識點:Do Loop循環(huán)語句結構UntilDo Until 條件式循環(huán)體Loop 運行時,只有在“條件式”為假時才執(zhí)行“循環(huán)體”,直到“條件式”為真時結束循環(huán)。Do 循環(huán)體Loop Until 條件式 程序運行時,先執(zhí)行一次“循環(huán)體”,然后再判斷“條件式”,如果“條件式”為假,則繼續(xù)執(zhí)行“循環(huán)體”,直到“條件式”為真時結束循環(huán)。知識點:Do Loop循環(huán)語句結構WhileDo While 條件式循環(huán)體Loop 運行時,當“條件式”為真時執(zhí)行“循環(huán)體”。Do 循環(huán)體Loop While 條件式 運行時,先執(zhí)行一次“循環(huán)體”,然后對“條件式”的值進行判

15、斷,當“條件式”為真時執(zhí)行“循環(huán)體”??稍凇把h(huán)體”的條件語句中使用“Exit Do”強制退出DoLoop循環(huán)。操作要求:已知附子、半夏、天南星有毒性,它們對應的中藥ID為125、169、170。當在窗體中錄入上述有毒性的藥物時,系統(tǒng)將給予提示。知識點: 數(shù)組是在程序設計中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來的一種形式。數(shù)組必須先聲明后使用。 聲明數(shù)組的格式為:格式一:Dim 數(shù)組名(下標上界) As 數(shù)據(jù)類型格式二:Dim 數(shù)組名(下標下界 to 下標上界) As 數(shù)據(jù)類型 數(shù)組的聲明實際上是為系統(tǒng)提供了數(shù)組名、數(shù)組類型、數(shù)組的大小等信息。默認情況下,數(shù)組下標下界為

16、0??梢栽谀K的聲明區(qū)域使用Option Base 0/1來指定數(shù)組的默認下標下界是0或1。操作要求:創(chuàng)建計算體重指數(shù)的Function過程,并通過調用該過程給文本框賦值。知識點: Function過程用于定義具有返回值的函數(shù)。Function 過程定義格式為:Function 函數(shù)名(參數(shù)1 as 數(shù)據(jù)類型,參數(shù)2 as 數(shù)據(jù)類型 ) As 數(shù)據(jù)類型程序代碼End Function知識點: 關于聲明格式的幾點說明:(1) 函數(shù)的返回值是通過給“函數(shù)名”賦值實現(xiàn)的。在函數(shù)中,至少要對函數(shù)名賦值一次。(2) (4) As 數(shù)據(jù)類型語句為函數(shù)指定返回值的類型。若省略類型指定,則函數(shù)返回變體類型(V

17、ariant)的數(shù)據(jù)。(3) (3) 同一模塊內不允許出現(xiàn)同名過程,但允許在不同模塊中出現(xiàn)同名過程。調用同名過程格式為:模塊名.過程名。(2) 若要調用函數(shù),通過使用函數(shù)名,并在其后的圓括號中給出所需的參數(shù)列表來實現(xiàn)。(5) 函數(shù)有返回值,因此在調用函數(shù)時,既可以在賦值語句中將函數(shù)的返回值賦值給變量,又可以將返回值作為過程的參數(shù)使用。(6) 在函數(shù)過程中,可以使用Exit Function語句中斷并退出函數(shù)。知識點: Sub過程又稱為子過程、子程序,無返回值。Sub過程定義格式為:Sub 子過程名(參數(shù)1 as 數(shù)據(jù)類型,參數(shù)2 as 數(shù)據(jù)類型)子過程代碼End Sub知識點: 在Sub過程內

18、的任何位置都可以使用Exit Sub語句。 調用Sub過程的方法是直接調用過程名,或使用關鍵字Call調用。示例代碼如下:Sub subMsg() MsgBox Happy New Year!End Sub調用subMsg過程的兩種方法 subMsg 調用Sub過程,方式1 Call subMsg 調用Sub過程,方式2知識點: 參數(shù)傳遞參數(shù)可分為形參(形式參數(shù))和實參(實際參數(shù))。聲明過程時設置的參數(shù)稱為形參;調用過程時,傳遞給過程的參數(shù)稱為實參。使用ByVal修飾的形參表示該參數(shù)按值傳遞。ByRef修飾的形參表示該參數(shù)按地址傳遞。ByRef是VBA的缺省選項。操作要求:本實例介紹在標準模塊

19、中使用公共變量和公共過程實現(xiàn)信息共享的方法。知識點: 模塊的分類VBA代碼可包含在Access類對象和模塊中。Access類對象是窗體或報表的組成部分,通常只包含被窗體和報表自身調用的代碼;模塊也稱為標準模塊,是Access數(shù)據(jù)庫的一種對象,通常包含可在整個數(shù)據(jù)庫中使用的“全局”代碼。知識點: 變量的作用域變量的作用域是變量在程序中的有效范圍。根據(jù)聲明關鍵字(如Dim、Public等)和聲明變量的位置不同,可將變量的作用域分為:過程級變量、模塊級變量和公共變量。(1)過程級變量:在過程內使用Dim關鍵字聲明的變量或過程內的隱式變量。過程級變量僅在聲明變量的過程中有效。過程級變量具有在過程內部使

20、用的最高優(yōu)先級,即當存在與過程級變量同名的模塊級變量或公共變量時,模塊級的變量或公共變量被屏蔽。(2)模塊級變量:在類對象或模塊對象的“聲明”區(qū)域使用Dim關鍵字聲明的變量。這些變量可供該模塊中的所有過程使用。(3)公共變量:在模塊對象的“聲明”區(qū)域使用Public關鍵字聲明的變量。數(shù)據(jù)庫中任何過程都可以共享公共變量。知識點: Function過程和Sub過程的作用域聲明Function過程或Sub過程時可使用Public或Private關鍵字修飾。在標準模塊中,使用Public修飾的過程表示所有模塊的所有其他過程都可調用這個過程。在標準模塊或類對象中,使用Private修飾的過程,表示只有包

21、含其聲明的模塊內的其他過程可以調用該過程。操作要求:在“立即窗口”中輸出全部醫(yī)生的“醫(yī)生ID”、“姓名”、“職稱”信息。知識點: ADO,即ActiveX數(shù)據(jù)對象(ActiveX Data Objects),是基于組件的數(shù)據(jù)庫編程接口。 Connection對象為用戶定義連接到數(shù)據(jù)源的會話,使用Connection對象前必須先聲明和實例化。Connection的Open方法用于建立同數(shù)據(jù)源的連接。該方法完成后,就建立了同數(shù)據(jù)源的物理連接。Close方法用于關閉一個數(shù)據(jù)庫連接。 RecordSet對象可承載表或查詢中的記錄。要使用RecordSet對象,必須先聲明并實例化,RecordSet對象的Open方法用來將它指向一組記錄集。本實例使用了Connection對象,實際應用中,也可以不用Connection對象,直接使用以下方法打開記錄集:rst.Open Select 醫(yī)生ID,姓名,職稱 from tbl醫(yī)生, CurrentProject.Connection知識點: Recordset的GetString方法將RecordSet中的內容作為字符串返回。 使用Close方法可關閉Connection、RecordSet等對象,以釋放關聯(lián)的系統(tǒng)資源,被關閉的對象可再次打開。 Set可將對象引用賦給變量;也可將Nothing賦給變量,以斷絕該變量與任何對象的關聯(lián)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論