Bg Access Vba[1]

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Bg Access Vba[1] as PDF for free.

More details

  • Words: 4,882
  • Pages: 84
Phần 2: VISUAL BASIC FOR APPLICATION (VBA) Chương 1: TỔNG QUAN VỀ VB Chương 2: CÁC KHAI BÁO TRONG VB Chương 3: CÁC CẤU TRÚC ĐIỀU KHIỂN VÀ KIỂU DỮ LIỆU CÓ CẤU TRÚC Chương 4: THỦ TỤC CỦA NGƯỜI DÙNG Chương 5: ĐỐI TƯỢNG VÀ BIẾN ĐỐI TƯỢNG

Phạm Thị Kim Ngoan

1

Chương 1: TỔNG QUAN VỀ VBA I. Giới thiệu chung II. Module III. Cấu trúc của Module VI. Tạo và thực hiện các thủ tục V. Một số hiệu ứng khi viết và sửa chữa mã lệnh

Phạm Thị Kim Ngoan

2

I. Giới thiệu chung Visual Basic là ngôn ngữ lập trình dùng để ràng buộc các đối tượng trong ứng dụng với nhau thành một hệ thống hợp nhất. Các chương trình của VBA (Visual Basic for Application) được tổ chức và hoạt động trong Access nhằm mục đích xây dựng các ứng dụng phức tạp. Có thể dùng VB để thực hiện các công việc sau: - Làm cho ứng dụng dễ bảo trì hơn -

Tạo ra các hàm/thủ tục của người sử dụng để xử lý các thao tác phức tạp mà chưa được MS Access cung cấp sẵn. Xử lý lỗi theo ý người sử dụng. Phạm Thị Kim Ngoan

3

I. Giới thiệu chung - Tạo hay thao tác với các đối tượng -

Thực hiện các thao tác cấp hệ thống : thực hiện một ứng dụng khác, liên kết giữa các ứng dụng.

Đặc điểm: - Chương trình của VBA hoạt động chủ yếu theo hướng sự kiện : bấm chuột tại các nút lệnh, di chuyển vào hay ra đối tượng điều khiển của form, report … - Các thủ tục và hàm của VBA nằm rải rác trong các module của form, report hoặc module chung của CSDL và chúng có thể gọi lẫn nhau. Phạm Thị Kim Ngoan

4

II. Module 1. Khái niệm Module: Là tập các tuỳ chọn, các khai báo, các thủ tục cùng được lưu trữ trong một đơn vị chương trình. 2. Phân loại Module: - Module chuẩn: Có thể thi hành bất cứ nơi nào trong ứng dụng. - Module lớp: Các thủ tục định nghĩa trong Module lớp sẽ trở thành các phương thức của đối tượng này. * Mỗi Form/Report đều có thể kết hợp với một Module lớp (Form Module/Report Module), Module lớp này được lưu cùng với Form/Report. Phạm Thị Kim Ngoan

5

III. Cấu trúc của Module 1. Module chuẩn: - Các tuỳ chọn - Các khai báo toàn cục (Public) - Các khai báo cấp module (Dim) - Các thủ tục sử dụng toàn cục - Các thủ tục sử dụng cấp module 2. Module loại: - Các tuỳ chọn - Các khai báo cấp module - Các thủ tục xử lý sự kiện - Các thủ tục sử dụng cấp module Phạm Thị Kim Ngoan

6

Module chuẩn

Phạm Thị Kim Ngoan

7

Module loại

Phạm Thị Kim Ngoan

8

III. Cấu trúc của Module 3. Cấu trúc một thủ tục: a. Cấu trúc Sub procedure : Sub Tên_thủ _tục ([Các tham số]) Các lệnh End Sub b. Cấu trúc Function procedure : Function Tên_hàm ([Các tham số]) [AS kiểu dữ liệu] Các lệnh Tên_hàm = biểu thức giá trị End Sub c. Cấu trúc thủ tục xử lý sự kiện : Private Sub Tênđốitượng__tênsựkiện ([Các tham số]) Các lệnh End Sub

Phạm Thị Kim Ngoan

9

VI. Tạo và thực hiện các thủ tục 1. Thủ tục xử lý sự kiện: Thường là các thủ tục gắn với các điều khiển của Form (nút lệnh, …) đặt trong Module loại - Tạo mới: • Mở Form có điều khiển cần gắc thủ tục ở dạng thiết kế. • Chọn Properties của điều khiển cần gắn thủ tục, chọn ngăn sự kiện (Event) • Chọn sự kiện cần gắn (On Click, …), chọn nút …, chọn Code Builder, MS Access đưa ra khuôn dạng của thủ tục với tên tương ứng, tại vị trí con trỏ: gõ các lệnh cần thực hiện trong thủ tục. - Thực thi: Mở Form, tác động sự kiện vừa gắn lên nút Phạm Thị Kim Ngoan lệnh.

10

VI. Tạo và thực hiện các thủ tục 2. Thủ tục Sub procedure và Function procedure: Đặt trong Module loại hoặc chuẩn. - Tạo mới: Mở màn hình viết mã lệnh, viết thủ tục theo cấu trúc tương ứng. - Thực thi: • Biên dịch cho đến khi không còn lỗi cú pháp Menu Debug → Complie Loaded Modules • Chạy xem kết quả trong khung trực tiếp: Mở mà hình trực tiếp: Menu View → DebugWindow / Immediate Window Phạm Thị Kim Ngoan

11

VI. Tạo và thực hiện các thủ tục Chạy thủ tục: Thủ tục không có tham số: Tên_Module.Tên_thủ_tục Call Tên_Module.Tên_thủ_tục Call Tên_Module.Tên_thủ_tục () Ví dụ: Tinhtoan.Tong Call Tinhtoan.Tong Call Tinhtoan.Tong()

Phạm Thị Kim Ngoan

12

VI. Tạo và thực hiện các thủ tục Thủ tục có tham số: Call Tên_Module.Tên_thủ_tục (Các tham số thực sự) Ví dụ: Call Tinhtoan.Tongab(15, 56) Hàm (Function procedure): ? Tên_Module.Tên_hàm () ? Tên_Module.Tên_hàm ? Tên_Module.Tên_hàm (Các tham số thực sự) Ví dụ: ?Tinhtoan.Tong1() ?Tinhtoan.Tong2(25, 35)

Phạm Thị Kim Ngoan

13

VI. Tạo và thực hiện các thủ tục Gọi thủ tục từ các thủ tục khác: Thủ tục: Call Tên_Module.Tên_thủ_tục (Các tham số thực sự) Hàm: đặt trong các biểu thức Tên_Module.Tên_hàm (Các tham số thực sự)

Phạm Thị Kim Ngoan

14

V. Một số hiệu ứng khi viết và sửa chữa mã lệnh - Tự động xây dựng các phát biểu: Tools -> Options -> Module -> Auto list Members - Thông tin nhanh: Tools -> Options -> Module -> Auto QuickInfo - Tự động kiểm tra cú pháp: Tools -> Options -> Module -> Auto Syntax Check - Di chuyển giữa các thủ tục trong module: Ctrl + Page Down / Ctrl + Page Up

Phạm Thị Kim Ngoan

15

Chương 2: CÁC KHAI BÁO TRONG VB I. Các tuỳ chọn II. Các kiểu dữ liệu cơ bản II. Khai báo IV. Các hàm/thủ tục nhập xuất dữ liệu V. Một số hàm / thủ tục của VB

Phạm Thị Kim Ngoan

16

I. Các tuỳ chọn Option Explicit: người dùng phải khai báo tường minh các biến Option Compare Binary: phân biệt chữ thường và hoa khi viết chương trình Option Compare Text: phân biệt chữ thường và hoa khi so sánh Option Base n: qui định chỉ số đầu tiên trong kiểu dữ liệu mảng

Phạm Thị Kim Ngoan

17

II. Các kiểu dữ liệu cơ bản Kiểu dl

Kích thước

Phạm vi

Byte

1 byte

0 … 255

Boolean

1 byte

True/False

Integer

2 bytes

-32.768 … 32.767

Long

4 bytes

-2.147.483.648 … 2.147.483.647

Single

4 bytes

-3,402823E+38 …3,402823E+38

Double

8 bytes

-1,7976E+308 … 1,7976E+308

Currency

8 bytes

-9,223E+14 … 9,223E+14 Phạm Thị Kim Ngoan

18

II. Các kiểu dữ liệu cơ bản Kiểu dl

Kích thước

Phạm vi

Date

8 bytes

1/1/100…31/12/9999

Object

4 bytes

Các đối tượng

String(variable – length)

10 bytes + string length

0 … 231 ký tự

String(fixed – length)

Length of string

1…65.400 ký tự

Variant (with numbers)

16 bytes

Như kiểu double

Variant (with characters)

10 bytes + string length

Như kiểu string có độ dài thay đổi

Phạm Thị Kim Ngoan

19

III. Khai báo 1. Khai báo hằng: Public/Private CONST Tên_hằng [AS Kiểu dữ liệu] = Biểu thức giá trị Ví dụ:

Const Pi=3.14 Public Const S = “Đây là ví dụ”

Private Const so As Integer = 5 2. Khai báo biến: Public/Private/Dim/Static Tên_biến [AS Kiểu dữ liệu] Ví dụ:

Public Hoten As String, DTB As Double Private Diachi As String Phạm Thị Kim Ngoan

20

III. Khai báo Phạm vi sử dụng: -

Mức thủ tục : Các khai báo bên trong thủ tục.

-

Mức module : Các khai báo Private Const trong phần khai báo của module.

-

Mức project : Khai báo Public

Tên: - Gồm chữ cái, chữ số và dấu gạch chân, bắt đầu là chữ cái. -

Không trùng với từ khoá của Access.

-

Độ dài không vượt quá 40 ký tự. Phạm Thị Kim Ngoan

21

IV. Các hàm/thủ tục nhập xuất dữ liệu 1. Nhập dữ liệu: hàm InputBox, InputBox$ Cú pháp: INPUTBOX[$](Dòng nhắc [[,tiêu đề] [, giá trị mặc định][,x, y] ]) - Hàm InputBox trả về giá trị Variant - Chức năng : Hiển thị dòng nhắc trong một hộp thoại, đợi nhập liệu và trả về giá trị trong textbox Ví dụ: Nhập 1 số nguyên từ bàn phím và lưu trong biến a Dim a as Integer a = Inputbox(“Nhập a=”, “Nhập số liệu”)

Phạm Thị Kim Ngoan

22

IV. Các hàm/thủ tục nhập xuất dữ liệu 2. Xuất dữ liệu: a. Thủ tục Msgbox Cú pháp: MsgBox Dòng thông báo, kiểu hộp thoại, tiêu đề b. Hàm Msgbox Cú pháp: MsgBox (Dòng thông báo, kiểu hộp thoại, tiêu đề) Kiểu hộp thoại: Giá trị cho biết các nút lệnh nào sẽ hiển thị và các biểu tượng sẽ hiển thị trong hộp thoại. Chức năng : Hiển thị một thông điệp trong hộp hội thoại và đợi người sử dụng chọn một nút lệnh. Khác nhau giữa hàm và thủ tục MsgBox : Hàm MsgBox trả về giá trị cho biết đã chọn nút lệnh nào, còn thủ tục thì không. Phạm Thị Kim Ngoan

23

IV. Các hàm/thủ tục nhập xuất dữ liệu * Tham số kiểu hộp thoại gồm 3 thành phần: Nút lệnh nào sẽ hiển thị, kiểu biểu tượng hiển thị, nút ngầm định. - Nút lệnh hiển thị: 0 / vbOnlyOK

OK

1 / vbOKCancel 2 / vbAbortRetryIgnore 3 / vbYesNoCancel 4 / vbYesNo 5 / vbRetryCancel

OK, Cancel Abort, Retry, Ignore Yes, No, Cancel Yes, No Retry, Cancel

Phạm Thị Kim Ngoan

24

IV. Các hàm/thủ tục nhập xuất dữ liệu - Xác định biểu tượng: 0

không

16 / vbCritical

Critical (Stop)

32 / vbQuestion

Warning query

48 / vbExclamation

Warning Message

64 / vbInformation

Information

Phạm Thị Kim Ngoan

25

IV. Các hàm/thủ tục nhập xuất dữ liệu - Xác định nút ngầm định: 0 / vbDefaultButton1

nút thứ 1

256 / vbDefaultButton2 nút thứ 2 512 / vbDefaultButton3 nút thứ 3 * Giá trị của hàm khi nút lệnh được chọn: 1

OK

4

Retry

2

Cancel

5

Ignore

3

Abort

6

Yes

c. In ra màn hình trực tiếp: Debug.print Phạm Thị Kim Ngoan

7

No biểu thức 26

IV. Các hàm/thủ tục nhập xuất dữ liệu Ví dụ: In ra dưới dạng hộp thoại tổng của a+ b (dùng thủ tục) Msgbox “Tổng của a+b=” & a+b, vbOkCancel + vbInformation, “Kết quả” In ra dưới dạng hộp thoại tổng của a+ b có kiểm tra nút lệnh bấm (dùng hàm Msgbox) IF Msgbox (“Tổng của a+b=” & a+b, vbOkCancel+vbInformation, “Kết quả”)= vbOk THEN

Phạm Thị Kim Ngoan

27

V. Một số hàm / thủ tục của VBA Các hàm về chuỗi: LTRIM(St)

cắt các ký tự trắng bên trái chuỗi

RTRIM(St) cắt các ký tự trắng bên phải chuỗi TRIM(St)

cắt các ký tự trắng bên phải và bên trái chuỗi

LEN(St)

độ dài chuỗi

LEFT(St,n)

lấy n ký tự bên trái chuỗi

RIGHT(St,n) lấy n ký tự bên phải chuỗi MID(St,i,n) STR(n)

lấy n ký tự bắt đầu từ vị trí i trong chuỗi đổi số thành chuỗi Phạm Thị Kim Ngoan

28

V. Một số hàm / thủ tục của VB LCASE(St) đổi các ký tự trong chuỗi thành chữ thường UCASE(St) đổi các ký tự trong chuỗi thành chữ in Các hàm tính toán: ABS(n) trị tuyệt đối FIX(r) lấy phần nguyên của số thực INT(r) lấy phần nguyên gần nhất và nhỏ hơn r SQR(n) căn bậc 2 của n EXP(n) hàm e mũ n VAL(St) đổi chuỗi thành số Các hàm về ngày, giờ: NOW() lấy ngày giờ của hệ thống DATE() ngày hệ thống TIME() giờ hệ thống Phạm Thị Kim Ngoan

29

V. Một số hàm / thủ tục của VB DATEPART(dt) lấy một phần của ngày/tháng/năm DATEPART(“d”, dt) lấy phần ngày DAY(dt) DATEPART(“m”, dt) lấy phần tháng MONTH(dt) DATEPART(“yyyy”, dt) lấy phần năm YEAR(dt) Các hàm kiểm tra: ISNUMERIC(n) kiểm tra n có phải là một số không? ISDATE(d) kiểm tra d có phải là kiểu ngày không? Chú ý: ‘ dòng chú thích Viết lệnh trên nhiều dòng dùng dấu space và gạch dưới ( _) Phạm Thị Kim Ngoan

30

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

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:

Phạm Thị Kim Ngoan

31

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 Phạm Thị Kim Ngoan

32

I. Các cấu trúc điều khiển Ví dụ: Cp1: IF a >= b THEN Debug.Print a Cp2: IF a >= b THEN Debug.Print a ENDIF

Phạm Thị Kim Ngoan

33

I. Các cấu trúc điều khiển 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 ENDIFPhạm Thị Kim Ngoan

34

I. Các cấu trúc điều khiển 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

Phạm Thị Kim Ngoan

35

I. Các cấu trúc điều khiển 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

Phạm Thị Kim Ngoan

36

I. Các cấu trúc điều khiển 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 Phạm Thị Kim Ngoan

37

I. Các cấu trúc điều khiển 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

Phạm Thị Kim Ngoan

38

I. Các cấu trúc điều khiển 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 Phạm Thị Kim Ngoan

39

I. Các cấu trúc điều khiển 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) Phạm Thị Kim Ngoan

40

I. Các cấu trúc điều khiển 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 Phạm Thị Kim Ngoan

41

I. Các cấu trúc điều khiển 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) Phạm Thị Kim Ngoan

42

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) Phạm Thị Kim Ngoan

43

II. Kiểu dữ liệu có cấu trúc 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 Phạm Thị Kim Ngoan

44

II. Kiểu dữ liệu có cấu trúc 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

Phạm Thị Kim Ngoan

45

II. Kiểu dữ liệu có cấu trúc Ví dụ: TYPE Hocsinh Hoten

as

String

Ngaysinh as

Date

Toan

Single

as

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 Phạm Thị Kim Ngoan

46

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 Phạm Thị Kim Ngoan

47

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

Phạm Thị Kim Ngoan

48

I. Tham biến và tham trị 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 Phạm Thị Kim Ngoan

49

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

Phạm Thị Kim Ngoan

50

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

Phạm Thị Kim Ngoan

51

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 Phạm Thị Kim Ngoan

52

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

Private Sub Form_Load() dem = 1 End Sub

Phạm Thị Kim Ngoan

53

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]

Phạm Thị Kim Ngoan

54

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 Phạm Thị Kim Ngoan

55

V. Gỡ rối mã VB 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

Phạm Thị Kim Ngoan

56

Chương 5: ĐỐI TƯỢNG VÀ BIẾN ĐỐI TƯỢNG I. Đối tượng và tập hợp: II. Biến đối tượng: III. Sử dụng các biến đối tượng:

Phạm Thị Kim Ngoan

57

I. Đối tượng và tập hợp Các nguồn cung cấp đối tượng trong MS Access: MS Access: đối tượng hiển thị dữ liệu MS DAO: đối tượng truy nhập dữ liệu Visual Basic: đối tượng đem lại sự linh động trong lập trình Tập hợp: là các đối tượng có cùng kiểu Tham chiếu tới các đối tượng: Các đối tượng riêng biệt: tên_đối_tượng Các đối tượng thuộc về tập hợp: C1: Tên_tập_hợp!tên_đối_tượng C2: Tên_tập_hợp(tên_đối_tượng) Phạm Thị Kim Ngoan

58

I. Đối tượng và tập hợp C3: Tên_tập_hợp(chỉ số) Tập thuộc tính: Xác lập giá trị cho thuộc tính: Tên_đối_tượng.tên_thuộc_tính = giá trị Lấy giá trị của thuộc tính: Tên_biến = tên_đối_tượng.tên_thuộc_tính

Phạm Thị Kim Ngoan

59

II. Biến đối tượng Biến đối tượng: biến biểu thị một đối tượng cụ thể thuộc vào một kiểu đối tượng Kiểu đối tượng: phần dữ liệu, các phương thức Khai báo: Cú pháp: Dim tên_biến AS tên_kiểu_đối_tượng Gán các biến đối tượng: Cú pháp: SET tên_biến = dạng biểu thị Biểu thị các thành phần đối tượng: Giữa các đối tượng: ! Thuộc tính, phương thức: . Phạm Thị Kim Ngoan

60

In tên các điều khiển có trong Form Mật khẩu Sub Dkhien_Matkhau() Dim Frm As Form Dim n As Integer, i As Integer DoCmd.OpenForm ”Matkhau" Set Frm = Forms(”Matkhau") n = Frm.Count For i = 0 To n - 1 MsgBox Frm(i).Name Next i End Sub

Phạm Thị Kim Ngoan

61

Liệt kê các bảng có trong CSDL hiện tại SUB Inbang() Dim db As Database Dim t As TableDef Set db = CurrentDb() For Each t In db.TableDefs MsgBox t.Name Next t ENDSUB

Phạm Thị Kim Ngoan

62

III. Sử dụng các biến đối tượng 1. Biến đối tượng Database: Khai báo: DIM Tên_biến_DB AS Database Gán biến đối tượng: SET Tên_biến_DB=DBEngine.Workspace(0).OpenDatabase(tập tin CSDL)

Phạm Thị Kim Ngoan

63

III. Sử dụng các biến đối tượng Ví dụ: Khai báo một biến Db làm việc với CSDL hiện hành C1: DIM Db AS Database SET Db= DBEngine.Workspace(0).Database(0) C2: DIM Db AS Database SET Db= CurrentDB()

Phạm Thị Kim Ngoan

64

III. Sử dụng các biến đối tượng 2. Biến đối tượng Recordset: Lưu trữ tập các bản ghi. Tạo đối tượng Recordset: Dùng phương thức OpenDatabase của đối tượng Database Khai báo: DIM tên_biến_RS AS

Recordset

Ví dụ: Dim Rs As Recordset Tham chiếu vào một đối tượng cụ thể: SET tên_biến_RS=tên_biến_DB.OpenRecordSet (“nguồn dl”, loại) Nguồn dữ liệu: Tên của một bảng, truy vấn, câu lệnh SQL.

Phạm Thị Kim Ngoan

65

III. Sử dụng các biến đối tượng Loại dùng 1 trong 3 hằng sau: DB_OPEN_TABLE: Tham chiếu đến 1 bảng, dữ liệu có thể thay đổi được DB_OPEN_DYNASET: Tham chiếu đến bảng, query, dliệu có thể thay đổi được DB_OPEN_SNAPSHOT: Tham chiếu đến 1 bản sao của dliệu, không thay đổi dữ liệu được Ví dụ: Dim Db As Database Dim Rs As Recordset Set Rs = Db.OpenRecordset (“MONHOC”, DB_OPEN_TABLE) Phạm Thị Kim Ngoan

66

III. Sử dụng các biến đối tượng Tham chiếu đến các trường dữ liệu của biến RecordSet: Tên_biến_RS!tên_trường hoặc: Tên_biến_RS.fields(“tên_trường”) Ví dụ: Truy xuất đến trường mã môn học trong bảng Môn học Rs!MaMH Hoặc Rs.fields(“MaMH”) Tham chiếu đến các phương thức, thuộc tính của biến RecordSet: Tên_biến_RS.tên_phương_thức/ tên_thuộc_tính

Phạm Thị Kim Ngoan

67

III. Sử dụng các biến đối tượng Các phương thức di chuyển: MOVEFIRST: Đến bản ghi đầu tiên trong biến Recordset MOVEPREVIOUS MOVENEXT MOVELAST MOVE(n): Đến bản ghi n trong biến Recordset Ví dụ: Rs.MoveNext Phương thức đóng : CLOSE Tên_biến_RS.CLOSE Ví dụ: Rs.Close Phạm Thị Kim Ngoan

68

III. Sử dụng các biến đối tượng Phương thức đếm số bản ghi: RECORDCOUNT Ví dụ: Đếm số bản ghi trong bảng môn học Rs.MoveLast Rs.RecordCount Thuộc phát hiện các giới hạn: BOF = True : trước bản ghi đầu tiên, hoặc không có bản ghi EOF = True : sau bản ghi cuối cùng, hoặc không có bản ghi Tên_biến_RS.BOF Ví dụ: Rs.BOF

Phạm Thị Kim Ngoan

69

III. Sử dụng các biến đối tượng Ví dụ: In ra màn hình trực tiếp danh mục các môn học SUB

InMH()

Dim Db As Database Dim Rs As Recordset Set Rs = Db.OpenRecordset (“MONHOC”, DB_OPEN_TABLE) DO WHILE (Rs.EOF = False) Debug.Print Rs!MaMH, Rs!TenMH, Rs!Heso Rs.MoveNext LOOP Rs.Close ENDSUB Phạm Thị Kim Ngoan

70

III. Sử dụng các biến đối tượng Viết thủ tục xử lý sự kiện gắn với nút Xem để khi nhập một mã MH → Xem: thông tin ứng với môn học hiển thị lên các Textbox của Form

Phạm Thị Kim Ngoan

71

III. Sử dụng các biến đối tượng Hiệu chỉnh 1 bản ghi: - Chuyển đến bản ghi muốn hiệu chỉnh - Dùng phương thức EDIT - Tiến hành hiệu chỉnh - Dùng phương thức UPDATE Ví dụ: Sửa Tên môn học có Mã số AV1 thành Anh Văn 1 - Tìm bản ghi có MaMH = “AV1” - Gọi phương thức EDIT - Thay TenMH = “Anh Văn 1” - Gọi phương thức UPDATE Phạm Thị Kim Ngoan

72

III. Sử dụng các biến đối tượng SUB

SuaTenMH()

Dim Db As Database Dim Rs As Recordset Set Rs = Db.OpenRecordset (“MONHOC”, DB_OPEN_TABLE) DO WHILE (Rs.EOF = False) IF Rs!MaMH = “AV1” THEN Rs.EDIT Rs!TenMH = “Anh Văn 1” Rs.UPDATE EXIT DO ELSE Rs.MoveNext LOOP Rs.Close Phạm Thị Kim Ngoan 73 ENDSUB

III. Sử dụng các biến đối tượng Viết thủ tục xử lý sự kiện gắn với nút Sửa để khi Xem thông tin môn học hiển thị lên các Textbox của Form, thay đổi thông tin → nút Sửa để lưu lại thông tin vừa sửa.

Phạm Thị Kim Ngoan

74

III. Sử dụng các biến đối tượng Thêm 1 bản ghi mới: - Dùng phương thức ADDNEW - Nhập dữ liệu cho bản ghi này - Dùng phương thức UPDATE Ví dụ: Thêm môn học mới vào bảng MONHOC MaMH :

AV2

TenMH :

Anh Văn 2

Heso :

1

Phạm Thị Kim Ngoan

75

III. Sử dụng các biến đối tượng SUB

ThemMH()

Dim Db As Database Dim Rs As Recordset Set Rs = Db.OpenRecordset (“MONHOC”, DB_OPEN_TABLE) Rs.ADDNEW Rs!MaMH = “AV2” Rs!TenMH = “Anh Văn 2” Rs!Heso = 1 Rs.UPDATE Rs.Close ENDSUB Phạm Thị Kim Ngoan

76

III. Sử dụng các biến đối tượng Viết thủ tục xử lý sự kiện gắn với nút Thêm để thêm vào bảng môn học với các thông tin của môn học được nhập vào các Textbox trên Form

Phạm Thị Kim Ngoan

77

III. Sử dụng các biến đối tượng Xoá 1 bản ghi: - Chuyển đến bản ghi cần xoá - Dùng phương thức DELETE Ví dụ: Xóa từ bảng MONHOC môn học có mã “AV1”

Phạm Thị Kim Ngoan

78

III. Sử dụng các biến đối tượng SUB XoaMH() Dim Db As Database , Rs As Recordset Set Rs = Db.OpenRecordset (“MONHOC”, DB_OPEN_TABLE) DO WHILE (Rs.EOF = False) IF Rs!MaMH = “AV1” THEN Rs.DELETE EXIT DO ELSE Rs.MoveNext LOOP Rs.Close ENDSUB

Phạm Thị Kim Ngoan

79

III. Sử dụng các biến đối tượng Viết thủ tục xử lý sự kiện gắn với nút Xóa để xóa từ bảng môn học một môn học có mã được nhập vào Textbox trên Form.

Phạm Thị Kim Ngoan

80

III. Sử dụng các biến đối tượng Tìm kiếm 1 bản ghi: Phương thức SEEK (áp dụng với loại mở nguồn dữ liệu là DB_OPEN_TABLE) - Chỉ ra tên chỉ mục - Tên_biến_RS.SEEK “toán tử so sánh”,”giá trị so sánh” Thuộc tính kiểm tra: NOMATCH NOMATCH=True: không tìm thấy bản ghi

Phạm Thị Kim Ngoan

81

III. Sử dụng các biến đối tượng Ví dụ: In ra màn hình trực tiếp môn học có mã “AV2” SUB

InMH_2()

Dim Db As Database Dim Rs As Recordset Set Rs = Db.OpenRecordset (“MONHOC”, DB_OPEN_TABLE) Rs.Index = “ma” Rs.Seek “=“, “AV2” IF Rs.NOMATCH =False THEN Debug.Print Rs!MaMH, Rs!TenMH, Rs!Heso ELSE Debug.Print “Không có môn học này!” ENDIF Rs.Close Phạm Thị Kim Ngoan ENDSUB

82

III. Sử dụng các biến đối tượng 3. Biến đối tượng QueryDef: Khai báo: DIM Tên_biến_QD AS QueryDef Tạo 1 query: dùng phương thức CREATEQUERYDEF của đối tượng Database SET tên_biến_QD=tên_biến_DB.CREATEQUERYDEF(“tên query”) Tên_biến_QD.SQL=”câu lệnh SQL” Tên_biến_DB.Tên_biến_QD.DELETE(“tên query”) Phạm Thị Kim Ngoan

83

III. Sử dụng các biến đối tượng Thi hành: EXECUTE Tên_biến_QD.EXECUTE Đóng: CLOSE Tên_biến_QD.CLOSE Xoá: DELETE

Phạm Thị Kim Ngoan

84

Related Documents

Bg Access Vba[1]
May 2020 6
Bg
October 2019 44
Bg
April 2020 42
Access
June 2020 41
Access
November 2019 68
Access
November 2019 72