GT Access3

56 970 7
Tài liệu đã được kiểm tra trùng lặp
GT Access3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CƠ SỞ ĐÀO TẠO TIN HỌC NGÔ GIA TỰ Microsoft Access 3 Chương 5 SỰ KIỆN VÀ MACRO I. SỰ KIỆN: Khi một ứng dụng viết bằng Access được mở ra thì CSDL đó sẽ làm việc cùng với các sự kiện của nó. Bên trong MS Access có các sự kiện cơ bản như sau: − Nhấn chuột − Thay đổi dữ liệu − Các thao tác nhấn phím của người sử dụng − Các đối tượng nhận hay mất đi sự tập trung − Biểu mẫu được mở, đóng và thay đổi kích thước − Báo cáo được in − Các lỗi xảy ra khi chạy chương trình Thông thường mỗi đối tượng sẽ có một tập hợp các sự kiện, tương ứng với mỗi sự kiện sẽ có một thuộc tính sự kiện ( nằm ở phiếu Event, trang thuộc tính của đối tượng). Cần thực hiện một hành động khi có một sự kiện nào đó xảy ra: Để đáp lại một sự kiện ta có thể thực hiện theo các cách sau: Ví dụ 1: Tạo Form như hình trên Tạo nút lệnh ĐÓNG FORM BẰNG WIZARD để người dùng có thể đóng biểu mẩu hiện tại (đang mở). Cách thực hiện: Bật công cụ Control Wizard và chọn lệnh Command Button, rê chuột theo ý muốn trên form. Xuất hiện hộp thoại Command Button Wizard lần thứ 1: Trang 1 CƠ SỞ ĐÀO TẠO TIN HỌC NGÔ GIA TỰ Microsoft Access 3 Chọn loại thao tác ở khung Categories (Form Operation), rồi chọn tiếp khung Action (Close Form). Chọn Next Xuất hiện khung Command Button Wizard lần thứ 2: Chọn Text nếu muốn nút lệnh thể hiện ở dạng văn bản, Chọn Picture nếu muốn nút lệnh thể hiện ở dạng hình ảnh. Tiếp tục chọn Next. Xuất hiện khung Command Button Wizard lần thứ 3:  Đặt tên cho nút lệnh để sử dụng sau này. Chọn Finish để hoàn chỉnh.  Sau đó bạn chọn menu View\ Form View để chạy thử.  Lưu form lại với tên “VI DU SU KIEN MACRO MODULE” ⇒ Các loại (Categories) và thao tác (Action) có thể gắn vào nút Command Button gồm có: − Di chuyển qua lại giữa các mẫu tin ( Record Navigation) Thao tác ( Action) Ý nghóa Find next Tìm mẫu tin kế tiếp thoả một điều kiện dò tìm. Find record Tìm kiếm mẫu tin đầu tiên thoả một điều kiện dò tìm. Go to First record Di chuyển về mẫu tin đầu tiên Go to Last record Di chuyển về mẫu tin cuối cùng Go to Next record Di chuyển sang mẫu tin kế tiếp Go to Previous record Di chuyển về mẫu tin trước mẫu tin hiện thời. Trang 2 CƠ SỞ ĐÀO TẠO TIN HỌC NGÔ GIA TỰ Microsoft Access 3 − Các thao tác trên mẫu tin ( Record Operations) Thao tác ( Action) Ý nghóa Add New Record Thêm mẫu tin mới Delete Record Xoá mẫu tin hiện tại Duplicate Record Sao chép giá trò của mẫu tin hiện tại sang một dòng mới để tạo ra mẫu tin mới Print Record In mẫu tin hiện tại ra giấy Save Record Lưu lại mẫu tin hiện tại Undo Record Phục hồi giá trò của mẫu tin hiện tại sau khi chỉnh sửa − Các thao tác trên biểu mẫu ( Form Operation) Thao tác ( Action) Ý nghóa Apply Form Filter Lọc dữ liệu của biểu mẫu Close Form Đóng biểu mẫu hiện tại Edit Form Filter Sửa đổi bộ lọc dữ liệu của biểu mẫu Open Form Mở biểu mẫu khác Print Form In một biểu mẫu Print Current Form In biểu mẫu hiện tại Refresh Form Data Cập nhật ( làm tươi) dữ liệu của biểu mẫu − Các thao tác trên báo cáo ( Report Operations) Thao tác ( Action) Ý nghóa Mail Report Gửi báo cáo cho một người sử dụng khác bằng E-mail Preview Report Xem trước báo cáo trên màn hình trước khi in Print Report In báo cáo Send Report to File Chuyển nội dung báo cáo thành tập tin trên đóa − Các thao tác trên ứng dụng ( Application) Thao tác ( action) Ý nghóa Quit Application Thoát khỏi MS Access Run Application Khởi động một ứng dụng trên Windows Run MS Excel Khởi động MS Excel Run Ms Word Khởi động MS Word Run MS Notepad Khởi động Notepad Trang 3 CƠ SỞ ĐÀO TẠO TIN HỌC NGÔ GIA TỰ Microsoft Access 3 − Các thao tác khác ( Miscellaneous) Thao tác ( Action) Ý nghóa Auto dialer Tự động quay số kết nối liên lạc Print table In một bảng Run Macro Cho chạy một macro Run Query Cho chạy một truy vấn ⇒ Sử dụng macro (tập lệnh), nghóa là ta phải tạo một macro thực hiện hành động rồi gắn kết macro đã tạo với thuộc tính sự kiện của đối tượng. Ví dụ 2: Mở form “VI DU SU KIEN MACRO MODULE” ở chế độ thiết kế (Dessign View) Tạo thêm nút lệnh Command Button “ĐÓNG FORM BẰNG MACRO”. Dùng để đóng form hiện tại đang mở. Cách thực hiện: Tắt công cụ Control Wizard, chọn nút lệnh Command Button, rê chuột theo ý muốn trên form. Chọn Properties của nút lệnh. Chọn phiếu Format, chọn mục Caption và nhập vào “ĐÓNG FORM BẰNG MACRO”. Sau đó chọn qua phiếu Event, chọn Onclick (hành động là click chuột), chọn dấu . . . xuất hiện khung Choose Builder. Trang 4 CƠ SỞ ĐÀO TẠO TIN HỌC NGÔ GIA TỰ Microsoft Access 3 Chọn Macro Builder, chọn tiếp tục nút OK. Đặt macro ở khung Save “DONG FORM BANG MACRO” và chọn OK. Xuất hiện cửa sổ thiết kế macro. Chọn hành động ở cột Action là Close và có thể ghi một chú thích ở khung Comment. khung thuộc tính tham số cho hành động (Action Arguments). Chọn Object Type chọn loại muốn đóng (ví dụ như: Form, Macro, Report, Table, Query…). khung Object Name chọn tên đối tượng muốn đóng. khung Save: Chọn Prompt (Hiện câu thông báo nhắc nhở có 3 nút: Save, No, Cancel). Chon Save tự động lưu lại khi đóng form. Chọn No sẽ không tự động ghi lại khi đóng form. Sau đó lưu lại Macro. Chon Close để đóng cửa sổ thiết kế Macro. Quay trở về form, chọn form view để chạy thử. Ví dụ 3: Mở form “VI DU SU KIEN MACRO MODOULE” ở chế độ thiết kế (Design View) Tạo thêm nút lệnh Command Button “DONG FORM BANG MODOULE”. Dùng đóng form hiện tại đang mở. Cách thực hiện: Tắt công cụ Control Wizard, chọn nút lệnh Command Button, rê chuột theo ý muốn trên form. Chọn Properties của nút lệnh. Chọn phiếu Format, chọn mục Caption và nhập vào “ĐÓNG FORM BẰNG MODULE”. Sau đó chọn phiếu Event, chọn Onclick (hành động là click chuột), chọn dấu … xuất hiện khung Choose Builder Trang 5 CƠ SỞ ĐÀO TẠO TIN HỌC NGÔ GIA TỰ Microsoft Access 3 Chọn Code Builder, chọn OK. Xuất hiện cửa sổ viết lệnh module (Câu lệnh được viết bằng ngôn ngữ VISUALBASIC) và nhập thêm dòng lệnh như trong hình sau: Lưu ý: Phần câu lệnh trong Module các bạn sẽ được học trong những chương sau Bảng mô tả một số các thuộc tính sự kiện thường dùng: (p dụng cho Text box, Combo box) Thuộc tính sự kiện Sự kiện Xảy ra khi Before Update Before Update Trước khi đối tượng được cập nhật After Update After Update Sau khi đối tượng được cập nhật On Change Change Khi dữ liệu chứa trong đối tượng thay đổi On Enter Enter Khi thanh chèn(điểm nháy) nhảy vào đối tượng On Exit Exit Khi thanh chèn(điểm nháy) đi ra khỏi đối tượng On Got Focus GotFocus Đối tượng nhận được sự tập trung() On Lost Fucus LostFocus Đối tượng mất đi sự tập trung On Click Click Khi nhắp mouse tại đối tượng On Dbl Click DblClick Khi nhắp đúp mouse tại đối tượng On Mouse Down MouseDown Khi nhấn và giữ mouse tại đối tượng On Mouse Move MouseMove Khi di chuyển mouse tại đối tượng On Mouse Up MouseUp Khi nhả mouse tại đối tượng On Key Down KeyDown Khi bấm và giữ một phím tại đối tượng On Key Press KeyPress Khi bấm một phím tại đối tượng On Key Up KeyUp Khi nhả một phím tại đối tượng On Not In List NotInList Khi người dùng nhập1 trò vào combo box mà trò này không có trong danh sách trò của combo box(chỉ combo box mới có thuộc tính sự kiện này) Ghi chú: ⇒ () Sự tập trung (focus): Là khả năng một điều khiển có thể nhận dữ liệu từ người dùng qua các thao tác bằng bàn phím hay bằng mouse. Trong Access, tại một thời điểm chỉ có một đối tượng nhận được sự tập trung (GotFocus) ⇒ Sự kiện Enter xảy ra trước sự kiện GotFocus, tương tự, sự kiện Exit xảy ra trước sự kiện LostFocus Trang 6 CƠ SỞ ĐÀO TẠO TIN HỌC NGÔ GIA TỰ Microsoft Access 3 Ví dụ: Khi xảy ra sự kiện Enter : Đưa ra câu thông báo hướng dẫn cách nhập dữ liệu cho đúng ⇒ Các thuộc tính sự kiện thay đổi tuỳ theo đối tượng (điều khiển) Ví dụ: Combo Box có thuộc tính sự kiện On Change, nhưng Listbox thì không có ( vì Access không cho nhập trò mới vào Listbox) ************************* ******** BÀI TẬP Tạo Form với nút lệnh Command Button bằng Wizard để thực hiện các công việc như hình sau: Hướng dẫn: Dùng Form Wizard tạo form khach hang như trên và đặc các nút lệnh trong vùng Form Footer. Sử dụng các loại và thao tác của nút lệnh Command Button để tạo các nút lệnh trên. Riêng nút lệnh Run App (Chạy Paint) có đường dẫn C:\Windows\System32\mspaint. Lưu form lại với tên “BAI TAP NUT LENH COMMAND BUTTON” Trang 7 CƠ SỞ ĐÀO TẠO TIN HỌC NGÔ GIA TỰ Microsoft Access 3 II. MACRO Macro là tập hợp các lệnh ( hành động – action do MS Access tạo sẵn) giúp người dùng: − Tự động hoá các công việc, các quá trình xử lý. − Liên kết các đối tượng trong tập tin CSDL của Access 1. TẠO MỚI MỘT MACRO: Có hai cách ⇒ Cách 1: Dùng phương pháp kéo và thả( Drag and Drop): Cách này chỉ dùng cho các thao tác đơn giản như mở bảng (Open table), mở truy vấn (Open query) , mở biểu mẫu ( Open form) , mở báo cáo ( Open report) Các bước thực hiện: − B1: Chọn phiếu Macros, chọn new( hay dùng lệnh Insert\Macro) − B2: Sắp xếp lại cửa sổ thiết kế Macro và cửa sổ CSDL sao cho có thể thấy cả hai cửa sổ. (Dùng lệnh Window\ Tile Vertically hay Tile Horizontally) − B3: Chọn tên đối tượng muốn mở trong CSDL, “kéo” đối tượng này sang cửa sổ thiết kế Macro và “ thả” ra Access sẽ tự động chọn thao tác trên cột Action và điền các tham số cần thiết trên các dòng Action Arpuments. ⇒ Cách 2: Các bước thực hiện: − B1: Chọn phiếu Macro , chọn New (hay dùng lệnh Insert\ Macro) − B2: Trong cửa sổ thiết kế Macro: + Tại cột Action : Chọn hành động trong danh sách mà Access cung cấp. + Tại cột Comment: Ghi chú ( nếu muốn) cho hành động đã chọn. + Trong khung Action Arguments: xác lập các tham số cho hành động đã chọn. Tuỳ theo Action đã chọn, các tham số sẽ thay đổi. − B3: Lưu lại Macro : Nhắp nút Save ( hay dùng lệnh File\ Save)  gõ tên cho Macro vào hộp Save As. ⇒ Còn có một cách tạo Macro ( dùng khi tạo một điều khiển và muốn gắn kết điều khiển đó với Macro ) như sau: − Trong cửa sổ thiết kế Form, tạo một điều khiển ( không dùng Control Wizard) − Nhắp đúp vào cạnh của điều khiển (hay nhắp vào nút Properties) xuất hiện trang thuộc tính của điều khiển . − Chọn phiếu Event, nhắp mouse vào sự kiện mà ta muốn Macro sắp tạo sẽ được gắn kết với sự kiện đó. − Nhắp vào nút … bên phải của dòng ghi tên sự kiện, xuất hiện hộp đối thoại  Chọn Macro Buider chọn OK − Xuất hiện cửa sồ thiết kế Macro như đã giới thiệu ở cách 2 Trang 8 CƠ SỞ ĐÀO TẠO TIN HỌC NGÔ GIA TỰ Microsoft Access 3 2. GẮN KẾT MACRO VỚI MỘT SỰ KIỆN: Khi có một Macro và muốn Macro này được gọi thi hành mỗi khi có một sự kiện xảy ra thì ta phải gắn kết Macro với sự kiện ( dó nhiên sự kiện này phải là thuộc tính của một điều khiển) Các bước thực hiện như sau: − B1: Mở Form (mode thiết kế), chọn điều khiển, nhắp nút Properties xuất hiện trang thuộc tính của điều khiển. − B2: Chọn phiếu Event, chọn sự kiện, nhắp chuột vào nút mũi tên ở bên phải (cùng dòng với sự kiện đã chọn)  chọn tên Macro ( trong danh sách các macro đã tạo) đóng trang thuộc tính lại. 3. GIỚI THIỆU MỘT SỐ MACRO THÔNG DỤNG (THEO THỨ TỰ A -Z ) 1. ACTION Ý NGHĨA Addmenu Liên kết các Menu (đã được tạo bằng Macro nhóm) vào thanh menể tạo thành 1 thanh lệnh (menu bar) cho ứng dụng Actoin Menu Name Tên của nhóm lònh sẽ hiện trên thanh lònh Arguments Menu macro Name Tên của nhóm macro chứa các lònh muốn cho hiện trên thanh lệnh Status bar text Thông báo hiện ra ở dòng trạng thái (cạnh dùi màng hình ) khi chọn menu này 2. ACTION Ý NGHĨA Applyfiter Cho phép đọc dữ liệu trên from khi hiển thò trên màn hình Action Argumenst Fiter name Tên của truy vấn cần dùng lọc dữ liệu (Nếu không có thì để trống) Where condition Điều kiện lọc dữ liệu. (Giống như điều kiện trong mệnh đề Where của câu lònh SQL) 3. ACTION Ý NGHĨA Canceleve nt Huỷ bỏ một biến cố đang được thực hiện 4. ACTION Ý NGHĨA Close Đóng một đối tượng Action Argument Object type Kiểu đối tượng muốn đóng (nếu để trống thì access hiểu là cửa sổ hiện hành Object name Tên đối tượng muốn đóng Save Có lưu lại các thay đổi (Yes), Không lưu (no) Nhắc nhở có lưu hay không (Prompt) Trang 9 CƠ SỞ ĐÀO TẠO TIN HỌC NGÔ GIA TỰ Microsoft Access 3 5. 6. ACTION Ý NGHĨA OpenQuery Mở hay thực hiện một Query Action Arguments Query Name Tên Query muốn mở, thực hiện View Hiện query ở mode nào : cập nhật dữ liệu (Datasheet) Xem trên màn hình (Print Preview), thiết kế (Design) Data Mode Các mode hiển thò dữ liệu : Add : thêm mới, Edit: sửa đổi được, Read Only: chỉ đọc 7. ACTION Ý NGHĨA OpenRepor Mở một Report Action Arguments Report Name Tên Report muốn mở View Hiện Report ở mode nào :in (Print), xem trên màn hình (Print Preview) , thiết kế(Design) Filter Name Tên query dùng làm bộ lọc dữ liệu nguồn cho Report Where Condition Biểu thức để lọc dữ liệu nguồn cho Report Trang 10 ACTION Ý NGHĨA Msgbox Cho xuất hiện một hộp thông báo ra màn hình Action Arguments Message Nội dung thông báo Beep Phát ra tiếng kêu (yes), không phát ra tiếng kêu(no) Type Biểu tượng kèm theo hộp thông báo , gồm: Critical :Thông báo mang tính cảnh báo lỗi nặng Waming?:Biểu tượng kèm theo là dấu? Waming!:Biểu tượng kèm theo là dấu! Information: Biểu tượng kèm theo làchữ i Title Tiêu đề cho hộp thông báo . Windows. Trước khi thoát phải hỏi ý kiến người sử dụng trả lời Yes - > Thoát; No - > Không thoát. Condition Action Argument Msgbox(“Bạn có muốn thoát. Requery Tái truy vấn (Làm tươi) Action Arguments Control Name:<Tên Control > cần tái truy vấn. Lưu ý: Trường hợp tham số cotrol Name bỏ trống, hành động

Ngày đăng: 26/06/2013, 01:26

Hình ảnh liên quan

SỰ KIỆN VÀ MACRO I.SỰ KIỆN: - GT Access3
SỰ KIỆN VÀ MACRO I.SỰ KIỆN: Xem tại trang 1 của tài liệu.
Ví dụ 1: Tạo Form như hình trên - GT Access3

d.

ụ 1: Tạo Form như hình trên Xem tại trang 1 của tài liệu.
Print table In một bảng - GT Access3

rint.

table In một bảng Xem tại trang 4 của tài liệu.
ngôn ngữ VISUALBASIC) và nhập thêm dòng lệnh như trong hình sau: - GT Access3

ng.

ôn ngữ VISUALBASIC) và nhập thêm dòng lệnh như trong hình sau: Xem tại trang 6 của tài liệu.
Bảng mô tả một số các thuộc tính sự kiện thường dùng: (Aùp dụng cho Textbox, Combo box) - GT Access3

Bảng m.

ô tả một số các thuộc tính sự kiện thường dùng: (Aùp dụng cho Textbox, Combo box) Xem tại trang 6 của tài liệu.
Tạo Form với nút lệnh Command Button bằng Wizard để thực hiện các công việc như hình sau: - GT Access3

o.

Form với nút lệnh Command Button bằng Wizard để thực hiện các công việc như hình sau: Xem tại trang 7 của tài liệu.
View Hiện query ở mode nào: cập nhật dữ liệu (Datasheet) Xem trên màn hình (Print Preview), thiết kế(Design) - GT Access3

iew.

Hiện query ở mode nào: cập nhật dữ liệu (Datasheet) Xem trên màn hình (Print Preview), thiết kế(Design) Xem tại trang 10 của tài liệu.
ShowAllRecords Cho hiện lại tất cả các mẫu tin của bảng hay của truy vấn. Xoá bỏ mode lọc dữ liệu , dùng khi trước đó đã dùngAppliFiier - GT Access3

how.

AllRecords Cho hiện lại tất cả các mẫu tin của bảng hay của truy vấn. Xoá bỏ mode lọc dữ liệu , dùng khi trước đó đã dùngAppliFiier Xem tại trang 13 của tài liệu.
Bài 1: Tạo Form theo hình sau: và lưu lại với tên là: “XEM NGAY THANG NAM” - GT Access3

i.

1: Tạo Form theo hình sau: và lưu lại với tên là: “XEM NGAY THANG NAM” Xem tại trang 14 của tài liệu.
− Nút bật/ tắt :( Toggle Button lõm( hình dưới):chọn, lồi(hình trên):không chọn - GT Access3

t.

bật/ tắt :( Toggle Button lõm( hình dưới):chọn, lồi(hình trên):không chọn Xem tại trang 16 của tài liệu.
Ví dụ: Sử dụng Option Group tạo Form với các mục lựa chọn như hình dưới đây và đặt tên cho - GT Access3

d.

ụ: Sử dụng Option Group tạo Form với các mục lựa chọn như hình dưới đây và đặt tên cho Xem tại trang 16 của tài liệu.
− Nhắp đúp vào một trong bốn cạnh của Option Group, xuất hiện bảng thuộc tính Option Group - GT Access3

h.

ắp đúp vào một trong bốn cạnh của Option Group, xuất hiện bảng thuộc tính Option Group Xem tại trang 17 của tài liệu.
− Đóng bảng thuộc tính lại. - GT Access3

ng.

bảng thuộc tính lại Xem tại trang 17 của tài liệu.
Tạo form như hình sau và lưu lại với tên QUANLY KHACHHANG - GT Access3

o.

form như hình sau và lưu lại với tên QUANLY KHACHHANG Xem tại trang 21 của tài liệu.
6. MACRO NHÓM:( MACRO GROUP) - GT Access3

6..

MACRO NHÓM:( MACRO GROUP) Xem tại trang 21 của tài liệu.
Bài 1: Tạo Form như hình sau và lưu lại với tên QUANLYDU LIEU: (Sử dụng Option Group và - GT Access3

i.

1: Tạo Form như hình sau và lưu lại với tên QUANLYDU LIEU: (Sử dụng Option Group và Xem tại trang 22 của tài liệu.
Bài 2: Tạo Form như hình sau và lưu lại với tên “THONGKE”. (Sử dụng Option Group và Macro - GT Access3

i.

2: Tạo Form như hình sau và lưu lại với tên “THONGKE”. (Sử dụng Option Group và Macro Xem tại trang 23 của tài liệu.
Bài 3: Tạo Form như hình sau và lưu lại với tên SAP XEP DULIEU (Sử dụng Option Group, và các - GT Access3

i.

3: Tạo Form như hình sau và lưu lại với tên SAP XEP DULIEU (Sử dụng Option Group, và các Xem tại trang 24 của tài liệu.
Nếu người sử dụng bấm vào nút Thoát thì sẽ xuất hiện màn hình: - GT Access3

u.

người sử dụng bấm vào nút Thoát thì sẽ xuất hiện màn hình: Xem tại trang 25 của tài liệu.
 Allow Moving: Cho phép di chuyển thanh lệnh trên màn hình. - GT Access3

llow.

Moving: Cho phép di chuyển thanh lệnh trên màn hình Xem tại trang 27 của tài liệu.
1. Phát biểu MSGBOX: Xuất một câu thông báo ra màn hình Cú pháp: - GT Access3

1..

Phát biểu MSGBOX: Xuất một câu thông báo ra màn hình Cú pháp: Xem tại trang 33 của tài liệu.
Hướng dẫn: Tạo Form như hình và đặt tên cho các Text box. Chọn phiếu Event, chọn sự kiện After - GT Access3

ng.

dẫn: Tạo Form như hình và đặt tên cho các Text box. Chọn phiếu Event, chọn sự kiện After Xem tại trang 38 của tài liệu.
Chúng bao gồm các bảng (Table), Truy vấn (Query), Biểu mẫu (Form), Báo cáo (Report) và Tập lệnh (Macro). - GT Access3

h.

úng bao gồm các bảng (Table), Truy vấn (Query), Biểu mẫu (Form), Báo cáo (Report) và Tập lệnh (Macro) Xem tại trang 42 của tài liệu.
Ghi chú: Hàm QBColor (&lt;Số hiệu màu&gt; sẽ trả về màu của số hiệu màu tương ứng trong bảng dưới. - GT Access3

hi.

chú: Hàm QBColor (&lt;Số hiệu màu&gt; sẽ trả về màu của số hiệu màu tương ứng trong bảng dưới Xem tại trang 45 của tài liệu.
Bài tập 1: Viết chương trình nhập dữ liệu khách hàng vào bảng SANPHAM trong cơ sở dữ liệu - GT Access3

i.

tập 1: Viết chương trình nhập dữ liệu khách hàng vào bảng SANPHAM trong cơ sở dữ liệu Xem tại trang 54 của tài liệu.

Tài liệu cùng người dùng

Tài liệu liên quan