Professional Documents
Culture Documents
Thanh tiêu đề
Thanh menu
Thanh công cụ
Blank database
Ta đặt tên CSDL là tck45.mdb và định vị cho nó được đặt tại thư mục mong muốn
D:\TailieuGiangday\CSDL\HeQTCSDLAccess (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:
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.
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:
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:
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.
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:
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:
• 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 Record
Selector để chọn
toàn bộ khoản tin
• 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
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.
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":
• Ấ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"
• 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:
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:
Chọn tab Forms, chọn Create form by using Wizard, nhấn New. Đồ thuật xuất hiện:
Chọn bảng Class và đưa tất cả các trường trong mục "Available Fields" sang mục
"Selected Fields"
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:
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
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:
Để 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:
Có thể đổi từ ComboBox sang List Box nếu số giá trị là nhỏ:
2.5. Tạo biểu mẫu của nhiều bảng (Multi table Form)
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
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).
Apply Filter
hoặc Remove
Filter
Filter By Filter By
Selection Form
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:
1. Chọn bảng
nguồn dữ liệu
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
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ế).
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).
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ả
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.
Like "CNTT-K4?"
>#10/10/1982#
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
Ascending
Nhấn Next.
Chọn Faculty, nhấn phím > để gom nhóm theo thuộc tính này. Nhấn Next.
Nhấn Finish, chuyền sang chế độ view để xem kết quả (hoặc chọn Preview the Report rồi
nhấn Finish).
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.
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
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:
Sau khi lựa chọn, nhấn Next. Hộp thoại tiếp theo xuất hiện:
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:
9 Report Name
9 View
9 Filter Name
9 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ố:
9 Control Name
RunApp: thực hiện một ứng dụng trong Window. Tham số:
9 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
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.
9 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:
Bảng thứ ba DSCV (danh sách chức vụ) gồm các trường:
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
9 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:
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:
Đặ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:
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:
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)
9 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ự.
9 Khai báo các hằng, biến, mảng cấp chương trình: dùng từ khóa
Public/Global.
9 Khai báo các hằng, biến, mảng cấp module: dùng từ khóa Dim/Private.
9 Các thủ tục/hàm phạm vi sử dụng cấp chương trình.
9 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:
Thực hiện trên các giá trị nguyên (theo từng bit)
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")
Hàm MsgBox
Cú pháp:
MsgBox(<Lời nhắc>[,<Kiểu nút>][,<Tiêu đề>])
9 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.
9 Chú ý: Xuống dòng dùng chr(10).
9 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”.
9 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ó:
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:
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:
[ 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:
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
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
9 Cú pháp:
Goto <Label>
9 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
9 Cú pháp:
Gosub Label
....
Label:
....
Return “Trở về câu lệnh ngay sau Gosub”
9 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
9 Cú pháp:
On BT Goto/Gosub nhãn_1,..,nhãn_n
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.
9 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.
9 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)
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.
Khi thực thi thủ tục trên, ta thu được kết quả như sau:
9 Đố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ả:
9 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.
9 Đối với tệp Random, Vị_trí là số hiệu bản ghi tính từ 1.
9 Đối với tệp Binary, Vị_trí là số hiệu byte tính từ 1.
9 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.
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:
9 <Tập hợp>(i), trong đó i = 0, 1, 2,...
9 <Tập hợp>(“<Tên đối tượng>”)
9 <Tập hợp>!<Tên đối tượng> (nếu tên đối tượng không có dấu cách)
9 <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à:
9 Của Access: Forms, Reports
9 Của DAO: DbEngine
9 Của ADO: Connections, Catalog
9 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:
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
Forms
Controls
Reports
Controls
DoCmd
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 đó:
9 <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.
9 <Tên đối tượng>: xác định tên của đối tượng cần đóng.
9 <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.
9 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>
9 <Tên form>: chuỗi biểu thị tên biểu thức cần mở.
9 <View>: chọn trong các hằng sau: acDesign, acForm, acNormal (mặc
định), acPreview.
9 <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.
9 <Điều kiện lọc>: chuỗi chứa điều kiện chọn lọc thông tin.
9 <DataMode>: chọn trong các hằng sau: acFormAdd, acFormEdit,
acFormPropertySettings (mặc định), acFormReadOnly.
9 <WindowMode>: chọn trong các hằng sau: acDialog, acHidden, acIcon,
acWindowNormal (mặc định).
9 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:
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ự:
Để đố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:
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:
9 Đối tượng khởi thủy Forms.
9 Các form đang mở.
9 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).
9 Đố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:
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:
9 Đối tượng khởi thủy Reports.
9 Các báo cáo đang mở.
9 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).
9 Đối tượng report là đối tượng con của điều khiển subreport.
9 Đ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.
DbEngine
Workspaces
Databases
Fields
số
<tên> do người dùng đặt theo quy tắc.
<độ tính bằng byte đối với text.
rộng>
<kiểu> nhận một trong các giá trị nguyên sau: dbBoolean, dbByte, dbInteger, dbLong,
dbCurrency, dbSingle, dbDouble, dbDate, dbBinary, dbText,
dbLongBinary(kiểu OLE), dbMemo.
.CreateIndex: tạo chỉ số mới cho bảng
Set <biến chỉ số> = <tên biến TableDef>.CreateIndex(“<tên>”)
.OpenRecordset
c. Tập hợp đối tượng Fields
Phương thức
.Append: thêm trường mới vào bảng
<Tên đối tượng>.Fields.Append <tên biến trường>
.Delete: xóa một trường trong bảng
<Tên đối tượng>.Fields.Delete “<tên trường>”
d. Xây dựng CSDL nhờ biến đối tượng
Tạo bảng mới: dùng phương thức của đối tượng DataBase.
Tạo trường mới: dùng phương thức của đối tượng kiểu TableDef.
Thêm trường vào bảng: dùng phương thức của tập hợp đối tượng Fields.
Thêm bảng vào CSDL: dùng phương thức của tập hợp đối tượng TableDefs.
Ví dụ 1: thủ tục tạo bảng với tên bảng và số cột cho trước
Public Sub CreateTable(name As String, quantityOfColum As Integer)
Dim db As Database, tb As TableDef, fd As Field
Dim i As Integer, fieldName As String
Set db = CurrentDb
Set tb = db.CreateTableDef(name)
For i = 1 To quantityOfColum
fieldName = “Colum” & i
Set fd = tb.CreateField(fieldName, dbInteger)
tb.Fields.Append fd
Next
db.TableDefs.Append tb
End Sub
Ví dụ 2: tạo một bảng mới tên là [Ho so] gồm trường [Ho ten] kiểu text, trường
[Nam sinh] kiểu Integer.
Sub TaoBang()
Dim DB As Database, TB As TableDef, FD As Field
'DB gắn với CSDL hiện hành
Set DB = DBEngine.Workspaces(0).Databases(0)
' Tạo bảng [Ho so] và gắn vào biến TB
Set TB = DB.CreateTableDef("Ho so")
' Tạo trường [Ho ten] kiểu Text, rộng 25 byte
Set FD = TB.CreateField("Ho ten", dbText, 25)
' Bổ sung vào tuyển tập các trường của bảng
TB.Fields.Append FD
' Tạo trường [Nam sinh] kiểu Integer
Set FD = TB.CreateField("Nam sinh", dbInteger)
' Bổ sung vào tuyển tập các trường của bảng
TB.Fields.Append FD
' Bổ sung bảng vào tuyển tập các bảng của CSDL hiện hành
DB.TableDefs.Append TB
End Sub
e. Tập hợp đối tượng QueryDefs. Đối tượng kiểu QueryDef
Tập hợp đối tượng QueryDefs
9 Thuộc tính:
.Count: số lượng truy vấn trong CSDL.
9 Phương thức:
.Append: thêm truy vấn mới vào CSDL.
<Tập hợp>.Append <tên biến QueryDef>
.Delete: xóa một truy vấn khỏi CSDL
<Tập hợp>.Delete “<tên truy vấn>” (có thể là thuộc tính Name)
Đối tượng kiểu QueryDef
9 Thuộc tính:
.Name: Tên truy vấn.
.SQL: Văn bản SQL của truy vấn.
9 Phương thức:
.Execute: thực hiện truy vấn (hành động - tạo lập CSDL)
.OpenRecordset: tạo Recordset, giống phương thức của đối tượng Database,
không có tham số nguồn.
Ví dụ: Tạo một truy vấn [DSHS Gioi] gồm các học sinh có điểm trung bình >= 8:
Sub hsGioi()
Dim DB As Database
Dim QR As QueryDef
Dim st As String
Set DB = CurrentDB
Set QR = DB.CreateQueryDef()
QR.Name = "DSHS Gioi"
st = "Select distinctrow DSHS.* from DSHS"
st = st + "Where [Diem TB]>=8"
QR.SQL = st
DB.QueryDefs.Append QR
' Mở truy vấn để xem
DoCmd.OpenQuery "DSHS Gioi"
End Sub
f. Tập hợp đối tượng Recordsets. Đối tượng kiểu Recordset
Đây là đối tượng quan trọng nhất trong các đối tượng của DAO. Chúng được dùng để
thực hiện các thao tác trên CSDL như tìm kiếm, bổ sung, loại bỏ, thay đổi,... trong
chương trình.
Tập hợp đối tượng Recordsets
9 Thuộc tính:
.Count: tổng số recordset đang sử dụng
9 Phương thức:
.Refresh: tạo lại các recordset khi lược đồ CSDL thay đổi
Đối tượng kiểu Recordset
9 Dùng để tham chiếu đến một tập hợp các bản ghi trên CSDL. Tập hợp này
có thể nằm trong một bảng hay một truy vấn. Có ba loại recordset chính:
Bảng, Dynaset, Snapshot. Ngoài ra còn một số loại khác dùng khi nhận dữ
liệu từ các nguồn khác thông qua ODBC. Phiên bản Access 2000 trở lên
không phân biệt rõ sự khác nhau giữa các loại recordset.
9 Để truy nhập đến từng trường của recordset, người ta có thể dùng các cách
thức sau:
Qua tập hợp đối tượng Fields:
Tham số Ý nghĩa
Đối_tượng là một biến đối tượng kiểu Database, TableDef, QueryDef
Nguồn là chuỗi kí tự biểu thị tên bảng, truy vấn hoặc câu lệnh SQL. Tham số
Nguồn chỉ sử dụng với đối tượng Database, còn với đối tượng TableDef và
QueryDef thì nguồn chính là các đối tượng này.
Loại là một trong các giá trị sau: dbOpenTable, dbOpenDynaset,
dbOpenSnapshot
Loại mặc Nếu bỏ qua tham số loại thì Access sử dụng loại mặc định theo quy tắc
định sau:
Với đối tượng là bảng của CSDL hiện hành thì loại mặc định là
dbOpenTable.
Với đối tượng là truy vấn hoặc là bảng của CSDL không hiện hành thì loại
mặc định là dbOpenDynaset.
Ví dụ 1: Đếm số bản ghi của một Recordset
Sub Dem_so_ban_ghi()
Dim DB As Database, rec As RrecordSet, total
Set DB = CurrentDB
Set rec = DB.OpenRecordSet("DSCB")
total = rec.RecordCount
MsgBox "Tong so ban ghi la:" & str(total)
rec.Close
DB.Close
End Sub
Ví dụ 2:
Xét bảng DSCB trong đó có các trường Bac_luong và Nam_len_luong. Nếu năm lên
lương trước 1998 thì bậc lương sẽ được cộng thêm 200,000. Thủ tục được viết như sau:
Sub Dieu_chinh_luong()
Dim DB As database, rec As RecordSet
Set DB = CurrentDB
Set rec = DB.OpenRecordSet("DSCB")
Do Until rec.EOF
if rec![Nam_len_luong] <=1998 then
rec.Edit
rec![Bac_luong] = rec![Bac_luong] + 200000
rec.Update
End if
rec.MoveNext
Loop
rec.Close
DB.Close
End Sub
5.4 Đối tượng dữ liệu ADO (ActiveX Data Object)
Để sử dụng ADO, chúng ta cần quan tâm đến các thư viện sau:
Thư viện ADODB chứa các thao tác đơn giản nhất, cho phép kết nối đến CSDL, thao tác
trên bản ghi.
Thư viện ADOX cho phép giải quyết các vấn đề liên quan đến thiết kế dữ liệu (bảng, truy
vấn) và an toàn dữ liệu.
Thư viện JRO cho phép tạo lập những bản sao của CSDL.
Muốn sử dụng các thư viện của ADO, ta phải tham chiếu đến thư viện đó (dùng thư viện
nào thì tham chiếu thư viện ấy). Trên của sổ Code, dùng hộp thoại References
5.4.1 Phân cấp các đối tượng chủ yếu của thư viện ADODB
Connection
Commands
Parameters
Recordsets
Fields
Errors
Khi chạy đoạn mã trên, ta thu được kết quả là thông tin về chuỗi kết nối:
.Mode: xác định quỳên được làm đối với CSDL, ngầm định là adModeUnknown
Các giá trị của thuộc tính này như bảng sau:
9 Kiểu khóa (LockType): chỉ định cách xử lí đối với những truy nhập của người
khác khi ta mở Recordset:
Có thể không xác định các tham số chỉ kết nối, kiểu con trỏ và kiểu khóa mà gán
trực tiếp vào các thuộc tính ActiveConnection, CursorType và LockType.
9 Tùy chọn (Options): Cách thức mà hệ thống đánh giá tham số nguồn:
Tìm kiếm:
.Find: chuyển con trỏ đến bản ghi đầu thỏa mãn điều kiện (nếu có), đến cuối tệp EOF
(nếu không có).
Các phương thức: .AddNew, .Delete, .Edit, .Update, .Close giống như trong DAO.
Các thuộc tính của đối tượng kiểu Recordset
.ActiveConnetion, CursorType, LockType
.Filter: bộ lọc của recordset, có ích khi tìm kiếm với điều kiện phức tạp. Khi không
muốn lọc nữa, gán <tên biến Recordset>.Filter = adFilterNone.
Ví dụ: Viết thủ tục trên form cho phép tìm kiếm thông tin nhân viên theo điều kiện
And
LstKetqua.requery
LstKetqua.Visible = True
End Sub
Chương 6
Một số biện pháp an toàn và bảo mật trong Access
An toàn và bảo mật là điều rất quan trọng đối với các hệ quản trị cơ sở dữ liệu nói riêng
cũng như các hệ thống khác nói chung. Các cơ sở dữ liệu được tạo lập cho các xí nghiệp
thường có nhiều người quản lý, sử dụng. Ví dụ: có 1 hoặc 2 người tạo lập và quản lý cơ
sở dữ liệu, có vài người người cập nhật và truy vấn thông tin…Những người sử dụng này
không được phép thay đổi cấu trúc và thiết kế của cơ sở dữ liệu. Vì yếu tố quyết định
chất lượng của cơ sở dũ liệu là tính toàn vẹn về thông tin nên bảo vệ cơ sở dữ liệu là một
trong những vấn đề quan tâm hàng đầu.
Chương này sẽ trình bày một số những biện pháp đơn giản nhưng sẽ giúp ích được khá
nhiều cho chúng ta trong yêu cầu bảo vệ cơ sở dữ liệu chống lại sự truy nhập, sửa đổi hay
phá huỷ bất hợp pháp và không có căn cứ.
6.1 Không cho hiển thị thanh Menu và cửa sổ Database
Mục đích là để ngăn chặn không cho người khác xâm nhập vào các thành phần của
chương trình như bảng (table), truy vấn (query), mẫu biểu (form), báo biểu (report),
macro, đơn thể (module).
Khi ta không muốn cho người khác biết điều gì thì tốt nhất là đừng hiển thị nó, dù là ở
dạng vô hiệu hóa (làm mờ, disable)
Để làm mất thanh Menu của Access, chúng ta chỉ việc thiết kế một hệ Menu và cài vào
mẫu biểu chính như đã nói trước đây. Khi mở mẫu biểu chính, hệ Menu này sẽ thay thế
thanh Menu của Access.
Để làm mất của sổ Database, ta đưa câu lệnh sau vào thủ tục xử lý sự kiện On_Open của
mẫu biểu chính:
DoCmd.RunCommand acCmdWindowHide
Ngoài ra cần tạo macro AutoKeys để chặn bắt và làm vô hiệu hóa các phím mà Access
hay dùng để trở về cửa sổ Database và thanh Menu của Access. Các bước như sau:
Bước 1:
Tạo một macro có tên Autoexec tự động mở mẫu biểu chính của chương trình. Thiết kế
macro này như sau:
Action: OpenForm
Các tham số:
Form Name Tên mẫu biểu chính
View Form
FilterName
Where Condition
DataMode
WindowMode Normal
Nếu muốn cài mật khẩu thì cách làm như sau: Macro Autoexec sẽ mở mẫu biểu mật
khẩu. Mẫu biểu mật khẩu sẽ có một nút lệnh để kiểm tra mật khẩu, nếu đúng sẽ mở mẫu
biểu chính.
Bước 2:
Tạo macro Menu chính. Nếu chương trình không dùng giao diện Menu (chỉ dùng giao
diện nút lệnh), thì Menu chính là một menu rỗng, khi đó macro Menu chính được thiết kế
như sau:
Action: AddMenu
Các tham số:
Menu Name
Menu Macro Name Tên macro phụ
Status Bar Text
Macro phụ chỉ đưa vào cho đủ thủ tục, nó sẽ không gây ra bất kỳ hành động nào. Ta thiết
kế macro phụ như sau: Action: CancelEvent
Bước 3: Mẫu biểu chính
Khi thiết kế mẫu biểu chính cẩn sử dụng 2 thuộc tính Menu Bả và On Open của mẫu
biểu:
Đưa tên của macro Menu chính vào dòng thuộc tính Menu Bar:
Menu Bar: Tên macro Menu chính
Lập hàm xử lý sự kiện On Open của mẫu biểu chính như sau:
Private Sub Form_Open(Cancel As Integer)
DoCmd.RunCommand acCmdWindowHide
End Sub
Bước 4:
Tạo macro AutoKey để chặn bắt, làm vô hiệu hóa các phím mà Access hay dùng như:
F1 phím trợ giúp
F11 trở về cửa sổ Database
…. ……
Để làm vô hiệu hóa các phím F1, F2, F3 và các tổ hợp phím Ctrl + F1, Shift + Insert, ta
tạo macro Autokeys với nội dung như sau:
Macro Name Action Comment
{F1} CancelEvent
{F2} CancelEvent
{F3} CancelEvent
^{F1} CancelEvent
+{INSERT} CancelEvent
Cách viết các phím và tổ hợp phím trong cột Macro Name như sau:
Phím hoặc tổ hợp phím Ví dụ cách viết
Ctrl + phím chữ hoặc phím số ^A hoặc ^4
Phím chức năng bất kỳ {F1}
Ctrl + phím chức năng bất kỳ ^{F1}
Shift + phím chức năng bất kỳ +{F1}
Insert {Insert}
Ctrl + Insert ^{Insert}
Shift + Insert +{Insert}
Ctrl + Delete ^{Delete} hoặc ^{Del}
Shift + Delete +{Delete} hoặc +{Del}
[1] Ths. Nguyễn Thị Thu Hương, bài giảng "Hệ quản trị cơ sở dữ liệu", khoa CNTT,
ĐH Bách Khoa Hà Nội.
[2] GS. Phạm Văn Ất, 2002, Kỹ thuật lập trình Access trên Window, NXB Hà Nội.
[3] TS. Dương Kiều Hoa, 2003, Tự học Access 2000 trong 10 tiếng đồng hồ, NXB
Thanh niên.