Chương 1: GIỚI THIỆU về VBA

Một phần của tài liệu Microsoft Access 2000 Lập trình ứng dụng cơ sở dữ liệu. Tập 1 (Trang 59 - 65)

CAU TRUC LOGIC DIEU KIEN VA VONG LAP

Chương 1: Chương 1: GIỚI THIỆU về VBA

kiện khác thực hiện chỉ khi xuất hiện kết quả.

Cũng giống như câu lệnh For..Next, lgénh For Each . . Next có thể lồng nhau. Khi kết thúc một vòng lặp For Each .. Next, điều khiển chuyển tới câu lệnh đầu tiên ở sau vòng lặp.

Cau lénh With .. End With don giản chỉ là tham chiéu dén một số thuộc tính hoặc phương pháp khác nhau của cùng một đối tượng. Bạn chỉ ra đối tượng cần tham chiếu đến các thuộc tính hoặc các phương pháp bắt đầu cla dong With và kết thúc tham chiếu với dòng End With. Ở giữa các dòng WWh và End With bạn có thể truy xuất các thuộc tính hoặc phương pháp của đối tượng mà không cần chỉ ra tên của đối tượng. Đoạn chương trình dưới đây là cú pháp chung cua lénh With... End With:

With object

.propertynamet = “new value1”

.propertyname2 = "new value2”

-method1 ,method2 End With

Object có thể là tên của một đối tượng, một tham chiếu đến đối tượng hoặc là tên của mảng. Các bién propertynamel va propertyname2 1a những thuộc tính của đối tượng, method1, method3 là những phương pháp của đối tượng. Như đã thấy, lệnh With .End With làm cho việc truy xuất những thuộc tính và các phương pháp của một đối tượng được đễ dàng hơn.

Các Hình 1-18, 1-19, và 1-20 trình bày một form hợp thức hóa dữ liệu, mặc đù form chỉ có 2 hộp văn bản yêu cau hợp thức hóa, đoạn chương trình sử dụng lệnh lap For Each .. Next để có thể mở rộng thêm sự kiểm tra của hộp văn bản. Bạn có thể thay đối đôi chút bằng cách đưa các dạng kiểm tra khác vào trong thủ tục hợp thức hóa. Hình 1-18 thể hiện một kiểu trình bày của form Input với một hộp văn bản và một nút lệnh.

Click vào nỳt lệnh Do ùt để thực hiện thủ tục sự kiện, thủ tụ:

51

này có nhiệm vụ kiểm tra giá trị trong hộp văn bản, bảo đảm là không chứa giá trị Null. Nếu một hoặc cả hai hộp kiểm tra này chứa giá trị Null, thủ tục sự kiện sẽ hiện ra câu thông báo yêu cầu người dùng nhập thông tin cho hai hộp văn bản.

Thủ tục sự kiện này còn gọi thủ tục làm thay đổi màu nên của hộp văn bản nào chứa giá trị Null tir mau trắng thành màu vàng. Nó còn di chuyển hướng tập trung đến hộp văn bản cuối cùng chứa giá trị NuH, màu nền vẫn là màu vàng cho đến khi người dùng cập nhật dữ liệu trong hộp văn bản.

HY Presse ortes tumunan a bok red bone

Hình 1-18. Kết quả của việc click nút lệnh Do It khi có ít nhất một hộp văn bản chúa gia tri Null.

Hình 1-19 trình bày một hộp văn bản trước đây là Null nhưng bây giờ là 1. Màu nền thay đổi lại thành màu trắng ngay sau khi người dùng nhập vào thông tin và không còn chuyển hướng tập trung vào hộp văn bản nữa. Hình 1-20 trình bày form sau khi cập nhật giá trị mới cho hộp văn bản.

Hai thủ tục tên 14 emdSubmit_Click va MarkFieldsToEdit cé nhiệm vụ xem xét nội dung của các hộp văn bản và đổi màu nền thành màu vàng tươi đối với bất kỳ hộp văn bản nào chứa giá trị Null. Thủ tục sự kiện Ciick cho nút lệnh lặp qua các điểu khiển trên form, bao gồm các điều khiển cho hộp văn bản cũng như không phải là hộp văn bản. Thủ tục sự kiện sử dụng từ khóa 7ypeOƒ để 52

Chương 1: GIỚI THIỆU VỀ VBA

phát hiện điều khiến nào là một hộp văn bản. Thủ tục này cũng xẩy ra lỗi run-time nếu như không có điều khiển nào có thuộc tính Vaiue. Nếu thủ tục sự kiện phát hiện một điều khiển là hộp văn bản, nú yờu cầu thuộc tớnh Vứiue của điều khiển đú để xỏc định nú có chứa giá trị Null hay không. Bất kỳ điều khiển nào có giá trị NuÌ! thì nó cũng kích khởi (trigger) đoạn mã của câu lệnh 1Ƒ_Then.

Chương trình này hiện hộp thông báo và gọi thủ tục để làm nổi bật màu (hightlight) cho điều khiển khi mục nhập bị sai.

E3 frmForE ach : Form

Hình 1-19. Hộp

van ban mau Input Form

vàng nổi bal

lên khi chuyển Input 1: i

lừ giá trị Nuh tng 2: FT”

sang 1.

Do It!

& fmForE ach : Form

Hinh 1-20. Sau I

khi người dùng nput Form

nhập thông tín mép [TC

và chuyển

hướng tập Input 2: E———

trung, màu nền :

của hộp văn De It!

bản trỏ lại màu

trắng.

Private Sub cmdSubmit_Click()

'Kiểm tra những mục nhập hợp lệ.

53

For Each ct! In Screen.ActiveForm.Controls If TypeOf ctl ls TextBox Then

If IsNuil(ctl Value) Then

MsgBox "Please enter information " _

& “in both input boxes.", _ vbInformation, _

"Programming Microsoft Access 2000"

MarkFieldsToEdit Exit For

End if End If Next ctl End Sub

Public Sub MarkFieldsToEdit()

For Each ctl In Screen.ActiveForm.Controls If TypeOf ctl ls TextBox Then

If IsNull(ctl_ Value) Then With ctl

-BackColor = RGB(255, 255, 0) ,SetFocus

End With End If End If Next ctl End Sub

Thủ tục MarkFieldsToEdit cing dùng từ khóa 7ypeOƒ để xác định các hộp văn bản. Khi phát hiện một hộp văn bản có giá trị Null, né dung cau lénh With..End With để thay đổi màu nên của điều khiển và chuyển hướng tập trung đến điều khiển đó. Điều này bảo đảm rằng hộp văn bản cuối cùng chứa giá tri Null tap trung vào cuối thủ tục.

Mỗi sự kiện của các thủ tục trong đoạn chương trình đưới đây kích hoạt vào sự kiện A/#erUpdarte. Mỗi thủ tục sử dụng khối With..End With dé thay đổi màu nên của điều khiển liên kết thành màu trắng nếu màu nên hiện tại là màu vàng. Sự kiện AfferUpdate

54

Đẹ Chương 1: GIỚI THIẾU VE VBA

xảy ra độc lập đôi với hai hộp văn bản, nhưng nội dung chương trình trong mỗi thú tục lại giống nhau ngoại trừ tên của đối tượng Hiên hệ. (hoặc £xtnputT hoặc fxHInput2)

Private Sub txtInput1_ AfterUpdate() With txtlnput1

If .BackColor = RGB(255, 255, 0) Then .BackColor = RGB(255, 255, 255) End If

End With End Sub

Private Sub txtinput2_AfterUpdate() With txtInput2

lf .BackColor = RGB(255, 255, 0) Then .BackColor = RGB(255, 255, 255) End If

End With End Sub

Do... Loop

Lénh Do ... Loop là loại lệnh lặp khác của VBA. Lénh Do ...

Loop linh hoạt hơn có thể chọn để thay thế cho lénh While ..Wend

ơ nú cú tất cả cỏc chức năng của lệnh Wiile.. Wend và hơn thế nữa.

VBA giif lai lénh While .. Wend để tương thích với các phiên bản trước đây.

Ban có thể sử dụng lặp Do... Loop để thực hiện lặp lại mệt nhóm lệnh cho đến khi nao cdc gia tri cia diéu kién la True hay Faise. Cú pháp câu lệnh Do... Loop thuc hién viéc kiểm tra diều kiện trước khi thực hiện nhóm lệnh hoặc ngay sau khi thực hiện nhóm lệnh. Cũng giống như những câu lệnh lặp khác, nó cũng có câu lệnh đặc biệt để thoát ra khỏi vòng lặp trong lúc đang thi hành chương trình. Có hai dạng cú pháp của lệnh Do... Loop như sau:

Do {While | Until} condition

‘Statements

55

If condition Then Exit Do

End If

‘Statements Loop

Va:

.Do

‘Statements If condition Then

Exit Do End If

‘Statements

Loop {While | Until} condition

Ở dạng thứ nhất, thực hiện việc kiểm tra điều kiện trước khi

thực hiện những lệnh trong vòng lặp. Dạng thứ hai kiểm tra điều kiện sau khi thực hiện những lệnh trong vòng lặp. Việc kiểm tra điều kiện cú thể dựng từ khúa Wọie hay UmiL Đối với mệnh đề While, voug lap vẫn thực hiện khi điều kiện còn ding, déi véi Until vòng lặp vẫn thực hiện khi điểu kiện sai. Hầu hết những người có kinh nghiệm phát triển ứng dụng trên Access thường sử dụng các vòng lặp Do để duyệt qua các record trong một tập record (recordset) cho đến cuối file (EOF) hoặc đâu file (BOF). Cũng giống như những lệnh lặp khác trong VBA bạn có thể thoát ra khỏi vòng lặp Do giữa chừng bằng cách ding lénh Exit Do.

Hình 1-21 trình bày hai thủ tục hàm cùng với kết quả xuất để minh hoa cach lập trình với các vòng lặp Do như thế nào. Hàm DayToNextMonth nhận một giá trị ngày và trả về một số biểu thị cho số ngày được tính từ ngày đó đến ngày đầu tiên của tháng sau.

Một phần của tài liệu Microsoft Access 2000 Lập trình ứng dụng cơ sở dữ liệu. Tập 1 (Trang 59 - 65)

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

(383 trang)