Thứ Năm

Chương 4: THỦ TỤC CỦA NGƯỜI DÙNG

I. Tham biến và tham trị
II. Đệ qui
III.  Thi hành Macro trong VB
IV. Kích hoạt các ứng dụng khác
V. Gỡ rối mã VB
I. Tham biến và tham trị
Truyền theo tham trị(ByVal): các tham số không thay đổi giá trị
   -  Truyền theo tham biến: giá trị các tham số thay đổi nếu thủ tục gọi có câu lệnh là thay đổi giá trị của chúng
Ví dụ truyền theo tham trị và tham biến
Sub  Thamso(ByVal a As Integer, b As Integer)
    a = a + 1
    b = a
End Sub
‘----------------------
Sub  goi()
 Dim  a  As  Integer : Dim  b  As  Integer
    a = 5: b = 7
    Call  Thamso(a, b)
    Debug.Print   "a=", a
    Debug.Print   "b=", b
End Sub
II. Đệ qui
Trong thủ tục có lời gọi đến chính thủ tục đó
Ví dụ thủ tục đệ qui
Function    Dequi(a As Byte, n As Byte)
     If   n = 0   Then
         Dequi = 1
     Else
         Dequi = Dequi(a, n - 1) * a
     End If
End Function
III.  Thi hành Macro trong VB
Cú pháp:  Docmd.Tên_phương_thức  [các tham số]
     Các phương thức của Docmd có tên và chức năng giống như các thao tác (Action) trong Macro
Sub    Vedau_Click()
            Docmd.GotoRecord    ,  ,  ac First
EndSub

Thiết kế Form đăng nhập hệ thống, yêu cầu người sử dụng phải nhập vào mật khẩu khi muốn sử dụng CSDL
Dim dem As Byte
‘-----------------
Private   Sub    Dongy_Click()
                         If    matkhau = "TTTH"   Then
                        DoCmd.OpenForm   "Giaodien"
                        DoCmd.Maximize
                        ElseIf   dem < 3     Then
                        MsgBox       "Ban nhap sai roi!"
                        dem = dem + 1 :        matkhau = ""
                        matkhau.SetFocus
                        Else
                         MsgBox    "Ban da nhap 3 lan"
                        DoCmd.Quit    acQuitPrompt
                        End If
End Sub


Private Sub Form_Load()
    dem = 1
End Sub
IV. Kích hoạt các ứng dụng khác
1.  Hàm Shell: thực hiện một tập tin chương trình
      Cú pháp:      
   SHELL   (đường dẫn đến tập tin chương trình [,kiểu của sổ])
  2.  Lệnh AppActivate: kích hoạt ứng dụng thành ứng dụng hiện hành
       Cú pháp: APPACTIVATE   tên ứng dụng
  3. Hàm Sendkey: gửi các phím bấm đến một ứng dụng
Cú pháp:  SENDKEY  chuỗi các phím [,True/False]
V. Gỡ rối mã VB
Các loại lỗi có thể gặp:
       Lỗi biên dịch:
             Nguyên nhân: lệnh sai cấu trúc
             Hạn chế: chọn “Auto Syntax Check”
       Lỗi trong lúc thi hành:
            Nguyên nhân: do cố gắng thực hiện một hành động không thể thực hiện được.
            Xử lý: dùng phát biểu ON ERROR để đặt bẫy lỗi
       Lỗi logic của chương trình: kết quả sai
           Nguyên nhân: sai giải thuật
           Phát hiện: Chạy từng bước để kiểm tra (Menu Debug -> Step                                                                                                    Into)
Ví dụ dùng phát biểu On Error để đặt bẫy lỗi
Sub    Vedau_Click()
            On  error    goto    err_VD
            Docmd.GotoRecord    ,  ,  ac First
            err_VD:
             Exit Sub
EndSub

Chương 3: CÁC CẤU TRÚC ĐIỀU KHIỂN VÀ KIỂU DỮ LIỆU CÓ CẤU TRÚC


  1. Các cấu trúc điều khiển:
1. Cấu trúc lựa chọn:
2. Cấu trúc lặp:
3. Lệnh Exit:
II. Kiểu dữ liệu có cấu trúc:
1. Mảng:
2. Bản ghi:
I. Các cấu trúc điều khiển
1. Cấu trúc lựa chọn:
    a. IF .. THEN
     Cú pháp1:
                         IF (điều kiện) THEN  khối lệnh viết trên cùng 1 dòng
            Cp2:    IF  (điều kiện)  THEN
                                         khối lệnh
                                    ENDIF
Ví dụ: 
Cp1:    IF   a >= b  THEN   Debug.Print   a
Cp2:    IF   a >= b  THEN  
                              Debug.Print   a
                        ENDIF
b. IF ..  THEN  ..  ELSE
     Cú pháp:   IF  (điều kiện)  THEN
                              khối lệnh 1
                        ELSE
                              khối lệnh 2
                        ENDIF          
c. IF ..  THEN  ..  ELSEIF
     Cú pháp:   IF  (điều kiện1)  THEN
                                         khối lệnh 1
                                    ELSEIF  (điều kiện2) THEN
                                         khối lệnh 2
                                    
                                    ELSE
                                         khối lệnh
                                    ENDIF            
Ví dụ: IF   a >= b  THEN  
                              Debug.Print   a
                        ELSE
                              Debug.Print   b
                        ENDIF
Ví dụ: IF   (a >= b) and (a >=c)  THEN  
                              Debug.Print   a
                        ELSEIF   (b >= a) and (b >=c)   THEN
                              Debug.Print   b
                        ELSE
                               Debug.Print   c
                        ENDIF
d. SELECT CASE … END SELECT:
Cú pháp: SELECT CASE   biểu thức giá trị
                             CASE   gtrị1:        khối lệnh 1
                             CASE   gtrị2:        khối lệnh 2
                                    
                             CASE ELSE
                                     khối lệnh
                        END SELECT
Ví dụ:
SELECT CASE   n
                        CASE   1:       Debug.Print  “một”
                        CASE   2:       Debug.Print  “hai”
                        CASE   3:       Debug.Print  “ba”
                        CASE   4:       Debug.Print  “bốn”
                        CASE   5:       Debug.Print  “năm”
                        CASE ELSE
                                     Debug.Print  “lớn hơn năm”
END SELECT

2. Cấu trúc lặp:
  a.  FOR .. NEXT
    Cú pháp:
     FOR  biến_đếm=giá trị đầu  TO  giá trị cuối  [STEP bước lặp]
                        khối lệnh
     NEXT  biến_đếm
Ví dụ: Tính tổng 10 số nguyên dương đầu tiên
            Tong = 0
            FOR   i =1  TO  10  [Step 1]
         Tong = Tong + i
            NEXT   i
b. DO WHILE .. LOOP :
  Cú pháp 1:   DO WHILE  (điều kiện)
                                          khối lệnh
                                    LOOP
  Cú pháp 2:   DO
                                              khối lệnh
                                    LOOP WHILE  (điều kiện)
 Cú pháp 3:    WHILE  (điều kiện)
                                         khối lệnh
                                    WEND
Ví dụ: Tính tổng 10 số nguyên dương đầu tiên
            Tong = 0: i =1
            DO WHILE  (i < =10)
                        Tong = Tong + i    :    i =i + 1
            LOOP
                        Tong = 0: i =0
                        DO
                              Tong = Tong + i    :    i =i + 1
                        LOOP WHILE  (i < = 10)

c. DO UNTIL    LOOP:
   Cú pháp 1:  DO UNTIL  (điều kiện)
                                         khối lệnh
                                    LOOP
Cú pháp 2:     DO
                                         khối lệnh
                                    LOOP UNTIL  (điều kiện)
3. Lệnh Exit:
             Exit Do                      Exit For
             Exit Function            Exit Sub
Ví dụ: Tính tổng 10 số nguyên dương đầu tiên
            Cp1:
            Tong = 0: i =1
            DO UNTIL  (i > 10)
                        Tong = Tong + i    :    i =i + 1
            LOOP
            Cp2:    Tong = 0: i = 0
                                    DO
                                         Tong = Tong + i    :    i =i + 1
                                    LOOP UNTIL  ( i > 10)
II. Kiểu dữ liệu có cấu trúc
1. Mảng:
      Khai báo:
            DIM  Tên_mảng (chỉ số1, chỉ số2, …) AS kiểu dữ liệu
     Truy xuất:
            Tên_mảng(chỉ số) 
 Ví dụ:
            Option  Base  1
            Dim    A (10)  As    Integer,  B(3, 4)  As  Integer
            Truy xuất đến phần tử thứ 4 của mảng A:   A(4)
            Truy xuất đến phần tử hàng 2, cột 3 của mảng B:   B(2, 3)
Mảng động:
      Khai báo: DIM  Tên_mảng() AS kiểu dữ liệu
      Thay đổi kích thước:
                        REDIM  Tên_mảng(chỉ số1, chỉ số2, …)
Ví dụ:
            Option  Base  1
            Dim    A ()  As    Integer
            
            REDIM   A(5)
   Xóa mảng:  Erase  Tên_mảng
2. Bản ghi:
       Định nghĩa kiểu:
            TYPE   Tên_kiểu_bản_ghi
                        Thành phần1   AS  kiểu dliệu1
                        Thành phần2   AS  kiểu dliệu2
                        
            END TYPE    
Khai báo:
   Public/Private/Dim  Tên_biến  AS  Tên_kiểu_bản_ghi   
Truy xuất thành phần:
            Tên_biến.Tên_thành phần
Ví dụ:
TYPE   Hocsinh
            Hoten              as         String
    Ngaysinh    as         Date
    Toan           as         Single
ENDTYPE
            Khai báo một biến HS kiểu hocsinh
                        Dim  HS          as         Hosinh
            Truy xuất thành phần Hoten của biến HS
                        HS.Hoten

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Blogger Templates