BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN - CHƯƠNG 5 KẾT NỐI VÀ THAO TÁC VỚI CSDL MỤC TIÊU: SAU KHI HOÀN THÀNH CÁC BÀI TẬP, NGƯỜI HỌC CÓ THỂ Kết nối đến CSDL bằng điều khiển ADO Data Control và Connection Truy cập (Select, Update, Delete, Insert) dữ liệu sử dụng Connection Gắn kết dữ liệu giữa các điều khiển với đối tượng Connection Viết được một số ứng dụng quản trị CSDL đơn giản Tạo và trình bày báo cáo (Report) để in ra máy in
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Trang 126 ch−¬ng v kÕt nèi vµ thao t¸c víi csdl MỤC TIÊU: SAU KHI HOÀN THÀNH CÁC BÀI TẬP, NGƯỜI HỌC CÓ THỂ Kết nối đến CSDL bằng điều khiển ADO Data Control và Connection Truy cập (Select, Update, Delete, Insert) dữ liệu sử dụng Connection Gắn kết dữ liệu giữa các điều khiển với đối tượng Connection Viết được một số ứng dụng quản trị CSDL đơn giản Tạo và trình bày báo cáo (Report) để in ra máy in. A - ĐỀ BÀI TẬP Qui ước Các bài tập trong chương này đều liên quan đến việc kết nối và thao tác với một Cơ sở dữ liệu (CSDL) nhất định, do vậy để đảm bảo sự thống nhất cũng như tránh hiểu sai trong một số tình huống, Ở đây chúng ta chủ yếu sử dụng cơ sở dữ liệu sẵn có khi cài bộ Visual Studio 6.0, có tên là : Nwind.mdb. Sở dĩ chúng ta chọn CSDL này làm mẫu trong hầu hết các bài tập vì mấy lý do sau: • Sẵn có trong máy tính khi cài Visual Basic. • Đây là một cơ sở dữ liệu được xây dựng thực tế từ quản lý bán hàng của hãng North Wind, do vậy các bài tập liên quan sẽ sát với thực tiễn hơn. • Số lượng bản ghi trong CSDL này tương đối nhiều, đủ để minh hoạ trong rất nhiều trường hợp, do đó không phải mất công sức để lại. • Trong CSDL này có nhiều bảng và đã được chuẩn hoá. • Có đầy đủ các mối quan hệ 1-nhiều, nhiều-nhiều để có thể thực hành với các truy vấn nâng cao, truy vấn trên nhiều bảng đồng thời. Cơ sở dữ liệu Nwind.mdb thường được lưu trong thư mục cùng với thư mục VB: C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB. Với đường dẫn rất dài như trên, nói chung là không được thuận tiện trong khi viết chương trình. Ta sẽ giả thiết rằng, với mỗi chương trình, tệp Nwind.mdb sẽ được Copy vào trong cùng thư mục với tệp dự án. Ví dụ, nếu ta có một dự án tên là : QLHSSV.VBP, đặt trong thư mục C:\Projects\QLHSSV thì tệp Nwin.mdb cũng phải được đặt trong thư mục này: Hình 5.1 – Qui ước về việc copy và lưu tệp CSDL Nwind.mdb BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Trang 127 Ở đây cũng xin được cung cấp danh sách tất cả 8 bảng và mối quan hệ giữa các bảng này để chúng ta tiện theo dõi và tham khảo trong quá trình làm bài tập. Hình 5.2 – Các bảng và sơ đồ liên kết giữa chúng trong CSDL Nwind.mdb Kiểu dữ liệu của mỗi trường trong từng bảng cũng xin được cung cấp tại đây: Hãy lưu ý là chi tiết của từng kiểu dữ liệu (độ rộng) trong mỗi bảng có thể tham khảo bằng cách mở trực tiếp bảng đó ở chế độ Design View. Hình 5.3 - Bảng Suppliers (Nhà cung cấp) BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Trang 128 Hình 5.4 - Bảng Products (Sản phẩm) Hình 5.5 - Bảng Order Details (Chi tiết đơn hàng) Hình 5.6 - Bảng Orders (Đơn hàng) Hình 5.7 - Bảng Customers (Khách hàng) BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Trang 129 Hình 5.8 - Bảng Categories (Chủng loại sản phẩm) Hình 5.9 - Bảng Employees (Nhân viên bán hàng) Hình 5.10 - Bảng Shippers (Công ty vận chuyển) Các bài tập (từ 1-11) sử dụng điều khiển ADO Data Bài 1: Viết chương trình xem thông tin về khách hàng (Version 1). a. Giao diện: Hình 5.11 – Xem thông tin về khách hàng bằng ADO Data control và Textbox b. Yêu cầu: • Xây dựng giao diện chương trình như hình 11 • Có thể xem thông tin về khách hàng (gồm mã, họ tên, địa chỉ, số điện thoại) bằng cách click vào các nút trên điều khiển ADO Data control. BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Trang 130 Bài 2: Viết chương trình xem thông tin về khách hàng (Version 2) a. Giao diện Hình 5.12 – Xem thông tin về khách hàng sử dụng các phương thức của ADO b. Yêu cầu • Xây dựng giao diện như hình 12 • Chương trình có thể di chuyển đến các bản ghi thông qua các nút nhấn • Có cập nhật trạng thái (Enable/Disable) các nút khi đến BOF, EOF của bảng. • Nội dung trong các textbox không được phép thay đổi. Bài 3: Viết chương trình xem thông tin về khách hàng (Version 3) a. Giao diện Hình 5.13 – Danh sách khách hàng hiển thị trong Data Grid Control b. Yêu cầu : Hiển thị tất cả các bản ghi trong bảng Customers trong một DataGrid Bài 4: Viết chương trình xem thông tin về khách hàng (Version 4) a. Giao diện Hình 5.14 – Thông tin hiển thị chỉ gồm 4 trường b. Yêu cầu : Như bài 3 nhưng thông tin hiển thị chỉ gồm 4 trường BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Trang 131 Bài 5: Viết chương trình xem một bảng CSDL bất kỳ trong CSDL NWind a. Giao diện Hình 5.15 – Nạp một bảng bất kỳ trong CSDL NWind vào Data Grid b. Yêu cầu: Khi người dùng chọn tên bảng và click vào nút "Xem bảng này" thì chương trình nạp và hiển thị bảng vừa được chọn trong một Data Grid. Bài 6: Viết chương trình nạp tất cả mã nhà cung cấp vào một hộp Combo a. Giao diện Hình 5.16 -Nạp các mã nhà cung cấp vào một ComboBox b. Yêu cầu: Nạp tất cả các Mã nhà cung cấp (SupplierID) trong bảng Suppliers vào một hộp Combo như hình 16 Bài 7: Viết chương trình liệt kê các sản phẩm do 1 công ty cung cấp (ver 1) a. Giao diện Hình 5.17 - Chỉ hiển thị các sản phẩm ứng với mã NCC được chọn BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Trang 132 b. Yêu cầu: • Nạp tất cả các mã nhà cung cấp (Supplier) vào hộp Combo (Như bài số 6) • Khi người dùng chọn một mã nhà cung cấp trong Hộp Combo và click nút "Liệt kê các sản phẩm của NCC này" thì hiển thị tất cả các sản phẩm mà nhà cung cấp này đã cung ứng (Như hình 17). Bài 8: Viết chương trình liệt kê các sản phẩm do 1 công ty cung cấp (ver 2) a. Giao diện Hình 5.18 – Liệt kê các sản phẩm sử dụng TreeView và DataGrid b. Yêu cầu • Nạp Mã (SupplierID) và tên Công ty (CompanyName) trong bảng Suppliers vào một cây (TreeVIew), trong đó Mã được lưu trong trường Key và Tên công ty được lưu trong trường Text của mỗi nút thuộc cây. • Khi người dùng click chuột lên một nút (tên công ty) trong cây thì hiển thị tất cả các sản phẩm mà công ty đó cung cấp (Hiển thị tất cả các trường trong bảng Products) trong một Datagrid control như hình 18. Bài 9: Như bài 8 nhưng các sản phẩm được hiển thị trong một ListView. (Để cho ngắn gọn, hãy liệt kê 3 trường là ProductName,CategoryID,UnitPrice) như H.19. a. Giao diện: Hình 5.19 - Hiển thị sản phẩm trong ListView BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Trang 133 b. Yêu cầu: Khi người dùng click vào tên nhà cung cấp thì hiển thị SP trong ListView Bài 10: Xây dựng cây nhiều mức để xem thông tin về những sản phẩm đã bán a. Giao diện: Hình 5.20 – Xem thông tin bán hàng của mỗi sản phẩm b. Yêu cầu: • Nạp tên các công ty cung cấp sản phẩm vào cây (Nạp vào mức 1, sau gốc) • Ứng với mỗi công ty, nạp các sản phẩm mà công ty sản xuất • Khi người dùng click vào tên một sản phẩm (như hình 20) thì hiển thị các hoá đơn có xuất hiện sản phẩm này. Thông tin hiển thị gồm Mã, giá, số lượng. Bài 11: Bổ sung thêm một trường mới trong câu lệnh SELECT Hình 5.21 – Thêm một cột (trường) trong câu lệnh SELECT Yêu cầu: Như bài 10 nhưng thông tin hiển thị có thêm trường "Giá trị", trường này được dẫn xuất từ việc tính : Giá trị = Giá * Số lượng. BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Trang 134 Các bài tập sử dụng đối tượng connection và Recordset -------------------------------------- Bài 12: Thực hiện yêu cầu như bài tập 5 nhưng chỉ sử dụng đối tượng Connection và đối tượng Recordset để thao tác với CSDL. Bài tập 13: Làm lại bài 10 với sử dụng đối tượng Connection và Recordset Bài tập 14: Thao tác CSDL trên nhiều Form a. Mô tả chương trình Trong chương trình này, chúng ta sẽ xây dựng một ứng dụng gồm 3 Form để minh hoạ việc sử dụng đối tượng kết nối Connection. Đối tượng Connection sẽ được sử dụng chung trong tất cả các form (không giống với điều khiển ADO Data trước đây). Ứng dụng này sẽ có 3 Form và một Module: • Form thứ nhất có tên là frmNhapNCC: Để nhập thêm các nhà cung cấp vào bảng Suppliers. • Form thứ hai có tên là frmNhapSP để nhập các sản phẩm mà một Nhà cung cấp sản xuất. • Form chính: Tên là frmMain. Form này sẽ hiển thị danh sách các nhà cung cấp và sản phẩm (như bài tập số 9). Ngoài ra, trong form này có 2 nút lệnh là "Nhập NCC" và "Nhập sản phẩm", khi click vào nút thứ nhất thì hiển thị frmNhapNCC, khi Click vào nút thứ hai thì hiển thị frmNhapSP. • Module có tên là modKetNoi: Trong module này sẽ khai báo biến toàn cục là đối tượng Connection tên là Cn. Đối tượng Cn này sẽ được sử dụng chung trong các form. b. Giao diện khi chạy chương trình (Hình 22,23,24) Hình 5.22 – Giao diện của form : frmMain BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Trang 135 Hình 5.23 – Giao diện form: frmNhapNCC Hình 5.24 – Giao diện form: frmNhapSP Bài 15: Thiết kế báo cáo và kết xuất ra máy in danh sách các sản phẩm (ver 1) Hình 5.25 – Báo cáo danh sách các sản phẩm để in ra máy in . Sub &apos ;-- -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - - '/// Sự kiện này. False) End Sub &apos ;-- -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - - '/// Trở