Thủ tục chung (Procedure)

Một phần của tài liệu Giáo trình access 2 – trung tâm tin học đh sư phạm kỹ thuật TP HCM (Trang 63)

a) Ý NGHĨA

- Ta tạo thủ tục chung nhằm mục đích tạo ra các chức năng của riêng mình nhằm tự động tính tốn một số cơng việc thường xuyên cần thực hiện.

- Muốn các thủ tục này được sử dụng chung cho tồn bộ chương trình ứng dụng. - Tránh các đoạn lệnh trùng lắp và giúp người lập trình dễ bảo trì chương trình

ứng dụng.

b) PHÂN LOẠI

Bao gồm Thủ tục Hàm (Function) và Thủ tục Con (Sub)

Thủ tục hàm: cho phép trả về một giá trị. Do đĩ, thủ tục hàm được sử dụng trong các biểu thức. Cĩ thể nhận tham số vào.

Thủ tục con: cho phép thực hiện các hành động nhưng khơng trả về một giá

trị và do đĩ thủ tục con khơng được dùng trong biểu thức. Cĩ thể nhận tham số vào.

c) CÚ PHÁP KHAI BÁO VÀ GỌI THỦ TỤC CON Cú pháp khai báo:

[Public | Private] [Static] Sub Tên thủ tục ([Tham số])

của 2 số đĩ.

Hình 3.12: Thủ tục con để tìm USCLN của 2 số x và y

Gọi thủ tục con: ta cĩ thể gọi thủ tục con bằng một trong 2 cách sau: Cách 1: Call <tên thủ tục con>(<danh sách tham số>)

Ví dụ: Call USCLN(6,9)

Cách 2: <tên thủ tục con> <danh sách tham số> Ví dụ: USCLN 6,9

Lưu ý: ta khơng được đặt cặp dấu ngoặc đơn vào danh sách các tham số khi

gọi nĩ (trừ cú pháp gọi thủ tục con bằng lệnh Call).

d) CÚ PHÁP KHAI BÁO VÀ GỌI THỦ TỤC HÀM Cú pháp khai báo:

[Public | Private] [Static] Function <Tên Hàm> ([<Tham số>]) As <Kiểu giá trị

trả về>

<Khối lệnh>

<Tên Hàm> = <Giá trị trả về> End Sub

- Khối lệnh: là dãy các câu lệnh VBA mà ta muốn thi hành khi thủ tục được

gọi.

- Tham số: danh sách các tham số gởi vào để cĩ giá trị cần cho thủ tục để tính tốn bên trong.

- Giá trị trả về: là giá trị mà hàm trả về sau khi tính tốn bên trong thủ tục

hàm.

Cú pháp gọi thủ tục hàm:

<Tên biến nhận giá trị trả về> = <Tên thủ tục hàm> (<tham số 1>,< tham số 2>,…)

Thí dụ: Viết thủ tục hàm truyền vào 2 tham trị x và y. Tính và trả về USCLN

của 2 số đĩ.

Hình 3.13: Hàm tìm USCLN của 2 số x và y

Sau đĩ ta cĩ thể gán biến US nhận lấy kết quả của hàm Uscln như sau: US=Uscln(9,6)

Hoặc in kết quả của hàm ra hộp thoại Msgbox Msgbox Uscln(9,6)

Lưu ý:

- Danh sách các tham số truyền cho thủ tục hàm phải nằm trong cặp dấu ngoặc đơn.

- Thơng thường câu lệnh cuối cùng trong thủ tục hàm phải là câu lệnh gán <Tên hàm = <Giá trị trả về của hàm>.

- Khi gọi đến một hàm phải cĩ một biến hoặc điều khiển nhận giá trị trả về từ hàm.

e) CÚ PHÁP KHAI BÁO CÁC THAM SỐ TRONG THỦ TỤC (CON/HÀM) [Byval | ByRef] <Tên tham số> As <Kiểu dữ liệu> [=<Giá trị mặc định>]

Trong cửa sổ soạn thảo lệnh (View Code), ta chọn Insert / Procedure…

Hình 3.14: Chọn lệnh Insert/Procedure để tạo thủ tục cho Module

Xuất hiện hộp thoại

Hình 3.15: Hộp thoại khai báo tạo thủ tục

Gõ tên thủ tục vào ơ Name, chọn loại thủ tục là Sub hay Function ở mục Type và chọn phạm vi áp dụng Public hay Private ở mục Scope

All Local variables as Statics: tồn bộ các biến trong thủ tục là biến tĩnh

g) BIÊN DỊCH THỦ TỤC

Chọn lệnh Debug / Compile… để biên dịch tất cả các thủ tục trong tập tin CSDL. Nếu cĩ lỗi sẽ dừng lại cho ta sửa.

h) CHẠY THỬ

- Chọn lệnh View/Immediate Window (Ctrl+G)

- Trong cửa sổ Immediate ta gõ tên thủ tục con và tham số (nếu cĩ) rồi bấm Enter. Nếu là thủ tục hàm thì ta thêm dấu ? ở phía trước tên thủ tục hàm .

3.2.7. KHAI BÁO BIẾN a) Ý NGHĨA a) Ý NGHĨA

- Là đối tượng trung gian dùng để lưu trữ các giá trị tính tốn khi chạy chương trình.

- Giá trị của các biến sẽ mất đi khi chương trình ứng dụng chấm dứt hoạt động. - Microsoft Access cĩ hai cơ chế khi sử dụng biến: tường minh (khai báo) và

khơng tường minh (khơng khai báo biến) trước khi sử dụng.

b) CÚ PHÁP

Dim <Tên biến>[As <Kiểu dữ liệu>]

- Tên biến: là tên do ta tự đặt theo quy ước đặt tên mà Microsoft Access đã quy ước. Tên biến khơng phân biệt chữ hoa hoặc chữ thường. Ta khơng nên đặt tên biến quá dài mà nên đặt tên biến ngắn gọn mang tính gợi nhớ. Thơng thường tên biến gồm 2 phần: phần đầu nĩi lên kiểu dữ liệu của biến, phần cuối là tên gợi nhĩ của biến.

Thí dụ: khai báo biến kiểu chuỗi dùng để chứa tên một biểu mẫu và biến N kiểu số nguyên:

Dim strFrmName As String Dim intN As Integer

- Kiểu dữ liệu: là một trong các kiểu dữ liệu cơ bản. Nếu ta bỏ qua phần khai báo kiểu dữ liệu thì biến sẽ cĩ kiểu dữ liệu thay đổi (Variant).

c) KHAI BÁO BIẾN TƯỜNG MINH VÀ KHƠNG TƯỜNG MINH

Để bắt buộc người lập trình phải khai báo biến tường minh trước khi sử dụng ta dùng câu lệnh câu lệnh Option Explicit ở đầu Module. Ngược lại nếu khơng cĩ câu lệnh này thì coi như ta khai báo biến khơng tường minh. Việc khai báo biến tường minh giúp ta tránh được việc sử dụng sai tên các biến vì khi biên dịch Access sẽ thơng báo lỗi khi phát hiện ra các biến cĩ sử dụng nhưng chưa khai báo để ta cĩ thể sửa đổi.

d) TẦM ẢNH HƯỞNG CỦA BIẾN

- Khi ta khai báo biến trong một thủ tục thì chỉ cĩ các câu lệnh bên trong thủ tục mới đọc hoặc tác động làm thay đổi giá trị của biến đĩ. Ta nĩi tầm ảnh hưởng của biến mang tính cục bộ trong thủ tục đĩ. Nếu ta muốn cĩ tầm ảnh hưởng là tất cả thủ tục trong một Module hoặc tất cả các Module của ứng dụng thì ta phải khai báo nĩ ở đầu Module kết hợp với các từ khĩa Public hoặc Private. Tĩm lại tầm ảnh hưởng của biến phụ thuộc vào vị trí khai báo biến và các từ khĩa. - Bảng tầm ảnh hưởng theo tứ khĩa:

Tầm ảnh hưởng Private Public

Cấp thủ tục

Các biến cĩ tính cục bộ ngay trong thủ tục khai báo biến.

Khơng thể khai báo biến tồn cục trong thủ tục.

Cấp Module

Các biến cĩ tính cục bộ ngay tại Module được khai báo

Các biến cĩ thể sử dụng cho tất cả các Module chung trong ứng dụng

e) CÁC BIẾN SỬ DỤNG TRONG MỘT 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 khai báo. Chúng được xem như một dạng biến cục bộ. Ta cĩ thể khai báo nĩ bằng các lệnh Dim hoặc Static.

Thí dụ: khai báo biến cục bộ X cĩ kiểu số nguyên

Dim intX As Integer hoặc

Static intX As Integer

Lưu ý: các biến cục bộ được khai báo bằng từ khĩa Dim chỉ tồn tại khi thủ tục

đang thực hiện. Cịn những biến cục bộ được khai báo bằng từ khĩa Static sẽ tồn tại trong tồn bộ thời gian ứng dụng đang thực hiện.

f) CÁC BIẾN SỬ DỤNG TRONG CÙNG MỘT MODULE

Để khai báo biến sử dụng chung cho cùng một Module ta đặt chúng ở đầu Module và dùng từ khĩa Dim hoặc Private.

Thí dụ: khai báo biến X cĩ kiểu nguyên dùng chung cho một Module

Option Compare Database Option Explicit

Dim intX As Integer hoặc

Private intX As Integer

g) CÁC BIẾN SỬ DỤNG CHUNG CHO TẤT CẢ CÁC MODULE

Để khai báo biến sử dụng chung cho tất cả các Module ta đặt chúng ở đầu Module và dùng từ khĩa Public.

được mở.

- Thời gian sống của những biến cục bộ trong các thủ tục chỉ bằng với thời gian mà thủ tục đĩ được chạy. Nĩ được khởi tạo khi chạy thủ tục và được giải phĩng khi chạy xong thủ tục. Nếu muốn lưu giữ lại thì ta cĩ thể dùng từ khĩa Static.

3.2.8. KHAI BÁO HẰNG a) Ý NGHĨA a) Ý NGHĨA

- Bên trong đoạn lệnh của ta cĩ thể chứa các giá trị khơng thay đổi và các giá trị này xuất hiện nhiều nơi trong thủ tục, hoặc phụ thuộc vào các số nào đĩ rất khĩ nhớ. Trong trường hợp này ta cĩ thể cải tiến cho các đoạn lệnh trở nên dễ đọc và dễ bảo trì hơn bằng cách sử dụng các hằng số.

- Một hằng là một tên đầy đủ dùng thay thế cho một chuỗi hay một số mà giá trị của nĩ khơng thay đổi trong suốt thời gian ứng dụng vận hành.

- Ta khơng thể sửa đổi hoặc gán giá trị mới vào cho một hằng.

- Hằng cĩ từ một trong hai nguồn: thứ nhất là do hệ thống định nghĩa, thứ hai do người dùng định nghĩa.

b) CÚ PHÁP

[Public | Private] Const Tên hằng [As Kiểu dữ liệu] = biểu thức

- Tên hằng: theo quy ước đặt tên đã nĩi ở trên - Kiểu dữ liệu: là một trong các kiểu dữ liệu cơ bản.

- Biểu thức: là sự kết hợp của số hay hằng chuỗi và các tốn tử.

c) THÍ DỤ

Const Pi = 3.14159 → Khai báo hằng Pi cĩ giá trị 3.14159

Const DoublePi = Pi * 2 → Khai báo hằng DoulePi cĩ giá trị bằng 2*Pi

Public Const Max = 10 → Khai báo hằng Max cĩ giá trị bằng 10

Const Ngay = #1/7/2006# → Khai báo hằng Ngay cĩ giá trị bằng #1/7/2006#

a) Ý NGHĨA:

Khi khai báo hằng hoặc biến ta cần phải chỉ ra kiểu dữ liệu của nĩ. Kiểu dữ liệu của biến dùng chỉ định loại dữ liệu mà biến sẽ lưu trữ. Mặc định khi ta khai báo biến mà khơng chỉ ra kiểu dữ liệu thì kiểu dữ liệu của nĩ sẽ là Variant (là kiểu thay đổi được)

b) CÁC KIỂU DỮ LIỆU CƠ BẢN

Tên kiểu Ý nghĩa Miền giá trị Số Byte

Byte Số nguyên 0 → 255 1

Boolean Logic 0: false ; -1: true 2

Integer Số nguyên -32768 →32767 2

Long Số nguyên -2147483648 →2147483647 4

Currency Số thực - 922337203685774.5808 → 922337203685774.5808

8 Single Số thực -3.402823E38 → -1.401298E-45 (âm)

1.401298E-45 →3.402823E38 (dương)

4 Double Số thực -1.79769313486232E308 → -4.94065645841247E-324 (âm) 4.94065645841247E-324 → 1.79769313486232E308 (dương) 8 Date Ngày 1/1/100 → 32/12/9999 8

String Chuỗi Khơng quá 2 tỷ ký tự

Variant Bất kỳ dữ liệu gì 16

Object Bất kỳ đối tượng nào

4

c) KIỂU DỮ LIỆU SỐ

- Dùng để khai báo cho các biến kiểu số.

- Nếu biến chứa giá trị nguyên thì ta dùng kiểu Integer hoặc Long - Nếu biến chứa giá trị lẻ thì ta dùng kiểu Single, Double, Currency.

d) KIỂU DỮ LIỆU CHUỖI

- Dùng để khai báo cho các biến chứa giá trị là một chuỗi ký tự.

- Khi khai báo một biến kiểu chuỗi thì chiều dài của nĩ thay đổi tùy theo giá trị dữ liệu mà nĩ chứa đựng.

- Nếu muốn biến kiểu chuỗi cĩ chiều dài cố định thì ta dùng cú pháp

String *kích thước

Thí dụ: Dim Ten As String *8 (Biến Ten kiểu chuỗi cĩ độ dài 8 ký tự)

- Khi một kiểu dữ liệu số được chuyển thành ngày, các giá trị bên trái dấu chấm thập phân sẽ đại diện cho ngày và các giá trị bên phải dấu chấm thập phân sẽ đại diện cho giờ.

- Ta cĩ thể dùng hàm Cdate để chuyển đổi 1 con số thành kiểu dữ liệu ngày. Thí

dụ: Cdate(2) = #1/1/1900#

g) KIỂU DỮ LIỆU THAY ĐỔI (VARIANT)

- Là kiểu dữ liệu cĩ thể lưu trữ nhiều loại dữ liệu khác nhau.

- Biến cĩ kiểu Variant cĩ thể chứa các loại dữ liệu số, chuỗi, ngày hoặc giá trị Null.

- VBA sẽ tự động chuyển đổi kiểu dữ liệu cho phù hợp khi ta gán những kiểu dữ liệu này cho các biến kiểu Variant.

- Thí dụ:

Dim X → Biến X được khai báo cĩ kiểu Variant

X = “10” → X chứa giá trị kiểu chuỗi “10”

X = X – 2 → X chứa giá trị kiểu số là 8

X = X & “A” → X chứa giá trị kiểu chuỗi là “8A”

- Cĩ thể dùng hàm IsNumeric để kiểm tra xem biến cĩ chứa giá trị kiểu số hay khơng. Hàm này trả về giá trị True khi biến được kiểm tra chứa giá trị kiểu số. - Cĩ thể dùng hàm IsDate để kiểm tra xem biến cĩ chứa giá trị kiểu ngày hay

khơng. Hàm này trả về giá trị True khi biến được kiểm tra chứa giá trị kiểu ngày.

- GIÁ TRỊ RỖNG (EMPTY)

Khi một biến cĩ kiểu Variant khi khởi tạo nĩ sẽ được gán một giá trị rỗng. Giá trị rỗng là giá trị đặc biệt. Giá trị này khác với giá trị khơng, một chuỗi rỗng (cĩ chiều dài bằng khơng) hoặc giá trị Null. Để kiểm tra một biến cĩ giá trị rỗng hay khơng ta dùng hàm Empty. Hàm này trả về giá trị True khi biến chứa giá trị rỗng.

Biến cĩ kiểu dữ liệu thay đổi cĩ thể chứa một giá trị đặc biệt gọi là giá trị Null. Null dùng để chỉ một dữ liệu thất lạc hoặc khơng xác định được. Các Field hoặc các Control mà khơng được khởi tạo trước thì giá trị mặc định là Null. Ta cĩ thể dùng hàm IsNull để kiểm tra một biến cĩ chứa giá trị Null hay khơng. Hàm này trả về giá trị True khi biến được kiểm tra chứa giá trị Null.

Lưu ý:

- Một biểu thức cĩ chứa giá trị Null thì kết quả trả về luơn là Null.

- Phần lớn các hàm trả về giá trị Null nếu tham số mà ta truyền vào cho hàm cĩ giá trị Null.

- Cĩ thể dùng từ khĩa Null để gán giá trị Null cho một biến kiểu Variant. Thí dụ X = Null.

- Chỉ cĩ biến cĩ kiểu dữ liệu thay đổi là cĩ thể chứa giá trị Null.

h) KIỂU DỮ LIỆU ĐỐI TƯỢNG (OBJECT)

- Các biến kiểu đối tượng sẽ lưu trữ địa chỉ của các đối tượng trong một ứng dụng hoặc trong một số ứng dụng khác.

- Một biến kiểu đối tượng cĩ thể được gán giá trị bằng câu lệnh SET

- Thí dụ: khai báo biến để tham chiếu đến một Recordset của Table T_HOSONV nằm trong tập tin CSDL hiện hành.

Dim Rs As Recordset

Set Rs = CurrentDB.OpenRecordset(“T_HOSONV”,dbOpenDynaset)

3.2.10. MỘT SỐ CHÚ Ý KHI SOẠN THẢO LỆNH TRONG NGƠN NGỮ VB

a) MỘT SỐ QUY ƯỚC KHI SOẠN THẢO LỆNH TRONG VB

• Ngơn ngữ lập trình VB khơng phân biệt chữ thường hay chữ in khi soạn thảo lệnh.

Ví dụ:

Dim A As Byte ta cũng cĩ thể viết

DIM A AS BYTE hoặc dim a as byte

• Mỗi lệnh phải đặt nằm trọn vẹn trên cùng một dịng màn hình.

o Nếu lệnh ngắn thì ta cĩ thể đặt nhiều lệnh trên cùng một dịng màn hình nhưng giữa các lệnh phải cách nhau bằng dấu hai chấm “:”.

Ví dụ: A=2 B=3 C=A+B

ba lệnh trên cĩ thể được viết trên cùng một dịng màn hình là: A=2 : B=3 : C=A+B

b) VIẾT CÁC LỆNH BÊN TRONG CỬA SỔ MÃ LỆNH

Viết các lệnh trong cửa sổ soạn thảo hồn tồn tương tự như bất kỳ phần mềm soạn thảo văn bản nào khác. Cĩ thể sao chép, di chuyển, xĩa các câu lệnh. Tuy vậy, VBA cũng cung cấp một số các đặc trưng để việc soạn thảo dễ dàng, thuận lợi hơn:

Tựđộng xây dựng các câu lệnh: Khi ta gõ vào một vài ký tự thì Access sẽ tự

động dị tìm và hiện ra danh sách các câu lệnh thích hợp để ta lựa chọn. Thí dụ: Khi ta gõ tên một điều khiển trên Form là nút lệnh cĩ tên Cmdchao thì Access tự động hiện ra bảng danh sách các thuộc tính và phương thức của nĩ.

Hình 3.19: Tựđộng xây dựng câu lệnh

Khi hiện ra danh sách, để hồn thành câu lệnh ta cĩ thể chọn trong danh sách hoặc gõ thêm một vài ký tự cho đến khi vệt sáng đậu trên phương thức hoặc thuộc tính mà ta cần sau đĩ nhấn phím Tab để chọn thuộc tính hoặc phương thức đĩ. Nếu hủy bỏ ta bấm ESC.

Xem thơng tin nhanh: Khi ta gõ vào một thủ tục hoặc một phương thức sẽ cĩ

một lời mách hiển thị các tham số cần thiết của một thủ tục hoặc cú pháp của

Một phần của tài liệu Giáo trình access 2 – trung tâm tin học đh sư phạm kỹ thuật TP HCM (Trang 63)

Tải bản đầy đủ (PDF)

(120 trang)