Khái niệm đầu tiên về lập trình trên Access

phatnq2002

Tích cực giảm cân...
Hội viên mới
Nội dung dưới đây do post lộn chỗ, do đó tôi xin post lại như là một new thread:

Thể theo lời của bạn Simon, tôi sẽ mở đầu bằng một bài về việc viết code trong Access, trước tiên là khái niệm.

Access ngoài chức năng là quản trị CSDL, nó còn có thể cho phép người dùng xây dựng một ứng dụng. Đde63 xây dựng một ứng dụng, điều nhất thiết là phải lập trình (coding).

Access sử dụng ngôn ngữ Visual Basic được Microsoft support cho các phần mềm trong Microcost Office: Word, Excel, Access, PowerPoint, ... và được gọi là VBA - Visual Basic for Applications.

Nếu bạn nào đã biết ngôn ngữ VB thì VBA không là gì cả. Tuy nhiên nó có một số khác biệt nho nhỏ do đã được hỗ trợ thêm một số thư viện thích hợp.

Lập trình trong Access còn được gọi là lập trình điều khiển sự kiện (event-driven programming). Về hình thức nó tương tự như lập trình hướng đối tượng nhưng đơn giản hơn nhiều.

Lập trình điều khiển sự kiện là việc lập trình sao cho khi có một sự kiện, một hành vi tác động lên một đối tượng thì sẽ thực thi một hay nhiều tác vụ nào đó tương ứng.

Chúng ta có thể lập trình sự kiện trên các Form, Report và những đối tượng trong chúng.

Tuy nhiên muốn lập trình sự kiện một cách "pro", chúng ta phải nắm vững ý nghĩa của các sự kiện và diễn biến của sự kiện.

Ví dụ: Một người muốn kiểm tra dữ liệu nhập vào textbox số lượng (soluong), số lượng nhập vào không được phép để trống và phải dương.
Ở đây người dùng sẽ yêu cầu một trong hai tình huống:
- Hoặc là kiểm tra khi dấu chèn (insertion I-beam) rời khỏi textbox soluong.
- Hoặc là kiểm tra khi chuẩn bị chuyển sang một record khác.

Khi dấu chèn rời khỏi textbox soluong, hàng loại các sự kiện sau sẽ xảy ra (có giản lược, chỉ giữ các sự kiện chính): BeforeUpdate, AfterUpdate, Exit, LostFocus.

- BeforeUpdate là sự kiện xảy ra trước khi dữ liệu trong textbox soluong được lưu lại trong recordset (nhưng chưa lưu vào table). Sự kiện này chỉ xảy ra khi người sử dụng có gõ (entry) bất cứ gì vào textbox kể cả xóa trắng nội dung.
- AfterUpdate là sự kiện xảy ra sau khi dữ liệu trong textbox soluong được lưu lại trong recordset (nhưng chưa lưu vào table).
- Exit: sự kiện xảy ra trước khi dấu chèn rời khỏi textbox.
- LostFocus: sự kiện xảy ra khi dấu chèn thực sự ra khỏi textbox.

Trong các thủ tục sự kiện tương ứng BeforeUpdate và Exit của textbox soluong, chúng ta đều có thể kiểm tra được dữ liệu nhập vào của người dùng, nhưng có hơi khác một tý về cách hành xử.

Private Sub soluong_BeforeUpdate (Cancel As Integer)
If IsNull(soluong) Or soluong <= 0 Then
MsgBox "So luong khong hop le."
Cancel = True
End If
End Sub
Private Sub soluong_Exit (Cancel As Integer)
If IsNull(soluong) Or soluong <= 0 Then
MsgBox "So luong khong hop le."
Cancel = True
End If
End Sub

Thoạt nhìn, cả hai hầu như không có gì khác nhau, nhưng nó sẽ có một số điểm khác biệt:
Nếu ở textbox soluong, người sử dụng không nhập gì (trước đó soluong đang để trống) thì khi người sử dụng ENTER để đi qua, thủ tục BeforeUpdate không thi hành mà thủ tục Exit thi hành. Khi thi hành, chúng hiện thông báo, sau đó giữ dấu chèn ở lại trong textbox soluong. Nếu sử dụng thủ tục beforeUpdate, để rời khỏi soluong, người sử dụng có thể nhấn phím ESC để lấy lại giá trị cũ của soluong, và từ đó có thể rời khỏi nó. Trong khi đó, nếu sử dụng thủ tục Exit thì sẽ gần như là bị loop, không ra được textbox soluong.

Thường thì biện pháp tốt nhất là kiểm tra trước khi record lưu vào table. Trong trường hợp này sẽ sử dụng thủ tục sự kiện BeforeUpdate của Form.

Private Sub Form_BeforeUpdate (Cancel As Integer)
If IsNull(soluong) Or soluong <= 0 Then
MsgBox "So luong khong hop le."
Cancel = True
End If
End Sub

Trong thủ tục này của form, chúng ta có thể kiểm tra toàn bộ những ràng buộc mà chúng ta cần.

Trên là một số khái niệm ban đầu, trong thời gian tới, tôi sẽ sắp xếp thời gian post một số kinh nghiệm về lập trình trong Access để các bạn tham khảo.
 
Thanks phatnq2002 rất nhiều, Chúng tôi chờ bài kế tiếp của bạn!!!

:)
 
Ðề: Khái niệm đầu tiên về lập trình trên Access

Cảm ơn bạn vì bài viết này.
Mình muốn làm thông báo:
nếu chưa nhập tên mà nhập ngày sinh => Thông báo "bạn cần phải nhập tên" và không chấp nhận ngày sinh này nữa có được không?
Xin chỉ giúp với, mình là dân mới mà! Xin cảm ơn!
 
Ðề: Khái niệm đầu tiên về lập trình trên Access

Private Sub ngaysinh_BeforeUpdate (cancel as integer)
If IsNull(ten) Then
msgbox "ban can phai nhap ten"
cancel = True
ten.GotFocus
End If
End Sub

Không bít đúng không nữa, mình có sai gì mọi người góp ý nha :D
 
Sửa lần cuối:

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top