SlideShare a Scribd company logo
1 of 121
Download to read offline
Bài giảng Access
Chương 0: Giới thiệu
Cơ sở dữ liệu (CSDL, database) là một bộ sưu tập các dữ liệu tác nghiệp được lưu trữ lại
và được các hệ ứng dụng của một xí nghiệp cụ thể nào đó sử dụng.
Hệ quản trị cơ sở dữ liệu (HQTCSDL, Database Management System-DBMS) là hệ
thống phần mềm cho phép:
• Định nghĩa, tạo lập: xác định kiểu, cấu trúc, ràng buộc dữ liệu, lưu trữ dữ liệu
trên các thiết bị nhớ.
• Thao tác: truy vấn, cập nhật, kết xuất,... các CSDL cho các ứng dụng khác nhau
Ví dụ: HQTCSDL MS SQL Server, MS Access, DB2, PostGreSQL, MySQL, Oracle,
FoxPro, Foxbase,...
Hệ cơ sở dữ liệu (HCSDL, Database System) là một hệ thống gồm 4 thành phần:
• Hệ quản trị cơ sở dữ liệu
• Phần cứng
• CSDL và phần mềm ứng dụng
• Những người sử dụng
Ví dụ: hệ quản lý đào tạo, hệ quản lý nhân sự, hệ quản lý kinh doanh,...
Các tính năng của hệ quản trị CSDL:
• Quản lý dữ liệu tồn tại lâu dài.
• Truy xuất dữ liệu một cách hiệu quả.
• Hỗ trợ ít nhất một mô hình dữ liệu.
• Đảm bảo tính độc lập dữ liệu.
• Hỗ trợ các ngôn ngữ cấp cao nhất định cho phép người sử dụng định nghĩa cấu
trúc của dữ liệu, truy nhập và thao tác dữ liệu.
• Điều khiển truy nhập.
• Sao lưu và phục hồi dữ liệu.
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
1
Bài giảng Access
Chương 1: Tạo bảng dữ liệu đơn giản
1.1. Khởi động Access và tạo mới một CSDL
Access nằm trong bộ MS Office của Microsoft. Ta khởi động bằng cách chọn Start /
Programs / Microsoft Office / Microsoft Access 2003. Để thuận tiện cho các lần sử dụng
sau, ta cũng có thể tạo Shortcut cho Access và để nó trên màn hình nền Windows.
Đây là màn hình Access 2003:
Thanh tiêu đề
Thanh menu
Thanh công cụ
Blank database
Thanh trạng thái
Nhấn chọn Blank database, hộp thoại sau xuất hiện:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
2
Bài giảng Access
Ta đặt tên CSDL là tck45.mdb và định vị cho nó được đặt tại thư mục mong muốn
D:TailieuGiangdayCSDLHeQTCSDLAccess (cái này tùy bạn!).
Các bạn lưu ý, phần mở rộng của Access là mdb (phiên bản 2007 về sau có khác đôi
chút).
Cửa sổ sau xuất hiện:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
3
Bài giảng Access
Chúng ta tạm đóng CSDL trên lại.
1.2. Mở một CSDL đã có
Bây giờ chúng ta mở Access, chọn FileOpen hoặc nhấn Ctrl+O hoặc nhấn vào nút có
biểu tượng Open trên thanh công cụ. Hộp thoại Open xuất hiện. Ta chọn tập tin mdb cần
mở, sau đó nhấn nút Open.
Quan sát, chúng ta thấy CSDL Access có các thành phần như: Tables, Queries, Forms,
Reports, Pages, Macros và Modules. Chúng ta sẽ lần lượt tìm hiểu về các thành phần này.
1.3. Tạo bảng sử dụng đồ thuật (Table Wizard)
Đồ thuật là một trình công cụ hướng dẫn bạn đi qua tất cả các bước cần thiết trong quy
trình tạo một thành phần chuẩn của Access như bảng, bộ hỏi, biểu mẫu, báo cáo, trang
truy cập dữ liệu. Nó là một cách tiếp cận hữu ích cho những người mới làm quen với
Access.
Làm theo các bước sau:
Bước 1: Trong cửa sổ tck45: Database, với tab Tables bên trái đang được kích hoạt, nhấn
vào phím New. Access sẽ mở ra hộp thoại New Table cho phép xác định cách tạo bảng.
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
4
Bài giảng Access
Có hai mục không được giới thiệu ở đây, đó là: Import Table (nhập khẩu một bảng đã
được tạo ra trong trình ứng dụng khác) và Link Table (tạo một bảng được kết nối với một
bảng khác trong tập tin khác).
Bước 2: Nhấn chọn mục Table Wizard, sau đó nhấn OK. Hộp thoại Table Wizard xuất
hiện:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
5
Bài giảng Access
Bước 3: Chọn Sample Tables là Students, sau đó lần lượt chọn các mục trong danh sách
Sample Fields và chuyển nó vào Fields in my new table:
Nếu muốn đổi tên cột, ta chọn mục tương ứng rồi nhấn vào nút Rename Field...
Bước 4: Sau đó nhấn Next. Hộp thoại sau xuất hiện:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
6
Bài giảng Access
Bước 5: Nếu muốn bạn có thể đổi tên bảng. Ở đây tôi để nguyên là Students.
Bước 6: Nhấn Next chuyển sang hộp thoại tiếp theo.
Bước 7: Nhấn Finish để hoàn tất quá trình tạo bảng sử dụng đồ thuật.
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
7
Bài giảng Access
Tới đây, chúng ta có thể nhập dữ liệu trực tiếp vào bảng nếu muốn. Tạm thời chúng ta
chưa nhập gì cả.
Chúng ta sẽ xem bảng Students trong chế độ Design:
Chọn bảng Students và nhấn nút Design, cửa sổ sau xuất hiện:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
8
Bài giảng Access
Bước 8: Nhập dữ liệu vào bảng.
1.4. Các thao tác hiệu chỉnh hàng, cột và dữ liệu trong
bảng
• Sử dụng thanh trượt để dịch chuyển:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
9
Bài giảng Access
• Di chuyển đến các khoản tin (record, dòng)
• Thêm khoản tin mới
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
10
Bài giảng Access
Nhấn vào đây để tạo
khoản tin mới
• Sao chép dữ liệu kề bên trên: nhấn CTRL + ' hoặc sử dụng kỹ thuật Copy-Paste
• Xóa khoản tin:
Nhấn vào đây để
xóa khoản tin
Nhấn Record
Selector để chọn
toàn bộ khoản tin
Nhấn Yes để xóa thực sự
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
11
Bài giảng Access
• Thay đổi ngoại hình của bảng: độ lớn cửa sổ, cột, hàng
• Gắn chặt một (hoặc nhiều) trường vào một vị trí nhất định: Chọn cột, kích chuột
phải, nhấn Freeze Columns hoặc chọn cột, chọn Format, Freeze Columns. Nếu
muốn bỏ tính chất này, ta chỉ việc chọn Unfreeze All Columns. Sau đó, nếu cần,
có thể dùng kỹ thuật kéo thả các cột về vị trí mong muốn.
• Che dấu và hiện lại cột: Format/Hide Columns và Format/Unhide Columns
• Sắp xếp các khoản tin: Chọn cột, nhấn Sort Ascending hoặc Sort Descending.
• Các chức năng trong Tools/ Options.
• Thay đổi skin cho bảng: Format/Datasheet
• Thay đổi font chữ: Format/Font
• In bảng: Print Preview và Print, File/Page Setup
1.5. Sử dụng trợ giúp trong Access
Nhấn F1 hoặc chọn trên menu Help
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
12
Bài giảng Access
Chương 2: Bảng và biểu mẫu
2.1. Các kiểu dữ liệu
Nhấn nút để chuyển đổi giữa chế độ thiết kế và xem bảng dữ liệu
Trong chế độ thiết kế:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
13
Bài giảng Access
Các kiểu dữ liệu:
Kiểu dữ liệu Mô tả
Text Dạng dữ liệu phổ biến nhất. Có thể chứa chữ cái, chữ số và các kí tự như
&, %, =, ?. Có thể dài tới 255 kí tự.
Memo Tương tự như Text nhưng có thể chứa tới 65535 kí tự. Thường dùng để
cung cấp các chú giải. Trường Memo không thể là một trường khóa,
không thể lập chỉ mục.
Number Giá trị số. Có thể có những kích cỡ như sau:
Byte: số nguyên từ 0 đến 255
Integer: số nguyên từ -32768 đến 32767
Long Integer: số nguyên trong khoảng -2,147,483,648 đến
+2,147,483,647
Single: số có độ chính xác đơn trong khoảng -3.40283*1038
đến
-1.401298*10-45
và 1.401298*10-45
đến 3.40283*1038
Double: số có độ chính xác kép trong khoảng -1.7976931348623*10308
đến -4.94065645841247*10-324
và 4.94065645841247*10-
324
đến 1.7976931348623*10308
Replication ID: Số nhận dạng duy nhất toàn cục
Date/Time Ngày và giờ được lưu trữ theo một dạng thức cố định đặc biệt, giá trị
trong khoảng từ ngày 1.1.100 đến 31.12.9999. Có nhiều định dạng.
Currency Một dạng số, có thể có tới 15 chữ số bên trái và 4 chữ số nằm bên phải
dấu thập phân.
AutoNumber Giá trị số mà Access tự động điền cho từng khoản tin mới bỏ sung vào
bảng. Có thể là số tuần tự hoặc ngẫu nhiên, có độ dài là Long Integer
hoặc Replication ID. Có thể sử dụng làm khóa chính. Không thể cập
nhật.
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
14
Bài giảng Access
Yes/No Đúng/sai, có/không, bật/tắt.
OLE Object Có thể chứa đối tượng đồ họa hoặc các đối tượng khác (bảng tính, tập tin
âm thanh, video) được tạo bởi trình ứng dụng windows có hỗ trợ OLE.
Đối tượng có thể được nhúng vào trường hay được kết nối (link) với
trường.
Hyperlink Có thể là đường dẫn đến một tập tin trong ổ cứng hay trên máy chủ của
mạng hay một địa chỉ URL dẫn đến một đối tượng trên mạng. Access sẽ
chuyển đến đối tượng đó khi nhấn vào link.
Lookup
Wizard
Không phải một dạng dữ liệu. Đồ thuật được sử dụng để tạo một trường
cho phép tra cứu các giá trị trong một bảng hay chọn giá trị từ một danh
sách.
2.2. Sử dụng các thuộc tính trường
• Độ lớn của trường (Field Size): dùng cho văn bản và số.
o Đối với kiểu văn bản: đây chính là số kí tự tối đa có thể nhập vào. Nếu
nhập quá, Access sẽ xén phần còn lại.
o Đối với kiểu số: kích thước được xác định qua định dạng Format. Nếu
nhập vào ba số 0 thì sẽ ra lệnh cho Access tự điền chữ số 0 vào bên trái
khi không đủ 3 chữ số.
• Xác định mặt nạ nhập liệu (Input Mask): Kiểm soát quá trình hiển thị dữ liệu. Đây
là một mẫu kí tự xác định cách thể hiện dữ liệu trên màn hình và loại dữ liệu được
nhập vào. Danh sách một số kí tự giữ chỗ thường được sử dụng trong hộp văn bản
Input Mask:
Kí tự Access sẽ thực hiện
0 chữ số từ 0 đến 9, bắt buộc nhập, không cho phép dấu cộng + và trừ -
9 chữ số hay dấu cách, không bắt buộc nhập, không cho phép dấu cộng + và
trừ -
# chữ số hay dấu cách, không bắt buộc nhập, vị trí trống được chuyển thành
dấu cách, cho phép dấu cộng + và trừ -
L chữ cái từ A đến Z, bắt buộc nhập
? chữ cái từ A đến Z, không bắt buộc nhập
A chữ cái hay chữ số, bắt buộc nhập
a chữ cái hay chữ số, không bắt buộc nhập
& kí tự hoặc dấu cách, bắt buộc nhập
C kí tự hoặc dấu cách, không bắt buộc nhập
< chuyển tất cả các chữ cái đứng sau nó thành dạng chữ thường
> chuyển tất cả các chữ cái đứng sau nó thành dạng chữ hoa
 bổ sung kí tự đứng liền sau nó vào mục dữ liệu
! căn phải cả mục dữ liệu
Chúng ta sử dụng các kí tự trên để sửa mặt nạ nhập liệu cho phù hợp với cách ghi số điện
thoại hiện thời ở Việt Nam:
Phần 3 chữ số đầu là dành cho các tổng đài di động, ví dụ (090) 1234 567 hoặc (091)
1234 567.
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
15
Bài giảng Access
Phần 7 chữ số sau của máy di động hoặc toàn bộ số của máy cố định được phân thành 2
nhóm, cách nhau bởi dấu cách, ví dụ: ( ) 821 4351 hoặc ( ) 896 6027
Ta làm như sau:
Trong chế độ thiết kế, nhấn chuột chọn dòng PhoneNumber. Tìm đến dòng Input Mask,
nhập vào như sau: !(999")"000 0000
Quan sát dữ liệu trong bảng, ta thấy có thay đổi cách thể hiện:
• Bổ sung tựa đề (Caption): khi sử dụng thuộc tính Caption, bạn có thể dùng một
đoạn văn bản khác để thay thế cho tên trường khi hiển thị bảng. Ví dụ: sửa tựa đề
cho StudentsID thành "Mã sinh viên":
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
16
Bài giảng Access
Chuyển sang chế độ View để xem kết quả:
• Ấn định giá trị ngầm định: Thuộc tính Default Value cho phép bạn xác định một
giá trị trường mà Access sẽ tự động nhập vào bảng. Ví dụ, đa số sinh viên ở Hà
Nội, nên ta có thể ngầm định trường StateOrProvince là "Hà Nội"
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
17
Bài giảng Access
• Bắt buộc nhập liệu: Thuộc tính Required chuyển thành Yes.
• Thuộc tính tạo chỉ mục Indexed: giúp tìm kiếm và sắp xếp dựa trên trường này
nhanh hơn.
• Thuộc tính Validation Rule: quy tắc hợp lệ.
• Thuộc tính Validation Text: văn bản hợp lệ (gợi nhắc)
• Thuộc tính Unicode Compression: giảm lượng bộ nhớ cần thiết để lưu trữ cơ sở
dữ liệu.
2.3. Tạo bảng không sử dụng đồ thuật
Xóa bảng Students đi, không dùng đồ thuật, tạo lại bảng với các trường sau:
• StudentID: mã sinh viên, khóa chính.
• StudentName: tên sinh viên.
• StudentBirth: ngày tháng năm sinh của sinh viên.
• StudentAddress: địa chỉ nơi ở của sinh viên.
• StudentPhone: số điện thoại liên hệ, theo quy cách !(999")"000 0000
• ClassID: mã lớp, là khóa ngoài.
Hãy tạo bảng Lecturers, Class, Subjects, Learn:
Bảng Lecturers gồm các trường sau:
• LecturerID: mã giảng viên, là khóa chính.
• LecturerName: tên giảng viên.
• LecturerPhone: điện thoại theo quy cách !(999")"000 0000
• Faculty: khoa, gồm có: Công nghệ thông tin, điện tử viễn thông, hóa học, cơ khí,
kinh tế quản lý, ngoại ngữ, tại chức.
Bảng Class gồm có các trường sau:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
18
Bài giảng Access
• ClassID: mã lớp, là khóa chính.
• ClassName: tên lớp.
• Monitor: trưởng lớp.
Bảng Subjects gồm có các trường sau:
• SubjectID: mã môn học, là khóa chính.
• SubjectName: tên môn học.
Bảng Learn gồm:
• LecturerID: mã giảng viên.
• ClassID: mã lớp.
• SubjectID: mã môn học.
• Time: thời gian biểu học.
Xem mối quan hệ giữa các bảng:
2.4. Sử dụng form (biểu mẫu) để nhập và xem dữ liệu
2.4.1. Tạo một form tự động
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
19
Bài giảng Access
Trong tab Tables, chọn bảng cần tạo form tự động, sau đó nhấn chọn Autoform. Kết quả,
ta sẽ được một form như sau:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
20
Bài giảng Access
Lần lượt tạo các form theo cách trên.
2.4.2. Sử dụng đồ thuật biểu mẫu
Chọn tab Forms, chọn Create form by using Wizard, nhấn New. Đồ thuật xuất hiện:
Nhấn OK, hộp thoại tiếp theo xuất hiện:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
21
Bài giảng Access
Chọn bảng Class và đưa tất cả các trường trong mục "Available Fields" sang mục
"Selected Fields"
Nhấn Next, hộp thoại sau xuất hiện:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
22
Bài giảng Access
Lần lượt check vào các radio button để xem giao diện của form khi hình thành sẽ như thế
nào.
Nhấn Next, hộp thoại sau sẽ xuất hiện:
Lần lượt chọn các mục để xem skin của form.
Nhấn Next, hộp thoại cuối cùng để hoàn tất:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
23
Bài giảng Access
Nhấn Finish để hoàn thành công việc tạo form sử dụng đồ thuật.
Form của chúng ta có hình thù như sau:
2.4.3. Hiệu chỉnh giao diện của các form tự động vừa tạo
Chuyển sang chế độ thiết kế, thêm nhãn và căn chỉnh lại các điều khiển trên form
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
24
Bài giảng Access
Một số chức năng trong Format:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
25
Bài giảng Access
Trong chế độ thiết kế, ta có thể cho hiện các vùng Form Header/Footer, Page
Header/Footer bằng cách kích chuột phải trên form rồi chọn các mục tương ứng:
Form được chia thành 5 khu vực:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
26
Bài giảng Access
• Khu vực Form Header (đầu biểu mẫu) có thể chứa các thông tin ví dụ như một
tiêu đề mà bạn muốn nó xuất hiện ở phần bên trên của biểu mẫu (hiện thời nó
đang được để trống).
• Khu vực thứ hai Detail chứa các hộp trống được gọi là Control (điều kiểm) cho
các trường mà bạn đã chọn cho biểu mẫu này. Các điều kiểm là nơi bạn có thể
nhập thông tin. Mỗi điều kiểm có thể đi kèm với một hộp màu xám được gọi là
một nhãn (Label) chứa tên hoặc tựa đề của trường.
• Khu thứ ba Form Footer, hoạt động tương tự như Form Header.
• Hai khu vực còn lại là Page Header và Page Footer, chúng có thể chứa các phần
tử mà bạn muốn xuất hiện trên mỗi trang, trong trường hợp một biểu mẫu chiếm
nhiều trang giấy. Ngoài ra, cửa sổ còn hiển thị các đường thước nằm ngang và
nằm dọc cũng như các ô lưới giúp bạn định vị các điều kiểm và nhãn trong biểu
mẫu.
Để chọn nhiều điều kiểm, ta giữ phín SHIFT và dùng chuột chọn điều kiểm. Nếu muốn
chọn tất cả các điều kiểm trên form, ta nhấn Ctrl + A hoặc chọn Edit/ Select All.
Để xem các thuộc tính của điều kiểm, ta chọn điều kiểm rồi nhấn chuột phải, chọn
Properties:
Ta có thể thay đổi font chữ, màu sắc, kích thước,...
Có thể đổi từ ComboBox sang List Box nếu số giá trị là nhỏ:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
27
Bài giảng Access
2.5. Tạo biểu mẫu của nhiều bảng (Multi table Form)
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
28
Bài giảng Access
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
29
Bài giảng Access
Chương 3: Bộ hỏi, báo biểu, trang truy cập dữ liệu và bảng công tắc
3.1. Sử dụng lệnh Find và các bộ lọc (Filter)
Bước 1: Mở CSDL và một bảng nào đó, ví dụ bảng Students.
Bước 2: Nhấn vào phím Find trên thanh công cụ.
Bước 3: Hộp thoại Find And Replace xuất hiện, tìm đến hộp văn bản Find What, nhập
vào một giá trị cần tìm
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
30
Bài giảng Access
Lưu ý: nếu chỉ so khớp một phần giá trị trong một trường thì chọn Math là "Any Part of
Field"
Hướng dẫn sinh viên sử dụng Replace
Filter
Khi làm việc với một bảng lớn, thường ta sẽ tập trung vào một tập hợp con các khoản tin
(record, dòng, bộ) trong bảng. Đó là tập hợp chứa các khoản tin có một số thuộc tính
chung nào đó. Để lọc ra nhóm các khoản tin này, bạn có thể sử dụng các bộ lọc (Filter).
Filter By
Selection
Apply Filter
hoặc Remove
Filter
Filter By
Form
Làm theo các bước sau:
Bước 1: Chọn một giá trị trong một cột bằng cách kích đúp vào giá trị đó
Bước 2: Nhấn Filter By Selection, bạn sẽ được kết quả:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
31
Bài giảng Access
3.2. Sử dụng bộ hỏi (Queries)
Một vài ví dụ về các bộ hỏi lựa chọn phổ biến:
Giáo vụ khoa muốn tìm ra danh sách những sinh viên có điểm thi lần 1 môn Hệ quản trị
cơ sở dữ liệu <5 để lập danh sách thi lại.
Trưởng phòng kinh doanh của một công ty muốn có danh sách của tất cả các nhà cung
cấp có bán tất cả các vật dụng cần thiết cho một công việc cụ thể.
3.2.1. Lựa chọn một số trường cụ thể
Trong tab Tables, chọn bảng, sau đó chọn Query như sau:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
32
Bài giảng Access
Hoặc chọn tab Queries rồi nhấn chọn New
Hộp thoại sau sẽ xuất hiện:
Trong hộp thoại New Query, nhấn chọn Simple Query Wizard rồi nhấn OK, hộp thoại
Simple Query Wizard xuất hiện:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
33
Bài giảng Access
1. Chọn bảng
nguồn dữ liệu
2. Chọn trường trong bảng rồi nhấn phím > chuyển
sang danh sách của bộ hỏi
Hộp thoại tiếp theo xuất hiện:
Nhấn chọn Detail để có bộ hỏi chi tiết, sau đó nhấn phím Next, hộp thoại thứ ba của
Simple Query Wizard xuất hiện, bao gồm ba mục:
• Yêu cầu bạn đặt tên cho bộ hỏi
• Báo rằng đồ thuật đã đủ thông tin để tạo bộ hỏi
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
34
Bài giảng Access
• Hỏi bạn muốn mở bộ hỏi để xem thông tin hay mở bộ hỏi để chỉnh thiết kế của bộ
hỏi.
Kết quả chúng ta được như sau:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
35
Bài giảng Access
3.2.2. Chọn một số khoản tin cụ thể
Nếu muốn lựa chọn các trường của một số khoản tin cụ thể, ta làm như sau:
Bước 1: Trong cửa sổ CSDL, nhấn vào thanh Queries để nhìn danh sách các bộ hỏi, nhấn
đúp vào phím Create Query In Design View (tạo bộ hỏi trong chế độ thiết kế).
Kết quả: Access sẽ hiển thị hộp thoại Show Table:
Bước 2: Chọn bảng Students, nhấn vào nút Add để bổ sung bảng này vào danh sách các
bảng dữ liệu nền cho bộ hỏi. Sau đó, nhấn nút Close. Kết quả là, trên cửa sổ màn hình
xuất hiện một cửa sổ thiết kế bộ hỏi với thanh tựa đề cho biết đây thuộc loại bộ hỏi chọn
lọc (Select Query).
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
36
Bài giảng Access
Nửa bên trên, ta thấy có hộp Students liệt kê tất cả các trường trong bảng Students, dấu
hoa thị đại diện cho tất cả các trường. Phía bên dưới của cửa sổ là một bảng ô lưới, được
gọi là QBE (Query By Example) trợ giúp cho bạn thiết kế bộ hỏi.
Bước 3: Đưa các trường vào lưới.
Test thử việc hiển thị các trường bằng cách check vào dòng Show, nhấn nút Run để
chạy thử.
Trong cột ClassID, dòng Criteria, nhập số 2 vào, chạy thử để xem kết quả
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
37
Bài giảng Access
Nhập chuỗi "Phạm Ngọc Sáng" vào dòng Criteria, cột StudentName:
Tiêu chuẩn Criteria không phân biệt xâu chữ hoa và chữ thường nên kết quả như nhau khi
ta viết "Phạm Ngọc Sáng" hay "PHạm NGọc SáNg". Khi bạn nhập dữ liệu xong, Access
tự bao giá trị bởi một cặp ngoặc kép.
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
38
Bài giảng Access
3.2.3. Kí tự đại diện "*"
3.2.4. Kí tự "?" đại diện cho duy nhất một kí tự.
Like "CNTT-K4?"
3.2.5. Sử dụng các toán tử toán học
Chương trình Access cho phép bạn sử dụng các toán tử toán học để nhập tiêu chuẩn lựa
chọn như dấu =, dấu <, >, <=, >=.
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
39
Bài giảng Access
>#10/10/1982#
3.2.6. Sử dụng các toán tử logic
a. Toán tử And
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
40
Bài giảng Access
b. Toán tử Or
Nếu bạn nhập nhiều cột, Access hiểu rằng bạn muốn lọc ra các khoản tin thỏa mãn tất cả
các tiêu chuẩn đó. Trong trường hợp bạn muốn đưa ra điểm HệQTCSDL là 8 hoặc 10 thì
sao?
8 Or 10
Một trường hợp khác: Đưa ra StudentID mà điểm HệQTCSDL là 10 hoặc điểm Hóa học
là 8 (phép hoặc trên 2 thuộc tính):
10
8
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
41
Bài giảng Access
c. Toán tử Not và toán tử Null
Bạn sử dụng toán tử Not để xác định các khoản tin không thỏa mãn một tiêu chuẩn nào
đó, bạn sử dụng toán tử Null để xác định tất cả các khoản tin chưa được nhập giá trị (còn
trống) cho một trường xác định.
Thử nhập vào là Not
10 và Not<10
3.2.7. Sắp xếp với bộ hỏi
Quan sát lại bảng Mark, chúng ta thấy rằng, các bản ghi được sắp xếp theo StudentID,
còn điểm môn Hệ QTCSDL và Hóa học thì không theo một trật tự nào cả. Bây giờ chúng
ta sẽ sắp xếp theo các cột này.
Ascending
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
42
Bài giảng Access
3.3. Sử dụng báo biểu (Reports)
Tạo báo biểu cũng tương tự như tạo biểu mẫu (form).
3.3.1. Tạo AutoReports
Chúng ta bắt đầu tạo một báo biểu với bảng Lecturers.
Trong tab Table, chọn bảng Lecturers, rồi nhấn chọn AutoReports
Kết quả như sau:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
43
Bài giảng Access
Chuyển sang chế độ Design để xem:
3.3.2. Tạo báo biểu với đồ thuật báo biểu
Nhấn Design, hộp thoại sau xuất hiện:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
44
Bài giảng Access
Nhấn Next.
Chọn Faculty, nhấn phím > để gom nhóm theo thuộc tính này. Nhấn Next.
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
45
Bài giảng Access
Lựa chọn rồi nhấn Next.
Lần lượt chọn từng Layout để xem.
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
46
Bài giảng Access
Nhấn Finish, chuyền sang chế độ view để xem kết quả (hoặc chọn Preview the Report rồi
nhấn Finish).
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
47
Bài giảng Access
Khi nhấn chọn New để tạo báo biểu mới, ta thấy có các lựa chọn sau:
Loại báo biểu tự động Columnar tạo ra các nhãn và các điều kiểm được xếp hàng dọc từ
trên xuống dưới.
Loại báo biểu tự động Tabular tạo ra một báo biểu tự động với các nhãn và điều kiểm sắp
xếp theo hàng ngang.
3.4. Hiệu chỉnh báo biểu
Tương tự như hiệu chỉnh form
3.5. Tạo Mailing Labels
Các bước như sau:
Chọn tab Reports, nhấn New:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
48
Bài giảng Access
Hộp thoại sau xuất hiện:
Chọn Label Wizard, chọn nguồn dữ liệu là bảng Students. Nhấn OK.
Label Wizard hiển thị hộp thoại đầu tiên của nó, hỏi xem bạn muốn tạo nhãn chuẩn hay
tùy biến, kích cỡ, đơn vị đo lường cùng các thông tin tương tự:
3. Chọn
kiểu nhãn
1. Chọn
đơn vị đo
lường
2. Chọn
loại nhãn
Nhấn Next, hộp thoại thứ hai xuất hiện:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
49
Bài giảng Access
Sau khi lựa chọn các giá trị cho phù hợp, nhấn Next. Hộp thoại thứ ba xuất hiện:
Nhấn chọn các mục tương ứng, đưa sang Prototype label. Chú ý, nếu muốn xuống dòng
thì trước khi đưa sang, ta nhấn Enter. Nhấn Next, hộp thoại thứ tư xuất hiện, cho bạn biết
có thể sắp xếp các nhãn sử dụng:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
50
Bài giảng Access
Sau khi lựa chọn, nhấn Next. Hộp thoại tiếp theo xuất hiện:
Nhấn Finish để hoàn tất. Kết quả:
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
51
Bài giảng Access
3.6. Sử dụng trang truy cập dữ liệu
Giới thiệu cho sinh viên CSDL mẫu Northwind trong Access.
Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội
52
Bài giảng Lập trình trong Access
Chương 4
Lập trình trên Access
4.1 Lập trình đơn giản bằng Macro
Macro: tập các thao tác thường được dùng trong các xử lý dữ liệu, được chuyển thành các
hành động và ta có thể sử dụng nó thay vì phải viết một đoạn chương trình xử lý. Macro
thường được gắn với các sự kiện của đối tượng cơ sở dữ liệu như Form, Report. Macro
cũng được đưa vào để tạo Menu cho chương trình.
4.1.1. Tạo Macro mới
Tại cửa sổ Database, chọn Macro, sau đó chọn New. Hộp thoại tạo mới Macro xuất hiện:
Thực hiện Macro bằng một trong ba cách:
• Khi khởi động cơ sở dữ liệu.
• Khi kích hoạt nút lệnh hay chọn một mục trong Menu Pull Down.
• Khi kích hoạt một sự kiện nào đó.
Khi ra lệnh thực hiện Macro các hành động được thực hiện từ trên xuống dưới.
4.1.2. Các hành động trong Macro
Có khoảng 50 hành động Macro. Một số những hành động thông dụng:
Addmenu: Thêm một cột mới cho Menu. Các tham số của hành động này:
Tên mục chọn trên màn hình (Menu Name)
Tên macro ứng với cột (Menu Macro Name)
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
1
Bài giảng Lập trình trong Access
Thông báo trên dòng trạng thái (Status Bar Text)
Close: Đóng cửa sổ Form, Report, Table… Các tham số của hành động này:
Kiểu đối tượng (Object Type)
Tên đối tượng (Object Name)
Cách ghi (Save)
ApplyFilter: Sử dụng bộ lọc trên Form. Các tham số:
Tên truy vấn lọc (Filter Name)
Điều kiện lọc (Where Condition)
GotoRecord: chuyển con trỏ bản ghi đến bản ghi trước, sau, đầu, cuối hoặc bản ghi có số
hiệu nào đó. Các tham số:
Kiểu đối tượng (Object Type)
Tên đối tượng (Object Name)
Bản ghi (Record)
Offset: số hay biểu thức chỉ bản ghi muốn chuyển tới.
Maximize: phóng to cực đại cửa sổ hiện hành.
Minimize: thu nhỏ cực tiểu cửa sổ hiện hành.
MoveSize: thay đổi kích thước cửa sổ hiện hành.
MsgBox: hiện thông báo ra màn hình. Các tham số:
Message: nội dung thông báo đưa ra.
Beep: sẽ phát ra tiếng kêu nếu là yes, ngược lại thì không.
Type: kiểu icon hiển thị, gồm: None, Critical, Warning?. Warning! và
Information.
Title: tiêu đề của cửa sổ thông báo.
OpenForm: mở form, gồm có 6 tham số:
Form Name: tên form cần mở, chọn trong danh sách.
View: mở form ở một trong bốn chế độ: Design, Form (ngầm định), Datasheet,
Print.
Filter Name: áp dụng bộ lọc, có thể là query hoặc một bộ lọc được lưu trữ như là
một query. Sử dụng bộ lọc này để giới hạn hoặc sắp xếp các bản ghi cho form.
Where Condition: Điều kiện lọc. Nhập vào một mệnh đề WHERE hoặc một biểu
thức (expression) chọn ra các bản ghi cho form.
Data Mode: phương thức hiện dữ liệu, có thể thêm (Add), sửa (Edit) hay chỉ đọc
(Read Only).
Window Mode: kích thước của cửa sổ, gồm: Normal (ngầm định), Hidden, Icon,
Dialog.
OpenReport: mở báo cáo. Các tham số giống như OpenForm, gồm:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
2
Bài giảng Lập trình trong Access
Report Name
View
Filter Name
Where Condition
SetValue: đặt giá trị cho một trường hoặc một control nào đó.
RepaintObject: cập nhật lại control khi control khác thay đổi.
Requery: thực hiện lại truy vấn nguồn của control để cập nhật lại giá trị. Tham số:
Control Name
RunApp: thực hiện một ứng dụng trong Window. Tham số:
Command Line: đường dẫn tới tệp .exe
RunCode: thực hiện chương trình viết bằng VBA
RunCommand: thực hiện một mục chọn trên menu chính của Access.
RunMacro: thực hiện một Macro.
RunSQL: thực hiện lệnh SQL.
SetWarnings: bật / tắt chế độ hiển thị thông báo của hệ thống ra màn hình
ShowToolbar: bật / tắt các thanh công cụ chuẩn của Access.
ShowAllRecords: hủy bỏ mọi thao tác lọc dữ liệu trên form, bảng hay kết quả truy vấn.
TransferDatabase: chuyển dữ liệu giữa tệp CSDL hiện hành và tệp CSDL khác được tạo
bởi Excel, Access hay hệ quản trị CSDL khác thông qua ODBC (tương tự chức năng xuất
nhập khẩu trên Menu chính).
TransferText: chuyển dữ liệu giữa bảng và tệp văn bản.
4.1.3 Ứng dụng của Macro:
Xử lý các sự kiện
Tạo Menu:
Tạo một macro tương ứng với Menu chính. Có thể tạo các macro khác. Macro tương
ứng với Menu chính sẽ gọi đến các macro khác này.
Ví dụ về tạo Menu: Xây dựng chương trình quản lí cán bộ gồm các chức năng sau:
Nhập số liệu Khai thác Kết thúc chương trình
DS cán bộ Tìm kiếm Về Access
DS tỉnh In DSCB Về Window
DS chức vụ
trong đó, "Tìm kiếm" là menu con gồm bốn chức năng:
Theo chuyên môn
Theo ngoại ngữ
Theo năm sinh
Tìm kiếm tổng hợp
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
3
Bài giảng Lập trình trong Access
Chức năng "Tìm kiếm tổng hợp" sẽ tìm kiếm theo cả ba yếu tố là chuyên môn, ngoại
ngữ và năm sinh.
Trước hết, chúng ta tạo một số bảng chứa dữ liệu để dùng cho việc tạo ví dụ về
Menu.
Các bảng cần xây dựng như sau:
Bảng thứ nhất DSCB (Danh sách cán bộ) gồm các trường và kiểu như
hình minh họa dưới đây:
Bảng thứ hai là DSTINH (danh sách tỉnh) gồm hai trường:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
4
Bài giảng Lập trình trong Access
Bảng thứ ba DSCV (danh sách chức vụ) gồm các trường:
Các truy vấn tham số như sau:
Truy vấn NĂM SINH dùng để tìm kiếm theo năm sinh:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
5
Bài giảng Lập trình trong Access
Truy vấn NGOẠI NGỮ: dùng để tìm kiếm theo ngoại ngữ
Truy vấn CHUYÊN MÔN: dùng để tìm kiếm theo chuyên môn
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
6
Bài giảng Lập trình trong Access
Báo biểu:
Báo biểu In DSCB lấy bảng DSCB làm nền, dùng để thực hiện chức năng in danh sách
cán bộ. Báo biểu được thiết kế như sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
7
Bài giảng Lập trình trong Access
Các mẫu biểu:
Form [MB DSCB] buộc vào bảng DSCB, được dùng như một SubForm của
Form TKCB (sẽ xây dựng ngay sau đây). Form [MB DSCB] dùng để thể hiện
các cán bộ thỏa mãn các điều kiện về năm sinh, ngoại ngữ và chuyên môn.
Form được thiết kế như sau:
Form TKCB (Tìm kiếm cán bộ) kiểu Unbound (không buộc với một nguồn dữ
liệu nào) dùng như form chính, gồm bốn điều khiển: ba điều khiển TextBox được
đặt tên là NS, NN, CM và một điều khiển SubForm có dạng như sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
8
Bài giảng Lập trình trong Access
Đặt lại hai thuộc tính của SubForm [MB DSCB] như sau:
• Link Child Fields: NAM SINH, NGOAI NGU, CHUYEN MON.
• Link Master Fields: NS, NN, CM.
Form CTQLCB (chương trình quản lí cán bộ) dùng để bắt đầu thực hiện chương
trình. Chúng ta sẽ tạo Macro [MENU CHINH], sau đó đưa vào thuộc tính Menu
Bar của Form này., khi thực hiện mẫu biểu, ta sẽ nhận được hệ menu của chương
trình. Form CTQLCB được thiết kế như sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
9
Bài giảng Lập trình trong Access
Các Macro dùng để xây dựng hệ Menu:
Macro [MENU CHINH] gồm các hành động:
Action Menu Name Menu Macro Name
AddMenu Nhập số liệu SO LIEU
AddMenu Khai thác KHAI THAC
AddMenu Kết thúc chương trình KET THUC
Ta thiết kế Macro như sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
10
Bài giảng Lập trình trong Access
Macro [SO LIEU] gồm các hành động sau:
Macro Name Action Table Name
Ds Cán bộ OpenTable DSCB
Ds Tỉnh OpenTable DS TINH
Ds Chức vụ OpenTable DSCV
Macro được thiết kế như sau:
Macro [KHAI THAC] gồm các hành động sau:
Macro Name Action
Tìm kiếm AddMenu
In DSCB OpenReport
Các tham số của hành động AddMenu như sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
11
Bài giảng Lập trình trong Access
Các tham số của hành động OpenReport:
Macro [TIM KIEM] gồm các hành động sau:
Macro Name Action Query/Form Name
Theo chuyên môn OpenQuery CHUYEN MON
Theo ngoại ngữ OpenQuery NGOAI NGU
Theo năm sinh OpenQuery NAM SINH
Tìm kiếm tổng hợp OpenForm TKCB
Macro được thiết kế như sau:
Macro [KET THUC] gồm các hành động sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
12
Bài giảng Lập trình trong Access
Chương trình hoạt động như sau:
Khi form CTQLCB hiện lên thì hệ menu cũng hiện theo.
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
13
Bài giảng Lập trình trong Access
4.2 Sử dụng bảng công tắc (Switchboard)
Bảng công tắc cho phép nhanh chóng truy cập những thành phần được sử dụng thường
xuyên trong CSDL mà không cần phải hiểu những thành phần đó là gì và chúng liên quan
với nhau ra sao.
4.2.1 Tạo một bảng công tắc đơn giản
Trong Database Window, từ Menu chính nhấn vào Tools / Database Utilities /
Switchboard Manager
Chọn Yes khi Access báo không tìm thấy bảng công tắc nào và hỏi xem có muốn tạo mới
không ?
Nhấn chọn Edit để hiệu chỉnh bảng công tắc
Nhấn vào phím New để bổ sung mục công tắc mới
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
14
Bài giảng Lập trình trong Access
Cứ lần lượt làm như vậy với các chức năng khác.
Kết quả ta có bảng công tắc như sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
15
Bài giảng Lập trình trong Access
4.2.2 Hiệu chỉnh một bảng công tắc
Ta có thể thay đổi định dạng của bảng công tắc bằng nhiều cách khác nhau:
Trong chế độ thiết kế, ta kích chuột phải, chọn Fill/Back Color để thay đổi màu
nền.
Để chèn hình ảnh vào: Từ Menu chính, chọn Insert/ Picture...
4.3 Ngôn ngữ lập trình VBA(Visual Basic for Application)
4.3.1 Đặc điểm và vai trò của chương trình
Các chương trình Access VBA được tổ chức và hoạt động trong môi trường Access nhằm
xây dựng các ứng dụng Access phức tạp hơn, hoàn chỉnh hơn sau khi đã sử dụng các
công cụ của Access.
Quá trình lập trình được thực hiện trên nền của một chương trình đã được tạo bằng các
công cụ của Access (Table, Form, Query, Report, Macro).
4.3.2. Tổ chức chương trình
Các đoạn mã (code) được viết trong các module.
Có hai loại module: module của Form/Report và module chung.
Module gồm các thủ tục và hàm .
Thủ tục trong module của Form/Report gồm có hai loại: thủ tục xử lý sự kiện và thủ tục
thông thường.
Các thủ tục thông thường và các hàm của các module được sử dụng thông qua lời gọi.
Thủ tục xử lý sự kiện chỉ thực thi khi sự kiện đó xảy ra.
Phương pháp lập trình hướng sự kiện: Lập các thủ tục tương ứng với từng sự kiện.
Trong Access, ta có thể xử lý sự kiện trên các đối tượng sau: Form, Report, Control của
form.
4.3.3 Phân loại sự kiện
Có ba loại sự kiện: sự kiện trên Form, sự kiện trên Report và sự kiện trên control của
Form/Report.
Một số ví dụ về sự kiện:
Các sự kiện trên Form
Open: Xảy ra khi form được mở, các điều khiển chưa được tải lên form. Có thể hủy
bỏ không mở nữa bằng cách đặt giá trị cho tham số Cancel. Tuy chưa tải các điều
khiển lên form nhưng form được coi là đang mở, do đó có thể sửa thiết kế.
Load: Xảy ra khi form đã mở, điều khiển đã tải lên form. Thường xử lý khi muốn
kiểm tra mật khẩu truy nhập, ẩn hiện một số điều khiển.
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
16
Bài giảng Lập trình trong Access
Timer: Sự kiện xảy ra một cách định kỳ sau một khoảng thời gian xác định bởi thuộc
tính Time Interval.
Các sự kiện trên Report
Open: Xảy ra mở báo cáo, tương tự sự kiện open của form. Thích hợp để thay đổi
một số điểm trong thiết kế báo cáo, chẳng hạn tiêu đề, nguồn dữ liệu.
Close: Xảy ra khi đóng báo cáo
No Data: nguồn dữ liệu không có bản ghi nào. Có thể không in hoặc mở báo cáo đó
bằng cách tác động lên tham số cancel.
Các sự kiện trên điều khiển (control)
Change: Có ở những điều khiển mà giá trị có thể thay đổi như hộp văn bản... Sự kiện
này xảy ra khi giá trị của điều khiển bị thay đổi.
AfterUpdate: Xảy ra sau sự kiện Change, khi người dùng chấp nhận sự thay đổi bằng
cách nhấn enter hoặc làm mất con trỏ.
GotFocus, LostFocus: Xảy ra khi điều khiển có hoặc mất con trỏ. Sự kiện này cũng
xảy ra trên form chứa điều khiển.
4.3.4. Cấu trúc của module
Module chuẩn (còn gọi là module chung)
Các tùy chọn:
Option Base 0/1: Xác định cận dưới ngầm định của mảng là 0 hay
1.
Option Explicit: Không cho phép khai báo ngầm định các biến.
Option Compare Text/Binary: Cách so sánh xâu kí tự.
Khai báo các hằng, biến, mảng cấp chương trình: dùng từ khóa
Public/Global.
Khai báo các hằng, biến, mảng cấp module: dùng từ khóa Dim/Private.
Các thủ tục/hàm phạm vi sử dụng cấp chương trình.
Các thủ tục/hàm phạm vi sử dụng cấp module: dùng từ khóa Private.
Để tạo module: Chọn tab Modules / New. Cửa sổ soạn thảo mã chương trình sẽ hiện ra
như sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
17
Bài giảng Lập trình trong Access
Module lớp (module của Form/Report)
Các tùy chọn:
Option Base 0/1: Xác định cận dưới ngầm định của mảng là 0 hay
1.
Option Explicit: Không cho phép khai báo ngầm định các biến.
Option Compare Text/Binary: Cách so sánh xâu kí tự.
Khai báo các hằng, biến, mảng cấp module: dùng từ khóa Dim/Private.
Các thủ tục xử lý sự kiện
Các thủ tục/hàm thông thường
4.3.5 Cấu trúc của thủ tục và hàm
Cấu trúc của một thủ tục thường
[Static][Public][Private] Sub<Tên thủ tục>(<Danh sách các tham số và kiểu>)
[Các câu lệnh]
[Exit Sub]
[Các câu lệnh]
End Sub
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
18
Bài giảng Lập trình trong Access
Cấu trúc của một hàm
[Static][Public][Private] Function<Tên hàm>(<Danh sách các tham số>) As Kiểu
[Các câu lệnh]
[Exit Function]
[Các câu lệnh]
End Function
Cấu trúc một thủ tục xử lí sự kiện
Sự kiện trên Form
Private Sub Form_<Tên sự kiện>(<Danh sách các tham số và kiểu>)
[Các câu lệnh]
End Sub
Sự kiện trên Report
Private Sub Report_<Tên sự kiện>(<Danh sách các tham số và kiểu>)
[Các câu lệnh]
End Sub
Sự kiện trên control
Private Sub <Tên điều khiển>_<Tên sự kiện>(<Danh sách các tham số và
kiểu>)
[Các câu lệnh]
End Sub
4.3.6 Các quy định khi viết chương trình VBA
Mỗi lệnh thường viết trên một dòng. Nếu muốn xuống dòng ta dùng dấu gạch
dưới “_”
Mỗi dòng được phép viết nhiều lệnh, khi đó các lệnh phân cách nhau bằng dấu “:”
Không phân biệt chữ hoa hay chữ thường.
Cách viết chú thích:
Chú thích trên toàn bộ dòng: mở đầu dòng bằng dấu nháy đơn (có thể
dùng từ Rem thay cho dấu nháy đơn như trong các phiên bản trước).
Chú thích trên phần còn lại của dòng: phần chú thích bắt đầu bằng dấu
nháy đơn.
4.3.7 Dịch và chạy chương trình
Dịch chương trình:
Khi kết thúc mỗi dòng lệnh, Access sẽ tự động kiểm tra cú pháp của dòng lệnh đó. Để
dịch toàn bộ chương trình, ta chọn Debug từ Menu chính ->chọn Compile
Chạy chương trình:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
19
Bài giảng Lập trình trong Access
Thủ tục xử lý sự kiện kích hoạt sự kiện
Thủ tục và hàm khác có thể chạy thử từ của sổ Immediate Window (mở
cửa sổ này từ Menu View hoặc nhấn tổ hợp phím Ctrl + G). Gõ vào như
sau:
<Tên thủ tục><danh sách các tham số thực sự>
?<Tên hàm>(<danh sách các tham số thực sự>)
4.3.8 Cách gọi chương trình con trong VBA
Gọi thủ tục
<Tên thủ tục><Danh sách tham số thực sự>
Call <Tên thủ tục>(<Danh sách tham số thực sự>)
Các tham số thực sự có thể không đặt đúng trình tự mà tham số hình thức tương ứng
xuất hiện trong chương trình con. Khi đó, ta viết danh sách tham số thực sự dưới
dạng: <Tên tham số hình thức>:=<tham số thực sự>[,<Tên tham số hình
thức>:=<tham số thực sự>…]
Gọi hàm
Lời gọi hàm xuất hiện trong biểu thức với quy cách như sau:
<Tên hàm>(<Danh sách các tham số thực sự>)
Khi ta không quan tâm tới giá trị mà hàm trả lại, có thể gọi hàm như thủ tục:
<Tên hàm><Danh sách các tham số thực sự>
4.4 Các kiểu dữ liệu, hằng, biến, mảng dùng trong
chương trình
4.4.1 Các kiểu dữ liệu
Số nguyên: Integer (%), Long (&), Byte
Số thực: Single (!), Double (#)
Logic: Boolean
Tiền tệ: Currency (@)
Xâu kí tự: String ($), String*n
Ngày/giờ: Date
Variant: Biến thuộc kiểu dữ liệu này có thể nhận giá trị là số, xâu kí tự, ngày/giờ
hoặc giá trị Null.
4.4.2 Quy tắc đặt tên biến
Bao gồm các chữ cái, chữ số và dấu gạch dưới
Kí tự đầu phải là chữ cái
Không được trùng với các từ dành riêng của Access
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
20
Bài giảng Lập trình trong Access
Không dùng kí hiệu .!@&%#$
Tối đa 255 kí tự
4.4.3 Khai báo biến
Nếu đoạn mã trên vùng đầu của module, ta sử dụng tùy chọn Option Explicit thì
các biến phải được khai báo tường minh, nghĩa là biến có kiểu xác định. Ngược
lại, nếu không có tùy chọn trên, các biến không khai báo sẽ ngầm định có kiểu là
Variant.
Khai báo biến bằng lệnh Dim:
Dạng lệnh như sau:
Dim <tên biến>[As<kiểu>][,<tên biến>[As<kiểu>]..]
Ví dụ: Dim a As Integer, s As string
Biến tĩnh: ta thay từ khóa Dim bằng từ khóa Static.
Biến toàn cục: ta thay từ khóa Dim bằng từ khóa Public.
Biến địa phương: ta thay từ khóa Dim bằng từ khóa Private.
4.4.4 Mảng
Cách khai báo
Trong hàm/thủ tục
Dim/ReDim/Static <Tên_mảng>(Chỉ số 1, chỉ số 2,..., chỉ số n) [As <Kiểu>]
Trong phần khai báo của đơn thể Form/Report
Dim/Private <Tên_mảng>(Chỉ số 1, chỉ số 2,..., chỉ số n) [As <Kiểu>]
Trong phần khai báo của đơn thể dùng chung
Dim/Private/Public <Tên_mảng>(Chỉ số 1, chỉ số 2,..., chỉ số n) [As <Kiểu>]
Hai cách xác định miền giá trị của chỉ số
Cách 1: Dùng câu lệnh Option base 0/1 viết trong phần khai báo. Theo cách này, ta
quy định chỉ số cận dưới là 0 hoặc 1. Ví dụ:
Option base 0
Dim a(5) ‘ Chỉ số từ 0 đến 5
Option base 1
Dim b(6) As Integer‘ Chỉ số từ 1 đến 6
Cách 2: Dùng cách viết Cận_dưới to Cận_trên Ví dụ:
Option base 1
Dim a(4,-2 to 5,6)
sẽ khai báo một mảng 3 chiều kiểu Variant, trong đó:
Chỉ số thứ nhất chạy từ 1 đến 4
Chỉ số thứ hai chạy từ -2 đến 5
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
21
Bài giảng Lập trình trong Access
Chỉ số thứ ba chạy từ 1 đến 6
Chú ý: Các cận đều phải là hằng số nguyên và có thể nhận giá trị âm. Miền giá trị của
chỉ số mảng nằm trong khoảng –32768 đến 32767.
Phạm vi sử dụng của mảng
Cấp thủ tục:Khai báo trong thủ tục
Cấp đơn thể: Khai báo trong phần khai báo của đơn thể, dùng từ khóa Private
hoặc Dim.
Cấp chương trình: Khai báo trong phần khai báo của đơn thể sử dụng chung,
dùng từ khóa Public.
Mảng động
Ta khai báo như sau:
Dim/Private/Public <Tên_mảng> [As <Kiểu>]
Khi nào dùng mảng động, ta dùng ReDim để xác định chính xác chiều và kích thước
mỗi chiều. Kích thước mỗi chiều có thể cho bởi các biến hoặc biểu thức. Ví dụ:
Redim a(1 to n,m)
Đối là mảng:
Đối mảng được khai báo theo cách mảng động, ví dụ:
Sub Nhap(a()as Double, n as Integer)
Function max(a()as Double, n as Integer) As Double
Trong lời gọi: dùng tên mảng, ví dụ:
Dim a(10) as Double, n as Integer, gt as Double
Nhap a,n ‘Gọi thủ tục
gt = max(a,n) ‘ Gọi hàm
4.4.5 Kiểu tự định nghĩa (tự tạo)
Định nghĩa kiểu
Tương tự kiểu bản ghi của Pascal hay Struct của C, để định nghĩa một kiểu, ta sử
dụng cấu trúc sau:
[PUBLIC/PRIVATE] TYPE Tên_Kiểu
Tên_thành_phần As Kiểu
Tên_thành_phần As Kiểu
.......
Tên_thành_phần As Kiểu
END TYPE
Chú ý:
Không cho phép khai báo các thành phần kiểu đối tượng.
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
22
Bài giảng Lập trình trong Access
Thành phần của kiểu tự định nghĩa có thể là mảng.
Có thể khai báo các mảng kiểu tự định nghĩa.
Mệnh để TYPE chỉ được viết trong phần “Decleration Section” của đơn thể,
do đó ta có thể dùng nó để khai báo các biến mảng trong toàn đơn thể.
Phạm vi sử dụng
Nếu dùng PUBLIC thì phạm vi sử dụng của kiểu tự định nghĩa là trong toàn chương
trình.
Nếu dùng PRIVATE thì phạm vi sử dụng của kiểu tự định nghĩa là trong toàn đơn
thể chứa định nghĩa kiểu tự tạo.
Mặc định là PUBLIC
Trong đơn thể của Form/Report không cho phép định nghĩa kiểu tự tạo.
Ví dụ:
TYPE Point
x AS Double
y AS Double
END TYPE
TYPE Polygon
n AS Integer
p(1 to 100) AS Point
END TYPE
4.5 Các phép toán
4.5.1 Số học
Lũy thừa (^)
Nhân (*), chia (/), chia lấy phần nguyên (), chia lấy phần dư (mod)
Cộng (+), trừ (-)
4.5.2 So sánh
Bằng (=), khác (<>), nhỏ hơn (<), lớn hơn (>), nhỏ hơn hoặc bằng (<=), lớn hơn hoặc
bằng (>=).
4.5.3 Ghép xâu
Phép + chỉ dùng ghép xâu kí tự.
Phép & dùng ghép các kiểu dữ liệu khác nhau.
Ví dụ:
“Ha” + “ ” + “Noi” cho kết quả là chuỗi “Ha Noi”
“1996” & “4” cho kết quả là chuỗi “19964”
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
23
Bài giảng Lập trình trong Access
“A” & 2 cho kết quả là chuỗi “A2”
5 & 6 cho kết quả là chuỗi “56”
“A” + 4 sẽ sinh ra lỗi
4.5.4 Logic
Not, And, Or, Xor, Imp (Implication), Eqv (Equivalance).
Các phép toán trên có thể thực hiện trên các giá trị logic (True và False) hoặc trên các giá
trị nguyên (sẽ thực hiện trên từng bit) theo quy tắc trong bảng sau:
Thực hiện trên các giá trị logic (-1 là true, 0 là false)
x y x And y x Or y x Xor y x Eqv y x Imp y
0 0 0 0 0 -1 -1
0 -1 0 -1 -1 0 -1
-1 0 0 -1 -1 0 0
-1 -1 -1 -1 0 -1 -1
Thực hiện trên các giá trị nguyên (theo từng bit)
x y x And y x Or y x Xor y x Eqv y x Imp y
0 0 0 0 0 1 1
0 1 0 1 1 0 1
1 0 0 1 1 0 0
1 1 1 1 0 1 1
4.6 Các hàm thường dùng
4.6.1 Hàm toán học
Fix(x) cho giá trị nguyên là phần nguyên của x. Ví dụ: Fix(3.5) = 3; Fix(-6.7) = -6
Int(x) cho giá trị nguyên lớn nhất không vượt quá x. Ví dụ: Int(3.5) = 3; Int(-6.7) = -7
Abs(x) cho giá trị tuyệt đối của x
Rnd(n) cho số ngẫu nhiên từ 0 đến 1
Exp(x) cho giá trị ex
Log(x) cho giá trị logarit cơ số e của x
Sqr(x) tính căn bậc hai của x
Atn(x) tính arctan của x
Tan(x) tính tang của x
Sin(x) tính sin của x
Cos(x) tính cosin của x
4.6.2 Hàm xâu kí tự
Space(n): xâu gồm n dấu cách.
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
24
Bài giảng Lập trình trong Access
Left[$](s,n): xâu gồm n kí tự trái nhất của xâu s.
Right[$](s,n): xâu gồm n kí tự phải nhất của xâu s.
Mid(s,i,n): xâu gồm n kí tự của s tính từ kí tự i.
Len(s): độ dài xâu s.
Instr(n,s,t,[c]): kiểm tra xem xâu t có là xâu con của xâu s tính từ kí tự thứ n, nếu có trả
về vị trí đầu tiên gặp xâu t, nếu không thì trả về trị 0.
Lcase(s): chuyển các chữ cái trong xâu s thành chữ thường.
Ucase(s): chuyển các chữ cái trong xâu s thành chữ hoa.
LTrim(s): bỏ khoảng trống bên trái xâu s.
RTrim(s): bỏ khoảng trống bên phải xâu s.
Trim(s): bỏ khoảng trống bên trái và bên phải xâu s.
Str(numeric): đổi số thành chuỗi.
Format(numeric, chuỗi định dạng): đổi số thành chuỗi theo định dạng. Chuỗi định dạng
được dùng để quy định số chữ số thập phân như sau: “0.00” -> 2 chữ số thập phân;
“0.000” -> 3 chữ số thập phân.
4.6.3 Hàm ngày giờ
Date(): cho kết quả kiểu Variant chỉ ngày hệ thống.
Date$(): cho kết quả kiểu chuỗi chỉ ngày hệ thống.
Time(): cho kết quả kiểu Variant chỉ giờ hệ thống.
Time$(): cho kết quả kiểu chuỗi chỉ giờ hệ thống.
Now(): ngày giờ hiện hành.
Day(d): ngày của d.
Month(d): tháng của d.
Year(d): năm của d.
Weekday(d): thứ của ngày d.
4.6.4 Hàm cho kiểu dữ liệu Variant
IsDate(x): trả về giá trị True nếu x có quy cách ngày, ngược lại trả về False.
IsNumeric(x): trả về giá trị True nếu x có quy cách số, ngược lại là False.
IsNull(x): trả về giá trị True nếu x là null.
4.6.5 Các hàm liên quan nhiều kiểu dữ liệu
IIf(<Điều kiện>,<Biểu thức 1 >,<Biểu thức 2>) Nhận giá trị của biểu thức 1 nếu
điều kiện đúng, nhận giá trị của biểu thức 2 nếu điều kiện sai.
Choose(<Chỉ số>,<Biểu thức 1>,…,<Biểu thức n>) Chỉ số chỉ nhận giá trị từ 1
đến n. Hàm trả về giá trị của biểu thức i nếu chỉ số bằng i.
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
25
Bài giảng Lập trình trong Access
Format(<Biểu thức>,<Khuôn dạng>) Biểu diễn biểu thức bằng khuôn dạng đã chỉ
ra. Khuôn dạng có sẵn như “Long Date”, “Standard” hoặc khuôn dạng tự xác lập
như “DD/MM/YYYY”.
4.6.8 Hàm InputBox và MsgBox
Hàm InputBox
InputBox[$](<Lời nhắc>[,<Tiêu đề>][,<Giá trị ngầm định>][,<Tọa độ x>,<Tọa
độ y>])
Hàm này dùng để nhập giá trị cho các biến nhớ. Nếu chọn OK, biến nhận giá trị được
nhập, chọn Cancel biến nhận giá trị null.
Nếu InputBox$ thì hàm trả về chuỗi được nhập vào.
Ví dụ: để nhập bán kính của một đường tròn và gán cho biến R, ta có thể dùng hàm
InputBox theo mẫu:
R = InputBox("Nhap vao ban kinh","Cua so nhap du lieu")
Ta sẽ nhận được hộp thoại như sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
26
Bài giảng Lập trình trong Access
Hàm MsgBox
Cú pháp:
MsgBox(<Lời nhắc>[,<Kiểu nút>][,<Tiêu đề>])
Lời nhắc là một biểu thức chuỗi, nội dung của nó sẽ được đưa ra hộp thoại.
Chú ý: Xuống dòng dùng chr(10).
Tiêu đề là một biểu thức chuỗi được hiển thị trong thanh tiêu đề của hộp thoại.
Nếu bỏ qua đối số này thì tiêu đề sẽ là “Microsoft Access”.
Kiểu nút: là một tổng các số nguyên dùng để xác định: các nút lệnh sẽ hiển
thị, các biểu tượng, nút mặc định được chọn.
Nhóm các nút lệnh gồm có:
Giá trị Ý nghĩa
0 Hiển thị nút OK
1 Hiển thị các nút OK và Cancel
2 Hiển thị các nút Abort, Retry và Ignore
3 Hiển thị các nút Yes, No và Cancel
4 Hiển thị các nút Yes và No
5 Hiển thị các nút Retry và Cancel
Nhóm các biểu tượng gồm có:
Giá trị Ý nghĩa
0 Không hiện biểu tượng
16 Hiện biểu tượng Critical Message
32 Hiện biểu tượng Warning Query
48 Hiện biểu tượng Warrning Message
64 Hiện biểu tượng Information Message
Nhóm nút mặc định được chọn gồm có:
Giá trị Ý nghĩa
0 Nút đầu tiên (tính từ trái sang phải)
256 Nút thứ hai
512 Nút thứ ba
Ví dụ: nếu kiểu nút = 4 + 16 + 256 thì trên hộp thoại sẽ hiện: Hai nút Yes và No,
biểu tượng Critical Message, nút No được chọn sẵn:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
27
Bài giảng Lập trình trong Access
Kết quả ta nhận được:
Chúng ta có thể gọi hàm trên theo cách gọi của thủ tục, khi đó ta không cần nhận giá
trị trả về. Nếu chúng ta sử dụng hàm trên theo cách gọi hàm thì chúng ta sẽ nhận được
giá trị trả về. Giá trị trả về của hàm tương ứng với các nút như sau:
Giá trị hàm Nút được chọn
1 OK
2 Cancel
3 Abort
4 Retry
5 Ignore
6 Yes
7 No
4.7 Các cấu trúc lập trình
4.7.1 Lệnh If
Viết trên một dòng:
If <điều kiện> then [<nhóm lệnh 1>] [else<nhóm lệnh 2>]
Viết trên nhiều dòng:
If <điều kiện> then
<nhóm lệnh 1>
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
28
Bài giảng Lập trình trong Access
[ else
<nhóm lệnh 2>]
End If
4.7.2 Lệnh Select Case
Select Case <biểu thức>
[Case <danh sách các giá trị 1>]
[<nhóm lệnh 1>]
…
[Case <danh sách các giá trị n>]
[<nhóm lệnh n>]
[Case Else
nhóm lệnh (n+1)]
End Select
Danh sách các giá trị có thể viết theo ba cách sau:
Cách 1: Biểu thức 1, biểu thức 2,…, biểu thức k
Ví dụ: 1.5, a+b, 8.6 thì danh sách các giá trị gồm ba số: 1.5, a+b và 8.6
Cách 2: Biểu thức 1 To biểu thức 2
Ví dụ: 2.2 To 10.2 thì miền giá trị gồm các số trong đoạn từ 2.2 đến 10.2
“A” To “C” thì miền giá trị gồm các chuỗi có kí tự đầu là A, B và C.
Cách 3: Is phép_so_ sánh biểu_thức
Ví dụ: Is < a thì miền giá trị gồm các số nhỏ hơn a.
Chú ý: Ta có thể kết hợp sử dụng nhiều lần cả ba cách trên để xác định một miền giá trị.
Ví dụ: 3.2, 1.6, 10 To 15, Is < 1, Is > 200 thì miền giá trị gồm:
Các số 3.2 và 1.6
Các số nằm trong đoạn [10, 15]
Các số nhỏ hơn 1 và các số lớn hơn 200.
Một ví dụ về Select Case
Public Function Thu(ts As Date)As String
Select Case Weekday(ts)
Case 1
Thu = “Chu nhat”
Case 2
Thu = “Thu hai”
Case 3
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
29
Bài giảng Lập trình trong Access
Thu = “Thu ba”
Case 4
Thu = “Thu tu”
Case 5
Thu = “Thu nam”
Case 6
Thu = “Thu sau”
Case 7
Thu = “Thu bay”
End Select
End Function
4.7.3 Vòng lặp xác định For ... Next
For <biến> = <giá trị đầu> To <giá trị cuối> [Step<bước nhảy>]
<các lệnh>
[Exit For]
<các lệnh>
Next [biến đếm]
Chú ý:
Bước nhảy có thể âm hoặc dương.
Nếu không dùng lựa chọn Step<bước nhảy> thì bước bằng 1.
Toán tử Exit For dùng để thoát khỏi vòng lặp.
4.7.4 Vòng lặp xác định For Each Next
For Each <phần tử> In <nhóm>
<các lệnh>
[Exit For]
<các lệnh>
Next <phần tử>
Vòng lặp này dùng để duyệt lần lượt các phần tử trong nhóm.
Nhóm có thể là mảng hoặc tuyển tập đối tượng (Collection).
Nếu nhóm là mảng thì phần tử phải là biến kiểu Variant.
Nếu nhóm là tuyển tập đối tượng thì phần tử có thể là một biến kiểu Variant hoặc
một biến kiểu đối tượng chung (Object) hoặc biến kiểu đối tượng của tuyển tập.
4.7.5 Vòng lặp không xác định Do Loop
Có các dạng sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
30
Bài giảng Lập trình trong Access
Dạng 1:
Do [{While/Until}<điều kiện>]
[<các lệnh>]
[Exit Do]
[<các lệnh>]
Loop
Dạng 2:
Do
[<các lệnh>]
[Exit Do]
[<các lệnh>]
Loop[{While/Until}<điều kiện>]
4.7.6 Vòng lặp While Wend
While <điều kiện>
[<các câu lệnh>]
Wend
4.7.7 Các lệnh nhảy và kết thúc chương trình
Nhảy không điều kiện
Cú pháp:
Goto <Label>
Sự hoạt động:
Chuyển tới câu lệnh có nhãn Label và chương trình tiếp tục thực hiện từ lệnh này.
Nhảy tới đoạn chương trình con
Cú pháp:
Gosub Label
....
Label:
....
Return “Trở về câu lệnh ngay sau Gosub”
Sự hoạt động:
Chuyển tới câu lệnh có nhãn Label và tiếp tục thực hiện từ lệnh này cho tới khi
gặp Return thì quay trở lại câu lệnh đứng ngay sau Gosub.
Nhảy có lựa chọn
Cú pháp:
On BT Goto/Gosub nhãn_1,..,nhãn_n
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
31
Bài giảng Lập trình trong Access
Trong đó BT là biểu thức nguyên và thoả mãn điều kiện 0≤BT≤255
Sự hoạt động:
Nếu BT = 1 thì nhảy tới nhãn_1
Nếu BT = 2 thì nhảy tới nhãn_2
.......
Nếu BT = n thì nhảy tới nhãn_n
Nếu BT = 0 hoặc BT > n thì bỏ qua On BT Goto/Gosub để thực hiện lệnh tiếp
theo.
Nếu BT < 0 hoặc BT > 255 thì có lỗi.
Nhảy khi có lỗi
Cú pháp:
On Error Goto Label
.....
Exit Sub
Label:
Xử lí lỗi
Resume
⎩
⎨
⎧
nhan
next
⎭
⎬
⎫
Hoạt động: Khi có lỗi, chương trình không dừng mà chuyển đến câu lệnh có nhãn
Label.
Các lỗi có thể xảy ra:
Xóa một bảng / truy vấn không tồn tại.
Tạo mới một bảng / truy vấn đã tồn tại.
Nhận giá trị Null từ một ô điều khiển của form / report.
Chia cho số 0.
Và các lỗi khác...
Khi gặp các lỗi này, chương trình bị rối loạn và có thể bị treo máy.
Các hàm:
Error$: cho biết lõi gì đã xảy ra.
Err: cho biết số hiệu lỗi.
Câu lệnh Resume: hướng dẫn sự hoạt động tiếp tục của chương trình, thường được
viết theo hai cách:
Resume Next
Theo cách này, chương trình tiếp tục từ câu lệnh ngay sau câu lệnh gây lỗi.
Resume Tiep_tuc
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
32
Bài giảng Lập trình trong Access
Chương trình tiếp tục từ câu lệnh có nhãn Tiep_tuc.
Ví dụ: Thủ tục xóa một bảng có tên nhập vào từ bàn phím. Lỗi có thể gặp là bảng
không tồn tại. Khi có lỗi, chương trình đưa ra thông báo và kết thúc thủ tục:
Sub DeleteTable()
Dim DB As Database
Dim tableName As String
Set DB = CurrentDB()
On Error Goto Xu_li_loi
tableName = InputBox("Input the name of the table that will be deleted:")
DB.TableDefs.Delete tableName
MsgBox “Table” + tableName + “was deleted”
Exit_Program:
Exit Sub
Xu_li_loi:
MsgBox “Table” + tableName + “is not available”
MsgBox Error$
Resume Exit_Program
End Sub
4.8 Các thao tác trên tệp
Cho phép chuyển dữ liệu ra lưu trữ ở ngoài tệp mdb.
Mở tệp: Tệp cần được mở trước khi thực hiện các thao tác trên nó. Để mở tệp, ta
dùng mệnh đề OPEN:
OPEN Tên_tệp [FOR Kiểu_tệp] [ACCESS quyền_truy_nhập] AS[#]Số_hiệu_tệp
[LEN = Reclen]
Giải thích các tham số:
Tên_tệp: biểu thức chuỗi xác định tên tệp và đường dẫn, bắt buộc phải có
tham số này. Ví dụ: “file01.ad”, “C:ABChoso.xyz”
Kiểu_tệp: Xác định cách thức truy nhập trên tệp, gồm các giá trị sau:
Giá trị Ý nghĩa
Random Đây là kiểu tệp mặc đinh. Đọc ghi theo mẫu tin. Cho phép thực hiện cả ba
thao tác: ReadWrite (default), ReadOnly, WriteOnly.
Binary Cho phép đọc/ghi từ một vị trí bất kỳ tính theo byte trên tệp bằgn cách
dùng mệnh đề GET (để đọc) và PUT (để ghi). Cho phép thực hiện cả ba
thao tác: ReadWrite (default), ReadOnly, WriteOnly.
Input Đọc trên các tệp tuần tự bằng cách sử dụng mệnh đề Input.
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
33
Bài giảng Lập trình trong Access
Output Ghi trên các tệp tuần tự bằng cách sử dụng mệnh đề Write.
Append Ghi bổ sung trên các tệp tuần tự bằng cách sử dụng mệnh đề Write.
Quyền_truy_nhập: Xác định quyền truy nhập trên tệp gồm:
Giá trị Ý nghĩa
Read Chỉ có quyền đọc
Write Chỉ có quyền ghi
Read Write Có quyền đọc và ghi. Chỉ đúng đối với các kiểu tệp Random và Binary.
Số_hiệu_tệp: là một biểu thức nguyên có giá trị từ 1 đến 255. Sau khi mở tệp,
số hiệu tệp sẽ gắn với tệp cho đến khi tệp được đóng lại. Mọi thao tác sẽ thực
hiện thông qua số hiệu tệp.
Reclen: là một biểu thức nguyên có giá trị từ 1 đến 32767. Đối này thực sự có
tác dụng đối với kiểu tệp Random để xác định độ lớn của bản ghi (số kí tự
trong mỗi bản ghi). Giá trị mặc định của Reclen là 128 byte.
Ví dụ: Hàm kiểm tra sự tồn tại của tệp trong thư mục hiện hành, đối số là tên tệp cần
kiểm tra. Hàm trả về True nếu tệp tồn tại, ngược lại là False. Đoạn mã có dùng hàm
xác định một số hiệu tự do chưa dùng FreeFile:
Function Ton_tai(Ten_tep As String) As Integer
So_hieu As Integer
So_hieu = FreeFile ‘Chọn một số hiệu chưa dùng
Ton_tai = True
On Error Goto Loi
OPEN Ten_tep FOR Input AS So_hieu
Close So_hieu ‘Đóng tệp
Exit Function
Loi:
Ton_tai = False
Resume Next
End Function
Đóng tệp
Mệnh đề Close dùng để đóng 1 hoặc tất cả các tệp đang mở. Cú pháp như sau:
Close [[#]Số_hiệu_tệp], [[#]Số_hiệu_tệp]....
Nếu viết Close không kèm theo tham số gì thì có nghĩa là ta đóng tất cả các tệp đang
mở.
Ngoài ra, ta cũng có thể đóng tất cả các tệp đang mở bằng mệnh đề Reset.
Ghi lên tệp tuần tự (văn bản)
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
34
Bài giảng Lập trình trong Access
Write #<số_hiệu_tệp>,[<danh sách biểu thức>]
Mệnh đề này dùng để ghi dữ liệu kiểu số, chuỗi và kiểu DATE/TIME lên một tệp
tuần tự. Mỗi câu lệnh Write sẽ ghi một dòng văn bản lên tệp. Dòng văn bản gồm các
giá trị ứng với các biểu thức được phân cách nhau bởi dấu phẩy. Mỗi giá trị chuỗi
được bao bọc trong 2 dấu nháy kép. Giá trị kiểu DATE được ghi lên tệp theo định
dạng #2006-11-20# (tức là: năm-tháng-ngày). Giá trị kiểu TIME được ghi lên tệp
theo dạng #10:27:39# (giờ:phút:giây). Một câu lệnh WRITE không kèm theo biểu
thức sẽ ghi một dòng trống lên tệp. Kết quả, ta nhận được một tệp văn bản, nội dung
của nó có thể xem được bằng các hệ soạn thảo văn bản. Ví dụ: Chúng ta sẽ viết một
thủ tục ghi một số thứ lên một file với tên là “test.abc”, sau đó chúng ta sẽ kiểm tra
nội dụng file này. Chú ý: thư mục “C:access” đã tồn tại.
Dịch và chạy thử chương trình trong cửa sổ Immediate.
Mở thư mục access trong ổ C ra, ta thấy có file “test.abc”. Dùng trình soạn thảo
Notepad mở file này, ta có kết quả như sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
35
Bài giảng Lập trình trong Access
Đọc từ tệp tuần tự (văn bản)
Input #<số_hiệu_tệp>,[<danh sách các biến>]
Mệnh đề này dùng để đọc dữ liệu kiểu số, kiểu chuỗi và kiểu DATE/TIME từ một tệp
văn bản và chứa vào các biến tương ứng với chú ý: dữ liệu trên tệp và biến tương ứng
(biến chứa dữ liệu) phải cùng kiểu. Danh sách các biến phân cách nhau bởi dấu phẩy.
Ví dụ: đọc tệp chứa các số sau:
Ta viết chương trình như sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
36
Bài giảng Lập trình trong Access
Khi thực thi thủ tục trên, ta thu được kết quả như sau:
Ghi trên tệp ngẫu nhiên / nhị phân
Mệnh đề Put dùng để ghi giá trị của một biến (kiểu số, chuỗi và DATE/TIME) lên
một tệp ngẫu nhiên / nhị phân. Kết quả, ta nhận được một tệp nhị phân. Cú pháp như
sau:
PUT #<số_hiệu_tệp>, [số_hiệu_bản_ghi ,] <tên_biến>
trong đó:
số_hiệu_bản_ghi: là một biểu thức nguyên dương biểu thị số hiệu bản ghi đối với tệp
ngẫu nhiên (hoặc số hiệu byte đối với tệp nhị phân). Việc ghi sẽ thực hiện từ bản ghi
hoặc byte này.. Nếu vắng mặt, việc ghi sẽ bắt đầu từ bản ghi hoặc byte hiện tại trên
tệp. Bản ghi (hoặc byte) đầu ứng với số_hiệu_bản_ghi = 1.
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
37
Bài giảng Lập trình trong Access
Chú ý về độ dài của bản ghi:
Độ dài của bản ghi được quy định bởi đối Len trong mệnh đề OPEN. Nó chỉ thực sự
cần thiết đối với tệp Random. Cách xác định độ dài bản ghi:
Với các biến có độ dài xác định (mọi kiểu trừ String) thì độ dài bản ghi cần
lớn hơn hoặc bằng độ dài của biến.
Riêng đối với biến kiểu chuỗi có độ dài biến đổi cần lường trước độ dài cực
đại (số kí tự tối đa cần nhập). Độ dài bản ghi ≥ (độ dài cực đại + 2) (2 byte
dùng để ghi nhận độ dài của chuỗi).
Kết quả thực hiện:
Đối với tệp ngẫu nhiên, mỗi câu lệnh PUT sẽ:
Đưa nội dung của biến vào một phòng đợi có độ dài Len byte, sau đó
ghi cả Len byte của phòng đợi lên tệp tại bản ghi thứ
số_hiệu_bản_ghi.
Nếu phòng đợi quá nhỏ không chứa được giá trị của biến thì sẽ thông
báo lỗi: Bad Record Length.
Đối với tệp nhị phân:
Ghi giá trị của biến lên tệp tại byte thứ số_hiệu_bản_ghi.
Số byte được ghi sẽ bằng độ lớn của biến.
Đọc từ tệp ngẫu nhiên/ nhị phân
Mệnh đề GET dùng để đọc dữ liệu từ một tệp Random / Binary và chứa vào một biến.
Cú pháp như sau:
GET #<số_hiệu_tệp>,[số_hiệu_bản_ghi ,] <tên_biến>
trong đó:
số_hiệu_bản_ghi: là một biểu thức nguyên dương biểu thị số hiệu bản ghi đối với tệp
ngẫu nhiên (hoặc số hiệu byte đối với tệp nhị phân). Việc đọc sẽ thực hiện từ bản ghi
hoặc byte này.. Nếu vắng mặt, việc đọc sẽ bắt đầu từ bản ghi hoặc byte hiện tại trên
tệp. Bản ghi (hoặc byte) đầu ứng với số_hiệu_bản_ghi = 1.
Chú ý:
Đối với tệp Random, đối số Len trong mệnh đề OPEN để đọc cần bằng độ dài
bản ghi trên tệp cần đọc.
Dữ liệu chứa trên tệp và biến nhận dữ liệu tương ứng phải có cùng kiểu.
Kết quả thực hiện:
Đối với tệp ngẫu nhiên, mỗi câu lệnh GET sẽ:
Đọc len byte từ tệp và chứa vào phòng đợi (có độ dài Len byte).
Lấy một số byte từ phòng đợi (bằng độ dài của biến) và gán cho biến.
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
38
Bài giảng Lập trình trong Access
Đối với tệp nhị phân, mỗi câu lệnh GET sẽ đọc một số byte bằng độ dài của
biến từ tệp và đưa vào biến.
Ví dụ:
Kết quả:
Các hàm dùng trong thao tác tệp:
Eof(<số_hiệu_tệp>): Hàm này trả về giá trị True nếu con trỏ tệp đặt tại cuối
tệp, ngược lại, hàm trả về trị False.
Lof(<số_hiệu_tệp>): cho biết độ dài của tệp tính theo byte. Ví dụ: để xác
định số bản ghi trên một tệp Random, ta chia độ dài tệp cho độ dài bản ghi:
Open “DSTS.xyz” For Random As #1 Len = 20
So_ban_ghi = LOF(1)/20
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
39
Bài giảng Lập trình trong Access
Seek(<số_hiệu_tệp>): cho biết vị trí hiện tại của con trỏ tệp. Đó là một giá trị
nguyên trong khoảng từ 1 đến 2147483647. Đối với tệp Random, hàm cho
biết số hiệu của bản ghi tính từ 1 mà con trỏ tệp đang định vị. Đối với các tệp
còn lại, hàm cho biết số hiệu byte tính từ 1 mà con trỏ tệp đang định vị.
Mệnh đề Seek:
SEEK [#]<số_hiệu_tệp>, Vị_trí
trong đó, Vị_trí là số nguyên dương trong khoảng từ 1 đến 2147483647 xác định vị
trí mà con trỏ tệp sẽ di chuyển tới.
Đối với tệp Random, Vị_trí là số hiệu bản ghi tính từ 1.
Đối với tệp Binary, Vị_trí là số hiệu byte tính từ 1.
Chú ý:
Nếu Vị_trí = 0 hoặc âm thì sẽ báo lỗi
Nếu Vị_trí lớn hơn số bản ghi hiện có (Ví dụ: trên tệp chỉ có 6 bản ghi
mà Vị_trí = 9) thì con trỏ tệp sẽ định vị tại cuối tệp.
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
40
Bài giảng Lập trình trong Access
Chương 5
Sử dụng đối tượng trong Access
5.1 Khái niệm đối tượng và tập hợp đối tượng
5.1.1 Các kiểu dữ liệu đối tượng
Các kiểu dữ liệu đối tượng thường dùng của Access như sau:
Form
Report
Control
DBEngine, Workspace, DataBase, TableDef, QueryDef, Recordset, Index, Field,
Parameter
Connection, Command, Catalog, Table, Column, Key
CommandBar, CommandBarControl, CommandBarButton,...
Chúng ta cũng khai báo các biến kiểu đối tượng bằng lệnh Dim.
5.1.2 Tập hợp đối tượng
Tập hợp đối tượng là đối tượng định sẵn của Access. Các đối tượng cùng kiểu là
đối tượng con của tập hợp đối tượng.
Tên: ta thêm “s” vào đằng sau. Ví dụ: Forms, TableDefs, QueryDefs...
Để biểu diễn một đối tượng trong tập hợp, có những cách sau:
<Tập hợp>(i), trong đó i = 0, 1, 2,...
<Tập hợp>(“<Tên đối tượng>”)
<Tập hợp>!<Tên đối tượng> (nếu tên đối tượng không có dấu cách)
<Tập hợp>![Tên đối tượng] (nếu tên đối tượng có dấu cách)
5.1.3 Đối tượng khởi thuỷ. Cách biểu diễn các thành phần của
một đối tượng
Đối tượng khởi thủy không là đối tượng con của bất kỳ đối tượng nào.
Đối tượng khởi thủy đứng đầu trong biểu diễn của các thành phần đối tượng
Các đối tượng khởi thủy thường dùng là:
Của Access: Forms, Reports
Của DAO: DbEngine
Của ADO: Connections, Catalog
Của MsOffice: CommandBars
Khi biểu diễn thành phần nào đó của đối tượng, phải tuân theo quy định sau:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
41
Bài giảng Lập trình trong Access
Xuất phát từ đối tượng khởi thủy -> Các đối tượng trực thuộc đối tượng vừa được
biểu diễn -> Các thành phần của đối tượng.
Nếu tên đối tượng không theo quy định về tên trong lập trình thì phải bao bằng
cặp ngoặc vuông.
5.1.4 Một vài điểm đặc biệt khác
Từ khóa Me
Được dùng để chỉ đối tượng mà trên đó đoạn mã chương trình đang chạy. Nó có thể
là form hoặc report.
Tham chiếu đến đối tượng
Để một biến đối tượng tham chiếu đến một đối tượng cùng kiểu, ta dùng lệnh Set:
Set <tên biến đối tượng> = <biểu thức đối tượng>
Lệnh With
Tương tự như trong Pascal, chúng ta không cần viết tên đối tượng khi thực hiện thao
tác.
With <Đối tượng>
[<Các lệnh>]
End With
5.2 Đối tượng của Access
5.2.1 Phân cấp các đối tượng của Access
Access
Forms
Controls
Reports
Controls
DoCmd
5.2.2 Đối tượng DoCmd
DoCmd.<Phương thức><Danh sách các tham số>
Có thể phân biệt hai loại tham số:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
42
Bài giảng Lập trình trong Access
Tên của một đối tượng do người dùng tự đặt như tên bảng, tên Form....
Các hàng chuẩn của Access.
Chúng ta sẽ có dịp biết đến các tham số này ngay dưới đây:
Phương thức Close
DoCmd.Close <Kiểu đối tượng>, <Tên đối tượng>, <Cách ghi>
trong đó:
<Kiểu đối tượng>: xác định kiểu đối tượng cần đóng, chọn trong các hằng
chuẩn sau: acTable, acQuery, acForm, acReport, acMacro, acModule.
<Tên đối tượng>: xác định tên của đối tượng cần đóng.
<Cách ghi>: có ghi lại các thay đổi của đối tượng trước khi đóng hay
không, chọn một trong các hằng: acSaveNo (không ghi), acSaveYes (có
ghi), acSavePrompt.
Ví dụ: DoCmd.Close acForm, “MainForm”, acSaveYes sẽ đóng mẫu
biểu MainForm và ghi lại mọi thay đổi của mẫu biểu này trước khi đóng.
Phương thức OpenForm
DoCmd.OpenForm <Tên form>, <View>, <Tên bộ lọc>, <Điều kiện lọc>,
<DataMode>, <WindowMode>
<Tên form>: chuỗi biểu thị tên biểu thức cần mở.
<View>: chọn trong các hằng sau: acDesign, acForm, acNormal (mặc
định), acPreview.
<Tên bộ lọc>: chuỗi biểu thị tên của một truy vấn dùng để săp xếp và/hoặc
lọc ra các thông tin cần thiết.
<Điều kiện lọc>: chuỗi chứa điều kiện chọn lọc thông tin.
<DataMode>: chọn trong các hằng sau: acFormAdd, acFormEdit,
acFormPropertySettings (mặc định), acFormReadOnly.
<WindowMode>: chọn trong các hằng sau: acDialog, acHidden, acIcon,
acWindowNormal (mặc định).
Ví dụ: mở form “danh sach thi sinh” theo dạng form View để cập nhật dữ
liệu cho những thí sinh có tổng điểm lớn hơn hoặc bằng 18, ta viết như
sau:
DoCmd.OpenForm “danh sach thi sinh”, acNormal, , “[tong
diem]>=18”, acFormEdit
Phương thức OpenTable
dùng để mở một bảng, có 3 tham số theo thứ tự sau:
Tham số Ý nghĩa / Giải thích
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
43
Bài giảng Lập trình trong Access
Table Name biểu thức chuỗi biểu thị tên bảng cần mở.
View chọn trong các giá trị sau: acViewDesign, acViewNormal (mặc
định – dạng Datasheet View), acViewPreview.
DataMode chọn trong các giá trị sau: acAdd, acEdit (mặc định), acReadOnly.
Ví dụ: mở bảng “danh sach can bo” để cập nhật dữ liệu, ta viết như sau:
DoCmd.OpenTable “danh sach can bo”, acViewNormal, acEdit
Phương thức OpenQuery
dùng để mở một truy vấn, có 3 tham số theo trình tự:
Tham số Ý nghĩa / Giải thích
Query
Name
chuỗi biểu thị tên truy vấn cần mở.
View chọn trong danh sách sau: acViewDesign, acViewNormal (mặc
định), acViewPreview.
DataMode chọn trong các giá trị sau: acAdd, acEdit (mặc định), acReadOnly.
Phương thức OpenReport
dùng để mở một báo biểu, có 4 tham số theo thứ tự:
Tham số Ý nghĩa / Giá trị
Report Name chuỗi biểu thị tên báo biểu cần mở.
View chọn trong danh sách sau: acViewDesign, acViewNormal (mặc
định – in báo biểu), acViewPreview.
Filter Name chuỗi biểu thị tên của một truy vấn dùng để săp xếp và/hoặc lọc
ra các thông tin cần thiết.
WhereCondition chuỗi chứa điều kiện chọn lọc thông tin.
Phương thức Open Module
dùng để mở một đơn thể, có 2 tham số theo thứ tự sau:
Tham số Ý nghĩa / Giá trị
ModuleName chuỗi biểu thị tên đơn thể cần mở.
ProcedureName chuỗi xác định tên thủ tục của đơn thể.
Ví dụ: mở đơn thể “chuong trinh” để xem, sửa, bổ sung các hàm, thủ tục của nó bắt
đầu từ thủ tục có tên “tinh_toan”:
DoCmd.OpenModule “chuong trinh”, “tinh_toan”
Các phương thức trên các control
Sơn lại các đối tượng
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
44
Bài giảng Lập trình trong Access
Để đối tượng hiện nội dung mới nhất mà nó vừa thay đổi, ta dùng phương thức
RepaintObject có 2 tham số như sau:
Tham số Ý nghĩa / Giải thích
ObjectType chọn trong danh sách sau: acDefault, acForm, acMacro, acModule,
acQuery, acReport, acTable.
ObjectName chuỗi biểu thị tên đối tượng cần sơn lại.
Ví dụ: sau khi gán giá trị cho các ô điều khiển của mẫu biểu [hoc sinh], ta dùng
câu lệnh sau để thấy sự thay đổi của mẫu biểu trên màn hình:
DoCmd.RepaintObject acForm, “hoc sinh”
Đặt con trỏ chuột tại một ô điều khiển
Để dịnh vị con trỏ tại một ô điều khiển, ta dùng câu lệnh:
DoCmd.GotoControl “Tên ô điều khiển”
Ví dụ: DoCmd.GotoControl “Noi sinh” sẽ định vị con trỏ tại ô điều khiển [Noi
sinh].
Hiện nội dung vừa thay đổi của một ô điều khiển
Có khi nội dung của một ô điều khiển đã thay đổi nhưng trên mẫu biểu, ta vẫn chỉ
quan sát được nội dung cũ của nó. Điều này thường xảy ra đối với các hộp
ComboBox. Để hiển thị nội dung mới nhất của một ô điều khiển, ta dùng câu lệnh
sau:
DoCmd.Requery “Tên ô điều khiển”
Di chuyển đến một bản ghi mới
Để di chuyển đến một bản ghi mới, biến nó thành bản ghi hiện hành, ta dùng
phương thức GotoRecord có 4 tham số:
Tham số Ý nghĩa / Giá trị
ObjectType chọn trong danh sách sau: acActiveDataObject (mặc định),
acDataForm, acDataQuery, acDataTable.
ObjectName chuỗi biểu thị tên đối tượng chứa bản ghi cần di chuyển đến.
Record chọn trong danh sách: acFirst, acGoto, acLast, acNewRec, acNext
(mặc định), acPrevious.
Offset biểu thức nguyên (giả sử có giá trị là n).
Nếu tham số Record là acNext hoặc acPrevious thì sẽ di chuyển
xuống phía dưới hoặc lên phía trên n bản ghi.
Nếu tham số Record là acGoto thì sẽ di chuyển đến bản ghi có số
thứ tự là n (tính từ 1).
Ví dụ:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
45
Bài giảng Lập trình trong Access
DoCmd.GotoRecord acDataForm, “Tim kiem”, acGoto, m
sẽ di chuyển đến bản ghi thứ m của mẫu biểu [Tim kiem].
Phương thức SetMenuItem
Phương thức này dùng để điều khiển trạng thái của Menu. Cú pháp như sau:
DoCmd.SetMenuItem menuIndex [, CommandIndex / SubMenu] [, Command
Index ] [, Flag]
Tham số Ý nghĩa / Giải thích
menuIndex là một giá trị nguyên tính từ 0, xác định chỉ số của menu trong hệ
menu.
CommandIndex /
SubMenu
là một số nguyên tính từ 0, xác định chỉ số của nút lệnh hoặc chỉ số
của menu con của menu có chỉ số menuIndex.
CommandIndex là một số nguyên tính từ 0, xác định chỉ số của nút lệnh trong menu
con có chỉ số CommandIndex/SubMenu. Tham số này chỉ dùng khi
tham số thứ hai là chỉ số của menu con.
Flag Quy định trạng thái mới của đối tượng được xác định bởi ba tham
số trên, là một trong các hằng sau:
acMenuCheck (đánh dấu).
acMenuGray (bị xám, không cho phép thực hiện nút lệnh).
acMenuUncheck (không đánh dấu).
acMenuUngray (không bị xám, đây là trạng thái mặc định).
Chúng ta sẽ tạo một hệ menu để minh họa chức năng của phương thức
SetMenuItem như sau:
File Chọn hình học Chức năng
Open Tam giác Tính diện tích
Về Access Đoạn thẳng Tính độ dài
Về Window
trong đó:
Chức năng Open bị xám đi, chưa sử dụng được do ta chưa cài đặt.
Khi form hiện lên lần đầu, "Tam giác" được chọn.
Vì "Tam giác" được chọn nên chức năng "Tính độ dài" bị xám đi (không sử
dụng được).
Ta viết đoạn mã trong thủ tục xử lý sự kiện Open của Form:
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
46
Bài giảng Lập trình trong Access
Hình minh họa kết quả như sau:
5.2.3 Tập hợp đối tượng Forms và Reports
Forms
Tập hợp đối tượng Forms là đối tượng sẵn có của Access dùng tham chiếu đến các
Form đang mở. Có thể dùng cách biểu diễn đối tượng qua tập hợp đối tượng và đối
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
47
Bài giảng Lập trình trong Access
chiếu trên cây phân cấp các đối tượng của Access để biểu diễn các đối tượng trong
tập hợp.
Ví dụ: Forms(i), i = 0, 1, ... để chỉ form được mở thứ i.
Forms!Form1.Control!Label1 hoặc Forms!Form1!Label1 để chỉ nhãn Label1 trên
Form1
Trong Access có form chính và form phụ. Muốn tham chiếu đến các điều khiển trên
form phụ, ta sử dụng cơ chế phân cấp sau:
Đối tượng khởi thủy Forms.
Các form đang mở.
Các điều khiển trên các form đang mở (trong đó có subform: đảm bảo sự nhất
quán giữa tên của điều khiển subform và tên subform).
Đối tượng form là đối tượng con của điều khiển subform.
Một số thuộc tính hay dùng trong Form:
Thuộc tính Ý nghĩa
Name Tên đối tượng
Visible hiển thị hay không hiển thị của form hay control
Count xác định số đối tượng thành phần của tuyển tập.
ControlType xác định kiểu của các control trong form/report. Nhận các giá trị sau:
acLabel, acRectangle, acLine, acImage, acCommandButton,
acOptionButton, acCheckBox, acTextBox, acListBox, acComboBox,…
Value biểu thị giá trị của các ô điều khiển TextBox, ListBox, ComboBox.
Ví dụ 1: In danh sách các mẫu biểu đang mở
Cách 1:
Sub LietKe()
Dim n As Integer, I As Integer
n = Forms.Count
For i = 0 To n-1
MsgBox "Tên form thứ" & str(i) & "là:" & Forms(i).Name
Next
End Sub
Cách 2:
Sub LietKe()
Dim fm As Form, i%
i = 0
For Each fm In Forms
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
48
Bài giảng Lập trình trong Access
MsgBox "Tên form thứ" & str(i) & "là:" & fm.Name
i = i + 1
Next
End Sub
Ví dụ 2: dùng phép gán để thay đổi giá trị của các thuộc tính hoặc control. Giả sử "ho
ten" là một textBox trên form "ho so".
Dim f As Form
DoCmd.OpenForm "ho so" ' Mở mẫu biểu [ho so]
Set f = Forms![ho so] ' gắn biến f vào mẫu biểu
f![ho ten] = "Nguyen Van A" ' xuất hiện dòng chữ Nguyễn Văn A trên ô [ho ten]
f.Visible = True ' hiện mẫu biểu
f![ho ten].Visible = False ' ẩn điều khiển [họ ten]
Reports
Tập hợp đối tượng Reports là đối tượng sẵn có của Access dùng tham chiếu đến các
báo cáo đang mở. Cách biểu diễn các thành phần trong tập hợp đối tượng Reports
tương tự như tập hợp đối tượng Forms. Muốn tham chiếu đến các điều khiển trên
report phụ, có thể sử dụng cơ chế phân cấp sau:
Đối tượng khởi thủy Reports.
Các báo cáo đang mở.
Các điều khiển trên các báo cáo đang mở (trong đó có điều khiển subreport:
đảm bảo sự nhất quán giữa tên điều khiển subreport và tên subreport).
Đối tượng report là đối tượng con của điều khiển subreport.
Điều khiển xuất hiện trên report phụ của report đang xét.
Chú ý: báo biểu cũng tương tự như mẫu biểu.
Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn
Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội
49
Access
Access
Access
Access
Access
Access
Access
Access
Access
Access
Access
Access
Access
Access
Access
Access
Access
Access
Access
Access

More Related Content

What's hot

GiaoAn_bai6_lop12_BieuMau
GiaoAn_bai6_lop12_BieuMauGiaoAn_bai6_lop12_BieuMau
GiaoAn_bai6_lop12_BieuMauTran Juni
 
Tạo danh sách và mẫu in giấy khen trên excel 2003
Tạo danh sách và mẫu in giấy khen trên excel 2003Tạo danh sách và mẫu in giấy khen trên excel 2003
Tạo danh sách và mẫu in giấy khen trên excel 2003Những Mảnh Đời
 
Giao trinh access_p1_6962
Giao trinh access_p1_6962Giao trinh access_p1_6962
Giao trinh access_p1_6962Vy Le
 
Bài 2 Làm việc với biểu mẫu cơ bản - Giáo trình FPT
Bài 2 Làm việc với biểu mẫu cơ bản - Giáo trình FPTBài 2 Làm việc với biểu mẫu cơ bản - Giáo trình FPT
Bài 2 Làm việc với biểu mẫu cơ bản - Giáo trình FPTMasterCode.vn
 
Giao an tin hoc lop 10 bai 3
Giao an tin hoc lop 10 bai 3 Giao an tin hoc lop 10 bai 3
Giao an tin hoc lop 10 bai 3 Tran Juni
 
Giao an_bai4_lop10_baitoanvathuattoan
Giao an_bai4_lop10_baitoanvathuattoanGiao an_bai4_lop10_baitoanvathuattoan
Giao an_bai4_lop10_baitoanvathuattoanTran Juni
 
Eviews guide under_140203_m
Eviews guide under_140203_mEviews guide under_140203_m
Eviews guide under_140203_mAnh Tuan
 
Bai 3: Giới Thiêu Microsoft Access (Tiếp theo)
Bai 3: Giới Thiêu Microsoft Access (Tiếp theo)Bai 3: Giới Thiêu Microsoft Access (Tiếp theo)
Bai 3: Giới Thiêu Microsoft Access (Tiếp theo)Heo_Con049
 
Kbdh bai6 lop12_bieu_mau
Kbdh bai6 lop12_bieu_mauKbdh bai6 lop12_bieu_mau
Kbdh bai6 lop12_bieu_mauChi Lệ
 

What's hot (15)

GIÁO TRÌNH ACCESS 2003
GIÁO TRÌNH ACCESS 2003GIÁO TRÌNH ACCESS 2003
GIÁO TRÌNH ACCESS 2003
 
GiaoAn_bai6_lop12_BieuMau
GiaoAn_bai6_lop12_BieuMauGiaoAn_bai6_lop12_BieuMau
GiaoAn_bai6_lop12_BieuMau
 
BG trung tam
BG trung tamBG trung tam
BG trung tam
 
Chuong2
Chuong2Chuong2
Chuong2
 
Tạo danh sách và mẫu in giấy khen trên excel 2003
Tạo danh sách và mẫu in giấy khen trên excel 2003Tạo danh sách và mẫu in giấy khen trên excel 2003
Tạo danh sách và mẫu in giấy khen trên excel 2003
 
Giao trinh access_p1_6962
Giao trinh access_p1_6962Giao trinh access_p1_6962
Giao trinh access_p1_6962
 
Bài 2 Làm việc với biểu mẫu cơ bản - Giáo trình FPT
Bài 2 Làm việc với biểu mẫu cơ bản - Giáo trình FPTBài 2 Làm việc với biểu mẫu cơ bản - Giáo trình FPT
Bài 2 Làm việc với biểu mẫu cơ bản - Giáo trình FPT
 
De12 (2)
De12 (2)De12 (2)
De12 (2)
 
Giao an tin hoc lop 10 bai 3
Giao an tin hoc lop 10 bai 3 Giao an tin hoc lop 10 bai 3
Giao an tin hoc lop 10 bai 3
 
Chuong1
Chuong1Chuong1
Chuong1
 
Giao an_bai4_lop10_baitoanvathuattoan
Giao an_bai4_lop10_baitoanvathuattoanGiao an_bai4_lop10_baitoanvathuattoan
Giao an_bai4_lop10_baitoanvathuattoan
 
Tu hoc excel
Tu hoc excelTu hoc excel
Tu hoc excel
 
Eviews guide under_140203_m
Eviews guide under_140203_mEviews guide under_140203_m
Eviews guide under_140203_m
 
Bai 3: Giới Thiêu Microsoft Access (Tiếp theo)
Bai 3: Giới Thiêu Microsoft Access (Tiếp theo)Bai 3: Giới Thiêu Microsoft Access (Tiếp theo)
Bai 3: Giới Thiêu Microsoft Access (Tiếp theo)
 
Kbdh bai6 lop12_bieu_mau
Kbdh bai6 lop12_bieu_mauKbdh bai6 lop12_bieu_mau
Kbdh bai6 lop12_bieu_mau
 

Similar to Access

Similar to Access (20)

Access Toan Tap
Access Toan TapAccess Toan Tap
Access Toan Tap
 
Giáo trình access thực hành
Giáo trình access thực hànhGiáo trình access thực hành
Giáo trình access thực hành
 
Giao trinh-access 2003 full
Giao trinh-access 2003 fullGiao trinh-access 2003 full
Giao trinh-access 2003 full
 
Access toan tap
Access toan tapAccess toan tap
Access toan tap
 
Bai3 gioi thieu access t9
Bai3 gioi thieu access t9Bai3 gioi thieu access t9
Bai3 gioi thieu access t9
 
ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH
ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNHĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH
ĐỒ ÁN CÔNG NGHỆ THÔNG TIN: QUẢN LÝ TÀI SẢN CỐ ĐỊNH
 
Dotnet
DotnetDotnet
Dotnet
 
GIÁO ÁN TIN 7
GIÁO ÁN TIN 7GIÁO ÁN TIN 7
GIÁO ÁN TIN 7
 
Bai giang thnc phan acccess
Bai giang thnc phan acccessBai giang thnc phan acccess
Bai giang thnc phan acccess
 
Bao cao
Bao caoBao cao
Bao cao
 
Tin hoc can ban bai tap
Tin hoc can ban   bai tapTin hoc can ban   bai tap
Tin hoc can ban bai tap
 
Tự học excel
Tự học excelTự học excel
Tự học excel
 
Đề thi 02
Đề thi 02Đề thi 02
Đề thi 02
 
SỬ DỤNG PHẦN MỀM MAPLE ĐỂ GIẢI CÁC BÀI TOÁN VỀ NGUYÊN HÀM VÀ TÍCH PHÂN
SỬ DỤNG PHẦN MỀM MAPLE ĐỂ GIẢI CÁC BÀI TOÁN VỀ NGUYÊN HÀM VÀ TÍCH PHÂN SỬ DỤNG PHẦN MỀM MAPLE ĐỂ GIẢI CÁC BÀI TOÁN VỀ NGUYÊN HÀM VÀ TÍCH PHÂN
SỬ DỤNG PHẦN MỀM MAPLE ĐỂ GIẢI CÁC BÀI TOÁN VỀ NGUYÊN HÀM VÀ TÍCH PHÂN
 
Bài 4 lớp 12 chương 2
Bài 4 lớp 12 chương 2Bài 4 lớp 12 chương 2
Bài 4 lớp 12 chương 2
 
Giao an tin hoc 7 2 cot chuan ktkn
Giao an tin hoc 7 2 cot chuan ktknGiao an tin hoc 7 2 cot chuan ktkn
Giao an tin hoc 7 2 cot chuan ktkn
 
Slide
SlideSlide
Slide
 
Hướng dẫn sử dụng Microsoft Excel cơ bản
Hướng dẫn sử dụng Microsoft Excel cơ bảnHướng dẫn sử dụng Microsoft Excel cơ bản
Hướng dẫn sử dụng Microsoft Excel cơ bản
 
Md
MdMd
Md
 
Huong dan su dung medcalc
Huong dan su dung medcalcHuong dan su dung medcalc
Huong dan su dung medcalc
 

Access

  • 1. Bài giảng Access Chương 0: Giới thiệu Cơ sở dữ liệu (CSDL, database) là một bộ sưu tập các dữ liệu tác nghiệp được lưu trữ lại và được các hệ ứng dụng của một xí nghiệp cụ thể nào đó sử dụng. Hệ quản trị cơ sở dữ liệu (HQTCSDL, Database Management System-DBMS) là hệ thống phần mềm cho phép: • Định nghĩa, tạo lập: xác định kiểu, cấu trúc, ràng buộc dữ liệu, lưu trữ dữ liệu trên các thiết bị nhớ. • Thao tác: truy vấn, cập nhật, kết xuất,... các CSDL cho các ứng dụng khác nhau Ví dụ: HQTCSDL MS SQL Server, MS Access, DB2, PostGreSQL, MySQL, Oracle, FoxPro, Foxbase,... Hệ cơ sở dữ liệu (HCSDL, Database System) là một hệ thống gồm 4 thành phần: • Hệ quản trị cơ sở dữ liệu • Phần cứng • CSDL và phần mềm ứng dụng • Những người sử dụng Ví dụ: hệ quản lý đào tạo, hệ quản lý nhân sự, hệ quản lý kinh doanh,... Các tính năng của hệ quản trị CSDL: • Quản lý dữ liệu tồn tại lâu dài. • Truy xuất dữ liệu một cách hiệu quả. • Hỗ trợ ít nhất một mô hình dữ liệu. • Đảm bảo tính độc lập dữ liệu. • Hỗ trợ các ngôn ngữ cấp cao nhất định cho phép người sử dụng định nghĩa cấu trúc của dữ liệu, truy nhập và thao tác dữ liệu. • Điều khiển truy nhập. • Sao lưu và phục hồi dữ liệu. Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 1
  • 2. Bài giảng Access Chương 1: Tạo bảng dữ liệu đơn giản 1.1. Khởi động Access và tạo mới một CSDL Access nằm trong bộ MS Office của Microsoft. Ta khởi động bằng cách chọn Start / Programs / Microsoft Office / Microsoft Access 2003. Để thuận tiện cho các lần sử dụng sau, ta cũng có thể tạo Shortcut cho Access và để nó trên màn hình nền Windows. Đây là màn hình Access 2003: Thanh tiêu đề Thanh menu Thanh công cụ Blank database Thanh trạng thái Nhấn chọn Blank database, hộp thoại sau xuất hiện: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 2
  • 3. Bài giảng Access Ta đặt tên CSDL là tck45.mdb và định vị cho nó được đặt tại thư mục mong muốn D:TailieuGiangdayCSDLHeQTCSDLAccess (cái này tùy bạn!). Các bạn lưu ý, phần mở rộng của Access là mdb (phiên bản 2007 về sau có khác đôi chút). Cửa sổ sau xuất hiện: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 3
  • 4. Bài giảng Access Chúng ta tạm đóng CSDL trên lại. 1.2. Mở một CSDL đã có Bây giờ chúng ta mở Access, chọn FileOpen hoặc nhấn Ctrl+O hoặc nhấn vào nút có biểu tượng Open trên thanh công cụ. Hộp thoại Open xuất hiện. Ta chọn tập tin mdb cần mở, sau đó nhấn nút Open. Quan sát, chúng ta thấy CSDL Access có các thành phần như: Tables, Queries, Forms, Reports, Pages, Macros và Modules. Chúng ta sẽ lần lượt tìm hiểu về các thành phần này. 1.3. Tạo bảng sử dụng đồ thuật (Table Wizard) Đồ thuật là một trình công cụ hướng dẫn bạn đi qua tất cả các bước cần thiết trong quy trình tạo một thành phần chuẩn của Access như bảng, bộ hỏi, biểu mẫu, báo cáo, trang truy cập dữ liệu. Nó là một cách tiếp cận hữu ích cho những người mới làm quen với Access. Làm theo các bước sau: Bước 1: Trong cửa sổ tck45: Database, với tab Tables bên trái đang được kích hoạt, nhấn vào phím New. Access sẽ mở ra hộp thoại New Table cho phép xác định cách tạo bảng. Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 4
  • 5. Bài giảng Access Có hai mục không được giới thiệu ở đây, đó là: Import Table (nhập khẩu một bảng đã được tạo ra trong trình ứng dụng khác) và Link Table (tạo một bảng được kết nối với một bảng khác trong tập tin khác). Bước 2: Nhấn chọn mục Table Wizard, sau đó nhấn OK. Hộp thoại Table Wizard xuất hiện: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 5
  • 6. Bài giảng Access Bước 3: Chọn Sample Tables là Students, sau đó lần lượt chọn các mục trong danh sách Sample Fields và chuyển nó vào Fields in my new table: Nếu muốn đổi tên cột, ta chọn mục tương ứng rồi nhấn vào nút Rename Field... Bước 4: Sau đó nhấn Next. Hộp thoại sau xuất hiện: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 6
  • 7. Bài giảng Access Bước 5: Nếu muốn bạn có thể đổi tên bảng. Ở đây tôi để nguyên là Students. Bước 6: Nhấn Next chuyển sang hộp thoại tiếp theo. Bước 7: Nhấn Finish để hoàn tất quá trình tạo bảng sử dụng đồ thuật. Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 7
  • 8. Bài giảng Access Tới đây, chúng ta có thể nhập dữ liệu trực tiếp vào bảng nếu muốn. Tạm thời chúng ta chưa nhập gì cả. Chúng ta sẽ xem bảng Students trong chế độ Design: Chọn bảng Students và nhấn nút Design, cửa sổ sau xuất hiện: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 8
  • 9. Bài giảng Access Bước 8: Nhập dữ liệu vào bảng. 1.4. Các thao tác hiệu chỉnh hàng, cột và dữ liệu trong bảng • Sử dụng thanh trượt để dịch chuyển: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 9
  • 10. Bài giảng Access • Di chuyển đến các khoản tin (record, dòng) • Thêm khoản tin mới Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 10
  • 11. Bài giảng Access Nhấn vào đây để tạo khoản tin mới • Sao chép dữ liệu kề bên trên: nhấn CTRL + ' hoặc sử dụng kỹ thuật Copy-Paste • Xóa khoản tin: Nhấn vào đây để xóa khoản tin Nhấn Record Selector để chọn toàn bộ khoản tin Nhấn Yes để xóa thực sự Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 11
  • 12. Bài giảng Access • Thay đổi ngoại hình của bảng: độ lớn cửa sổ, cột, hàng • Gắn chặt một (hoặc nhiều) trường vào một vị trí nhất định: Chọn cột, kích chuột phải, nhấn Freeze Columns hoặc chọn cột, chọn Format, Freeze Columns. Nếu muốn bỏ tính chất này, ta chỉ việc chọn Unfreeze All Columns. Sau đó, nếu cần, có thể dùng kỹ thuật kéo thả các cột về vị trí mong muốn. • Che dấu và hiện lại cột: Format/Hide Columns và Format/Unhide Columns • Sắp xếp các khoản tin: Chọn cột, nhấn Sort Ascending hoặc Sort Descending. • Các chức năng trong Tools/ Options. • Thay đổi skin cho bảng: Format/Datasheet • Thay đổi font chữ: Format/Font • In bảng: Print Preview và Print, File/Page Setup 1.5. Sử dụng trợ giúp trong Access Nhấn F1 hoặc chọn trên menu Help Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 12
  • 13. Bài giảng Access Chương 2: Bảng và biểu mẫu 2.1. Các kiểu dữ liệu Nhấn nút để chuyển đổi giữa chế độ thiết kế và xem bảng dữ liệu Trong chế độ thiết kế: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 13
  • 14. Bài giảng Access Các kiểu dữ liệu: Kiểu dữ liệu Mô tả Text Dạng dữ liệu phổ biến nhất. Có thể chứa chữ cái, chữ số và các kí tự như &, %, =, ?. Có thể dài tới 255 kí tự. Memo Tương tự như Text nhưng có thể chứa tới 65535 kí tự. Thường dùng để cung cấp các chú giải. Trường Memo không thể là một trường khóa, không thể lập chỉ mục. Number Giá trị số. Có thể có những kích cỡ như sau: Byte: số nguyên từ 0 đến 255 Integer: số nguyên từ -32768 đến 32767 Long Integer: số nguyên trong khoảng -2,147,483,648 đến +2,147,483,647 Single: số có độ chính xác đơn trong khoảng -3.40283*1038 đến -1.401298*10-45 và 1.401298*10-45 đến 3.40283*1038 Double: số có độ chính xác kép trong khoảng -1.7976931348623*10308 đến -4.94065645841247*10-324 và 4.94065645841247*10- 324 đến 1.7976931348623*10308 Replication ID: Số nhận dạng duy nhất toàn cục Date/Time Ngày và giờ được lưu trữ theo một dạng thức cố định đặc biệt, giá trị trong khoảng từ ngày 1.1.100 đến 31.12.9999. Có nhiều định dạng. Currency Một dạng số, có thể có tới 15 chữ số bên trái và 4 chữ số nằm bên phải dấu thập phân. AutoNumber Giá trị số mà Access tự động điền cho từng khoản tin mới bỏ sung vào bảng. Có thể là số tuần tự hoặc ngẫu nhiên, có độ dài là Long Integer hoặc Replication ID. Có thể sử dụng làm khóa chính. Không thể cập nhật. Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 14
  • 15. Bài giảng Access Yes/No Đúng/sai, có/không, bật/tắt. OLE Object Có thể chứa đối tượng đồ họa hoặc các đối tượng khác (bảng tính, tập tin âm thanh, video) được tạo bởi trình ứng dụng windows có hỗ trợ OLE. Đối tượng có thể được nhúng vào trường hay được kết nối (link) với trường. Hyperlink Có thể là đường dẫn đến một tập tin trong ổ cứng hay trên máy chủ của mạng hay một địa chỉ URL dẫn đến một đối tượng trên mạng. Access sẽ chuyển đến đối tượng đó khi nhấn vào link. Lookup Wizard Không phải một dạng dữ liệu. Đồ thuật được sử dụng để tạo một trường cho phép tra cứu các giá trị trong một bảng hay chọn giá trị từ một danh sách. 2.2. Sử dụng các thuộc tính trường • Độ lớn của trường (Field Size): dùng cho văn bản và số. o Đối với kiểu văn bản: đây chính là số kí tự tối đa có thể nhập vào. Nếu nhập quá, Access sẽ xén phần còn lại. o Đối với kiểu số: kích thước được xác định qua định dạng Format. Nếu nhập vào ba số 0 thì sẽ ra lệnh cho Access tự điền chữ số 0 vào bên trái khi không đủ 3 chữ số. • Xác định mặt nạ nhập liệu (Input Mask): Kiểm soát quá trình hiển thị dữ liệu. Đây là một mẫu kí tự xác định cách thể hiện dữ liệu trên màn hình và loại dữ liệu được nhập vào. Danh sách một số kí tự giữ chỗ thường được sử dụng trong hộp văn bản Input Mask: Kí tự Access sẽ thực hiện 0 chữ số từ 0 đến 9, bắt buộc nhập, không cho phép dấu cộng + và trừ - 9 chữ số hay dấu cách, không bắt buộc nhập, không cho phép dấu cộng + và trừ - # chữ số hay dấu cách, không bắt buộc nhập, vị trí trống được chuyển thành dấu cách, cho phép dấu cộng + và trừ - L chữ cái từ A đến Z, bắt buộc nhập ? chữ cái từ A đến Z, không bắt buộc nhập A chữ cái hay chữ số, bắt buộc nhập a chữ cái hay chữ số, không bắt buộc nhập & kí tự hoặc dấu cách, bắt buộc nhập C kí tự hoặc dấu cách, không bắt buộc nhập < chuyển tất cả các chữ cái đứng sau nó thành dạng chữ thường > chuyển tất cả các chữ cái đứng sau nó thành dạng chữ hoa bổ sung kí tự đứng liền sau nó vào mục dữ liệu ! căn phải cả mục dữ liệu Chúng ta sử dụng các kí tự trên để sửa mặt nạ nhập liệu cho phù hợp với cách ghi số điện thoại hiện thời ở Việt Nam: Phần 3 chữ số đầu là dành cho các tổng đài di động, ví dụ (090) 1234 567 hoặc (091) 1234 567. Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 15
  • 16. Bài giảng Access Phần 7 chữ số sau của máy di động hoặc toàn bộ số của máy cố định được phân thành 2 nhóm, cách nhau bởi dấu cách, ví dụ: ( ) 821 4351 hoặc ( ) 896 6027 Ta làm như sau: Trong chế độ thiết kế, nhấn chuột chọn dòng PhoneNumber. Tìm đến dòng Input Mask, nhập vào như sau: !(999")"000 0000 Quan sát dữ liệu trong bảng, ta thấy có thay đổi cách thể hiện: • Bổ sung tựa đề (Caption): khi sử dụng thuộc tính Caption, bạn có thể dùng một đoạn văn bản khác để thay thế cho tên trường khi hiển thị bảng. Ví dụ: sửa tựa đề cho StudentsID thành "Mã sinh viên": Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 16
  • 17. Bài giảng Access Chuyển sang chế độ View để xem kết quả: • Ấn định giá trị ngầm định: Thuộc tính Default Value cho phép bạn xác định một giá trị trường mà Access sẽ tự động nhập vào bảng. Ví dụ, đa số sinh viên ở Hà Nội, nên ta có thể ngầm định trường StateOrProvince là "Hà Nội" Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 17
  • 18. Bài giảng Access • Bắt buộc nhập liệu: Thuộc tính Required chuyển thành Yes. • Thuộc tính tạo chỉ mục Indexed: giúp tìm kiếm và sắp xếp dựa trên trường này nhanh hơn. • Thuộc tính Validation Rule: quy tắc hợp lệ. • Thuộc tính Validation Text: văn bản hợp lệ (gợi nhắc) • Thuộc tính Unicode Compression: giảm lượng bộ nhớ cần thiết để lưu trữ cơ sở dữ liệu. 2.3. Tạo bảng không sử dụng đồ thuật Xóa bảng Students đi, không dùng đồ thuật, tạo lại bảng với các trường sau: • StudentID: mã sinh viên, khóa chính. • StudentName: tên sinh viên. • StudentBirth: ngày tháng năm sinh của sinh viên. • StudentAddress: địa chỉ nơi ở của sinh viên. • StudentPhone: số điện thoại liên hệ, theo quy cách !(999")"000 0000 • ClassID: mã lớp, là khóa ngoài. Hãy tạo bảng Lecturers, Class, Subjects, Learn: Bảng Lecturers gồm các trường sau: • LecturerID: mã giảng viên, là khóa chính. • LecturerName: tên giảng viên. • LecturerPhone: điện thoại theo quy cách !(999")"000 0000 • Faculty: khoa, gồm có: Công nghệ thông tin, điện tử viễn thông, hóa học, cơ khí, kinh tế quản lý, ngoại ngữ, tại chức. Bảng Class gồm có các trường sau: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 18
  • 19. Bài giảng Access • ClassID: mã lớp, là khóa chính. • ClassName: tên lớp. • Monitor: trưởng lớp. Bảng Subjects gồm có các trường sau: • SubjectID: mã môn học, là khóa chính. • SubjectName: tên môn học. Bảng Learn gồm: • LecturerID: mã giảng viên. • ClassID: mã lớp. • SubjectID: mã môn học. • Time: thời gian biểu học. Xem mối quan hệ giữa các bảng: 2.4. Sử dụng form (biểu mẫu) để nhập và xem dữ liệu 2.4.1. Tạo một form tự động Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 19
  • 20. Bài giảng Access Trong tab Tables, chọn bảng cần tạo form tự động, sau đó nhấn chọn Autoform. Kết quả, ta sẽ được một form như sau: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 20
  • 21. Bài giảng Access Lần lượt tạo các form theo cách trên. 2.4.2. Sử dụng đồ thuật biểu mẫu Chọn tab Forms, chọn Create form by using Wizard, nhấn New. Đồ thuật xuất hiện: Nhấn OK, hộp thoại tiếp theo xuất hiện: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 21
  • 22. Bài giảng Access Chọn bảng Class và đưa tất cả các trường trong mục "Available Fields" sang mục "Selected Fields" Nhấn Next, hộp thoại sau xuất hiện: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 22
  • 23. Bài giảng Access Lần lượt check vào các radio button để xem giao diện của form khi hình thành sẽ như thế nào. Nhấn Next, hộp thoại sau sẽ xuất hiện: Lần lượt chọn các mục để xem skin của form. Nhấn Next, hộp thoại cuối cùng để hoàn tất: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 23
  • 24. Bài giảng Access Nhấn Finish để hoàn thành công việc tạo form sử dụng đồ thuật. Form của chúng ta có hình thù như sau: 2.4.3. Hiệu chỉnh giao diện của các form tự động vừa tạo Chuyển sang chế độ thiết kế, thêm nhãn và căn chỉnh lại các điều khiển trên form Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 24
  • 25. Bài giảng Access Một số chức năng trong Format: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 25
  • 26. Bài giảng Access Trong chế độ thiết kế, ta có thể cho hiện các vùng Form Header/Footer, Page Header/Footer bằng cách kích chuột phải trên form rồi chọn các mục tương ứng: Form được chia thành 5 khu vực: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 26
  • 27. Bài giảng Access • Khu vực Form Header (đầu biểu mẫu) có thể chứa các thông tin ví dụ như một tiêu đề mà bạn muốn nó xuất hiện ở phần bên trên của biểu mẫu (hiện thời nó đang được để trống). • Khu vực thứ hai Detail chứa các hộp trống được gọi là Control (điều kiểm) cho các trường mà bạn đã chọn cho biểu mẫu này. Các điều kiểm là nơi bạn có thể nhập thông tin. Mỗi điều kiểm có thể đi kèm với một hộp màu xám được gọi là một nhãn (Label) chứa tên hoặc tựa đề của trường. • Khu thứ ba Form Footer, hoạt động tương tự như Form Header. • Hai khu vực còn lại là Page Header và Page Footer, chúng có thể chứa các phần tử mà bạn muốn xuất hiện trên mỗi trang, trong trường hợp một biểu mẫu chiếm nhiều trang giấy. Ngoài ra, cửa sổ còn hiển thị các đường thước nằm ngang và nằm dọc cũng như các ô lưới giúp bạn định vị các điều kiểm và nhãn trong biểu mẫu. Để chọn nhiều điều kiểm, ta giữ phín SHIFT và dùng chuột chọn điều kiểm. Nếu muốn chọn tất cả các điều kiểm trên form, ta nhấn Ctrl + A hoặc chọn Edit/ Select All. Để xem các thuộc tính của điều kiểm, ta chọn điều kiểm rồi nhấn chuột phải, chọn Properties: Ta có thể thay đổi font chữ, màu sắc, kích thước,... Có thể đổi từ ComboBox sang List Box nếu số giá trị là nhỏ: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 27
  • 28. Bài giảng Access 2.5. Tạo biểu mẫu của nhiều bảng (Multi table Form) Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 28
  • 29. Bài giảng Access Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 29
  • 30. Bài giảng Access Chương 3: Bộ hỏi, báo biểu, trang truy cập dữ liệu và bảng công tắc 3.1. Sử dụng lệnh Find và các bộ lọc (Filter) Bước 1: Mở CSDL và một bảng nào đó, ví dụ bảng Students. Bước 2: Nhấn vào phím Find trên thanh công cụ. Bước 3: Hộp thoại Find And Replace xuất hiện, tìm đến hộp văn bản Find What, nhập vào một giá trị cần tìm Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 30
  • 31. Bài giảng Access Lưu ý: nếu chỉ so khớp một phần giá trị trong một trường thì chọn Math là "Any Part of Field" Hướng dẫn sinh viên sử dụng Replace Filter Khi làm việc với một bảng lớn, thường ta sẽ tập trung vào một tập hợp con các khoản tin (record, dòng, bộ) trong bảng. Đó là tập hợp chứa các khoản tin có một số thuộc tính chung nào đó. Để lọc ra nhóm các khoản tin này, bạn có thể sử dụng các bộ lọc (Filter). Filter By Selection Apply Filter hoặc Remove Filter Filter By Form Làm theo các bước sau: Bước 1: Chọn một giá trị trong một cột bằng cách kích đúp vào giá trị đó Bước 2: Nhấn Filter By Selection, bạn sẽ được kết quả: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 31
  • 32. Bài giảng Access 3.2. Sử dụng bộ hỏi (Queries) Một vài ví dụ về các bộ hỏi lựa chọn phổ biến: Giáo vụ khoa muốn tìm ra danh sách những sinh viên có điểm thi lần 1 môn Hệ quản trị cơ sở dữ liệu <5 để lập danh sách thi lại. Trưởng phòng kinh doanh của một công ty muốn có danh sách của tất cả các nhà cung cấp có bán tất cả các vật dụng cần thiết cho một công việc cụ thể. 3.2.1. Lựa chọn một số trường cụ thể Trong tab Tables, chọn bảng, sau đó chọn Query như sau: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 32
  • 33. Bài giảng Access Hoặc chọn tab Queries rồi nhấn chọn New Hộp thoại sau sẽ xuất hiện: Trong hộp thoại New Query, nhấn chọn Simple Query Wizard rồi nhấn OK, hộp thoại Simple Query Wizard xuất hiện: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 33
  • 34. Bài giảng Access 1. Chọn bảng nguồn dữ liệu 2. Chọn trường trong bảng rồi nhấn phím > chuyển sang danh sách của bộ hỏi Hộp thoại tiếp theo xuất hiện: Nhấn chọn Detail để có bộ hỏi chi tiết, sau đó nhấn phím Next, hộp thoại thứ ba của Simple Query Wizard xuất hiện, bao gồm ba mục: • Yêu cầu bạn đặt tên cho bộ hỏi • Báo rằng đồ thuật đã đủ thông tin để tạo bộ hỏi Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 34
  • 35. Bài giảng Access • Hỏi bạn muốn mở bộ hỏi để xem thông tin hay mở bộ hỏi để chỉnh thiết kế của bộ hỏi. Kết quả chúng ta được như sau: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 35
  • 36. Bài giảng Access 3.2.2. Chọn một số khoản tin cụ thể Nếu muốn lựa chọn các trường của một số khoản tin cụ thể, ta làm như sau: Bước 1: Trong cửa sổ CSDL, nhấn vào thanh Queries để nhìn danh sách các bộ hỏi, nhấn đúp vào phím Create Query In Design View (tạo bộ hỏi trong chế độ thiết kế). Kết quả: Access sẽ hiển thị hộp thoại Show Table: Bước 2: Chọn bảng Students, nhấn vào nút Add để bổ sung bảng này vào danh sách các bảng dữ liệu nền cho bộ hỏi. Sau đó, nhấn nút Close. Kết quả là, trên cửa sổ màn hình xuất hiện một cửa sổ thiết kế bộ hỏi với thanh tựa đề cho biết đây thuộc loại bộ hỏi chọn lọc (Select Query). Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 36
  • 37. Bài giảng Access Nửa bên trên, ta thấy có hộp Students liệt kê tất cả các trường trong bảng Students, dấu hoa thị đại diện cho tất cả các trường. Phía bên dưới của cửa sổ là một bảng ô lưới, được gọi là QBE (Query By Example) trợ giúp cho bạn thiết kế bộ hỏi. Bước 3: Đưa các trường vào lưới. Test thử việc hiển thị các trường bằng cách check vào dòng Show, nhấn nút Run để chạy thử. Trong cột ClassID, dòng Criteria, nhập số 2 vào, chạy thử để xem kết quả Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 37
  • 38. Bài giảng Access Nhập chuỗi "Phạm Ngọc Sáng" vào dòng Criteria, cột StudentName: Tiêu chuẩn Criteria không phân biệt xâu chữ hoa và chữ thường nên kết quả như nhau khi ta viết "Phạm Ngọc Sáng" hay "PHạm NGọc SáNg". Khi bạn nhập dữ liệu xong, Access tự bao giá trị bởi một cặp ngoặc kép. Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 38
  • 39. Bài giảng Access 3.2.3. Kí tự đại diện "*" 3.2.4. Kí tự "?" đại diện cho duy nhất một kí tự. Like "CNTT-K4?" 3.2.5. Sử dụng các toán tử toán học Chương trình Access cho phép bạn sử dụng các toán tử toán học để nhập tiêu chuẩn lựa chọn như dấu =, dấu <, >, <=, >=. Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 39
  • 40. Bài giảng Access >#10/10/1982# 3.2.6. Sử dụng các toán tử logic a. Toán tử And Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 40
  • 41. Bài giảng Access b. Toán tử Or Nếu bạn nhập nhiều cột, Access hiểu rằng bạn muốn lọc ra các khoản tin thỏa mãn tất cả các tiêu chuẩn đó. Trong trường hợp bạn muốn đưa ra điểm HệQTCSDL là 8 hoặc 10 thì sao? 8 Or 10 Một trường hợp khác: Đưa ra StudentID mà điểm HệQTCSDL là 10 hoặc điểm Hóa học là 8 (phép hoặc trên 2 thuộc tính): 10 8 Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 41
  • 42. Bài giảng Access c. Toán tử Not và toán tử Null Bạn sử dụng toán tử Not để xác định các khoản tin không thỏa mãn một tiêu chuẩn nào đó, bạn sử dụng toán tử Null để xác định tất cả các khoản tin chưa được nhập giá trị (còn trống) cho một trường xác định. Thử nhập vào là Not 10 và Not<10 3.2.7. Sắp xếp với bộ hỏi Quan sát lại bảng Mark, chúng ta thấy rằng, các bản ghi được sắp xếp theo StudentID, còn điểm môn Hệ QTCSDL và Hóa học thì không theo một trật tự nào cả. Bây giờ chúng ta sẽ sắp xếp theo các cột này. Ascending Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 42
  • 43. Bài giảng Access 3.3. Sử dụng báo biểu (Reports) Tạo báo biểu cũng tương tự như tạo biểu mẫu (form). 3.3.1. Tạo AutoReports Chúng ta bắt đầu tạo một báo biểu với bảng Lecturers. Trong tab Table, chọn bảng Lecturers, rồi nhấn chọn AutoReports Kết quả như sau: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 43
  • 44. Bài giảng Access Chuyển sang chế độ Design để xem: 3.3.2. Tạo báo biểu với đồ thuật báo biểu Nhấn Design, hộp thoại sau xuất hiện: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 44
  • 45. Bài giảng Access Nhấn Next. Chọn Faculty, nhấn phím > để gom nhóm theo thuộc tính này. Nhấn Next. Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 45
  • 46. Bài giảng Access Lựa chọn rồi nhấn Next. Lần lượt chọn từng Layout để xem. Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 46
  • 47. Bài giảng Access Nhấn Finish, chuyền sang chế độ view để xem kết quả (hoặc chọn Preview the Report rồi nhấn Finish). Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 47
  • 48. Bài giảng Access Khi nhấn chọn New để tạo báo biểu mới, ta thấy có các lựa chọn sau: Loại báo biểu tự động Columnar tạo ra các nhãn và các điều kiểm được xếp hàng dọc từ trên xuống dưới. Loại báo biểu tự động Tabular tạo ra một báo biểu tự động với các nhãn và điều kiểm sắp xếp theo hàng ngang. 3.4. Hiệu chỉnh báo biểu Tương tự như hiệu chỉnh form 3.5. Tạo Mailing Labels Các bước như sau: Chọn tab Reports, nhấn New: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 48
  • 49. Bài giảng Access Hộp thoại sau xuất hiện: Chọn Label Wizard, chọn nguồn dữ liệu là bảng Students. Nhấn OK. Label Wizard hiển thị hộp thoại đầu tiên của nó, hỏi xem bạn muốn tạo nhãn chuẩn hay tùy biến, kích cỡ, đơn vị đo lường cùng các thông tin tương tự: 3. Chọn kiểu nhãn 1. Chọn đơn vị đo lường 2. Chọn loại nhãn Nhấn Next, hộp thoại thứ hai xuất hiện: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 49
  • 50. Bài giảng Access Sau khi lựa chọn các giá trị cho phù hợp, nhấn Next. Hộp thoại thứ ba xuất hiện: Nhấn chọn các mục tương ứng, đưa sang Prototype label. Chú ý, nếu muốn xuống dòng thì trước khi đưa sang, ta nhấn Enter. Nhấn Next, hộp thoại thứ tư xuất hiện, cho bạn biết có thể sắp xếp các nhãn sử dụng: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 50
  • 51. Bài giảng Access Sau khi lựa chọn, nhấn Next. Hộp thoại tiếp theo xuất hiện: Nhấn Finish để hoàn tất. Kết quả: Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 51
  • 52. Bài giảng Access 3.6. Sử dụng trang truy cập dữ liệu Giới thiệu cho sinh viên CSDL mẫu Northwind trong Access. Nguyễn Hồng Phương – Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin, ĐH Bách Khoa Hà Nội 52
  • 53. Bài giảng Lập trình trong Access Chương 4 Lập trình trên Access 4.1 Lập trình đơn giản bằng Macro Macro: tập các thao tác thường được dùng trong các xử lý dữ liệu, được chuyển thành các hành động và ta có thể sử dụng nó thay vì phải viết một đoạn chương trình xử lý. Macro thường được gắn với các sự kiện của đối tượng cơ sở dữ liệu như Form, Report. Macro cũng được đưa vào để tạo Menu cho chương trình. 4.1.1. Tạo Macro mới Tại cửa sổ Database, chọn Macro, sau đó chọn New. Hộp thoại tạo mới Macro xuất hiện: Thực hiện Macro bằng một trong ba cách: • Khi khởi động cơ sở dữ liệu. • Khi kích hoạt nút lệnh hay chọn một mục trong Menu Pull Down. • Khi kích hoạt một sự kiện nào đó. Khi ra lệnh thực hiện Macro các hành động được thực hiện từ trên xuống dưới. 4.1.2. Các hành động trong Macro Có khoảng 50 hành động Macro. Một số những hành động thông dụng: Addmenu: Thêm một cột mới cho Menu. Các tham số của hành động này: Tên mục chọn trên màn hình (Menu Name) Tên macro ứng với cột (Menu Macro Name) Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 1
  • 54. Bài giảng Lập trình trong Access Thông báo trên dòng trạng thái (Status Bar Text) Close: Đóng cửa sổ Form, Report, Table… Các tham số của hành động này: Kiểu đối tượng (Object Type) Tên đối tượng (Object Name) Cách ghi (Save) ApplyFilter: Sử dụng bộ lọc trên Form. Các tham số: Tên truy vấn lọc (Filter Name) Điều kiện lọc (Where Condition) GotoRecord: chuyển con trỏ bản ghi đến bản ghi trước, sau, đầu, cuối hoặc bản ghi có số hiệu nào đó. Các tham số: Kiểu đối tượng (Object Type) Tên đối tượng (Object Name) Bản ghi (Record) Offset: số hay biểu thức chỉ bản ghi muốn chuyển tới. Maximize: phóng to cực đại cửa sổ hiện hành. Minimize: thu nhỏ cực tiểu cửa sổ hiện hành. MoveSize: thay đổi kích thước cửa sổ hiện hành. MsgBox: hiện thông báo ra màn hình. Các tham số: Message: nội dung thông báo đưa ra. Beep: sẽ phát ra tiếng kêu nếu là yes, ngược lại thì không. Type: kiểu icon hiển thị, gồm: None, Critical, Warning?. Warning! và Information. Title: tiêu đề của cửa sổ thông báo. OpenForm: mở form, gồm có 6 tham số: Form Name: tên form cần mở, chọn trong danh sách. View: mở form ở một trong bốn chế độ: Design, Form (ngầm định), Datasheet, Print. Filter Name: áp dụng bộ lọc, có thể là query hoặc một bộ lọc được lưu trữ như là một query. Sử dụng bộ lọc này để giới hạn hoặc sắp xếp các bản ghi cho form. Where Condition: Điều kiện lọc. Nhập vào một mệnh đề WHERE hoặc một biểu thức (expression) chọn ra các bản ghi cho form. Data Mode: phương thức hiện dữ liệu, có thể thêm (Add), sửa (Edit) hay chỉ đọc (Read Only). Window Mode: kích thước của cửa sổ, gồm: Normal (ngầm định), Hidden, Icon, Dialog. OpenReport: mở báo cáo. Các tham số giống như OpenForm, gồm: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 2
  • 55. Bài giảng Lập trình trong Access Report Name View Filter Name Where Condition SetValue: đặt giá trị cho một trường hoặc một control nào đó. RepaintObject: cập nhật lại control khi control khác thay đổi. Requery: thực hiện lại truy vấn nguồn của control để cập nhật lại giá trị. Tham số: Control Name RunApp: thực hiện một ứng dụng trong Window. Tham số: Command Line: đường dẫn tới tệp .exe RunCode: thực hiện chương trình viết bằng VBA RunCommand: thực hiện một mục chọn trên menu chính của Access. RunMacro: thực hiện một Macro. RunSQL: thực hiện lệnh SQL. SetWarnings: bật / tắt chế độ hiển thị thông báo của hệ thống ra màn hình ShowToolbar: bật / tắt các thanh công cụ chuẩn của Access. ShowAllRecords: hủy bỏ mọi thao tác lọc dữ liệu trên form, bảng hay kết quả truy vấn. TransferDatabase: chuyển dữ liệu giữa tệp CSDL hiện hành và tệp CSDL khác được tạo bởi Excel, Access hay hệ quản trị CSDL khác thông qua ODBC (tương tự chức năng xuất nhập khẩu trên Menu chính). TransferText: chuyển dữ liệu giữa bảng và tệp văn bản. 4.1.3 Ứng dụng của Macro: Xử lý các sự kiện Tạo Menu: Tạo một macro tương ứng với Menu chính. Có thể tạo các macro khác. Macro tương ứng với Menu chính sẽ gọi đến các macro khác này. Ví dụ về tạo Menu: Xây dựng chương trình quản lí cán bộ gồm các chức năng sau: Nhập số liệu Khai thác Kết thúc chương trình DS cán bộ Tìm kiếm Về Access DS tỉnh In DSCB Về Window DS chức vụ trong đó, "Tìm kiếm" là menu con gồm bốn chức năng: Theo chuyên môn Theo ngoại ngữ Theo năm sinh Tìm kiếm tổng hợp Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 3
  • 56. Bài giảng Lập trình trong Access Chức năng "Tìm kiếm tổng hợp" sẽ tìm kiếm theo cả ba yếu tố là chuyên môn, ngoại ngữ và năm sinh. Trước hết, chúng ta tạo một số bảng chứa dữ liệu để dùng cho việc tạo ví dụ về Menu. Các bảng cần xây dựng như sau: Bảng thứ nhất DSCB (Danh sách cán bộ) gồm các trường và kiểu như hình minh họa dưới đây: Bảng thứ hai là DSTINH (danh sách tỉnh) gồm hai trường: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 4
  • 57. Bài giảng Lập trình trong Access Bảng thứ ba DSCV (danh sách chức vụ) gồm các trường: Các truy vấn tham số như sau: Truy vấn NĂM SINH dùng để tìm kiếm theo năm sinh: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 5
  • 58. Bài giảng Lập trình trong Access Truy vấn NGOẠI NGỮ: dùng để tìm kiếm theo ngoại ngữ Truy vấn CHUYÊN MÔN: dùng để tìm kiếm theo chuyên môn Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 6
  • 59. Bài giảng Lập trình trong Access Báo biểu: Báo biểu In DSCB lấy bảng DSCB làm nền, dùng để thực hiện chức năng in danh sách cán bộ. Báo biểu được thiết kế như sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 7
  • 60. Bài giảng Lập trình trong Access Các mẫu biểu: Form [MB DSCB] buộc vào bảng DSCB, được dùng như một SubForm của Form TKCB (sẽ xây dựng ngay sau đây). Form [MB DSCB] dùng để thể hiện các cán bộ thỏa mãn các điều kiện về năm sinh, ngoại ngữ và chuyên môn. Form được thiết kế như sau: Form TKCB (Tìm kiếm cán bộ) kiểu Unbound (không buộc với một nguồn dữ liệu nào) dùng như form chính, gồm bốn điều khiển: ba điều khiển TextBox được đặt tên là NS, NN, CM và một điều khiển SubForm có dạng như sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 8
  • 61. Bài giảng Lập trình trong Access Đặt lại hai thuộc tính của SubForm [MB DSCB] như sau: • Link Child Fields: NAM SINH, NGOAI NGU, CHUYEN MON. • Link Master Fields: NS, NN, CM. Form CTQLCB (chương trình quản lí cán bộ) dùng để bắt đầu thực hiện chương trình. Chúng ta sẽ tạo Macro [MENU CHINH], sau đó đưa vào thuộc tính Menu Bar của Form này., khi thực hiện mẫu biểu, ta sẽ nhận được hệ menu của chương trình. Form CTQLCB được thiết kế như sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 9
  • 62. Bài giảng Lập trình trong Access Các Macro dùng để xây dựng hệ Menu: Macro [MENU CHINH] gồm các hành động: Action Menu Name Menu Macro Name AddMenu Nhập số liệu SO LIEU AddMenu Khai thác KHAI THAC AddMenu Kết thúc chương trình KET THUC Ta thiết kế Macro như sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 10
  • 63. Bài giảng Lập trình trong Access Macro [SO LIEU] gồm các hành động sau: Macro Name Action Table Name Ds Cán bộ OpenTable DSCB Ds Tỉnh OpenTable DS TINH Ds Chức vụ OpenTable DSCV Macro được thiết kế như sau: Macro [KHAI THAC] gồm các hành động sau: Macro Name Action Tìm kiếm AddMenu In DSCB OpenReport Các tham số của hành động AddMenu như sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 11
  • 64. Bài giảng Lập trình trong Access Các tham số của hành động OpenReport: Macro [TIM KIEM] gồm các hành động sau: Macro Name Action Query/Form Name Theo chuyên môn OpenQuery CHUYEN MON Theo ngoại ngữ OpenQuery NGOAI NGU Theo năm sinh OpenQuery NAM SINH Tìm kiếm tổng hợp OpenForm TKCB Macro được thiết kế như sau: Macro [KET THUC] gồm các hành động sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 12
  • 65. Bài giảng Lập trình trong Access Chương trình hoạt động như sau: Khi form CTQLCB hiện lên thì hệ menu cũng hiện theo. Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 13
  • 66. Bài giảng Lập trình trong Access 4.2 Sử dụng bảng công tắc (Switchboard) Bảng công tắc cho phép nhanh chóng truy cập những thành phần được sử dụng thường xuyên trong CSDL mà không cần phải hiểu những thành phần đó là gì và chúng liên quan với nhau ra sao. 4.2.1 Tạo một bảng công tắc đơn giản Trong Database Window, từ Menu chính nhấn vào Tools / Database Utilities / Switchboard Manager Chọn Yes khi Access báo không tìm thấy bảng công tắc nào và hỏi xem có muốn tạo mới không ? Nhấn chọn Edit để hiệu chỉnh bảng công tắc Nhấn vào phím New để bổ sung mục công tắc mới Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 14
  • 67. Bài giảng Lập trình trong Access Cứ lần lượt làm như vậy với các chức năng khác. Kết quả ta có bảng công tắc như sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 15
  • 68. Bài giảng Lập trình trong Access 4.2.2 Hiệu chỉnh một bảng công tắc Ta có thể thay đổi định dạng của bảng công tắc bằng nhiều cách khác nhau: Trong chế độ thiết kế, ta kích chuột phải, chọn Fill/Back Color để thay đổi màu nền. Để chèn hình ảnh vào: Từ Menu chính, chọn Insert/ Picture... 4.3 Ngôn ngữ lập trình VBA(Visual Basic for Application) 4.3.1 Đặc điểm và vai trò của chương trình Các chương trình Access VBA được tổ chức và hoạt động trong môi trường Access nhằm xây dựng các ứng dụng Access phức tạp hơn, hoàn chỉnh hơn sau khi đã sử dụng các công cụ của Access. Quá trình lập trình được thực hiện trên nền của một chương trình đã được tạo bằng các công cụ của Access (Table, Form, Query, Report, Macro). 4.3.2. Tổ chức chương trình Các đoạn mã (code) được viết trong các module. Có hai loại module: module của Form/Report và module chung. Module gồm các thủ tục và hàm . Thủ tục trong module của Form/Report gồm có hai loại: thủ tục xử lý sự kiện và thủ tục thông thường. Các thủ tục thông thường và các hàm của các module được sử dụng thông qua lời gọi. Thủ tục xử lý sự kiện chỉ thực thi khi sự kiện đó xảy ra. Phương pháp lập trình hướng sự kiện: Lập các thủ tục tương ứng với từng sự kiện. Trong Access, ta có thể xử lý sự kiện trên các đối tượng sau: Form, Report, Control của form. 4.3.3 Phân loại sự kiện Có ba loại sự kiện: sự kiện trên Form, sự kiện trên Report và sự kiện trên control của Form/Report. Một số ví dụ về sự kiện: Các sự kiện trên Form Open: Xảy ra khi form được mở, các điều khiển chưa được tải lên form. Có thể hủy bỏ không mở nữa bằng cách đặt giá trị cho tham số Cancel. Tuy chưa tải các điều khiển lên form nhưng form được coi là đang mở, do đó có thể sửa thiết kế. Load: Xảy ra khi form đã mở, điều khiển đã tải lên form. Thường xử lý khi muốn kiểm tra mật khẩu truy nhập, ẩn hiện một số điều khiển. Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 16
  • 69. Bài giảng Lập trình trong Access Timer: Sự kiện xảy ra một cách định kỳ sau một khoảng thời gian xác định bởi thuộc tính Time Interval. Các sự kiện trên Report Open: Xảy ra mở báo cáo, tương tự sự kiện open của form. Thích hợp để thay đổi một số điểm trong thiết kế báo cáo, chẳng hạn tiêu đề, nguồn dữ liệu. Close: Xảy ra khi đóng báo cáo No Data: nguồn dữ liệu không có bản ghi nào. Có thể không in hoặc mở báo cáo đó bằng cách tác động lên tham số cancel. Các sự kiện trên điều khiển (control) Change: Có ở những điều khiển mà giá trị có thể thay đổi như hộp văn bản... Sự kiện này xảy ra khi giá trị của điều khiển bị thay đổi. AfterUpdate: Xảy ra sau sự kiện Change, khi người dùng chấp nhận sự thay đổi bằng cách nhấn enter hoặc làm mất con trỏ. GotFocus, LostFocus: Xảy ra khi điều khiển có hoặc mất con trỏ. Sự kiện này cũng xảy ra trên form chứa điều khiển. 4.3.4. Cấu trúc của module Module chuẩn (còn gọi là module chung) Các tùy chọn: Option Base 0/1: Xác định cận dưới ngầm định của mảng là 0 hay 1. Option Explicit: Không cho phép khai báo ngầm định các biến. Option Compare Text/Binary: Cách so sánh xâu kí tự. Khai báo các hằng, biến, mảng cấp chương trình: dùng từ khóa Public/Global. Khai báo các hằng, biến, mảng cấp module: dùng từ khóa Dim/Private. Các thủ tục/hàm phạm vi sử dụng cấp chương trình. Các thủ tục/hàm phạm vi sử dụng cấp module: dùng từ khóa Private. Để tạo module: Chọn tab Modules / New. Cửa sổ soạn thảo mã chương trình sẽ hiện ra như sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 17
  • 70. Bài giảng Lập trình trong Access Module lớp (module của Form/Report) Các tùy chọn: Option Base 0/1: Xác định cận dưới ngầm định của mảng là 0 hay 1. Option Explicit: Không cho phép khai báo ngầm định các biến. Option Compare Text/Binary: Cách so sánh xâu kí tự. Khai báo các hằng, biến, mảng cấp module: dùng từ khóa Dim/Private. Các thủ tục xử lý sự kiện Các thủ tục/hàm thông thường 4.3.5 Cấu trúc của thủ tục và hàm Cấu trúc của một thủ tục thường [Static][Public][Private] Sub<Tên thủ tục>(<Danh sách các tham số và kiểu>) [Các câu lệnh] [Exit Sub] [Các câu lệnh] End Sub Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 18
  • 71. Bài giảng Lập trình trong Access Cấu trúc của một hàm [Static][Public][Private] Function<Tên hàm>(<Danh sách các tham số>) As Kiểu [Các câu lệnh] [Exit Function] [Các câu lệnh] End Function Cấu trúc một thủ tục xử lí sự kiện Sự kiện trên Form Private Sub Form_<Tên sự kiện>(<Danh sách các tham số và kiểu>) [Các câu lệnh] End Sub Sự kiện trên Report Private Sub Report_<Tên sự kiện>(<Danh sách các tham số và kiểu>) [Các câu lệnh] End Sub Sự kiện trên control Private Sub <Tên điều khiển>_<Tên sự kiện>(<Danh sách các tham số và kiểu>) [Các câu lệnh] End Sub 4.3.6 Các quy định khi viết chương trình VBA Mỗi lệnh thường viết trên một dòng. Nếu muốn xuống dòng ta dùng dấu gạch dưới “_” Mỗi dòng được phép viết nhiều lệnh, khi đó các lệnh phân cách nhau bằng dấu “:” Không phân biệt chữ hoa hay chữ thường. Cách viết chú thích: Chú thích trên toàn bộ dòng: mở đầu dòng bằng dấu nháy đơn (có thể dùng từ Rem thay cho dấu nháy đơn như trong các phiên bản trước). Chú thích trên phần còn lại của dòng: phần chú thích bắt đầu bằng dấu nháy đơn. 4.3.7 Dịch và chạy chương trình Dịch chương trình: Khi kết thúc mỗi dòng lệnh, Access sẽ tự động kiểm tra cú pháp của dòng lệnh đó. Để dịch toàn bộ chương trình, ta chọn Debug từ Menu chính ->chọn Compile Chạy chương trình: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 19
  • 72. Bài giảng Lập trình trong Access Thủ tục xử lý sự kiện kích hoạt sự kiện Thủ tục và hàm khác có thể chạy thử từ của sổ Immediate Window (mở cửa sổ này từ Menu View hoặc nhấn tổ hợp phím Ctrl + G). Gõ vào như sau: <Tên thủ tục><danh sách các tham số thực sự> ?<Tên hàm>(<danh sách các tham số thực sự>) 4.3.8 Cách gọi chương trình con trong VBA Gọi thủ tục <Tên thủ tục><Danh sách tham số thực sự> Call <Tên thủ tục>(<Danh sách tham số thực sự>) Các tham số thực sự có thể không đặt đúng trình tự mà tham số hình thức tương ứng xuất hiện trong chương trình con. Khi đó, ta viết danh sách tham số thực sự dưới dạng: <Tên tham số hình thức>:=<tham số thực sự>[,<Tên tham số hình thức>:=<tham số thực sự>…] Gọi hàm Lời gọi hàm xuất hiện trong biểu thức với quy cách như sau: <Tên hàm>(<Danh sách các tham số thực sự>) Khi ta không quan tâm tới giá trị mà hàm trả lại, có thể gọi hàm như thủ tục: <Tên hàm><Danh sách các tham số thực sự> 4.4 Các kiểu dữ liệu, hằng, biến, mảng dùng trong chương trình 4.4.1 Các kiểu dữ liệu Số nguyên: Integer (%), Long (&), Byte Số thực: Single (!), Double (#) Logic: Boolean Tiền tệ: Currency (@) Xâu kí tự: String ($), String*n Ngày/giờ: Date Variant: Biến thuộc kiểu dữ liệu này có thể nhận giá trị là số, xâu kí tự, ngày/giờ hoặc giá trị Null. 4.4.2 Quy tắc đặt tên biến Bao gồm các chữ cái, chữ số và dấu gạch dưới Kí tự đầu phải là chữ cái Không được trùng với các từ dành riêng của Access Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 20
  • 73. Bài giảng Lập trình trong Access Không dùng kí hiệu .!@&%#$ Tối đa 255 kí tự 4.4.3 Khai báo biến Nếu đoạn mã trên vùng đầu của module, ta sử dụng tùy chọn Option Explicit thì các biến phải được khai báo tường minh, nghĩa là biến có kiểu xác định. Ngược lại, nếu không có tùy chọn trên, các biến không khai báo sẽ ngầm định có kiểu là Variant. Khai báo biến bằng lệnh Dim: Dạng lệnh như sau: Dim <tên biến>[As<kiểu>][,<tên biến>[As<kiểu>]..] Ví dụ: Dim a As Integer, s As string Biến tĩnh: ta thay từ khóa Dim bằng từ khóa Static. Biến toàn cục: ta thay từ khóa Dim bằng từ khóa Public. Biến địa phương: ta thay từ khóa Dim bằng từ khóa Private. 4.4.4 Mảng Cách khai báo Trong hàm/thủ tục Dim/ReDim/Static <Tên_mảng>(Chỉ số 1, chỉ số 2,..., chỉ số n) [As <Kiểu>] Trong phần khai báo của đơn thể Form/Report Dim/Private <Tên_mảng>(Chỉ số 1, chỉ số 2,..., chỉ số n) [As <Kiểu>] Trong phần khai báo của đơn thể dùng chung Dim/Private/Public <Tên_mảng>(Chỉ số 1, chỉ số 2,..., chỉ số n) [As <Kiểu>] Hai cách xác định miền giá trị của chỉ số Cách 1: Dùng câu lệnh Option base 0/1 viết trong phần khai báo. Theo cách này, ta quy định chỉ số cận dưới là 0 hoặc 1. Ví dụ: Option base 0 Dim a(5) ‘ Chỉ số từ 0 đến 5 Option base 1 Dim b(6) As Integer‘ Chỉ số từ 1 đến 6 Cách 2: Dùng cách viết Cận_dưới to Cận_trên Ví dụ: Option base 1 Dim a(4,-2 to 5,6) sẽ khai báo một mảng 3 chiều kiểu Variant, trong đó: Chỉ số thứ nhất chạy từ 1 đến 4 Chỉ số thứ hai chạy từ -2 đến 5 Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 21
  • 74. Bài giảng Lập trình trong Access Chỉ số thứ ba chạy từ 1 đến 6 Chú ý: Các cận đều phải là hằng số nguyên và có thể nhận giá trị âm. Miền giá trị của chỉ số mảng nằm trong khoảng –32768 đến 32767. Phạm vi sử dụng của mảng Cấp thủ tục:Khai báo trong thủ tục Cấp đơn thể: Khai báo trong phần khai báo của đơn thể, dùng từ khóa Private hoặc Dim. Cấp chương trình: Khai báo trong phần khai báo của đơn thể sử dụng chung, dùng từ khóa Public. Mảng động Ta khai báo như sau: Dim/Private/Public <Tên_mảng> [As <Kiểu>] Khi nào dùng mảng động, ta dùng ReDim để xác định chính xác chiều và kích thước mỗi chiều. Kích thước mỗi chiều có thể cho bởi các biến hoặc biểu thức. Ví dụ: Redim a(1 to n,m) Đối là mảng: Đối mảng được khai báo theo cách mảng động, ví dụ: Sub Nhap(a()as Double, n as Integer) Function max(a()as Double, n as Integer) As Double Trong lời gọi: dùng tên mảng, ví dụ: Dim a(10) as Double, n as Integer, gt as Double Nhap a,n ‘Gọi thủ tục gt = max(a,n) ‘ Gọi hàm 4.4.5 Kiểu tự định nghĩa (tự tạo) Định nghĩa kiểu Tương tự kiểu bản ghi của Pascal hay Struct của C, để định nghĩa một kiểu, ta sử dụng cấu trúc sau: [PUBLIC/PRIVATE] TYPE Tên_Kiểu Tên_thành_phần As Kiểu Tên_thành_phần As Kiểu ....... Tên_thành_phần As Kiểu END TYPE Chú ý: Không cho phép khai báo các thành phần kiểu đối tượng. Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 22
  • 75. Bài giảng Lập trình trong Access Thành phần của kiểu tự định nghĩa có thể là mảng. Có thể khai báo các mảng kiểu tự định nghĩa. Mệnh để TYPE chỉ được viết trong phần “Decleration Section” của đơn thể, do đó ta có thể dùng nó để khai báo các biến mảng trong toàn đơn thể. Phạm vi sử dụng Nếu dùng PUBLIC thì phạm vi sử dụng của kiểu tự định nghĩa là trong toàn chương trình. Nếu dùng PRIVATE thì phạm vi sử dụng của kiểu tự định nghĩa là trong toàn đơn thể chứa định nghĩa kiểu tự tạo. Mặc định là PUBLIC Trong đơn thể của Form/Report không cho phép định nghĩa kiểu tự tạo. Ví dụ: TYPE Point x AS Double y AS Double END TYPE TYPE Polygon n AS Integer p(1 to 100) AS Point END TYPE 4.5 Các phép toán 4.5.1 Số học Lũy thừa (^) Nhân (*), chia (/), chia lấy phần nguyên (), chia lấy phần dư (mod) Cộng (+), trừ (-) 4.5.2 So sánh Bằng (=), khác (<>), nhỏ hơn (<), lớn hơn (>), nhỏ hơn hoặc bằng (<=), lớn hơn hoặc bằng (>=). 4.5.3 Ghép xâu Phép + chỉ dùng ghép xâu kí tự. Phép & dùng ghép các kiểu dữ liệu khác nhau. Ví dụ: “Ha” + “ ” + “Noi” cho kết quả là chuỗi “Ha Noi” “1996” & “4” cho kết quả là chuỗi “19964” Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 23
  • 76. Bài giảng Lập trình trong Access “A” & 2 cho kết quả là chuỗi “A2” 5 & 6 cho kết quả là chuỗi “56” “A” + 4 sẽ sinh ra lỗi 4.5.4 Logic Not, And, Or, Xor, Imp (Implication), Eqv (Equivalance). Các phép toán trên có thể thực hiện trên các giá trị logic (True và False) hoặc trên các giá trị nguyên (sẽ thực hiện trên từng bit) theo quy tắc trong bảng sau: Thực hiện trên các giá trị logic (-1 là true, 0 là false) x y x And y x Or y x Xor y x Eqv y x Imp y 0 0 0 0 0 -1 -1 0 -1 0 -1 -1 0 -1 -1 0 0 -1 -1 0 0 -1 -1 -1 -1 0 -1 -1 Thực hiện trên các giá trị nguyên (theo từng bit) x y x And y x Or y x Xor y x Eqv y x Imp y 0 0 0 0 0 1 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 1 4.6 Các hàm thường dùng 4.6.1 Hàm toán học Fix(x) cho giá trị nguyên là phần nguyên của x. Ví dụ: Fix(3.5) = 3; Fix(-6.7) = -6 Int(x) cho giá trị nguyên lớn nhất không vượt quá x. Ví dụ: Int(3.5) = 3; Int(-6.7) = -7 Abs(x) cho giá trị tuyệt đối của x Rnd(n) cho số ngẫu nhiên từ 0 đến 1 Exp(x) cho giá trị ex Log(x) cho giá trị logarit cơ số e của x Sqr(x) tính căn bậc hai của x Atn(x) tính arctan của x Tan(x) tính tang của x Sin(x) tính sin của x Cos(x) tính cosin của x 4.6.2 Hàm xâu kí tự Space(n): xâu gồm n dấu cách. Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 24
  • 77. Bài giảng Lập trình trong Access Left[$](s,n): xâu gồm n kí tự trái nhất của xâu s. Right[$](s,n): xâu gồm n kí tự phải nhất của xâu s. Mid(s,i,n): xâu gồm n kí tự của s tính từ kí tự i. Len(s): độ dài xâu s. Instr(n,s,t,[c]): kiểm tra xem xâu t có là xâu con của xâu s tính từ kí tự thứ n, nếu có trả về vị trí đầu tiên gặp xâu t, nếu không thì trả về trị 0. Lcase(s): chuyển các chữ cái trong xâu s thành chữ thường. Ucase(s): chuyển các chữ cái trong xâu s thành chữ hoa. LTrim(s): bỏ khoảng trống bên trái xâu s. RTrim(s): bỏ khoảng trống bên phải xâu s. Trim(s): bỏ khoảng trống bên trái và bên phải xâu s. Str(numeric): đổi số thành chuỗi. Format(numeric, chuỗi định dạng): đổi số thành chuỗi theo định dạng. Chuỗi định dạng được dùng để quy định số chữ số thập phân như sau: “0.00” -> 2 chữ số thập phân; “0.000” -> 3 chữ số thập phân. 4.6.3 Hàm ngày giờ Date(): cho kết quả kiểu Variant chỉ ngày hệ thống. Date$(): cho kết quả kiểu chuỗi chỉ ngày hệ thống. Time(): cho kết quả kiểu Variant chỉ giờ hệ thống. Time$(): cho kết quả kiểu chuỗi chỉ giờ hệ thống. Now(): ngày giờ hiện hành. Day(d): ngày của d. Month(d): tháng của d. Year(d): năm của d. Weekday(d): thứ của ngày d. 4.6.4 Hàm cho kiểu dữ liệu Variant IsDate(x): trả về giá trị True nếu x có quy cách ngày, ngược lại trả về False. IsNumeric(x): trả về giá trị True nếu x có quy cách số, ngược lại là False. IsNull(x): trả về giá trị True nếu x là null. 4.6.5 Các hàm liên quan nhiều kiểu dữ liệu IIf(<Điều kiện>,<Biểu thức 1 >,<Biểu thức 2>) Nhận giá trị của biểu thức 1 nếu điều kiện đúng, nhận giá trị của biểu thức 2 nếu điều kiện sai. Choose(<Chỉ số>,<Biểu thức 1>,…,<Biểu thức n>) Chỉ số chỉ nhận giá trị từ 1 đến n. Hàm trả về giá trị của biểu thức i nếu chỉ số bằng i. Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 25
  • 78. Bài giảng Lập trình trong Access Format(<Biểu thức>,<Khuôn dạng>) Biểu diễn biểu thức bằng khuôn dạng đã chỉ ra. Khuôn dạng có sẵn như “Long Date”, “Standard” hoặc khuôn dạng tự xác lập như “DD/MM/YYYY”. 4.6.8 Hàm InputBox và MsgBox Hàm InputBox InputBox[$](<Lời nhắc>[,<Tiêu đề>][,<Giá trị ngầm định>][,<Tọa độ x>,<Tọa độ y>]) Hàm này dùng để nhập giá trị cho các biến nhớ. Nếu chọn OK, biến nhận giá trị được nhập, chọn Cancel biến nhận giá trị null. Nếu InputBox$ thì hàm trả về chuỗi được nhập vào. Ví dụ: để nhập bán kính của một đường tròn và gán cho biến R, ta có thể dùng hàm InputBox theo mẫu: R = InputBox("Nhap vao ban kinh","Cua so nhap du lieu") Ta sẽ nhận được hộp thoại như sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 26
  • 79. Bài giảng Lập trình trong Access Hàm MsgBox Cú pháp: MsgBox(<Lời nhắc>[,<Kiểu nút>][,<Tiêu đề>]) Lời nhắc là một biểu thức chuỗi, nội dung của nó sẽ được đưa ra hộp thoại. Chú ý: Xuống dòng dùng chr(10). Tiêu đề là một biểu thức chuỗi được hiển thị trong thanh tiêu đề của hộp thoại. Nếu bỏ qua đối số này thì tiêu đề sẽ là “Microsoft Access”. Kiểu nút: là một tổng các số nguyên dùng để xác định: các nút lệnh sẽ hiển thị, các biểu tượng, nút mặc định được chọn. Nhóm các nút lệnh gồm có: Giá trị Ý nghĩa 0 Hiển thị nút OK 1 Hiển thị các nút OK và Cancel 2 Hiển thị các nút Abort, Retry và Ignore 3 Hiển thị các nút Yes, No và Cancel 4 Hiển thị các nút Yes và No 5 Hiển thị các nút Retry và Cancel Nhóm các biểu tượng gồm có: Giá trị Ý nghĩa 0 Không hiện biểu tượng 16 Hiện biểu tượng Critical Message 32 Hiện biểu tượng Warning Query 48 Hiện biểu tượng Warrning Message 64 Hiện biểu tượng Information Message Nhóm nút mặc định được chọn gồm có: Giá trị Ý nghĩa 0 Nút đầu tiên (tính từ trái sang phải) 256 Nút thứ hai 512 Nút thứ ba Ví dụ: nếu kiểu nút = 4 + 16 + 256 thì trên hộp thoại sẽ hiện: Hai nút Yes và No, biểu tượng Critical Message, nút No được chọn sẵn: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 27
  • 80. Bài giảng Lập trình trong Access Kết quả ta nhận được: Chúng ta có thể gọi hàm trên theo cách gọi của thủ tục, khi đó ta không cần nhận giá trị trả về. Nếu chúng ta sử dụng hàm trên theo cách gọi hàm thì chúng ta sẽ nhận được giá trị trả về. Giá trị trả về của hàm tương ứng với các nút như sau: Giá trị hàm Nút được chọn 1 OK 2 Cancel 3 Abort 4 Retry 5 Ignore 6 Yes 7 No 4.7 Các cấu trúc lập trình 4.7.1 Lệnh If Viết trên một dòng: If <điều kiện> then [<nhóm lệnh 1>] [else<nhóm lệnh 2>] Viết trên nhiều dòng: If <điều kiện> then <nhóm lệnh 1> Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 28
  • 81. Bài giảng Lập trình trong Access [ else <nhóm lệnh 2>] End If 4.7.2 Lệnh Select Case Select Case <biểu thức> [Case <danh sách các giá trị 1>] [<nhóm lệnh 1>] … [Case <danh sách các giá trị n>] [<nhóm lệnh n>] [Case Else nhóm lệnh (n+1)] End Select Danh sách các giá trị có thể viết theo ba cách sau: Cách 1: Biểu thức 1, biểu thức 2,…, biểu thức k Ví dụ: 1.5, a+b, 8.6 thì danh sách các giá trị gồm ba số: 1.5, a+b và 8.6 Cách 2: Biểu thức 1 To biểu thức 2 Ví dụ: 2.2 To 10.2 thì miền giá trị gồm các số trong đoạn từ 2.2 đến 10.2 “A” To “C” thì miền giá trị gồm các chuỗi có kí tự đầu là A, B và C. Cách 3: Is phép_so_ sánh biểu_thức Ví dụ: Is < a thì miền giá trị gồm các số nhỏ hơn a. Chú ý: Ta có thể kết hợp sử dụng nhiều lần cả ba cách trên để xác định một miền giá trị. Ví dụ: 3.2, 1.6, 10 To 15, Is < 1, Is > 200 thì miền giá trị gồm: Các số 3.2 và 1.6 Các số nằm trong đoạn [10, 15] Các số nhỏ hơn 1 và các số lớn hơn 200. Một ví dụ về Select Case Public Function Thu(ts As Date)As String Select Case Weekday(ts) Case 1 Thu = “Chu nhat” Case 2 Thu = “Thu hai” Case 3 Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 29
  • 82. Bài giảng Lập trình trong Access Thu = “Thu ba” Case 4 Thu = “Thu tu” Case 5 Thu = “Thu nam” Case 6 Thu = “Thu sau” Case 7 Thu = “Thu bay” End Select End Function 4.7.3 Vòng lặp xác định For ... Next For <biến> = <giá trị đầu> To <giá trị cuối> [Step<bước nhảy>] <các lệnh> [Exit For] <các lệnh> Next [biến đếm] Chú ý: Bước nhảy có thể âm hoặc dương. Nếu không dùng lựa chọn Step<bước nhảy> thì bước bằng 1. Toán tử Exit For dùng để thoát khỏi vòng lặp. 4.7.4 Vòng lặp xác định For Each Next For Each <phần tử> In <nhóm> <các lệnh> [Exit For] <các lệnh> Next <phần tử> Vòng lặp này dùng để duyệt lần lượt các phần tử trong nhóm. Nhóm có thể là mảng hoặc tuyển tập đối tượng (Collection). Nếu nhóm là mảng thì phần tử phải là biến kiểu Variant. Nếu nhóm là tuyển tập đối tượng thì phần tử có thể là một biến kiểu Variant hoặc một biến kiểu đối tượng chung (Object) hoặc biến kiểu đối tượng của tuyển tập. 4.7.5 Vòng lặp không xác định Do Loop Có các dạng sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 30
  • 83. Bài giảng Lập trình trong Access Dạng 1: Do [{While/Until}<điều kiện>] [<các lệnh>] [Exit Do] [<các lệnh>] Loop Dạng 2: Do [<các lệnh>] [Exit Do] [<các lệnh>] Loop[{While/Until}<điều kiện>] 4.7.6 Vòng lặp While Wend While <điều kiện> [<các câu lệnh>] Wend 4.7.7 Các lệnh nhảy và kết thúc chương trình Nhảy không điều kiện Cú pháp: Goto <Label> Sự hoạt động: Chuyển tới câu lệnh có nhãn Label và chương trình tiếp tục thực hiện từ lệnh này. Nhảy tới đoạn chương trình con Cú pháp: Gosub Label .... Label: .... Return “Trở về câu lệnh ngay sau Gosub” Sự hoạt động: Chuyển tới câu lệnh có nhãn Label và tiếp tục thực hiện từ lệnh này cho tới khi gặp Return thì quay trở lại câu lệnh đứng ngay sau Gosub. Nhảy có lựa chọn Cú pháp: On BT Goto/Gosub nhãn_1,..,nhãn_n Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 31
  • 84. Bài giảng Lập trình trong Access Trong đó BT là biểu thức nguyên và thoả mãn điều kiện 0≤BT≤255 Sự hoạt động: Nếu BT = 1 thì nhảy tới nhãn_1 Nếu BT = 2 thì nhảy tới nhãn_2 ....... Nếu BT = n thì nhảy tới nhãn_n Nếu BT = 0 hoặc BT > n thì bỏ qua On BT Goto/Gosub để thực hiện lệnh tiếp theo. Nếu BT < 0 hoặc BT > 255 thì có lỗi. Nhảy khi có lỗi Cú pháp: On Error Goto Label ..... Exit Sub Label: Xử lí lỗi Resume ⎩ ⎨ ⎧ nhan next ⎭ ⎬ ⎫ Hoạt động: Khi có lỗi, chương trình không dừng mà chuyển đến câu lệnh có nhãn Label. Các lỗi có thể xảy ra: Xóa một bảng / truy vấn không tồn tại. Tạo mới một bảng / truy vấn đã tồn tại. Nhận giá trị Null từ một ô điều khiển của form / report. Chia cho số 0. Và các lỗi khác... Khi gặp các lỗi này, chương trình bị rối loạn và có thể bị treo máy. Các hàm: Error$: cho biết lõi gì đã xảy ra. Err: cho biết số hiệu lỗi. Câu lệnh Resume: hướng dẫn sự hoạt động tiếp tục của chương trình, thường được viết theo hai cách: Resume Next Theo cách này, chương trình tiếp tục từ câu lệnh ngay sau câu lệnh gây lỗi. Resume Tiep_tuc Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 32
  • 85. Bài giảng Lập trình trong Access Chương trình tiếp tục từ câu lệnh có nhãn Tiep_tuc. Ví dụ: Thủ tục xóa một bảng có tên nhập vào từ bàn phím. Lỗi có thể gặp là bảng không tồn tại. Khi có lỗi, chương trình đưa ra thông báo và kết thúc thủ tục: Sub DeleteTable() Dim DB As Database Dim tableName As String Set DB = CurrentDB() On Error Goto Xu_li_loi tableName = InputBox("Input the name of the table that will be deleted:") DB.TableDefs.Delete tableName MsgBox “Table” + tableName + “was deleted” Exit_Program: Exit Sub Xu_li_loi: MsgBox “Table” + tableName + “is not available” MsgBox Error$ Resume Exit_Program End Sub 4.8 Các thao tác trên tệp Cho phép chuyển dữ liệu ra lưu trữ ở ngoài tệp mdb. Mở tệp: Tệp cần được mở trước khi thực hiện các thao tác trên nó. Để mở tệp, ta dùng mệnh đề OPEN: OPEN Tên_tệp [FOR Kiểu_tệp] [ACCESS quyền_truy_nhập] AS[#]Số_hiệu_tệp [LEN = Reclen] Giải thích các tham số: Tên_tệp: biểu thức chuỗi xác định tên tệp và đường dẫn, bắt buộc phải có tham số này. Ví dụ: “file01.ad”, “C:ABChoso.xyz” Kiểu_tệp: Xác định cách thức truy nhập trên tệp, gồm các giá trị sau: Giá trị Ý nghĩa Random Đây là kiểu tệp mặc đinh. Đọc ghi theo mẫu tin. Cho phép thực hiện cả ba thao tác: ReadWrite (default), ReadOnly, WriteOnly. Binary Cho phép đọc/ghi từ một vị trí bất kỳ tính theo byte trên tệp bằgn cách dùng mệnh đề GET (để đọc) và PUT (để ghi). Cho phép thực hiện cả ba thao tác: ReadWrite (default), ReadOnly, WriteOnly. Input Đọc trên các tệp tuần tự bằng cách sử dụng mệnh đề Input. Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 33
  • 86. Bài giảng Lập trình trong Access Output Ghi trên các tệp tuần tự bằng cách sử dụng mệnh đề Write. Append Ghi bổ sung trên các tệp tuần tự bằng cách sử dụng mệnh đề Write. Quyền_truy_nhập: Xác định quyền truy nhập trên tệp gồm: Giá trị Ý nghĩa Read Chỉ có quyền đọc Write Chỉ có quyền ghi Read Write Có quyền đọc và ghi. Chỉ đúng đối với các kiểu tệp Random và Binary. Số_hiệu_tệp: là một biểu thức nguyên có giá trị từ 1 đến 255. Sau khi mở tệp, số hiệu tệp sẽ gắn với tệp cho đến khi tệp được đóng lại. Mọi thao tác sẽ thực hiện thông qua số hiệu tệp. Reclen: là một biểu thức nguyên có giá trị từ 1 đến 32767. Đối này thực sự có tác dụng đối với kiểu tệp Random để xác định độ lớn của bản ghi (số kí tự trong mỗi bản ghi). Giá trị mặc định của Reclen là 128 byte. Ví dụ: Hàm kiểm tra sự tồn tại của tệp trong thư mục hiện hành, đối số là tên tệp cần kiểm tra. Hàm trả về True nếu tệp tồn tại, ngược lại là False. Đoạn mã có dùng hàm xác định một số hiệu tự do chưa dùng FreeFile: Function Ton_tai(Ten_tep As String) As Integer So_hieu As Integer So_hieu = FreeFile ‘Chọn một số hiệu chưa dùng Ton_tai = True On Error Goto Loi OPEN Ten_tep FOR Input AS So_hieu Close So_hieu ‘Đóng tệp Exit Function Loi: Ton_tai = False Resume Next End Function Đóng tệp Mệnh đề Close dùng để đóng 1 hoặc tất cả các tệp đang mở. Cú pháp như sau: Close [[#]Số_hiệu_tệp], [[#]Số_hiệu_tệp].... Nếu viết Close không kèm theo tham số gì thì có nghĩa là ta đóng tất cả các tệp đang mở. Ngoài ra, ta cũng có thể đóng tất cả các tệp đang mở bằng mệnh đề Reset. Ghi lên tệp tuần tự (văn bản) Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 34
  • 87. Bài giảng Lập trình trong Access Write #<số_hiệu_tệp>,[<danh sách biểu thức>] Mệnh đề này dùng để ghi dữ liệu kiểu số, chuỗi và kiểu DATE/TIME lên một tệp tuần tự. Mỗi câu lệnh Write sẽ ghi một dòng văn bản lên tệp. Dòng văn bản gồm các giá trị ứng với các biểu thức được phân cách nhau bởi dấu phẩy. Mỗi giá trị chuỗi được bao bọc trong 2 dấu nháy kép. Giá trị kiểu DATE được ghi lên tệp theo định dạng #2006-11-20# (tức là: năm-tháng-ngày). Giá trị kiểu TIME được ghi lên tệp theo dạng #10:27:39# (giờ:phút:giây). Một câu lệnh WRITE không kèm theo biểu thức sẽ ghi một dòng trống lên tệp. Kết quả, ta nhận được một tệp văn bản, nội dung của nó có thể xem được bằng các hệ soạn thảo văn bản. Ví dụ: Chúng ta sẽ viết một thủ tục ghi một số thứ lên một file với tên là “test.abc”, sau đó chúng ta sẽ kiểm tra nội dụng file này. Chú ý: thư mục “C:access” đã tồn tại. Dịch và chạy thử chương trình trong cửa sổ Immediate. Mở thư mục access trong ổ C ra, ta thấy có file “test.abc”. Dùng trình soạn thảo Notepad mở file này, ta có kết quả như sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 35
  • 88. Bài giảng Lập trình trong Access Đọc từ tệp tuần tự (văn bản) Input #<số_hiệu_tệp>,[<danh sách các biến>] Mệnh đề này dùng để đọc dữ liệu kiểu số, kiểu chuỗi và kiểu DATE/TIME từ một tệp văn bản và chứa vào các biến tương ứng với chú ý: dữ liệu trên tệp và biến tương ứng (biến chứa dữ liệu) phải cùng kiểu. Danh sách các biến phân cách nhau bởi dấu phẩy. Ví dụ: đọc tệp chứa các số sau: Ta viết chương trình như sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 36
  • 89. Bài giảng Lập trình trong Access Khi thực thi thủ tục trên, ta thu được kết quả như sau: Ghi trên tệp ngẫu nhiên / nhị phân Mệnh đề Put dùng để ghi giá trị của một biến (kiểu số, chuỗi và DATE/TIME) lên một tệp ngẫu nhiên / nhị phân. Kết quả, ta nhận được một tệp nhị phân. Cú pháp như sau: PUT #<số_hiệu_tệp>, [số_hiệu_bản_ghi ,] <tên_biến> trong đó: số_hiệu_bản_ghi: là một biểu thức nguyên dương biểu thị số hiệu bản ghi đối với tệp ngẫu nhiên (hoặc số hiệu byte đối với tệp nhị phân). Việc ghi sẽ thực hiện từ bản ghi hoặc byte này.. Nếu vắng mặt, việc ghi sẽ bắt đầu từ bản ghi hoặc byte hiện tại trên tệp. Bản ghi (hoặc byte) đầu ứng với số_hiệu_bản_ghi = 1. Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 37
  • 90. Bài giảng Lập trình trong Access Chú ý về độ dài của bản ghi: Độ dài của bản ghi được quy định bởi đối Len trong mệnh đề OPEN. Nó chỉ thực sự cần thiết đối với tệp Random. Cách xác định độ dài bản ghi: Với các biến có độ dài xác định (mọi kiểu trừ String) thì độ dài bản ghi cần lớn hơn hoặc bằng độ dài của biến. Riêng đối với biến kiểu chuỗi có độ dài biến đổi cần lường trước độ dài cực đại (số kí tự tối đa cần nhập). Độ dài bản ghi ≥ (độ dài cực đại + 2) (2 byte dùng để ghi nhận độ dài của chuỗi). Kết quả thực hiện: Đối với tệp ngẫu nhiên, mỗi câu lệnh PUT sẽ: Đưa nội dung của biến vào một phòng đợi có độ dài Len byte, sau đó ghi cả Len byte của phòng đợi lên tệp tại bản ghi thứ số_hiệu_bản_ghi. Nếu phòng đợi quá nhỏ không chứa được giá trị của biến thì sẽ thông báo lỗi: Bad Record Length. Đối với tệp nhị phân: Ghi giá trị của biến lên tệp tại byte thứ số_hiệu_bản_ghi. Số byte được ghi sẽ bằng độ lớn của biến. Đọc từ tệp ngẫu nhiên/ nhị phân Mệnh đề GET dùng để đọc dữ liệu từ một tệp Random / Binary và chứa vào một biến. Cú pháp như sau: GET #<số_hiệu_tệp>,[số_hiệu_bản_ghi ,] <tên_biến> trong đó: số_hiệu_bản_ghi: là một biểu thức nguyên dương biểu thị số hiệu bản ghi đối với tệp ngẫu nhiên (hoặc số hiệu byte đối với tệp nhị phân). Việc đọc sẽ thực hiện từ bản ghi hoặc byte này.. Nếu vắng mặt, việc đọc sẽ bắt đầu từ bản ghi hoặc byte hiện tại trên tệp. Bản ghi (hoặc byte) đầu ứng với số_hiệu_bản_ghi = 1. Chú ý: Đối với tệp Random, đối số Len trong mệnh đề OPEN để đọc cần bằng độ dài bản ghi trên tệp cần đọc. Dữ liệu chứa trên tệp và biến nhận dữ liệu tương ứng phải có cùng kiểu. Kết quả thực hiện: Đối với tệp ngẫu nhiên, mỗi câu lệnh GET sẽ: Đọc len byte từ tệp và chứa vào phòng đợi (có độ dài Len byte). Lấy một số byte từ phòng đợi (bằng độ dài của biến) và gán cho biến. Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 38
  • 91. Bài giảng Lập trình trong Access Đối với tệp nhị phân, mỗi câu lệnh GET sẽ đọc một số byte bằng độ dài của biến từ tệp và đưa vào biến. Ví dụ: Kết quả: Các hàm dùng trong thao tác tệp: Eof(<số_hiệu_tệp>): Hàm này trả về giá trị True nếu con trỏ tệp đặt tại cuối tệp, ngược lại, hàm trả về trị False. Lof(<số_hiệu_tệp>): cho biết độ dài của tệp tính theo byte. Ví dụ: để xác định số bản ghi trên một tệp Random, ta chia độ dài tệp cho độ dài bản ghi: Open “DSTS.xyz” For Random As #1 Len = 20 So_ban_ghi = LOF(1)/20 Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 39
  • 92. Bài giảng Lập trình trong Access Seek(<số_hiệu_tệp>): cho biết vị trí hiện tại của con trỏ tệp. Đó là một giá trị nguyên trong khoảng từ 1 đến 2147483647. Đối với tệp Random, hàm cho biết số hiệu của bản ghi tính từ 1 mà con trỏ tệp đang định vị. Đối với các tệp còn lại, hàm cho biết số hiệu byte tính từ 1 mà con trỏ tệp đang định vị. Mệnh đề Seek: SEEK [#]<số_hiệu_tệp>, Vị_trí trong đó, Vị_trí là số nguyên dương trong khoảng từ 1 đến 2147483647 xác định vị trí mà con trỏ tệp sẽ di chuyển tới. Đối với tệp Random, Vị_trí là số hiệu bản ghi tính từ 1. Đối với tệp Binary, Vị_trí là số hiệu byte tính từ 1. Chú ý: Nếu Vị_trí = 0 hoặc âm thì sẽ báo lỗi Nếu Vị_trí lớn hơn số bản ghi hiện có (Ví dụ: trên tệp chỉ có 6 bản ghi mà Vị_trí = 9) thì con trỏ tệp sẽ định vị tại cuối tệp. Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 40
  • 93. Bài giảng Lập trình trong Access Chương 5 Sử dụng đối tượng trong Access 5.1 Khái niệm đối tượng và tập hợp đối tượng 5.1.1 Các kiểu dữ liệu đối tượng Các kiểu dữ liệu đối tượng thường dùng của Access như sau: Form Report Control DBEngine, Workspace, DataBase, TableDef, QueryDef, Recordset, Index, Field, Parameter Connection, Command, Catalog, Table, Column, Key CommandBar, CommandBarControl, CommandBarButton,... Chúng ta cũng khai báo các biến kiểu đối tượng bằng lệnh Dim. 5.1.2 Tập hợp đối tượng Tập hợp đối tượng là đối tượng định sẵn của Access. Các đối tượng cùng kiểu là đối tượng con của tập hợp đối tượng. Tên: ta thêm “s” vào đằng sau. Ví dụ: Forms, TableDefs, QueryDefs... Để biểu diễn một đối tượng trong tập hợp, có những cách sau: <Tập hợp>(i), trong đó i = 0, 1, 2,... <Tập hợp>(“<Tên đối tượng>”) <Tập hợp>!<Tên đối tượng> (nếu tên đối tượng không có dấu cách) <Tập hợp>![Tên đối tượng] (nếu tên đối tượng có dấu cách) 5.1.3 Đối tượng khởi thuỷ. Cách biểu diễn các thành phần của một đối tượng Đối tượng khởi thủy không là đối tượng con của bất kỳ đối tượng nào. Đối tượng khởi thủy đứng đầu trong biểu diễn của các thành phần đối tượng Các đối tượng khởi thủy thường dùng là: Của Access: Forms, Reports Của DAO: DbEngine Của ADO: Connections, Catalog Của MsOffice: CommandBars Khi biểu diễn thành phần nào đó của đối tượng, phải tuân theo quy định sau: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 41
  • 94. Bài giảng Lập trình trong Access Xuất phát từ đối tượng khởi thủy -> Các đối tượng trực thuộc đối tượng vừa được biểu diễn -> Các thành phần của đối tượng. Nếu tên đối tượng không theo quy định về tên trong lập trình thì phải bao bằng cặp ngoặc vuông. 5.1.4 Một vài điểm đặc biệt khác Từ khóa Me Được dùng để chỉ đối tượng mà trên đó đoạn mã chương trình đang chạy. Nó có thể là form hoặc report. Tham chiếu đến đối tượng Để một biến đối tượng tham chiếu đến một đối tượng cùng kiểu, ta dùng lệnh Set: Set <tên biến đối tượng> = <biểu thức đối tượng> Lệnh With Tương tự như trong Pascal, chúng ta không cần viết tên đối tượng khi thực hiện thao tác. With <Đối tượng> [<Các lệnh>] End With 5.2 Đối tượng của Access 5.2.1 Phân cấp các đối tượng của Access Access Forms Controls Reports Controls DoCmd 5.2.2 Đối tượng DoCmd DoCmd.<Phương thức><Danh sách các tham số> Có thể phân biệt hai loại tham số: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 42
  • 95. Bài giảng Lập trình trong Access Tên của một đối tượng do người dùng tự đặt như tên bảng, tên Form.... Các hàng chuẩn của Access. Chúng ta sẽ có dịp biết đến các tham số này ngay dưới đây: Phương thức Close DoCmd.Close <Kiểu đối tượng>, <Tên đối tượng>, <Cách ghi> trong đó: <Kiểu đối tượng>: xác định kiểu đối tượng cần đóng, chọn trong các hằng chuẩn sau: acTable, acQuery, acForm, acReport, acMacro, acModule. <Tên đối tượng>: xác định tên của đối tượng cần đóng. <Cách ghi>: có ghi lại các thay đổi của đối tượng trước khi đóng hay không, chọn một trong các hằng: acSaveNo (không ghi), acSaveYes (có ghi), acSavePrompt. Ví dụ: DoCmd.Close acForm, “MainForm”, acSaveYes sẽ đóng mẫu biểu MainForm và ghi lại mọi thay đổi của mẫu biểu này trước khi đóng. Phương thức OpenForm DoCmd.OpenForm <Tên form>, <View>, <Tên bộ lọc>, <Điều kiện lọc>, <DataMode>, <WindowMode> <Tên form>: chuỗi biểu thị tên biểu thức cần mở. <View>: chọn trong các hằng sau: acDesign, acForm, acNormal (mặc định), acPreview. <Tên bộ lọc>: chuỗi biểu thị tên của một truy vấn dùng để săp xếp và/hoặc lọc ra các thông tin cần thiết. <Điều kiện lọc>: chuỗi chứa điều kiện chọn lọc thông tin. <DataMode>: chọn trong các hằng sau: acFormAdd, acFormEdit, acFormPropertySettings (mặc định), acFormReadOnly. <WindowMode>: chọn trong các hằng sau: acDialog, acHidden, acIcon, acWindowNormal (mặc định). Ví dụ: mở form “danh sach thi sinh” theo dạng form View để cập nhật dữ liệu cho những thí sinh có tổng điểm lớn hơn hoặc bằng 18, ta viết như sau: DoCmd.OpenForm “danh sach thi sinh”, acNormal, , “[tong diem]>=18”, acFormEdit Phương thức OpenTable dùng để mở một bảng, có 3 tham số theo thứ tự sau: Tham số Ý nghĩa / Giải thích Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 43
  • 96. Bài giảng Lập trình trong Access Table Name biểu thức chuỗi biểu thị tên bảng cần mở. View chọn trong các giá trị sau: acViewDesign, acViewNormal (mặc định – dạng Datasheet View), acViewPreview. DataMode chọn trong các giá trị sau: acAdd, acEdit (mặc định), acReadOnly. Ví dụ: mở bảng “danh sach can bo” để cập nhật dữ liệu, ta viết như sau: DoCmd.OpenTable “danh sach can bo”, acViewNormal, acEdit Phương thức OpenQuery dùng để mở một truy vấn, có 3 tham số theo trình tự: Tham số Ý nghĩa / Giải thích Query Name chuỗi biểu thị tên truy vấn cần mở. View chọn trong danh sách sau: acViewDesign, acViewNormal (mặc định), acViewPreview. DataMode chọn trong các giá trị sau: acAdd, acEdit (mặc định), acReadOnly. Phương thức OpenReport dùng để mở một báo biểu, có 4 tham số theo thứ tự: Tham số Ý nghĩa / Giá trị Report Name chuỗi biểu thị tên báo biểu cần mở. View chọn trong danh sách sau: acViewDesign, acViewNormal (mặc định – in báo biểu), acViewPreview. Filter Name chuỗi biểu thị tên của một truy vấn dùng để săp xếp và/hoặc lọc ra các thông tin cần thiết. WhereCondition chuỗi chứa điều kiện chọn lọc thông tin. Phương thức Open Module dùng để mở một đơn thể, có 2 tham số theo thứ tự sau: Tham số Ý nghĩa / Giá trị ModuleName chuỗi biểu thị tên đơn thể cần mở. ProcedureName chuỗi xác định tên thủ tục của đơn thể. Ví dụ: mở đơn thể “chuong trinh” để xem, sửa, bổ sung các hàm, thủ tục của nó bắt đầu từ thủ tục có tên “tinh_toan”: DoCmd.OpenModule “chuong trinh”, “tinh_toan” Các phương thức trên các control Sơn lại các đối tượng Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 44
  • 97. Bài giảng Lập trình trong Access Để đối tượng hiện nội dung mới nhất mà nó vừa thay đổi, ta dùng phương thức RepaintObject có 2 tham số như sau: Tham số Ý nghĩa / Giải thích ObjectType chọn trong danh sách sau: acDefault, acForm, acMacro, acModule, acQuery, acReport, acTable. ObjectName chuỗi biểu thị tên đối tượng cần sơn lại. Ví dụ: sau khi gán giá trị cho các ô điều khiển của mẫu biểu [hoc sinh], ta dùng câu lệnh sau để thấy sự thay đổi của mẫu biểu trên màn hình: DoCmd.RepaintObject acForm, “hoc sinh” Đặt con trỏ chuột tại một ô điều khiển Để dịnh vị con trỏ tại một ô điều khiển, ta dùng câu lệnh: DoCmd.GotoControl “Tên ô điều khiển” Ví dụ: DoCmd.GotoControl “Noi sinh” sẽ định vị con trỏ tại ô điều khiển [Noi sinh]. Hiện nội dung vừa thay đổi của một ô điều khiển Có khi nội dung của một ô điều khiển đã thay đổi nhưng trên mẫu biểu, ta vẫn chỉ quan sát được nội dung cũ của nó. Điều này thường xảy ra đối với các hộp ComboBox. Để hiển thị nội dung mới nhất của một ô điều khiển, ta dùng câu lệnh sau: DoCmd.Requery “Tên ô điều khiển” Di chuyển đến một bản ghi mới Để di chuyển đến một bản ghi mới, biến nó thành bản ghi hiện hành, ta dùng phương thức GotoRecord có 4 tham số: Tham số Ý nghĩa / Giá trị ObjectType chọn trong danh sách sau: acActiveDataObject (mặc định), acDataForm, acDataQuery, acDataTable. ObjectName chuỗi biểu thị tên đối tượng chứa bản ghi cần di chuyển đến. Record chọn trong danh sách: acFirst, acGoto, acLast, acNewRec, acNext (mặc định), acPrevious. Offset biểu thức nguyên (giả sử có giá trị là n). Nếu tham số Record là acNext hoặc acPrevious thì sẽ di chuyển xuống phía dưới hoặc lên phía trên n bản ghi. Nếu tham số Record là acGoto thì sẽ di chuyển đến bản ghi có số thứ tự là n (tính từ 1). Ví dụ: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 45
  • 98. Bài giảng Lập trình trong Access DoCmd.GotoRecord acDataForm, “Tim kiem”, acGoto, m sẽ di chuyển đến bản ghi thứ m của mẫu biểu [Tim kiem]. Phương thức SetMenuItem Phương thức này dùng để điều khiển trạng thái của Menu. Cú pháp như sau: DoCmd.SetMenuItem menuIndex [, CommandIndex / SubMenu] [, Command Index ] [, Flag] Tham số Ý nghĩa / Giải thích menuIndex là một giá trị nguyên tính từ 0, xác định chỉ số của menu trong hệ menu. CommandIndex / SubMenu là một số nguyên tính từ 0, xác định chỉ số của nút lệnh hoặc chỉ số của menu con của menu có chỉ số menuIndex. CommandIndex là một số nguyên tính từ 0, xác định chỉ số của nút lệnh trong menu con có chỉ số CommandIndex/SubMenu. Tham số này chỉ dùng khi tham số thứ hai là chỉ số của menu con. Flag Quy định trạng thái mới của đối tượng được xác định bởi ba tham số trên, là một trong các hằng sau: acMenuCheck (đánh dấu). acMenuGray (bị xám, không cho phép thực hiện nút lệnh). acMenuUncheck (không đánh dấu). acMenuUngray (không bị xám, đây là trạng thái mặc định). Chúng ta sẽ tạo một hệ menu để minh họa chức năng của phương thức SetMenuItem như sau: File Chọn hình học Chức năng Open Tam giác Tính diện tích Về Access Đoạn thẳng Tính độ dài Về Window trong đó: Chức năng Open bị xám đi, chưa sử dụng được do ta chưa cài đặt. Khi form hiện lên lần đầu, "Tam giác" được chọn. Vì "Tam giác" được chọn nên chức năng "Tính độ dài" bị xám đi (không sử dụng được). Ta viết đoạn mã trong thủ tục xử lý sự kiện Open của Form: Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 46
  • 99. Bài giảng Lập trình trong Access Hình minh họa kết quả như sau: 5.2.3 Tập hợp đối tượng Forms và Reports Forms Tập hợp đối tượng Forms là đối tượng sẵn có của Access dùng tham chiếu đến các Form đang mở. Có thể dùng cách biểu diễn đối tượng qua tập hợp đối tượng và đối Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 47
  • 100. Bài giảng Lập trình trong Access chiếu trên cây phân cấp các đối tượng của Access để biểu diễn các đối tượng trong tập hợp. Ví dụ: Forms(i), i = 0, 1, ... để chỉ form được mở thứ i. Forms!Form1.Control!Label1 hoặc Forms!Form1!Label1 để chỉ nhãn Label1 trên Form1 Trong Access có form chính và form phụ. Muốn tham chiếu đến các điều khiển trên form phụ, ta sử dụng cơ chế phân cấp sau: Đối tượng khởi thủy Forms. Các form đang mở. Các điều khiển trên các form đang mở (trong đó có subform: đảm bảo sự nhất quán giữa tên của điều khiển subform và tên subform). Đối tượng form là đối tượng con của điều khiển subform. Một số thuộc tính hay dùng trong Form: Thuộc tính Ý nghĩa Name Tên đối tượng Visible hiển thị hay không hiển thị của form hay control Count xác định số đối tượng thành phần của tuyển tập. ControlType xác định kiểu của các control trong form/report. Nhận các giá trị sau: acLabel, acRectangle, acLine, acImage, acCommandButton, acOptionButton, acCheckBox, acTextBox, acListBox, acComboBox,… Value biểu thị giá trị của các ô điều khiển TextBox, ListBox, ComboBox. Ví dụ 1: In danh sách các mẫu biểu đang mở Cách 1: Sub LietKe() Dim n As Integer, I As Integer n = Forms.Count For i = 0 To n-1 MsgBox "Tên form thứ" & str(i) & "là:" & Forms(i).Name Next End Sub Cách 2: Sub LietKe() Dim fm As Form, i% i = 0 For Each fm In Forms Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 48
  • 101. Bài giảng Lập trình trong Access MsgBox "Tên form thứ" & str(i) & "là:" & fm.Name i = i + 1 Next End Sub Ví dụ 2: dùng phép gán để thay đổi giá trị của các thuộc tính hoặc control. Giả sử "ho ten" là một textBox trên form "ho so". Dim f As Form DoCmd.OpenForm "ho so" ' Mở mẫu biểu [ho so] Set f = Forms![ho so] ' gắn biến f vào mẫu biểu f![ho ten] = "Nguyen Van A" ' xuất hiện dòng chữ Nguyễn Văn A trên ô [ho ten] f.Visible = True ' hiện mẫu biểu f![ho ten].Visible = False ' ẩn điều khiển [họ ten] Reports Tập hợp đối tượng Reports là đối tượng sẵn có của Access dùng tham chiếu đến các báo cáo đang mở. Cách biểu diễn các thành phần trong tập hợp đối tượng Reports tương tự như tập hợp đối tượng Forms. Muốn tham chiếu đến các điều khiển trên report phụ, có thể sử dụng cơ chế phân cấp sau: Đối tượng khởi thủy Reports. Các báo cáo đang mở. Các điều khiển trên các báo cáo đang mở (trong đó có điều khiển subreport: đảm bảo sự nhất quán giữa tên điều khiển subreport và tên subreport). Đối tượng report là đối tượng con của điều khiển subreport. Điều khiển xuất hiện trên report phụ của report đang xét. Chú ý: báo biểu cũng tương tự như mẫu biểu. Nguyễn Hồng Phương - Email: phuongnh@it-hut.edu.vn Khoa Công nghệ thông tin - ĐH Bách Khoa Hà Nội 49