Đa phần các bạn lập trình access điều kinh qua lập trình excel. Thông thường bắt đầu ở chổ record new macro ở excel để hỗ trợ cho công việc xử lý excel nhanh hơn, tốt hơn. Thế là bắt đầu làm quen với các dòng code của VBA. Một vài người gom khái niệm VB và VBA thành một.
Đầu tiên phải nói đến VB (Visual Basic) có trước, nó được Microsoft phát triển từ việc thừa kế ngôn ngữ lập trình Basic. Sau khi Microsoft phát triển các công cụ văn phòng (office) nó được đưa vào các ứng dụng này để hỗ trợ như một công cụ bổ sung. Vì là bộ phận bổ sung tích hợp nên cũng ta thấy một số lệnh của VBA access khác với lệnh VBA của excel, word hoặc powerpoint. Cái này do sự chủ quan của Microsoft + yêu cầu của người dùng. Điển hình là trên table của mdb không thể tạo sum, count, average nhưng đến accdb thì lại cho phép (tuy có hơi tào lao nhưng cũng có nhiều người thích và office dễ bán hơn, Microsoft nghĩ vậy).
Trong khuôn khổ bài viết này, tôi không đưa ra hết, tất cả các đối tượng thành phần của VBA vì nó rất nhiều. Bản thân nó là một ngôn ngữ dựa trên tiếng Anh là chủ yếu, nên đa phần hơi từa tựa tiếng Anh, vì vậy bạn nào học tiếng Anh tiếp cận nó rất tốt, ngày xưa tôi là dân Pháp văn nên đụng vào nó thấy khó vô cùng. Sau này, xác định rằng nó là tiếng gì kệ nó miễn là khi viết máy hiểu thì thôi.
Trở lại vấn đề học code VB trên Access, như đã nói trên đa phần anh em code VBA excel rồi mới thâm nhập qua access. Chính vì vậy, cái nào đã biết từ excel sẽ được khai thác triệt để còn không tìm thấy lệnh phù hợp là rối liền. Như đã trình bày ở trên, VBA là bộ bận bổ sung cho từng loại công cụ, nên khi nó bổ sung cho access, nó sẽ bổ sung lệnh nào phù hợp, lệnh nào chủ quan Microsoft thấy không cần thiết nó sẽ bỏ. Đó là lý do tại sao trên report có runningsum còn trên form lại không, đó là lý do tại sau trên table của access 2003 không tính được sum, count còn access 2007 trở đi thì làm được chuyên này.
Nói lan man quá, xin trở lại với vấn đề kinh nghiệm học VBA trên access. Thực ra học VBA trên access 2003 dễ hơn access 2007 trở đi (mặc dầu ngày xưa rất cưc) vì: F1 hay Help của access 2003 là ofline, nằm ngay trên máy, còn hiện nay bộ phận này nằm trên mạng, để xem được nó nó còn kiểm tra đủ thứ mới cho xem mà có khi có đủ rồi nó trỏ vào trang tào lao, đọc cũng chẳng hiểu được gì.
Giờ đi vào nội dung.
1/ Chịu khó đọc hướng dẫn: Đây là cách đọc hướng dẫn trên access 2003, chỉ cần gõ vào Search Help nó sẽ ra ngay, sau đó chỉ cần quét toàn bộ nội dung đưa lên google search là hiểu đế 80-90% vấn đề. Cũng có cách khác là lên mạng tra nhưng chắng bao giờ nhanh bằng cái này.
2/ Chịu khó duyệt danh sách Complete Word
VBA hỗ trợ rất tốt danh sách Complete Word (hoàn chỉnh từ), nếu chưa biết lệnh để xử lý chính xác có thể sử dụng danh sách này để thử cho từng mã lệnh, danh sác này liệt kê các phương thức hoặc thuộc tính của các đối tượng, có thể sẽ có một mã lệnh vừa ý.
Nắm bắt đầy đủ cấu trúc lệnh của VBA access.
Có khi nào chúng ta để ý 2 dòng đầu tiên khi mở giao diện soạn thảo lệnh VBA
Option Compare Database
Option Explicit
Option Compare Database: Tùy chọn So sánh Cơ sở dữ liệu. kết quả này là so sánh chuỗi dựa trên thứ tự sắp xếp được xác định bởi ID ngôn ngữ của cơ sở dữ liệu nơi xảy ra so sánh chuỗi. Không có mệnh đề này khả năng so sánh các ID chuỗi bị hạn chế
Option Explicit: Tùy chọn Cơ sở dữ liệu rõ ràng. Đây là vấn đề tường minh trong CSDL, nễiu không có nó CSDL chấp nhận tất cả các biến khi nó chưa được khai báo. Tất nhiên, khi chạy nó sẽ bị lỗi. Khi có mệnh đề này nó sẽ báo lỗi ngay khi biên dịch (combile), để có thể nhanh chóng sửa chữa
Hầu như tất cả các mã lệnh VBA của gắn liền với event (sự cố, biến cố): Các thủ tục (Sub) hoặc công thức (Function). Ngoại trừ Function còn được sử dụng như là một công thức trong query, form, report
3/Xây dựng mã VBA trong module:
Một đoạn mã code để thực thi một công việc gì đó được xây dựng như sau:
a/ Bằng lệnh trực tiếp: Toán tử giữa các biến các function hệ thống hay tự viết : A+B;Sum();msgBox()…
b/Các cấu trúc cơ bản: Nếu… thì (If…then); Chọn lựa (Select Case); Vòng lặp (Do…Loop; For…Next)
Các cấu trúc này có thể sử dụng một mình hoặc lồng nhau. Tôi chỉ giới thiệu các cấu trúc cơ bản. Thực ra với từng loại cấu trúc cũng có nhiều kiểu khác nhau. Ví dụ: If …Then còn có If …Else If; Do…Loop có Do While, Do Until, While…Wend. Cái này các bạn tự nghiên cứu.
c/ Một chuyên quan trọng khác là khi làm việc với các biến, hằng phải khai báo rõ ràng kiểu dữ liệu. Các biến, hằng cục bộ nằm trong module của đối tượng (form, report). Các biến hằng toàn cục nằm trong module toàn cục.
Nếu nắm bắt được vấn đề chung này việc code VBA sẽ không còn là mối e ngại khi làm việc với VBA access