Giáo trình Quản trị cơ sở dữ liệu Access

pdf 130 trang Gia Huy 17/05/2022 3180
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Quản trị cơ sở dữ liệu Access", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_quan_tri_co_so_du_lieu_access.pdf

Nội dung text: Giáo trình Quản trị cơ sở dữ liệu Access

  1. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Đôi lời về Access! Microsoft Access: Access 2003, AccessXP, v.v là công c ụ quản trị cơ sở dữ liệu (CSDL) quan hệ mạnh, được đánh giá rất cao hiện nay v ì: thứ nhất là dễ học, thứ 2 là rất phổ dụng (trên 90% người làm Tin biết sử dụng nó - điều tra năm2006) và thứ 3 là có nhiều cấp độ phù hợp với nhiều bậc khai thác khác nhau, v.v Tin học ứng dụng bao gồm 4 vấn đề được phân chia thành 4 học phần: Học phần 1: Những khái niệm cơ bản, hệ điều hành Windows và Internet Học phần 2: Hệ soạn thảo Word và trình diễn PowerPoint Học phần 3: Bảng tính điện tử Excel Học phần 4: Quản trị CSDL Access Học 3 học phần đầu là để: Biết cách sử dụng được máy vi tính thông qua hệ điều h ành Windows; Biết cách soạn thảo các văn bản có chất l ượng thông qua Word; Biết cách thiết kế các trang trình diễn kết hợp với máy chiếu để tr ình bày trước đám đông thông qua PowerPoint; Biết cách tổ chức dữ liệu và xử lý các công việc tính toán thông qua Excel. Vậy còn Access dùng để làm gì? Xin tạm thời nói vắn tắt ngay (bạn sẽ h ình dung ra nó sau khi học ít bài đầu): Là để tạo ra một hệ thống thông tin (th ường là các tệp) có mối quan hệ với nhau, c ùng mô tả một công việc, đồng thời xử lý chúng theo những yêu cầu đặt ra trên nên của Quản trị CSDL Access có lập tr ình hoặc không. Đã có rất nhiều sách viết về Access với nhiều cấp độ khác nhau mang mầu sắc bi ên dịch, tây, ta đủ thứ, bạn đọc tha hồ tham khảo theo ý thích của m ình. Nhưng nếu bạn chưa biết gì về quản trị cơ sở dữ liệu Access thì nên tham khảo giáo trình này bởi vì mục đích của cuốn sách này là: 1. Tạo cho người học biết cách thiết kế một cơ sở dữ liệu trong công việc của mình. 2. Biết sử dụng những tính năng cơ bản của Access để xử lý hệ thống CSDL đó. 3. Biết xử lý tự động thông qua lập tr ình trong Access. Thường thì khi gặp một vấn đề mới người học hay hỏi: 1. Nội dung mới này là gì? (đối tượng được nghiên cứu) 2. Dùng nó để làm gì? (ứng dụng của đối tượng đó) 3. Hiểu và ứng dụng nó như thế nào? (chế ngự đối tượng đó) Giáo trình này sẽ trả lời thoả đáng các câu hỏi đó. Ngoài ra giáo trình cũng đề cập đến một vấn đề có tính s ư phạm trong việc viết các giáo trình Tin học ứng dụng. GS. H. Peter đã từng nói: “Đi từ quả táo rơi dẫn đến định luật hấp dẫn nhẹ nhàng và dễ hiểu hơn là đi ngược lại”. Theo tinh thần đó, các khái niệm trong giáo trình như: Quan hệ, Phụ thuộc hàm, Truy vấn, Form, Report, Module, v.v đều được mô tả bằng các ví dụ cụ thể, để các bạn có thể tự học tr ên máy tính ngay cả khi không có giảng viên hướng dẫn. Nội dung trong giáo trình này chạy được trên mọi phiên bản của Access đã có, đặc biệt là Access 2003, Access XP, v.v Vì Access chứa đượng rất nhiều tính năng, nhất l à về lập trình, do vậy việc chọn lọc nội dung trong quyển sách này không thể tránh khỏi thiếu sót về trật tự, liều l ượng và cung cách thể hiện nội dung, mong các bạn góp ý v à lưỡng thứ, để quyển sau cập nhật được tốt hơn. Chúc các bạn thành đạt! Hà nội ngày 28/12/2007 ELEC Trang 1
  2. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chương 1: Làm quen với Access 1.1 Thế nào là một CSDL Một CSDL là một tập các tệp được tổ chức cho một mục đích cụ thể n ào đó, một bộ phận lớn và rất quan trọng trong tập các tệp n ày là tệp bảng. Tệp bảng là tệp có cấu trúc hai chiều: dòng và cột. Người ta còn gọi dòng là bản ghi (Record), cột còn gọi là trường (Field). Ví dụ: để làm công việc tuyển sinh Khối A, ta tổ chức 3 tệp bảng d ùng cho công tác tuyển sinh như sau: Tệp thứ nhất có tên KhoiA(Khối AK) có dạng sau: STT SBD Họ tên Ngày sinh Địa chỉ 1 A0001 Hoàng Xuân Nam 11/04/1986 12 Hai Bà Trưng Hà Nội 2 A0002 Hồ Duy Anh 22/04/1988 20 Tràng Thi Hà Nội 3 A0003 Lê Văn Thảo 18/03/1989 Yên thành, Nghệ an 4389 A4389 Hoàng Nam Thắng 14/12/1989 Tỉnh gia, Thanh hoá Tệp thứ 2 có tên DoiTuong (đối tượng) có dạng: SBD Khu vực Ưu tiên A0001 1 2 A0002 2 1 A0003 2 9 A4389 3 3 Tệp thứ 3 có tên DiemThi (điểm thi) có dạng sau: SBD Điểm toán Điểm lý Điểm hoá Tổng điểm A0001 6.50 3.40 7.50 A0002 7.20 5.10 6.12 A0003 2.00 4.30 8.00 A4389 9.00 8.50 6.40 Một hệ thống gồm 3 tệp trên dùng để giải quyết vấn đề tuyển sinh M (tất nhiên là chưa đủ) được gọi là một CSDL, tất nhiên còn những tệp khác nữa, ta sẽ nói sau. 1.2 Thế nào là một CSDL quan hệ? Hãy quan sát 3 tệp trên, tuy về hình thức là 3 tệp riêng lẻ, nhưng giữa chúng có mối quan hệ chặt chẽ. Giả sử một thí sinh đưa cho chúng ta một số báo danh (SBD) và yêu cầu chúng ta in ra giúp họ thông tin về: Họ tên, Khu vực, Ưu tiên, Điểm toán, Điểm lý và Điểm hoá, thì chúng ta phải làm như thế nào? Rõ ràng chúng ta phải bám vào số báo danh (SBD) của tệp KhoiA (giả sử A0003) để lấy ra: Lê Văn Thảo và tiếp tục xem số báo danh đó trong tệp DoiTuong để lấy ra Khu vực là 2 và uu Tien là 9, cuối cùng lại tiếp tục căn cứa vào số báo danh đó trong tệp DiemThi để lấy ra điểm toán là: 2.00, Điểm lý là: 4.30 và Điểm hoá là: 8.00. Như vậy nhờ có mối quan hệ giữa các tệp thông qua SBD mà ta giải quyết được vấn đề trên. Ta nói rằng 3 tệp trên (hay nói tổng quát là CSDL trên) là một CSDL quan hệ (hiện thời ta tạm hiểu “quan hệ” đ ơn giản như thế ELEC Trang 2
  3. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI đã). Cơ sở dữ liệu quan hệ có thuật ngữ tiếng Anh l à Relational Database. Phần mềm nhờ nó mà ta khai thác, xử lý, tổ chức các CSDL quan hệ, đ ược gọi là Quản trị CSDL (Relational Database Management=RDM), và vì tính phong phú c ủa nó nên nhiều khi người ta cũng gọi là hệ quản trị CSDL (RDMS). Access l à một hệ quản trị CSDL quan hệ rất mạnh. 1.3 Các đối tượng trong Access Trong Access bao gồm một số đối tượng cơ bản như sau: 1.3.1 Bảng (Table) Là đối tượng dùng để lưu dữ liệu. Một bảng bao gồm cột (hay c òn gọi là trường = Fields) và hàng (hay còn gọi là bản ghi=Record). Hãy quan sát bảng sau: STT Họ tên Ngày sinh Con Lương Giới tính Tiểu sử ?nh 1 Lê Văn Lan 11/10/76 2 $1400 Nam . 2 Hồ Thị Hoa 12/04/70 1 $1640 Nữ . 3 Lê Anh Thu 01/02/79 0 $1300 Nam . Bảng trên có 8 trường bao gồm: STT, Họ tên v.v (là tên trường), sau đây là một số quy định: 1. Tên trường Để có thể lưu tệp vào đĩa, tên tệp cũng như tên trường phải được tạo ra theo quy tắc sau: Tên có thể chứa các ký tự chữ cái, chữ số, dấu cách v à các ký tự đặc biệt. Trừ ký tự dấu chấm ( . ), dấu than (!), mở móc ([ ) và đóng ( ]) Tên không được bắt đầu bằng dấu cách. Ta có thể viết lại cho đúng tên Trường của bảng trên như sau: STT HoTen NgaySinh Con Luong GioiTinh TieuSu Anh 1 Lê Văn Lan 11/10/76 2 $1400 Nam . 2 Hồ Thị Hoa 12/04/70 1 $1640 Nữ . 3 Lê Anh Thu 01/02/79 0 $1300 Nam . 2. Kiểu trường ở trên ta thấy: Trường STT có kiểu là số thứ tự nguyên dương (AutoNumber): 1, 2, 3 Trường HoTen có kiểu là văn bản (Text): Lê Văn Tài, Hồ Thị Lan v.v Trường NgaySinh có kiểu là ngày /giờ (Date/Time): 19/03/77 v.v Trường Con có kiểu số (Number): 2, 1, 0, v.v Trường Luong có kiểu số, đặc trưng cho tiền tệ (Currency): $1400, $1640, $1300, v.v Trường GioiTinh có kiểu Logic (Yes/No-đúng/sai): Khi nhập vào sẽ có một dấu kiểm  ứng với đúng và không kiểm  ứng với sai (bạn cũng có thể khai bao kiểu Text, ví dụ:Nam/ nu). Trường TieuSu có kiểu Memo (ghi nhớ tiểu sử của đ ương sự, có thể rất dài, thực chất là văn bản). Trường Anh có kiểu là hình ảnh, đồ thị, bảng tính hoặc đối t ượng khác trong môi trường Windows có hỗ trợ OLE (nhúng và nối kết đối tượng). 3. Thuộc tính trường Trường còn có những thuộc tính sau: a. Field Size: Độ dài của trường; dùng để xác định độ dài (số ký tự) tối đa của trường Text và Number b. Format: Định dạng; dùng để xác định cung cách hiển thị dạn g số tiền tệ về việc sử dụng dấu phẩy, dấu chấm, dấu %, dạng dấu phẩy động hay ký tự tiền tệ nh ư thế nào, ví dụ: $123, 345.56, 123.56%, 123.56E+02 v.v ELEC Trang 3
  4. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI c. Decimal Places: xác định số chữ số thập phân, có thể chọn tự động hay 0,1,2,3,4, 5 chữ số sau dấu phẩy thập thân. d. Input Mask: khuôn nạ nhập liệu. Ví dụ như dùng khuôn nạ / / để nhập ngày tháng năm, v.v e. Caption: Tiêu đề, có thể nhập vào một tên trường đầy đủ để về sau gắn vào nhãn trên biểu mẫu và các tiêu đề đầu của báo cáo. f. Default Value: Giá trị mặc định. Dùng để quy định một giá trị mặc định cho các loại dữ liệu trừ loại Counter, Memo và OLE Object. Nếu không quy định lại thì giá trị mặc định của số là 0; của Memo và text là Null. g. Validation Rule: Quy tắc hợp lệ. Dùng để kiểm tra dữ liệu nhập vào. Ví dụ ta đặt biểu thức: <500 có nghĩa khi nhập liệu các số chỉ đ ược phép nhỏ hơn 500; hay đặt “Hà nội” OR “Đà nẵng" OR “Huế” để kiểm tra dữ liệu nhập vào có phải là một trong 3 thành phố đó hay không. h. Validation Text: Hãy gõ vào đây một thông báo, để khi nhập dữ liệu, nếu không thoả mãn điều kiện của Validation Rule thì sẽ hiển thị thông báo đó. i. Required: Nếu thiết lập thuộc tính này là Yes thì trường này không được phép có giá trị Null. j. Allow Zero Length: Đối với trường Text hoặc Memo, thuộc tính n ày cho phép có thể đặt giá trị của trường bằng một xâu ký tự có độ dài bằng Zero hay bằng không (“ “). Xâu có độ dài Zero và giá trị Null không giống nhau. k. Indexd: Nếu đặt giá trị là Yes thì trường đó được tạo chỉ mục để tìm kiếm nhanh hơn. Muốn gỡ bỏ hãy đặt lại No. 1.3.2 Truy vấn (Query) Là đối tượng trích rút từ bảng theo những điều kiện nhất định, Query cũng l à tệp có dạng bảng. 1.3.3 Biểu mẫu (Form) Là đối tượng được thiết kế để nhập hoặc hiển thị dữ liệu 1.3.4 Báo cáo (Report) Là đối tượng được thiết kế để định quy cách, tính toán, in v à tổng hợp dữ liệu được chọn. 1.3.5 Macro Là đối tượng định nghĩa một hoặc nhiều h ành động (thao tác) mà Access sẽ thực hiện một lần khi chạy. 1.3.6 Module Là đối tượng chứa các thủ tục được lập trình bằng Access Basic để xử lý tự động. Chú ý: Bạn sẽ làm quen với Table, Query, Form, Report, Macro v à Module ở những phần sau. 1.4 Khởi động Access Cung cách khởi động Access cũng giống như khởi động Word, nếu sử dụng nút Start thì: Khởi động Windows Kích vào nút Start Di chuyển trỏ chuột đến Program, một Menu con xuất hiện Nếu thấy Microsoft Access, hãy kích vào nó, nếu không hãy di chuyển trỏ chuột đến Microsoft Office, một Menu con nữa xuất hiện và kích vào Microsoft Access. 1.5 Thoát khỏi Access. 1. Từ thanh MENU chọn File/Exit hoặc 2. kích nút Close: trên thanh tiêu đề hoặc 3. Gõ Alt + F4 ELEC Trang 4
  5. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chương 2: Thiết kế và cài đặt một CSDL 2.1 Thiết kế các bảng và xác định mối quan hệ Bảng là đối tượng đầu tiên cần phải tạo trước khi tạo ra những đối tượng khác, do vậy việc thiết kế các bảng trong một CSDL phải bảo đảm một số quy tắc nhất định để CSDL có tính hợp lý trong lưu trữ và xữ lý về sau. Ta hãy tuần tự xét một số yếu tố sau. 2.1.1 Đặt vấn đề Trong một xí nghiệp, hàng ngày người ta xuất vật tư theo phiếu xuất kho sau: Phiếu xuất kho Phiếu xuất Ngày xuất Người nhận hàng Địa chỉ Mã vật tư 1 Mã vật tư 2 P1 02/03/07 Lê Thị Nhung 35 Tràng Thi M1 M2 P2 12/03/07 Lê Thị Nhung 35 Tràng Thi M2 P3 15/03/07 Lê Anh Quân 13 Hàng bài M1 M2 P4 22/03/07 Lê Thị Nhung 35 Tràng Thi M1 Ta thấy cấu trúc bảng trên có những điều không hợp lý như sau: Cùng một người nhận vật tư, nhưng ở phiếu khác thì ta phải ghi lặp lại tên và địa chỉ của họ. Nếu có thêm vật tư M3, M4, v.v thì cấu trúc trên bị thiếu cột, nghĩa là cấu trúc trên không phù hợp nữa, mặt khác rất lãng phí để ghi tên trường mã vật tư. Cho nên vấn đề đặt ra là phải thiết kế lại bảng đó sao cho hợp lý h ơn. Thật ra để thiết kế các bảng có liên quan với nhau một cách tốt nhất trong một CSDL l à kiến thức sâu sắc của lý thuyết về CSDL (đại số quan hệ), nhưng ở đây ta chỉ dùng trực giác để xây dựng một cách tương đối, đáp ứng nhu cầu ứng dụng ngay của Access mà thôi. 2.1.2 Một số quy tắc về xây dựng CSDL Quy tắc 1: Mỗi trường trong bảng phải mô tả một loại thông tin duy nhất. Ta thấy ba trường (mã vật tư 1, mã vật tư 2) của bảng trên, cùng mô tả một loại thông tin là mã vật tư. Do đó ta nên tổ chức một cột Mã Vật Tư chứa đựng cho mọi loại vật tư, cụ thể ta sửa lại bảng trên thành bảng sau: Phiếu xuất kho Số phiếu Ngày xuất Người nhận Địa chỉ người nhận Mã vật tư P1 02/03/07 Lê Thị Nhung 35 Tràng thi M1 P1 02/03/07 Lê Thị Nhung 35 Tràng thi M2 P2 12/03/07 Lê Thị Nhung 35 Tràng thi M2 P3 15/03/07 Lê Anh Quân 13 Hàng bài M1 P3 15/03/07 Lê Anh Quân 13 Hàng bài M2 P4 22/03/07 Lê Thị Nhung 35 Tràng thi M1 Đến đây ta thấy “được cái nọ” (giảm số trường) thì lại “mất cái kia” (thêm bản ghi), quá trình nào mà chẳng như vậy! Nhưng ở đây rồi ta sẽ thấy “được” nhiều hơn, hiện tại “được” là giảm số trường còn nhiều bản ghi thì ta sẽ cải tiến sau. Quy tắc 2: Mỗi bản ghi có một số trường tối thiểu, nhờ nó mà không có các bản ghi trùng nhau. (số trường tối thiểu đó gọi là khoá cơ bản) Ví dụ một bảng bao gồm: Họ tên, Ngày sinh, khối thi. Với bảng này tất sẽ có thí sinh trùng tên, trùng ngày sinh và cả trùng khối thi, do đó không hợp với quy tắc 2. Nhưng nếu thêm trường STT hoặc trường Mã thí sinh là có thể phù hợp với Quy tắc 2. ELEC Trang 5
  6. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Mã thí sinh Họ tên Ngày sinh Thi khối 00001 Lê Thị Dung 12/03/1976 A 00002 Hoàng Lan Phương 11/11/1978 B 00003 Lê Thị Dung 12/03/1976 A Nhờ trường (Mã thí sinh) mà bản ghi 1 và 3 là khác nhau. Ta gọi trường Mã thí sinh là trường khoá. Bảng phiếu xuất kho ở trên khoá cơ bản là gì? Rõ ràng là trường Số phiếu và Mã vật tư. Quy tắc 3: (Các trường trong bảng phải đầy đủ v à liên quan đến khoá cơ bản hay còn gọi là liên quan đến chủ thể của bảng (điều này được gọi là phụ thuộc hàm) Theo quy tắc trên có nghĩa là phải đạt 2 yêu cầu: Yêu cầu thứ nhất là phải đầy đủ các trường, ví dụ bảng phiếu xuất kho có khoá c ơ bản là (Số phiếu và Mã vật tư) phải là của ai? (Họ tên), ngày nào xuất (Ngày xuất) v.v nếu thiếu một trong những trường đó thì chủ thể (xuất kho) không có ý nghĩa. Yêu cầu thứ hai là các trường đó phải liên quan đến khoá cơ bản, ví dụ ta không nên thêm trường (bậc lương người nhận) vì điều đó không liên quan đến chủ thể xuất kho (ta gọi là không phụ thuộc hàm), vì vậy mà bảng trên nên tách thành 2 bảng sau: Phiếu kho Số phiếu Ngày xuất Người nhận Địa chỉ P1 02/03/07 Lê Thị Nhung 35 Tràng thi P2 12/03/07 Lê Thị Nhung 35 Tràng thi P3 15/03/07 Lê Anh Quân 13 Hàng bà P4 22/03/07 Lê Thị Nhung 35 Tràng thi Vật tư Số phiếu Mã vật tư P1 M1 P1 M2 P2 M2 P3 M1 P3 M2 P4 M1 Quy tắc 4: Có thể thay đổi được một trường bất kỳ (trừ các khoá cơ bản) mà không ảnh hưởng đến mọi trường khác. Ở bảng Phiếu kho, nếu ở dòng 1 ta “vô tình” gõ tên người nhận là Lê Anh Quân (đáng lý là Lê Thị Nhung) thì sẽ dẫn đến thêm một sai lầm nữa ở trường Địa chỉ vì Lê Anh Quân không ở 35 Tràng Thi. Thực ra Địa chỉ là phụ thuộc hàm vào Người nhận. Do đó nên tách bảng Phiếu kho thành 2 bảng: Phiếu và Địa chỉ như sau: Phiếu Số phiếu Ngày xuấtN Người nhận P1 02/03/07 Lê Thị Nhung P2 12/03/07 Lê Thị Nhung P3 15/03/07 Lê Anh Quân P4 22/03/07 Lê Thị Nhung Người nhận Người nhận Địa chỉ Lê Thị Hoa 35 Tràng thi Lê Anh Quân 13 Hàng bài ELEC Trang 6
  7. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Ta kiện toàn bảng Người nhận thật chính xác, sau đó nếu có nhỡ v ào “Lê Anh Quân” thay vị trí “Lê Thị Nhung“ ở bảng Phiếu thì địa chỉ Lê Anh Quân vẫn không thay đổi. 2.1.3 Các bảng được xây dựng (trong một chủ thể) phải có mối quan hệ Nếu ta thiết kế tốt thì các bảng đó sẽ có mối quan hệ, nhờ mối quan hệ đó m à ta lần ra kết quả khi có yêu cầu. Ví dụ ở bảng Phiếu, Vật tư và Địa chỉ, nếu có yêu cầu là hãy xem số phiếu P3 xuất vào ngày nào, ai nhận, họ ở đâu và có những mặt hàng nào? Bước 1: Tìm P3 ở bảng Phiếu biết được ngày xuất là: 15/03/99 và người nhận là: Lê Anh Quân Bước 2: Tìm Lê Anh Quân ở bảng Người nhận để biết địa chỉ là: 13 Hàng bài Bước 3: Tìm P3 ở bảng Vật tư để biết mặt hàng là: M, M2 Như vậy bảng kết quả (truy vấn hay vấn tin) sau: Vấn tin Số phiếu Ngày xuất Người nhận Địa chỉ Mã vật tư P3 15/03/07 Lê Anh Quân 13 Hàng bài M1 P3 15/03/07 Lê Anh Quân 13 Hàng bài M2 Nhờ các trường: Số phiếu, Người nhận mà ta tìm ra kết quả bảng Vấn tin trên, ta nói rằng hai trường đó là khoá liên kết ngoài (Foreign key) 2.1.3.1 Quan hệ 1:n Quan hệ 1: n là quan hệ mà mỗi bản ghi bất kỳ trong bảng thứ nhất có quan hệ với nhiều bản ghi trong bảng thứ hai. Ví dụ bảng Phiếu và bảng Vật tư là quan hệ 1: n, nghĩa là một phiếu xuất kho có thể có nhiều vật tư; hay bảng Người nhận và bảng Phiếu là quan hệ 1: n bởi vì một người nhận hàng có thể xuất hiệu trong nhiều phiếu. 2.1.3.2 Quan hệ 1:1 Quan hệ 1: 1 là quan hệ mỗi bản ghi bất kỳ trong bảng thứ nhất có quan hệ với 1 bản ghi trong bảng thứ 2. Ví dụ ta không muốn bảng Người nhận xuất hiện trường Đạo đức của họ, nên ta tổ chức các bảng Người nhận là Người nhận 1 và Đạo đức như sau: (Bảng Đạo đức giữ “bí mật” chẳng hạn) Người nhận 1 Mã người nhận Người nhận Địa chỉ 00001 Lê Thị Nhung 35 Tràng thi 00002 Lê Anh Quân 13 Hàng bài Đạo đức Mã người nhận Đạo đức 00001 Tốt 00002 Có tiền án Hai bảng trên có quan hệ 1:1 2.2 Cài đặt một bảng lên đĩa thông qua Access Giả sử có một cưả hàng một ngày (ngày 14/12/07 chẳng hạn) có bản thống kê bán hàng trong ngày đó như sau: Ngày Mã mặt Tên hàng Đơn giá Số lượng Tổng tiền Đã thanh hàng (đồng) trong ngày toán 14/04/07 M1 Radio 1000000 2 15000000 10000000 M2 Tủ lạnh 4000000 1 M3 Ti vi 3000000 3 Ta xây dựng một bảng cho 3 ngày bán hàng như sau: ELEC Trang 7
  8. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Bán hàng STT Ngày Mã Mặt Tên hàng Đơn giá Số Tổng tiền Đã thanh tháng hàng lượng trong ngày toán 1 14/12/07 M1 Radio 1000000 2 15000000 10000000 2 14/12/07 M2 Tủ lạnh 4000000 1 15000000 10000000 3 14/12/07 M3 Ti vi 3000000 3 15000000 10000000 4 15/12/07 M1 Radio 1000000 1 6000000 4000000 5 15/12/07 M2 Tủ lạnh 4000000 1 6000000 4000000 6 16/12/07 M2 Tủ lạnh 4000000 2 17000000 7000000 7 16/12/07 M3 Ti vi 3000000 3 17000000 7000000 Ta thấy khoá cơ bản là STT. Như đã phân tích ở trên, ta không lưu bảng này mà tách thành 4 bảng sau: Bảng thứ nhất có tên là Số lượngB: Tên tệp là SoLuong Số lượng STT Ngày tháng Mã mặt hàng Số lượng (Cái) 1 14/12/07 M1 2 2 14/12/07 M2 1 3 14/12/07 M3 3 4 15/12/07 M1 1 5 15/12/07 M2 1 6 16/12/07 M2 2 7 16/12/07 M3 3 Khoá cơ bản là Số thứ tự (STT) Bảng thứ 2 có tên là Doanh sốB: Tên tệp là DoanhSo Doanh số Ngày tháng Tổng tiền trong ngày Đã thanh toán 14/12/07 15000000 10000000 15/12/07 6000000 4000000 16/12/07 17000000 7000000 Khoá cơ bản là Ngày tháng Bảng thứ 3 có tên Loại hàng tên tệp là: LoaiHang Loại hàng Mã mặt hàng Tên hàng M1 Radio M2 Tủ lạnh M3 Ti vi Khoá cơ bản là Mã mặt hàng Bảng thứ 4 có tên DơnGia Đơn giá Tên hàng Đơn giá Radio 1000000 Tủ lạnh 4000000 Ti vi 3000000 Khoá cơ bản là: Tên hàng Sau khi thiết kế các bảng có mối quan hệ trong một CSDL nh ư trên, việc tiếp theo là cài chúng lên đĩa thông qua Access như thế nào? sau đây là trình tự các bước: Bước 1: Khởi động Access, giao diện sau xuất hiện: ELEC Trang 8
  9. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn Create a new file, ta có hộp thoại: Bước 2: Chọn Bank Database Gõ tên CSDL ở File Name là BanHang và chọn Create sau đó hộp thoại có dạng: Hãy chọn tables và New, sau đó hộp thoại sau xuất hiện: ELEC Trang 9
  10. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Ta thấy trên hộp thoại xuất hiện các thành phần: Datasheet View : Trưng diện bảng dữ liệu Design View : Tạo cấu trúc bảng Table Wizard : Tạo từ tệp có sẵn Inport Table : Tạo từ việc Import Link Table : Tạo từ liên kết Nhiệm vụ của chúng ta là tạo cấu trúc bốn bảng: SoLuong, DoanhSo, LoaiHang v à DonGia. Do đó hãy chọn Design View ta có: Ở dòng 1 ứng với cột Field Name gõ vào: Stt và gõ Enter hoặc gõ mũi tên phải, sau đó ở cột Data Type hãy kích vào mũi tên xuống để chọn kiểu dữ liệu, ở đây ta chọn Autonumber (vì dữ liệu là 1, 2, 3.v.v ), như hình sau: ELEC Trang 10
  11. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Tiếp tục ở dòng 2 ứng với cột Field Name gõ vào tên trường: Ngay_Thang và gõ mũi tên phải, sau đó kích vào mũi tên xuống để chọn kiểu dữ liệu, ở đây ta chọn Date/Time. Tiếp đến chọn Format và chọn Short Date (kiểu ngày / tháng / năm), không chọn Input Mask (vì dữ liệu Date /Time đã được chuẩn hoá không cần khuôn nhập liệu), không chọn các mục sau đó. Ở dòng 3 ứng với cột Field Name gõ vào tên trường: Ma_Mat_Hang và gõ Enter hoặc mũi tên phải, sau đó kích vào mũi tên xuống để chọn kiểu dữ liệu, ở đây ta chọn Text, tiếp đến chọn Field Size để gõ vào độ dài (ở đây ta chọn Interger). Ở dòng 4 ứng với mũi tên phải gõ vào tên trường: So_Luong và gõ Enter hoặc mũi tên phải, sau đó kích vào mũi tên xuống để chọn kiểu dữ liệu, ở đây ta chọn Number, tiếp đến chọn Field Size để gõ vào độ dài (ở đây ta chọn Interger). Sau khi đưa xong các chọn File /Close và Access hỏi: Hãy chọn Yes và gõ tên tệp: SoLuong vào Table Name như hình sau: Hãy chọn OK để kết thúc. Như vậy ta đã tạo xong cấu trúc cho bảng SoLuong. Hãy chọn File/Close để tạo cấu trúc cho bảng DoanhSo, sau đó lại tiếp tục cho bảng LoaiHang và Dongia. Sau khi gõ xong cấu trúc 4 tệp trên ta có hình sau: Việc tiếp theo là nạp dữ liệu vào cấu trúc các bảng trên, giả sử ta nạp dữ liệu cho bảng Soluong: Chọn bảng Coluong và chọn Open, ta có: ELEC Trang 11
  12. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Gõ ngày tháng vào trường Ngay_Thang, gõ M1 vào trường Ma_Mat_Hang và gõ mũi tên phải, con trỏ chuyển sang trường So_Luong, gõ vào 2 và Enter, lại tiếp tục như vậy cho đến hết. Gõ xong ta có: Để kết thúc hãy chọn § ile/Close, sau đó mở bảng khác để vào dữ liệu như trên. 2.3 Thiết lập mối quan hệ Bốn bảng trên (DoanhSo, Soluong, Loaihang và DonGia) có các trư ờng: . Ngay_Thang (của DoanhSo) quan hệ với Ngay _Thang (của SoLuong) . Ma_Mat_Hang (của SoLuong) quan hệ với Ma_Mat_Hang (của LoaiLang) . Ten_Hang (của LoaiHang) quan hệ với Ten _Hang (của DonGia) . Ta thiết lập các mối quan hệ đó để về sau d ùng đến như sau: Kích vào nút (nút Relationships) trên thanh công c ụ sau đó ta có hộp thoại: Sau đó thao tác: Chọn tệp DoanhSo và kích Add Chọn tệp SoLuong và kích Add Chọn tệp LoaiHang và kích Add Chọn tệp DonGia và kích Add Cuối cùng kích vào Close và ta có hộp thoại: ELEC Trang 12
  13. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Hãy thiết kế mối quan hệ bằng cách: Kích vào trường Ngay_Thang (của DoanhSo) kéo vào trường Ngay_Thang (của SoLuong) sau đó hộp thoại sau hiện ra: Hãy chọn Create. Kích vào trường Ma_Mat_Hang (của SoLuong) kéo v ào trường của Ma_Mat_Hang (của LoaiHang) và chọn Create Kích vào trường Ten _Hang (của LoaiHang) kéo vào trường Ten _Hang (của DonGia) và chọn Create, cuối cùng ta có hình ảnh: Muốn xoá mối quan hệ, hãy kích vào đường quan hệ và gõ phím Delete. 2.4 In một bảng Để in một bảng ta thao tác sau: Chọn bảng (giả sử ta chọn bảng SoLuong) và chọn Open, ta có hộp thoại: ELEC Trang 13
  14. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn File/Page Setup, chọn Margins để cài đặt lề (trên, dưới, traí, phải) chọn Page để chọn hướng in và kích cỡ giấy. Chọn File/Print ta có hộp thoại in như sau: Hãy chọn những thông số in thích hợp (All hoặc từ trang nào đến trang nào v.v ) cuối cùng chọn OK để in. Câu hỏi và bài tập (chương 1,2) 1. CSDL là gì? 2. Khoá cơ bản là gì? 3. Nêu những nguyên tắc thiết kế CSDL? 4. Access có những đối tượng nào? 5. Một bảng bao gồm những yếu tố nào? 6. Trường có những thuộc tính nào, cho biết một số thuộc tính? 7. Hãy khởi động Access? 8. Hãy tự thiết kế 2 bảng sau: Bảng 1B: có tên Lop bao gồm: Mã sinh viên, Họ đệm, Tên, Ngày sinh Bảng 2B: có tên Diem bao gồm: Mã sinh viên, Điểm toán, Điểm lý, Điểm hoá Hãy tạo cấu trúc bảng và nạp dữ liệu cho bảng 9. Thiết kế mối quan hệ 2 bảng ở bài 8 10. Hãy bỏ mối quan hệ ở bài 9 11. Với câu 8 hãy thêm một bảng Đạo đức gồm: Mã sinh viên, Hạnh kiểm. Hãy thiết lập mối quan hệ giữa 3 bảng đó. ELEC Trang 14
  15. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chương 3: Sửa cấu trúc và sửa dữ liệu bảng Một bảng dù thiết kế cẩn thận đến đâu, sau một thời gian ta vẫn thấy cần có sự thay đổi về cấu trúc cũng như dữ liệu của bảng, ví dụ như: Đổi tên trường Thêm, bớt một số trường Thay đổi kiểu trường Thay đổi độ dài trường Thay đổi vị trí các trường Chèn thêm bản ghi Xoá bớt bản ghi Cập nhật dữ liệu mới v.v Sau đây chúng ta nói về cung cách sửa cấu trúc và sửa dữ liệu của tệp bảng đó. 3.1 Sửa cấu trúc bảng Hãy mở bảng (giả sử bảng SoLuong) ở dạng Design, sau đó ta có hình ảnh sau: 3.1.1 Thay đổi tên trường Kích vào tên trường cần sửa, để đưa trỏ text đến đó Sau đó gõ tên trường mới vào 3.1.2 Chèn thêm trường Kích vào tên trường cần sửa, để đưa trỏ text đến đó Chọn Insert/Rows, sau đó dòng đó trống Gõ tên trường cần chèn vào, đồng thời xác định kiểu và độ dài trường luôn. 3.1.3 Xoá tên trường Chọn trường bằng cách kích chuột vào đầu dòng đó (khi trỏ chuột biến thành mũi tên phải), hoặc đưa trỏ text về trường đó Chọn Edit/Delete Rows, sau đó hộp thoại hiện ra: ELEC Trang 15
  16. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Nếu định xoá thật hãy kích vào Yes, nếu không kích vào No 3.1.4 Thay đổi kiểu dữ liệu trường Khi dữ liệu từ một kiểu này được thay đổi thành kiểu dữ liệu khác, Access sẽ xử lý theo các nguyên tắc sau: 1. Chuyển từ text sang các kiểu sau: Memo: Access sẽ xoá các chỉ mục của trường text Number: văn bản phải chỉ chứa các ký số, dấu thập phân và dấu phân cách hợp lệ Date/Time: Văn bản có dạng ngày mà máy có thể nhận dạng được, ví dụ 12-Dec- 97 7:23PM v.v Currency: Văn bản chỉ chứa các số và dấu phân cách hợp lệ. Counter: Không thể được nếu trường đã có dữ liệu Yes/No: Văn bản phải là một trong các giá trị sau: Yes, No, True, False, On, Off 2. Chuyển từ Memo sang kiểu sau: Text: Access sẽ cắt bỏ phần văn bản dài quá 255 ký tự Number: Văn bản Memo phải chỉ chứa các số và dấu phân cách hợp lệ Date/Time: Văn bản Memo phải chứa các giá trị có thể nhận dạng đ ược, ví dụ: 9- Nov-96 11:23PM Currency: Văn bản Memo chỉ chứa các số và dấu phân cách hợp lệ, ví dụ $ 1,234,340.50 Counter: Không đổi được nếu trường đã có dữ liệu Yes/No: Văn bản phải là một trong các giá trị sau: Yes, No, True, False, On, Off 3. Chuyển từ Number sang các kiểu sau : Text: Không hạn chế Memo: Không hạn chế Date/Time: Số phải nằm trong vùng hợp lệ Currency: Không hạn chế Counter: Không được nếu trường đang chứa dữ liệu Yes/No: Giá trị Null hoặc Zero chuyển thành No, còn giá trị khác thành yes. 4. Chuyển từ Date/Time sang các kiểu sau: Text: Không hạn chế Memo: Không hạn chế Number: Không hạn chế Currency: Không hạn chế Counter: Không được nếu trường đang chứa dữ liệu Yes/No: 12 : 00 : 00 AM hoặc Null đổi thành No, các giá trị khác thành Yes 5. Chuyển từ Currency sang các kiểu sau: Text: Không hạn chế Memo: Không hạn chế Number: Được nhưng phải phù hợp với độ lớn Date/Time: Phải phù hợp với độ lớn Counter: Không được, nếu trường đang chứa dữ liệu Yes/No: Zero và null sẽ bằng No, còn lại bằng Yes 6. Chuyển từ Counter sang các kiểu sau: Text: Không hạn chế Memo: Không hạn chế Number: Không hạn chế ELEC Trang 16
  17. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Date/Time: Giá trị phải trong khoảng phù hợp Counter: Không hạn chế Yes/No: Tất cả để bằng Yes 7. Chuyển từ Yes /No sang các kiểu sau: Text: chuyển thành chữ “Yes” hoặc “No” Memo: chuyển thành chữ “Yes” hoặc “No” Number: No=0; Yes=1 Date/Time: No=12:00 00AM; Yes=12/29/1899 Currency: No=0; Yes=$1 Counter: Không chuyển được 8. Thay đổi độ dài dữ liệu Trường văn bản có độ dài cực đại là 255, nhưng cũng có thể ngắn 1 ký tự. Nếu độ d ài của trường văn bản không được quy định thì Access sẽ gán độ dài mặc định là 50, khi đã quy định độ dài cho trường thì không được phép nhập vào độ dài lớn hơn. Độ dài của trường số thì theo kiểu số nào: Byte, Integer v.v 9. Lỗi chuyển đổi Khi lưu cất một bảng đã sữa đổi, Access có thể thông báo lỗi n ếu quá trình chuyển đổi có gây lỗi, ví dụ chuyển từ Integer sang Byte, nếu số nguy ên >255 thì sẽ gây lỗi, tuỳ ý định cuả ta mà kích vào Yes hay Cancel của hộp thoại thông báo lỗi. 3.1.5 Tách một bảng Sau khi làm việc một thời gian ta nhận thấy có một số tr ường thực ra không dùng đến hoặc ít dùng đến, nếu ta tách thành một bảng mới không có các trường đó thì có khi xử lý bảng nhanh hơn, việc làm đó có thể thực hiện đơn giản bằng cách: Sao thêm một bảng mới từ bảng cần tách Mở bảng mới ở chế độ Design và xoá đi những trường không cần đến Thiết lập lại các quan hệ nếu cần 3.2 Thao tác và sữa dữ liệu trong bảng Để làm việc với bảng trước hết ta hãy mở bảng đó bằng cách: . Mở CSDL . Kích đúp vào bảng cần làm việc, sau đó bảng xuất hiện ở dạng Datasheet: 3.2.1 Một số thao tác 1. Di chuyển trong bảng ởëgóc dưới bên trái cửa sổ Datasheet là hộp số hiệu bản ghi. Hãy kích chuột vào đó và gõ vào một số hiệu bản ghi (ở trên ta đã gõ số 6) để đưa con trỏ bản ghi về bản ghi đó, phía bên phải hộp số hiệu bản ghi là tổng số bản ghi (ở trên là số 7-bảy bản ghi): ELEC Trang 17
  18. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Một số phím gõ tắt hay dùng như sau: PgUp : Lên một trang PgDn : Xuống một trang Ctrl + PgUp : Sang trái một trang Crtl + PgDn : Sang phải một trang Tab : Trường tiếp theo Shift + Tab : Trường đứng trước Home : Trường đầu tiên của bản ghi hiện thời End : Trường cuối cùng của bản ghi hiện thời  : lên một bản ghi  : Xuống một bản ghi Ctrl +  : Về bản ghi đầu tiên Crtl +  : Về bản ghi cuối cùng Crtl + Home : Về đầu giá trị của trường Crtl + End : Về cuối giá trị cảu trường 2. Thay đổi chiều cao hàng Chọn hàng cần thay đổi Chọn Format/Row Height sau đó ta có hộp thoại: Gõ số đó vào Row Height và chọn OK 3. Thay đổi độ rộng cột Chọn cột cần thay đổi Chọn Format/Column Width: Gõ số đo vào Column Width và chọn OK 4. Giấu và hiện các cột Chọn cột cần giấu Chọn Format/Hide Columns ELEC Trang 18
  19. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Muốn hiện lại hãy chọn Format/Unhide Columns sau đó: Đặt dấu kiểm vào tên trường cần hiện lại (Mat_Vat_Tu) v à chọn Close 5. Cố định các cột trên màn hình Một bảng có thể có rất nhiều cột, nhiều khi ta muốn cố định một số cột trên màn hình để quan sát trong khi vẫn cứ dịch trái, phải mà các cột đó vẫn còn. Ta thao tác như sau: Chọn các cột đó Chọn Format/Freeze Columns Muốn không cố định nữa hãy chọn Format/Unfreeze All Columns 6. Chọn phông chữ Chọn chữ cần đặt lại phông Chọn Format/Font Chọn Font, Font Style, Size và OK 3.2.2 Sửa đổi dữ liệu trong bảng 1. Thêm một bản ghi Chọn Insert/New Record sau đó con trỏ bản ghi trở về cuối bảng Gõ bản ghi mới vào 2. Xoá bản ghi Chọn bản ghi cần xoá Chọn Edit/Delete Record sau đó hộp thoại hiện ra và xác nhận Yes nếu định xoá, hoặc No nếu không xoá 3. Sửa dữ liệu Dịch trỏ Text đến dữ liệu cần sửa v à sửa lại 4. Thay thế dữ liệu Khi sữa giống nhau trong nhiều bản ghi ta n ên chọn chế độ thay thế dữ liệu. Chọn ô đầu tiên của trường cần sữa và chọn tiếp Edit /Replace sau đó ta có hộp thoại: Gõ nội dung cần tìm vào Find What: (giả sử M3g) Gõ nội dung cần thay thế vào Replace With: (giả sử M7) Chọn Replace All (nếu muốn thay thế tất cả) và chọn Close 3.2.3 Sắp xếp dữ liệu 1. Sắp xếp đơn giản một trường ta làm như sau: ELEC Trang 19
  20. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn trường cần sắp xếp Kích vào nút trên thanh công cụ nếu muốn sắp xếp tăng dần Kích vào nút trên thanh công cụ nếu muốn sắp xếp giảm dần 2. Sắp xếp theo nhiều trường Chọn Records/Filter/Advanced Filter/Sort như hình sau: Sau đó ta có hộp thoại: Mở danh sách trường ở dòng Field Đặt chế độ sắp xếp ở dòng Sort Chọn Filter/Apply Filter/Sort như hình sau: 3.2.4 Tìm kiếm và lọc dữ liệu 1. Tìm kiếm Để tiến hành tìm kiếm đơn giản trên một trường cụ thể ta thao tác như sau: Chọn trường đó Chọn Edit/Find sau đó ta có hộp thoại: ELEC Trang 20
  21. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Gõ dữ liệu cần tìm vào Find What, giả sử gõ vào M2 có thể dùng ký tự * thay cho một nhóm ký tự hoặc? thay cho một ký tự bất kỳ Chọn All vào Search nếu định tìm tất cả Chọn Whole Field vào Match nếu nội dung trọn một trường Chọn Find First để tìm dữ liệu từ đầu bảng v.v cuối cùng chọn Close 2. Lọc dữ liệu Gả sử ta có bảng sau: Ta lọc ra những thành phần (và có thể sắp xếp luôn) có Ma_Mat_Hang bằng M2. ta thao tác như sau: . Chọn Records/Filter/ Advanced Filter/Sort sau đó ta có hộp thoại sau: Đặt tên trường Ma _Mat_Hang vào dòng Field Đặt Ascending hoặc Descending vào dòng Sort Đặt =”M2”: vào cột Ma_Mat_Hang ứng với dòng Criteria như hình sau: ELEC Trang 21
  22. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn Filter/Apply Filter/Sort, sau đó ta có: Câu hỏi và bài tập chương 3 1. Sửa những gì thì được gọi là sửa cấu trúc bảng, cho ví dụ 2. Hãy tạo bảng có tên khối A với các trường sau: Hodem (Text, 25) Ten (Text, 7) NgaySinh (Date/Time) GioiTinh (Yes/No) Toan (Number) Ly (Number) Hoa (Number) Hãy tạo cấu trúc và nạp 10 bản ghi Hãy đổi tên trường Hodem thành Holot Hãy thêm trường Tong (Number) Hãy chuyển kiểu của NgaySinh (Date/Time) th ành kiểu Number Hãy tạo một bảng khác chỉ chứa Toan, Ly, Hoa, Tong Cũng với bảng của câu hỏi 2: Hãy xếp giảm dần theo điểm toán Hãy xếp tăng dần theo điểm lý Hãy lọc ra những thí sinh có điểm Toán <=3 Hãy lọc ra những thí sinh có điểm Lý <=4 Hãy tìm những thí sinh có điểm Toán là 7 3. Cũng với bảng của câu hỏi 2: Hãy thực hiện các thao tác: chèn thêm bản ghi, xoá bản ghi, thay thế dữ liệu v à đặt lại Font cho dữ liệu ELEC Trang 22
  23. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chương 4: Trích rút dữ liệu bằng các truy vấn 4.1 Đặt vấn đề Để đơn giản ta vẫn dùng 4 bảng đã nói ở phần trước như sau: Số Lượng STT Ngày tháng Mã mặt hàng Số lưọng 1 14/12/07 M1 2 2 14/12/07 M2 1 3 14/12/07 M3 3 4 15/12/07 M1 1 5 15/12/07 M2 1 6 16/12/07 M2 2 7 16/12/07 M3 3 Doanh Số Ngày tháng Tổng tiền trong ngày Đã thanh toán 14/12/07 15000000 10000000 15/12/07 6000000 4000000 16/12/07 17000000 7000000 Loại Hàng Mã mặt hàng Tên hàng M1 Radio M2 Tủ lạnh M3 Ti vi Đơn giá Tên hàng Đơn giá Radio 1000000 Tủ lạnh 4000000 Ti vi 3000000 Mặc dù đã làm một số việc với bảng như: Hiện bảng, sửa bảng, xếp bảng, lọc ra những bản ghi theo một chuẩn nào đó v.v Nhưng còn nhiều vấn đề nữa thực sự cần thiết ví dụ nh ư: Hiện (và tạo thành bảng mới) những bản ghi (của bảng SoLuong) có m ã mặt hàng là M2? Hiện những bản ghi (DoanhSo) có tổng tiền tro ng ngày từ 15 triệụ trở lên? Lấy những thông tin liên quan đến 4 bảng trên ứng với ngày 14/12/07? Những người nào có mua mặt hàng Radio? Và còn nhiều yêu sách nữa v.v Những việc làm trên được gọi là truy vấn (Query). Trong Access cho phép ta tạo ra các truy vấn một cách nhanh chóng và đa dạng. 4.2 Truy vấn trong một bảng Mở CSDL BanHang.mdb (ta vẫn trung thành với CSDL này mặc dù nó đơn giản, chính nhờ đơn giản mà dễ truyền tải nội dung) Chọn Queries và chọn New sau đó hộp thoại hiện ra: ELEC Trang 23
  24. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI . Bước đầu hãy chọn Design View và chọn OK, một hộp thoại khác xuất hiện, hãy chọn bảng SoLuong rồi kích vào Add và chọn Close, hộp thoại Query1 ra đời như sau: Đến đây bạn cần làm tiếp những việc: Ở dòng Field: hãy đưa các tên trường cần hiển thị (kích và chọn) Ở dòng Table: sẽ cho biết tên bảng Ở dòng Sort: Nếu định sắp xếp hãy đưa Ascending hoặc Descending vào Ở dòng Show: Nếu định hiện trường đó hãy xác định dấu kiểm Ở dòng Criteria: Đưa vào tiêu chuẩn tìm kiếm Ở dòng Or: Đưa vào tiêu chuẩn tìm kiếm ứng với phép toán Logic OR Ví dụ: Để hiển thị những bản ghi có Ma_Mat_Hang=”M2” hoặc Ma_Mat_Hang=”M3”, h ình sau: ELEC Trang 24
  25. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI . Hãy chọn Query/Run và ta có kết quả: Hãy kích vào nút Close trên thanh tiêu đề Query1 và đưa tên Query vào (giả sử ta gõ tên Query là: QuerySoLuong) hộp thoại quay về: Như vậy ta đã tạo được một Query có tên QuerySoLuong (thực chất cũng là một bảng). ELEC Trang 25
  26. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 4.2.1 Một số phép toán dùng để nhập các tiêu chuẩn Trên dòng Criteria nếu ứng với hai cột đều có tiêu chuẩn, điều đó tương đương với phép And. Ví dụ: Hiện những bản ghi (bảng SoLuong) có Ma _Mat_Hang=”M2” v à số lượng là 2, hãy gõ vào như hình sau: Còn nếu: Hiện những bản ghi có Ma _M at_Hang=”M2” và số lượng là 2 hoặc 1, ta gõ vào như hình sau: 1. Các toán tử so sánh gồm: = : Bằng > : Lớn hơn = : Lớn hơn hoặc bằng : Khác 2. Các toán tử BETWEEN, IN và LIKE BETWEEN: Dùng để quy định một khoảng giá trị, ví dụ Between 10 and 20 tương đương cách viết >= 10 and <=20 ELEC Trang 26
  27. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI IN: Dùng để quy định một danh sách các giá trị, ví dụ IN (12, 3, 45) tương đương 12 or 3 or 45, hay IN(“(Ha noi”, “Hai phong”, “Da nang”) tương đương “Ha noi” OR “Hai phong” OR “Da nang” LIKE: Dùng để tìm một nhóm ký tự trong một trường văn bản. Cụ thể dấu * dùng để chỉ một xâu ký tự có độ dài bất kỳ, dấu ? dùng để chỉ 1 ký tự. Ví dụ hiển thị những bản ghi m à tên mặt hàng có chữ cái đầu là T, ta viết: LIKE T*. (Ti vi, Tủ lạnh - bảng DonGia) Ở LIKE còn có thể kèm theo: Dấu # chỉ một ký tự số ở một vị trrí Dấu! để chỉ sự loại trừ [0-9] để chọn mọi ký tự số [a-z] để chọn mọi ký tự chữ cái Ví dụ: LIKE “?[a-z]*”: Ký tự đầu bất kỳ, ký tự thứ hai là chữ cái, sau đó là một nhóm ký tự bất kỳ. LIKE “[!0-9]a[a-z]”: Ký tự đầu không phải số, ký tự thứ 2 l à a, ký tự thứ 3 là chữ cái. 3. Sử dụng dữ liệu ngày giờ: Các giá trị ngày và giờ luôn phải đặt trong dấu #, ví dụ: # April 23, 2007# #3/24/07# #6:23PM# (6 giờ 23 chiều) #18:23# (đều là 6h23 chiều) Một số hàm cần nhớ: Day(ngay): Trả lại giá trị ngày trong Date Month(ngay): Trả lại giá trị tháng trong Date Year(ngay): Trả lại giá trị năm trong Date Weekday(ngay): Trả lại giá trị thứ ứng với Date (thứ 1=Chủ nhật) Date(ngay): Trả lại ngày hệ thống. Sau đây là một ví dụ: (ứng với bảng SoLuong). Hiện những bản ghi có Ma_Mat_Hang là “M1” ứng với ngày 14, ta thao tác như sau: 1. Ta định nghĩa thêm một trường mới, giả sử trường có tên là Tinh_Toan (Tính toán). Gõ vào tên trường (Tinh_Toan) và dấu hai chấm, sau đó gõ tiếp hàm Day([Ngay_Thang]) vào sau dấu hai chấm. (Tên trường để trong đấu ngoặc []) 2. Gõ tiêu chuẩn G (=14) vào dòng Criteria ứng với trường Tính_Toán 3. Gõ tiêu chuẩn (=”M1”) vào dòng Criteria ứng với trường Ma_Mat_Hang, như hình sau: ELEC Trang 27
  28. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 4. Chọn Query /Run ta có kết quả: Các hàm khác thiết kế tương tự. 4.2.2 Tính toán Một số phép toán cần nhớ: + : Phép cộng; - : Phép trừ; * : Phép nhân; / : Phép chia \ : Làm tròn hai biểu thức trước khi chia, kết quả cũng làm tròn thành số nguyên; ^ : Phép mũ (ab = a^b) Mod: Làm tròn hai biểu thức thành các số nguyên, sau đó lấy số dư của biểu thức thứ nhất chia cho biểu thức thứ hai & : Ghép nối các xâu văn bản Giả sử ta có bảng KhốiA nằm trong CSDL Tuyen_sinh.mdb như sau: ELEC Trang 28
  29. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Ta có thể tạo thêm một trường Tong_Diem (Tổng điểm) để cộng các điểm Toán, Lý, Hoá. Hãy gõ như sau: Chọn Query/Run để xem kết quả: ELEC Trang 29
  30. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 4.2.3 Sử dụng Expression Builder Access có trình tiện ích Expression Builder dùng để xây dựng một biểu thức phức tạp, giả sử ta phải tính tổng điểm của Toán, Lý, Hoá (tuy ví dụ n ày không phức tạp, nhưng để chúng ta dễ hiểu cách thao tác) bằng trình tiện ích trên, ta làm như sau: Tạo một truy vấn từ bảng KhoiA, giả sử truy vấn sau: Đưa trỏ chuột vào trường có tên Tong _Diem và hai chấm (:). Chọn Expression Builder trên thanh công cụ, sau đó hộp thoại hiện ra: ELEC Trang 30
  31. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Kích đúp vào Tables và kích vào bảng KhoiA ta có hộp thoại: Đến đây ta làm tiếp: Chọn DiemToan và chọn Paste Chọn dấu + Chọn DiemLy và chọn Paste Chọn dấu + Chọn DiemHoa và chọn Paste Sau đó hộp thoại có hình sau: ELEC Trang 31
  32. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn tiếp OK ta có: Chọn Query/Run ta có kết quả: ELEC Trang 32
  33. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 4.2.4 Truy vấn theo nhóm Có lúc ta chỉ muốn biết tổng số theo từng nhóm dữ liệu. Ví dụ ta muốn biết trong ng ày 14/12/07 (bảng SoLuong) số lượng các mặt hàng bán ra là bao nhiêu? Hay số lượng ứng với mặt hàng M1 bán ra trong các ngày là bao nhiêu? v.v Rõ ràng ta ph ải tính tổng theo nhóm. Để tính toán người ta thường dùng các hàm sau: Sum: Tính tổng mỗi trường trong mỗi nhóm. Avg: Tính tổng trung bình của trường trong mỗi nhóm. Min: Tìm giá trị nhỏ nhất của trường trong mỗi nhóm Max: Tìm giá trị lớn nhất của trường trong mỗi nhóm Count: Cho biết số bản ghi của trường trong nhóm Sau đây là ví dụ về truy vấn theo nhóm; Ta trở lại bảng SoLuong như sau: 1. Nhóm theo ngày tháng Câu hỏi: Trong 3 ngày 14, 15, 16 tháng 12 năm 2007 s ố lượng bán ra trong mỗi ngày là bao nhiêu (bằng mắt ta biết ngay 14/12/2007 l à 6 cái, 15/12/2007 là 2 cái và 16/12/2007 là 5 cái). Ta tạo truy vấn như sau: Tạo truy vấn ứng với bảng SoLuong: ELEC Trang 33
  34. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Kích vào nút trên thanh công cụ hoặc chọn View/Totals, ta có hộp thoại sau: Ta thấy xuất hiện thêm dòng Total, hãy đưa trường Ngay_Thang vào cột thứ nhất ở dòng Field và Group By vào dòng Total. Hãy đưa So_Luong vào cột thứ hai ở dòng Field và Sum vào dòng Total, như hình sau: ELEC Trang 34
  35. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn Query/Run hoặc kích vào nút trên thanh công cụ, kết quả như sau: 2. Nhóm theo mã hàng Câu hỏi: ứng với mỗi mã mặt hàng (M1, M2, M3) thì số lượng là bao nhiêu? Tạo truy vấn theo nhóm ứng với bảng SoLuong Đưa vào tên trường Ma _Mat_Hang ở cột thứ nhất ứng với d òng Field Đưa vào tên Group By ở cột thứ nhất ứng với dòng Total Đưa vào tên trường So_Luong ở cột thứ hai ứng với dòng Field Đưa vào tên Sum ở cột thứ hai ứng với dòng Total Ta có hình như sau: ELEC Trang 35
  36. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn Query/Run ta có kết quả: 3. Nhóm theo một yếu tố nào đó nhưng có điều kiện Câu hỏi: Nhóm theo ngày nhưng chỉ với mặt hàng M1 hoặc M2 Ta đưa vào truy vấn như sau: Đưa vào tên trường Ngay_Thang ở cột thứ nhất ứng với dòng Field Đưa vào thông số Group By ở cột thứ nhất ứng với dòng Total Đưa vào tên trường So_Luong ở cột thứ hai ứng với dòng Field Đưa vào tên Sum ở cột thứ hai ứng với dòng Total Đưa vào tên trường Ma_Mat_Hang ở cột thứ 3 ứng với dòng Field Đưa vào từ Where ở dòng Total ứng với cột Ma_Mat_Hang Ứng với cột Ma_Mat_Hang ở dòng Criteria gõ =”M1” Ứng với cột Ma_Mat_Hang ở dòng or gõ =”M2” Như hình sau: ELEC Trang 36
  37. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn Query/Run ta có: 4. Dùng hàm Count Câu hỏi: ứng với mỗi ngày có bao nhiêu mặt hàng? Tạo truy vấn như hình sau: Chọn Query/Run ta có: ELEC Trang 37
  38. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 5. Tạo truy vấn theo hỏi đáp Câu hỏi: Số lượng bán ra trong mỗi ngày (ngày nào sẽ hỏi sau) là bao nhiêu? Ta thao tác như sau: Tạo truy vấn theo nhóm ứng với bang So_luong Đưa vào tên trường Ngay_Thang ở cột thứ nhất ứng với dòng Field Đưa vào tên Group By ở cột thứ nhất ứng với dòng Total Đưa vào tên trường So_Luong ở cột thứ hai ứng với dòng Field Đưa vào tên Sum ở cột thứ hai ứng với dòng Total Đưa vào cột thứ nhất ở dòng Criteria tham số: [Bạn hỏi ngày nào?] Hãy xem hình sau: Chọn Query/Run ta có hộp thoại: Hãy gõ vào ngày cần hỏi, giả sử gõ vào 12/14/07 và chọn OK ta có: ELEC Trang 38
  39. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 4.2.5 Truy vấn Crosstab Access hỗ trợ một loại truy vấn theo nhóm đặc biệt gọi l à Crosstab. Để hiểu loại truy vấn này chúng ta nên xuất phát từ bảng sau: Giả sử ta có bảng với tên Mua_Hang như sau: Ta muốn truy vấn thành dạng sau: Ho_Ten_Nguoi_Mua Bia Ruou Nuoc Ngot Hoang Thi Lan 500000 600000 400000 Le Quynh Hoa 750000 300000 250000 Nghĩa là chuyển tên mặt hàng (Bia, Ruou, v.v ) thành cột và tiền mỗi loại nước giải khát thành hàng ứng với tên người mua và cột loại hàng tương ứng. Để làm được điều đó bạn hãy thao tác như sau: Mở truy vấn với bảng Mua_Hang, sau đó vẫn chọn Design View và OK Chọn tiếp Query/Crosstab Query, ta có hộp thoại: Hộp thoại truy vấn có thêm dòng Crosstab, hãy đưa các thông số vào như sau: 1. Ở cột thứ nhất: ứng với dòng Field đưa vào tên trường: Ho_Ten_Nguoi_Mua. ứng với dòng Total đưa vào thông số: Group By. ELEC Trang 39
  40. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI ứng với dòng Crosstab đưa vào thông số: Row Heading 2. Ở cột thứ hai: ứng vớt dòng Field đưa vào tên trường: So_Tien ứng với dòng Total đưa vào hàm: Sum ứ ng với dòng Crostab đưa vào thông số: Value 3. ở cột thứ ba: ứng với dòng Field đưa vào thông số Format([Loai_Hang]) ứng với dòng Total đưa vào thông số: Group By ứng với dòng Crosstab đưa vào thông số: Colunmn Heading Hãy xem hình ảnh đưa vào như sau: Chạy truy vấn này (chọn Query/Run) ta có kết quả: Giải thích: Hàm Format ([Loai_Hang]) sẽ tạo các tên cột ứng với loại hàng, ở trên tên ngầm định của cột là Exprl: hoặc tự đặt trước khi gõ hàm Format() Ở cột thứ nhất ta chọn Row Heading ứng với dòng Crosstab bởi vì ta định họ tên người mua vẫn phân bố theo dòng. Ở cột thứ hai ta chọn Sum ứng với Total (thực ra trong trường hợp này chưa phải tính tổng, vì có một giá trị) và Value ứng với dòng Crosstab bởi vì ta định biến giá trị (tiền) đó phân bố theo dòng. Ở cột thứ ba chọn Column Heading ứng với dòng Crosstab bởi vì ta định biến tên mặt hàng đóng vai trò cột nhờ hàm Format([Loai_Hang]). Một số ví dụ khác: ELEC Trang 40
  41. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Ví dụ 1: cho bảng người mua hàng sau: STT Họ tên người mua Tên hàng Số lượng (cái) Đơn giá 1 Hoàng Thị Dung Radio 10 1000000 2 Hoàng Thị Dung Tủ Lạnh 5 4000000 3 Hoàng Thị Dung Ti vi 20 3500000 4 Lê Thuý Hương Radio 5 1000000 5 Lê Thuý Hương Tủ Lạnh 10 4000000 6 Lê Thuý Hương Ti vi 4 3500000 7 Nguyễn Văn Thanh Ti vi 10 3500000 Ta tạo một truy vấn Crosstab (theo tên người mua) nhưng đồng thời phải tính tổng tiền của từng loại hàng. Hãy tạo với tên bảng là Vat_tu như sau: Hãy tạo một truy vấn Crosstab và gõ vào như sau: Chạy truy vấn này ta có kết quả: ELEC Trang 41
  42. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Giải thích: ở cột hai (hộp thoại truy vấn) ta tạo th êm một trường có tên TongTien: TongTien=SoLuong*DonGia đồng thời dùng cột này làm giá trị (Value) Ví dụ 2: Cho bảng xuất gạo theo tháng sau: Tạo một truy vấn Crosstab như sau: Chạy truy vấn trên và kết quả: 4.3 Truy vấn trên nhiều bảng Cho đến lúc này ta mới chỉ làm việc trên một bảng duy nhất. Với kiến thức đó ta có thể dễ dàng xây dựng các truy vấn dựa trên quan hệ nhiều bảng và đặt chúng vào một cửa sổ riêng. Để dễ nắm bắt kiến thức mới ta vẫn l àm việc với CSDL BanHang.mdb với 4 bảng đã nói ở trên như sau: SoLuong ELEC Trang 42
  43. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Doanh_So LoaiHang DonGia Ta quy định cách viết: DoanhSo.Ngay_Thang (là trường Ngay_Thang của bảng DoanhSo). Như vậy: DoanhSo.Ngay_Thang >SoLuong.Ngay_Thang SoLuong.Ma_Mat_Hang > LoaiHang.Ma_Mat_Hang LoaiHang.Ten_Hang > DonGia.Ten_Hang Ví dụ 1: Giả sử ta yêu cầu đưa ra một truy vấn gồm có các trường: DoanhSo.Ngay_Thang LoaiHang.Ten_Hang SoLuong.So_Luong DonGia.Don_Gia và ELEC Trang 43
  44. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Tong: (để tính tiền: Don_Gia*So_Luong) Ta thiết lập một truy vấn có hình ảnh như sau: Chạy truy vấn này ta có kết qủa: Ví dụ 2: Tạo một truy vấn bao gồm: Ngay_Thang, Ma_Mat_Hang, Ten_ Hang, So_Luong, Don_Gia, nhưng chỉ với mã mặt hàng là M1.Truy vấn như hình sau: Chạy truy vấn ta có: ELEC Trang 44
  45. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Ví dụ 3: Giả sử có 3 bảng sau: SoLuong LoaiHang DonGia Hãy tạo một truy vấn tổng (Group By) có th êm một cột để tính tổng tiền. Ta tạo một truy vấn theo nhóm như sau: ELEC Trang 45
  46. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chạy truy vấn này ta có kết quả: 4.4 Sử dụng phương tiện truy vấn Query Wizard 1. Truy vấn dùng Simple Query Wizard Tạo một truy vấn này bằng cách như sau: Mở CSDL BanHang.mdb Chọn Insert /Query ta có hộp thoại: Chọn Simple Query Wizard và OK ta có: ELEC Trang 46
  47. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn bảng ở Tables/Queries (giả sử bảng SoLuong - Như hình trên) Chọn trường ở Available Fields và kích vào mũi tên phải >, nếu chọn tất cả các trường hãy kích vào >> giả sử ta chọn được như sau: Nếu không vừa ý, ta lại đưa trường về chỗ cũ bằng cách kích vào < hoặc << Nếu đồng ý hãy kích vào Next ta có hộp thoại tiếp: ELEC Trang 47
  48. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Hãy chọn 1 trong 3 chức năng trên: giả sử ta chọn Open the query to view information (mở truy vấn), kích tiếp vào Finish, sau đó ta có hộp thoại: Còn nếu chọn Modify Query Design (sửa truy vấn) ta có hộp thoại: ELEC Trang 48
  49. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Có thể thêm điều kiện cho truy vấn đó, hoặc làm những vấn đề khác nếu cần, sau đó bạn chạy truy vấn và bạn sẽ có kết quả. 2. Truy vấn bằng cách chọn Crosstab Query Wizard Mở CSDL, chọn Insert/Query sau đó hộp thoại New Query hiện ra Chọn Crosstab Query Wizard và chọn OK ta có hộp thoại: Chọn bảng SoLuong và kích vào Next ta có hộp thoại: Chọn trường Ngay_Thang và kích Next ta có hộp thoại: ELEC Trang 49
  50. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn trường Ma_Mat_Hang và kích Next ta có hộp thoại: Chọn trường So_Luong, chọn hàm Sum như hình sau: ELEC Trang 50
  51. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Kích Next ta có hộp thoại: Chọn View the Query và kích vào Finsh ta có kết quả: ELEC Trang 51
  52. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 4.5 Sửa đổi dữ liệu bằng các truy vấn 1. Thay thế trường Ví dụ 1: Giả sử bạn phát hiện cửa hàng bên cạnh giảm giá tất cả các mặt hàng 12%, để kinh doanh có hiệu quả, bạn cũng phải giảm giá, giả sử bạn giảm tất cả các mặt hàng 10%, nghĩa là trường Don_Gia được giảm 10% cho tất cả các mặt hàng. Việc làm đó được gọi thay thế nội dung trường Don_gia bằng nội dung mới. Hãy thao tác để đạt được kết quả đó như sau: Tạo một truy vấn ứng với bảng DonGia sau đó chọn Query/Update Query ta có hộp thoại: Ta nhận thấy có thêm dòng Update To, hãy đưa vào như hình sau: Hãy chạy truy vấn và Access hỏi: ELEC Trang 52
  53. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Nếu xác nhận Yes thì trường đó được cập nhập và kết quả bảng Don_gia mới là: Ví dụ 2: Giả sử ta có bảng sau (Ban_gao), hãy giảm giá gạo (trường Don_gia) loại 1 đi 5% Tạo truy vấn cho bảng này và chọn Query/Update Query và đưa vào các thông số như sau: Chạy truy vấn này và ta có kết quả mới của bảng Ban_gao như sau: ELEC Trang 53
  54. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 2. Xoá bản ghi Giả sử ta có bảng sau: KhoiA Hãy xoá đi những thí sinh có điểm Hoá không quá 4. Ta thao tác nh ư sau: Tạo truy vấn với bảng KhoiA Chọn Query/Delete Query sau đó đưa vào thông số như hộp thoại sau: Chạy truy vấn Access hỏi: ELEC Trang 54
  55. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Xác nhận Yes, Access sẽ xoá đi hai bản ghi, kết quả còn lại như sau: 3. Ghép các bản ghi từ một bảng khác Giả sử ta muốn ghép bảng KhoiA và bảng KhoiA1 trong CSDL Tuyen_sinh.mdb Bảng KhoiA có dạng như sau: Bảng KhoiA1 có dạng: Ta làm như sau: Tạo truy vấn ứng với bảng KhoiA Đưa vào các tên trường cần nối như sau (giả sử ta đưa tất cả các trường): ELEC Trang 55
  56. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn Query/Append Query ta có hộp thoại: Gõ tên bảng cần nối vào (ở đây KhoiA1) và chọn OK ta có hộp thoại: Chạy truy vấn này, hộp thoại hiện ra: ELEC Trang 56
  57. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Hãy xác nhận Yes để Access ghép vào Mở bảng KhoiA1 ta có: Chú ý: trước khi ghép cần mở khoá của trường nếu trước đó đã có khoá cơ bản 4. Tạo một bảng mới bằng một truy vấn Giả sử bảng KhoiA1 sau: Hãy tạo một bảng mới chỉ chứa SBD, Toan, Ly, Hoa, ta thao tác nh ư sau: ELEC Trang 57
  58. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Tạo truy vấn từ bảng KhoiA1 và đặt các thông số như sau: Chọn Query/Make-Table Query ta có hộp thoại: Gõ vào tên bảng mới ở Table Name (ở đây là KhoiAMoi) chọn tiếp OK Chạy truy vấn này và ta và xác nhận Yes ở hình sau:: Két quả là bảng KhoiAMoi có dạng: ELEC Trang 58
  59. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chú ý: Ta cũng có thể thêm điều kiện ví như: Chỉ tạo thành bảng mới với những thí sinh có điểm Toán từ 8 trở lên v.v (nghĩa là tạo thành bảng mới có điều kiện) Bài tập 1. Hãy tạo một CSDL có bảng sau: STT Ho Dem Ten Toan Ly Hoa 1 Hồ Van Thanh 5 6 7 2 Lê Thi Hoà 7.5 3 6 3 Trần Lê Hùng 7 8 4 4 Hoàng Thị Loan 6 8 8 5 Hồ Huy Trung 8 5 3 6 Nguyễn Hoàng Quân 8 3 4 7 Đỗ Hoa Quỳnh 5 2 7 8 Lê Anh Quân 7 8 5 a. Tạo truy vấn điều kiện Toan>=7 b. Tạo một truy vấn điều kiện Toan>=7 và Ly >=6 c. Tạo truy vấn điều kiện Toan>=7 và Ly >=6 và Hoa >=5 d. Tạo truy vấn điều kiện Ten có chữ Q đứng đầu e. Tạo truy vấn điều kiện Dem là thị hoặc Dem có chữ cái H đứng đầu f. Chèn thêm một trường có tên NgaySinh vào cột thứ hai và vào ngày sinh cho từng thí sinh, giả sử như sau: STT NgaySinh Ho Dem Ten Toan Ly Hoa 1 4/12/77 Hồ Van Thanh 5 6 7 2 6/23/78 Lê Thi Hoà 7.5 3 6 3 8/24/79 Trần Lê Hùng 7 8 4 4 1/12/80 Hoàng Thị Loan 6 8 8 5 3/1/77 Hồ Huy Trung 8 5 3 6 12/1/75 Nguyễn Hoàng Quân 8 3 4 7 3/4/78 Đỗ Hoa Quỳnh 5 2 7 8 4/23/79 Lê Anh Quân 7 8 5 g. Tạo một truy vấn điều kiện Ngày sinh >9 ELEC Trang 59
  60. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI h. Tạo một truy vấn điều kiện Tháng sinh >=7 i. Tạo một truy vấn điều kiện Năm sinh >=1978 j. Thêm một trường có tên TongDiem để tính tổng Toan + Ly + Hoa k. Tạo một truy vấn điều kiện TongDiem >=16 2. Hãy tạo CSDL có chứa bảng sau: Stt NgayThang MaMatHang ChatLuong SoLuong 1 12/14/07 M1 Loại 1 2 2 12/14/07 M2 Loại 1 1 3 12/14/07 M3 Loại 2 3 4 12/15/07 M1 Loại 1 1 5 12/15/07 M2 Loại 2 1 6 12/16/07 M2 Loại 3 2 7 12/16/07 M3 Loại 2 3 a. Hãy truy vấn tổng (Group By) theo NgayThang và tính tổng SoLuong b. Hãy truy vấn tổng (Group By) theo MaMatHang và tính tổng SoLuong c. Hãy truy vấn tổng (Group By) theo ChatLuong và tính tổng SoLuong d. Hãy truy vấn Crosstab ứng với NgayThang (Rows Heading), MaMatHang (Column Heading) và SoLuong (Value). e. Tương tự lấy MaMatHang làm Rows Heading, ChatLuong làm Column Heading và SoLuong làm Value. 3. Tạo CSDL chứa 3 bảng sau: So_luong Stt NgayThang MaMatHang SoLuong 1 12/14/07 M1 2 2 12/14/07 M2 1 3 12/14/07 M3 3 4 12/15/07 M1 1 5 12/15/07 M2 1 6 12/16/07 M2 2 7 12/16/07 M3 3 Loai_hang MaMatHang TenHang M1 Radio M2 Tủ lạnh M3 Ti vi Don_gia TenHang DonGia Radio 1100000 Ti Vi 3300000 Tủ lạnh 4400000 a. Hãy thiết lập mối quan hệ: So_luong.MaMatHang với Loai _hang.MaMatHang Loai_hang.TenHang với Don _gia.Tenhang ELEC Trang 60
  61. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI b. Hãy hiện mối quan hệ đó c. Hãy tạo một truy vấn trên cả 3 bảng đó với đầy đủ các trường d. Hãy tạo một truy vấn trên cả 3 bảng đó với đầy đủ các trường nhưng chỉ với mặt hàng Ti vi. e. Hãy tạo một truy vấn trên cả 3 bảng đó với đầy đủ các trường nhưng chỉ với mã mặt hàng M2. f. Hãy tạo một truy vấn trên cả 3 bảng đó với đầy đủ các trường nhưng chỉ với ngày 14 4. Cho bảng So _luong trên hãy dùng truy vấn Simple Query Wizard ứng với tất cả các trường, điều kiện mã mặt hàng là M1 hoặc M2. 5. Hãy sữ dụng bảng ở câu 4 hãy dùng truy vấn Crosstab Query Wizard ứng với NgayThang (Rows Heading), MaMatHang (Column Heading) và SoLuong (Sum, Value) 6. Tạo CSDL chứa bảng sau: DiemThi Stt TongDiem DoiTuong 1 15 1 2 16.5 2 3 18 3 4 15 3 5 16 2 a. Hãy tăng 3 điểm cho những SBD có DoiTuong =1 b. Hãy tăng 2 điểm cho những SBD có DoiTuong =2 c. Hãy tăng 14% điểm cho toàn bộ d. Xoá những bản ghi (sau khi đã thực hiện a,b,c) mà TongDiem =16 ELEC Trang 61
  62. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chương 5: Sử dụng biểu mẫu 5.1 Công dụng và khái quát về biểu mẫu Biểu mẫu (Form) là phương tiện giao dịên cơ bản giữa người dùng và Access, thông tin trong biểu mẫu được lấy từ bảng, có thể thiết kế các biểu mẫu cho nhiều mục đích khác nhau: Hiển thị và chỉnh sửa dữ liệu: Đây là công việc thông dụng nhất của biểu mẫu. Sử dụng biểu mẫu để thay đổi, bổ sung, xoá dữ liệu th ì dễ dàng hơn. Nhập các dữ liệu: Có thể thiết kế biểu mẫu dùng để nhập dữ liệu mới vào CSDL hoặc để cung cấp dữ liệu cho việc tự động hoá tính toán. Và còn nhiều mục đích khác. Ví dụ về một số dạng biểu mẫu. 1. Biểu mẫu có dạng Columnar (cột): 2. Biểu mẫu có dạng Tabular (bảng): 3. Biểu mẫu có dạng Datasheet (bảng tính): ELEC Trang 62
  63. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 4. Biểu mẫu có dạng Justified: Kiểu này chỉ hiện ra 1 dòng, bạn phải dùng mũi tên để hiển thị những dòng còn lại. 5.2 Tạo một biểu mẫu từ một bảng đã có bằng Form Wizard5 Mở cửa sổ Database (Ban_hang.mdb) chọn Form v à New ta có hộp thoại: : Chọn Form Wizard, chọn bảng (So_luong) theo hình sau: ELEC Trang 63
  64. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Và chọn OK ta có: Đến đây bạn có thể chọn trường cần đưa lên Form bằng nút > hoặc chọn tất cả bằng nút >> sau đó chọn Next ta có: ELEC Trang 64
  65. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Hãy chọn 1 trong 6 kiểu Form: Columnar, Tabular, Datasheet, Justified, Pivot Table, PivotChart. Giả sử ta chọn Columnar và chọn Next ta có: ELEC Trang 65
  66. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Hãy chọn một kiểu nền của Form ở cột phía bên phải. Giả sử ta chọn kiểu Blends và chọn Next ta có hộp thoại: Chọn chế độ Open the Form to view or enter information và Finish ta có: Chọn File/Save để cất Form này. Đến đây ta có thể dịch chuyển trong Form để chỉnh sửa dữ liệu. Còn nếu chọn Modify the form’s design thì ta có thể sửa lại cấu trúc Form trước khi mở lại để sửa hoặc xem dữ liệu. Sửa cấu trúc Form bao gồm cả xác định Font cho Form. 5.3 Di chuyển trong biểu mẫu Dùng các phím sau để di chuyển trong biểu mẫu: Tab (hoặc mũi tên): chuyển đến trường tiếp theo Shift + Tab (hoặc mũi tên xuống): chuyển đến trường đứng trước Home: chuyển đến trường đầu tiên của bản ghi hiện thời Ctrl + Mũi tên lên: chuyển đến trường hiện thời của bản ghi đầu tiên Crtl +Mũi tên xuống: chuyển đến trường hiện thời của bản ghi cuối cùng ELEC Trang 66
  67. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Ctrl + Home: chuyển đén trường đầu tiên của bản ghi đầu tiên Ctrl + End: Chuyển đến trường cuối cùng của bản ghi cuối cùng 5.4 Sửa cấu trúc của biểu mẫu 5.4.1 Thanh công cụ ở chế độ định dạng Khi mở Form ở chế độ Design ta thấy xuất hiện thanh công cụ chuẩn v à thanh định dạng. a. Thanh công cụ chuẩn 1. View: khi kích vào mũi tên xuống ta thấy xuất hiện: Design View, Form View v à Datasheet View, tương đương chọn View/Form View 2. Save: dùng để lưu biểu mẫu hiện hành, hoặc chọn File/Save 3. File Search: Tìm File 4. Print: dùng để in biểu mẫu hoặc xác lập máy in, t ương đương File/Print 5. Print Preview: dùng để xem trước khi in (File/Print Preview) 6. Cut: để cắt các đối tượng đưa chúng vào Clipboard (Edit/Cut) 7. Copy: để chép các đối tượng đưa chúng vào Clipboard (Edit/Copy) 8. Paste: để dán nội dung của Clipboard (Edit/Paste) 9. Format Painter: chép định dạng từ đối tượng đã lựa sang đối tượng khác 10. Undo: lấy lại lệnh trước đó (Edit/Undo) 11. Redo: lấy lại lệnh sau đó (Edit/Redo) 12. Insert Hyperlink: dùng để chèn một liên kết trên Internet (Insert/Hyperlink) 13. Field list: hiển thị danh sách các trường (View/Field List) 14. Toolbox: hiển thị hoặc đóng hộp công cụ (View/Toolbox) 15. Autoformat: chọn một số biểu mẫu định sẵn (Format/AutoFormat) 16. Code: mở cửa sổ hiệu chỉnh cho mã VBA (View/Code) 17. Properties: mở cửa sổ Properties (View/Properties) 18. Build: hiển thị Build Wizard cho đối tượng đã lựa nếu Access có bộ xây dựng đó 19. Database Window: hiển thị cửa sổ Database (Window/ 1 Database) 20. New Object Table: kích vào mũi tên xuống để chọn một đối tượng mới. 21. Office Assistant: hiển thị trợ giúp (Help/ Microsoft Access Help) b. Thanh định dạng ở chế độ Form Design ELEC Trang 67
  68. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 1. Object: dùng để xác định các đối tượng như trường, nhãn trường (muốn chọn bạn phải kích vào mũi tên xuống) 2. Font: dùng để chọn Font 3. Font Size: dùng để chọn kích cỡ Font 4. Bold: dùng để chọn chữ đậm 5. Italic: dùng để đặt chữ nghiêng 6. Underline: dùng để gạch chân 7. Align Left: dóng thẳng hàng bên phải 8. Center: dóng thẳng hàng giữa 9. Align Right: dóng thẳng hàng bên phải 10. Fill/Back Color: kích vào mũi tên để hiện bảng mầu, sau đó dùng màu để tô mầu hoặc tạo màu nền 11. Font/Fore Color: màu chữ 12. Line/Border Color: màu đường hoặc viền 13. Line/Border Width: bề rộng của đường hoặc viền 14. Special effect: Flat: tạo hiệu ứng bề mặt 5.4.2 Ví dụ về định dạng Ví dụ 1: Tạo một biểu mẫu, sau đó định dạng nh ư sau: 1. Font: .Vn Teknical, Font Size=11 2. Viền của trường màu đỏ và bề dày lớn 3. Màu chữ xanh 4. Màu nền vàng Ta thao tác như sau: Tạo một Form (KhoiA) sau đó chọn Modify the form’s design, ta có hình sau: ELEC Trang 68
  69. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn các trường ở bên phải, bằng cách ấn giữ Shift đồng thời kích vào các trường ta có: Chọn Font .Vn Teknical và kích cỡ Font 11 ta cóC: Với công cụ 10,11,12, 13 của thanh định dạng, bạn h ãy đặt màu nền, chữ, viền, ELEC Trang 69
  70. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Ta có thể định dạng cho tên trường ở phía trái cũng tương tự Ví dụ 2: Cho biểu mẫu sau: Hãy đưa về dạng: Hãy thao tác như sau: Đưa con trỏ chuột vào trường Toan, ấn, ta thấy trỏ chuột có hình bàn tay, hãy kéo đến vị trí mới. Với trường Ly, Hoa cũng làm tương tự Kéo giãn các dòng và đặt Font, kích cỡ Font, màu nền, màu chữ, viền v.v 5.5 Lọc Giả sử ta chỉ hiển thị những thí sinh có điểm Toan <= 6 để sửa, ta thao tác nh ư sau: Mở biểu mẫu KhoiA Chọn Records/Filter/dvanced Filter Sort, đưa vào các thông số như hình sau: ELEC Trang 70
  71. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn Filter/Apply Filter Sort Sau đó dữ liệu của Form chỉ còn lại những bản ghi thoả mãn điều kiện trên, hình sau còn 3 bản ghi đạt thoả mãn Toan <= 6. 5.6 Thiết kế biểu mẫu bằng Design view Để thiết kế một biểu mẫu bằng Design view, trước hết ta tìm hiểu hộp công cụ, ta sẽ dùng nó trong việc thiết kế về sau. 5.6.1 Hộp công cụ Chọn View /Toolbox ta có hộp công cụ sau: ELEC Trang 71
  72. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 1. Select Objects: Chọn đối tượng 2. Label: Dùng để tạo một hộp để chứa văn bản h ướng dẫn hoặc tính toán 3. Option Group: Tạo một khung có kích thước điều chỉnh được 4. Option Button: Tạo một nút tròn để chọn lựa về sau 5. Combo Box: Tạo hộp Combo có hộp văn bản hiệu chỉnh đ ược 6. Command Button: Tạo nút lệnh mà khi kích sẽ thi hành một nhiệm vụ 7. Unbound Objects Freme: Bổ sung vào biểu mẫu một đối tượng OLE 8. Page Break: Cho máy in biết bắt đầu một trang mới 9. Subform/Subreport: Bổ sung một biểu mẫu con vào biểu mẫu chính 10. Rectangle: Tạo một hình chữ nhật 11. Control Wizads: Bật và tắt Control Wizard 12. Text Box: Tạo một hộp văn bản 13. Toggle Button: Tạo một nút thay đổi từ On sang Off 14. Check Box: Tạo một hộp kiểm 15. List Box: Tạo một hộp liệt kê qua đó ta có thể lựa một giá trị 16. Image: Hiển thị đồ hoạ trên báo biểu 17. Bound Objects Freme: Hiển thị nội dung một trường OLE 18. Tab Control: Chèn một điều khiển Tab 19. Line: Vẽ một đường thẳng 20. More Controls: Kích vào nút này sẽ mở ra một danh sách cuốn duyệt 5.6.2 Thiết kế biểu mẫu bằng hộp công cụ 1. Tạo một biểu mẫu trắng có tiêu đề đầu và tiêu đề cuối Giả sử ta sử dụng bảng KhoiA trong CSDL Tuyen _sinh.mdb, thao tác như sau: Mở CSDL TuyenM _sinh.mdb Tại cửa sổ Database chọn Torms và New hộp thoại sau xuất hiện: ELEC Trang 72
  73. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn Design view, chọn bảng KhoiA và OK một Form trắng xuất hiện: Đồng thời ta hiển thị Toolbox (View/Toolbox) và đưa về vị trí như hình trên. Chọn View/Form Head/Footer ta có hình sau: ELEC Trang 73
  74. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 2. Tạo tiêu đề đầu và cuối Kéo rộng phần diện tích của tiêu đề đầu (nếu cần), sau đó kích vào nút số 2 (Label) và đưa chuột ra vùng tiêu đề, rê để được một hình chữ nhật, gõ tiêu đề: “tuyển sinh khối A năm học 2007” vào hộp đó, ta có hình như sau: Có thể tạo tiêu đề đưới cũng tương tự như vậy. 3. Thiết kế các trường Kích vào nút Field List trên thanh công cụ (thanh công cụ khác với hộp công cụ) ta có hộp thoại sau: Chọn một trường (giả sử chọn trường SBD) và kéo vào phần còn trống (phía sau Detail), như hình sau: ELEC Trang 74
  75. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Lại tiếp tục với trường khác và cuối cùng ta có: Có thể đặt thêm một trường Tong (Tong=Toan+Ly+Hoa) bằng cách kích v ào 12 (Text Box) của hộp công cụ, kéo đến phần còn trống và rê để tạo hộp văn bản, sau đó gõ tên vào như sau: ELEC Trang 75
  76. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn File/Save để lưu biểu mẫu này (giả sử lưu với tên: Tsform) Đóng lại, sau đó từ cửa sổ Database chọn biểu mẫu Tsform, chọn Forms và Open ta có: Mỗi lần ta sửa điểm Toán, Lý và Hoá thì trường Tong được cập nhật ngay. 4.Một số hàm cơ bản Cách viết: = ví dụ: =abs(-7) cho kết quả 7 (hàm lấy trị tuyệt đối) a. Các hàm về ngày và giờ Tên hàm Giải thích Ví dụ Kết quả Date, Date$ Kết quả ngày hệ thống Date() 11/21/2007 Day Kết quả là ngày Day(Date) 21 ELEC Trang 76
  77. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Month Kết quả là tháng Month(Date) 11 Year Kết quả là năm Year(Date) 2007 Hour Kết quả giữa 0 và 23 Hour(#2:30PM#) 14 Now Kết quả là ngày giờ hệ thống Now() 11/21/2007 10:34:45AM Time Kết quả là giờ hệ thống Time() 10:34:45AM TimeSerial Trả về giá trị nối tiếp thời gian TmeSerial(10,34,45) 10:34:45AM Weekday Trả về thứ trong tuần Weekday(#11/21/2007#) Thứ 4 b. Các hàm xử lý văn bản Tên hàm Giải thích Ví dụ Kết quả ASC Trả về mã của ký tự ASC(“A") 65 Chr hay Chr$ Trả về ký tự ứng với mã Chr(65) A InStr Trả về vị trí của chuỗi con InStr(“Khoa”,”ho”) 2 Lcase Kết quả là chữ thường Lcase(“HOANG”) hoang Left Kết quả là các ký tự bên trái Left(“Tin hoc”,2) Ti Len Kết quả là số lượng ký tự Len(“Tin”) 3 Ltrim Bỏ các dấu cách phía trái Ltrim(“ Tin hoc”) Tin hoc Mid Trả về một phần của chuỗi Mid(“Tin hoc”,5,3) hoc Right Trả về các ký tự bên phải Right(“Tin hoc”,2) oc Rtrim Bỏ các dấu cách bên phải Rtrim(“Tin “) Tin Space Trả về một chuỗi dấu cách Space(5) có 5 dấu cáchc Str Đổi trị số thành chuỗi Str(3.1415) 3.1415 String Trả về chuỗi có ký tự lặp String(6,”T”) TTTTTT Trim Bỏ dấu cách đầu và cuối Trim(“ Tin “) Tin Ucase Trả về chữ to Ucase(“Tin hoc”) TIN HOC Val Trả về trị số Val(“123”) 123 c. Các hàm toán học Tên hàm Giải thích Ví dụ Kết quả Abs Trả về trị tuyệt đối Abs(9-12) 3 Atn Trả về arctang Atn(1) 0.7853982 Cos Trả về Cosin của một góc Cos(pi/4) 0.7071067 Exp Kết quả là E mũ x Exp(10) E10 Int Bỏ phần thập phân Int(13.56) 13 Log Logarit tự nhiên Log(10) 2.302585 Rnd Tạo số ngẫu nhiên giữa 0 1 Rnd 0.234566 Sin Trả về Sin của một góc Sin(pi/6) 0.500000 Sqr Trả về giá trị căn bậc hai Sqr(4) 2 Sgn Dấu của số: 0 dương, -1 âm Sgn(-123) -1 Tan Trả về tang của một góc Tan(pi/4) 1 5.6.3 Thiết kế một biễu mẫu có trường MEMO, OLE và đối tượng đồ hoạ Giả sử ta thiết kế một bảng có các tr ường sau: ELEC Trang 77
  78. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Để thiết kế một biểu mẫu có thêm các đối tượng như Memo, OLE và đồ họa, ta theo thứ tự sau: Tạo một Form trắng như đã nói ở phần trên ứng với bảng So _Luong, dùng nút số 2 của Toolbox để tạo tiêu đề đầu, kích vào nút Filed List để đặt các trường như sau: ELEC Trang 78
  79. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn nút 2 của Toolbox để tạo hộp văn bản v à đưa văn bản vào, đồng thời chọn nút 16 của Toolbox (Image) để tạo hộp chứa ảnh, sau đó kích đúp vào hộp ảnh để chèn ảnh vào, sau khi hoàn tất ta có hình sau: Lưu biểu mẫu với một tên nào đó để sử dụng về sau. Chú ý: Ta cũng có thể chèn tệp ảnh bằng cách chọn Insert/Object v à chọn Create From File, sau đó tìm File và chèn vào. Bài tập chương 5 1. Hãy tạo một biễu mẫu có dạng Columnar 2. Hãy tạo một biểu mẫu có dạng Tabular 3. Hãy tạo một biểu mẫu có dạng Datasheet 4. Dùng Form Wizard để tạo một biểu mẫu từ một bảng đ ã có (dạng Columnard) 5. Dùng Form Wizard để tạo một biểu mẫu từ một bảng đ ã có (dạng Tabulard) 6. Hãy tạo cấu trúc cho bảng sau: HoDem Ten Luong NgaySinh TieuSu Anh Text (15) Text(7) Number Dat/Time Memo OLE Object Hãy tạo một biểu mẫu bằng Form Wizard v à đưa vào 5 bản ghi (lấy một ảnh bất kỳ trong Microsoft Photo Editor để chèn vào trường Anh) Hãy mở biểu mẫu ở dạng Design để sửa lại cấu trúc nếu cần Hãy đặt Font VnTime có kích cỡ 12 và kéo các trường đến vị trí mới sao cho trở th ành 3 dòng. Đặt màu sắc và khung viền cho trường Thiết kế thêm một trường có tên LuongMoi: ELEC Trang 79
  80. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI ( LuongMoi= Luong+Luong*0.12) 7. Cũng với cấu trúc bảng như câu 6 hãy: Dùng hộp công cụ (Toolbox) hãy thiết kế một biểu mẫu bằng Design view Hãy tạo tiêu đề đầu cho biểu mẫu: Lý lịch cán bộ Tr ường ĐHKD &CN Hà nội Về Paint vẽ một biểu tượng Trường ĐHKD &CN và chèn vào biểu mẫu Đóng cấu trúc lại sau đó mở ở dạng Open và vào 5 bản ghi 8. Tạo một biểu mẫu trắng không ứng với b ảng nào cả, sau đó dùng TextBox (của Toolbox), tạo ra 9 hộp văn bản tính toán đ ược, sau đó gõ vào 9 hàm về ngày và giờ. Hãy đóng lại và mở ở chế độ Open để xem kết quả. 9. Cũng câu hỏi 8 nhưng tạo ra 16 hộp văn bản dùng để tính toán 16 hàm xử lý văn bản. 10. Cũng câu hỏi 8 nhưng ứng với 11 hàm toán học.C 11. Hãy tự tạo một cấu trúc bảng, sau đó thiết kế một biểu mẫu v à đưa dữ liệu vào. ELEC Trang 80
  81. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chương 6: Tạo các báo biểu (REPORT) Trong Access, báo biểu là một kiểu biểu mẫu tiếp theo đặc biệt đ ược thiết kế cho khâu in ấn. Access tổ hợp dữ liệu trong bảng để có thể in theo những y êu cầu cụ thể. 6.1 Tạo một báo biểu bằng Report Wizard Giả sử ta dùng CSDL Ban _Hang.mdb với bảng So _Luong, ta thao tác sau: Mở CSDL Ban _Hang.mdb như hình sau: Chọn Reports và New ta có hộp thoại: Chọn Report Wizard, bảng SoLuong và OK ta có: ELEC Trang 81
  82. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Dùng nút > để chọn trường, giả sử ta chọn các trường sau: Chọn Next ta có: ELEC Trang 82
  83. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Nếu đồng ý lại chọn Next ta có: Chọn trường Ngay _thang để sắp xếp như hình sau: ELEC Trang 83
  84. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn Next tiếp: Nếu đồng ý lại chọn Next: ELEC Trang 84
  85. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chọn một kiểu chữ trang trí và chọn Next: Hãy chọn Preview the report và Finish ta có: ELEC Trang 85
  86. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Như vậy ta có một bản báo cáo và có thể in ra giấy. 6.2 Sửa báo biểu Báo biểu vừa tạo ra có tên So_Luong1, nếu ta không vừa ý về cấu trúc ta có thể sửa lại nh ư sau: Mở CSDL Ban_Hang Chọn báo biểu So_Luong1, Report và Design ta có cấu trúc sau: Ở trên ta thấy có các thành phần sau: ELEC Trang 86
  87. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 1. Tiêu đề đầu của Report (Sau Report Header). 2. Tiêu đề đầu của trang (Sau Page Header) 3. Thân của Report (Sau Detail) Ta có thể di chuyển, đặt lại Font, kích cỡ Font, m àu chữ, nền v.v như thao tác Form Design, ví dụ như hình sau: Đóng cấu trúc Report và mở lại ở dạng Preview ta có: ELEC Trang 87
  88. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 6.3 Thiết kế một báo biểu bằng Design View Cũng tương tự như thiết kế một Form bằng Design View, ta thao tác nh ư sau: Mở CSDL Ban _Hang Chọn Report, New ta có hộp thoại: Chọn Design View, bảng So_Luong và OK đồng thời mở Toolbox ta có: Trình tự thiết kế như sau: 1. Tạo Report Header Kích vào nút 2 (Label), đưa ra vùng Report Header, rê để được một hình chữ nhật Gõ vào tiêu đề đầu của Report: bảng thống kế hàng trong kho Ta có hình sau: ELEC Trang 88
  89. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 2. Thiết kế Page Header Tiếp theo là thiết kế tên trường nằm trong vùng Page Header, bằng cách chọn nút 2 (Label), rê từng hộp ứng với tên trường và gõ tên trường vào như hình sau: 3. Thiết kế thân (Detail) Bước tiếp là thiết kế thân Report nàm trong phần Detai, bằng cách hiện danh sách tr ường, kích vào tên trường cần chọn đồng thời rê đến phần thân Report (Xoá đi phần b ên trái), đồng thời thiết kế thêm trường TongTien và gõ vào như hình sau: ELEC Trang 89
  90. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Đóng cấu trúc lại và mở lại ở chế độ Print Preview ta có: Bài tập 1. Cho bảng sau: Sbd Ho Dem Ten Toan Ly Hoa 1 Le Thi Linh 5 6 7 2 Ho Van Trung 6.5 6 5 ELEC Trang 90
  91. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 3 Hoang Le Huyen 8 7 7 4 Do Thi Hoa 5 3 6 5 Le Anh Quan 6 7 6 . Hãy tạo một Report bằng công cụ Report Wizard . Hãy thiết kế một Report với các trường sau: - Trường Hoten bằng 3 trường Họ, Dem và Ten ghép lại - Thêm trường Tổng điểm (TongDiem) bằng Toan +Ly+Hoa - Cuối Report ghi thêm: (Hà nội ngày 12 tháng 4 năm 2007 - Chủ tịch HĐTS - Để cách 3 dòng - Ts Lê Trung Thành 2. Thiết kế một Report ứng với bảng trong đó có một trường kiểu OLE Object 3. Thiết kế một Report sau đó hãy chèn một ảnh vào Report 4. Thiết kế một Report ứng với bảng trong đó có tr ường Memo ELEC Trang 91
  92. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chương 7: Tự động hoá ứng dụng bằng Macro 7.1 Macro là gì? Giả sử ta có một công việc gồm 4 thao tác: Mở một bảng để sửa (giả sử có tên BanHang) Mở một Form ứng vơí bảng đó để vào dữ liệu Mở một Report ứng với bảng đó In Report đó Bình thường ta thao tác từng công việc một, hết một cô ng việc, đóng lại và mở công việc khác cứ như thế cho đến hết. Nhưng còn một cách khác là xử lý bốn công việc trên một cách tự động bằng công cụ mà ta hay gọi là Macro. Vậy macro là gì? trong Access có các lệnh vĩ mô (gọi là Macro) ứng với từng công việc. Ta liệt kê bốn công việc trên bằng các lệnh vĩ mô 1 lần, sau đó cho chạy tệp lệnh đó. Việc làm trên được gọi là tự động hoá ứng dụng bằng Macro. 7.2 Thanh công cụ của cửa sổ Macro Khi mở 1CSDL sau đó chọn Macro và New, thanh công cụ lúc này có các thành phần: 1,2,3,4,5,6,7,8,9: giống như thanh Standard 10. Macro Names: ấn nút này sẽ hiển thị hoặc giấu cột Macro Name trong cửa sổ Macro. Trong cột này có thể gán tên cho một nhóm Macro. 11. Conditions: ấn nút này sẽ thêm cột Conditions hoặc che nó nếu nó đã có. Cột này dùng để định nghĩa các điều kiện mà khi nó là True thì thao tác kèm theo m ới được thực hiện. 12. Insert Rows: dùng để chèn một dòng 13. Delete Rows: dùng để xoá một dòng 14. Run: ấn nút này để chạy một Macro, tất nhiên Macro phải được cất bằng một tên trước đó. 15. Single Step: dùng để thực hiện từng thao tác một trong Macro 16. Build: hộp tạo một biểu thức 17. Database Window: đặt lại cửa sổ Database 18. New Object: Table: kích vào mũi tên xuống để chọn một đối tượng 19. Office Assistant: tìm trợ giúp 7.3 Tạo một Macro đơn giản 7.3.1 Mở cửa một Macro Mở CSDL Chọn Macros và New ta có hộp thoại: ELEC Trang 92
  93. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 7.3.2 Tạo một Macro đơn giản Kích vào mũi tên xuống ở cột Action ta thấy các lệnh Macro hiện ra: Hãy chọn một Macro, giả sử ta chọn Open Table (mở bảng) ta có h ình sau: ELEC Trang 93
  94. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Kích vào Table Name để chon bảng (giả sử tên bảng là SoLuong), chọn View là Datasheet và Data Mode là Edit ta có: Và tiếp tục soạn những Macro khác, giả sử cuối cùng ta có như hình sau: ELEC Trang 94
  95. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Lưu Macro này bằng cách chọn File/Save, giả sử ta lưu tên là MacroVatTu, hãy đóng lại. Như vậy ta đã tạo ra một Macro với tên MacroVatTu. 7.4 Chạy một Macro Từ cửa sổ Database chọn Macro ta có: Chọn Run và sau đó Access sẽ thi hành từng lệnh Macro một, như đã liệt kê trên. 7.5 Sửa một Macro Từ cửa sổ CSDL chọn Macro và Design sau đó dùng thanh công c ụ Macro để chèn thêm các Macro khác hoặc thay thế các Macro bằng Macro khác, giả sử sau khi sửa có dạng nh ư hình sau: ELEC Trang 95
  96. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Macro MsgBox cho ta một hộp thoại và hiển thị một thông báo. 7.6 Một số Macro cơ bản Chúng ta sẽ đi sâu về Macro trong quyển 2 “Lập tr ình trong Access 97” ở đây chúng ta chỉ làm quen một số nét cơ bản mà thôi. 1. Mở và đóng các bảng, truy vấn, Form và Report Close: Đóng cửa sổ Table, Query, Form hoặc Report OpenForm: Mở một Form trong cửa sổ Form, Datasheet, Design hoặc Print Preview OpenQuery: Mở một Query trong cửa sổ Datasheet, Design hoặc Print Preview OpenReport: Mở một Report trong cửa sổ Print Preview OpenTable: Mở bảng trong cửa sổ Datasheet, Design hoặc Print Preview 2. In ấn OpenForm: Mở một Form trong cửa sổ Print Preview OpenQuery: Mở một Query trong cửa sổ Print Preview OpenReport: Mở một Report trong cửa sổ Print Preview OpenTable: Mở một Table trong cửa sổ Print Preview OutputTo: Xuất hiện một Table, Form, Report v à một tệp văn bản Notepad hoặc tệp Excel hoặc tệp Word v.v Print: In Table, Form, Report 3. Điều khiển Maximize: Cực đại hoá cửa sổ đang hoạt động Minimize: Cực tiểu hoá cửa sổ đang hoạt động MoveSize: Di chuyển về đích lại kích cỡ của cửa sổ Restore: Khôi phục lại kích thước cũ Show Toolbar: Hiển thị hoặc giấu một thanh công cụ Và còn nhiều Macro khác Bài tập chương 7: 1. Hãy chuẩn bị một Table một Form và một Report ứng với bảng đó. Hãy: Tạo một Macro để mở Form và hiển thị ở chế độ Design Tạo một Macro để mở Report và hiển thị ở chế độ Design Lưu Macro ấy Mở lại ở chế độ Design để chèn thêm lệnh Maximize cho cả hai cửa sổ. 2. Cũng như câu hỏi 1 nhưng hiển thị ở chế độ khác ngoài Design ELEC Trang 96
  97. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Chương 8: MODULES (Lập trình trong Access) 8.1 Tổ chức và hoạt động của chương trình trong Access 8.1.1 Lập trình trong Access Để lập trình trong Access người ta dùng ngôn ngữ VBA (Visual Basic Application). VBA (hay ngắn gọn là Access Basic) là ngôn ngữ lập trình hoạt động theo các sự kiện, trên nguyên tắc của lập trình cấu trúc, nhằm xây dựng các ứng dụng một cách linh hoạt tr ên nền các đối tượng của Access như: Table, Query, Form, Report, Macro, đ ồng thời tương tác với các dữ liệu: nguyên, thực, logic, văn bản, v.v Lập trình cấu trúc, hiểu nôm na là từ 1 bài toán A, ta chia nhỏ thành các bài toán con A1, A2, A3, , An. Lập trình cho A thì khó, còn lập trình cho các Ai thì dễ hơn vì độ phức tạp ít hơn (chia nhỏ để dễ quản lý mà!). Mỗi Ai được lập trình theo một đơn thể (Module) có dạng được gọi là chương trình con. Chương trình con có hai dạng: Thủ tục hoặc hàm. Mỗi chương trình con là một dãy các lệnh để thực hiện một công việc n ào đó. Một chương trình có thể có rất nhiều chương trình con. 8.1.2 Cấu trúc một chương trình con a. Chương trình con dạng thủ tục Thủ tục bao gồm các thành phần: Đầu thủ tục, thân thủ tục và kết thúc thủ tục. 1. Đầu thủ tục có dạng: [Private] Sub [( ] Bạn lưu ý cách viết: Những gì nằm trong [ ] là tuỳ ngữ cảnh mà có thể có hoặc không. Còn nhừng gì nằm trong l thì bắt buộc phải luôn luôn có. 2. Thân thủ tục Thân thủ tục nằm sau đầu thủ tục. Thân thủ tục chứa các lệnh để giải quyết một công việc n ào đó (các lệnh cụ thể bạn sẽ tìm hiểu sau). 3. Kết thúc thủ tục Để báo cho máy tính biết kết thúc một thủ tục, ta viết d òng lệnh: End Sub Vậy về cơ bản một chương trình con dạng thủ tục có cấu trúc như sau: [Private] Sub [( ] End Sub b. Chương trình con dạng hàm (Funtion) Cũng như thủ tục, hàm cũng có cấu trúc ba phần: Đầu hàm, thân hàm và kết thúc hàm. Dạng tổng quát như sau: [Private] Function [( ] End Function Sau đây là một số ví dụ: Ví dụ1: Lập trình hiển thị câu chào: “Chào bạn đã đến với lập trình Access” ELEC Trang 97
  98. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Tuy nó đơn giản, nhưng bạn nên nhớ một nhà hiền triết đã từng nói: “cuộc đi ngàn dăm, khởi sự từ bước đi thứ nhất” hay “cái cây có đường kính rộng hàng mét khởi sự từ cái mầm nhỏ”, trước hết bạn cứ quan tâm đến cái “mầm nhỏ” đ ã, rồi dần dần tiến đến “cái cây”. Để lập tr ình bạn theo các bước sau: Bước 1: Chọn Module và chọn New, sau đó cửa sổ để bạn soạn thảo chương trình (hay còn gọi là cửa sổ Code) hiện ra như sau: Bước 2: Bạn gõ vào cửa sổ Code các lệnh (bạn cứ gõ rồi sau sẽ hiểu lệnh đó là gì?) như hình sau: Bước 3: Chạy chương trình: Chọn Run/Run Sub (hoặc kích nút) như hình sau: ELEC Trang 98
  99. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Sau khi chạy chương trình, kết quả như hình sau: Giải thích: Lệnh MsgBox(“Chao ban da den voi lap trinh Access”) s ẽ đưa ra một thông báo như hình trên. Ta có thể gọi đây là lệnh hiển thị dữ liệu cũng được. Khi đưa ra kết quả trên chương trình tạm dừng và nếu bạn chọn OK thì chương trình sẽ chạy tiếp và thực hiện lệnh sau lệnh MsgBox( ). Ví dụ 2: Vào 2 số nguyên, tính tổng và hiển thị tổng của hai số đó. Bạn gõ vào cửa sổ Code như hình sau: Khi chạy chương trình, máy yêu cầu bạn gõ từ bàn phím giá trị a như giao diện sau: ELEC Trang 99
  100. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Đến đây nếu bạn gõ vào số 5 và chọn OK (Hay ấn Enter) thì số nguyên 5 sẽ lưu vào biến a. Máy lại đưa ra giao diện: Và nếu bạn gõ vào số 4 và chọn OK thì máy sẽ lưu số nguyên 4 vào biến b. Tiếp tục máy sẽ tính tổng và đưa kết quả là 9 như hình sau: Giải thích: Lệnh: Dim a As Integer Nghĩa là: Biến (Dim) a là (As) nguyên (Integer). Bạn khai báo biến a là nguyên, để máy sử dụng ô nhớ tương ứng với số nguyên mà!, tất nhiên nếu là số thực thì ô nhớ phải lớn hơn, v.v lý do khai báo là vậy. Lệnh: a = InputBox("Moi ban go vao so a? ") Nghĩa là: Hộp nhập liệu (InputBox) ra thông báo: "Moi ban go vao so a? “. Nếu bạn g õ vào một số thì số đó được lưu vào biến a Lệnh: s = a + b Đây là lệnh “gán”, nghĩa là máy sẽ lấy nội dụng biến a (bạn vừa gõ vào 5), cộng với nội dung của biến b (bạn vừa gõ vào 4), kết quả sẽ là 9, “gán” kết quả này cho biến s (gọi lệnh “gán” là như vậy). Lệnh: MsgBox "Tong 2 so la: " & Str(s) Đây là lệnh hiển thị dữ liệu, nhưng dữ liệu thì phải đồng nhất, ở đây: "Tong 2 so la: "(l à dữ liệu văn bản) còn nội dung của biến s là một số nguyên. Để ghép được bạn phải đổi nội dung của biến s (số nguyên) thành dạng văn bản bằng hàm Str (s): Str viết tắt từ chữ String (văn bản). Để ghép hai văn bản ta dùng dấu & (cũng như để cộng 2 số ta dùng dấu + ). Máy (hay nói chính xác là chương tr ình) làm việc cũng như con người, do vậy ta phải liệt kê mọi hành động (lệnh) để máy theo đó mà làm. Quá trình thiết kế, liệt kê các “hành động” đó gọi là lập trình. Và chúng ta đang nói về lập trình đây! ELEC Trang 100
  101. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Ví dụ 3: Chuyển ví dụ 2 sang dạng hàm (Function). Sau khi chạy ta thấy có cùng giao diện như ví dụ 2. Rồi bạn sẽ thấy thủ tục khác h àm ở chỗ nào, nhưng nó đều là chương trình con nên có lúc nó phải giống nhau chứ! Cũng như những đứa con trong một gia đình, đều là con cả mà, nhưng phân biệt con trai hay con gái bởi vì nó còn những chức năng khác. Bước đầu học lập trình bạn tạm vừa lòng thế đã! 8.2 Thủ tục đáp ứng sự kiện Sức mạnh của Access là thủ tục đáp ứng sự kiện. Vậy đáp ứng sự kiện l à gì? Dân gian có câu nói vui: “Ông đưa chân giò, bà thò chai rượu”. Ông đưa bà “chân giò”, bà đáp ứng lại “chai rượu”. Vậy là bà đã đáp ứng sự kiện “đưa chân giò” của ông băng việc “tung ra chai rượu”. Khi các bạn lướt Web, nếu bạn dùng chuột kích vào một đối tựợng nào đó, thì lập tức một đối tượng mới xuất hiện. Từ hình tượng đó, các nhà thiết kế phần mềm nghĩ ra một phương pháp là: “Dùng chuột hoặc bàn phím để tương tác (kích chuột hoặc ấn phím) vào một đối tượng hoặc lợi dụng một đối tượng chuyển từ trạng thái này sang trạng thái khác để khởi động một thủ tục“. Thủ tục có đặc th ù đó gọi là thủ tục đáp ứng sự kiện. Trong Access thủ tục đáp ứng sự kiện rất phong phú. Chúng ta sẽ l àm quen dần. 8.2.1 Thủ tục đáp ứng sự kiện với Form Ta nhận thấy trên Form có 6 vùng cơ bản (5 vùng có tên như hình sau và một vùng là toàn bộ Form): ELEC Trang 101
  102. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Mỗi vùng có tên thủ tục đáp ứng sự kiện khác nhau, ví dụ sự kiện Click th ì: Sự kiện Click ở toàn bộ Form có dạng: Private Sub Form_Click() End Sub Sự kiện Click ở vùng tiêu đề đầu Form có dạng: Private Sub FormHeader_Click() End Sub Sự kiện Click ở vùng tiêu đề đầu trang có dạng: Private Sub PageHeaderSection_Click() End Sub Sự kiện Click ở vùng thân Form có dạng: Private Sub Detail_Click() End Sub Sự kiện Click ở vùng tiêu đề cuối trang có dạng: Private Sub PageFooterSection_Click() End Sub Sự kiện Click ở vùng tiêu đề cuối Form có dạng: ELEC Trang 102
  103. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Private Sub FormFooter_Click() End Sub Tên các sự kiện đối với Form thì rất nhiều, bạn xem bảng sau: Bạn chọn Event và cuốn để tìm sự kiện mình cần. Ví dụ: Tạo thủ tục để mở bảng có tên SoLuong khi ta kích vào vùng tiêu đề đầu trang Form. Ta thao tác như sau: 1. Mở Form Chọn Forms, kích đúp vào Create form in Dessign view như hình sau: Sau đó ta có hình Form mới: ELEC Trang 103
  104. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Hình trên gồm 3 hình ghép lạiH: Form, ToolBox và các thủ tục đáp ứng sự kiên (Event) ứng với mỗi lần bạn chọn vùng nào trong 6 vùng trên. Bạn nên trưng cả 3 hình đó để dễ thao tác. Bạn điều chỉnh để Form lộ diện cả 6 vùng bằng cách: Chọn view và chọn tên vùng. Sau đây là các bước tiến hành lập trình: Kích vào thanh FormHeader để bật cửa sổ chứa các thủ tục đáp ứng sự kiện ứng với vùng này (tất nhiên ban chon Event), như hình sau: Kích vào ô bên phải ứng với dòng On Click, kích mũi tên xuống để chọn [Event Procedure], kích tiếp vào nút ba chấm bên phải như hình sau: Sau đó thủ tục đáp ứng sự kiện hiện ra: Bạn gõ dòng lệnh: DoCmd.OpenTable “So_luong”. Ta đươc một thủ tục hoàn chỉnh như sau: ELEC Trang 104
  105. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Lưu thủ tục này bằng một tên nào đó, giả sử tên DauForm Thoát về CSDL Chạy thủ tục này bằng cách chọn Forms, kích đúp vào tên DauForm ta thấy một Form hiện ra. Tiếp theo bạn kích vào vùng FormHeader, chương trình chạy và kết quả là bảng SoLuong được mở ra như sau: Sự kiện Click ở các vùng còn lại thiết kế tương tự. Tất nhiên không chỉ có sự kiện Click (), mà có rất nhiều sự kiện, bạn tự tìm hiểu theo cái Logic đó. 8.2.2 Thủ tục đáp ứng sự kiện với Report Cũng như sự kiện với Form, trên Report cũng có 6 vùng. Giả sử ta mở Report có tên: So_LuongReport như hình sau: ELEC Trang 105
  106. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Nhìn vào hình trên ta thấy: Phía bên phải có hộp thoại Report, hộp thoại này đang được chọn Event và có 7 thủ tục đáp ứng sự kiện. Giả sử ta d ùng sự kiện On Open. Theo các bước xây dựng chương trình như đã nói ở trên, ta có: Bạn gõ thêm dòng lệnh ở thân thủ tục: MsgBox(“Chao ban, an OK de mo Report nay”) Vì đây là Report đã có tên (So_luongReport), nên bạn chỉ lưu lại. Hãy thoát về CSDL và chạy Report này. Kết quả ta nhận được: ELEC Trang 106
  107. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI 8.2.3 Thủ tục đáp ứng sự kiện của các điều khiển khác tr ên Form Trên Form ta có thể đặt các đối tượng khác và các đối tượng này cũng có các sự kiện như: Kích, kích đúp, v.v Dạng tổng quát của sự kiện của đối t ượng này như sau: [Private] Sub _ () End Sub Ví dụ: Giả sử trên Form ta đặt một nút lệnh có tên là Command0, thì thủ tục đáp ứng sự kiện có dạng sau: Private Sub Command0_Click() End Sub Bạn có thể viết mã cho thân thủ tục tuỳ ý, giả sử ta chỉ thêm một lệnh: MsgBox (“Chao ban”) và ghi lại tệp này với tên: FormNutLenh như sau: Thoát về CSDL, kích đúp vào FormNutLenh như hình sau: ELEC Trang 107
  108. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Ta có hình mới như sau: Nếu bạn kích vào nút lệnh có tiêu đề Command0 thì thủ tục sẽ chạy và cho ta: Nếu bạn chọn OK thì chương trình sẽ kết thúc, vì trong chương trình ta chỉ mới cài 1 lệnh: MsgBox(“Chao ban”) 8.3 Tạo và thực hiện thủ tục và hàm 8.3.1 Cách tạo thủ tục và hàm. a.Taọ thủ tục, hàm trong Module Tab. Bước 1: Từ cửa sổ Database chọn Tab Module chọn New, sau đó cửa sổ soạn thảo xuất hiện như sau: Bước 2: Khai báo và tạo lập thủ tục hoặc hàm Bước 3: Ghi Module Ví dụ: Vào tuổi của hai người, tính tuổi trung bình của họ. ELEC Trang 108
  109. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Function Tong() Dim T1 As Interger Dim T2 As Interger Dim TB As Single T1 = InputBox( “vào tuoi cua nguoi thu nhat?”) T2 = InputBox( “vào tuoi cua nguoi thu hai?”) TB=(T1+T2)/2 MsgBox “Tuoi trung binh la:” & Str(TB) End Function Tuổi trung bình có thể không phải nguyên (vì phải chia cho 2), do đó ta phải khai báo l à thực (Single). Số thực trong máy là số có dấu chấm thập phân, ví dụ: 23.45, 12.00, -45.34567, v.v b. Tạo thủ tục đáp ứng sự kiên của các điều khiển trên Form. Trên Form ta có thể đặt các điều khiển như nút lệnh chẳng hạn, nút lệnh này cũng có các sự kiện. Các bước tiến hành: Bước 1: Mở Form và bổ sung một đối tượng lên Form, giả sử nút lệnh (Command button) chẳng hạn. Bước 2: Mở cửa sổ Code: Chọn nút lệnh, kích nút Build trên thanh Form Design, sau đó hộp thoại Code Builder hiện ra: Chọn Code Builder và chọn OK, một thủ tục sự kiện xuất hiện: Soạn thủ tục hoặc hàm đáp ứng sự kiện. Ghi lại thủ tục đó và chạy thử Hoặc: Chọn nút lệnh Mở hộp thoại Properties bằng cách chọn View và Properties Chọn thuộc tính On Click trong nhóm Event. Kích chọn nút (Event procedure) ứng với dòng On Click. . Chọn Code Builder, chọn OK Bước 3: Soạn thủ tục đáp ứng sự kiện. Bước 4: Ghi và chạy thử. Ví dụ: Tạo nút lệnh có tên Command0, khi ta kích vào nút l ệnh này thì bảng có tên So_Luong được mở ra. Các bước tiến hành như sau: Mở một database và tạo bảng có tên So_Luong ELEC Trang 109
  110. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Mở cửa sổ Design Form Tạo nút lệnh (command Button) có ti êu đề là Mở tệp như hình sau: Kích nút Build từ hộp thoại Choose Builder, chọn Code builder và OK một thủ tục hiện ra. Ta soạn thủ tục đáp ứng sự kiện cho nút lệnh đó: Private Sub Command0_Click() DoCmd.Opentable”So_luong” End Sub Ghi lại, sau đó chạy chương trình và kích vào nút lệnh này ta có kết quả là bảng So_Luong đã được mở như sau: c. Chương trình có nhiều thủ tục Một thủ tục khi chạy có thể yêu cầu (gọi) một hoặc nhiều thủ tục khác l àm việc. Lệnh gọi này được viết lại đúng tên thủ tục bị gọi, ví dụ hai thủ tục sau: Sub MoBang() DoCmd.OpenTable”So_luong” End Sub Và thủ tục tính tổng: Sub Tong() Dim a As Integer, b As Integer, s As Integer a = 12 b = 20 s = a + b MsgBox ("s=" & Str(s)) End Sub Để chạy được 2 thủ tục trên, ta có thể tạo một thủ tục khác (giả sử có t ên là GOI(), thủ tục GOI có dạng sau: Sub GOI() ELEC Trang 110
  111. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI MoBang Tong End Sub Khi chạy, thủ tục GOI() yêu cầu thủ tục MoBang() làm việc, thủ tục MoBang ()làm việc xong lại quay về thủ tục GOI() và thực hiện tiếp lệnh sau đó (tức là lệnh gọi thủ tục Tong). Cứ như thế cho đến khi tất cả các lệnh trong thủ tục GOI() đ ược hoàn tất. Ba thủ tục đó nằm trong một đoạn mã (chương trình) như sau: Nếu các bạn thay đổi trật tự các thủ tục đó nh ư hình sau: ELEC Trang 111
  112. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Thì có còn đúng không? Tất nhiên vẫn không sao, miễn là thủ tục GOI() phải được chạy trước thì trật tự mới đúng. Vậy làm thế nào để thủ tục GOI()được chạy trước? để làm được điều đó bạn theo các bước sau: Chọn Tools, chọn Macros như hình sau: Sau đó ta có hộp thoại: ELEC Trang 112
  113. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI ở trên nếu bạn chon Run thì thủ tục Tong được chạy trước và như vậy 2 thủ tục còn lại bị bỏ (không hợp với ý ta), do đó bạn kích vào thủ tục cần chạy trước (ở đây là thủ tục GOI). Sau khi kích vào thu tục GOI ta có: Để chạy bạn kích luôn vào RUN. Bạn cũng có thể xoá thủ tục bằng việc chọn thủ tục đó v à chọn Delete, còn muốn sửa một thủ tục hãy chọn thủ tục đó và chọn Edit. Ngoài ra bạn muốn xem một thủ tục chạy có hợp ý muốn của bạn hay không bằng cách chon thủ tục đó v à chọn Step Into, sau khi thực hiện một công đoạn, máy sẽ dừng, bạn phải chọn RUN trên thanh Menu và chọn Continue để máy thực hiện tuần tự cho đến hết các lệnh của thủ tục đó. 8.3.2 Đặt các thuộc tính cho điều khiển Mỗi điều khiển, ví dụ như Nút lệnh (Command Button), Hộp văn bản (Text Box), Nh ãn (Label), v.v đều có các thuộc tính của nó. Thế thuộc tính l à gì? Hiểu nôm na là “tập hợn các tính chất thuộc điều khiển đó, gọi là thuộc tính”, ví dụ thuộc tính của Text Box l à: Màu nền xanh, màu chữ đỏ, độ cao 500 điểm ảnh, độ rộng 1000, font chữ vnTime, cỡ chữ 20, lề tr ên 30, lề trái 50, v.v Ta nên nhớ một điều là: Mỗi điều khiển đều có một danh sách các thuộc tính, danh sác h này nằm ở trong một cửa sổ, gọi là cửa sổ thuộc tính (Properties Window) Khi một điều khiển đã được đặt lên Form, nếu chọn nó (kích vào nó) thì cửa sổ thuộc tính hiện ra (hay nếu chưa thấy nó, bạn chọn View và chọn Properties Window) Thuộc tính được phân chia thành các nhóm: Format (định dạng), Data (dữ liệu), Event (thủ tục đáp ứng sự kiện), Other (nhóm khác) v à All (chứa tất cả các thuộc tính) Ví dụ hình sau: ELEC Trang 113
  114. TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI Hình trên cho ta biết: Nút lệnh có tiêu đề là “Mở tệp” đã được chọn (nhận biết qua việc xuất hiện 8 ô vuông ở 4 góc và ở giữa bốn cạnh). Hình vuông to nhất ở góc trên bên trái dùng để di chuyển điều khiển, khi bạn đưa trỏ chuột vào hình vuông này, bạn ấn và giữ phím chuột đồng thời kéo, điều khiển sẽ di chuyển theo h ướng kéo của bạn. Hình bên phải là cửa sổ thuộc tính của nút lệnh có ti êu đề là “Mở tệp”. Cửa sổ này đang hiện nhóm thuộc tính thuộc nhóm Format. Muốn chọn một thuộc tính nào đó để gán cho nút lệnh này, bạn kích vào ô bên phải ứng với dòng có thuộc tính cần chọn, gõ thuộc tính vào, hoặc tìm thuộc tính đã có sắn (tuỳ theo giao diện tìm thuộc tính đó). Nếu bạn kích vào Form, ta có: Là thuộc tính của Form ứng với nhóm Event. Thao tác về nhóm Event như đã nói ở các phần trên. Giả sử ta đặt một nút lệnh lên Form, bình thường trên bề mặt nút lệnh có chữ Command0, nếu tạo nút thứ 2 sẽ có Command1 v.v Nếu muốn thay đổi chữ đó h ãy mở cửa sổ Properties, chọn Caption và gõ tiêu đề mới vào. Có nhiều thuộc tính khác nữa như: Name, Font v.v Tính chất Name rất quan trọng, nó mang tên của nút lệnh và vì vậy tên thủ tục đáp ứng sự kiện của nó cũng mang tên này. Nếu bạn chọn nút lệnh, chọn nhóm Other, chọn Name và gõ tên là “MoBang” (hay 1 tên nào đó tuỳ bạn) vào, thì thủ tục đáp ứng sự kiện là: Private Sub MoBang_Click() DoCmd.Opentable “So_luong” End Sub Lệnh DoCmd.OpenTable “So_luong”, có 3 phần: Lớp DoCmd (đây là đối tượng thuộc lớp lệnh) OpenTable (Mở bảng) “So-Luong” (tên cụ thể của bảng) ELEC Trang 114