1 / 45

進階資料處理 第十六章 淺談 Access 程式設計

進階資料處理 第十六章 淺談 Access 程式設計. 鄧姚文 joseph@im.knu.edu.tw http://w3.im.knu.edu.tw/~joseph. 大綱. 程式設計概念 認識 Access 的 VBA 程式設計 SQL 語言. 程式設計概念. 事件驅動 當系統發生某件事情時(滑鼠、鍵盤被按下某個按鍵),才能夠驅動某一個程式模組執行動作 依照使用者不同的動作做出相對的回應 物件導向 把所有的東西都當作物件(表單、報表、控制項) 物件將他自己的屬性與動作封裝在物件內部,依照外在環境的變化做出適當的回應

vinaya
Download Presentation

進階資料處理 第十六章 淺談 Access 程式設計

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 進階資料處理第十六章 淺談Access程式設計 鄧姚文 joseph@im.knu.edu.tw http://w3.im.knu.edu.tw/~joseph

  2. 大綱 • 程式設計概念 • 認識 Access 的 VBA 程式設計 • SQL 語言

  3. 程式設計概念 • 事件驅動 • 當系統發生某件事情時(滑鼠、鍵盤被按下某個按鍵),才能夠驅動某一個程式模組執行動作 • 依照使用者不同的動作做出相對的回應 • 物件導向 • 把所有的東西都當作物件(表單、報表、控制項) • 物件將他自己的屬性與動作封裝在物件內部,依照外在環境的變化做出適當的回應 • DAO: Data Access Object • 將資料包裝成物件

  4. 認識 Access 的 VBA 程式設計 • VBA • Visual Basic for Application • Microsoft 自 Office97 開始推出 VBA • 以 VBA 控制 Office 套件中所有的元件,整合各種應用程式(Word、Excel、Access、PowerPoint) • VBE • Visual Basic Editor • 內建於 Office 套件中的 VBA 編輯器

  5. Hello World!您的第一個 VBA 程式,Step1

  6. Step2

  7. Step 3

  8. Step 4

  9. 基本的程式設計觀念 • 程式執行的方式是由上而下,一行一行執行的 • 每一行程式執行時,是由左到右執行的,執行完後就跳到下一行的開頭,再由左到右執行 • 程式是一種電腦的語言,跟人的語言一樣有一定的文法和用字,而這些都是人創造出來與電腦溝通用的。 • 程式裡面的特殊用字稱為『關鍵字』Keyword • 程式的文法稱為『語法』

  10. VBA 變數宣告與資料型別 • 變數 • 類似數學裡面的『代數』 • F(x)=3x2+4x+7 • 為了敘述計算流程所使用的符號 • 實際的計算結果端視程式執行時變數的『值』而定 • 變數宣告的語法Dim 變數名稱 As 資料型別 • 變數名稱不能夠與 VBA 的關鍵字相同 • 不可以使用標點符號或空白,第一個字元不可以是數字,可以使用中文 • 變數名稱的長度限制為 255 個字元

  11. 資料型別數值類

  12. 資料型別

  13. Hello World! 第二版使用 InputBox 取得輸入

  14. 算數運算運算子 • 加:+ • 減:- • 乘:* • 除:/ • 整數除法:\ • 7 \ 2 = 3 • 指數:^ • 7 ^ 2 = 49 • 取餘數:MOD • 7 MOD 2 = 1

  15. 連接運算子 • 將兩個字串連接在一起 • name & “您好!” • 也可以用 name + “您好!”

  16. 比較運算子 • 等於: = • 大於: > • 小於: < • 大於等於: >= • 小於等於: <= • 不等於: <> • 比較兩物件是否相同: Is • A Is B • 比較兩物件是否相似: Like • “Jo*” Like “John”

  17. 邏輯運算子

  18. 常用符號 • 指定 • A = 2^10 • A = A + 1 • 註解 • A = A + 1 ‘ 將變數 A 的值加 1 • 字串符號 • name = “Joseph” • 日期符號 • today = #2003/5/23# • 接續下一行(使用底線符號) • x = (y^4 + 4*y^3 – 3*y^2 + 2*y) / _ (2*z^3 + 3*z^2)

  19. 型別轉換 • 在一個運算式之中混和不同型別的變數 • 自動型別轉換 • 原則:將精準度低的轉換成精準度高的 • Dim x As Integer, y As Double, z As Doublex = 2y = 3.5z = x + y ‘ 將x轉成Double後與y相加 • 浮點數轉成整數會四捨五入 • Dim x As Integer, y As Doubley = 2.5x = y ‘ x 的值為 3

  20. 型別轉換 • 強制型別轉換 • 轉成布林: CBool(運算式) • 轉成 Byte: CByte(運算式) • 轉成金錢: CCur(運算式) • 轉成日期: CDate(運算式) • 轉成十進位: CDec(運算式) • 轉成整數: CInt(運算式) • 轉成長整數: CLng(運算式) • 轉成單精度: CSng(運算式) • 轉成倍精度: CDbl(運算式) • 轉成字串: CStr(運算式)

  21. 流程控制判斷結構 • If 條件式 Then程式區段一End If • If 條件式 Then程式區段一Else程式區段二End If

  22. 流程控制判斷結構 • Select Case 運算式或變數Case 條件式一 程式區段一Case 條件式二 程式區段二…End Select

  23. 流程控制迴圈 • 在條件的控制下重複執行某件工作

  24. Access 事件 • 事件的發生觸發程式的執行 • 事件的種類 • 資料事件 • 鍵盤事件 • 錯誤與時間事件 • 滑鼠事件 • 篩選事件 • 列印事件 • 焦點事件 • 視窗事件

  25. 資料事件

  26. 資料事件

  27. 視窗事件

  28. 類別模組使用範例由事件觸發程序 • 在表單 OnClose 事件加掛一個類別模組,於表單關閉時蹦出對話方塊,確認表單關閉。 • vbOK, vbCancel, vbOKCancel 常數 • 以 DoCmd 物件方法執行巨集指令 • 範例:ex3-2.mdb

  29. 自訂事件 • 自訂一個 MyTimer 物件類別模組 • 每一秒鐘發出一次 Second 事件 • 倒數完成發出 TimeIsUp 訊息 • 範例 ex3-4.mdb • Private Sub Class_Initialize() 物件被建立時發生 • Private Sub Class_Terminate() 物件被毀滅時發生

  30. 類別模組使用範例存取表單屬性與控制項 • Me 指表單自己 • Me![控制項] • Me.屬性名稱 • Me![控制項].屬性名稱 • Me![Text1].Name • 範例:ex3-2-5.mdb

  31. 類別模組自訂屬性 • 用 Dim、Public、Private 定義屬性 • 用 Property Get 撰寫取得屬性值的方法 • Property Get 屬性名稱() As 屬性資料型態…屬性名稱 = 屬性值[Exit Property] …End Property • 用 Property Let 或 Property Set 設定屬性值 • Property Let 只能設定資料型態的屬性,不能設定物件型態的屬性

  32. 類別模組自訂屬性 • Property Let 屬性名稱(傳入參數 As 資料型態) … [Exit Property] …End Property • Property Set 屬性名稱(傳入參數 As 資料型態) … [Exit Property] …End Property

  33. 標準模組 • 標準模組 • 物件\模組 之中的模組 • 建立自訂函數 • 範例:在報表之中使用自訂函數,顯示國字的數字

  34. Public Function CnConvert1(number As Integer) As String If (IsNull(number)) Then MsgBox "錯誤:傳入值為負值或傳入Null值" Else Select Case number Case 0 CnConvert1 = "零" Case 1 CnConvert1 = "壹" Case 2 CnConvert1 = "貳" Case 3 CnConvert1 = "參" Case 4 CnConvert1 = "肆" Case 5 CnConvert1 = "伍" Case 6 CnConvert1 = "陸" Case 7 CnConvert1 = "柒" Case 8 CnConvert1 = "捌" Case 9 CnConvert1 = "玖" End Select End If End Function Ex3-3.mdb

  35. Public Function CnConvert(number As Long) As String Dim number_string As String Dim number_len As Integer Dim result As String Dim i As Integer result = "" number_string = CStr(number) number_len = Len(number_string) If (number_len > 7) Then MsgBox "數字過大無法轉換" GoTo line End If For i = 1 To number_len Select Case i Case 1 result = CnConvert1(number Mod 10) + " 元整" + result Case 2 result = CnConvert1((number Mod 100) \ 10) + " 拾 " + result Case 3 result = CnConvert1((number Mod 1000) \ 100) + " 佰 " + result Case 4 result = CnConvert1((number Mod 10000) \ 1000) + " 仟 " + result Case 5 result = CnConvert1((number Mod 100000) \ 10000) + " 萬 " + result Case 6 result = CnConvert1((number Mod 1000000) \ 100000) + " 拾 " + result Case 7 result = CnConvert1((number Mod 10000000) \ 1000000) + " 佰 " + result End Select Next CnConvert = result line: End Function Ex3-3.mdb

  36. SQL 語言 • Structural Query Language • 結構化查詢語言 • 以統一的語法存取資料庫

More Related