Giáo trình Access - Chương 8: Modules - Lập trình

Visual Basic là ngôn ngữ lập trình cho Access, chúng ta sử dụng nó như cách sử dụng tập lệnh

để có thể lien kết các đối tượng trong ứng dụng với nhau nhằm tạo một hệ thống chương trình

mạch lạc. Điểm khác biệt là Visual Basic cung cấp nhiều sức mạnh và mềm dẻo hơn tập lệnh.

pdf139 trang | Chia sẻ: zimbreakhd07 | Lượt xem: 1476 | Lượt tải: 1download
Bạn đang xem trước 20 trang nội dung tài liệu Giáo trình Access - Chương 8: Modules - Lập trình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
GIÁO TRÌNH ACCESS – CHƯƠNG 8: MODULES _LẬP TRÌNH I. BỘ MÃ LỆNH (MODULES) 1) Visual Basic là gì ? Visual Basic là ngôn ngữ lập trình cho Access, chúng ta sử dụng nó như cách sử dụng tập lệnh để có thể lien kết các đối tượng trong ứng dụng với nhau nhằm tạo một hệ thống chương trình mạch lạc. Điểm khác biệt là Visual Basic cung cấp nhiều sức mạnh và mềm dẻo hơn tập lệnh. 2) Khi nào sử dụng tập lệnh và Visual Basic : Bạn có thể sử dụng Visual Basic thay thế cho tập lệnh khi bạn thực hiện các công việc sau :  Để cho ứng dụng của bạn dễ dàng bảo trì vì tập lệnh là một đối tượng hoàn toàn tách riêng lẻ với các biểu mẫu và các báo cáo sử dụng nó, một ứng dụng chức đựng một số lớn các tập lệnh trong biến cố của các biểu mẫu và các báo cáo sẽ gây cho bạn khó khăn khi bảo trì. Ngược lại khi bạn sử dụng Visual Basic thì các đoạn lệnh này sẽ được xây dựng ngay bên trong các biểu mẫu và các báo cáo tại đúng các biến cố đó. Nếu bạn di chuyển các biểu mẫu hay các báo cáo sang một tập tin CSDL khac trong Access thì các đoạn lệnh này cũng sẽ mang theo cùng.  Tạo ra các hàm của riêng mình : Sử dụng VB bạn có thể tạo ra các hàm của riêng mình dung để thực hiện các phép tính vượt quá khả năng của một biểu thức hay thay thế một biểu thức quá phức tạp mà bạn đạ viết bên trong ứng dụng.  Che đậy các thông báo lỗi : Khi có một sự cố ngoài ý muốn xảy ra trong khi ứng dụng của bạn đang vận hành và Access sẽ hiển thị một thông báo lỗi, thông báo này sẽ làm cho người sử dụng khó hiểu đặc biệt khi họ chưa quen sử dụng Access. Sử dụng VB, bạn có thể phát hiện các lỗi này khi nó xảy ra và sẽ hiển thị thông báo lỗi của riêng mình bằng tiếng Việt hay có thể buộc ứng dụng làm một việc khác.  Tạo hay sửa các đối tượng : Chúng ta thường tạo hay sửa các đối tượng bằng cách mở đối tượng ra ở chế độ thiết kế. Trong một vài trường hợp đặc biệt chúng ta phải sử dụng VB để thực hiện.  Thực hiện các hàm hệ thống : Bạn có thể sử dụng tập lệnh RunApp để có thể kích hoạt một ứng dụng khác chạy trên Windows hay MS-Dos ngay bên trong ứng dụng Access nhưng bạn không thể sử dụng tập lệnh này để làm nhiều việc khác bên ngoài Access. Sử dụng VB bạn có thể kiểm tra xem một tập tin có tồn tại trong hệ thống của bạn không, sử dụng việc trao đổi dữ liệu động (DDE-Dynamic Data Exchange) để liên lạc với các ứng dụng khác trên Windows nhu Excel.  Truy cập các bản ghi (records) : Chúng ta sử dụng VB để có thể truy cập vào từng dòng trong một bản ghi và thực hiện các hành động thêm, xóa, sửa mà không cần sử dụng công cụ truy vấn. 3) Cách tạo : Phần khai báo Hộp đối tượng Hộp thủ tục Chọn mục Modules  Nhấn nút NewHiện hộp thoại : Câu lệnh chia thành 3 loại : Lệnh khai báo, lệnh gán và lệnh xử lý. Nút xem toàn bộ thủ tục Phần thủ tục Nút xem thủ tục  Thông thường mỗi dòng là một lệnh. Nhưng ta có thể viết nhiều lệnh trên một dòng bằng cách phân cách chúng bằng dấu “;” hay một lệnh có thể viết trên nhiều dòng bằng cách sử dụng ký tự nối câu lệnh”_’ở cuối mỗi dòng.  Thủ tục là một dãy các câu lệnh để thực hiện một nhiệm vụ hay tính toán một giá trị nào đó.  Một tập hợp các lệnh khai báo, các thủ tục được lưu trữ chung trong một đơn vị gọi là bộ mã lệnh hay Modules. Có hai loại bộ mã lệnh : Bộ mã lệnh chuẩn (Standard Modules) và bộ mã lệnh lớp (Class modules). Mỗi thủ tục trong Modules có khả năng là một hàm, thủ tục biến cố hay một chương trình con. Bộ mã lệnh chuẩn :  Thủ tục trong bộ mã lệnh chuẩn là chương trình con hay hàm.  Thủ tục trong bộ mã lệnh chuẩn không gắn liền với bất kỳ một đối tượng nào.  Thủ tục trong bộ mã lệnh chuẩn được gọi bởi thủ tục của bộ mã lệnh bất kỳ nào trong tập tin CSDL.  Để tạo một bộ mã lệnh chuẩn, trong cửa sổ CSDL, ta chọn loại đối tượng Modules nhắp nút New. Khi xuất hiện cửa sổ Modules ta gõ lệnh khai báo trong phần khai báo và tạo các chương trình con hay hàm rồi đóng cửa sổ Hộp thủ tục chứa tên thủ tục Hộp đối tượng chứa các đối tượng modules. Khi hộp thoại yêu cầu chọn lựa lưu hay không xuất hiện, ta chọn đồng ý và đặt tên cho bộ mã lệnh chuẩnClick OK. Bộ mã lệnh lớp :  Bộ mã lệnh lớp là chương trình con, hàm hay thủ tục biến cố.  Thủ tục trong bộ mã lệnh lớp có thể gọi các thủ tục trong bộ mã lệnh chuẩn. Chứa tên thủ tục Tên các đối tượng  Ta có thể tạo bộ mã lệnh lớp tồn tại độc lập với đối tượng biểu mẫu, báo cáo.  Thủ tục biện cố được tự động gọi khi xẩy ra một biến cố như nhắp chuột, rê chuột, gõ phím,…  Để tạo một thủ tục biến cố, trong cửa sổ mã lệnh, bên hộp đối tượng ta chọn đối tượng, còn bên hộp thủ tục ta chọn biến cố. II. LỆNH KHAI BÁO 1) Khái niệm :  Ta có thể dùng các lệnh khai báo (Declaration statements) để đặt tên và định nghĩa thủ tục (Procedures), biến (Variables), mảng (Array) và hằng (Constants), loại dữ liệu do người dùng định nghĩa. Tầm ảnh hưởng của biến phụ thuộc vào vị trí khai báo biến. 2) Các lệnh khai báo : a) Lệnh Option Compare o Ý nghĩa : Dùng để khai báo cách thức so sánh chuỗi ký tự. o Cú pháp : Option compare {Binary | Text | Database } o Vị trí : Lệnh được sử dụng trong phần khai báo của bộ mã lệnh. Giải thích : Binary : So sánh chuỗi ký tự căn cứ vào thứ tự nhị phân của bảng mã các ký tự. Text : So sánh chuỗi ký tự không phân biệt chữ hoa chữ thường. Database : so sánh chuỗi ký tự dựa vào đặc điểm riêng của bộ mã ký tự của từng địa phương. b) Lệnh Option Explicit o Ý Nghĩa : Các biến phải được khai báo trước khi sử dụng. o Cú pháp : Option Explicit o Vị trí : Lệnh được sử dụng trong phần khai báo của bộ mã lệnh. c) Lệnh Dim  Ý Nghĩa : Khai báo tên và loại dữ liệu hay loại đối tượng của biến.  Cú pháp : Dim tenBien[([chieu])] [As [new] laoidulieu] [, tenBien[([chieu])] [As [New] loaidulieu]]…  Vị trí : Tênbiến : Tên biến. Chieu : Qui định số chiều và số phần tử ở mỗi chiều của biến mảng. Chiều có dạng : [choSothap To] chiSoCao [,[chisoThap to] choSoCAo] New : Dùng cho biến loại đối tượng. New là tạo một đối tượng mới và khởi gán biến tham chiếu đến đối tượng vừa tạo. Một biến được khai báo New thì không cần dùng lệnh set để tham chiếu cho biến. Loaidulieu : Loại dữ liệu của biến. Là một trong các loại Byte, Boolean, Integer, Long, Curremcy, Single, Double, Date, String, String *Length, Object, Variant, loại do người dùng định nghĩa hay một loại đối tượng Ví dụ : Dim myInt As integer Dim X as New WorkSheet Dim NgayLe (1 to 20 ) As Date d) Lệnh Const  Ý Nghĩa : Khai báo tên hằng và giá trị mà chúng đại diện.  Cú pháp : [Public | Private] Const TenHang [As loaiDulieu] = bieuThuc  Vị trí : Lệnh nằm trong thủ tục hay trong phần khai báo của modules.  Giải thích : Public : Hằng được dùng trong thủ tục của bất kỳ Modules nào. Private : Hằng chỉ được dùng trong thủ tục của modules chứa lệnh Const TenHang : Tên hằng. LoaiDulieu : Là một trong các kiểu dữ liệu. e) Lệnh Type  Ý Nghĩa : Dùng để khai báo một loại dữ liệu cấu trúc.  Cú pháp : [Private | Public] Type Tenloai tenThanhPhan [([chieu]}] As loaiDuLieu [tenThanhPhan [([chieu]}] As loaiDuLieu] End Type  Vị trí : Lệnh được dùng trong khai báo của Module.  Giải thích : Tenloai : Tên loại dữ liệu cấu trúc. Chieu : Qui định số chiều và số phần tử ở mỗi chiều của biến mảng. Loaidulieu : Loại dữ liệu củ biến. Ví dụ : Type diem X As Double Y as Double End Type f) Lệnh Sub  Ý Nghĩa : Dùng để khai báo tên thủ tục, tham số, và các lệnh thủ tục của Sub.  Cú pháp : [Private | Public ] [static] Sub tenThuTuc [(danhSachThamSo)] [lenh] [Exit Sub] [lenh] end sub  Vị trí : Lệnh được dùng trong phần thủ tục của Modules.  Giải thích : Private : Phạm vi ảnh hưởng : trong Modules chứa lệnh. Public : Phạm vi ảnh hưởng : trong tất cả modules của tập tin CSDL. Static : Biến cục bộ sẽ được bảo lưu giá trị. DanhsachThamSo : Gồm các tham số cách nhau bởi dấu phẩy. Ví dụ 1: Tính cạnh huyền của một tam giác. Sub TinhCanhHuyen(ByVal canhA As Double, ByVal canhB As Double) Dim CanhHuyen As double CanhHuyen =(CanhA^2 + CanhB^2) ^ 0.5 Msgbox Csrt (canhHuyen), vbOkOnly, “Tinh Canh Huyen” End Sub Ví dụ 2 : Sub mainSub() Dim bienInt As Integer bienInt = 5 TruyenTri bienInt MsgBox bienInt, vbOKOnly, "Truyen Tri" TruyenThamChieu bienInt MsgBox bienInt, vbOKOnly, "Truyen Tham Chieu" End Sub Sub TruyenTri(ByVal ThamSoint As Integer) ThamSoint = 10 End Sub Sub TruyenThamChieu(ByRef ThamSoint As Integer) ThamSoint = 10 End Sub Ví dụ 3 : Sub tinhTong(ParamArray SotienArray() As Variant) Dim tongtien As Variant, Sotien As Variant For Each Sotien In SotienArray tongtien = tongtien + Sotien Next Sotien MsgBox tongtien, vbOKOnly, "Tong so tien" End Sub Ví dụ 4 : Sub soNgayDasong(ByVal Ngaysinh As Date, Optional ByVal ngayhientai As Variant) Dim soNgay As Integer If IsMissing(ngayhientai) Then ngayhientai = Date End If soNgay = ngayhientai - Ngaysinh MsgBox soNgay, vbOKOnly, "So ngay da song " End Sub Chú ý : Để chạy thử các thủ tục trên, ta vào cửa sổ Debug và gõ TinhCanhHuyen 4,5 MainSub TinhTong 1,2,3,4,5 SoNgayDaSong #12/5/1980# hay SoNgayDaSong #12/5/1980#, #04/03/2001# g) Lệnh Function :  Ý Nghĩa : Dùng để khai báo tên hàm, tham số, và loại dữ liệu trả về của hàm.  Cú pháp : [private | Public ][Static] Function tenHam([danhsachThamso]) [as loaiDulieu] [lenh] [tenham =bieuthuc] [Exit Function] [lenh] [tenHam = bieuthuc] End Function.  Vị trí : Lệnh được dùng trong phần thủ tục của Module.  Giải thích : Giống Sub Ví dụ 1: Tính cạnh huyền của một tam giác. Function TinhCanhHuyen(ByVal canhA As Double, ByVal canhB As Double) As Double Dim CanhHuyen As double CanhHuyen =(CanhA^2 + CanhB^2) ^ 0.5 TinhCanhHuyen =CanhHuyen End Function Ví dụ 2 : Function tinhTong(ParamArray SotienArray() As Variant) As Double Dim tongtien As Variant, Sotien As Variant For Each Sotien In SotienArray tongtien = tongtien + Sotien Next Sotien TinhTong = tongtien End Function Ví dụ 4 : Function soNgayDasong(ByVal Ngaysinh As Date, Optional ByVal ngayhientai As Variant) As Integer Dim soNgay As Integer If IsMissing(ngayhientai) Then ngayhientai = Date End If soNgay = ngayhientai – Ngaysinh soNgaydasong = songay End Function Chú ý : Để chạy thử các thủ tục trên, ta vào cửa sổ Debug và gõ ? TinhCanhHuyen (4,5) ? TinhTong (1,2,3,4,5) ? SoNgayDaSong (#12/5/1980#) hay ? SoNgayDaSong (#12/5/1980#, #04/03/2001#) h) Lệnh Redim  Ý Nghĩa : Khai báo lại số chiều của mảng.  Cú pháp : Redim [Preserve ] tenBien(chieu) [As loaidulieu][, tenBien(chieu) [as loaidulieu]]  Vị trí : Lệnh được dùng trong thủ tục.  Giải thích : Preserve : dùng để lưu dữ liệu đang có trong mảng. TenBien : Tên biến đã khai báo bằng lệnh Dim. Chieu : Qui định số chiều và số phần tử của mảng. Loaidulieu : Loại dữ liệu của biến i) Lệnh Option Base  Ý Nghĩa : Khai báo chỉ số biến thấp của mảng.  Cú pháp : Option Base {0 | 1}  Vị trí : Lệnh được dùng trong phần khai báo.  Giải thích : 0 : chỉ số bắt đầu bằng 0. 1 : chỉ số bắt đầu bằng 1. Ví dụ : Option Base 0 Sub optionBase() Dim mangSoNguyen(5) As Single Dim chiso As Integer For chiso = 1 To 5 mangSoNguyen(chiso) = Rnd() Next chiso End Sub Option Base 1 Sub optionBase() Dim mangSoNguyen(5) As Single Dim chiso As Integer For chiso = 1 To 5 mangSoNguyen(chiso) = Rnd() Next chiso End Sub III. LỆNH GÁN (ASIGNMENT STATEMENTS) 1) Khái niệm : Dùng để gán giá trị cho một biến hay một hằng. Lệnh gán được sử dụng trong thân của thủ tục. 2) Các lệnh gán : a) Lệnh Lct :  Ý Nghĩa : Gán giá trị một biểu thức cho một biến.  Cú pháp : [Let] tenBien| tenHam = BieuThuc tenBien.TenThanhPhan = BieuThuc tendoiTuong{ . | ! } {Thuoctinh | tenDoiTuong) = BieuThuc  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : TenBien : Tênbiến khai báo trong lệnh Dim hay trong tham số của thủ tục. TenThanhPhan : tên thành phần trong lệnh Type. Thuoctinh : Aùp dụng khi tenbien1 là đối tượng. TenDoiTuong : Tên đối tượng. TenHam : tên hàm khai báo trong lệnh Function. BiueThuc : biểu thức mà giá trị nó gán cho biến. Ví dụ : Function lenhgan(hocsinhPar As hocsinhtype) As Integer Dim hocsinhVar As hocsinhtype Dim myDB As Database 'Gan gia tri vao tenBien.TenThanhPhan hocsinhPar.hsMa = 1 hocsinhPar.hoten = "Nguyen Minh Hung" hocsinhPar.malop = "CDTH4A" 'tenBien la loai du lieu dinh nghia boi lenh Type hocsinhVar = hocsinhPar 'tenBien Forms!hocsinhFrm!hsMa = 5 Forms!hocsinhFrm!hsMa.Visible = True 'tenHam lenhgan = 5 End Function b) Lệnh Set :  Ý nghĩa : Gán đối tượng cho một biến thuộc loại đối tượng tương ứng.  Cú pháp : Set tenBien = {[New] bieuThuc | Nothing}  Vị trí : lệnh được dùng trong thủ tục sau khi khai báo.  Giải thích : TenBien : Khai báo trong lệnh Dim hay trong tham số thủ tục. Bieuthuc : Biểu thức có giá trị là một đối tượng. Ví dụ : Sub tinhtong Dim myDB as database Dim mySet As recordset Set myDb = CurrentDB Set mySet = myDb.OpenRecordSet(“NhanVien”) End Sub IV. LỆNH XỬ LÝ 1) Cấu trúc điều khiển a) Cấu trúc If … Then một dòng  Ý nghĩa : Điều kiện có giá trị True thì thi hành câu lệnh, ngược lại chuyển điều khiển đến lệnh kế tiếp.  Cú pháp : If dieukien Then caulenh Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : Dieukien : là một biểu thức luận lý. CauLenh : câu lệnh gán hay xử lý. Ví dụ : If hocsinhVar.Hsma = 5 Then hocsinhVar.lMa =2 b) Cấu trúc If … Then nhiều dòng  Ý nghĩa : dieukien có giá trị True thì thi hành cacLenh, ngược lại chuyển điều khiển đến lệnh sau lệnh End If  Cú pháp : If dieukien Then [caclenh] End If  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : Dieukien : Là biểu thức luận lý. Caclenh : Câu lệnh gán hay xủ lý. c) Cấu trúc If … Then … Else  Ý nghĩa : dieukien có giá trị True thì thi hành cacLenh1, ngược lại thi hành caclenh2.  Cú pháp : If dieukien Then Caclenh1 Else Caclenh2 End If  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : như trên. d) Cấu trúc If … ElseIf  Ý nghĩa : dieukien thứ N đúng thì thực hiện caclenhN, Ngược lại chuyển điều khiển đến caclenhElse  Cú pháp : If dieukien1 Then [caclenh1] ElseIf dieukien2 Then [caclenh2] …….. [ElseIf dieukienN Then [caclenhN] [Else [caclenhElse]] End If  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : DieukienN : Là một biểu thức luận lý. CaclenhN, caclenhElse : Các lệnh gán hay xủ lý. Ví dụ : If hocsinhPar.DiemTB >= 8 Then hocsinhPar.xeploai = "Gioi" ElseIf hocsinhPar.DiemTB >= 6.5 And hocsinhPar.DiemTB < Then hocsinhPar.xeploai = "Kha" ElseIf hocsinhPar.DiemTB >= 5 And hocsonhDiemTB < 6.5 Then hocsinhPar.xeploai = "Trung Binh" Else hocsinhPar.xeploai = "Yeu" End If e) Cấu trúc Select  Ý nghĩa : Chuyển điều khiển đến Case mà giá trị BieuThucchon bằng, nằm trong hay <, <=, >, >=, =, giá trị biểu thức.  Cú pháp : Select Case bieuthucchon Case {bieuthuc | Bieuthuc To bieuThuc | is toantusosanh bieuThuc} [cacLenh] … [Case Else [caclenh]] … End Select  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : BieuthucChon : Là một biểu thức. Caclenh : Là các lệnh gán hay xử lý. ToantuSoSanh : Là các toán tử so sánh. Ví dụ : Select Case hocsinhPar.lop Case “CDTHA” hocsinhPar.Hocphi = 800000 Case “CDTHB” hocsinhPar.hocphi =700000 Case “CDTHC” hocsinhPar.Hocphi =750000 End Case 2) Các lệnh lặp a) Câu lện Do While … Loop  Ý nghĩa : Điều kiện đúng thì thực hiện các lệnh, ngược lại không thực hiện các lệnh mà chuyển điều khiển đến Điều kiện sai thì thực hiện các lệnh, ngược lại không thực hiện các lệnh mà chuyển điều khiển đến các các lệnh sau từ khóa Loop lệnh sau từ khóa Loop Cú pháp : Do [While dieukien] [caclenh] [Exit Do] [caclenh] Loop Do [Until dieukien] [caclenh] [Exit Do] [caclenh] Loop  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : Dieukien : là một biểu thức luận lý. CacLenh : Các lệnh gán hay xử lý. Exit Do : thoát khỏi vòng lặp. Ví dụ : Dim intl as integer Intl =1 Do While intl<=10 Debug.Print intl Intl = intl+1 Loop Dim intl as integer Intl=1 Do Until intl>10 Debug.Print intl Intl= intl +1 Loop b) Câu lệnh Do … Loop While  Ý nghĩa : Thi hành các lệnh, nếu Điều kiện đúng thì thực hiện các lệnh, ngược lại không thực Thi hành các lệnh, nếu Điều kiện sai thì thực hiện các lệnh, ngược lại không thực hiện hiện các lệnh mà chuyển điều khiển đến các lệnh sau từ khóa Loop While các lệnh mà chuyển điều khiển đến các lệnh sau từ khóa Loop Until Cú pháp : Do [caclenh] [Exit Do] [caclenh] Loop [While dieuKien] Do [caclenh] [Exit Do] [caclenh] Loop [Until dieukien]  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : Dieukien : là một biểu thức luận lý. CacLenh : Các lệnh gán hay xử lý. Exit Do : thoát khỏi vòng lặp. Ví dụ : Do …………… Loop While Not mySet.EOF Do …………… Loop Until mySet.EOF c) Câu lệnh For … Next  Ý nghĩa : Thi hành các lệnh khi biến đếm còn nằm giữa giaTriXuatPhat và giaTriDich. Sau khi thi hành các lệnh biến đếm tăng thêm một giá trị bằng bước nhẩy.  Cú pháp : For bienDem = giaTriXuatPhat To giaTriDich [Step buocNhay] [caclenh] [Exit For] [cacLenh] Next [bienDem]  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : BienDem : Là một biến có kiểu dữ liệu là Integer hay Long. GiaTriXuatPhat, GiaTriDich : Một biểu thức có kiểu là Integer hay Long. BuocNhay : Là số âm hay dương dùng để tăng hay giảm biến đếm. Exit For : thoát khỏi vòng lặp. Ví dụ : Trong thủ tục vào mảng có đoạn lệnh : For chiso = 1 To soluongHocsinh HocsinhMang(Chiso).HsMa = hocsinhSet!hsMa Next chiso d) Câu lệnh For Each  Ý nghĩa : Khi phần tử còn là phần tử của nhóm thì thi hành các lệnh.  Cú pháp : For Each phantu In nhom [caclenh] [Exit for] [caclenh] Next [phantu]  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : Phần tử : Là một phần tử. Nhom : Là một chuỗi các phần tử. Ví dụ : Trong hàm TinhTong , ta sử dụng đoạn lệnh sau For Each sotien In sotienArray Tongtien = tongtien +sotien Next soTien e) Câu lệnh With  Ý nghĩa : Cho phép ghi các lệnh liên quan đến đối tượng mà không cần ghi tên đối tượng.  Cú pháp : With doituong [caclenh] End With  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : DoiTuong : Biến thuộc loại đối tượng hay loại dữ liệu định nghĩa bằng lệnh Type Ví dụ : Trong thủ tục vào mảng có đoạn lệnh : For chiso = 1 To soluongHocsinh With HocsinhMang(chiso) .HsMa = hocsinhSet!hsMa .HsMa = hocsinhSet.Hoten End With Next chiso f) Câu lệnh Call  Ý nghĩa : Chuyển con trỏ thi hành lệnh đến lệnh đầu tiên của thủ tục.  Cú pháp : [Call ] tenThuTuc [danhsachThamSo] tendoiTuong { ! | . } {tenDoiTuong | phuongphap}…  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : Call : Nếu sử dụng DanhsachThamSo phải rào trong (), Ngược lại Ví dụ : Sub thuBangVaomang() Dim HocsinhMang() As hocsinhType BangVaoMang HocsinhMang() End Sub Sub thuBangVaomang() Dim HocsinhMang() As hocsinhType Call (BangVaoMang hocsinhMang()) End Sub Sub BangVaoMang(HocsinhMang() As hocsinhType) ... HocsinhSet.MoveNext ... End Sub g) Câu lệnh Stop  Ý nghĩa : Ngưng tạm thời việc xử lý lệnh.  Cú pháp : Stop  Vị trí : Lệnh được dùng trong thủ tục sau các lệnh khai báo.  Giải thích : Stop : tạm thời dừng việc xử lý lệnh ngay lệnh stop. Lệnh Stop thường dùng tại vị trí mà ta muốn kiểm tra việc thi hành lệnh ( xem giá trị của biến). Sau khi việc thi hành lệnh dừng tại lệnh stop, ta có thể cho tiếp tục thi hành bằng cách nhấn F5 V. LÀM VIỆC VỚI CÁC BIẾN, KIỂU DỮ LIỆU VÀ HẰNG SỐ 1) Khai báo biến Cú pháp : Dim tenbien [As kiểu dữ liệu] Ví dụ Dim strName as string Dim Intl as Integer 2) Khai báo biến tường minh và không tường minh Khi sử dụng một biến mà không cần khai báo trước thì đôi khi dẫn đến trường hợp là chúng ta dễ tham chiếu đến một tên biến sai. Với cách lập trình này thì chúng ta cảm thấy thuận tiện. Tuy nhiên chúng ta nên khai báo tường minh vì điều này giúp chúng ta tránh được việc sử dụng sai tên biến bởi vì khi biên dịch Access sẽ phát hiện và thong báo lỗi ngay để chúng ta sửa đổi. Để có thể chuyển qua lại hai chế độ này chúng ta sẽ giữ lại hay bỏ đi câu lệnh : Option Explicit trong phần khai báo của các đoạn lệnh trong cửa sổ bộ mã lệnh (Module) Ví dụ : Sử dụng chế dộ khai báo biến không tường minh Function CanBac2(Byval dblNum As Double) as double Dbltemp =abs(dblNum) Canbac2 = Sqr(dbltmp) ‘ dbltemp bị viết sai thành dbltmp End Function Khi gọi thực hiện hàm này thì VB không thong báo lỗi gì cả, nhưng kết quả sẽ luôn luôn là 0 vì VB hiểu rằng dblTmp là một biến mới. Sử dụng chế dộ khai báo biến tường minh Function CanBac2(Byval dblNum As Double) as double Dim dblTemp As Double Dbltemp =abs(dblNum) Canbac2 = Sqr(dbltmp) ‘ dbltemp bị viết sai thành dbltmp End Function Khi gọi thực hiện hàm này thì VB sẽ thông báo lỗi biến dbltmp chưa được định nghĩa, chính nhờ thông báo này chúng ta sẽ phát hiện ra rằng chúng ta đã tham chiếu đến tên biến sai. Sau đó quay lại sửa lại tên biến thành dblTemp và biên dịch và chạy lại thì kết quả sẽ luôn luôn đúng. 3) Tầm ảnh hưởng của biến Khi khai báo một biến trong thủ tục thì chỉ có các câu lệnh bên trong thủ tục đó mới có thể đọc hay thay đổi giá trị của biến đó : tầm ảnh hưởng của biến chỉ có tính cục bộ trong thủ tục. Tầm ảnh hưởng của một biến phụ thuộc vào vị trí khai báo biến. Có hai cấp : thủ tục hay bô mã lệnh. Chúng ta có thể kết hợp các từ khoá Public hay Private để tạo ra tầm ảnh hưởng của biến. Tầm ảnh hưởng Private Public Cấp thủ tục Các biến có tính chất cục bộ ngay trong thủ tục khai báo biến Không thể khai báo biến toàn cục trong thủ tục. Cấp bộ mã lệnh Các biến có tính chất cục bộ ngay trong bộ mã lệnh khai báo biến. Các biến có thể sử dụng cho tất cả các bộ mã lệnh chuẩn trong ứng dụng. 4) Các biến sử dụng trong thủ tục Các biến cấp thủ tục chỉ được nhận ra ở tại thủ tục mà chúng được khai báo và được xem như biến cục bộ. Ví dụ khai báo : Dim inttemp as Integer ‘Khai báo này biến chỉ tồn tại khi thủ tục đang thực hiện Static inttemp as Integer ‘Biến tồn tại trong toàn bộ thời gian ứng dụng đang thực hiện 5) Các biến sử dụng trong bộ mã lệnh Mặc định một cấp bộ mã lệnh thì cho phép tất cả các thủ tục trong bộ mã lệnh đó sử dụng được, nhưng không thể cho các bộ mã lệnh khác. Chúng ta có thể tạo các biến cấp thủ tục trong biểu mẫu, báo cáo hay các bộ mã lệnh chuẩn bằng cách khai báo chúng với từ khóa Dim hay Private bên trong phần khai báo ở tại vị trí đầu tiên trong cửa sổ bộ mã lệnh. Ví dụ : Option Compare Database Option Explicit Dim Inttemp As Integer hay Private IntTemp As Integer. 6) Các biến sử dụng chung cho tất cả các bộ mã lệnh Để tạo ra các biến dung chung cho tất cả các bộ mã lệnh chúng ta phải dung từ khóa Public để khai báo biến. Giá trị của các biến toàn cục này sẽ cho phép tất cả các thủ tục của toàn bộ các bộ mã lệnh trong ứng dụng đều sử dụng được. Giống như các biến cấp bộ mã lệnh các biến toàn cục phải được đặt trong phần khai báo ở tại vị trí đầu tiên trong cửa sổ bộ mã lệnh. Ví dụ : Public IntX as Integer 7) Phạm vi và tên các biến Một biến không thể thay đổi phạm vi trong khi các đoạn lệnh đang chạy. Tuy nhiên chúng ta vẫn có thể sử dụng tên giống nhau cho những biến trong các phạm vi khác nhau trong một số điều kiện nhất định. Các biến cục bộ và toàn cục: Nếu các biến toàn cục giữa các bộ mã lệnh trùng tên

Các file đính kèm theo tài liệu này:

  • pdf125_.pdf