Bài giảng Tin học Access

Tài liệu Bài giảng Tin học Access: 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. ...

pdf121 trang | Chia sẻ: ntt139 | Lượt xem: 1228 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Bài giảng Tin học Access, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
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:\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: 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 File\Open 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: 9 Tên mục chọn trên màn hình (Menu Name) 9 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 9 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: 9 Kiểu đối tượng (Object Type) 9 Tên đối tượng (Object Name) 9 Cách ghi (Save) ApplyFilter: Sử dụng bộ lọc trên Form. Các tham số: 9 Tên truy vấn lọc (Filter Name) 9 Đ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ố: 9 Kiểu đối tượng (Object Type) 9 Tên đối tượng (Object Name) 9 Bản ghi (Record) 9 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ố: 9 Message: nội dung thông báo đưa ra. 9 Beep: sẽ phát ra tiếng kêu nếu là yes, ngược lại thì không. 9 Type: kiểu icon hiển thị, gồm: None, Critical, Warning?. Warning! và Information. 9 Title: tiêu đề của cửa sổ thông báo. OpenForm: mở form, gồm có 6 tham số: 9 Form Name: tên form cần mở, chọn trong danh sách. 9 View: mở form ở một trong bốn chế độ: Design, Form (ngầm định), Datasheet, Print. 9 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. 9 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. 9 Data Mode: phương thức hiện dữ liệu, có thể thêm (Add), sửa (Edit) hay chỉ đọc (Read Only). 9 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 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 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. 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: 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: 9 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 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: 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 9 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 9 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) 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: 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) 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 module: dùng từ khóa Dim/Private. 9 Các thủ tục xử lý sự kiện 9 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() [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() 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 9 Sự kiện trên Form Private Sub Form_() [Các câu lệnh] End Sub 9 Sự kiện trên Report Private Sub Report_() [Các câu lệnh] End Sub 9 Sự kiện trên control Private Sub _(<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: 9 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). 9 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 9 Thủ tục xử lý sự kiện kích hoạt sự kiện 9 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: ?() 4.3.8 Cách gọi chương trình con trong VBA ™ Gọi thủ tục Call () 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>:=] ™ 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: () 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: 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 [As][,[As]..] Ví dụ: Dim a As Integer, s As string 9 Biến tĩnh: ta thay từ khóa Dim bằng từ khóa Static. 9 Biến toàn cục: ta thay từ khóa Dim bằng từ khóa Public. 9 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 9 Trong hàm/thủ tục Dim/ReDim/Static (Chỉ số 1, chỉ số 2,..., chỉ số n) [As ] 9 Trong phần khai báo của đơn thể Form/Report Dim/Private (Chỉ số 1, chỉ số 2,..., chỉ số n) [As ] 9 Trong phần khai báo của đơn thể dùng chung Dim/Private/Public (Chỉ số 1, chỉ số 2,..., chỉ số n) [As ] ™ 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 đó: 9 Chỉ số thứ nhất chạy từ 1 đến 4 9 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 9 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 9 Cấp thủ tục:Khai báo trong thủ tục 9 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. 9 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 [As ] 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ú ý: 9 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 9 Thành phần của kiểu tự định nghĩa có thể là mảng. 9 Có thể khai báo các mảng kiểu tự định nghĩa. 9 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 (), 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(,,) 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ố 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 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[$]([,][,][,,<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([,][,]) 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ó: 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 then [] [else] ™ Viết trên nhiều dòng: If then 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 ] End If 4.7.2 Lệnh Select Case Select Case [Case ] [] [Case ] [] [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 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 = To [Step] [Exit For] 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 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 In [Exit For] Next ™ 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}] [] [Exit Do] [] Loop ™ Dạng 2: Do [] [Exit Do] [] Loop[{While/Until}] 4.7.6 Vòng lặp While Wend While [] 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 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 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 9 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 255 thì có lỗi. ™ Nhảy khi có lỗi 9 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: 9 Xóa một bảng / truy vấn không tồn tại. 9 Tạo mới một bảng / truy vấn đã tồn tại. 9 Nhận giá trị Null từ một ô điều khiển của form / report. 9 Chia cho số 0. 9 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: 9 Error$: cho biết lõi gì đã xảy ra. 9 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: 9 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. 9 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ố: 9 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:\ABC\hoso.xyz” 9 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. 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) 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 #,[] 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 #,[] 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_bản_ghi ,] 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: 9 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. 9 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: 9 Đố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. 9 Đố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_bản_ghi ,] 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ú ý: 9 Đố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. 9 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: 9 Đố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 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ả: ™ Các hàm dùng trong thao tác tệp: 9 Eof(): 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. 9 Lof(): 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 9 Seek(): 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 [#], 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. 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: 9 (i), trong đó i = 0, 1, 2,... 9 (“”) 9 ! (nếu tên đối tượng không có dấu cách) 9 ![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: 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 = ™ 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 [] 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. 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 , , trong đó: 9 : 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 : xác định tên của đối tượng cần đóng. 9 : 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 , , , , , 9 : chuỗi biểu thị tên biểu thức cần mở. 9 : chọn trong các hằng sau: acDesign, acForm, acNormal (mặc định), acPreview. 9 : 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 : chuỗi chứa điều kiện chọn lọc thông tin. 9 : chọn trong các hằng sau: acFormAdd, acFormEdit, acFormPropertySettings (mặc định), acFormReadOnly. 9 : 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: 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 9 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” 9 Đặ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]. 9 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” 9 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: 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: 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: 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. 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 Lập trình 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 50 5.3 Đối tượng của DAO (Data Access Object) 5.3.1 Mối quan hệ giữa các đối tượng chủ yếu của DAO a. Tập hợp đối tượng Databases. Đối tượng kiểu Database ™ Tập hợp đối tượng Databases: 9 Thuộc tính: Count: số CSDL đang mở 9 Phương thức: .Refresh: Cập nhật lại các đối tượng ứng với những thay đổi trên lược đồ của CSDL. ™ Đối tượng kiểu Database: 9 Thuộc tính Name: Tên đầy đủ của CSDL Updatable (True/False): Có cập nhật được CSDL không. 9 Phương thức: .CreateTableDef: Tạo bảng mới Set = .CreateTableDef([<tên bảng>]) Tên bảng là xâu kí tự. Nếu không chỉ rõ tên bảng, phải gán giá trị cho thuộc tính Name của biến kiểu TableDef. .CreateQueryDef: Tạo truy vấn mới DbEngine Workspaces Databases TableDefs Fields QueryDefs Fields Indexes Fields Parameters Fields Recordsets Bài giảng Lập trình trong Access Set = .CreateQueryDef([<tên query>][,]) Tên truy vấn và văn bản SQL đều là xâu kí tự. Nếu không chỉ rõ trong phương thức, phải gán giá trị cho các thuộc tính Name và SQL của biến kiểu QueryDef. .Execute: Thực hiện truy vấn hành động (bổ sung, loại bỏ, thay đổi), tạo bảng... .Execute , Nguồn: Xâu kí tự chỉ tên hoặc văn bản SQL của truy vấn. Cách thức: cho phép chọn một số hằng của DAO, có chấp nhận mất nhất quán dữ liệu không... .OpenRecordset Set = .OpenRecordset ([,]) Nguồn: xâu kí tự chỉ tên bảng, tên truy vấn hoặc văn bản SQL của truy vấn. Kiểu: Kiểu của Recordset. Chọn các hằng của DAO như: dbOpenTable, dbOpenDynaset, dbOpenSnapshot. b. Tập hợp đối tượng kiểu TableDefs. Đối tượng kiểu TableDef ™ Tập hợp đối tượng TableDefs: Tham chiếu các bảng trong CSDL 9 Thuộc tính: Count: số bảng trong CSDL 9 Phương thức: .Append: thêm một bảng mới vào CSDL .Append .Delete: xóa một bảng khỏi CSDL .Delete “” (có thể là giá trị thuộc tính Name) ™ Đối tượng kiểu TableDef 9 Thuộc tính: .Name: tên bảng .RecordCount: số bản ghi trong bảng .ValidationRule: xem trong phần thiết kế bảng .ValidationText 9 Phương thức: .CreateField: tạo trường mới cho bảng Set =.CreateField([,][,<độ rộng>]) Tham Ý nghĩa 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 Lập trình trong Access số do người dùng đặt theo quy tắc. <độ rộng> tính bằng byte đối với text. 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 = .CreateIndex(“”) .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 .Fields.Append .Delete: xóa một trường trong bảng .Fields.Delete “” 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 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 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. .Append .Delete: xóa một truy vấn khỏi CSDL .Delete “” (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) 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 53 Bài giảng Lập trình trong Access .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: 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 54 Bài giảng Lập trình trong Access .Fields(i) i = 0, 1, 2,... .Fields(“”) .Fields! ƒ Truy nhập trực tiếp vào trường: .(“Tên”) ! 9 Thuộc tính của đối tượng kiểu Recordset: .AbsolutePosition: vị trí con trỏ bản ghi của Recordset, giá trị : 0, 1, 2,... .BOF (T/F) : đúng khi con trỏ ở bên trái bản ghi đầu tiên .EOF (T /F) : đúng khi con trỏ ở bên phải bản ghi cuối cùng .Filter : xâu kí tự thể hiện điều kiện lọc các bản ghi trong recordset .NoMatch (T/F) : dùng khi tìm kiếm bằng các phương thức FindFirst, FindLast, FindNext, FindPrevious. .RecordCount: số bản ghi trong recordset. 9 Phương thức của đối tượng kiểu Recordset .AddNew: thêm bản ghi trắng vào recordset. Chúng chỉ được cập nhật vào CSDL khi ta gọi phương thức Update. .Close: đóng recordset. .Delete: xóa bản ghi hiện hành trong recordset. .Edit: sửa bản ghi hiện hành trong recordset. Chúng chỉ được cập nhật vào CSDL khi ta gọi phương thức Update. .Update: Cập nhật những thay đổi trên recordset. .CancelUpdate: bỏ qua không cập nhật những thay đổi trên recordset. .FindFirst | .FindLast | .FindNext | .FindPrevious : chuyển con trỏ đến bản ghi đầu tiên, cuối cùng, ngay sau bản ghi hiện hành, ngay trước bản ghi hiện hành thỏa mãn điều kiện nếu có. Nếu không có, chuyển đến EOF. .MoveFirst | .MoveLast | .MoveNext | .MovePrevious: chuyển con trỏ đến bản ghi đầu tiên, cuối cùng, ngay sau bản ghi hiện hành, ngay trước bản ghi hiện hành. Phương thức OpenRecordset dùng để tạo một biến Recordset. Có thể dùng phương thức này với các đối tượng: Database, TableDef, QueryDef. Cách viết: Set = Đối_tượng.OpenRecordset(Nguồn, loại) trong đó: 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 55 Bài giảng Lập trình trong Access 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 định Nếu bỏ qua tham số loại thì Access sử dụng loại mặc định theo quy tắc 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 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 56 Bài giảng Lập trình trong Access 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 Fields Recordsets Errors 5.4.2 Đối tượng kiểu Connection ™ Cách thực hiện kết nối đến CSDL 9 Khai báo: Dim As [New] Connection 9 Kết nối đến CSDL khác: Ta gọi phương thức .Open là xâu kí tự, thường bao gồm các tham số: ƒ Provider: loại CSDL. Ví dụ: “provider =microsoft.jet.OLEDB.4.0” ƒ DataSource: tên CSDL, bao gồm cả đường dẫ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 57 Bài giảng Lập trình trong Access 9 Truy nhập CSDL hiện hành: Set = CurrentProject.Connection ™ Thuộc tính của đối tượng kiểu Connection .Connection String: những thông tin liên quan đến kết nối, bao gồm cả những thông tin được chỉ ra trong dòng kết nối, ngoài ra còn có user name, password, mật mã hóa... Ví dụ: Ta viết đoạn thủ tục sau: 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: Giá trị Ý nghĩa adModeUnknown Chưa thiết lập việc phân quyền sử dụng hoặc không phân quyền sử dụng. adModeRead Chỉ đọc. adModeWrite Chỉ ghi. adModeReadWrite Có thể đọc ghi. adModeShareDenyWrite Ngăn cản người khác mở CSDL để ghi. adModeShareDenyRead Ngăn cản người khác mở CSDL để đọc. adModeShareExclusive Ngăn cản người khác mở CSDL. adModeShareDenyNone Ngăn cản người khác làm mọi việc với CSDL. ™ Các phương thức của đối tượng kiểu Connection 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 58 Bài giảng Lập trình trong Access .Open: dùng để mở một kết nối. .Close: đóng kết nối. .Execute: thực hiện truy vấn trong CSDL được tham chiếu, có thể thực hiện cả truy vấn chọn. 5.4.3 Đối tượng kiểu Recordset ™ Các phương thức của đối tượng kiểu Recordset .Open : tương tự phương thức OpenRecordset của DAO, dùng để tạo RecordSet, thực hiện kết nối (hiện hoặc ngầm). Cách sử dụng: .Open[],[],[],[<Kiểu khóa>][,] Trong đó : 9 Nguồn: tên bảng, văn bản SQL hay tên biến kiểu Command. 9 Kết nối (ActiveConnection): Xác định kết nối của Recordset, là xâu kí tự như kiểu dòng kết nối. 9 Kiểu con trỏ (CursorType): có thể nhận một trong các giá trị sau: Giá trị Ý nghĩa adOpenForwardOnly Con trỏ chỉ có thể di chuyển về phía trước, ngầm định. adOpenKeyset Không nhìn thấy những thay đổi do người khác thực hiện, di chuyển 2 chiều. adOpenDynamic Quan sát được những thay đổi của những người dùng khác. Có thể thêm, sửa, xóa. Có thể di chuyển hai chiều mà không cần lưu giữ bookmark. 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: Giá trị Ý nghĩa adLockReadOnly Không cập nhật được dữ liệu, ngầm định. adLockPessimistic Khóa bản ghi khi người dùng sửa. adLockOptimistic Khóa bản ghi khi sử dụng phương thức Update 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: Giá trị Ý nghĩa adCmdText Hệ thống coi nguồn là văn bản của một command adCmdTable ADO sinh ra một truy vấn để trả về tất cả các dòng của một bảng có tên chỉ bởi nguồn. adCmdTableDirect Lấy toàn bộ các bản ghi trong bảng có tên chỉ bởi nguồ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 59 Bài giảng Lập trình trong Access adCmdStoredProc Nguồn là thủ tục. adCmdUnknown Kiểu của nguồn chưa xác định, ADO sẽ tự xác định lấy. Các phương thức di chuyển con trỏ: giống Recordset của DAO .MoveFirst | .MoveLast | .MoveNext | .MovePrevious 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 .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 Form trên gồm có các điều khiển sau: Điều khiển Thuộc tính Giá trị của thuộc tính Name Label1 Nhãn (Label) Caption Tìm kiếm thông tin nhân viên Name LstKetqua Hộp liệt kê (ListBox) RowSourceType Table/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 60 Bài giảng Lập trình trong Access RowSource để trống (sẽ gán trong chương trình) Hộp văn bản (TextBox) Name Text0 Hộp văn bản Name Text2 Name Command4 Nút lệnh Caption Tìm Name Command5 Nút lệnh Caption Thoát Thủ tục click chuột của nút Command4: Private Sub Command4_Click() Dim cn As Connection Dim rs As ADODB.Recordset Dim tieuchuan As String Dim dkhoten As String, dkma As String Dim loc As String Set cn = CurrentProject.Recordset Set rs = New ADODB.Recordset With rs .CursorType = adOpenKeyset .LockType = adLockOptimistic .Open "nhan vien", cn, , , adCmdTable End With dkma = IIf(Not IsNull(Text0),"manv like '*" & Text0 & "*","") dkhoten = IIf(Not IsNull(Text2),"hoten like '*" & Text2 & "*","") tieuchuan = IIf(dkma"",dkma & IIf(dkhoten"","and","")& dkhoten,dkhoten) rs.Filter = tieuchuan If rs.EOF then LstKetqua.RowSource = "" LstKetqua.Requery MsgBox "Khong co nhan vien nao thoa man" Exit Sub End If rs.Close cn.Close loc = "select manv, hoten, luong, diachi from nhanvien where" & tieuchuan LstKetqua.RowSource = loc 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 61 Bài giảng Lập trình trong Access LstKetqua.requery LstKetqua.Visible = True End Sub Thủ tục load Form: Private Sub Form_Load LstKetqua.Visible = False End Sub 5.4.4 Đối tượng Command và Parameter Giúp thực hiện truy vấn chọn, tham số, hành động. ™ Các thuộc tính của đối tượng Command: .CommandText: văn bản SQL của Command. .CommandType: Kiểu của đối tượng Command. ™ Các phương thức của đối tượng Command: .Execute: thực hiện Command Trả các bản ghi cho một Recordset: Set = .Execute(, , ) Chỉ thực hiện cập nhật CSDL: .Execute(, , ) Ví dụ: Form đổi mã vật tư,dùng đối tượng dữ liệu ADO có kiểm soá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 62 Bài giảng Lập trình trong Access Thủ tục xử lí sự kiện của nút "Thay đổi": Private Sub Command5_Click() If IsNull(Text0) Then MsgBox "Nhap vao ma vat tu can thay doi" End If If IsNull(Text2) Then MsgBox "Nhap vao ma vat tu moi" End If Dim cn As Connetion, cm As Command Dim str As String Set cn = CurrentProject.Connection Dim rs As New ADODB.Recordset With rs .ActiveConnection = cn .CursorType = adOpenKeyset .LockType = adLockOptimistic .Open("select * from vattu where mavt = '"& Text0 &"'") If .BOE And .EOF Then MsgBox "Khong ton tai vat tu co ma" & Text0 Exit Sub End If End With Set cm = New ADODB.Command 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 63 Bài giảng Lập trình trong Access str = "parameters macu text(5), mamoi text(5);" str = str & "update vattu set mavt = mamoi where mavt = macu" With cm .ActiveConnection = cn .CommandText = str .CommandType = adCmdText End With Dim pr1 As Parameter, pr2 As Parameter Set pr1 = cm.CreateParameter("macu", adVarWChar, adParamInput, 5) cm.ParametersAppend pr1 Set pr2 = cm.CreateParameter("mamoi", adVarWChar, adParamInput, 5) cm.ParametersAppend pr2 pr1.Value = Text0 pr2.Value = Text2 cm.Execute 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 64 Bài giảng Lập trình trong Access 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 tinNhữ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ô

Các file đính kèm theo tài liệu này:

  • pdftailieu.pdf
Tài liệu liên quan