Khi tạo cơ sở dữ liệu mới, bạn thường bắt đầu bằng cách tạo các đối tượng cơ sở dữ liệu như bảng, biểu mẫu và báo cáo. Tại một số thời điểm, bạn có thể cần phải thêm lập trình để tự động hóa quy trình và kết nối những đối tượng đó. Bài viết này giới thiệu về các công cụ lập trình trong Access.
Trong bài viết này
- Lập trình là gì?
- Tôi nên sử dụng macro hay mã VBA?
- Sử dụng Trình hướng dẫn Nút Lệnh để thực hiện các tác vụ lập trình phổ biến
- Tìm hiểu về macro
- Tìm hiểu về mã VBA
- Chuyển đổi macro thành mã VBA
Lập trình là gì?
Trong Access, lập trình nghĩa là thêm chức năng vào cơ sở dữ liệu của bạn bằng cách sử dụng macro Visual Basic for Applications (VBA) Access. Ví dụ: bạn có thể tạo biểu mẫu và báo cáo, rồi thêm nút lệnh vào biểu mẫu mở báo cáo khi bạn chọn. Trong trường hợp đó, bạn tạo macro VBA hoặc thủ OnClick tục, rồi đặt thuộc tính sự kiện của nút lệnh để nút lệnh chạy macro hoặc thủ tục. Đối với một thao tác đơn giản, chẳng hạn như mở báo cáo, bạn có thể sử dụng Trình hướng dẫn Nút Lệnh để thực hiện công việc hoặc bạn có thể tự tắt trình hướng dẫn và lập trình.
Lưu ý
Nhiều chương trình Microsoft Office sử dụng thuật ngữ "macro" để tham chiếu đến VBA mã. Điều đó có thể gây nhầm lẫn cho người dùng Access vì trong Access, thuật ngữ "macro" đề cập đến một tuyển tập có tên gồm các hành động macro mà bạn tập hợp bằng cách sử dụng Bộ dựng Macro. Hành động macro Access chỉ đại diện cho một tập hợp con các lệnh sẵn dùng trong VBA. Bộ dựng Macro cung cấp cho bạn giao diện có cấu trúc hơn Trình soạn thảo Visual Basic, vì vậy bạn có thể thêm lập trình vào điều khiển và đối tượng mà không cần mã tìm VBA hiểu. Trong các bài viết Trợ giúp về Access, macro của Access được gọi là macro.
VBA được gọi là VBA mã, hàm hoặc thủ tục.
VBA mã được lưu trữ trong mô-đun lớp, là một phần của các biểu mẫu hoặc báo cáo riêng lẻ và thường chỉ chứa mã cho các đối tượng đó và trong mô-đun, vốn không liên kết với các đối tượng cụ thể và thường chứa mã toàn cầu mà bạn có thể sử dụng trong toàn bộ cơ sở dữ liệu.
Các đối tượng như biểu mẫu, báo cáo và điều khiển, chẳng hạn như nút lệnh và hộp văn bản, có thuộc tính sự kiện mà bạn có thể đính kèm macro hoặc thủ tục. Mỗi thuộc tính sự kiện được liên kết với một sự kiện cụ thể, chẳng hạn như bấm chuột, mở biểu mẫu hoặc thay đổi dữ liệu trong hộp văn bản. Sự kiện cũng có thể được kích hoạt bởi các yếu tố bên ngoài Access, chẳng hạn như sự kiện hệ thống hoặc bằng macro hoặc thủ tục đính kèm với các sự kiện khác. Cơ sở dữ liệu của bạn có thể trở nên phức tạp nếu bạn thêm nhiều macro hoặc thủ tục vào nhiều thuộc tính sự kiện trên nhiều đối tượng. Tuy nhiên, trong hầu hết các trường hợp, bạn có thể nhận được kết quả mong muốn bằng cách sử dụng rất ít lập trình.
Tôi nên sử dụng macro hay mã VBA?
Quyết định sử dụng macro, hoặc VBAcả hai phụ thuộc chủ yếu vào cách bạn dự định triển khai hoặc phân phối cơ sở dữ liệu. Ví dụ, nếu cơ sở dữ liệu được lưu trữ trên máy tính của bạn, VBA bạn là người dùng duy nhất và bạn cảm thấy thoải mái khi sử dụng mã, VBA bạn có thể quyết định sử dụng cho hầu hết các tác vụ lập trình. Tuy nhiên, nếu bạn dự định chia sẻ cơ sở dữ liệu của mình với người khác từ máy chủ tệp, VBA bạn có thể muốn tránh sử dụng vì lo ngại về bảo mật.
Bạn quyết định sử dụng macro hoặc mã dựa trên VBA hai mối quan tâm: bảo mật và chức năng mà bạn muốn. Vấn đề bảo mật VBA là vì có thể được sử dụng để tạo mã làm tổn hại đến dữ liệu của bạn hoặc gây hại cho các tệp trên máy tính của bạn. Khi bạn sử dụng cơ sở dữ liệu mà người khác đã tạo, VBA chỉ bật mã nếu bạn biết rằng cơ sở dữ liệu đó đến từ một nguồn đáng tin cậy. Khi bạn tạo cơ sở dữ liệu mà người khác sẽ sử dụng, hãy cố gắng tránh đưa vào các công cụ lập trình yêu cầu người dùng tin cậy một cách rõ ràng cơ sở dữ liệu đó. Các kỹ thuật chung để tránh yêu cầu đó xuất hiện ở phần sau trong mục này.
Để giúp bảo mật cơ sở dữ liệu của bạn, hãy cố gắng sử dụng macro VBA khi bạn có thể và chỉ sử dụng cho các thao tác không thể thực hiện bằng cách sử dụng các hành động macro. Ngoài ra, hãy thử chỉ sử dụng những hành động macro không yêu cầu cơ sở dữ liệu được tin cậy trước khi chúng có thể chạy. Việc giới hạn hành động macro theo cách này sẽ giúp người dùng cảm thấy tự tin rằng cơ sở dữ liệu không có lập trình nào có thể gây hại cho dữ liệu hoặc các tệp khác trên máy tính của họ.
Những điều cần cân nhắc về macro
Access chứa nhiều hành động macro cho phép bạn xây dựng macro mạnh mẽ hơn các phiên bản Access trước đây được cho phép. Ví dụ: giờ đây, bạn có thể tạo và sử dụng các biến tạm thời toàn cục bằng cách sử dụng hành động macro và bạn có thể xử lý lỗi dễ dàng hơn bằng các hành động macro xử lý lỗi mới. Trong các phiên bản Access cũ hơn, những tính năng này chỉ sẵn dùng trong VBA. Bạn cũng có thể nhúng macro trực tiếp vào thuộc tính sự kiện của một đối tượng hoặc điều khiển. Macro được nhúng trở thành một phần của đối tượng hoặc điều khiển và luôn ở bên trong nếu đối tượng hoặc điều khiển được di chuyển hoặc sao chép.
Macro cung cấp một cách dễ dàng để xử lý nhiều tác vụ lập trình, chẳng hạn như mở và đóng biểu mẫu và chạy báo cáo. Bạn có thể nhanh chóng gắn kết các đối tượng cơ sở dữ liệu, chẳng hạn như biểu mẫu và báo cáo mà bạn đã tạo vì có ít cú pháp cần ghi nhớ. Các tham đối của từng hành động được hiển thị trong Bộ dựng Macro.
Bên cạnh tính bảo mật cao và dễ sử dụng do macro đem lại, bạn phải sử dụng macro để thực hiện các tác vụ sau đây:
Gán một hành động hoặc tập hợp các hành động cho một khóa. Điều này yêu cầu tạo một nhóm macro có tên
AutoKeyslà .Thực hiện một hành động hoặc một chuỗi các hành động khi cơ sở dữ liệu mở ra lần đầu tiên. Thao tác này yêu cầu tạo một macro có tên
AutoExec.Lưu ý
Macro
AutoExecsẽ chạy trước mọi macroVBAhoặc mã khác, ngay cả khi bạn đã chỉ định biểu mẫu khởi động trong hộp thoại Tùy chọn Access và đính kèm macroVBAOnOpenOnLoadhoặc mã vào biểu mẫu hoặc sự kiện đó.
Để biết thêm thông tin về cách xây dựng macro, hãy xem mục Tìm hiểu về macro.
Những điều cần cân nhắc về VBA
Sử VBA dụng thay cho macro nếu bạn muốn thực hiện bất kỳ thao tác nào sau đây:
- Sử dụng các hàm tích hợp sẵn hoặc tạo hàm của riêng bạn. Access bao gồm nhiều hàm tích hợp sẵn, chẳng hạn
IPmtnhư tính toán khoản thanh toán lãi. Bạn có thể sử dụng các hàm này để thực hiện tính toán mà không cần tạo biểu thức phức tạp. Bằng cách sửVBAdụng , bạn cũng có thể tạo hàm của riêng mình để thực hiện tính toán vượt xa khả năng của biểu thức hoặc thay thế các biểu thức phức tạp. Ngoài ra, bạn có thể sử dụng các hàm mà bạn tạo trong biểu thức để áp dụng một phép toán phổ biến cho nhiều đối tượng. - Tạo hoặc thao tác với các đối tượng. Trong hầu hết các trường hợp, cách dễ nhất để tạo và sửa đổi một đối tượng trong cửa sổ Thiết kế của đối tượng đó. Tuy nhiên, trong một số trường hợp, bạn có thể muốn điều chỉnh định nghĩa của đối tượng trong mã. Bằng cách sử
VBAdụng , bạn có thể thao tác với tất cả các đối tượng trong cơ sở dữ liệu, cũng như chính cơ sở dữ liệu đó. - Thực hiện hành động ở cấp hệ thống. Bạn có thể
RunAppthực hiện hành động trong macro để chạy một chương trình khác, chẳng hạn như Microsoft Excel, từ bên trong Access nhưng bạn không thể sử dụng macro để thực hiện nhiều tác vụ khác bên ngoài Access.VBABằng cách sử dụng , bạn có thể kiểm tra xem tệp có tồn tại trên máy tính hay không, sử dụng Tự động hóa hoặc Trao đổi Dữ liệu Động () để liên lạc với các chương trình dựa trên Microsoft Windows khác như Excel và gọi hàm trong thư viện nối kết động của Windows (DDEDLLs). - Điều chỉnh từng bản ghi một. Bạn có thể sử
VBAdụng để xem qua từng bộ bản ghi một bản ghi và thực hiện một thao tác trên từng bản ghi. Ngược lại, macro làm việc với toàn bộ tập hợp bản ghi cùng một lúc.
Sử dụng Trình hướng dẫn Nút Lệnh để thực hiện các tác vụ lập trình phổ biến
Nếu bạn đang thêm nút lệnh vào một biểu mẫu, Trình hướng dẫn Nút Lệnh có thể giúp bạn bắt đầu lập trình. Trình hướng dẫn sẽ giúp bạn tạo nút lệnh để thực hiện một tác vụ cụ thể. Trong tệp Access (.accdb), trình hướng dẫn sẽ tạo một macro được nhúng trong thuộc OnClick tính của nút lệnh. Trong một .mdb hoặc nhiều .adp tệp, trình hướng dẫn sẽ tạo mã VBA vì macro được nhúng không sẵn dùng ở những định dạng tệp đó. Trong cả hai trường hợp, sau đó bạn đều có thể sửa đổi hoặc nâng cao macro hoặc mã VBA để phù hợp hơn với nhu cầu của mình.
Trong Ngăn Dẫn hướng, bấm chuột phải vào biểu mẫu bạn muốn thêm nút lệnh, rồi bấm vào Cửa sổ Thiết kế.
Trên tab Thiết kế Biểu mẫu, bấm vào mũi tên xuống để hiển thị bộ sưu tập Điều khiển, rồi đảm bảo đã chọn Sử dụng Trình hướng dẫn Điều khiển.
Trên tab Thiết kế Biểu mẫu , trong bộ sưu tập Điều khiển, bấm Nút.
Trong lưới thiết kế biểu mẫu, bấm vào vị trí bạn muốn đặt nút lệnh. Trình hướng dẫn Nút Lệnh sẽ bắt đầu.
Trên trang đầu tiên của trình hướng dẫn, hãy bấm vào từng danh mục trong danh sách Danh mục để xem trình hướng dẫn có thể lập trình cho nút lệnh thực hiện những hành động nào. Trong danh sách Hành động, chọn hành động mà bạn muốn, rồi bấm vào Tiếp theo.
Bấm vào tùy chọn Văn bản hoặc tùy chọn Ảnh, tùy thuộc vào việc bạn muốn hiển thị văn bản hay ảnh trên nút lệnh.
- Nếu bạn muốn hiển thị văn bản thì bạn có thể chỉnh sửa văn bản đó trong hộp bên cạnh tùy chọn Văn bản.
- Nếu bạn muốn hiển thị ảnh thì trình hướng dẫn sẽ đề xuất một ảnh trong danh sách. Nếu bạn muốn chọn ảnh khác, hãy chọn hộp kiểm Hiển thị Tất cả Ảnh để hiển thị danh sách tất cả ảnh nút lệnh mà Access cung cấp hoặc bấm vào Duyệt để chọn ảnh được lưu trữ ở nơi khác. Bấm vào Tiếp theo.
Nhập tên có ý nghĩa cho nút lệnh. Bước này là tùy chọn và tên này không được hiển thị trên nút lệnh. Tuy nhiên, bạn nên nhập tên có ý nghĩa để sau này khi cần tham chiếu đến nút lệnh, chẳng hạn như khi bạn đang đặt thứ tự tab cho các điều khiển trên biểu mẫu, bạn sẽ dễ dàng phân biệt các nút lệnh hơn nhiều. Ví dụ: nếu nút lệnh đóng biểu mẫu, bạn có thể đặt tên cho biểu mẫu
cmdCloseđó hoặcCommandClose.Bấm vào Kết thúc. Access đặt nút lệnh lên biểu mẫu.
Nếu bạn muốn xem trình hướng dẫn đã lập trình gì cho bạn, hãy làm theo các bước tùy chọn sau:
Nếu bảng thuộc tính chưa được hiển thị, nhấn F4 để hiển thị.
Trong bảng thuộc tính, bấm vào tab Sự kiện.
Trong hộp thuộc tính Khi Bấm, bấm vào nút Dựng .
Access sẽ khởi động Bộ dựng Macro và hiển thị macro mà trình hướng dẫn đã tạo. Bạn có thể chỉnh sửa macro nếu muốn. Để biết thêm thông tin, hãy xem mục Tìm hiểu về macro. Khi bạn đã hoàn tất, trên tab Thiết kế Macro, trong nhóm Đóng, bấm đóng để đóng Bộ dựng Macro. Nếu Access nhắc bạn lưu thay đổi và cập nhật thuộc tính, hãy bấm vào Có để lưu thay đổi hoặc Không để từ chối thay đổi.
Trên tab Thiết kế Biểu mẫu , trong nhóm Dạng xem , bấm vào Dạng xem, rồi bấm vào Dạng xem Biểu mẫu. Bấm vào nút lệnh mới để xác nhận rằng nút này hoạt động như bạn mong đợi.
Tìm hiểu về macro
Macro là một công cụ cho phép bạn tự động hóa các tác vụ và thêm chức năng vào biểu mẫu, báo cáo và điều khiển của mình. Ví dụ: nếu bạn thêm nút lệnh vào biểu mẫu, OnClick bạn có thể liên kết thuộc tính sự kiện của nút đó với macro chứa các lệnh mà bạn muốn nút thực hiện mỗi lần nút được chọn.
Sẽ rất hữu ích nếu xem macro của Access như một ngôn ngữ lập trình đơn giản hóa cho phép bạn tạo mã bằng cách xây dựng một danh sách các hành động cần thực hiện. Khi dựng một macro, bạn chọn từng hành động từ danh sách thả xuống, rồi điền thông tin bắt buộc cho từng hành động. Macro cho phép bạn thêm chức năng vào biểu mẫu, báo cáo và điều khiển mà không cần viết mã trong mô-đun VBA . Macro cung cấp một tập hợp con VBAcác lệnh sẵn dùng trong và hầu hết mọi người thấy dễ dàng hơn khi xây dựng macro so với viết VBA mã.
Bạn tạo macro bằng cách sử dụng Bộ dựng Macro được hiển thị trong hình minh họa sau đây.
Để hiển thị Bộ dựng Macro:
- Trên tab Tạo, trong nhóm Macro & Mã, bấm vào Macro.
Tìm hiểu về mã VBA
Giống như macro, cho phép VBA bạn thêm tự động hóa và chức năng khác vào ứng dụng Access của mình. Bạn có thể mở rộng VBA bằng cách sử dụng các điều khiển bên thứ ba và bạn có thể viết các hàm và thủ tục riêng của mình cho các nhu cầu cụ thể.
Một cách nhanh chóng để bắt đầu là VBA trước tiên hãy xây dựng macro Access, rồi chuyển đổi macro đó thành VBA mã. Hướng dẫn thực hiện việc này có trong chuyển đổi macro thành mã VBA. Tính năng này tạo mô-đun mới VBA thực hiện các thao tác tương đương trong macro. Tính năng này cũng sẽ mở Trình soạn thảo Visual Basic để bạn có thể bắt đầu sửa đổi thủ tục. Khi bạn đang làm việc trong Trình soạn thảo Visual Basic, bạn có thể bấm vào các từ khóa và nhấn F1 để bắt đầu Trợ giúp Nhà phát triển Access và tìm hiểu thêm về từng từ khóa. Sau đó, bạn có thể khám phá Trợ giúp Nhà phát triển Access và khám phá các lệnh mới để có thể thực hiện các tác vụ lập trình mà bạn muốn.
Chuyển đổi macro thành mã VBA
Bạn có thể sử dụng Access để tự động chuyển đổi macro thành VBA mô-đun hoặc mô-đun lớp. Bạn có thể chuyển đổi các macro được đính kèm vào một biểu mẫu hoặc báo cáo, dù chúng tồn tại dưới dạng đối tượng riêng biệt hay macro được nhúng. Bạn cũng có thể chuyển đổi macro chung không được đính kèm vào một biểu mẫu hoặc báo cáo cụ thể.
Chuyển đổi các macro được đính kèm vào biểu mẫu hoặc báo cáo
Quy trình VBA này chuyển đổi thành bất kỳ macro nào được tham chiếu bởi, hoặc nhúng trong một VBA biểu mẫu hoặc báo cáo, hoặc bất kỳ điều khiển nào của biểu mẫu hoặc báo cáo và thêm mã vào mô-đun lớp của biểu mẫu hoặc báo cáo. Mô-đun lớp trở thành một phần của biểu mẫu hoặc báo cáo và di chuyển cùng với biểu mẫu hoặc báo cáo nếu biểu mẫu hoặc báo cáo được di chuyển hoặc sao chép.
Trong Ngăn Dẫn hướng, bấm chuột phải vào biểu mẫu hoặc báo cáo, rồi bấm Dạng xem Thiết kế.
Trên tab Thiết kế Biểu mẫu, trong nhóm Công cụ, bấm vào Chuyển đổi Macro của Biểu mẫu thành Visual Basic hoặc Chuyển đổi Macro của Báo cáo thành Visual Basic.
Trong hộp thoại Chuyển đổi macro biểu mẫu hoặc Chuyển đổi macro báo cáo, hãy chọn xem bạn có muốn Access thêm mã xử lý lỗi vào các hàm mà nó tạo ra hay không. Nếu macro của bạn bao gồm chú thích, bạn cũng có thể chọn xem bạn có muốn đưa các chú thích đó vào trong các hàm không. Bấm vào Chuyển đổi để tiếp tục. Nếu không tồn tại mô-đun lớp nào cho biểu mẫu hoặc báo cáo, Access sẽ tạo mô-đun lớp và thêm một thủ tục vào mô-đun cho mỗi macro được liên kết với biểu mẫu hoặc báo cáo đó. Access cũng thay đổi các thuộc tính sự kiện của biểu mẫu hoặc báo cáo để chúng chạy các thủ
VBAtục mới thay vì macro.Để xem và chỉnh sửa
VBAmã:Trong khi biểu mẫu hoặc báo cáo vẫn đang mở ở cửa sổ Thiết kế, nếu bảng thuộc tính chưa được hiển thị, hãy nhấn F4 để hiển thị nó.
Trên tab Sự kiện của bảng thuộc tính, bấm vào bất kỳ hộp thuộc tính
[Event Procedure]nào hiển thị , rồi bấm vào nút Dựng . Để xem các thuộc tính sự kiện của một điều khiển cụ thể, hãy bấm vào điều khiển để chọn. Để xem các thuộc tính sự kiện của toàn bộ biểu mẫu hoặc báo cáo, hãy chọn Biểu mẫu hoặc Báo cáo từ danh sách thả xuống ở đầu bảng thuộc tính.
Access sẽ mở Trình soạn thảo Visual Basic và hiển thị thủ tục sự kiện trong mô-đun lớp của mình. Bạn có thể cuộn lên hoặc xuống để xem bất kỳ thủ tục nào khác trong cùng mô-đun lớp đó.
Chuyển đổi macro toàn cục
Trong Ngăn Dẫn hướng, bấm chuột phải vào macro mà bạn muốn chuyển đổi, rồi bấm vào Cửa sổ Thiết kế.
Trên tab Thiết kế Macro , trong nhóm Công cụ , bấm Chuyển đổi Macro thành Visual Basic.
Trong hộp thoại Chuyển đổi Macro, chọn các tùy chọn mà bạn muốn, rồi bấm vào Chuyển đổi. Access chuyển đổi macro và mở Trình soạn thảo Visual Basic.
Để xem và chỉnh sửa
VBAmã:- Trong Trình soạn thảo Visual Basic, nếu ngăn Trình khám phá Dự án không hiển thị, trên menu Dạng xem, bấm vào Trình khám phá Dự án.
- Bung rộng cây bên dưới tên của cơ sở dữ liệu mà bạn đang làm việc cùng.
- Bên dưới Mô-đun, bấm đúp vào mô-đun
Converted Macro-<macro name>. Trình soạn thảo Visual Basic sẽ mở mô-đun đó.
Đính kèm hàm VBA vào thuộc tính sự kiện
Khi bạn chuyển đổi macro toàn cầu thành VBA, mã VBA sẽ được đặt trong mô-đun chuẩn. Không giống như mô-đun lớp, mô-đun chuẩn không phải là một phần của biểu mẫu hoặc báo cáo. Rất có thể bạn sẽ muốn liên kết hàm với một thuộc tính sự kiện trên biểu mẫu, báo cáo hoặc điều khiển sao cho mã chạy chính xác tại thời điểm và vị trí bạn muốn. Để thực hiện điều này, VBA bạn có thể sao chép mã vào mô-đun lớp, rồi liên kết mã đó với thuộc tính sự kiện hoặc bạn có thể thực hiện cuộc gọi đặc biệt từ thuộc tính sự kiện đến mô-đun chuẩn bằng cách sử dụng quy trình sau đây.
- Trong Trình soạn thảo Visual Basic, hãy ghi lại tên hàm. Ví dụ: nếu bạn chuyển đổi một macro có tên
MyMacro, tên hàm sẽ làMyMacro(). - Đóng Trình soạn thảo Visual Basic.
- Trong Ngăn Dẫn hướng, bấm chuột phải vào biểu mẫu hoặc báo cáo mà bạn muốn liên kết với hàm, rồi bấm Dạng xem Thiết kế.
- Bấm vào điều khiển hoặc mục mà bạn muốn liên kết với hàm.
- Nếu bảng thuộc tính chưa được hiển thị, nhấn F4 để hiển thị.
- Trên tab Sự kiện của trang thuộc tính, bấm vào hộp thuộc tính sự kiện mà bạn muốn liên kết với hàm.
- Trong hộp thuộc tính, nhập dấu bằng (
=) theo sau là tên hàm—ví dụ:=MyMacro(). Hãy nhớ nhập cả dấu ngoặc đơn. - Lưu biểu mẫu hoặc báo cáo bằng cách bấm vào Lưu trên Thanh Công cụ Truy nhập Nhanh.
- Trong Ngăn Dẫn hướng, bấm đúp vào biểu mẫu hoặc báo cáo, rồi kiểm tra xem mã có chạy như ý muốn không.
Bây giờ bạn đã biết các bước cơ bản để thêm mã vào VBA cơ sở dữ liệu của mình. Bài viết này chỉ mô tả những thông tin cơ bản về cách bắt đầu. Nhiều sách tham khảo và tài nguyên trực tuyến tuyệt vời có thể giúp bạn xây dựng các kỹ năng lập trình của bạn.
Xem thêm
Tạo macro giao diện người dùng (UI)
Chạy macro Access bằng cách sử dụng phím tắt
Tự động hóa các sự kiện khởi động bằng macro
Tạo macro sẽ chạy khi bạn mở cơ sở dữ liệu