LỜI NÓI ĐẦU

VB.NET là một ngôn ngữ lập trình trực quan, hƣớng đối tƣợng và hƣớng sự

kiện. Hơn nữa, nó có một bộ công cụ CASE giúp dễ dàng phát triển các ứng dụng trên

môi trƣờng Win Form và Web Form.

Cuốn tài liệu này các tác giả biên soạn theo hƣớng tiếp cận kỹ năng nhằm giúp

cho sinh viên nhanh chóng tiếp thu và sử dụng đƣợc các công cụ của VB.NET cũng

nhƣ lập trình đƣợc để phát triển các ứng dụng trong thực tế.

Cuốn tài liệu gồm 4 bài:

Bài 1: Sử dụng VB.NET lập trình trên Form để cập nhật cơ sở dữ liệu

Mục đích của bài này giúp các sinh viên có kỹ năng sử dụng VB.NET để lập

trình cập nhật cơ sở dữ liệu của một ứng dụng.

Bài 2: Sử dụng VB.NET lập trình tìm kiếm thông tin và hiển thị kết quả trên

form

Mục đích của bài này giúp các sinh viên có kỹ năng sử dụng VB.NET để lập

trình tìm kiếm thông tin và hiển thị kết quả tìm kiếm trên Form

Bài 3: Lập trình và in ấn báo cáo

Mục đích của bài này giúp các sinh viên có kỹ năng sử dụng Crystal Report để

thiết kế các báo cáo và sử dụng VB.NET để lập trình các form điều khiển việc xem, in

báo cáo.

Bài 4: Lập trình menu và phân phối ứng dụng

Mục đích của bài này giúp các sinh viên có kỹ năng sử dụng VB.NET để tạo và

lập trình menu cho ứng dụng. Đồng thời, giúp sinh viên có kỹ năng tạo bộ cài đặt,

đóng gói và phân phối các ứng dung.

Cuốn tài liệu không tránh khỏi còn có những sai sót, mong nhận đƣợc sự đóng

góp của các thầy cô giáo và các em sinh viên để cuốn tài liệu ngày một hoàn thiện hơn.

Xin trân trọng cảm ơn

Các tác giả

i

MỤC LỤC

BÀI 1. SỬ DỤNG VB.NET LẬP TRÌNH TRÊN FORM ............................................ 10

ĐỂ CẬP NHẬT CƠ SỞ DỮ LIỆU ............................................................................... 10

1.1. Tóm tắt kiến thức cần nhớ .................................................................................. 10

1.2. Hƣớng dẫn thực hành ............................................................................................ 5

1.2.1. Bài tập mẫu ..................................................................................................... 5

1.2.2. Hƣớng dẫn thực hiện: ................................................................................... 11

1.2.3. Bài tập thực hành .......................................................................................... 44

1.3. Bài tập về nhà ...................................................................................................... 62

BÀI 2. SỬ DỤNG VB.NET LẬP TRÌNH TÌM KIẾM THÔNG TIN .......................... 65

VÀ HIỂN THỊ KẾT QUẢ TRÊN FORM ..................................................................... 65

2.1 Tóm tắt kiến thức cần nhớ ................................................................................... 65

2.1.1. Câu lệnh SQL để tìm kiếm thông tin trong cơ sở dữ liệu ............................ 65

2.1.2. Sử dụng Form để hiển thị thông tin tìm kiếm. ............................................. 66

2.2. Hƣớng dẫn thực hành .......................................................................................... 68

2.2.1. Bài tập mẫu ................................................................................................... 68

2.1.2 Hƣớng dẫn thực hiện ..................................................................................... 80

2.2.3. Bài tập thực hành ........................................................................................ 120

2.3. Bài tập về nhà .................................................................................................... 145

BÀI 3. LẬP TRÌNH VÀ IN ẤN BÁO CÁO .............................................................. 147

3.1. Tóm tắt kiến thức cần nhớ ................................................................................ 147

3.2. Hƣớng dẫn thực hành ........................................................................................ 154

3.2.1. Bài tập mẫu ................................................................................................. 154

3.2.2 Hƣớng dẫn thực hiện ................................................................................... 168

3.3. Bài tập áp dụng ................................................................................................. 234

3.3. Bài tập về nhà .................................................................................................... 258

BÀI 4. LẬP TRÌNH MENU VÀ PHÂN PHỐI ỨNG DỤNG .................................... 259

4.1. Tóm tắt kiến thức cần nhớ ................................................................................ 259

4.1.1. Menu ........................................................................................................... 259

4.1.2. Phân phối ứng dụng .................................................................................... 261

4.2. Hƣớng dẫn thực hành ........................................................................................ 263

4.2.1. Bài tập mẫu ................................................................................................. 263

ii

4.2.2. Hƣớng dẫn thực hiện .................................................................................. 266

4.2.3. Bài tập thực hành ........................................................................................ 285

4.3. Bài tập về nhà .................................................................................................... 296

BÀI TẬP NHÓM. ....................................................................................................... 297

DANH MỤC TÀI LIỆU THAM KHẢO .................................................................... 299

iii

DANH MỤC HÌNH

Hình 1. Form dạng bản ghi .............................................................................................. 2

Hình 2. Form dạng danh sách .......................................................................................... 2

Hình 3. Form dạng một nhiều ......................................................................................... 3

Hình 4. Fom cập nhật thông tin khách hàng ................................................................... 8

Hình 5. Form hiển thị và cập nhậtdanh sách mặt hàng ................................................... 9

Hình 6. Form cập nhật thông tin bán hàng .................................................................... 10

Hình 7. Cửa sổ Add New Item ...................................................................................... 12

Hình 8. Cửa sổ Data Source Configuration Wizard ...................................................... 12

Hình 9. Cửa sổ Change Data Source ............................................................................. 13

Hình 10. Cửa sổ Add Connection ................................................................................. 14

Hình 11. Cửa sổ Data Source Configuration Wizard .................................................... 15

Hình 12. Hoàn thành việc kết nối với cơ sở dữ liệu ...................................................... 15

Hình 13. Kết quả sau khi kéo bảng khách hàng vào form ............................................ 16

Hình 14. Kết quả thiết kế form thông tin khách hàng ................................................... 22

Hình 15. Kết quả thực thi form thông tin khách hàng .................................................. 23

Hình 16. Form danh sách mặt hàng ............................................................................... 24

Hình 17. Cửa sổ Edit Columns ...................................................................................... 25

Hình 18. Kết quả thiết kế form danh sách mặt hàng ..................................................... 32

Hình 19. Kết quả thực thi form danh sách mặt hàng .................................................... 32

Hình 20. Form chi tiết bán hàng .................................................................................... 33

Hình 21. Cửa sổ Edit Columns ...................................................................................... 34

Hình 22. Kết quả thiết kế form chi tiết bán hàng .......................................................... 43

Hình 23. Kết quả thực thi form chi tiết bán hàng .......................................................... 44

Hình 24. Form thông tin giáo viên ................................................................................ 45

Hình 25. Form danh sách môn học ............................................................................... 47

Hình 26. Form phân công giảng dạy ............................................................................. 48

Hình 27. Form thông tin tài sản ..................................................................................... 51

Hình 28. Form danh sách đơn vị sử dụng ..................................................................... 52

Hình 29. Form quản lý tài sản ....................................................................................... 53

Hình 30. Form thông tin sinh viên ................................................................................ 56

Hình 31. Form danh sách khoa ...................................................................................... 58 iv

Hình 32. Form danh sách môn học ................................................................................ 60

Hình 33. Form quản lý điểm sinh viên .......................................................................... 61

Hình 34. Form tìm kiếm thông tin đơn giản .................................................................. 67

Hình 35. Form tìm kiếm thông tin theo nhiều điều kiện ............................................... 67

Hình 36. Form tìm kiếm thông tin khách hàng ............................................................. 69

Hình 37. Form tìm kiếm thông tin bán hàng ................................................................. 72

Hình 38. Form tìm kiếm thông tin bán hàng ................................................................. 74

Hình 39. Form tìm kiếm thông tin ................................................................................. 76

Hình 40. Form tìm kiếm thông tin khách hàng mua mặt hàng ...................................... 78

Hình 41. Form tìm kiếm thông tin khách hàng ............................................................. 80

Hình 42. Cửa sổ Add New Item .................................................................................... 81

Hình 43. Kết quả thiết kế form tìm kiếm khách hàng ................................................... 87

Hình 44. Kết quả thực thi form tìm kiếm khách hàng ................................................... 87

Hình 45. Kết quả tìm kiếm khách hàng theo tên ........................................................... 88

Hình 46. Kết quả tìm kiếm tất cả các khách hàng ......................................................... 88

Hình 47. Kết quả thiết kế form tìm kiếm mặt hàng ....................................................... 93

Hình 48. Kết quả tìm kiếm mặt hàng theo mã ............................................................... 93

Hình 49. Kết quả tìm kiếm mặt hàng theo tên mặt hàng ............................................... 94

Hình 50. Kết quả tìm kiếm tất cả mặt hàng ................................................................... 94

Hình 51. Form tìm kiếm thông tin bán hàng ................................................................. 95

Hình 52. Kết quả thiết kế form tìm kiếm thông tin bán hàng...................................... 102

Hình 53. Kết quả thực thi form tìm kiếm thông tin bán hàng ..................................... 103

Hình 54. Form tìm kiếm thông tin bán hàng ............................................................... 103

Hình 55. Kết quả thiết kế form tìm kiếm thông tin bán hàng...................................... 111

Hình 56. Kết quả thực thi form tìm kiếm thông tin bán hàng ..................................... 111

Hình 57. Form tìm kiếm thông tin các mặt hàng mà khách hàng đã mua ................... 112

Hình 58. Kết quả thiết kế form tìm kiếm thông tin mặt hàng khách hàng đã mua ..... 115

Hình 59. Kết quả thực thi form tìm kiếm thông tin mặt hàng khách hàng đã mua ..... 115

Hình 60. Form tìm kiếm thông tin số lần một mặt hàng đã mua bời khách hàng ....... 116

Hình 61. Kết quả thiết kế form tìm kiếm số lần mặt hàng khách hàng đã mua .......... 119

Hình 62. Kết quả thực thi form tìm kiếm số lần mặt hàng khách hàng đã mua .......... 120

Hình 63. Form tìm kiếm thông tin giáo viên ............................................................... 121

Hình 64. Form tìm kiếm môn học ............................................................................... 123

Hình 65. Tìm kiếm phân công giáo viên ..................................................................... 125

v

Hình 66. Tìm kiếm phân công giáo viên theo môn học .............................................. 127

Hình 67. Form tìm kiếm đơn vị ................................................................................... 129

Hình 68. Fom tìm kiếm tài sản .................................................................................... 131

Hình 69. Fom tìm kiếm tài sản thuộc đơn vị ............................................................... 133

Hình 70. Form tìm kiếm tài sản theo tình trạng .......................................................... 135

Hình 71. Form tìm kiếm môn học ............................................................................... 137

Hình 72. Form tìm kiếm thông tin về khoa ................................................................. 139

Hình 73.Form tìm kiếm sinh viên ............................................................................... 140

Hình 74. Form tìm kiếm điểm của sinh viên theo học kỳ ........................................... 142

Hình 75. Form tìm kiếm điểm sinh viên theo môn học .............................................. 144

Hình 76. Báo cáo dạng label in nhiều label trên một trang ......................................... 148

Hình 77. Báo cáo dạng label in trên một trang ........................................................... 149

Hình 78. Báo cáo dạng 1 bản ghi trên một trang ........................................................ 149

Hình 79. Cửa sổ Add New Item .................................................................................. 150

Hình 80. Cửa sổ Crystal Reports Gallery .................................................................... 151

Hình 81. Form điều khiển việc in giấy mời khách hàng ............................................. 153

Hình 82. Form điều khiển việc in hóa đơn bán hàng .................................................. 154

Hình 83. Giấy mời tham dự hội nghị khách hàng ....................................................... 155

Hình 84. Form điều khiển việc in giấy mời khách hàng ............................................. 156

Hình 85. Mẫu bảng kê bán hàng ................................................................................. 158

Hình 86. Hóa đơn bán hàng ......................................................................................... 158

Hình 87. Form điều khiển việc in hóa đơn .................................................................. 160

Hình 88. Form xem trƣớc khi in hóa đơn bán hàng .................................................... 162

Hình 89. Form điều khiển việc in báo cáo bán hàng ................................................... 166

Hình 90. Mẫu giấy mời khách hàng ............................................................................ 169

Hình 91. Cửa sổ Add New Item .................................................................................. 170

Hình 92. Cửa sổ Crystal Reports Gallery .................................................................... 171

Hình 93. Giao diện thiết kế báo cáo bằng Crystal Report ........................................... 171

Hình 94. Cửa sổ Format Editor ................................................................................... 174

Hình 95. Cửa sổ Databse Expert ................................................................................. 175

Hình 96. Cửa sổ Format Editor ................................................................................... 176

Hình 97. Cửa sổ Custom Style .................................................................................... 176

Hình 98. Kết quả thiết kế giấy mời khách hàng hoàn chỉnh ....................................... 177

vi

Hình 99. Kết quả thực thi in giấy mời khách hàng...................................................... 178

Hình 100. Form điều khiển việc in giấy mời khách hàng ........................................... 178

Hình 101. Kết quả thiết kế form in giấy mời khách hàng ........................................... 186

Hình 102. Kết quả sau khi thực hiện chức năng in giấy mời khách hàng. .................. 186

Hình 103. Cửa sổ Formula Name ................................................................................ 189

Hình 104. Cửa sổ Formula Workshop ......................................................................... 189

Hình 105. Kết quả thiết kế hóa đơn bán hàng bằng Crystal Report ............................ 192

Hình 106. Kết quả xem trƣớc hóa đơn bán hàng ......................................................... 192

Hình 107. Form in hóa đơn bảng kê bán hàng ............................................................ 193

Hình 108. Kết quả thiết kế form in hóa đơn, bảng kê bán hàng .................................. 205

Hình 109. Form điều khiển việc in ấn hóa đơn bán hàng ............................................ 205

Hình 110. Nội dung hóa đơn bán hàng sau khi đƣợc in ra máy in .............................. 206

Hình 111. Cửa sổ Select Resource. ............................................................................. 208

Hình 112. Kết quả thiết kế form xem trƣớc hóa đơn .................................................. 212

Hình 113. Kết quả thực thi form xem trƣớc hóa đơn .................................................. 213

Hình 114. Cửa sổ Formula Name ................................................................................ 215

Hình 115. Cửa sổ Formula Workshop ......................................................................... 215

Hình 116. Cửa sổ Insert Group .................................................................................... 218

Hình 117. Cửa sổ Create Running Total Field ............................................................ 219

Bảng 7. Các hàm để tính toán với nhóm của Crystal Report ...................................... 220

Hình 118. Cửa sổ Create Running Total Field ............................................................ 221

Hình 119. Cửa sổ Custom Style .................................................................................. 222

Hình 120. Kết quả thiết kế báo cáo thống kê bán hàng bằng Crystal Report ............. 223

Hình 121. Kết quả thực thi báo cáo bán hàng ............................................................. 224

Hình 122. Form điều khiển in báo cáo bán hàng ......................................................... 225

Hình 123. Cửa sổ thiết kế form xem trƣớc báo cáo. ................................................... 231

Hình 124. Kết quả thiết kế form điều khiển in báo cáo bán hàng ............................... 233

Hình 125. Kết quả thiết kế form xem trƣớc báo cáo bán hàng ................................... 233

Hình 126. Kết quả thực thi form in báo cáo bán hàng ................................................ 234

Hình 127. Kết quả thực thi form xem trƣớc báo cáo bán hàng. .................................. 234

Hình 128. Mẫu bảng phân công giảng dạy .................................................................. 235

Hình 129. Form in phân công giảng dạy ..................................................................... 236

Hình 130. Mẫu bảng phân công giảng dạy theo bộ môn ............................................ 238

Hình 131. Form in phân công giảng dạy ..................................................................... 239

vii

Hình 132. Mẫu bảng phân công giảng dạy theo môn học ........................................... 242

Hình 133. Form in phân công giảng dạy ..................................................................... 243

Hình 134. Mẫu bảng danh mục tài sản ........................................................................ 245

Hình 135. Form in danh mục tài sản ........................................................................... 246

Hình 136. Mẫu bảng danh mục tài sản theo đơn vị sử dụng ....................................... 248

Hình 137. Form điều khiển việc bảng danh mục tài sản ............................................. 249

Hình 138. Mẫu bảng điểm sinh viên ........................................................................... 252

Hình 139. Form điều khiển in bảng điểm sinh viên .................................................... 253

Hình 140. Mẫu bảng điểm sinh viên theo môn ........................................................... 255

Hình 141. Form điều khiển in bảng điểm sinh viên .................................................... 256

Hình 142. Menu kiểu các nút lệnh .............................................................................. 260

Hình 143. Menu dạng phân cấp .................................................................................. 260

Bảng 8. Bảng danh sách các loại dự án tạo bộ cài đặt ................................................ 262

Hình 144. Form quản lý bán hàng đã gắn menu ......................................................... 264

Hình 145. Cửa sổ Add New Item ................................................................................ 267

Hình 146. Kết quả thiết kế form quản lý ..................................................................... 267

Hình 147. Kết quả thực thi form quản lý .................................................................... 268

Hình 148. Cửa sổ Items Collection Editor .................................................................. 269

Hình 149. Kết quả thiết kế menu ................................................................................. 270

Hình 150. Kết quả thực thì form quản lý có menu ...................................................... 270

Hình 151. Cửa sổ Add New Project ............................................................................ 279

Hình 152. Cửa sổ File System ..................................................................................... 280

Hình 153. Cửa sổ Add Project Output Group ............................................................. 280

Hình 154. Cửa sổ Icon ................................................................................................. 281

Hình 155. Cửa sổ Select Item in Project ..................................................................... 281

Hình 156. Cửa sổ Add Files cho phép thêm các file cần thiết vào bộ cài đặt ............. 282

Hình 157. Cửa sổ Property Pages ................................................................................ 283

Hình 158. Cửa sổ Prerequisites ................................................................................... 284

Hình 159. Kết quả thiết kế bộ cài đặt .......................................................................... 285

Hình 160. Kết quả thực thi bộ cài đặt ......................................................................... 285

Hình 161. Form quản lý phân công giảng dạy đã gắn menu....................................... 286

Hình 162. Form quản lý tài sản đã gắn menu ............................................................. 289

Hình 163. Form quản lý điểm đã gắn menu ................................................................ 293

viii

DANH MỤC BẢNG

Bảng 1. Bảng dữ liệu khách hàng .................................................................................... 6

Bảng 2. Bảng dữ liệu mặt hàng ....................................................................................... 7

Bảng 3. Bảng chi tiết bán hàng ........................................................................................ 7

Bảng 4. Các hình thức tạo báo cáo bằng Crystal Report. ............................................ 151

Bảng 5. Các phần chính trên một báo cáo. .................................................................. 152

Bảng 6. Danh sách các trƣờng đặc biệt trong Crystal Report. .................................... 190

ix

BÀI 1. SỬ DỤNG VB.NET LẬP TRÌNH TRÊN FORM

ĐỂ CẬP NHẬT CƠ SỞ DỮ LIỆU

Mục tiêu

Sau bài học, sinh viên có khả năng:

- Kiến thức: Biết thiết kế Form và sử dụng VB.NET lập trình trên form để thực hiện

các thao tác cập nhật cơ sở dữ liệu: Nhập mới, thêm, xóa, sửa dữ liệu.

- Kỹ năng: Vận dụng đƣợc kiến thức thiết kế và lập trình trên form thực hiện cập nhật

cơ sở dữ liệu vào giải quyết các bài toán thực tế.

- Thái độ:

+ Nghiêm túc, sáng tạo

+ Tích cực tập luyện

Chuẩn bị dụng cụ, vật tư, thiết bị

Chuẩn bị máy tính có hệ điều hành Windows XP hoặc cao hơn, phần mềm

Microsoft Office, bộ gõ Tiếng Việt,phần mềm SQL Server 2000 hoặc cao hơn,phần

mềm Visual Studio 2008 hoặc cao hơn.

1.1. Tóm tắt kiến thức cần nhớ

Form là một đối tƣợng đƣợc sử dụng làm giao diện để thực hiện các tƣơng tác

với cơ sở dữ liệu trong đó có các thao tác cập nhật dữ liệu.

Form để cập nhật dữ liệu có nhiều dạng trong đó có một số dạng thông dụng.

Chẳng hạn nhƣ:

- Dạng bản ghi

x

Hình 1. Form dạng bản ghi

- Dạng lƣới hiển thị danh sách

Hình 2. Form dạng danh sách

- Dạng form một - nhiều

2

Hình 3. Form dạng một nhiều

Đôi khi còn phối hợp các dạng này với nhau để tạo thành một dạng mới.

Trên các form này thƣờng có có các đối tƣợng:

Lable (Nhãn): là điều khiển cho phép ngƣời sử dụng hiển thị chuỗi ký tự trên

biểu mẫu nhƣng không thể thay đổi chuỗi ký tự đó một cách trực tiếp.

Textbox (Ô nhập liệu) là một điều khiển cho phép nhận thông tin do ngƣời sử

dụng nhập vào. Đối với ô nhập liệu ta cũng có thể dùng để hiển thị thông tin, thông tin

này đƣợc đƣa vào tại thời điểm thiết kế hay thậm chí ở thời điểm thực thi ứng dụng.

Button: Nút lệnh là một điều khiển dùng để bắt đầu, ngắt hoặc kết thúc một quá

trình.Ngƣời sử dụng luôn có thể chọn một nút lệnh nào đó bằng cách nhấn chuột trên

nútlệnh đó. Hoặc có thể nhấn Enter để chọn nút lệnh khi nút đó đang có Focus.

Checkbox: Hộp kiểm hay còn gọi là hộp đánh dấu (Checkbox) là một điều

khiển đƣợc hiểnthị dƣới dạng một ô vuông. Ô vuông này hiển thị dấu lựa chọn nếu

nhƣ đƣợc chọn và đểtrắng nếu ô không đƣợc chọn. Điều khiển Check box đƣợc dùng

khi muốn nhận thôngtin từ ngƣời sử dụng theo kiểu Yes/No hoặc True/False. Ta cũng

có thể gom nhiềuđiều khiển lại một nhóm (dùng công cụ Group box) để hiển thị nhiều

khả năng lựachọn. Khi một check box đƣợc chọn thì giá trị của nó là 1; ngƣợc lại là 0.

3

Radio button: Công dụng của Radio button cũng tƣơng tự nhƣ Checkbox. Điểm

khác nhau chủ yếu giữa hai loại điều khiển này đó là trong cùng một nhóm (đƣợc tạo

bởi group boxhay picture box) tại mỗi thời điểm ta chỉ có thể chọn một radio button

nhƣng có thểđánh dấu chọn nhiều checkbox.

Listbox: Điều khiển này hiển thị một danh sách các đề mục mà ở đó ngƣời sử

dụng có thể chọn lựa một hoặc nhiều đề mục. List Box giới thiệu với ngƣời sử dụng

một danh sách các lựa chọn. Một cách mặc định các lựa chọn hiển thị theo chiều dọc

trên một cột vàbạn có thể thiết lập là hiển thị theo nhiều cột. Nếu số lƣợng các lựa

chọn nhiều vàkhông thể hiển thị hết trong danh sách thì một thanh trƣợt sẽ tự động

xuất hiện trênđiều khiển.

Combobox: Điều khiển Combobox có thể đƣợc xem là tích hợp giữa hai điều

khiển Textboxvà ListBox. Ngƣời sử dụng có thể chọn một đề mục bằng cách đánh

chuỗi văn bản vàoCombobox hoặc chọn một đề mục trong danh sách.

DataGridView: DataGridView là điều khiển chuyên dùng cho việc hiển thị dữ

liệu dƣới dạng bảng với rất nhiều chức năng nhƣ:

 Có thể biểu diễn dữ liệu trên bảng trong Textbox, CheckBox hoặc

DropDownList.

 Có khả năng sử dụng DataSource để kết nối với bất kì cơ sở dữ liệu nào,

với bất kì bảng nào.

 Dữ liệu trên điều khiển đƣợc lƣu sẵn trong bộ nhớ cache nên tăng tốc độ

xử lý mà vẫn đảm bảo khả năng xử lý hàng trăm bản ghi một lúc.

DataGridView hoàn toàn có thể sử dụng với Data Binding giúp đơn giản hóa

công việc kết nối dữ liệu

DataGridView là điều khiển dùng để hiển thị dữ liệu, do đó nó phải đƣợc kết

nối với một nguồn dữ liệu. Nguồn dữ liệu đó có thể đƣợc gán thông qua thuộc tính

DataSource của DataGridView hoặc thông qua viết mã.

Ngoài ra có thể còn có nhiều điều khiển khác cũng hay đƣợc sử dụng.

Các điều khiền này dần dần đƣợc đề cập đến trong quá trình thực hành.

Muốn điều khiển đƣợc các đối tƣợng trên form để thực hiện việc cập nhật dữ

liệu, ngƣời sử dụng phải viết các đoạn mã lệnh nhằm thực hiện các thao tác tƣơng ứng

mong muốn. Ví dụ muốn thực hiện thao tác thêm mới một bản ghi vào cơ sở dữ liệu

4

thì phải viết đoạn mã thực hiện thao tác này, tƣơng tự nhƣ thế ngƣời sử dụng sẽ viết

các đoạn mã lệnh thực hiện các công việc cụ thể khác và gắn vào các sự kiện cho từng

đối tƣợng cụ thể.

Để xây dựng một form dùng để cập nhật dữ liệu cho một cơ sở dữ liệu bằng

VB.NET, thực hiện các bƣớc sau:

1. Thiết kế một form mới.

2. Kết nối form với cơ sở dữ liệu

3. Đƣa các điều khiển vào form.

4. Đặt thuộc tính cho form và các điều khiển trên form.

5. Lập trình cho các sự kiện thực thi các nhiệm vụ.

6. Chạy thử.

7. Hiệu chỉnh form để đạt yêu cầu.

8. Ghi kết quả.

1.2. Hướng dẫn thực hành

1.2.1. Bài tập mẫu

Để quản lý việc bán hàng của một cửa hàng, chủ cửa hàng thuê một ngƣời lập

trình xây dựng một chƣơng trình quản lý bán hàng.

Yêu cầu chƣơng trình phải:

- Quản lý đƣợc các thông tin về khách hàng, mặt hàng và các giao dịch bán

hàng trong mỗi lần mua bán.

- Tìm kiếm đƣợc các thông tin về khách hàng, mặt hàng, giao dịch bán hàng

theo yêu cầu.

- Xem in đƣợc báo cáo theo yêu cầu.

- Tạo đƣợc hệ thống menu trên form để thực thi các yêu cầu trên.

- Tạo bộ cài đặt cho ứng dụng để có thể cài đặt trên các máy tính.

Để thực hiện yêu cầu của chủ cửa hàng, ngƣời lập trình đã thiết kế một cơ sở

dƣ̃ liê ̣u quan hệ có lƣợc đồ nhƣ sau:

tblKhachHang(MaKH, HoTen, GioiTinh, DiaChi, DienThoai)

tblMatHang(MaMH, TenMatHang, DVT)

tblBanHang(SoHieuHD, MaKH, NgayMuaBan, NguoiBan)

tblChiTietBanHang(SoHieuHD, MaMH, SoLuong, DonGia)

5

Trong đó:

MaKH: Mã khách hàng;

HoTen: Họ tên khách hàng;

Gioitinh: Giới tính;

Diachi: Địa chỉ;

DienThoai: Điện thoại;

MaMH: Mã mặt hàng;

TenMatHang: Tên mặt hàng;

DVT: Đơn vị tính;

SoHieuHD: Số hiệu hóa đơn;

SoLuong: Số lƣợng;

DonGia: Đơn giá;

NgayMuaBan: Ngày mua bán.

NguoiBanHang: Ngƣời bán hàng

Ngƣời lập trình đã sử dụng hệ quản trị cơ sở dữ liệu SQL Server để tạo ra cơ sở

dữ là QLYBH.MDF đặt tại liệu Quản lý bán hàng có tên

D:\VB.NET\QuanLyBanHang\Data\QLYBH.MDF và có cấu trúc nhƣ sau:

Bảng tblKhachHang

Bảng 1. Bảng dữ liệu khách hàng

TT Tên trƣờng Kiểu dữ liệu Cho phép Null

MaKH Int Không 1

Hoten Nvarchar(50) Không 2

Gioitinh Nvarchar(3) Không 5

Diachi Nvarchar(150) Không 6

DienThoai Varchar(20) Có 7

6

Bảng tblMatHang

Bảng 2. Bảng dữ liệu mặt hàng

TT Tên trƣờng Kiểu dữ liệu Cho phép Null

MaMH Int Không 1

TenMatHang Nvarchar(50) Không 2

DVT Nvarchar(10) Không 3

Bảng tblBanHang

TT Tên trƣờng Kiểu dữ liệu Cho phép Null

SoHieuHD Int Không 1

MaKH Nvarchar(50) Không 2

NgayMuaBan DateTime Không 3

NguoiBanHang Nvarchar(50) Không 4

Bảng tblChiTietBanHang

Bảng 3. Bảng chi tiết bán hàng

TT Tên trƣờng Kiểu dữ liệu Cho phép Null

SoHieuHD Không 1 Int

MaMH Không 2 Int

SoLuong Không 3 Int

DonGia Nvarchar(50) Không 4

Công việc 1: Do công việc phải thƣờng xuyên làm việc với khách hàng và quản

lý các khách hàng của mình chủ cửa hàng yêu cầu nhà lập trình thiết kế một form dạng

7

bản ghi có tên frmThongTinKhachHang thực hiện việc cập nhật dữ liệu cho bảng

tblKhachHang theo mẫu sau:

Hình 4. Fom cập nhật thông tin khách hàng

Yêu cầu:

- Nhãn cập nhật khách hàng: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 18,

căn giữa form

- Các nhãn Mã khách hàng, Họ và tên, Giới tính, Địa chỉ, Điện thoại là các label

có font: Microsoft Sans Serif, chữ thƣờng, cỡ 9, các nhãn này có lề trái giống nhau.

- Các điều khiển để nhập mã khách hàng, họ và tên, giới tính, địa chỉ, điện thoại

là các textbox, điều khiển lựa chọn giới tính là một combobox có 2 giá trị để lựa chọn

là Nam và Nữ, mặc định là Nam

- Các điều khiển:

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu

+ Nút tìm kiếm: cho phép tìm kiếm theo mã khách hàng.

8

+ Nút thoát: cho phép đóng form hiện thời.

Công việc 2: Do công việc phải thƣờng xuyên làm việc với mặt hàng và quản lý

các mặt hàng trong cửa hàng của mình chủ cửa hàng yêu cầu nhà lập trình thiết kế một

form dạng lƣới có tên frmDanhSachMatHang để nhập dữ liệu cho bảng tblMatHang

theo mẫu:

Hình 5. Form hiển thị và cập nhậtdanh sách mặt hàng

Yêu cầu:

- Nhãn danh sách mặt hàng: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 18,

căn giữa form

- Sử dụng đối tƣợng DataGridView để hiển thị danh sách mặt hàng. Chế độ lựa

chọn dòng trên lƣới là FullRowSelect và không cho phép chọn nhiều bản ghi cùng lúc.

Có thể thao tác trực tiếp với dữ liệu ngay trên lƣới.

- Các điều khiển:

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời.

+ Nút thêm: cho phép thêm một bản ghi mới vào lƣới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

9

+ Nút lƣu: cho phép cập nhật các thông tin trên lƣới vào cơ sở dữ liệu

+ Nút thoát: cho phép đóng form hiện thời.

Công việc 3: Để thực hiện việc bán hàng cho khách của mình chủ cửa hàng yêu

cầu nhà lập trình thiết kế một form dạng kết hợp bản ghi và lƣới có tên frmBanHang

để nhập và hiển thị dữ liệu cho bảng tblBanHang theo mẫu:

Hình 6. Form cập nhật thông tin bán hàng

Yêu cầu:

- Nhãn chi tiết bán hàng: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 18, căn

giữa form

- Các nhãn Mã khách hàng, Số hiệu hóa đơn, Ngày mua bánlà các label có font:

Microsoft Sans Serif, chữ thƣờng, cỡ 9, các nhãn này có lề trái giống nhau.

- Các điều khiển để nhập mã khách hàng, số hiệu hóa đơn là các textbox, điều

khiển lựa chọn ngày mua bán là một DateTimePickercho phép ngƣời sử dụng lựa chọn

ngày bán hàng, mặc định ngày mua bán là ngày hiện tại theo đồng hồ hệ thống.

- Các điều khiển:

10

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời khi ngƣời sử dụng xác nhận xóa từ

hộp thoại.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu khi

ngƣời sử dụng xác nhận xóa từ hộp thoại.

+ Nút tìm kiếm: cho phép tìm kiếm theo số hiệu hóa đơn.

+ Nút tìm: cho phép tìm theo mã khách hàng.

+ Nút thêm khách hàng: cho phép mở cửa sổ chi tiết thông tin khách hàng.

+ Nút thoát: cho phép đóng form hiện thời.

1.2.2. Hướng dẫn thực hiện:

Công việc 1: Thiết kế form dạng bản ghi theo mẫu

1. Phân tích yêu cầu:

Theo yêu cầu trên thì phải có một form chứa:

- Các đối tƣợng có nội dung “THÔNG TIN KHÁCH HÀNG”, “Mã khách

hàng”, “Họ và tên”, “Giới tính”, “Địa chỉ”, “Điện thoại” là các Label.

- Các đối tƣợng ô nhập mã khách hàng, họ và tên, địa chỉ, điện thoại là các

Textbox.

- Đối tƣợng giới tính là một Combobox với 2 giá trị là Nam, Nữ.

- Các nút “Thêm” “Xóa”, “Sửa”, “Lƣu”, “Tìm kiếm”, “Thoát” là các Button

- Đối tƣợng để di chuyển trên các bản ghi là đối tƣợng BindingNavigator.

2. Hướng dẫn thao tác

Nhƣ vậy, để thực hiện công việc thiết kế form dạng bản ghi có tên

frmThongTinKhachHang theo yêu cầu, ngƣời lập trình thực các bƣớc nhƣ sau:

1. Mở VB.NET

2. Tạo form mới

Trên thanh menu, chọn Project/Add New Item.

Xuất hiện cửa sổ Add New Item. Chọn loại Windows Form, sau đó nhập tên

frmThongTinKhachHang vào ô Name rồi nhấn nút Add.

11

Hình 7. Cửa sổ Add New Item

3. Thiết lập kết nối với cơ sở dữ liệu QLYBH.MDF

Để tạo một kết nối với cơ sở dữ liệu QLYBH.MDF thì vào thực đơn Data chọn

Add New Data Source cửa sổ Data Source Configuration Wizard xuất hiện

Hình 8. Cửa sổ Data Source Configuration Wizard

12

Chọn biểu tƣợng Database và nhấn nút Next, cửa sổ Choose Data Source xuất

hiện, yêu cầu chọn kết nối cơ sở dữ liệu, nếu trƣớc đó chƣa tạo kết nối thì nhấn vào

New Connectionsau đó lựa chọn loại dữ liệu cần kết nối.

Hình 9. Cửa sổ Change Data Source

13

Hình 10. Cửa sổ Add Connection

Sau khi nhập các thông số kết nối và lựa chọn cơ sở dữ liệu cho báo cáo nhấn

vào OK để xác nhận thông tin kết nối và chuyển qua cửa sổ Data Source Configuration

Wizard.

14

Hình 11. Cửa sổ Data Source Configuration Wizard

Nhấn Next và để chuyển qua cửa sổ tiếp theo. Lựa chọ loại đối tƣợng cơ sở dữ

liệu nhƣ: Tables, Views, Store Procedures và Functions. Nhập tên cho DataSet cần tạo.

Hình 12. Hoàn thành việc kết nối với cơ sở dữ liệu

4. Thiết kế form theo mẫu và gắn các điều khiển với nguồn dữ liệu đã kết nối

a) Để tạo điều khiển label Thông tin khách hàng theo yêu cầu thực hiện:

15

Kéo điều khiển Label từ của sồ Toolbox vào form. Nháy phải chuột vào Label

chọn Properties và thiết lập các thuộc tính cho Label này:

 Text: THÔNG TIN KHÁCH HÀNG

 Font name: Microsoft Sans Serif

 Font size: 18

 Font bold: True

 Trên menu chọn Format/Center in form/Horizontally để căn giữa.

Tiếp theo, trên thanh menu chọn Data / Show Data Source hoặc ấn tổ hợp phím

Shift + Alt + D để bật cửa sổ Data Source.

Từ cửa sổ Data Source chọn bảng tblKhachHang trong danh sách. Nhấn vào

mũi tên quay xuống bên phải của bảng tblKhachHang chọn Details để chuyển chế độ

hiển thị bảng tblKhachHang sang dạng chi tiết từng bản ghi. Nhấn vào mũi tên quay

xuống bên phải của cột GioiTinh của bảng tblKhachHang và chọn dạng hiển thị là

ComboBox.

Nhấn chuột và kéo bảng tblKhachHang này vào form.

Hình 13. Kết quả sau khi kéo bảng khách hàng vào form

Nháy phải chuột vào nhãn “Ma KH” chọn Properties và thiết lập các thuộc tính

cho nhãn này:

 Font name: Microsoft Sans Serif

 Font size: 9.

 Các thuộc tính khác để mặc định.

16

Thực hiện tƣơng tự để hoàn thành yêu cầu với các label nhƣ: Họ và tên, Giới

tính, Địa chỉ, Điện thoại để thiết lập các thuộc tính về font name và font size.

Nháy phải chuột vào textbox MaKHTextbox chọn Properties và thiết lập các

thuộc tính cho textbox này:

 Name: MaKHTextbox

 Font name: Microsoft Sans Serif

 Font size: 9

Thực hiện các thao tác tƣơng tự với các textbox khác nhƣ: HoTenTextbox,

DiaChiTextbox, DienThoaiTextbox

Nháy phải chuột vào GioiTinhCombobox chọn Properties và thiết lập các thuộc

tính cho Combobox này:

 Name: GioiTinhCombobox

 Font name: Microsoft Sans Serif

 Font size: 9

 Items: Collection (Nam/Nữ)

Kéo điều khiển Button từ cửa sổ Toolbox vào form. Nháy phải chuột vào

Button chọn Properties và thiết lập các thuộc tính cho Button này:

 Name: ButtonThem

 Font name: Microsoft Sans Serif

 Font size: 9

 Viết đoạn mã lệnh VB.NET trong sự kiện ButtonThem_Click nhƣ sau:

Private Sub ButtonThem_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonThem.Click

MaKHTextBox.Text = ""

HotenTextBox.Text = ""

DiachiTextBox.Text = ""

DienThoaiTextBox.Text = ""

HotenTextBox.Enabled = True

DiachiTextBox.Enabled = True

17

DienThoaiTextBox.Enabled = True

GioitinhComboBox.Enabled = True

MaKHTextBox.Enabled = False

ButtonLuu.Enabled = True

ButtonThem.Enabled = False

HotenTextBox.Focus()

End Sub

Thực hiện các thao tác tƣơng tự với các nút lệnh khác nhƣ: ButtonSua,

ButtonXoa, ButtonTimKiem, ButtonThoat

Trong sự kiện ButtonXoa_Click viết mã lệnh nhƣ sau:

Private Sub ButtonXoa_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles ButtonXoa.Click

If MessageBox.Show("Bạn có chắc chắn muốn xóa khách hàng này?",

"Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) =

DialogResult.Yes Then

Dim oldRegionRow As QLYBHDataSet.tblKhachHangRow

oldRegionRow =

QLYBHDataSet.tblKhachHang.FindByMaKH(Convert.ToInt32(MaKHTextBox.

Text))

TblKhachHangTableAdapter.Delete(Convert.ToInt32(MaKHTextBox.Text))

Me.TblKhachHangTableAdapter.Update(Me.QLYBHDataSet.tblKhachHang)

Me.TblKhachHangTableAdapter.Fill(Me.QLYBHDataSet.tblKhachHang)

18

End If

End Sub

Trong sự kiện ButtonSua_Click viết đoạn mã lệnh sau:

Private Sub ButtonSua_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles ButtonSua.Click

If Not String.IsNullOrEmpty(MaKHTextBox.Text) Then

HotenTextBox.Enabled = True

DiachiTextBox.Enabled = True

DienThoaiTextBox.Enabled = True

GioitinhComboBox.Enabled = True

MaKHTextBox.Enabled = False

ButtonLuu.Enabled = True

ButtonSua.Enabled = False

HotenTextBox.Focus()

End If

End Sub

Trong sự kiện ButtonTimKiem _Click viết đoạn mã lệnh sau:

Private Sub ButtonTimKiem_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

ButtonTimKiem.Click

If Not String.IsNullOrEmpty(MaKHTextBox.Text) Then

TblKhachHangBindingSource.Filter = "MaKH='" &

MaKHTextBox.Text & "'"

19

Me.TableAdapterManager.UpdateAll(Me.QLYBHDataSet)

Else

MessageBox.Show("Chưa nhập mã khách hàng để tìm

kiếm", "Thông báo", MessageBoxButtons.OK,

MessageBoxIcon.Error)

MaKHTextBox.Focus()

End If

End Sub

Trong sự kiện ButtonLuu_Click viết đoạn mã lệnh sau:

Private Sub ButtonLuu_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles ButtonLuu.Click

'Đoạn mã này thực hiện việc kiểm tra dữ liệu ở ô mã khách hàng để quyết

định thực hiện việc thêm mới một bản ghi hay cập nhật thông tin của bản

ghi đã có.

If MaKHTextBox.Text = "" Then

Dim kh As QLYBHDataSet.tblKhachHangRow

kh = Me.QLYBHDataSet.tblKhachHang.NewtblKhachHangRow()

kh.Diachi = DiachiTextBox.Text

kh.DienThoai = DienThoaiTextBox.Text

kh.Hoten = HotenTextBox.Text

kh.Gioitinh = GioitinhComboBox.SelectedItem.ToString()

Me.QLYBHDataSet.tblKhachHang.Rows.Add(kh)

Me.TblKhachHangTableAdapter.Update(Me.QLYBHDataSet.tblKhachHang)

20

Me.TblKhachHangTableAdapter.Fill(Me.QLYBHDataSet.tblKhachHang)

Else

TblKhachHangTableAdapter.UpdateKhachHang(HotenTextBox.Text,

GioitinhComboBox.SelectedItem.ToString(), DiachiTextBox.Text,

DienThoaiTextBox.Text, Convert.ToInt32(MaKHTextBox.Text))

Me.TblKhachHangTableAdapter.Update(Me.QLYBHDataSet.tblKhachHang)

Me.TblKhachHangTableAdapter.Fill(Me.QLYBHDataSet.tblKhachHang)

End If

HotenTextBox.Enabled = False

DiachiTextBox.Enabled = False

DienThoaiTextBox.Enabled = False

GioitinhComboBox.Enabled = False

MaKHTextBox.Enabled = True

ButtonLuu.Enabled = False

If MaKHTextBox.Text = "" Then

ButtonThem.Enabled = False

Else

ButtonSua.Enabled = False

End If

End Sub

21

Trong sự kiện ButtonThoat_Click viết đoạn mã lệnh sau:

Private Sub ButtonThoat_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonThoat.Click

'Câu lệnh này để đóng form hiện tại.

Me.Close()

End Sub

Điều khiển TblKhachHangBindingNavigator để thực hiện việc di chuyển trên

các bản ghi của bảng tblKhachHang đƣợc VB.NET cung cấp sẵn, mặc định khi kéo

bảng tblKhachHang từ cửa sổ Data Source vào form thì đối tƣợng

TblKhachHangBindingNavigator cũng đƣợc thêm vào form chỉ việc kéo điều khiển

này đặt vào vị trí theo yêu cầu.

Chạy thử form để kiểm tra kết quả bằng cách nhấn vào phím F5 trên bàn phím

hoặc vào Build chọn Run.

3. Kết quả thiết kế

Hình 14. Kết quả thiết kế form thông tin khách hàng

22

4. Kết quả thực thi

Hình 15. Kết quả thực thi form thông tin khách hàng

Công việc 2: Thiết kế form cập nhật thông tin mặt hàng

23

Hình 16. Form danh sách mặt hàng

1. Phân tích yêu cầu:

Theo mẫu trên thì phải có một form chứa:

- Các đối tƣợng có nội dung “THÔNG TIN KHÁCH HÀNG” là các Label.

- Đối tƣợng hiển thị danh sách mặt hàng là DataGridView

- Các nút “Thêm” “Xóa”, “Sửa”, “Lƣu”, “Tìm kiếm”, “Thoát” là các Button

- Đối tƣợng để di chuyển trên các bản ghi là đối tƣợng BindingNavigator.

2. Hướng dẫn thao tác:

Để thực hiện việc thiết kế form dạng lƣới có tên frmDanhSachMatHang để

nhập dữ liệu cho bảng tblMatHang ngƣời lập trình đã thực hiện các bƣớc sau:

1. Tạo form mới với tên frmDanhSachMatHang bằng cách thực hiện các thao

tác: Trên thanh menu, chọn Project/Add New Item.

Xuất hiện cửa sổ Add New Item. Chọn loại Windows Form, sau đó nhập tên

frmDanhSachMatHang vào ô Name rồi nhấn nút Add.

2. Thiết kế các điều khiển: Nhãn “Danh sách mặt hàng”, các nút lệnh Thêm,

Sửa, Xóa, Tìm kiếm, Thoát trên form dạng lƣới tƣơng tự nhƣ với các điều khiển tƣơng

ứng của công việc 1 đã thao tác trên form frmThongTinKhachHang.

24

3. Chọn bảng tblMatHang từ cửa sổ Data Source và kéo vào form. Điều chỉnh

kích thƣớc và vị trí của lƣới cho phù hợp.

Nháy phải chuột vào lƣới, chọn Properties để thiết lập các thuộc tính cho lƣới

nhƣ sau:

 Name: TblMatHangDataGridView

 Selection Mode: FullRowSelect

 MultiSelect: False.

 Các thuộc tính khác để mặc định.

Nhấn vào nút ở thuộc tính Columns trong cửa sổ Properties của lƣới. Xuất

hiện cửa sổ Edit Columns.

Hình 17. Cửa sổ Edit Columns

Nhấn vào các cột ở khung Selected Columns bên trái và thay đổi giá trị

HeaderText ở khung Bound Column Properties bên phải cho phù hợp với yêu cầu.

Nhấn OK để áp dụng tiêu đề cho các cột của lƣới danh sách mặt hàng.

Điều khiển TblMatHangBindingNavigator để thực hiện việc di chuyển trên các

bản ghi của bảng tblMatHang đƣợc VB.NET cung cấp sẵn, mặc định khi kéo bảng

tblMatHang từ cửa sổ Data Source vào form thì đối tƣợng

TblMatHangBindingNavigator cũng đƣợc thêm vào form chỉ việc kéo điều khiển này

đặt vào vị trí theo yêu cầu.

Viết mã lệnh cho các điều khiển nhƣ sau:

25

Mặc định khi kéo lƣới vào form sẽ phát sinh mã trong sự kiện Load của form

frmDanhSachMatHang nhƣ sau:

Private Sub frmDanhSachMatHang_Load(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

MyBase.Load

'TODO: This line of code loads data into the

'QLYBHDataSet.tblMatHang' table. You can move, or remove it, as

needed.

Me.TblMatHangTableAdapter.Fill(Me.QLYBHDataSet.tblMatHang)

End Sub

Nút lệnh Thêm:

Private Sub ButtonThem_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles ButtonThem.Click

'Đoạn mã này thực hiện việc kiểm tra dữ liệu ở ô mã khách hàng để quyết

định thực hiện việc thêm mới một bản ghi hay cập nhật thông tin của bản ghi

đã có.

MaKHTextBox.Text = ""

HotenTextBox.Text = ""

DiachiTextBox.Text = ""

DienThoaiTextBox.Text = ""

HotenTextBox.Enabled = True

DiachiTextBox.Enabled = True

DienThoaiTextBox.Enabled = True

GioitinhComboBox.Enabled = True

26

MaKHTextBox.Enabled = False

ButtonLuu.Enabled = True

ButtonThem.Enabled = False

HotenTextBox.Focus()

If MaKHTextBox.Text = "" Then

Dim kh As QLYBHDataSet.tblKhachHangRow

kh = Me.QLYBHDataSet.tblKhachHang.NewtblKhachHangRow()

kh.Diachi = DiachiTextBox.Text

kh.DienThoai = DienThoaiTextBox.Text

kh.Hoten = HotenTextBox.Text

kh.Gioitinh = GioitinhComboBox.SelectedItem.ToString()

Me.QLYBHDataSet.tblKhachHang.Rows.Add(kh)

Me.TblKhachHangTableAdapter.Update(Me.QLYBHDataSet.tblKhachHang)

Me.TblKhachHangTableAdapter.Fill(Me.QLYBHDataSet.tblKhachHang)

End If

End Sub

Nút lệnh Xóa

Private Sub ButtonXoa_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles ButtonXoa.Click

'Đoạn mã này sẽ xác nhận việc xóa dữ liệu của người sử dụng bằng cách

xuất hiện một hộp thoại xác nhận xóa. Khi người dùng chọn Yes thì hệ thống

sẽ xóa bản ghi được lựa chọn.

27

If MessageBox.Show("Bạn có chắc chắn muốn xóa khách hàng này?",

"Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) =

DialogResult.Yes Then

Dim oldRegionRow As QLYBHDataSet.tblKhachHangRow

oldRegionRow =

QLYBHDataSet.tblKhachHang.FindByMaKH(Convert.ToInt32(MaKHTextBox.

Text))

TblKhachHangTableAdapter.Delete(Convert.ToInt32(MaKHTextBox.Text))

Me.TblKhachHangTableAdapter.Update(Me.QLYBHDataSet.tblKhachHang)

Me.TblKhachHangTableAdapter.Fill(Me.QLYBHDataSet.tblKhachHang)

End If

End Sub

Nút lệnh Sửa:

Private Sub ButtonSua_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles ButtonSua.Click

If Not String.IsNullOrEmpty(MaKHTextBox.Text) Then

HotenTextBox.Enabled = True

DiachiTextBox.Enabled = True

DienThoaiTextBox.Enabled = True

GioitinhComboBox.Enabled = True

MaKHTextBox.Enabled = False

28

ButtonLuu.Enabled = True

ButtonSua.Enabled = False

HotenTextBox.Focus()

End If

End Sub

Nút lệnh Tìm kiếm:

Private Sub ButtonTimKiem_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles ButtonTimKiem.Click

'Đoạn mã này thực hiện việc tìm kiếm khách hàng dựa theo mã khách hàng.

If Not String.IsNullOrEmpty(MaKHTextBox.Text) Then

TblKhachHangBindingSource.Filter = "MaKH='" & MaKHTextBox.Text

& "'"

Me.TableAdapterManager.UpdateAll(Me.QLYBHDataSet)

Else

MessageBox.Show("Chưa nhập mã khách hàng để tìm kiếm", "Thông

báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

MaKHTextBox.Focus()

End If

End Sub

Nút lệnh Lƣu:

Private Sub ButtonLuu_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles ButtonLuu.Click

If MaKHTextBox.Text = "" Then

29

Dim kh As QLYBHDataSet.tblKhachHangRow

kh = Me.QLYBHDataSet.tblKhachHang.NewtblKhachHangRow()

kh.Diachi = DiachiTextBox.Text

kh.DienThoai = DienThoaiTextBox.Text

kh.Hoten = HotenTextBox.Text

kh.Gioitinh = GioitinhComboBox.SelectedItem.ToString()

Me.QLYBHDataSet.tblKhachHang.Rows.Add(kh)

Me.TblKhachHangTableAdapter.Update(Me.QLYBHDataSet.tblKhachHang)

Me.TblKhachHangTableAdapter.Fill(Me.QLYBHDataSet.tblKhachHang)

Else

'TblKhachHangTableAdapter.UpdateKhachHang(HotenTextBox.Text,

GioitinhComboBox.SelectedItem.ToString(), DiachiTextBox.Text,

DienThoaiTextBox.Text, Convert.ToInt32(MaKHTextBox.Text))

Me.TblKhachHangTableAdapter.Update(Me.QLYBHDataSet.tblKhachHang)

Me.TblKhachHangTableAdapter.Fill(Me.QLYBHDataSet.tblKhachHang)

End If

HotenTextBox.Enabled = False

DiachiTextBox.Enabled = False

DienThoaiTextBox.Enabled = False

30

GioitinhComboBox.Enabled = False

MaKHTextBox.Enabled = True

ButtonLuu.Enabled = False

If MaKHTextBox.Text = "" Then

ButtonThem.Enabled = False

Else

ButtonSua.Enabled = False

End If

End Sub

Nút lệnh Thoát:

Private Sub ButtonThoat_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles ButtonThoat.Click

Me.Close()

End Sub

31

3. Kết quả thiết kế

Hình 18. Kết quả thiết kế form danh sách mặt hàng

4. Kết quả thực thi

Hình 19. Kết quả thực thi form danh sách mặt hàng

Công việc 3: Thiết kế form dạng kết hợp bản ghi và lƣới có tên frmBanHang

32

Hình 20. Form chi tiết bán hàng

1. Phân tích yêu cầu

Theo yêu cầu trên thì phải có một form chứa:

- Các đối tƣợng có nội dung “CHI TIẾT BÁN HÀNG”, “Số hiệu hóa đơn”,

“Mã khách hàng”, “Ngày mua bán”, là các Label.

- Các đối tƣợng ô nhập mã khách hàng, số hiệu hóa đơn, ngƣời bán hàng là các

Textbox.

- Đối tƣợng lựa chọn ngày tháng là điều khiển DateTimePicker.

- Các nút “Thêm khách hàng”, Thêm, Sửa, Xóa, Lƣu, “Tìm kiếm”, “Kết thúc”

là các điều khiển Button

- Danh sách các mặt hàng trong một hóa đơn là một điều khiển DataGridView.

- Điều khiển cho phép di chuyển qua lại giữa các hóa đơn là BindingNavigator.

2. Hướng dẫn thao tác.

Để hoàn thành việc thiết kế form dạng kết hợp bản ghi và lƣới có tên

frmBanHang ngƣời lập trình đã tiến hành các công việc sau:

1. Tạo form mới với tên frmBanHang bằng cách thực hiện các thao tác: Trên

thanh menu, chọn Project/Add New Item.

Xuất hiện cửa sổ Add New Item. Chọn loại Windows Form, sau đó nhập tên

frmBanHang vào ô Name rồi nhấn nút Add. 33

2. Từ cửa sổ Data Source chọn bảng tblBanHang. Nhấn vào mũi tên quay

xuống bên phải của bảng tblBanHang chọn kiểu hiển thị là Details.

3. Kéo bảng tblBanHang và tblChiTietHoaDon từ cửa sổ Data Source vào form.

Điều chỉnh vị trí và kích thƣớc cho phù hợp với yêu cầu.

4. Sửa nhãn cho các label cho đúng yêu cầu.

5. Nháy chuột phải vào lƣới hiển thị chi tiết hóa đơn chọn Properties để thiết

lập các thuộc tính cho lƣới:

 RowHeadersVisible: False.

 MultiSelect: False.

 SelectionMode: FullRowSelect.

6. Nhấn vào nút ở thuộc tính Columns trong cửa sổ Properties của lƣới. Xuất

hiện cửa sổ Edit Columns.

Hình 21. Cửa sổ Edit Columns

Thay đổi thuộc tính HeaderText các cột cho phù hợp với yêu cầu. Thiết lập

thuộc tính AutoSizeMode cho các cột “Số hóa đơn”, “Số lƣợng”, “Đơn giá” là

ColumnHeader, cột “Mặt hàng” là DisplayedCells.

Để thay đổi kiểu hiển thị cho cột mặt hàng thành dạng ComboBox cần thiết lập

các thuộc tính cho cột MaMH nhƣ sau:

 DataPropertyName: MaMH.

34

 DataSource: TblMatHangBindingSource.

 DisplayMember: TenMatHang.

 ValueMember: MaMH.

 ColumnType: DataGridViewComboBoxColumn.

 DisplayStyle: DropDownButton.

 Các thuộc tính còn lại để giá trị mặc định.

Nhấn OK để cập nhật lƣới hiển thị chi tiết hóa đơn.

Điều khiển TblBanHangBindingNavigator để thực hiện việc di chuyển trên các

bản ghi của bảng tblBanHang đƣợc VB.NET cung cấp sẵn, mặc định khi kéo bảng

tblBanHang từ cửa sổ Data Source vào form thì đối tƣợng

TblBanHangBindingNavigator cũng đƣợc thêm vào form chỉ việc kéo điều khiển này

đặt vào vị trí theo yêu cầu.

Kéo điều khiển Button từ cửa sổ Toolbox vào form và thay đổi thuộc tính cho

Button tƣơng tự nhƣ phần trên.

Viết mã lệnh cho các điều khiển trên form nhƣ sau:

Sự kiện form load.

Private Sub frmBanHang_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

'TODO: This line of code loads data into the 'QLYBHDataSet.tblMatHang'

table. You can move, or remove it, as needed.

Me.TblMatHangTableAdapter.Fill(Me.QLYBHDataSet.tblMatHang)

'TODO: This line of code loads data into the

'QLYBHDataSet.tblChiTietHoaDon' table. You can move, or remove it, as

needed.

Me.TblChiTietHoaDonTableAdapter.Fill(Me.QLYBHDataSet.tblChiTietHoaDon

)

'TODO: This line of code loads data into the 'QLYBHDataSet.tblBanHang'

table. You can move, or remove it, as needed.

Me.TblBanHangTableAdapter.Fill(Me.QLYBHDataSet.tblBanHang)

35

End Sub

Sự kiện Click của nút Kết thúc:

Private Sub ButtonThemKH_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

ButtonThemKH.Click

'Khai báo đối tượng kiểu form thông tin khách hàng

Dim frm As frmThongTinKhachHang

'Hiển thị form ở trên cùng

frm.ShowDialog()

End Sub

Sự kiện TextChange của ô nhập mã khách hàng.

Private Sub MaKHTextBox_TextChanged(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

MaKHTextBox.TextChanged

'Nếu mã khách hàng là số và khác 0

If MaKHTextBox.Text <> "0" And

IsNumeric(MaKHTextBox.Text) Then

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Thiết lập câu lệnh tìm kiếm theo mã khác hàng

sqlTimKiem = "SELECT * FROM tblKhachHang WHERE

MaKH=" & MaKHTextBox.Text

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

36

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

'Nếu tồn tại mã khách hàng

If ds.Tables(0).Rows.Count > 0 Then

TextBoxTenKH.Text =

ds.Tables(0).Rows(0).Item("HoTen").ToString()

Else

'Thông báo

MessageBox.Show("Mã khách hàng không đúng",

"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

MaKHTextBox.Focus()

End If

cn.Close()

End Using

End Using

End If

End Sub

Sự kiện Click của nút Kết thúc:

Private Sub ButtonKetThuc_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonKetThuc.Click

Me.Close()

End Sub

Sự kiện Click của nút Tìm kiếm:

Private Sub ButtonTimKiem_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

37

ButtonTimKiem.Click

If Not String.IsNullOrEmpty(SoHieuHDTextBox.Text) Then

If IsNumeric(SoHieuHDTextBox.Text) Then

'Lọc dữ liệu nguồn với giá trị nhập vào ô số hóa đơn

TblBanHangBindingSource.Filter = "SoHieuHD = '" &

SoHieuHDTextBox.Text & "'"

Me.TableAdapterManager.UpdateAll(Me.QLYBHDataSet)

If TblBanHangBindingSource.Count <= 0 Then

MessageBox.Show("Số hóa đơn không đúng", "Thông

báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

MaKHTextBox.Text = "0"

TextBoxTenKH.Text = Nothing

SoHieuHDTextBox.Focus()

End If

Else

'Thông báo

MessageBox.Show("Số hóa đơn phải là giá trị số.",

"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

SoHieuHDTextBox.Focus()

End If

Else

'Thông báo

MessageBox.Show("Chưa nhập số hóa đơn", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Error)

SoHieuHDTextBox.Focus()

End If

End Sub

Sự kiện Click của nút Lƣu:

38

Private Sub ButtonLuu_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles ButtonLuu.Click

If MaKHTextBox.Text = "" Then

Dim kh As QLYBHDataSet.tblKhachHangRow

kh = Me.QLYBHDataSet.tblKhachHang.NewtblKhachHangRow()

kh.Diachi = DiachiTextBox.Text

kh.DienThoai = DienThoaiTextBox.Text

kh.Hoten = HotenTextBox.Text

kh.Gioitinh = GioitinhComboBox.SelectedItem.ToString()

Me.QLYBHDataSet.tblKhachHang.Rows.Add(kh)

Me.TblKhachHangTableAdapter.Update(Me.QLYBHDataSet.tblKhachHang)

Me.TblKhachHangTableAdapter.Fill(Me.QLYBHDataSet.tblKhachHang)

Else

'TblKhachHangTableAdapter.UpdateKhachHang(HotenTextBox.Text,

GioitinhComboBox.SelectedItem.ToString(), DiachiTextBox.Text,

DienThoaiTextBox.Text, Convert.ToInt32(MaKHTextBox.Text))

Me.TblKhachHangTableAdapter.Update(Me.QLYBHDataSet.tblKhachHang)

Me.TblKhachHangTableAdapter.Fill(Me.QLYBHDataSet.tblKhachHang)

End If

39

HotenTextBox.Enabled = False

DiachiTextBox.Enabled = False

DienThoaiTextBox.Enabled = False

GioitinhComboBox.Enabled = False

MaKHTextBox.Enabled = True

ButtonLuu.Enabled = False

If MaKHTextBox.Text = "" Then

ButtonThem.Enabled = False

Else

ButtonSua.Enabled = False

End If

End Sub

Sự kiện Click của nút Sửa:

Private Sub ButtonSua_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonSua.Click

MaKHTextBox.Enabled = False

NguoiBanHangTextBox.Enabled = False

SoHieuHDTextBox.Enabled = False

ButtonThem.Enabled = True

ButtonSua.Enabled = False

ButtonXoa.Enabled = False

ButtonLuu.Enabled = True

End Sub

Sự kiện Click của nút Xóa:

40

Private Sub ButtonXoa_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles ButtonXoa.Click

If MessageBox.Show("Bạn có chắc chắn muốn xóa hóa đơn này?", "Xác

nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) =

Windows.Forms.DialogResult.Yes Then

'Kiểm tra nếu số hóa đơn để trống

If Not String.IsNullOrEmpty(SoHieuHDTextBox.Text) Then

'Kiểm tra số hóa đơn có phải là giá trị số

If IsNumeric(SoHieuHDTextBox.Text) Then

'Lọc dữ liệu nguồn với giá trị nhập vào ô số hóa đơn

TblBanHangBindingSource.Filter = "SoHieuHD = '" &

SoHieuHDTextBox.Text & "'"

Me.TableAdapterManager.UpdateAll(Me.QLYBHDataSet)

If TblBanHangBindingSource.Count <= 0 Then

MessageBox.Show("Số hóa đơn không đúng", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Error)

MaKHTextBox.Text = "0"

TextBoxTenKH.Text = Nothing

SoHieuHDTextBox.Focus()

Else

'Thực hiện xóa

TblBanHangTableAdapter.Delete(Convert.ToInt32(SoHieuHDTextBox.Text))

'Thông báo

MessageBox.Show("Xóa hóa đơn thành công.", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Information)

SoHieuHDTextBox.Focus()

Me.TblBanHangTableAdapter.Update(Me.QLYBHDataSet.tblBanHang)

'Lọc bảng theo điều kiện luôn đúng để hiển thị danh sách hóa

đơn bán hàng còn lại

41

TblBanHangBindingSource.Filter = "SoHieuHD <> 0"

'Cập nhật thông tin hiển thị

Me.TblMatHangTableAdapter.Fill(Me.QLYBHDataSet.tblMatHang)

'TODO: This line of code loads data into the

'QLYBHDataSet.tblChiTietHoaDon' table. You can move, or remove it, as

needed.

Me.TblChiTietHoaDonTableAdapter.Fill(Me.QLYBHDataSet.tblChiTietHoaDon

)

'TODO: This line of code loads data into the

'QLYBHDataSet.tblBanHang' table. You can move, or remove it, as needed.

Me.TblBanHangTableAdapter.Fill(Me.QLYBHDataSet.tblBanHang)

End If

Else

'Thông báo

MessageBox.Show("Số hóa đơn phải là giá trị số.", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Error)

SoHieuHDTextBox.Focus()

End If

Else

'Thông báo

MessageBox.Show("Chưa nhập số hóa đơn", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Error)

SoHieuHDTextBox.Focus()

End If

End If

End Sub

Sự kiện Click của nút Thêm:

Private Sub ButtonThem_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonThem.Click

42

MaKHTextBox.Text = 0

TextBoxTenKH.Text = Nothing

NguoiBanHangTextBox.Enabled = True

NguoiBanHangTextBox. Text = Nothing

SoHieuHDTextBox.Text = 0

'Xóa dữ liệu nguồn của lưới chi tiết hóa đơn

TblChiTietHoaDonDataGridView.DataSource = Nothing

'Thêm mới một dòng cho lưới

TblChiTietHoaDonDataGridView.Rows.Add()

ButtonThem.Enabled = False

ButtonSua.Enabled = False

ButtonXoa.Enabled = False

ButtonLuu.Enabled = True

End Sub

3. Kết quả thiết kế

Hình 22. Kết quả thiết kế form chi tiết bán hàng

43

4. Kết quả thực thi

Hình 23. Kết quả thực thi form chi tiết bán hàng

1.2.3. Bài tập thực hành

Bài tập số 1. Để quản lý việc phân công giảng dạy trong một học kỳ cho giáo

viên của khoa CNTT, khoa yêu cầu thiết kế một cơ sở dữ liệu quan hệ có tên

QLYGD.MDF trong đó có các bảng và có lƣợc đồ nhƣ sau:

tblGiaoVien(MaGV, HoTen, BoMon, DMGD)

tblMonHoc(Mamon, Tenmon, SoTinChi)

tblPhanCong(MaGV, MaMon, LHP, SSO)

Trong đó:

MaGV: Mã giáo viên;

Hoten: Họ tên giáo viên;

BoMon: Tên bộ môn;

DMGD: Định mức giảng dạy;

Mamon: Mã môn học;

Tenmon: Tên môn học;

SoTinChi: Số tín chỉ;

MaGV: Mã giáo viên;

44

LHP: Tên lớp học phần;

SSO: Sĩ số lớp học phần.

Công việc 1: Sƣ̉ du ̣ng m ột hệ quản trị cơ sở dữ liệu SQL Server thƣ̣c hiê ̣n các

công việc sau:

a) Tạo cơ s ở dữ liệu QLYGD.MDF và cấu trúc các bảng trên v ới kiểu dữ liệu

tùy chọn cho phù hợp.

Yêu cầu:

- Chọn kiểu dữ liệu cho các trƣờng phù hợp giúp dễ dàng xử lý dữ liệu

- Mỗi bảng phải chỉ ra đƣợc khóa chính và các ràng buộc dữ liệu nếu có thể.

b) Tạo mối quan hệ giữa các bảng dữ liệu

Công việc 2: Thiết kế các form để thực hiện cập nhật dữ liệu cho các bảng trên:

Yêu cầu:

1. Thiết kế form dạng bản ghi thực hiện việc cập nhật dữ liệu cho bảng

tblGiaoVien theo mẫu sau:

Hình 24. Form thông tin giáo viên

Yêu cầu:

45

- Nhãn thông tin giáo viên: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 14,

mầu xanh lá, căn giữa form

- Các nhãn Mã giáo viên, Họ và tên, Bộ môn, Định mức GD có font: Microsoft

Sans Serif, chữ thƣờng, cỡ 9, các nhãn này có lề trái giống nhau.

- Các điều khiển để nhập Mã giáo viên, Họ và tên, Bộ môn, Định mức GD là

các textbox đƣợc gắn kết với cơ sở dữ liệu.

- Các điều khiển:

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu

+ Nút tìm: cho phép tìm kiếm theo mã giáo viên.

+ Nút đóng: cho phép đóng form hiện thời.

- Form thông tin giáo viên có kiểu FixedSingle, không có các nút phóng to, thu

nhỏ trên thanh tiêu đề của form, khi hiển thị form xuất hiện chính giữa màn hình.

2. Thiết kế form dạng lƣới thực hiện việc cập nhật dữ liệu cho bảng tblMonHoc

theo mẫu sau:

46

Hình 25. Form danh sách môn học

Yêu cầu:

- Nhãn danh sách môn học: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 14,

mầu xanh thẫm, căn giữa form

- Lƣới hiển thị danh sách môn học:

+ Gồm 3 cột có tiêu đề là Mã môn, Tên môn, Số tín chỉ.

+ Độ rộng của cột Mã môn, Số tín chỉ vừa đủ để hiển thị nội dung tiêu đề cột.

+ Độ rộng của cột Tên môn tự động thay đổi để phù hợp với nội dung dữ liệu

hiển thị.

+ Chế độ chọn dữ liệu trên lƣới là toàn bộ dòng.

+ Không hiển thị phần tiêu đề của dòng.

+ Không cho phép chọn nhiều dòng đồng thời trên lƣới.

+ Cho phép cập nhật dữ liệu trực tiếp trên lƣới.

47

- Các điều khiển:

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu

+ Nút đóng: cho phép đóng form hiện thời.

- Form danh sách môn học có kiểu FixedSingle, không có các nút phóng to, thu

nhỏ trên thanh tiêu đề của form, khi hiển thị form xuất hiện chính giữa màn hình.

3. Thiết kế form dạng một nhiều thực hiện việc cập nhật dữ liệu cho bảng

tblPhanCong theo mẫu sau:

Hình 26. Form phân công giảng dạy

Yêu cầu:

- Nhãn danh sách môn học: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 14,

mầu xanh thẫm, căn giữa form

- Lƣới hiển thị danh sách phân công giảng dạy:

+ Gồm 4 cột có tiêu đề là Mã giáo viên, Môn học, Lớp học phần, Sĩ số.

48

+ Độ rộng của cột Mã giáo viên, Lớp học phần, Sĩ số vừa đủ để hiển thị nội

dung tiêu đề cột.

+ Độ rộng của cột Môn học tự động thay đổi để phù hợp với nội dung dữ liệu

hiển thị.

+ Dữ liệu môn học hiển thị ở mỗi dòng trên lƣới phân công giảng dạy là dạng

ComboBox. Dữ liệu nguồn lấy từ bảng tblMonHoc, thông tin hiển thị là cột Tên môn,

thông tin lƣu trữ là cột mã môn.

+ Chế độ chọn dữ liệu trên lƣới là toàn bộ dòng.

+ Không hiển thị phần tiêu đề của dòng.

+ Không cho phép chọn nhiều dòng đồng thời trên lƣới.

+ Cho phép cập nhật dữ liệu trực tiếp trên lƣới.

+ Dữ liệu phân công giảng dạy liên kết trực tiếp với phần thông tin giáo viên ở

phía trên. Khi di chuyển qua danh sách các giáo viên trong khoa thì lƣới dữ liệu phân

công cũng thay đổi tƣơng ứng.

- Các điều khiển:

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời trong danh sách giáo viên.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu

+ Nút đóng: cho phép đóng form hiện thời.

- Form danh sách môn học có kiểu FixedSingle, không có các nút phóng to, thu

nhỏ trên thanh tiêu đề của form, khi hiển thị form xuất hiện chính giữa màn hình.

Bài tập số 2. Để xây dựng một chƣơng trình quản lý tài sản của các đơn vị

trong một cơ quan. Thủ trƣởng cơ quan yêu cầu đơn vị thiết kế tổ chức một cơ sở dữ

liệu QLTAISAN.MDF có các bảng và lƣợc đồ quan hệ nhƣ sau:

tblDonVi(MaDV, TenDV, ViTri, SoNhanVien)

tblTaiSan(MaTS, TenTS, DVT, HSD)

tblQuanLy(MaDV, MaTS, SoLuong, NgayCap, TinhTrang)

Trong đó:

49

MaDV: Mã đơn vị;

TenDV: Tên đơn vị

ViTri: Vị trí;

SoNhanVien: Số nhân viên;

MaTS: Mã tài sản;

TenTS: Tên tài sản;

DVT: Đơn vị tính;

HSD: Hạn sử dụng;

SoLuong: Số lƣợng;

NgayCap: Ngày cấp;

TinhTrang: Tình trạng.

Công việc 1. Là một ngƣời lập trình, hãy sử dụng một hệ quản trị cơ sở dữ liệu

SQL Server thƣ̣c hiê ̣n các công việc sau:

a) Tạo cơ s ở dữ liệu QLTAISAN.MDF và cấu trúc các bảng trên v ới kiểu dữ

liệu tùy chọn cho phù hợp.

Yêu cầu:

- Chọn kiểu dữ liệu cho các trƣờng phù hợp giúp dễ dàng xử lý dữ liệu

- Mỗi bảng phải chỉ ra đƣợc khóa chính và các ràng buộc dữ liệu nếu có thể.

b) Tạo mối quan hệ giữa các bảng dữ liệu

Công việc 2. Là một ngƣời lập trình, hãy thiết kế các form để thực hiện cập nhật

dữ liệu cho các bảng trên:

1. Thiết kế form dạng bản ghi thực hiện việc cập nhật dữ liệu tài sản theo mẫu

sau.

50

Hình 27. Form thông tin tài sản

Yêu cầu:

- Nhãn thông tin tài sản: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 14, mầu

xanh thẫm, căn giữa form

- Các nhãn Mã tài sản, Tên tài sản, Đơn vị tính, Hạn sử dụng có font: Microsoft

Sans Serif, chữ thƣờng, cỡ 9, các nhãn này có lề trái giống nhau.

- Các điều khiển để nhập Mã tài sản, Tên tài sản, Đơn vị tính, Hạn sử dụng là

các textbox đƣợc gắn kết với cơ sở dữ liệu.

- Các điều khiển:

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu

+ Nút tìm: cho phép tìm kiếm theo mã tài sản.

+ Nút đóng: cho phép đóng form hiện thời.

51

- Form thông tin tài sản có kiểu FixedSingle, không có các nút phóng to, thu

nhỏ trên thanh tiêu đề của form, khi hiển thị form xuất hiện chính giữa màn hình.

2. Thiết kế form dạng lƣới thực hiện việc cập nhật dữ liệu đơn vị sử dụng theo

mẫu sau.

Hình 28. Form danh sách đơn vị sử dụng

Yêu cầu:

- Nhãn danh sách đơn vị sử dụng: Font Microsoft Sans Serif, chữ hoa, in đậm

cỡ 14, mầu xanh thẫm, căn giữa form

- Lƣới hiển thị danh sách đơn vị sử dụng:

+ Gồm 4 cột có tiêu đề là Mã đơn vị, Tên đơn vị, Vị trí, Số nhân viên.

+ Độ rộng của cột Mã đơn vị, Vị trí, Số nhân viên vừa đủ để hiển thị nội dung

tiêu đề cột.

+ Độ rộng của cột Tên đơn vị tự động thay đổi để phù hợp với nội dung dữ liệu

hiển thị.

+ Chế độ chọn dữ liệu trên lƣới là toàn bộ dòng.

52

+ Không hiển thị phần tiêu đề của dòng.

+ Không cho phép chọn nhiều dòng đồng thời trên lƣới.

+ Cho phép cập nhật dữ liệu trực tiếp trên lƣới.

- Các điều khiển:

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu

+ Nút đóng: cho phép đóng form hiện thời.

- Form danh sách đơn vị sử dụng có kiểu FixedSingle, không có các nút phóng

to, thu nhỏ trên thanh tiêu đề của form, khi hiển thị form xuất hiện chính giữa màn

hình.

3. Thiết kế form dạng một nhiều thực hiện việc cập nhật dữ liệu cho bảng

tblQuanLy.

Hình 29. Form quản lý tài sản

53

Yêu cầu:

- Nhãn quản lý tài sản: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 14, mầu

xanh lá, căn giữa form

- Lƣới hiển thị danh sách tài sản tại đơn vị:

+ Gồm 4 cột có tiêu đề là Tài sản, Số lƣợng, Ngày cấp, Tình trạng.

+ Độ rộng của cột Số lƣợng vừa đủ để hiển thị nội dung tiêu đề cột.

+ Độ rộng của cột Tài sản, Ngày cấp, Tình trạng tự động thay đổi để phù hợp

với nội dung dữ liệu hiển thị.

+ Dữ liệu tài sản hiển thị ở mỗi dòng trên lƣới tài sản là dạng ComboBox. Dữ

liệu nguồn lấy từ bảng tblTaiSan, thông tin hiển thị là cột Tên tài sản, thông tin lƣu trữ

là cột mã tài sản.

+ Chế độ chọn dữ liệu trên lƣới là toàn bộ dòng.

+ Không hiển thị phần tiêu đề của dòng.

+ Không cho phép chọn nhiều dòng đồng thời trên lƣới.

+ Cho phép cập nhật dữ liệu trực tiếp trên lƣới.

+ Dữ liệu tài sản của đơn vị liên kết trực tiếp với phần thông tin đơn vị ở phía

trên. Khi di chuyển qua danh sách các đơn vị thì lƣới dữ liệu tài sản quản lý cũng thay

đổi tƣơng ứng.

- Các điều khiển:

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời trong danh sách giáo viên.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu

+ Nút đóng: cho phép đóng form hiện thời.

- Form quản lý tài sản có kiểu FixedSingle, không có các nút phóng to, thu nhỏ

trên thanh tiêu đề của form, khi hiển thị form xuất hiện chính giữa màn hình.

54

Bài tập số 3. Cho cơ sở dƣ̃ liê ̣u Quản lý đi ểm có tên QLDIEM .MDF gồm các

bảng:

tblSinhVien(MaSV, Hoten, Ngaysinh, Noisinh, Gioitinh, Diachi, Makhoa,

LopNC)

tblKhoa(Makhoa, Tenkhoa)

tblLopHP(MaLopHP, TenLopHP, MaSV, MaMon)

tblMonHoc(Mamon, Tenmon, Sohocphan, Giaovien)

tblDiem(MaLopHP, MaSV, Diem, HocKy)

Trong đó:

MaSV: Mã sinh viên;

Hoten: Họ tên sinh viên;

Ngaysinh: Ngày sinh;

Noisinh: Nơi sinh;

Gioitinh: Giới tính;

Diachi: Địa chỉ;

Makhoa: Mã khoa;

LopNC: Tên lớp niên chế;

Tenkhoa: Tên khoa;

MaLopHP: Mã lớp học phần.

TenLopHP: Tên lớp học phần.

Mamon: Mã môn học;

Tenmon: Tên môn học;

Sohocphan: Số học phần;

Giaovien: Họ tên giáo viên giảng dạy;

Diem: Điểm của môn học tƣơng ứng với từng sinh viên;

HocKy: Học kỳ có giá trị là số nguyên bắt đầu từ 1.

Công việc 1. Sƣ̉ du ̣ng m ột hệ quản trị cơ sở dữ liệu SQL Server thƣ̣c hiê ̣n các

công việc sau:

a) Tạo cơ s ở dữ liệu QLDIEM.MDF và cấu trúc các bảng trên v ới kiểu dữ liệu

tùy chọn cho phù hợp.

Yêu cầu:

- Chọn kiểu dữ liệu cho các trƣờng phù hợp giúp dễ dàng xử lý dữ liệu

55

- Mỗi bảng phải chỉ ra đƣợc khóa chính và các ràng buộc dữ liệu nếu có thể.

b) Tạo mối quan hệ giữa các bảng dữ liệu

Công việc 2. Thiết kế các form để thực hiện cập nhật dữ liệu cho các bảng trên:

1. Thiết kế form dạng bản ghi thực hiện việc cập nhật dữ liệu cho bảng

tblSinhVien.

Hình 30. Form thông tin sinh viên

Yêu cầu:

- Nhãn thông tin sinh viên: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 14,

mầu đỏ, căn giữa form

- Các nhãn Mã sinh viên, Họ và tên, Ngày sinh, Nơi sinh, Giới tính, Địa chỉ,

Khoa, Lớp niên chế có font: Microsoft Sans Serif, chữ thƣờng, cỡ 9, mầu xanh lá, các

nhãn này có lề trái giống nhau.

- Các điều khiển để nhập Mã sinh viên, Họ và tên, Nơi sinh, Địa chỉ, Lớp niên

chế là các textbox đƣợc gắn kết với cơ sở dữ liệu.

- Điều khiển để nhập Ngày sinh là DateTimePicker đƣợc gắn kết với cơ sở dữ

liệu.

56

- Các điều khiển để nhập Giới tính, Khoa là các ComboBox đƣợc gắn kết với

cơ sở dữ liệu. Trong đó điều khiển Khoa chứa dữ liệu lấy từ bảng tblKhoa. Giá trị lựa

chọn tƣơng ứng với mã khoa của từng sinh viên trong bảng tblSinhVien.

- Các điều khiển:

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu

+ Nút tìm: cho phép tìm kiếm theo mã sinh viên.

+ Nút đóng: cho phép đóng form hiện thời.

- Form thông tin sinh viên có kiểu FixedSingle, không có các nút phóng to, thu

nhỏ trên thanh tiêu đề của form, khi hiển thị form xuất hiện chính giữa màn hình.

2. Thiết kế form dạng lƣới thực hiện việc cập nhật dữ liệu cho bảng tblKhoa.

57

Hình 31. Form danh sách khoa

58

Yêu cầu:

- Nhãn danh sách khoa: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 14, mầu

xanh lá, căn giữa form

- Lƣới hiển thị danh sách khoa:

+ Gồm 2 cột có tiêu đề là Mã khoa, Tên khoa.

+ Độ rộng của cột Mã khoa vừa đủ để hiển thị nội dung tiêu đề cột.

+ Độ rộng của cột Tên khoa đƣợc tính toán bằng độ rộng của lƣới trừ đi độ rộng

của cột mã khoa.

+ Chế độ chọn dữ liệu trên lƣới là toàn bộ dòng.

+ Không hiển thị phần tiêu đề của dòng.

+ Không cho phép chọn nhiều dòng đồng thời trên lƣới.

+ Cho phép cập nhật dữ liệu trực tiếp trên lƣới.

- Các điều khiển:

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu

+ Nút đóng: cho phép đóng form hiện thời.

- Form danh sách khoa có kiểu FixedSingle, không có các nút phóng to, thu nhỏ

trên thanh tiêu đề của form, khi hiển thị form xuất hiện chính giữa màn hình.

3. Thiết kế form dạng lƣới thực hiện việc cập nhật dữ liệu cho bảng tblMonHoc.

59

Hình 32. Form danh sách môn học

Yêu cầu:

- Nhãn danh sách môn học: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 14,

mầu xanh lá, căn giữa form

- Lƣới hiển thị danh sách môn học:

+ Gồm 4 cột có tiêu đề là Mã môn, Tên môn, Số học phần, Giáo viên.

+ Độ rộng của cột Mã môn, Số học phần vừa đủ để hiển thị nội dung tiêu đề

cột.

+ Độ rộng của cột Tên môn, Giáo viên đƣợc tự động điều chỉnh để hiển thị đủ

dữ liệu ở các cột này.

+ Chế độ chọn dữ liệu trên lƣới là toàn bộ dòng.

+ Không hiển thị phần tiêu đề của dòng.

+ Không cho phép chọn nhiều dòng đồng thời trên lƣới.

+ Cho phép cập nhật dữ liệu trực tiếp trên lƣới.

- Các điều khiển:

60

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu

+ Nút đóng: cho phép đóng form hiện thời.

- Form danh sách môn học có kiểu FixedSingle, không có các nút phóng to, thu

nhỏ trên thanh tiêu đề của form, khi hiển thị form xuất hiện chính giữa màn hình.

4. Thiết kế form dạng một nhiều thực hiện việc cập nhật dữ liệu cho bảng

tblDiem.

Hình 33. Form quản lý điểm sinh viên

Yêu cầu:

- Nhãn quản lý điểm: Font Microsoft Sans Serif, chữ hoa, in đậm cỡ 14, mầu

cam, căn giữa form.

61

- Nhãn mã sinh viên, họ tên, ngày sinh, khoa, lớp niên chế font Microsoft Sans

Serif, chữ thƣờng, cỡ 9, mầu đen, có lề trái giống nhau.

- Lƣới hiển thị danh sách điểm của sinh viên:

+ Gồm 3 cột có tiêu đề là Lớp học phần, Điểm, Học ky.

+ Độ rộng của cột Điểm, Học kỳ vừa đủ để hiển thị nội dung tiêu đề cột.

+ Độ rộng của cột Lớp học phần tự động thay đổi để phù hợp với nội dung dữ

liệu hiển thị.

+ Dữ liệu lớp học phần hiển thị trên lƣới điểm của sinh viên là dạng

ComboBox. Dữ liệu nguồn lấy từ bảng tblLopHP, thông tin hiển thị là cột Tên lớp học

phần, thông tin lƣu trữ là cột mã lớp học phần.

+ Chế độ chọn dữ liệu trên lƣới là toàn bộ dòng.

+ Không hiển thị phần tiêu đề của dòng.

+ Không cho phép chọn nhiều dòng đồng thời trên lƣới.

+ Cho phép cập nhật dữ liệu trực tiếp trên lƣới.

+ Dữ liệu điểm của sinh viên liên kết trực tiếp với phần thông tin sinh viên ở

phía trên. Khi di chuyển qua danh sách các sinh viên thì lƣới dữ liệu điểm của sinh

viên cũng thay đổi tƣơng ứng.

- Các điều khiển:

+ Các nút điều hƣớng: cho phép chuyển tới bản ghi đầu tiên, bản ghi cuối cùng,

bản ghi liền sau hoặc liền trƣớc bản ghi hiện thời trong danh sách giáo viên.

+ Nút thêm: cho phép thêm một bản ghi mới

+ Nút xóa: cho phép xóa bản ghi hiện thời nếu ngƣời dùng đồng ý.

+ Nút sửa: cho phép sửa thông tin của bản ghi hiện thời

+ Nút lƣu: cho phép cập nhật các thông tin trên form vào cơ sở dữ liệu

+ Nút đóng: cho phép đóng form hiện thời.

- Form quản lý điểm có kiểu FixedSingle, không có các nút phóng to, thu nhỏ

trên thanh tiêu đề của form, khi hiển thị form xuất hiện chính giữa màn hình.

1.3. Bài tập về nhà

Bài tập số 4. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc cập

nhật thông tin xuất nhập kho tại công ty BCD.

Yêu cầu:

62

- Tạo các form dạng bản ghi để cập nhật thông tin nhân viên, mặt hàng, nhà cung

cấp.

- Tạo form dạng kết hợp bản ghi và lƣới để quản lý thông tin xuất nhập kho tại

công ty.

Bài tập số 5. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc cập

nhật thông tin tại trƣờng XYZ

Bài tập số 6. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc cập

nhật thông tin ký túc xá.

Yêu cầu:

- Tạo các form dạng bản ghi để cập nhật thông tin phòng ở, sinh viên.

- Tạo form dạng kết hợp bản ghi và lƣới để quản lý sinh viên tại các phòng trong

ký túc xá.

Bài tập số 7. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc cập

nhật thông tin các đề tài khoa học tại trƣờng đại học SPK.

Yêu cầu:

- Tạo các form dạng bản ghi để cập nhật thông tin đề tài, ngƣời thực hiện, cấp đề

tài, loại đề tài.

- Tạo form dạng kết hợp bản ghi và lƣới để quản lý thông tin đề tài khoa học của

từng cá nhân.

Bài tập số 8. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc cập

nhật thông tin giải bóng đá vô địch quốc gia.

Yêu cầu:

- Tạo các form dạng bản ghi để cập nhật thông tin đội bóng, lịch thi đấu.

- Tạo form dạng kết hợp bản ghi và lƣới để quản lý thông tin kết quả của từng

trận đấu.

Bài tập số 9. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc cập

nhật thông tin nhân sự tại công ty ABC.

Yêu cầu:

- Tạo các form dạng bản ghi để cập nhật thông tin ngƣời lao động, phòng ban.

- Tạo form dạng kết hợp bản ghi và lƣới để quản lý thông tin về lƣơng, khen

thƣởng, kỷ luật của từng ngƣời lao động trong công ty.

63

Bài tập số 10. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc cập

nhật thông tin thi đua khen thƣởng tại công ty ABC.

64

BÀI 2. SỬ DỤNG VB.NET LẬP TRÌNH TÌM KIẾM THÔNG TIN

VÀ HIỂN THỊ KẾT QUẢ TRÊN FORM

Mục tiêu

Sau bài học, sinh viên có khả năng:

- Kiến thức: Biết thiết kế Form và sử dụng VB.NET lập trình trên form để thực hiện

việc tìm kiếm và hiển thị thông tin trên form.

- Kỹ năng: Vận dụng đƣợc kiến thức để thiết kế và lập trình trên form thực hiện việc

tìm kiếm và hiển thị thông tin trên form vào giải quyết các bài toán thực tế.

- Thái độ:

+ Nghiêm túc, sáng tạo

+ Tích cực tập luyện

Chuẩn bị dụng cụ, vật tư, thiết bị

Chuẩn bị máy tính có hệ điều hành Windows XP hoặc cao hơn, phần mềm

Microsoft Office, bộ gõ Tiếng Việt,phần mềm SQL Server 2000 hoặc cao hơn,phần

mềm Visual Studio 2008 hoặc cao hơn.

2.1 Tóm tắt kiến thức cần nhớ

2.1.1. Câu lệnh SQL để tìm kiếm thông tin trong cơ sở dữ liệu

Tìm kiếm thông tin trong cơ sở dữ liệu là đƣa ra các thông tin thỏa mãn điều

kiện tìm kiếm từ cơ sở dữ liệu theo yêu cầu.

Khi thao tác với cơ sở dữ liệu để tìm kiếm thông tin, thƣờng sử dụng câu lệnh

SELECT … FROM … WHERE...

Cú pháp:

SELECT distinct []

FROM

WHERE

GROUPE BY

HAVING

65

ORDER BY < tên_trƣờng  số_thứ_tự_trƣờng  biểu_thức>,  [ASC/

DESC ]

1) Mệnh đề Select: Đƣợc sử dụng để chỉ định các trƣờng, các biểu thức cần

đƣa ra

2) Mệnh đề FROM: Đƣợc sử dụng nhằm chỉ định các bảng, view chứa

thông tin cần tìm kiếm.

3) Mệnh đề WHERE: Đƣợc sử dụng nhằm xác định các điều kiện của các

bản ghi phải thỏa mãn yêu cầu tìm kiếm.

4) Mệnh đề GROUP BY: Đƣợc sử dụng để gộp một nhóm các bản ghi

thành một bản ghi theo yêu cầu gộp nhóm.

5) Mệnh đề HAVING: Đƣợc sử dụng để đƣa ra điều kiện của nhóm và chỉ

sử dụng khi có mệnh đề GROUP BY.

6) Mệnh đề ORDER BY: Đƣợc sử dụng để sắp xếp kết quả tìm kiếm.

2.1.2. Sử dụng Form để hiển thị thông tin tìm kiếm.

Form không những đƣợc dùng làm giao diện để thực hiện các thao tác cập nhật

dữ liệu mà còn đƣợc sử dụng làm giao diện để tìm kiếm và hiển thị dữ liệu kết quả trên

Form. Trong trƣờng hợp này form thƣờng có dạng.

Chẳng hạn nhƣ:

66

Hình 34. Form tìm kiếm thông tin đơn giản

Ngoài ra trong một số trƣờng hợp để tìm kiếm dữ liệu theo nhiều tiêu chí form

thƣờng đƣợc thiết kế có dạng:

Hình 35. Form tìm kiếm thông tin theo nhiều điều kiện

67

Ngoải ra, tùy theo yêu cầu thực tế của ứng dụng có thể thiết kế các form tìm

kiếm với các giao diện khác nhau.

Để xây dựng một form dùng để tìm kiếm thông tin trong một cơ sở dữ liệu và

hiển thị kết quả tìm kiếm trên form bằng VB.NET, thực hiện các bƣớc sau:

1. Xây dựng một form để tìm kiếm thông tin mới.

2. Đƣa các điều khiển vào form chứa các thông tin cần tìm kiếm và thông tin

điều kiện .

3. Đặt thuộc tính cho form và các điều khiển trên form.

4. Kết nối form với cơ sở dữ liệu

5. Lập trình cho các sự kiện thực thi các nhiệm vụ.

6. Chạy thử.

7. Hiệu chỉnh form để đạt yêu cầu.

8. Ghi kết quả.

2.2. Hướng dẫn thực hành

2.2.1. Bài tập mẫu

Trở lại bài tập mẫu trong bài 1 và thực hiện tiếp các công việc sau:

Công việc 1: Thiết kế một form để tìm kiếm thông tin và hiển thị kết quả trên

form theo các mẫu sau:

1. Tìm kiếm theo điều kiện đơn giản

a) Tìm kiếm khách hàng

68

Hình 36. Form tìm kiếm thông tin khách hàng

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm thông tin:

Font: Microsoft Sans Serif, Bold, 18

Căn giữa màn hình form tìm kiếm theo chiều ngang

Mầu chữ: Đỏ

- Các nhãn Tìm theo, Nội dung tìm kiếm

Font: Microsoft Sans Serif, Bold, 9

Mầu chữ: Đen

- Các radio button Mã khách hàng, tên khách hàng, tất cả

Font: Microsoft Sans Serif, Bold, 9

69

Căn giữa theo chiều dọc

Mầu chữ: Đen

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào giá trị lựa chọn ở

các radio button trong phần Tìm theo và điều kiện tìm kiếm trong ô nội dung tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các khách hàng gồm các thông tin: Mã khách

hàng, Họ tên khách hàng, Giới tính, Địa chỉ, Điện thoại và hiển thị ở trên

DataGridView phía dƣới.

Tìm theo mã khách hàng: Yêu cầu tìm chính xác theo mã khách hàng đƣợc

nhập từ bàn phím vào ô textbox nội dung tìm kiếm.

Tìm theo tên khách hàng: Yêu cầu tìm gần đúng theo tên khách hàng đƣợc nhập

từ bàn phím vào ô textbox nội dung tìm kiếm (ví dụ: nhập “an” ở ô nội dung tìm kiếm

sẽ trả về các kết quả Nguyễn Văn An, Trần Văn Anh, Mai Thế Cang, …)

Tìm theo tất cả: Sẽ hiển thị tất cả các khách hàng. Danh sách kết quả sắp xếp

theo thứ tự từ điển.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

b) Tìm kiếm mặt hàng

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

70

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm thông tin:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Đỏ

- Các nhãn Tìm theo, Nội dung tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

- Các radio button Mã khách hàng, tên khách hàng, tất cả

 Font: Microsoft Sans Serif, Bold, 9

 Căn giữa theo chiều dọc

 Mầu chữ: Đen

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào giá trị lựa chọn ở

các radio button trong phần Tìm theo và điều kiện tìm kiếm trong ô nội dung tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các mặt hàng gồm các thông tin: Mã mặt

hàng, Tên mặt hàng, Đơn vị tính và hiển thị ở trên DataGridView phía dƣới.

Tìm theo mã mặt hàng: Yêu cầu tìm chính xác theo mã mặt hàng đƣợc nhập từ

bàn phím vào ô textbox nội dung tìm kiếm.

Tìm theo tên mặt hàng: Yêu cầu tìm gần đúng theo tên mặt hàng đƣợc nhập từ

bàn phím vào ô textbox nội dung tìm kiếm (ví dụ: nhập “ti vi” ở ô nội dung tìm kiếm

sẽ trả về các kết quả Ti vi Sony, LCD Ti vi, ti vi LG, …)

Tìm theo tất cả: Sẽ hiển thị tất cả các mặt hàng. Danh sách kết quả sắp xếp theo

thứ tự từ điển.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

71

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 2: Thiết kế form để thực hiện việc tìm kiếm thông tin phức tạp

1. Thiết kế form để tìm kiếm các mặt hàng mà cửa hàng đã bán cho khách hàng

Hình 37. Form tìm kiếm thông tin bán hàng

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm thông tin:

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh lam

72

- Các nhãn Mã khách hàng, Tên khách hàng

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

- Ô nhập mã khách hàng:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

Khi nhập giá trị mã và ấn Enter sẽ tự động tìm kiếm và hiển thị họ tên khách

hàng tƣơng ứng ở ô Tên khách hàng.

- Ô hiển thị tên khách hàng bị mờ và không cho phép ngƣời sử dụng nhập thông

tin vào ô này.

- Các radio button Mã khách hàng, tên khách hàng, tất cả

 Font: Microsoft Sans Serif, Bold, 9.

 Căn giữa theo chiều dọc.

 Mầu chữ: Đen.

- Lƣới hiển thị kết quả tìm kiếm:

Gồm các cột: Mã khách hàng, Tên khách hàng, Giới tính, Địa chỉ, Điện thoại.

Độ rộng các cột tự động căn vừa nội dung chứa trong mỗi cột.

Chế độ lựa chọn mỗi bản ghi là: Tất cả dòng.

Không cho phép thêm, sửa, xóa trực tiếp trên danh sách kết quả này.

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh sẽ căn cứ vào lựa chọn ở các giá trị mã khách hàng và

phép toán, số lƣợng mặt hàng sẽ tìm kiếm trong cơ sở dữ liệu các hóa đơn thỏa mãn

điều kiện và hiển thị ở danh sách lƣới.

- Nút lệnh Kết thúc:

73

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 3. Thiết kế form để thực hiện việc tìm kiếm thông tin các mặt hàng

đã mua có số lƣợng lớn hơn, nhỏ hơn hoặc bằng một giá trị nhập vào theo mẫu sau

Hình 38. Form tìm kiếm thông tin bán hàng

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm thông tin:

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh lam

- Các nhãn Mã khách hàng, Tên khách hàng, Số lƣợng

74

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

- Lựa chọn phép toán

 Là một combobox có chứa các giá trị: >, >=, <, <=, =, <>

 Chế độ hiển thị là DropDownList

 Giá trị lựa chọn mặc định là >

- Giá trị số lƣợng cho phép tăng giảm giá trị với bƣớc nhảy là 1, giá trị bắt đầu

là 10.

- Ô nhập mã khách hàng:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

Khi nhập giá trị mã sẽ tự động tìm kiếm và hiển thị họ tên khách hàng tƣơng

ứng ở ô Tên khách hàng.

- Ô hiển thị tên khách hàng bị mờ và không cho phép ngƣời sử dụng nhập thông

tin vào ô này.

- Lƣới hiển thị kết quả tìm kiếm:

Gồm các cột: STT, Tên mặt hàng, ĐVT, Ngày mua hàng, Số lƣợng, Đơn giá,

Thành Tiền.

Độ rộng các cột tự động căn vừa nội dung chứa trong mỗi cột.

Chế độ lựa chọn mỗi bản ghi là: Tất cả dòng.

Không cho phép thêm, sửa, xóa trực tiếp trên danh sách kết quả này.

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

75

Khi nhấn vào nút lệnh sẽ căn cứ vào lựa chọn ở các giá trị mã khách hàng và

phép toán, số lƣợng mặt hàng sẽ tìm kiếm trong cơ sở dữ liệu các hóa đơn thỏa mãn

điều kiện và hiển thị ở danh sách lƣới.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 4. Thiết kế một form để tìm kiếm thông tin về các mặt hàng đã bán

của một nhân viên bán hàng và hiển thị kết quả trên form theo mẫu sau.

Hình 39. Form tìm kiếm thông tin

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

76

- Nhãn Tìm kiếm thông tin:

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Cam

- Nhãn Họ tên ngƣời bán hàng

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

- Ô nhập họ tên ngƣời bán hàng:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

- Lƣới hiển thị kết quả tìm kiếm:

Gồm các cột: Số HĐ, Tên mặt hàng, ĐVT, Số lƣợng, Đơn giá, Thành Tiền.

Độ rộng các cột tự động căn vừa nội dung chứa trong mỗi cột.

Chế độ lựa chọn mỗi bản ghi là: Tất cả dòng.

Không cho phép thêm, sửa, xóa trực tiếp trên danh sách kết quả này.

- Nút lệnh Tìm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh sẽ căn cứ vào giá trị ở ô họ tên ngƣời bán hàng tìm kiếm

trong bảng chi tiết hóa đơn lựa chọn ở các bản ghi có số hiệu hóa đơn nằm trong bảng

bán hàng và có tên ngƣời bán hàng gần giống với nội dung ở ô họ tên ngƣời bán hàng.

Kết quả tìm đƣợc hiển thị ở danh sách lƣới.

- Nút lệnh Đóng:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

77

 Phím nóng là: N

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 5. Thiết kế một form để tìm kiếm thông tin về các lần bán một mặt

hàng của một nhân viên bán hàng và hiển thị kết quả trên form theo mẫu sau.

Hình 40. Form tìm kiếm thông tin khách hàng mua mặt hàng

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm thông tin:

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Cam

- Nhãn Họ tên ngƣời bán hàng, Mặt hàng

 Font: Microsoft Sans Serif, Bold, 9

78

 Mầu chữ: Đen

- Ô nhập họ tên ngƣời bán hàng:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

- Danh sách lựa chọn mặt hàng:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Dữ liệu nguồn lấy từ bảng tblMatHang, dữ liệu hiển thị là trƣờng

tên mặt hàng, dữ liệu lƣu trữ là mã mặt hàng.

- Lƣới hiển thị kết quả tìm kiếm:

Gồm các cột: Số HĐ, Tên mặt hàng, ĐVT, Số lƣợng, Đơn giá, Thành Tiền.

Độ rộng các cột tự động căn vừa nội dung chứa trong mỗi cột.

Chế độ lựa chọn mỗi bản ghi là: Tất cả dòng.

Không cho phép thêm, sửa, xóa trực tiếp trên danh sách kết quả này.

- Nút lệnh Tìm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh sẽ căn cứ vào giá trị ở ô họ tên ngƣời bán hàng và lựa

chọn mặt hàng trong danh sách hệ thống sẽ tìm kiếm trong bảng chi tiết hóa đơn lựa

chọn ở các bản ghi có số hiệu hóa đơn nằm trong bảng bán hàng và có tên ngƣời bán

hàng gần giống với nội dung ở ô họ tên ngƣời bán hàng. Kết quả tìm đƣợc hiển thị ở

danh sách lƣới.

- Nút lệnh Đóng:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: N

79

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

2.1.2 Hướng dẫn thực hiện

Công việc 1. Thiết kế một form để tìm kiếm thông tin và hiển thị kết quả trên

form theo các mẫu sau:

1. Tạo form tìm kiếm khách hàng, mặt hàng theo mẫu

a) Tạo form tìm kiếm khách hàng

Hình 41. Form tìm kiếm thông tin khách hàng

a) Tạo form tìm kiếm khách hàng

1. Phân tích yêu cầu:

Theo yêu cầu trên thì phải có một form chứa:

- Các đối tƣợng có nội dung “TÌM KIẾM THÔNG TIN”, “Tìm theo”, “Nội

dung tìm kiếm” là các Label.

80

- Các đối tƣợng lựa chọn Mã khách hàng, Tên khách hàng, Tất cả là các điều

khiển radio button.

- Ô nhập nội dung tìm kiếm là một textbox

- Các nút Tìm kiếm, Kết thúc là các đối tƣợng Button

- Lƣới hiển thị kết quả tìm kiếm là một DataGridView.

2. Hướng dẫn thao tác:

Để thực hiện yêu cầu trên phải:

Tạo form mới với tên frmTimKiemKhachHang bằng cách thực hiện các thao

tác: Trên thanh menu, chọn Project/Add New Item.

Xuất hiện cửa sổ Add New Item. Chọn loại Windows Form, sau đó nhập tên

frmTimKiemKhachHang vào ô Name rồi nhấn nút Add.

Hình 42. Cửa sổ Add New Item

Để tạo điều khiển label Tìm kiếm thông tin theo yêu cầu thực hiện:

Kéo điều khiển Label từ của sồ Toolbox vào form. Nháy phải chuột vào Label

chọn Properties và thiết lập các thuộc tính cho Label này:

 Text: TÌM KIẾM THÔNG TIN

 Font name: Microsoft Sans Serif

 Font size: 18

 Font bold: True

 Fore color: Red

 Trên menu chọn Format/Center in form/Horizontally để căn giữa.

81

Kéo điều khiển Groupbox từ cửa sổ Toolbox vào form và điều chỉnh kích

thƣớc, vị trí phù hợp. Thiết lập các thuộc tính cho điều khiển này tại cửa sổ Properties

nhƣ sau:

 Name: GroupBox1

 Text: Nội dung tìm kiếm

Kéo các điều khiển label, radio button, textbox, button vào trong Groupbox vừa

tạo và thiết lập các thông số cho các điều khiển lần lƣợt nhƣ sau:

Label Tìm theo, Nội dung tìm kiếm thiết lập font chữ, mầu sắc, cỡ chữ tƣơng tự

nhƣ đối với label Tìm kiếm thông tin bên trên

Kéo điều khiển radio button từ cửa sổ Toolbox vào form và điều chỉnh vị trí

phù hợp. Thiết lập các thuộc tính cho điều khiển này tại cửa sổ Properties nhƣ sau:

 Name: RadioButtonMa

 Text: Mã khách hàng

 Font name: Microsoft Sans Serif

 Font size: 9

 Các thuộc tính khác giữ nguyên mặc định

Làm tƣơng tự với 2 điều khiển radio button còn lại

Kéo điều khiển textbox từ cửa sổ Toolbox vào form và điều chỉnh kích thƣớc,

vị trí phù hợp. Thiết lập các thuộc tính cho điều khiển này tại cửa sổ Properties nhƣ

sau:

 Name: TextBoxNoiDung

 Font name: Microsoft Sans Serif

 Font size: 9

 Các thuộc tính khác giữ nguyên mặc định

Kéo điều khiển button từ cửa sổ Toolbox vào form và điều chỉnh kích thƣớc, vị

trí phù hợp. Thiết lập thuộc tính cho điều khiển này tại cửa sổ Properties nhƣ sau:

 Name: ButtonTimKiem

 Font name: Microsoft Sans Serif

 Font size: 9

 Text: &Tìm kiếm

 Các thuộc tính khác giữ nguyên mặc định

82

Làm tƣơng tự với nút lệnh còn lại.

Kéo điều khiển Groupbox từ cửa sổ Toolbox vào form và điều chỉnh kích

thƣớc, vị trí phù hợp. Thiết lập các thuộc tính cho điều khiển này tại cửa sổ Properties

nhƣ sau:

 Name: GroupBox2

 Text: Kết quả tìm kiếm

Kéo điều khiển DataGridView từ cửa sổ Toolbox vào form và thiết lập các

thuộc tính cho điều khiển này tại cửa sổ Properties nhƣ sau:

 Name: DataGridView1

 Dock: Fill

 AllowUserToAddRows: False

 AllowUserToDeleteRows: False

 SelectionMode: FullRowSelect

 Các thuộc tính khác giữ nguyên mặc định

Tiến hành viết mã lệnh cho các điều khiển nhƣ sau:

Mã lệnh của điều khiển radiobutton Mã khách hàng

Private Sub RadioButtonMa_CheckedChanged(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

RadioButtonMa.CheckedChanged

TextBoxNoiDung.Text = Nothing

TextBoxNoiDung.Enabled = RadioButtonMa.Checked

End Sub

Mã lệnh của điều khiển radiobutton Họ tên khách hàng

Private Sub RadioButtonHoTen_CheckedChanged(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

RadioButtonHoTen.CheckedChanged

TextBoxNoiDung.Text = Nothing

83

TextBoxNoiDung.Enabled = RadioButtonHoTen.Checked

End Sub

Mã lệnh của điều khiển radiobutton Tất cả

Private Sub RadioButtonTatCa_CheckedChanged(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

RadioButtonTatCa.CheckedChanged

TextBoxNoiDung.Text = Nothing

TextBoxNoiDung.Enabled = Not RadioButtonTatCa.Checked

End Sub

Mã lệnh của điều khiển button Tìm kiếm

Private Sub ButtonTimKiem_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonTimKiem.Click

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Tạo câu lệnh truy vấn tương ứng với lựa chọn của người sử dụng

If RadioButtonMa.Checked Then

'Tìm kiếm theo mã khác hàng

sqlTimKiem = "SELECT * FROM tblKhachHang WHERE

[MaKH]=" & TextBoxNoiDung.Text

End If

If RadioButtonHoTen.Checked Then

'Tìm kiếm tương đối theo tên khách hàng

84

sqlTimKiem = "SELECT * FROM tblKhachHang WHERE HoTen

LIKE '%" & TextBoxNoiDung.Text & "%' ORDER BY HoTen, MaKH"

End If

If RadioButtonTatCa.Checked Then

'Hiển thị tất cả khách hàng

sqlTimKiem = "SELECT * FROM tblKhachHang ORDER BY

HoTen, MaKH"

End If

'Kết nối CSDL

'Thực hiện tìm kiếm và đưa kết quả ra lưới

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

Me.DataGridView1.DataSource = ds.Tables(0).DefaultView

Me.DataGridView1.Columns(0).HeaderText = "Mã khách

hàng"

Me.DataGridView1.Columns(1).HeaderText = "Họ tên khách

85

hàng"

Me.DataGridView1.Columns(2).HeaderText = "Giới tính"

Me.DataGridView1.Columns(3).HeaderText = "Địa chỉ"

Me.DataGridView1.Columns(4).HeaderText = "Điện thoại"

GroupBox2.Text = "Kết quả tìm kiếm (" +

Me.DataGridView1.RowCount.ToString() + " kết quả)"

cn.Close()

End Using

End Using

End Sub

Mã lệnh của điều khiển button Kết thúc

Private Sub ButtonKetThuc_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonKetThuc.Click

Me.Close()

End Sub

86

3. Kết quả thiết kế:

Hình 43. Kết quả thiết kế form tìm kiếm khách hàng

4. Kết quả thực thi:

Hình 44. Kết quả thực thi form tìm kiếm khách hàng 87

Hình 45. Kết quả tìm kiếm khách hàng theo tên

Hình 46. Kết quả tìm kiếm tất cả các khách hàng

88

b) Tạo form tìm kiếm mặt hàng

1. Phân tích yêu cầu:

Tƣơng tự nhƣ form tìm kiếm khách hàng. Trên form frmTimKiemMatHang

phải có các đối tƣợng:

- Các đối tƣợng có nội dung “TÌM KIẾM THÔNG TIN”, “Tìm theo”, “Nội

dung tìm kiếm” là các Label.

- Các đối tƣợng lựa chọn Mã mặt hàng, Tên mặt hàng, Tất cả là các điều khiển

radio button.

- Ô nhập nội dung tìm kiếm là một textbox

- Các nút Tìm kiếm, Kết thúc là các đối tƣợng Button

- Lƣới hiển thị kết quả tìm kiếm là một DataGridView.

2. Hướng dẫn thao tác:

Thực hiện các thao tác tƣơng tự để tạo form frmTimKiemMatHang và thiết lập

thuộc tính cho các đối tƣợng trên form frmTimKiemMatHang.

Viết đoạn mã lệnh cho các điều khiển trên form frmTimKiemMatHang nhƣ sau:

Lƣu ý: Để thao tác với cơ sở dữ liệu SQL Server phải thêm vào

thƣ viện System.Data.SqlClient bằng đoạn mã

Imports System.Data.SqlClient

Mã lệnh của điều khiển radiobutton Mã khách hàng

Private Sub RadioButtonMa_CheckedChanged(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

RadioButtonMa.CheckedChanged

TextBoxNoiDung.Text = Nothing

TextBoxNoiDung.Enabled = RadioButtonMa.Checked

End Sub

Mã lệnh của điều khiển radiobutton Họ tên khách hàng

Private Sub RadioButtonTenHang_CheckedChanged(ByVal

89

sender As System.Object, ByVal e As System.EventArgs) Handles

RadioButtonHoTen.CheckedChanged

TextBoxNoiDung.Text = Nothing

TextBoxNoiDung.Enabled = RadioButtonTenHang.Checked

End Sub

Mã lệnh của điều khiển radiobutton Tất cả

Private Sub RadioButtonTatCa_CheckedChanged(ByVal sender

As System.Object, ByVal e As System.EventArgs) Handles

RadioButtonTatCa.CheckedChanged

TextBoxNoiDung.Text = Nothing

TextBoxNoiDung.Enabled = Not RadioButtonTatCa.Checked

End Sub

Mã lệnh của điều khiển button Tìm kiếm

Private Sub ButtonTimKiem_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

ButtonTimKiem.Click

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Tạo câu lệnh truy vấn tương ứng với lựa chọn của người sử

dụng

If RadioButtonMa.Checked Then

'Tìm kiếm theo mã mặt hàng

90

sqlTimKiem = "SELECT * FROM tblMatHang WHERE

MaMH=" & TextBoxNoiDung.Text

End If

If RadioButtonTenHang.Checked Then

'Tìm kiếm tương đối theo tên mặt hàng

sqlTimKiem = "SELECT * FROM tblMatHang WHERE

TenMatHang LIKE '%" & TextBoxNoiDung.Text & "%' ORDER BY

TenMatHang, MaMH"

End If

If RadioButtonTatCa.Checked Then

'Hiển thị tất cả mặt hàng

sqlTimKiem = "SELECT * FROM tblMatHang ORDER BY

TenMatHang, MaMH"

End If

'Kết nối CSDL

'Thực hiện tìm kiếm và đưa kết quả ra lưới

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

91

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

Me.DataGridView1.DataSource =

ds.Tables(0).DefaultView

Me.DataGridView1.Columns(0).HeaderText = "Mã mặt

hàng"

Me.DataGridView1.Columns(1).HeaderText = "Tên mặt

hàng"

Me.DataGridView1.Columns(2).HeaderText = "Đơn vị

tính"

GroupBox2.Text = "Kết quả tìm kiếm (" +

Me.DataGridView1.RowCount.ToString() + " kết quả)"

cn.Close()

End Using

End Using

End Sub

Mã lệnh của điều khiển button Kết thúc

Private Sub ButtonKetThuc_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonKetThuc.Click

Me.Close()

End Sub

92

3. Kết quả thiết kế

Hình 47. Kết quả thiết kế form tìm kiếm mặt hàng

4. Kết quả thực thi

Hình 48. Kết quả tìm kiếm mặt hàng theo mã

93

Hình 49. Kết quả tìm kiếm mặt hàng theo tên mặt hàng

Hình 50. Kết quả tìm kiếm tất cả mặt hàng

Công việc 2. Tạo form tìm kiếm thông tin bán hàng theo mẫu

94

Hình 51. Form tìm kiếm thông tin bán hàng

1. Phân tích yêu cầu

Theo yêu cầu trên thì phải có một form chứa:

- Các đối tƣợng có nội dung “TÌM KIẾM THÔNG TIN BÁN HÀNG”, “Mã

khách hàng”, “Tên khách hàng” là các Label.

- Các đối tƣợng thông tin tìm kiếm, kết quả tìm kiếm là các groupbox.

- Ô nhập mã khách hàng, ô hiển thị tên khách hàng là các textbox. Ô hiển thị

tên khách hàng bị khóa không cho ngƣời dùng nhập vào.

- Các nút Tìm kiếm, Kết thúc là các đối tƣợng Button

- Lƣới hiển thị kết quả tìm kiếm là một DataGridView.

2. Hướng dẫn thao tác

Thực hiện các thao tác tƣơng tự ở phần trên để tạo mới form

frmTimKiemThongTinBanHang. Tạo và thiết lập thuộc tính các điều khiển trên form

frmTimKiemThongTinBanHang nhƣ sau:

+ Groupbox thông tin tìm kiếm:

Kéo điều khiển GroupBox từ cửa sổ Toolbox vào form. Nháy phải chuột vào

GroupBox chọn Properties và thiết lập các thuộc tính cho GroupBox này:

95

Text: Thông tin tìm kiếm

Các thuộc tính khác để mặt định.

Điều chỉnh vị trí và kích thƣớc của GroupBox cho phù hợp

+ Thao tác tƣơng tự để tạo Groupbox kết quả tìm kiếm.

+ Label tìm kiếm thông tin bán hàng:

Kéo điều khiển Label từ của sồ Toolbox vào form. Nháy phải chuột vào Label

chọn Properties và thiết lập các thuộc tính cho Label này:

 Text: TÌM KIẾM THÔNG TIN BÁN HÀNG

 Font name: Microsoft Sans Serif

 Font size: 18

 Font bold: True

 Fore color: Blue

 Trên menu chọn Format/Center in form/Horizontally để căn giữa.

+ Thực hiện thao tác tƣơng tự cho các label mã khách hàng, tên khách hàng

+ Ô nhập mã khách hàng

Kéo điều khiển TextBox từ cửa sổ Toolbox vào form. Điều chỉnh vị trí và kích

thƣớc phù hợp. Nháy phải chuột vào điều khiển chọn Properties để thiết lập thuộc tính

cho điều khiển này nhƣ sau:

 Name: TextBoxMaKH

 Font name: Microsoft Sans Serif

 Font size: 9

 Fore color: Black

 Các thuộc tính khác để mặc định

+ Ô nhập tên khách hàng

Kéo điều khiển TextBox từ cửa sổ Toolbox vào form. Điều chỉnh vị trí và kích

thƣớc phù hợp. Nháy phải chuột vào điều khiển chọn Properties để thiết lập thuộc tính

cho điều khiển này nhƣ sau:

 Name: TextBoxTenKhachHang

 Font name: Microsoft Sans Serif

 Font size: 9

 Fore color: Black

96

 Enabled: False

 Các thuộc tính khác để mặc định

+ Các nút lệnh

Kéo các nút lệnh vào form từ cửa sổ Toolbox và thiết lập thuộc tính giống nhƣ

ở phần trên.

+ Lƣới hiển thị kết quả

Kéo điều khiển DataGridView từ cửa sổ Toolbox vào trong Groupbox kết quả

tìm kiếm. Thiết lập các thuộc tính của nó tƣơng tự nhƣ phần trên.

Viết mã lệnh cho các đối tƣợng trên form tìm kiếm nhƣ sau:

Lƣu ý: Để thao tác với cơ sở dữ liệu SQL Server phải thêm vào

thƣ viện System.Data.SqlClient bằng đoạn mã

Imports System.Data.SqlClient

Mã lệnh của điều khiển button Kết thúc

Private Sub ButtonKetThuc_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonKetThuc.Click

Me.Close()

End Sub

Mã lệnh sự kiện TextChanged của điều khiển textbox Mã khách hàng

Private Sub TextBoxMaKH_TextChanged(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

TextBoxMaKH.TextChanged

'Kiểm tra giá trị ở ô mã khách hàng

If Not String.IsNullOrEmpty(TextBoxMaKH.Text) Then

'Kiểm tra xem mã khách hàng có phải là số không

If IsNumeric(TextBoxMaKH.Text) Then

'Tìm kiếm khách hàng tương ứng với mã

'Khai báo đối tượng và biến cần sử dụng

97

Dim sqlTimKiem As String

'Tạo câu lệnh truy vấn tương ứng với lựa chọn của

người sử dụng

'Tìm kiếm theo mã khác hàng

sqlTimKiem = "SELECT * FROM tblKhachHang

WHERE [MaKH]=" & TextBoxMaKH.Text

'Thực hiện tìm kiếm và đưa kết quả ra lưới

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

If ds.Tables(0).Rows.Count > 0 Then

'Hiển thị tên khách hàng ra ô họ tên

TextBoxTenKhachHang.Text =

ds.Tables(0).Rows(0).Item("HoTen").ToString()

Else

'Thông báo cho người sử dụng

MessageBox.Show("Mã khách hàng không tồn

tại", "Thông báo", MessageBoxButtons.OK,

MessageBoxIcon.Error)

'Đưa con trỏ về ô mã khách hàng

TextBoxMaKH.Focus()

End If

cn.Close()

End Using

End Using

98

Else

MessageBox.Show("Mã khách hàng phải là số",

"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

TextBoxMaKH.Focus()

End If

Else

MessageBox.Show("Chưa nhập mã khách hàng",

"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

TextBoxMaKH.Focus()

End If

End Sub

+ Mã lệnh của điều khiển button Tìm kiếm

Private Sub ButtonTimKiem_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

ButtonTimKiem.Click

If Not String.IsNullOrEmpty(TextBoxMaKH.Text) Then

'Kiểm tra xem mã khách hàng có phải là số không

If IsNumeric(TextBoxMaKH.Text) Then

'Kiểm tra xem combobox đã chọn giá trị so sánh chưa

If ComboBoxSoSanh.SelectedIndex <> -1 Then

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

99

'Tạo câu lệnh truy vấn tương ứng với lựa chọn của

người sử dụng

sqlTimKiem = "SELECT tblBanHang.SoHieuHD,

tblBanHang.NgayMuaBan, tblMatHang.TenMatHang,

tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia,

tblChiTietHoaDon.SoLuong*tblChiTietHoaDon.DonGia AS

ThanhTien FROM tblBanHang, tblChiTietHoaDon, tblMatHang

WHERE tblMatHang.MaMH = tblChiTietHoaDon.MaMH AND

tblBanHang.SoHieuHD = tblChiTietHoaDon.SoHieuHD AND

tblBanHang.SoHieuHD =" & TextBoxSoHieuHD.Text

'Thực hiện tìm kiếm và đưa kết quả ra lưới

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

Me.DataGridView1.DataSource =

ds.Tables(0).DefaultView

Me.DataGridView1.Columns(0).HeaderText =

"Số hóa đơn"

100

Me.DataGridView1.Columns(1).HeaderText =

"Ngày mua hàng"

Me.DataGridView1.Columns(2).HeaderText =

"Tên mặt hàng"

Me.DataGridView1.Columns(3).HeaderText =

"Số lượng"

Me.DataGridView1.Columns(4).HeaderText =

"Đơn giá"

Me.DataGridView1.Columns(5).HeaderText =

"Thành tiền"

GroupBox2.Text = "Kết quả tìm kiếm (" +

Me.DataGridView1.RowCount.ToString() + " kết quả)"

cn.Close()

End Using

End Using

End If

Else

MessageBox.Show("Mã khách hàng phải là số", "Thông

báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

TextBoxMaKH.Focus()

End If

Else

MessageBox.Show("Chưa nhập mã khách hàng", "Thông

báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

101

TextBoxMaKH.Focus()

End If

End Sub

3. Kết quả thiết kế

Hình 52. Kết quả thiết kế form tìm kiếm thông tin bán hàng

102

4. Kết quả thực thi:

Hình 53. Kết quả thực thi form tìm kiếm thông tin bán hàng

Công việc 3. Tạo form tìm kiếm thông tin bán hàng theo mẫu

Hình 54. Form tìm kiếm thông tin bán hàng

1. Phân tích yêu cầu:

Ngoài các đối tƣợng có trên form tìm kiếm ở phần trƣớc, ở form tìm kiếm này

đƣợc bổ xung thêm yêu cầu tìm kiếm với các điều kiện kết hợp nên trên form cần phải

103

bổ xung thêm đối tƣợng Combobox chứa các phép toán so sánh, một điều khiển

NumericUpDown để thay đổi giá trị so sánh.

2. Hướng dẫn thao tác:

Thực hiện các thao tác tƣơng tự mục 1 của công việc 4 để tạo mới form

frmTimKiemThongTinBanHang. Tạo và thiết lập thuộc tính các điều khiển trên form

frmTimKiemThongTinBanHang nhƣ sau:

+ Label tìm kiếm thông tin bán hàng:

Kéo điều khiển Label từ của sồ Toolbox vào form. Nháy phải chuột vào Label

chọn Properties và thiết lập các thuộc tính cho Label này:

 Text: TÌM KIẾM THÔNG TIN BÁN HÀNG

 Font name: Microsoft Sans Serif

 Font size: 18

 Font bold: True

 Fore color: Blue

 Trên menu chọn Format/Center in form/Horizontally để căn giữa.

+ Thực hiện thao tác tƣơng tự cho các label mã khách hàng, tên khách hàng, số

lƣợng.

+ Combobox so sánh số lƣợng:

Kéo điều khiển combobox từ cửa sổ Toolbox vào form. Điều chỉnh vị trí và

kích thƣớc phù hợp. Nháy phải chuột vào combobox và thiết lập thuộc tính cho

combobox này nhƣ sau:

 Name: ComboBoxSoSanh

 DropDownStyle: DropDownList

 Items: (Collection) Nháy chuột vào nút ở phần Collection và nhập các

giá trị >, >=, <, <=, =, <>. Mỗi giá trị trên một dòng. Nhấn OK để hoàn

thành việc nhập giá trị cho Combobox

+ NumericUpDown số lƣợng

Kéo điều khiển NumericUpDown từ cửa sổ Toolbox vào form. Điều chỉnh vị trí

và kích thƣớc phù hợp. Nháy phải chuột vào điều khiển chọn Properties để thiết lập

thuộc tính cho điều khiển này nhƣ sau:

 Name: NumericUpDown1

104

 Value: 10

 Maximum: 10000

 Font name: Microsoft Sans Serif

 Font size: 9

 Fore color: Black

 Các thuộc tính khác để mặc định

+ Ô nhập mã khách hàng

Kéo điều khiển TextBox từ cửa sổ Toolbox vào form. Điều chỉnh vị trí và kích

thƣớc phù hợp. Nháy phải chuột vào điều khiển chọn Properties để thiết lập thuộc tính

cho điều khiển này nhƣ sau:

 Name: TextBoxMaKH

 Font name: Microsoft Sans Serif

 Font size: 9

 Fore color: Black

 Các thuộc tính khác để mặc định

+ Ô nhập tên khách hàng

Kéo điều khiển TextBox từ cửa sổ Toolbox vào form. Điều chỉnh vị trí và kích

thƣớc phù hợp. Nháy phải chuột vào điều khiển chọn Properties để thiết lập thuộc tính

cho điều khiển này nhƣ sau:

 Name: TextBoxTenKhachHang

 Font name: Microsoft Sans Serif

 Font size: 9

 Fore color: Black

 Enabled: False

 Các thuộc tính khác để mặc định

+ Các nút lệnh

Kéo các nút lệnh vào form từ cửa sổ Toolbox và thiết lập thuộc tính giống nhƣ

ở phần trên.

+ Lƣới hiển thị kết quả

Thao tác giống phần trên.

Viết mã lệnh cho các đối tƣợng trên form tìm kiếm nhƣ sau:

105

Lƣu ý: Để thao tác với cơ sở dữ liệu SQL Server phải thêm vào

thƣ viện System.Data.SqlClient bằng đoạn mã

Imports System.Data.SqlClient

Mã lệnh của điều khiển button Kết thúc

Private Sub ButtonKetThuc_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonKetThuc.Click

Me.Close()

End Sub

Mã lệnh của điều khiển textbox Mã khách hàng

Private Sub TextBoxMaKH_TextChanged(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

TextBoxMaKH.TextChanged

'Kiểm tra giá trị ở ô mã khách hàng

If Not String.IsNullOrEmpty(TextBoxMaKH.Text) Then

'Kiểm tra xem mã khách hàng có phải là số không

If IsNumeric(TextBoxMaKH.Text) Then

'Tìm kiếm khách hàng tương ứng với mã

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Tạo câu lệnh truy vấn tương ứng với lựa chọn của

người sử dụng

'Tìm kiếm theo mã khác hàng

sqlTimKiem = "SELECT * FROM tblKhachHang WHERE

[MaKH]=" & TextBoxMaKH.Text

'Thực hiện tìm kiếm và đưa kết quả ra lưới

Using cn As New SqlConnection("Data

106

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

If ds.Tables(0).Rows.Count > 0 Then

'Hiển thị tên khách hàng ra ô họ tên

TextBoxTenKhachHang.Text =

ds.Tables(0).Rows(0).Item("HoTen").ToString()

Else

'Thông báo cho người sử dụng

MessageBox.Show("Mã khách hàng không tồn

tại", "Thông báo", MessageBoxButtons.OK,

MessageBoxIcon.Error)

'Đưa con trỏ về ô mã khách hàng

TextBoxMaKH.Focus()

End If

cn.Close()

End Using

End Using

Else

MessageBox.Show("Mã khách hàng phải là số", "Thông

báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

TextBoxMaKH.Focus()

End If

Else

MessageBox.Show("Chưa nhập mã khách hàng", "Thông

báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

107

TextBoxMaKH.Focus()

End If

End Sub

+ Mã lệnh của điều khiển button Tìm kiếm

Private Sub ButtonTimKiem_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

ButtonTimKiem.Click

If Not String.IsNullOrEmpty(TextBoxMaKH.Text) Then

'Kiểm tra xem mã khách hàng có phải là số không

If IsNumeric(TextBoxMaKH.Text) Then

'Kiểm tra xem combobox đã chọn giá trị so sánh chưa

If ComboBoxSoSanh.SelectedIndex <> -1 Then

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Tạo câu lệnh truy vấn tương ứng với lựa chọn của

người sử dụng

sqlTimKiem = "SELECT tblBanHang.SoHieuHD,

tblBanHang.NgayMuaBan, tblMatHang.TenMatHang,

tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia,

tblChiTietHoaDon.SoLuong*tblChiTietHoaDon.DonGia AS

108

ThanhTien FROM tblBanHang, tblChiTietHoaDon, tblMatHang

WHERE tblMatHang.MaMH = tblChiTietHoaDon.MaMH AND

tblBanHang.SoHieuHD = tblChiTietHoaDon.SoHieuHD AND

tblChiTietHoaDon.SoLuong " &

ComboBoxSoSanh.SelectedItem.ToString() & " " &

NumericUpDown1.Value.ToString() & " AND tblBanHang.MaKH ="

& TextBoxMaKH.Text

'Thực hiện tìm kiếm và đưa kết quả ra lưới

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

Me.DataGridView1.DataSource =

ds.Tables(0).DefaultView

Me.DataGridView1.Columns(0).HeaderText =

"Số hóa đơn"

Me.DataGridView1.Columns(1).HeaderText =

"Ngày mua hàng"

Me.DataGridView1.Columns(2).HeaderText =

"Tên mặt hàng"

109

Me.DataGridView1.Columns(3).HeaderText =

"Số lượng"

Me.DataGridView1.Columns(4).HeaderText =

"Đơn giá"

Me.DataGridView1.Columns(5).HeaderText =

"Thành tiền"

GroupBox2.Text = "Kết quả tìm kiếm (" +

Me.DataGridView1.RowCount.ToString() + " kết quả)"

cn.Close()

End Using

End Using

End If

Else

MessageBox.Show("Mã khách hàng phải là số", "Thông

báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

TextBoxMaKH.Focus()

End If

Else

MessageBox.Show("Chưa nhập mã khách hàng", "Thông

báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

TextBoxMaKH.Focus()

End If

End Sub

110

3. Kết quả thiết kế

Hình 55. Kết quả thiết kế form tìm kiếm thông tin bán hàng

4. Kết quả thực thi

Hình 56. Kết quả thực thi form tìm kiếm thông tin bán hàng

Công việc 4. Thiết kế một form để tìm kiếm thông tin về các mặt hàng đã bán

của một nhân viên bán hàng và hiển thị kết quả trên form theo mẫu sau.

111

Hình 57. Form tìm kiếm thông tin các mặt hàng mà khách hàng đã mua

1. Phân tích yêu cầu

Theo yêu cầu trên thì phải thiết kế một form có chứa:

- Các đối tƣợng có nội dung “TÌM KIẾM THÔNG TIN”, “Họ tên ngƣời bán

hàng” là các Label.

- Các đối tƣợng thông tin tìm kiếm, kết quả tìm kiếm là các GroupBox.

- Ô nhập họ tên ngƣời bán hàng là một textbox

- Các nút Tìm, Đóng là các đối tƣợng Button

- Lƣới hiển thị kết quả tìm kiếm là một DataGridView

2. Hướng dẫn thao tác

Thực hiện các thao tác tƣơng tự để tạo form frmTimKiemNguoiBanHang và

thiết lập thuộc tính cho các đối tƣợng trên form frmTimKiemNguoiBanHang phù hợp

yêu cầu.

Viết đoạn mã lệnh cho các điều khiển trên form frmTimKiemNguoiBanHang

nhƣ sau:

Lƣu ý: Để thao tác với cơ sở dữ liệu SQL Server phải thêm vào

thƣ viện System.Data.SqlClient bằng đoạn mã

Imports System.Data.SqlClient

112

Mã lệnh khi nhấn vào nút Đóng

Private Sub ButtonDong_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonDong.Click

'Đóng form

Me.Close()

End Sub

Mã lệnh khi nhấn vào nút Tìm

Private Sub ButtonTim_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonTim.Click

If String.IsNullOrEmpty(TextBoxNguoiBanHang.Text) Then

'Thông báo

MessageBox.Show("Chưa nhập họ tên người bán hàng.",

"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

Me.TextBoxNguoiBanHang.Focus()

Else

'Thực hiện tìm kiếm và hiển thị kết quả trên lưới

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Tạo câu lệnh truy vấn tương ứng với lựa chọn của người sử

dụng

'Tìm kiếm tương đối theo tên khách hàng

sqlTimKiem = "SELECT tblChiTietHoaDon.SoHieuHD,

tblMatHang.TenMatHang, tblMatHang.DVT,

tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia,

tblChiTietHoaDon.DonGia * tblChiTietHoaDon.SoLuong AS

ThanhTien FROM tblChiTietHoaDon, tblMatHang WHERE

tblMatHang.MaMH = tblChiTietHoaDon.MaMH AND

113

tblChiTietHoaDon.SoHieuHD IN (SELECT SoHieuHD FROM

tblBanHang WHERE NguoiBanHang LIKE '%" &

TextBoxNguoiBanHang.Text & "%')"

'Thực hiện tìm kiếm và đưa kết quả ra lưới

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

Me.DataGridView1.DataSource =

ds.Tables(0).DefaultView

Me.DataGridView1.Columns(0).HeaderText = "Số HĐ"

Me.DataGridView1.Columns(1).HeaderText = "Tên

mặt hàng"

Me.DataGridView1.Columns(2).HeaderText = "ĐVT"

Me.DataGridView1.Columns(3).HeaderText = "Số

lượng"

Me.DataGridView1.Columns(4).HeaderText = "Đơn

giá"

Me.DataGridView1.Columns(5).HeaderText = "Thành

tiền"

GroupBox2.Text = "Kết quả tìm kiếm (" +

Me.DataGridView1.RowCount.ToString() + " kết quả)"

cn.Close()

End Using

114

End Using

End If

End Sub

3. Kết quả thiết kế

Hình 58. Kết quả thiết kế form tìm kiếm thông tin mặt hàng khách hàng đã mua

4. Kết quả thực thi

Hình 59. Kết quả thực thi form tìm kiếm thông tin mặt hàng khách hàng đã mua

Công việc 5. Thiết kế một form để tìm kiếm thông tin về các lần bán một mặt

hàng của một nhân viên bán hàng và hiển thị kết quả trên form theo mẫu sau.

115

Hình 60. Form tìm kiếm thông tin số lần một mặt hàng đã mua bời khách hàng

1. Phân tích yêu cầu

Theo yêu cầu trên thì phải thiết kế một form có chứa:

- Các đối tƣợng có nội dung “TÌM KIẾM THÔNG TIN”, “Họ tên ngƣời bán

hàng”, “Mặt hàng” là các Label.

- Các đối tƣợng thông tin tìm kiếm, kết quả tìm kiếm là các GroupBox.

- Ô nhập họ tên ngƣời bán hàng là một textbox

- Danh sách lựa chọn mặt hàng là một Combobox.

- Các nút Tìm, Đóng là các đối tƣợng Button

- Lƣới hiển thị kết quả tìm kiếm là một DataGridView

2. Hướng dẫn thao tác

Thực hiện các thao tác tƣơng tự phần trên để tạo form

frmTimKiemNguoiBanHangMatHang và thiết lập thuộc tính cho các đối tƣợng trên

form frmTimKiemNguoiBanHangMatHang phù hợp yêu cầu.

Viết đoạn mã lệnh cho các điều khiển trên form

frmTimKiemNguoiBanHangMatHang nhƣ sau:

Lƣu ý: Để thao tác với cơ sở dữ liệu SQL Server phải thêm vào

thƣ viện System.Data.SqlClient bằng đoạn mã

Imports System.Data.SqlClient

116

Mã lệnh khi form xuất hiện

Private Sub frmTimKiemNguoiBanHangMatHang_Load(ByVal

sender As System.Object, ByVal e As System.EventArgs) Handles

MyBase.Load

'TODO: This line of code loads data into the

'QLYBHDataSet.tblMatHang' table. You can move, or remove it, as

needed.

Me.TblMatHangTableAdapter.Fill(Me.QLYBHDataSet.tblMatHang)

Me.ComboBoxMatHang.DataSource =

Me.QLYBHDataSet.tblMatHang

Me.ComboBoxMatHang.DisplayMember = "TenMatHang"

Me.ComboBoxMatHang.ValueMember = "MaMH"

End Sub

Mã lệnh khi nhấn vào nút Đóng

Private Sub ButtonDong_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonDong.Click

'Đóng form

Me.Close()

End Sub

Mã lệnh khi nhấn vào nút Tìm

Private Sub ButtonTim_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonTim.Click

If String.IsNullOrEmpty(TextBoxNguoiBanHang.Text) Then

'Thông báo

MessageBox.Show("Chưa nhập họ tên người bán hàng.",

"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

117

Me.TextBoxNguoiBanHang.Focus()

Else

'Thực hiện tìm kiếm và hiển thị kết quả trên lưới

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Tạo câu lệnh truy vấn tương ứng với lựa chọn của người

sử dụng

'Tìm kiếm tương đối theo tên khách hàng

sqlTimKiem = "SELECT tblChiTietHoaDon.SoHieuHD,

tblMatHang.TenMatHang, tblMatHang.DVT,

tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia,

tblChiTietHoaDon.DonGia * tblChiTietHoaDon.SoLuong AS

ThanhTien FROM tblChiTietHoaDon, tblMatHang WHERE

tblMatHang.MaMH = tblChiTietHoaDon.MaMH AND

tblChiTietHoaDon.SoHieuHD IN (SELECT SoHieuHD FROM

tblBanHang WHERE NguoiBanHang LIKE '%" &

TextBoxNguoiBanHang.Text & "%') AND tblChiTietHoaDon.MaMH

= " & ComboBoxMatHang.SelectedValue

'Thực hiện tìm kiếm và đưa kết quả ra lưới

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

Me.DataGridView1.DataSource =

118

ds.Tables(0).DefaultView

Me.DataGridView1.Columns(0).HeaderText = "Số HĐ"

Me.DataGridView1.Columns(1).HeaderText = "Tên

mặt hàng"

Me.DataGridView1.Columns(2).HeaderText = "ĐVT"

Me.DataGridView1.Columns(3).HeaderText = "Số

lượng"

Me.DataGridView1.Columns(4).HeaderText = "Đơn

giá"

Me.DataGridView1.Columns(5).HeaderText = "Thành

tiền"

GroupBox2.Text = "Kết quả tìm kiếm (" +

Me.DataGridView1.RowCount.ToString() + " kết quả)"

cn.Close()

End Using

End Using

End If

End Sub

3. Kết quả thiết kế

Hình 61. Kết quả thiết kế form tìm kiếm số lần mặt hàng khách hàng đã mua

119

4. Kết quả thực thi

Hình 62. Kết quả thực thi form tìm kiếm số lần mặt hàng khách hàng đã mua

2.2.3. Bài tập thực hành

Bài tập số 1. Để quản lý việc phân công giảng dạy trong một học kỳ cho giáo

viên của khoa CNTT, khoa có một cơ sở dữ liệu QLYGD.MDF trong đó có các bảng:

tblGiaoVien(MaGV, HoTen, BoMon, DMGD)

tblMonHoc(Mamon, Tenmon, SoTinChi)

tblPhanCong(MaGV, MaMon, LHP, SSO)

Tiếp tục với bài tập số 1 đã thực hiện trong phần bài tập thực hành của bài 1 thực hiện

các công việc sau:

Công việc 1:

Thiết kế một form để tìm kiếm thông tin về giáo viên và hiển thị kết quả trên

form theo mẫu sau:

120

Hình 63. Form tìm kiếm thông tin giáo viên

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm thông tin:

Font: Microsoft Sans Serif, Bold, 18

Căn giữa màn hình form tìm kiếm theo chiều ngang

Mầu chữ: Đỏ

- Các nhãn Tìm theo, Nội dung tìm kiếm

Font: Microsoft Sans Serif, Bold, 9

121

Mầu chữ: Đen

- Các radio button Mã giáo viên, tên giáo viên, tất cả

Font: Microsoft Sans Serif, Bold, 9

Căn giữa theo chiều dọc

Mầu chữ: Đen

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào giá trị lựa chọn ở

các radio button trong phần Tìm theo và điều kiện tìm kiếm trong ô nội dung tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các giáo viên gồm các thông tin: Mã giáo

viên, Họ tên giáo viên, Bộ môn, Định mức giảng dạy và hiển thị ở trên DataGridView

phía dƣới.

Tìm theo mã giáo viên: Yêu cầu tìm chính xác theo mã giáo viên đƣợc nhập từ

bàn phím vào ô textbox nội dung tìm kiếm.

Tìm theo tên giáo viên: Yêu cầu tìm gần đúng theo tên giáo viên đƣợc nhập từ

bàn phím vào ô textbox nội dung tìm kiếm (ví dụ: nhập “an” ở ô nội dung tìm kiếm sẽ

trả về các kết quả Nguyễn Văn An, Trần Văn Anh, Mai Thế Cang, …)

Tìm theo tất cả: Sẽ hiển thị tất cả các giáo viên. Danh sách kết quả sắp xếp theo

thứ tự từ điển.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

122

Công việc 2: Thiết kế một form để tìm kiếm thông tin về môn học và hiển thị kết quả

trên form theo mẫu sau:

Hình 64. Form tìm kiếm môn học

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm môn học:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Tìm theo, Nội dung tìm kiếm

123

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

- Các radio button Mã giáo viên, tên giáo viên, tất cả

 Font: Microsoft Sans Serif, Bold, 9

 Căn giữa theo chiều dọc

 Mầu chữ: Đen

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các môn học gồm các thông tin: Mã môn học,

Tên môn học, Số tín chỉ và hiển thị ở trên DataGridView phía dƣới.

Tìm theo mã môn học: Yêu cầu tìm chính xác theo mã môn học đƣợc nhập từ

bàn phím vào ô textbox nội dung tìm kiếm.

Tìm theo tên môn học: Yêu cầu tìm gần đúng theo tên môn học đƣợc nhập từ

bàn phím vào ô textbox nội dung tìm kiếm (ví dụ: nhập “cơ sở” ở ô nội dung tìm kiếm

sẽ trả về các kết quả Hệ quản trị cơ sở dữ liệu, Cơ sở dữ liệu phân tán, Cơ sở dữ liệu

SQL Server, …)

Tìm theo tất cả: Sẽ hiển thị tất cả các môn học. Danh sách kết quả sắp xếp theo

thứ tự từ điển.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 3. Thiết kế form tìm kiếm phân công của giáo viên theo mẫu sau

124

Hình 65. Tìm kiếm phân công giáo viên

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm phân công:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Mã giáo viên, Họ tên giáo viên

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

125

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các môn học gồm các thông tin: Môn học, lớp

học phần, sĩ số và hiển thị ở trên DataGridView phía dƣới.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 4. Thiết kế form tìm kiếm phân công của giáo viên theo môn học theo mẫu

sau

126

Hình 66. Tìm kiếm phân công giáo viên theo môn học

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm phân công:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Mã giáo viên, Chọn môn học

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

127

- Danh sách lựa chọn môn học:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Nguồn dữ liệu lấy từ bảng môn học

 Dữ liệu hiển thị là tên môn học

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các môn học gồm các thông tin: Môn học, lớp

học phần, sĩ số và hiển thị ở trên DataGridView phía dƣới.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Bài tập số 2. Để quản lý tài sản của các đơn vị trong một trƣờng ngƣời ta tổ

chức một cơ sở dữ liệu QLTAISAN.MDF có các bảng nhƣ sau:

tblDonVi(MaDV, TenDV, ViTri, SoNhanVien)

tblTaiSan(MaTS, TenTS, DVT, HSD)

tblQuanLy(MaDV, MaTS, SoLuong, NgayCap, TinhTrang)

Tiếp tục với bài tập số 2 đã thực hiện trong phần bài tập thực hành của bài 1 thực hiện

các công việc sau:

Công việc 1: Thiết kế form tìm kiếm thông tin về đơn vị theo mẫu

128

Hình 67. Form tìm kiếm đơn vị

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm đơn vị:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Tìm theo, Nội dung tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

129

- Các radio button Mã giáo viên, tên giáo viên, tất cả

 Font: Microsoft Sans Serif, Bold, 9

 Căn giữa theo chiều dọc

 Mầu chữ: Đen

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các đơn vị gồm các thông tin: Mã đơn vị, Tên

đơn vị, Số tín chỉ và hiển thị ở trên DataGridView phía dƣới.

Tìm theo mã đơn vị: Yêu cầu tìm chính xác theo mã đơn vị đƣợc nhập từ bàn

phím vào ô textbox nội dung tìm kiếm.

Tìm theo tên đơn vị: Yêu cầu tìm gần đúng theo tên đơn vị đƣợc nhập từ bàn

phím vào ô textbox nội dung tìm kiếm (ví dụ: nhập “phòng” ở ô nội dung tìm kiếm sẽ

trả về các kết quả phòng KH & HTQT, phòng đào tạo, …)

Tìm theo tất cả: Sẽ hiển thị tất cả các đơn vị. Danh sách kết quả sắp xếp theo

thứ tự từ điển.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 2. Thiết kế form tìm kiếm thông tin về tài sản

130

Hình 68. Fom tìm kiếm tài sản

Yêu cầu

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm tài sản:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Tìm theo, Nội dung tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

131

- Các radio button Mã tài sản, tên tài sản, tất cả

 Font: Microsoft Sans Serif, Bold, 9

 Căn giữa theo chiều dọc

 Mầu chữ: Đen

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các tài sản gồm các thông tin: Mã tài sản, Tên

tài sản, Số tín chỉ và hiển thị ở trên DataGridView phía dƣới.

Tìm theo mã tài sản: Yêu cầu tìm chính xác theo mã tài sản đƣợc nhập từ bàn

phím vào ô textbox nội dung tìm kiếm.

Tìm theo tên tài sản: Yêu cầu tìm gần đúng theo tên tài sản đƣợc nhập từ bàn

phím vào ô textbox nội dung tìm kiếm (ví dụ: nhập “máy” ở ô nội dung tìm kiếm sẽ trả

về các kết quả máy vi tính, máy tiện vạn năng, thang máy, …)

Tìm theo tất cả: Sẽ hiển thị tất cả các tài sản. Danh sách kết quả sắp xếp theo

thứ tự từ điển.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 3: Thiết kế form tìm kiếm thông tin về tài sản thuộc đơn vị theo mẫu sau:

132

Hình 69. Fom tìm kiếm tài sản thuộc đơn vị

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm phân công:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Mã giáo viên, Chọn đơn vị

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

133

- Danh sách lựa chọn đơn vị:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Nguồn dữ liệu lấy từ bảng đơn vị

 Dữ liệu hiển thị là tên đơn vị

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các đơn vị gồm các thông tin: Tài sản, số

lƣợng, ngày cấp, tình trạng và hiển thị ở trên DataGridView phía dƣới.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 4. Thiết kế form tìm kiếm thông tin về tài sản có tình trạng theo mẫu sau:

134

Hình 70. Form tìm kiếm tài sản theo tình trạng

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm phân công:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Mã giáo viên, Chọn đơn vị

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

135

- Danh sách lựa chọn tình trạng:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Nguồn dữ liệu lấy từ danh sách các tình trạng ở đƣợc lọc từ bảng

tblQuanLy, các tình trạng này là hiển thị duy nhất.

 Dữ liệu hiển thị là tên tình trạng.

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các đơn vị gồm các thông tin: Tên đơn vị, Tên

tài sản, số lƣợng, ngày cấp và hiển thị ở trên DataGridView phía dƣới.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Bài tập số 3. Cho cơ sở dƣ̃ liê ̣u Quản lý đi ểm có tên QLDIEM .MDF gồm các

bảng:

tblSinhVien(MaSV, Hoten, Ngaysinh, Noisinh, Gioitinh, Diachi, Makhoa,

LopNC)

tblKhoa(Makhoa, Tenkhoa)

tblMonHoc(Mamon, Tenmon, Sohocphan, Giaovien)

tblDiem(Mamon, MaSV, Diem, HocKy)

Công việc 1: Thiết kế form tìm kiếm thông tin môn học

136

Hình 71. Form tìm kiếm môn học

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm môn học:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Mã môn học, Tên môn học

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

137

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các môn học gồm các thông tin: Mã môn học,

Tên môn học, Số học phần và hiển thị ở trên DataGridView phía dƣới.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 2: Thiết kế form tìm kiếm thông tin về khoa

138

Hình 72. Form tìm kiếm thông tin về khoa

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm khoa:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Mã khoa, Tên khoa

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

139

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các khoa gồm các thông tin: Mã khoa, Tên

khoa và hiển thị ở trên DataGridView phía dƣới.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 3: Thiết kế form tìm kiếm thông tin sinh viên theo mẫu sau:

Hình 73.Form tìm kiếm sinh viên

140

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm sinh viên:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Mã sinh viên, Họ tên sinh viên

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các sinh viên gồm các thông tin: Mã sinh

viên, Họ tên sinh viên, Ngày sinh, Nơi sinh, Giới tính, Địa chỉ và hiển thị ở trên

DataGridView phía dƣới.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 3: Thiết kế form tìm kiếm điểm của sinh viên trong học kỳ

141

Hình 74. Form tìm kiếm điểm của sinh viên theo học kỳ

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm điểm sinh viên:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Mã sinh viên, Chọn học kỳ

 Font: Microsoft Sans Serif, Bold, 9

142

 Mầu chữ: Đen

- Danh sách học kỳ:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Giá trị học kỳ từ 1 đến 9.

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các đơn vị gồm các thông tin: Tên môn học,

Số học phần, Điểm, Giáo viên và hiển thị ở trên DataGridView phía dƣới.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

Công việc 4: Thiết kế form tìm kiếm điểm của các sinh viên theo môn học trong học

kỳ

143

Hình 75. Form tìm kiếm điểm sinh viên theo môn học

Yêu cầu

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn Tìm kiếm điểm sinh viên:

 Font: Microsoft Sans Serif, Bold, 18

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Xanh

- Các nhãn Mã sinh viên, Chọn môn học

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

- Danh sách môn học:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

144

 Nguồn dữ liệu danh sách môn học lấy từ bảng tblMonHoc

 Nội dung hiển thị là tên môn học

- Nút lệnh Tìm kiếm

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: T

Khi nhấn vào nút lệnh tìm kiếm, chƣơng trình sẽ căn cứ vào điều kiện tìm kiếm

chƣơng trình sẽ đƣa ra kết quả tìm kiếm các đơn vị gồm các thông tin: Họ tên sinh

viên, Tên môn học, Số học phần, Điểm, Giáo viên và hiển thị ở trên DataGridView

phía dƣới.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc tìm kiếm không. Nếu

chọn Yes sẽ đóng form tìm kiếm. Nếu chọn No sẽ trở lại form.

2.3. Bài tập về nhà

Bài tập số 4. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin tại xuất nhập kho công ty BCD

Bài tập số 5. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin thƣ viện tại trƣờng XYZ

Bài tập số 6. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin ký túc xá

Bài tập số 7. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin các đề tài khoa học tại trƣờng đại học SPK

Bài tập số 8. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin giải bóng đá vô địch quốc gia

Bài tập số 9. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin nhân sự tại công ty ABC

145

Bài tập số 10. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin thi đua khen thƣởng tại công ty ABC

146

BÀI 3. LẬP TRÌNH VÀ IN ẤN BÁO CÁO

Mục tiêu

Sau bài học, sinh viên có khả năng:

- Kiến thức: Biết sử dụng Crystal Report để thiết kế báo cáo. Lập trình trên Form để

thực hiện việc xem và in báo cáo.

- Kỹ năng: Vận dụng đƣợc kiến thức thiết kế báo cáo và lập trình trên Form để thực

hiện việc xem và in báo cáo vào giải quyết các bài toán thực tế.

- Thái độ:

+ Nghiêm túc, sáng tạo

+ Tích cực tập luyện

Chuẩn bị dụng cụ, vật tư, thiết bị

Chuẩn bị máy tính có hệ điều hành Windows XP hoặc cao hơn, phần mềm

Microsoft Office, bộ gõ Tiếng Việt, phần mềm SQL Server 2000 hoặc cao hơn, phần

mềm Visual Studio 2008 có cài đặt Crystal Report hoặc cao hơn.

3.1. Tóm tắt kiến thức cần nhớ

Reports là công cụ để trình bày và tóm tắt dữ liệu trong một văn bản để in ra

giấy. Report có hai thành phần cơ bản cấu thành: dữ liệu nguồn (source data) và hình

thức trình bày (Layout) là dạng thức của Report sẽ định dạng cách kết xuất dữ liệu.

Mỗi Report yêu cầu chỉ rõ trƣờng nào muốn thể hiện trên Report, tiêu đề và các

thông tin đó đặt ở đâu trên trang giấy. Report không lƣu trữ dữ liệu mỗi Field của

bảng dữ liệu. Nó chỉ lƣu trữ kết nối và định dạng kết xuất của các trƣờng trên Report

Layout. Giá trị của các Field đó có thể thay đổi mỗi khi chạy Report, nó tuỳ thuộc vào

việc thay đổi các giá trị của các Field trong các bảng dữ liệu nguồn.

1. Các bƣớc chính để thiết kế một Report:

- Xác định loại Report cần tạo

- Tạo Report LayOut.

- Chạy thử Report.

147

- Chỉnh sửa LayOut của Report để đạt yêu cầu.

- Ghi Report.

Nhƣ vậy, thiết kế một Report chẳng qua là thiết kế cách trình bày báo cáo

(Report Layout).

Báo cáo có thể trình bày ở nhiều dạng khác nhau. Ở đây ta chỉ quan tâm tới 2

dạng:

Dạng 1 là Label thƣờng đƣợc sử dụng để trình bày thông tin trong một bản ghi

của cơ sở dữ liệu ví dụ nhƣ giấy mời họp, hoặc giấy báo kết quả thi tuyển sinh, nhãn

của một nhóm sản phẩm nào đó, …Có thể in một Label hoặc nhiều Label trên một

trang giấy in.

Hình 76. Báo cáo dạng label in nhiều label trên một trang

148

Hình 77. Báo cáo dạng label in trên một trang

Dạng 2 là Report thƣờng dùng để trình bày thông tin của nhiều bản ghi trong cơ

sở dữ liệu, trong loại này có thể trình bày theo kiểu bảng không phân nhóm, phân

nhóm theo một hoặc nhiều tiêu chí, loại một – nhiều, … Có thể in một hoặc nhiều

Report trên một hoặc nhiều trang giấy in.

Hình 78. Báo cáo dạng 1 bản ghi trên một trang

Nhƣ vậy, tạo một Report chẳng qua là tạo một Report Layout.

2. Để xây dựng một form dùng để cập nhật dữ liệu cho một cơ sở dữ liệu bằng

VB.NET, thực hiện các bƣớc sau:

149

1. Xây dựng một form mới để điều khiển việc xem in báo cáo.

2. Đƣa các điều khiển vào form xem, in báo cáo.

3. Đặt thuộc tính cho form và các điều khiển trên form xem, in báo cáo.

4. Kết nối form xem in báo cáo với báo cáo.

5. Lập trình cho các sự kiện thực thi các nhiệm vụ.

6. Chạy thử.

7. Hiệu chỉnh form.

8. Ghi kết quả.

Crystal Report là một phần mềm công cụ mạnh hỗ trợ ngƣời lập trình thiết kế

các báo cáo. Khi thiết kế báo cáo bằng Crystal Report, trƣớc tiên phải chọn loại báo

cáo bằng cách:

1. Chọn Project đang xây dựng từ cửa sổ Solution Explorer.

2. Trên thanh menu chọn Project / Add New Item. Xuất hiện cửa sổ Add New Item.

Hình 79. Cửa sổ Add New Item

3. Chọn Reporting ở khung bên trái của cửa sổ / chọn Crystal Reports / nhập tên giấy

mời vào ô textbox Name là GiayMoiKhachHang.rpt. Sau đó nhấn nút Add. Xuất hiện

cửa sổ Crystal Reports Gallery.

150

Hình 80. Cửa sổ Crystal Reports Gallery

Bảng 4. Các hình thức tạo báo cáo bằng Crystal Report.

Lựa chọn Mô tả

Using the Report Expert Sử dụng trợ giúp của Crystal Report để tạo

báo cáo.

As a Blank Report Tạo báo cáo một các thủ công từ một báo cáo

trắng.

From an Existing Report Tạo báo cáo từ một báo cáo khác đã có sẵn.

151

Chọn As a Blank Report / nhấn nút OK. Xuất hiện cửa sổ thiết kế báo cáo gồm 5

section:

Bảng 5. Các phần chính trên một báo cáo.

Phần thể hiện Mô tả

Section 1 (Report Dùng để trình bày tiêu đề đầu của mỗi báo

Header) cáo. Tiêu đề này chỉ xuất hiện một lần ở đầu

báo cáo

Section 2 (Page Header) Dùng để trình bày tiêu đề đầu của mỗi trang in

báo cáo. Tiêu đề này xuất hiện ở đầu mỗi

trang giấy in

Section 3 (Details) Dùng để trình bày dữ liệu của các bản ghi

trong cơ sở dữ liệu cần hiển thị trên báo cáo.

Section 4 (Report Dùng để trình bày tiêu đề cuối của mỗi báo

Footer) cáo. Tiêu đề này chỉ xuất hiện một lần ở cuối

báo cáo.

Section 5 (Page Footer) Dùng để trình bày tiêu đề cuối của mỗi trang

in báo cáo. Tiêu đề này xuất hiện ở cuối mỗi

trang giấy in.

152

Ngoài các section này, Crystal Report còn cung cấp thêm một số section nữa

nhƣ: Group Header, Group Footer để sử dụng khi thiết kế báo cáo có phân nhóm.

Trong các section này ngƣời thiết kế báo cáo có thể bố trí các điều khiển để

điều khiển việc hiển thị dữ liệu trên báo cáo.

Trong phần thực hành sẽ sử dụng các section và các điều khiển này vào các

công việc cụ thể.

Để điều khiển việc xem in báo cáo trong ứng dụng, ngƣời ta thƣờng thiết kế

một form, trong đó có các điều khiển việc xem in báo cáo và lập trình cho các sự kiện

của các điều khiển này.

Chẳng hạn:

Hình 81. Form điều khiển việc in giấy mời khách hàng

Hay:

153

Hình 82. Form điều khiển việc in hóa đơn bán hàng

Lƣu ý: Để thao tác với Crystal Report ngƣời lập trình phải đƣa

vào các thƣ viện bằng đoạn mã sau:

Imports CrystalDecisions.CrystalReports.Engine

3.2. Hướng dẫn thực hành

3.2.1. Bài tập mẫu

Tiếp tục với bài tập mẫu đã thực hiện ở bài 2 thực hiện các công việc sau:

Công việc 1: Thiết kế giấy mời hội nghị khách hàng hàng năm

1. Sử dụng Crystal Report thiết kế giấy mời khách hàng theo mẫu sau

154

Hình 83. Giấy mời tham dự hội nghị khách hàng

Yêu cầu:

 Font: Times New Roman, 13.

 Cỡ giấy: A5.

 Hƣớng giấy: Ngang

 Lề trên: 2 cm

 Lề dƣới: 2 cm.

 Lề trái: 2 cm

 Lề phải: 2 cm.

 Dữ liệu báo cáo: Lấy từ nội dung bảng khách hàng trong cơ sở dữ liệu.

 Ngày in giấy mời sẽ lấy từ đồng hồ hệ thống.

2. Thiết kế form điều khiển việc in giấy mời khách hàng theo mẫu sau

155

Hình 84. Form điều khiển việc in giấy mời khách hàng

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn in giấy mời khách hàng:

 Font: Microsoft Sans Serif, Bold, 16

 Căn giữa màn hình form tìm kiếm theo chiều ngang

 Mầu chữ: Đen

- Các nhãn In theo, mã khách hàng

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Có lề trái bằng nhau

- Lựa chọn tất cả khách hàng, từng khách hàng:

 Là dạng radio button.

 Mặc định lựa chọn tất cả khách hàng

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

156

 Khi lựa chọn tất cả khách hàng thì tự động giá trị ô nhập mã khách hàng

bị xóa và đồng thời khóa ô nhập mã khách hàng

 Khi lựa chọn từng khách hàng thì mở khóa ô nhập mã khách hàng cho

phép ngƣời sử dụng nhập giá trị vào.

- Ô nhập mã khách hàng

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Mặc định bị khóa không cho nhập dữ liệu. Chỉ khi lựa chọn từng khách

hàng đƣợc chọn thì mới mở khóa cho ngƣời dùng nhập.

 Khi nhập vào một mã khách hàng sẽ tự động hiện ra họ tên khách hàng ở

textbox bên dƣới.

- Nút lệnh Xem trƣớc

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: X

Khi nhấn vào nút lệnh xem trƣớc, chƣơng trình sẽ căn cứ vào lựa chọn của

ngƣời sử dụng ở phần in theo để hiển thị tất cả danh sách giấy mời hay chỉ một giấy

mời của khách hàng tƣơng ứng tại một form mới.

- Nút lệnh In ấn

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: I

Khi nhấn vào nút lệnh in ấn, chƣơng trình sẽ căn cứ vào lựa chọn của ngƣời sử

dụng ở phần in theo để in danh sách tất cả các giấy mời hay chỉ một giấy mời của

khách hàng tƣơng ứng ra máy in mặc định.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc điều khiển việc in ấn

không. Nếu chọn Yes sẽ đóng form. Nếu chọn No sẽ trở lại form.

157

Công việc 2:

1. Sử dụng Crystal Report thiết kế

a) Bảng kê bán hàng hàng ngày theo mẫu sau

Hình 85. Mẫu bảng kê bán hàng

b) Hóa đơn bán hàng theo mẫu sau

Hình 86. Hóa đơn bán hàng

Yêu cầu:

 Font: Times New Roman, 13.

 Cỡ giấy: A5.

 Hƣớng giấy: Dọc

 Lề trên: 1 cm

158

 Lề dƣới: 1 cm.

 Lề trái: 1 cm

 Lề phải: 1 cm.

 Dữ liệu báo cáo: Lấy từ nội dung các bảng bán hàng, chi tiết bán hàng,

khách hàng, mặt hàng trong cơ sở dữ liệu.

 Tạo mới một trƣờng thành tiền để tính tiền thành tiền của mỗi mặt hàng

trên hóa đơn

 Tạo mới một công thức để tính tổng tiền của hóa đơn bán hàng

 Các dữ liệu số trên hóa đơn: Dùng dấu . để phân cách phần nghìn, sử

dụng tới 2 số sau phần thập phân.

 Cột số thứ tự lấy giá trị tự động từ danh sách dữ liệu của hóa đơn bán

hàng. Không sử dụng dấu . để phân cách phần nghìn. Giá trị số thứ tự

căn giữa cột.

 Kẻ khung cho phần danh sách các mặt hàng đã mua.

159

2. Thiết kế form điều khiển việc in ấn hóa đơn bán hàng theo mẫu sau:

Hình 87. Form điều khiển việc in hóa đơn

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn in hóa đơn bảng kê bán hàng:

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form theo chiều ngang

 Mầu chữ: Đen

- Các nhãn Lựa chọn in, từ ngày, đến ngày, in theo, số hiệu hóa đơn

160

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Có lề trái bằng nhau

- Danh sách lựa chọn in

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Kiểu: DropDown

 Có 2 giá trị: Hóa đơn bán hàng, bảng kê bán hàng

- Lựa chọn tất cả hóa đơn, từng hóa đơn:

 Là dạng radio button.

 Mặc định lựa chọn tất cả hóa đơn

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Khi lựa chọn tất cả hóa đơn thì tự động giá trị ô nhập số hiệu hóa đơn bị

xóa và đồng thời khóa ô nhập số hiệu hóa đơn

 Khi lựa chọn từng hóa đơn thì mở khóa ô nhập số hiệu hóa đơn cho phép

ngƣời sử dụng nhập giá trị vào.

- Ô nhập số hiệu hóa đơn

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Mặc định bị khóa không cho nhập dữ liệu. Chỉ khi lựa chọn từng hóa

đơn đƣợc chọn thì mới mở khóa cho ngƣời dùng nhập.

- Nút lệnh Xem trƣớc

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: X

Khi nhấn vào nút lệnh xem trƣớc, chƣơng trình sẽ căn cứ vào lựa chọn của

ngƣời sử dụng để hiển thị tất cả hóa đơn bán hàng, một hóa đơn bán hàng hoặc một

bảng kê bán hàng từ ngày đến ngày tƣơng ứng tại một form mới.

- Nút lệnh In ấn

161

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: I

Khi nhấn vào nút lệnh in ấn, chƣơng trình sẽ căn cứ vào lựa chọn của ngƣời sử

dụng để in tất cả hóa đơn bán hàng, một hóa đơn bán hàng hoặc một bảng kê bán hàng

từ ngày đến ngày tƣơng ứng ra máy in mặc định.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc điều khiển việc in ấn

không. Nếu chọn Yes sẽ đóng form. Nếu chọn No sẽ trở lại form.

b) Thiết kế form xem trước hóa đơn bán hàng theo mẫu sau:

Hình 88. Form xem trước khi in hóa đơn bán hàng

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

162

- Form xuất hiện chính giữa màn hình

- Nhãn xem trƣớc hóa đơn:

 Font: Microsoft Sans Serif, 18pt.

 Căn giữa màn hình form theo chiều ngang

 Mầu chữ: Đen

- Khung hiển thị báo cáo:

 Không có phần có thanh công cụ.

 Không có thanh trạng thái.

 Giao diện hiển thị không có phần cây thƣ mục ở bên trái.

- Ô nhập số hiệu hóa đơn

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

- Nút lệnh <<

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

Khi nhấn vào nút lệnh << sẽ chuyển về hóa đơn đầu tiên và hiển thị ở khung

bên trên.

- Nút lệnh <

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

Khi nhấn vào nút lệnh < sẽ chuyển về trƣớc đó một hóa đơn.

- Nút lệnh >

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

Khi nhấn vào nút lệnh > sẽ chuyển về sau đó một hóa đơn.

- Nút lệnh >>

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

163

Khi nhấn vào nút lệnh >> sẽ chuyển về hóa đơn đầu tiên và hiển thị ở khung

bên trên.

- Nút lệnh Tìm kiếm:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Có ảnh gợi nhớ nhƣ hình.

Khi nhấn vào nút lệnh sẽ tìm trong cơ sở dữ liệu hóa đơn bán hàng phù hợp và

hiển thị lên khung bên trên hoặc thông báo không tìm thấy.

- Nút lệnh In ấn:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Có ảnh gợi nhớ nhƣ hình.

Khi nhấn vào nút lệnh sẽ tìm trong cơ sở dữ liệu hóa đơn bán hàng phù hợp và

in hóa đơn ra máy in mặc định hoặc thông báo không tìm thấy.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Có ảnh gợi nhớ nhƣ hình.

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc điều khiển việc in ấn

không. Nếu chọn Yes sẽ đóng form. Nếu chọn No sẽ trở lại form.

164

Công việc 3. Thiết kế báo cáo thống kê bán hàng theo ngƣời bán.

a) Sử dụng Crystal Report thiết kế báo cáo thống kê các hóa đơn bán phân nhóm theo

từng người bán theo mẫu sau

Yêu cầu:

+ Báo cáo đƣợc thiết kế in trên khổ giấy: A4

+ Lề trên: 2cm.

+ Lề dƣới: 2cm.

+ Lề trái: 3cm.

165

+ Lề phải: 2cm

+ Nội dung trên báo cáo đƣợc lấy dữ liệu từ các bảng trong cơ sở dữ liệu

QLYBH.MDF

+ Báo cáo đƣợc phân nhóm theo ngƣời bán hàng. Phải đánh số thứ tự trƣớc mỗi

nhóm và đánh số thứ tự trƣớc mỗi dòng của nhóm, số thứ tự của mỗi dòng sẽ bắt đầu

từ 1 khi bắt đầu một nhóm mới (Đánh lại số thứ tự của dòng theo mỗi nhóm).

+ Ngày tháng năm lấy theo đồng hồ hệ thống.

+ Số trang đánh bắt đầu từ 1 / tổng số trang.

+ Cỡ chữ của các phần trên báo cáo là 13

+ Font chữ: Times New Roman

+ Các nhãn có nội dung là CỬA HÀNG THƢƠNG MẠI ABC, BÁO CÁO

BÁN HÀNG kiểu in đậm.

b) Thiết kế form điều khiển việc xem in báo cáo thống kê bán hàng theo mẫu sau:

Hình 89. Form điều khiển việc in báo cáo bán hàng

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn in báo cáo bán hàng:

166

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form theo chiều ngang

 Mầu chữ: Đen

- Các nhãn in theo, ngƣời bán hàng:

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Có lề trái bằng nhau

- Danh sách ngƣời bán hàng

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Kiểu: DropDown

 Có giá trị đƣợc lọc từ những ngƣời bán hàng trong bảng bán hàng.

 Mặc định lựa chọn này bị khóa không cho ngƣời sử dụng lựa chọn. Chỉ

khi ngƣời sử dụng lựa chọn in theo từng ngƣời bán hàng thì lựa chọn này

mới đƣợc bật lên.

- Lựa chọn tất cả ngƣời bán hàng, từng ngƣời bán hàng:

 Là dạng radio button.

 Mặc định lựa chọn tất cả ngƣời bán hàng.

 Font: Microsoft Sans Serif, 9pt.

 Mầu chữ: Đen

 Khi lựa chọn tất cả hóa đơn thì tự động giá trị ô nhập số hiệu hóa đơn bị

xóa và đồng thời khóa ô nhập số hiệu hóa đơn

 Khi lựa chọn từng hóa đơn thì mở khóa ô nhập số hiệu hóa đơn cho phép

ngƣời sử dụng nhập giá trị vào.

- Nút lệnh Xem trƣớc

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: X

167

Khi nhấn vào nút lệnh xem trƣớc, chƣơng trình sẽ căn cứ vào lựa chọn của

ngƣời sử dụng để hiển thị báo cáo bán hàng của tất cả các ngƣời bán hàng hoặc từng

ngƣời bán hàng tƣơng ứng tại một form mới.

- Nút lệnh In ấn

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: I

Khi nhấn vào nút lệnh in ấn, chƣơng trình sẽ căn cứ vào lựa chọn của ngƣời sử

dụng để in báo cáo bán hàng của tất cả các ngƣời bán hàng hoặc từng ngƣời bán hàng

tƣơng ứng ra máy in mặc định.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc điều khiển việc in ấn

không. Nếu chọn Yes sẽ đóng form. Nếu chọn No sẽ trở lại form.

3.2.2 Hướng dẫn thực hiện

Công việc 1. Sử dụng Crystal Report thiết kế giấy mời khách hàng theo mẫu

a) Thiết kế giấy mời bằng Crystal Report

1. Phân tích công việc

Theo yêu cầu trên thì toàn bộ phần nội dung giấy mời phải đƣợc thiết kế trong

phần Details. Trong đó, mẫu của giấy mời là:

168

Hình 90. Mẫu giấy mời khách hàng

Trong đó:

- CỬA HÀNG THƢƠNG MẠI ABC;

- GIẤY MỜI;

- Họ tên khách hàng:

- Địa chỉ:;

- Điện thoại:;

- Trân trọng kính mời quý khách tới tham dự hội nghị khách hàng hàng năm

của cửa hàng thƣơng mại ABC

Thời gian: vào hồi ......giờ, ngày ...... tháng ........ năm ..........................

Địa điểm: Tại......................................................................,

Sự hiện diện của quý khách là niềm vinh hạnh của cửa hàng chúng tôi.

Xin trân trọng cảm ơn !;

- Nam Đinh, ngày;

- GIÁM ĐỐC CÔNG TY.

Mỗi nội dung này là một đối tƣợng văn bản của giấy mời.

Còn phần thể hiện của họ tên, địa chỉ, điện thoại cụ thể của mỗi khách hàng nhƣ

Phan Đức Thiện, Nam Định, 0918875005 đƣợc lấy từ nội dung của các bản ghi trong

bảng khách hàng. Ngày in giấy mời là ngày hiện thời lấy theo đồng hồ máy.

169

2. Hướng dẫn thao tác

Để thiết kế giấy mời khách hàng theo mẫu bằng Crystal Report thực hiện các

bƣớc sau:

1. Chọn Project đang xây dựng từ cửa sổ Solution Explorer.

2. Trên thanh menu chọn Project / Add New Item. Xuất hiện cửa sổ Add New Item.

Hình 91. Cửa sổ Add New Item

3. Chọn Reporting ở khung bên trái của cửa sổ / chọn Crystal Reports / nhập tên giấy

mời vào ô textbox Name là GiayMoiKhachHang.rpt. Sau đó nhấn nút Add. Xuất hiện

cửa sổ Crystal Reports Gallery.

170

Hình 92. Cửa sổ Crystal Reports Gallery

Chọn As a Blank Report / nhấn nút OK. Xuất hiện cửa sổ thiết kế báo cáo gồm 5

section:

Hình 93. Giao diện thiết kế báo cáo bằng Crystal Report

Do đó, để thiết kế cách trình bày giấy mời này thực hiện:

- Kéo đối tƣợng Text Object từ cửa sổ Toolbox vào phần Details (đối tƣợng

này dùng để trình bày văn bản sẽ hiển thị trên báo cáo). Kích chuột vào đối tƣợng và

nhập nội dung CÔNG TY TNHH THƢƠNG MẠI ABC. Nháy phải chuột vào đối

tƣợng Text Object rồi chọn Properties để thiết lập các thuộc tính cho đối tƣợng Text

Object nhƣ sau:

171

+ Font: Times New Roman, 11,25pt, style=Bold.

+ Text align: Center.

+ Điều chỉnh đối tƣợng vào vị trí mong muốn.

- Kéo tiếp đối tƣợng Text Object từ cửa sổ Toolbox vào phần Details vào vị trí

theo yêu cầu. Kích chuột vào đối tƣợng và nhập nội dung là GIẤY MỜI. Nháy phải

chuột vào đối tƣợng Text Object rồi chọn Properties để thiết lập các thuộc tính cho đối

tƣợng Text Object nhƣ sau:

+ Font: Times New Roman, 14pt, style=Bold.

+ Text align: Center.

- Kéo tiếp đối tƣợng Text Object từ cửa sổ Toolbox vào phần Details vào vị trí

theo yêu cầu. Kích chuột vào đối tƣợng và nhập nội dung là Họ tên khách hàng. Nháy

phải chuột vào đối tƣợng Text Object rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Text Object nhƣ sau:

+ Font: Times New Roman, 14pt.

+ Text align: Left.

- Kéo tiếp đối tƣợng Text Object từ cửa sổ Toolbox vào phần Details vào vị trí

theo yêu cầu. Kích chuột vào đối tƣợng và nhập nội dung là Địa chỉ. Nháy phải chuột

vào đối tƣợng Text Object rồi chọn Properties để thiết lập các thuộc tính cho đối tƣợng

Text Object nhƣ sau:

+ Font: Times New Roman, 14pt.

+ Text align: Left.

- Kéo tiếp đối tƣợng Text Object từ cửa sổ Toolbox vào phần Details vào vị trí

theo yêu cầu. Kích chuột vào đối tƣợng và nhập nội dung là Điện thoại. Nháy phải

chuột vào đối tƣợng Text Object rồi chọn Properties để thiết lập các thuộc tính cho đối

tƣợng Text Object nhƣ sau:

+ Font: Times New Roman, 14pt.

+ Text align: Left.

- Kéo tiếp đối tƣợng Text Object từ cửa sổ Toolbox vào phần Details vào vị trí

theo yêu cầu. Kích chuột vào đối tƣợng và nhập nội dung là Trân trọng kính mời …

cảm ơn! nhƣ mẫu. Nháy phải chuột vào đối tƣợng Text Object rồi chọn Properties để

thiết lập các thuộc tính cho đối tƣợng Text Object nhƣ sau:

172

+ Font: Times New Roman, 14pt.

+ Text align: Left.

- Kéo tiếp đối tƣợng Text Object từ cửa sổ Toolbox vào phần Details vào vị trí

theo yêu cầu. Kích chuột vào đối tƣợng và nhập nội dung “Nam Định, ngày ”. Nháy

phải chuột vào đối tƣợng Text Object rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Text Object nhƣ sau:

+ Font: Times New Roman, 14pt, style Italic.

+ Text align: Right.

- Kéo tiếp đối tƣợng Text Object từ cửa sổ Toolbox vào phần Details vào vị trí

theo yêu cầu. Kích chuột vào đối tƣợng và nhập nội dung là QUẢN LÝ CỬA HÀNG.

Nháy phải chuột vào đối tƣợng Text Object rồi chọn Properties để thiết lập các thuộc

tính cho đối tƣợng Text Object nhƣ sau:

+ Font: Times New Roman, 14pt.

+ Text align: Center

Chú ý: Để thực hiện việc giãn dòng văn bản trong đối tƣợng Text Object phải

thực hiện các thao tác sau:

Nháy phải chuột vào đối tƣợng Text Object cần giãn dòng. Chọn Format

Object. Xuất hiện cửa sổ Format Editor

173

Hình 94. Cửa sổ Format Editor

Chọn tab Paragraph. Trong lựa chọn Spacing chọn chế độ giãn dòng trong

combobox của mục Line Spacing và thay đổi giá trị theo mong muốn và nhấn nút OK.

Bây giờ, tiếp tục tiến hành kết nối với cơ sở dữ liệu nguồn là bảng

tblKhachHang để lấy các thông tin họ tên, điện thoại, địa chỉ bằng các thao tác sau:

Từ cửa sổ Field Explorer ở khung bên trái của màn hình thiết kế, nháy phải

chuột vào Database Fields / Database Expert. Xuất hiện cửa sổ Database Expert.

174

Hình 95. Cửa sổ Databse Expert

Trong khung Available Data Soures/ Chọn My Connections / Chọn kết

nối đã tạo lập ở bài 1 / Chọn tiếp đối tƣợng QLYBH / Chọn dbo / Chọn bảng

tblKhachHang và nhấn vào nút mũi tên sang phải để đƣa dữ liệu của bảng sang khung

Selected Tables / Nhấn nút OK.

Kéo trƣờng HoTen vào vị trí mong muốn bên cạnh đối tƣợng có nội dung

“Kính gửi:”

Thực hiện thao tác tƣơng tự kéo trƣờng DiaChi, DienThoai vào vị trí mong

muốn bên cạnh đối tƣợng có nội dung “Địa chỉ: ”, “Điện thoại: ”.

Nháy phải chuột vào màn hình thiết kế báo cáo. Chọn Inserts / Special Fields /

Print Date và kéo vào vị trí mong muốn bên cạnh đối tƣợng có nội dung “Nam Định,

ngày ”.

Để thiết lập dạng hiển thị ngày dạng DD/MM/YYYY thực hiện thao tác sau:

Nháy phải chuột vào đối tƣợng Print Date, chọn Format Object xuất hiện cửa sổ

Format Editor.

175

Hình 96. Cửa sổ Format Editor

Chọn tab Date / chọn Customize, xuất hiện cửa sổ Customize Style

Hình 97. Cửa sổ Custom Style

Và chọn kiểu hiển thị mong muốn rồi nhấn nút OK.

176

Chú ý: Để xem thử báo cáo vừa tạo, nhấn chuột vào nút Main Report Preview

để xem

Chỉnh sửa lại Report nếu cần. Kết thúc việc thiết kế báo cáo phải lƣu lại kết

quả.

3. Kết quả thiết kế:

Hình 98. Kết quả thiết kế giấy mời khách hàng hoàn chỉnh

177

4. Kết quả thực thi

Hình 99. Kết quả thực thi in giấy mời khách hàng

b) Thiết kế form điều khiển việc in giấy mời khách hàng theo mẫu

Hình 100. Form điều khiển việc in giấy mời khách hàng

1. Phân tích yêu cầu.

Theo mẫu trên thì phải có một form chứa:

- Các đối tƣợng có nội dung “IN GIẤY MỜI KHÁCH HÀNG”, “In theo”, Mã

khách hàng” là các Label.

- Các đối tƣợng “Tất cả khách hàng”, “Từng khách hàng” là các Radio Button

- Ô nhập mã khách hàng là một Textbox

178

- Các nút “Xem trƣớc”, “In ấn”, “Kết thúc” là các Button

2. Hướng dẫn thao tác

Để thiết kế form theo mẫu trên cần tiến hành các thao tác sau:

Trên thanh menu, chọn Project/Add New Item.

Xuất hiện cửa sổ Add New Item. Chọn loại Windows Form, sau đó nhập tên

frmInGiayMoiKhachHang vào ô Name rồi nhấn nút Add.

- Kéo điều khiển Label từ cửa sổ Toolbox vào form vào vị trí theo yêu cầu.

Nháy phải chuột vào đối tƣợng Label rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Label nhƣ sau:

+ Text: THÔNG TIN KHÁCH HÀNG

+ Font name: Microsoft Sans Serif

+ Font size: 18

+ Font bold: True

+ Các giá trị khác để mặc định

+ Trên menu chọn Format/Center in form/Horizontally để căn giữa.

- Kéo điều khiển Label từ cửa sổ Toolbox vào form vào vị trí theo yêu cầu.

Nháy phải chuột vào đối tƣợng Label rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Label nhƣ sau:

+ Font name: Microsoft Sans Serif

+ Font size: 9

+ Text: In theo

Thực hiện thao tác tƣơng tự để tạo đối tƣợng có nội dung “Mã khách hàng”

- Kéo điều khiển Textbox từ cửa sổ Toolbox vào form vào vị trí theo yêu cầu.

Nháy phải chuột vào đối tƣợng Textbox rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Textbox nhƣ sau:

+ Font name: Microsoft Sans Serif.

+ Font size: 9.

+ Enable: False.

- Kéo điều khiển Radio Button từ cửa sổ Toolbox vào form vào vị trí theo yêu

cầu. Nháy phải chuột vào đối tƣợng Radio Button rồi chọn Properties để thiết lập các

thuộc tính cho đối tƣợng Radio Button nhƣ sau:

+ Name: RadioButtonTatCaKH.

179

+ Font name: Microsoft Sans Serif.

+ Font size: 9.

+ Text: Tất cả khách hàng.

+ Checked: True.

- Kéo điều khiển Radio Button từ cửa sổ Toolbox vào form vào vị trí theo yêu

cầu. Nháy phải chuột vào đối tƣợng Radio Button rồi chọn Properties để thiết lập các

thuộc tính cho đối tƣợng Radio Button nhƣ sau:

+ Name: RadioButtonTungKH.

+ Font name: Microsoft Sans Serif.

+ Font size: 9.

+ Text: Từng khách hàng.

+ Checked: True.

- Kéo điều khiển Button từ cửa sổ Toolbox vào form vào vị trí theo yêu cầu.

Nháy phải chuột vào đối tƣợng Button rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Button nhƣ sau:

+ Name: ButtonXemTruoc.

+ Font name: Microsoft Sans Serif.

+ Font size: 9.

+ Text: Xem trƣớc.

- Kéo điều khiển Button từ cửa sổ Toolbox vào form vào vị trí theo yêu cầu.

Nháy phải chuột vào đối tƣợng Button rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Button nhƣ sau:

+ Name: ButtonInAn.

+ Font name: Microsoft Sans Serif.

+ Font size: 9.

+ Text: In ấn.

- Kéo điều khiển Button từ cửa sổ Toolbox vào form vào vị trí theo yêu cầu.

Nháy phải chuột vào đối tƣợng Button rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Button nhƣ sau:

+ Name: ButtonKetThuc.

+ Font name: Microsoft Sans Serif.

180

+ Font size: 9.

+ Text: Kết thúc.

Viết mã lệnh cho các điều khiển nhƣ sau:

Lƣu ý: Để thao tác với Crystal Report ngƣời lập trình phải đƣa

vào các thƣ viện bằng đoạn mã sau:

Imports CrystalDecisions.CrystalReports.Engine

Mã lệnh khi click vào điều khiển RadioButtonTatCaKH

Private Sub RadioButtonTatCaKH_CheckedChanged(ByVal

sender As System.Object, ByVal e As System.EventArgs) Handles

RadioButtonTatCaKH.CheckedChanged

'Bật tắt ô nhập mã khách hàng

TextBoxMaKH.Enabled = Not RadioButtonTatCaKH.Checked

End Sub

Mã lệnh khi click vào điều khiển RadioButtonTatCaKH

Private Sub RadioButtonTungKH_CheckedChanged(ByVal sender

As System.Object, ByVal e As System.EventArgs) Handles

RadioButtonTungKH.CheckedChanged

'Bật tắt ô nhập mã khách hàng

TextBoxMaKH.Enabled = RadioButtonTungKH.Checked

End Sub

Mã lệnh để hiển thị họ tên khách hàng khi nhập giá trị mã khách hàng vào

textbox mã khách hàng

Private Sub TextBoxMaKH_TextChanged(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

TextBoxMaKH.TextChanged

'Khai báo đối tượng và biến cần sử dụng

181

Dim sqlTimKiem As String

'Thiết lập câu lệnh tìm kiếm theo mã khác hàng

sqlTimKiem = "SELECT * FROM tblKhachHang WHERE

[MaKH]=" & TextBoxMaKH.Text

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

'Nếu tồn tại mã khách hàng

If ds.Tables(0).Rows.Count > 0 Then

TextBoxTenKH.Text =

ds.Tables(0).Rows(0).Item("HoTen").ToString()

Else

'Thông báo

MessageBox.Show("Mã khách hàng không đúng",

"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)

TextBoxMaKH.Focus()

End If

cn.Close()

End Using

End Using

End Sub

Mã lệnh khi click vào nút “Kết thúc”

Private Sub ButtonKetThuc_Click(ByVal sender As System.Object,

182

ByVal e As System.EventArgs) Handles ButtonKetThuc.Click

'Đóng form

Me.Close()

End Sub

Mã lệnh khi click vào nút “Xem trƣớc”

Private Sub ButtonXemTruoc_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

ButtonXemTruoc.Click

'Khai báo một form kiểu frmXemTruocGiayMoiKhachHang

Dim frm As New frmXemTruocGiayMoiKhachHang

'Hiển thị form frmXemTruocGiayMoiKhachHang ở trên cùng

các cửa sổ khác

frm.ShowDialog()

End Sub

Mã lệnh khi click vào nút “In ấn”

Private Sub ButtonInAn_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonInAn.Click

If RadioButtonTatCaKH.Checked Then

'Chuyển trạng thái con trỏ

Me.Cursor = Cursors.WaitCursor

'Tạm khóa nút In ấn

ButtonInAn.Enabled = False

'In tất cả các khách hàng

'Khai báo một đối tượng Crystal Report

Dim myReport As New ReportDocument()

'Tải báo cáo từ đường dẫn chỉ định

myReport.Load(Application.StartupPath.ToString() &

"\GiayMoiKhachHang.rpt")

183

'Thiết lập tên máy in cần in (nếu cần)

myReport.PrintOptions.PrinterName = "Foxit Reader PDF

Printer"

'In giấy mời ra máy in chỉ định

myReport.PrintToPrinter(1, True, 0, 0)

'Trả trạng thái con trỏ về mặc định

Me.Cursor = Cursors.Default

'Tạm khóa nút In ấn

ButtonInAn.Enabled = True

Else

If RadioButtonTungKH.Checked Then

'Kiểm tra mã khách hàng có tồn tại không

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Thiết lập câu lệnh tìm kiếm theo mã khác hàng

sqlTimKiem = "SELECT * FROM tblKhachHang WHERE

[MaKH]=" & TextBoxMaKH.Text

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

'Nếu tồn tại mã khách hàng

If ds.Tables(0).Rows.Count > 0 Then

'Chuyển trạng thái con trỏ

Me.Cursor = Cursors.WaitCursor

'Tạm khóa nút In ấn

184

ButtonInAn.Enabled = False

'In giấy mời ra máy in

'Khai báo một đối tượng Crystal Report

Dim myReport As New ReportDocument()

'Tải báo cáo từ đường dẫn chỉ định

myReport.Load(Application.StartupPath.ToString() &

"\GiayMoiKhachHang.rpt")

'Thiết lập nguồn dữ liêu mới cho giấy mời

myReport.SetDataSource(ds.Tables(0).DefaultView)

'Thiết lập tên máy in cần in (nếu cần)

myReport.PrintOptions.PrinterName = "Foxit

Reader PDF Printer"

'In giấy mời ra máy in chỉ định

myReport.PrintToPrinter(1, True, 0, 0)

'Trả trạng thái con trỏ về mặc định

Me.Cursor = Cursors.Default

'Tạm khóa nút In ấn

ButtonInAn.Enabled = True

Else

'Thông báo

MessageBox.Show("Mã khách hàng không

đúng", "Thông báo", MessageBoxButtons.OK,

MessageBoxIcon.Error)

TextBoxMaKH.Focus()

End If

cn.Close()

End Using

End Using

End If

185

End If

End Sub

3. Kết quả thiết kế:

Hình 101. Kết quả thiết kế form in giấy mời khách hàng

4. Kết quả thực thi:

Sau khi nhấn vào nút “In ấn” với lựa chọn theo từng khách hàng.

Hình 102. Kết quả sau khi thực hiện chức năng in giấy mời khách hàng.

186

Công việc 2. Thiết kế hóa đơn bán hàng

a) Thiết kế hóa đơn bán hàng theo mẫu

1. Phân tích công việc:

Theo yêu cầu trên ta nhận thấy:

Phần thể hiện thông tin về khách hàng, số hóa đơn và các tiêu đề chỉ xuất hiện

một lần ở đầu báo cáo nên phần này đƣa vào phần

Phần thông tin về các mặt hàng đã mua xuất hiện nhiều lần nên phần này sẽ

phải thiết kế trong phần Details

2. Thao tác thực hiện:

Thực hiện các thao tác tƣơng tự nhƣ trong phần hƣớng dẫn thao tác ở công việc

1 để tạo mới một báo cáo có tên HoaDonBanHang.rpt

Nhấn phải chuột vào phần Report Header chọn Insert / Text Object và nhập giá

trị “CỬA HÀNG THƢƠNG MẠI ABC” cho điều khiển này. Thao tác tƣơng tự để tạo

đối tƣợng Text Object có nội dung “HÓA ĐƠN BÁN HÀNG”. Điều chỉnh vị trí và

font chữ của đối tƣợng Text Object này cho phù hợp.

Nhấn phải chuột vào phần Page Footer chọn Insert / Text Object và nhập nội

dung “Trang / ” để tạo phần thống kê số trang cho báo cáo. Sau đó, nhấn phải chuột

vào phần Page Footer của báo cáo chọn Insert / Special Field / Page Number và kéo

vào trƣớc dấu / để hiển thị giá trị trang hiện tại. Nhấn phải chuột vào phần Page Footer

của báo cáo chọn Insert / Special Field / Total Page Count và kéo vào sau dấu / để hiển

thị giá trị tổng số trang của báo cáo.

Thực hiện kết nối dữ liệu cho báo cáo.

Tại cửa sổ Field Explorer, nhấn phải chuột vào Database Fields / Chọn

Database Expert. Xuất hiện cửa sổ Database Expert, tiến hành kết nối tới nguồn dữ

liệu và chọn thủ tục hiển thị dữ liệu cho báo cáo (thủ tục này viết trong phần store

procedure của cơ sở dữ liệu SQL Server) giống nhƣ phần hƣớng dẫn ở trên.

Mã lệnh thủ tục HoaDonBanHang viết trong SQL SERVER

USE [QLYBH]

GO

/****** Object: StoredProcedure [dbo].[HoaDonBanHang]

187

Script Date: 12/07/2014 22:35:47 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

--

=============================================

-- Author:

-- Create date:

-- Description:

--

=============================================

CREATE PROCEDURE [dbo].[HoaDonBanHang]

-- Add the parameters for the stored procedure here

@SoHieuHD int

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result

sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

-- Insert statements for procedure here

SELECT tblBanHang.*, tblKhachHang.HoTen,

tblKhachHang.DienThoai, tblKhachHang.DiaChi,

tblMatHang.TenMatHang, tblMatHang.DVT,

tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia,

tblChiTietHoaDon.SoLuong * tblChiTietHoaDon.DonGia

AS ThanhTien FROM tblBanHang, tblKhachHang,

tblMatHang, tblChiTietHoaDon WHERE tblBanHang.MaKH

= tblKhachHang.MaKH AND tblBanHang.SoHieuHD =

188

tblChiTietHoaDon.SoHieuHD AND tblMatHang.MaMH =

tblChiTietHoaDon.MaMH AND tblBanHang.SoHieuHD =

@SoHieuHD

RETURN

END

Trong phần cuối của hóa đơn bán hàng có hiển thị tổng tiền khách hàng phải

trả. Để tính toán và hiển thị đƣợc giá trị tổng tiền này thực hiện nhƣ sau:

Nhấn phải chuột vào Formula Fields ở cửa sổ Field Explorer chọn New. Xuất

hiện cửa sổ Formula Name. Nhập “tongtien” vào ô Name và nhấn OK.

Hình 103. Cửa sổ Formula Name

Xuất hiện cửa sổ Formula Workshop.

Hình 104. Cửa sổ Formula Workshop

Nhập công thức tính tổng tiền vào khung soạn thảo công thức:

189

Sum ({HoaDonBanHang;1.ThanhTien})

Nhấn “Save and close” để lƣu biến hiển thị tổng tiền của hóa đơn.

Tiếp theo, tạo các đối tƣợng Text Object có nội dung “Khách hàng, Địa chỉ,

Điện thoại, Số hóa đơn” ở phần Report Header. Điều chỉnh kích thƣớc, font chữ, mầu

chữ và vị trí các đối tƣợng này cho phù hợp với yêu cầu của báo cáo.

Từ cửa sổ Field Explorer kéo các trƣờng TenMatHang, DVT, SoLuong,

DonGia, ThanhTien vào phần Details.

Nháy phải chuột vào phần Details chọn Insert / Special Field / Record Number

và kéo vào vị trí trƣớc trƣờng TenMatHang ở phần Details để hiển thị số thứ tự. Trong

Crystal Report có nhiều trƣờng đặc biệt, đƣợc xây dựng sẵn nhằm hiển thị các thông

tin liên quan đến báo cáo đƣợc trình bày ở bảng bên dƣới.

Bảng 6. Danh sách các trường đặc biệt trong Crystal Report.

Special Field Mô tả

DataDate Ngày báo cáo đƣợc sửa lần cuối.

DataTime Giờ báo cáo đƣợc sửa lần cuối.

FileAuthor Các tệp tin tác giả đƣợc lƣu trữ cùng với báo cáo

FileCreationDate Ngày tạo báo cáo.

Filename Tên báo cáo

GroupNumber Số thứ tự của nhóm trong báo cáo

Công thức lựa chọn nhóm trong báo cáo.

GroupSelection

ModificationDate Ngày báo cáo đƣợc sửa gần nhất.

ModificationTime Giờ báo cáo đƣợc sửa gần nhất.

PageNofM Hiển thị giá trị “Page số thứ tự của trang of tổng số

190

trang”

PageNumber Số thứ tự trang hiện tại.

PrintDate Ngày in báo cáo.

PrintTime Giờ in báo cáo.

RecordNumber Số thứ tự bản ghi.

RecordSelection Công thức lựa chọn bản ghi.

ReportComments Các chú thích đƣợc lƣu trữ cùng với báo cáo.

ReportTitle Tiêu đề của báo cáo.

TotalPageCount Tổng số trang của báo cáo.

Sau khi chèn trƣờng RecordNumber vào báo cáo, tiến hành thay đổi nội dung

tiêu đề các trƣờng cần hiển thị cho phù hợp với yêu cầu của báo cáo.

Nháy phải chuột vào biến tongtien ở phần Fomula Field chọn Insert to Report

và kéo vào phần Report Footer.

Tạo một đối tƣợng Text Object tại phần Page Footer. Nhập nội dung cho đối

tƣợng Text Object này là “Trang ”. Nháy phải chuột vào phần Page Footer chọn Insert

/ Special Field / Page Number, kéo vào trong nội dung của đối tƣợng Text Object vừa

tạo.

Nháy phải chuột vào phần Report Header chọn Insert / Box để kẻ khung, Insert

/ Line để tạo phân cách cho các trƣờng và các bản ghi của phần chi tiết hóa đơn.

Chuyển sang cửa sổ Main Report Preview để xem kết quả và hiệu chỉnh nếu

cần.

191

3. Kết quả thiết kế:

Hình 105. Kết quả thiết kế hóa đơn bán hàng bằng Crystal Report

4. Kết quả thực thi báo cáo:

Hình 106. Kết quả xem trước hóa đơn bán hàng

192

b) Thiết kế form điều khiển việc in ấn hóa đơn bán hàng theo mẫu

Hình 107. Form in hóa đơn bảng kê bán hàng

1. Phân tích yêu cầu:

Theo mẫu trên thì phải có một form chứa:

- Các đối tƣợng có nội dung “IN HÓA ĐƠN BẢNG KÊ BÁN HÀNG”, “Lựa

chọn in”, “Từ ngày”, “Đến ngày”, “In theo”, “Số hiệu hóa đơn” là các Label.

- Các đối tƣợng “Lựa chọn thời gian cho bảng kê”, “Lựa chọn hóa đơn” là các

GroupBox

- Ô nhập số hiệu hóa đơn là một Textbox

- Các lựa chọn “Tất cả hóa đơn”, “Từng hóa đơn” là các Radio Button

- Các lựa chọn ngày tháng là điều khiển DateTimePicker

- Lựa chọn in là một điều khiển ComboBox

- Các nút “Xem trƣớc”, “In ấn”, “Kết thúc” là các Button

2. Hướng dẫn thao tác

Để thiết kế form theo mẫu trên cần tiến hành các thao tác sau:

Trên thanh menu, chọn Project/Add New Item.

193

Xuất hiện cửa sổ Add New Item. Chọn loại Windows Form, sau đó nhập tên

frmInGiayHoaDonBanHang vào ô Name rồi nhấn nút Add.

- Kéo điều khiển Label từ cửa sổ Toolbox vào form vào vị trí theo yêu cầu.

Nháy phải chuột vào đối tƣợng Label rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Label nhƣ sau:

+ Text: IN HÓA ĐƠN BẢNG KÊ BÁN HÀNG

+ Font name: Microsoft Sans Serif

+ Font size: 18

+ Font bold: True

+ Các giá trị khác để mặc định

+ Trên menu chọn Format/Center in form/Horizontally để căn giữa.

- Kéo điều khiển Label từ cửa sổ Toolbox vào form vào vị trí theo yêu cầu.

Nháy phải chuột vào đối tƣợng Label rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Label nhƣ sau:

+ Font name: Microsoft Sans Serif

+ Font size: 9

+ Text: Lựa chọn in

Thực hiện thao tác tƣơng tự để tạo các label còn lại

- Kéo điều khiển ComboBox từ cửa sổ Toolbox vào form vào vị trí theo yêu

cầu. Nháy phải chuột vào đối tƣợng ComboBox rồi chọn Properties để thiết lập các

thuộc tính cho đối tƣợng ComboBox nhƣ sau:

+ Font name: Microsoft Sans Serif

+ Font size: 9

+ Items: (Collection), nhập thêm các giá trị “Bảng kê bán hàng”, “Hóa đơn bán

hàng” cho điều khiển này.

+ DropDownStyle: DropDownList

- Kéo điều khiển GroupBox từ cửa sổ Toolbox vào form vào vị trí theo yêu

cầu. Nháy phải chuột vào đối tƣợng GroupBox rồi chọn Properties để thiết lập các

thuộc tính cho đối tƣợng GroupBox nhƣ sau:

+ Name: GroupBoxChonThoiGian

+ Font name: Microsoft Sans Serif.

194

+ Font size: 9.

+ Text: Lựa chọn thời gian cho bảng kê.

+ Các giá trị khác để mặc định.

+ Enable: False

Thực hiện tƣơng tự với GroupBox lựa chọn hóa đơn.

- Kéo điều khiển DateTimePicker từ cửa sổ Toolbox vào form vào vị trí theo

yêu cầu. Nháy phải chuột vào đối tƣợng DateTimePicker rồi chọn Properties để thiết

lập các thuộc tính cho đối tƣợng DateTimePicker nhƣ sau:

+ Font name: Microsoft Sans Serif.

+ Font size: 9.

+ Name: DateTimePickerTuNgay.

+ Các giá trị khác để mặc định.

Thực hiện tƣơng tự với đối tƣợng DateTimePickerDenNgay.

- Kéo điều khiển Radio Button từ cửa sổ Toolbox vào form vào vị trí theo yêu

cầu. Nháy phải chuột vào đối tƣợng Radio Button rồi chọn Properties để thiết lập các

thuộc tính cho đối tƣợng Radio Button nhƣ sau:

+ Name: RadioButtonTungHD.

+ Font name: Microsoft Sans Serif.

+ Font size: 9.

+ Các giá trị khác để mặc định.

Thực hiện tƣơng tự với đối tƣợng RadioButtonTatCaHD. Đối tƣợng

RadioButtonTatCaHD bổ xung thêm thuộc tính Checked là True.

- Kéo điều khiển TextBox từ cửa sổ Toolbox vào form vào vị trí theo yêu cầu.

Nháy phải chuột vào đối tƣợng TextBox rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng TextBox nhƣ sau:

+ Name: TextBoxSoHieuHD.

+ Font name: Microsoft Sans Serif.

+ Font size: 9.

+ Enable: False.

+ Các giá trị khác để mặc định.

195

- Kéo điều khiển Button từ cửa sổ Toolbox vào form vào vị trí theo yêu cầu.

Nháy phải chuột vào đối tƣợng Button rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Button nhƣ sau:

+ Name: ButtonXemTruoc.

+ Font name: Microsoft Sans Serif.

+ Font size: 9.

+ Các giá trị khác để mặc định.

Thực hiện tƣơng tự với đối tƣợng ButtonInAn, ButtonKetThuc.

Viết mã lệnh cho các điều khiển trên form để thực hiện thao tác xem in hóa đơn

bán hàng nhƣ sau:

Mã lệnh khi thay đổi lựa chọn in:

Private Sub ComboBoxLuaChonIn_SelectedIndexChanged(ByVal

sender As System.Object, ByVal e As System.EventArgs) Handles

ComboBoxLuaChonIn.SelectedIndexChanged

If ComboBoxLuaChonIn.SelectedIndex = 0 Then

'Cho phép thao tác với GroupBox chọn thời gian

GroupBoxChonThoiGian.Enabled = True

GroupBoxLuaChonHoaDon.Enabled = False

End If

If ComboBoxLuaChonIn.SelectedIndex = 1 Then

'Khóa thao tác với GroupBox chọn thời gian

GroupBoxChonThoiGian.Enabled = False

GroupBoxLuaChonHoaDon.Enabled = True

End If

End Sub

Mã lệnh khi thay đổi lựa chọn tại RadioButtonTatCa:

Private Sub RadioButtonTatCa_CheckedChanged(ByVal sender

As System.Object, ByVal e As System.EventArgs) Handles

RadioButtonTatCa.CheckedChanged

196

Me.TextBoxSoHoaDon.Enabled = Not

RadioButtonTatCa.Checked

End Sub

Mã lệnh khi thay đổi lựa chọn tại RadioButtonTungHD:

Private Sub RadioButtonTungHD_CheckedChanged(ByVal sender

As System.Object, ByVal e As System.EventArgs) Handles

RadioButtonTungHD.CheckedChanged

Me.TextBoxSoHoaDon.Enabled =

RadioButtonTungHD.Checked

End Sub

Mã lệnh khi nhấn vào nút “Xem trƣớc”:

Private Sub ButtonXemTruoc_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

ButtonXemTruoc.Click

Dim frm As frmXemTruocHoaDon

frm.ShowDialog()

End Sub

Mã lệnh khi nhấn vào nút “Kết thúc”:

Private Sub ButtonKetThuc_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ButtonKetThuc.Click

Me.Close()

End Sub

Mã lệnh khi nhấn vào nút “In ấn”:

Private Sub ButtonInAn_Click(ByVal sender As System.Object,

197

ByVal e As System.EventArgs) Handles ButtonInAn.Click

If ComboBoxLuaChonIn.SelectedIndex = 1 Then

'Lựa chọn in hóa đơn bán hàng

If RadioButtonTatCa.Checked Then

'Chuyển trạng thái con trỏ

Me.Cursor = Cursors.WaitCursor

'Tạm khóa nút In ấn

ButtonInAn.Enabled = False

'In tất cả các khách hàng

'Khai báo một đối tượng Crystal Report

Dim myReport As New ReportDocument()

'Tải báo cáo từ đường dẫn chỉ định

myReport.Load(Application.StartupPath.ToString() &

"\HoaDonBanHang.rpt")

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Duyệt qua tất cả các số hóa đơn

sqlTimKiem = "SELECT SoHieuHD FROM tblBanHang"

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

'Nếu tồn tại số hiệu hóa đơn

If ds.Tables(0).Rows.Count > 0 Then

'Duyệt lần lượt qua các bản ghi

For i As Integer = 0 To ds.Tables(0).Rows.Count

198

- 1

'Thiết lập câu lệnh tìm kiếm theo mã khác

hàng

sqlTimKiem = "SELECT tblBanHang.*,

tblKhachHang.HoTen, tblKhachHang.DienThoai,

tblKhachHang.DiaChi, tblMatHang.TenMatHang, tblMatHang.DVT,

tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia,

tblChiTietHoaDon.SoLuong * tblChiTietHoaDon.DonGia AS

ThanhTien FROM tblBanHang, tblKhachHang, tblMatHang,

tblChiTietHoaDon WHERE tblBanHang.MaKH =

tblKhachHang.MaKH AND tblBanHang.SoHieuHD =

tblChiTietHoaDon.SoHieuHD AND tblMatHang.MaMH =

tblChiTietHoaDon.MaMH AND tblBanHang.SoHieuHD = " &

ds.Tables(0).Rows(i).Item("SoHieuHD")

Using cn1 As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd1 As New

SqlCommand(sqlTimKiem, cn)

cmd1.CommandType =

CommandType.Text

If cn.State = ConnectionState.Closed

Then cn.Open()

Dim ds1 As New DataSet()

Dim da1 As New SqlDataAdapter(cmd1)

da1.Fill(ds1)

'Nếu tồn tại số hiệu hóa đơn

If ds1.Tables(0).Rows.Count > 0 Then

'Chuyển trạng thái con trỏ

Me.Cursor = Cursors.WaitCursor

'Tạm khóa nút In ấn

199

ButtonInAn.Enabled = False

'Thiết lập nguồn dữ liêu mới cho giấy

mời

myReport.SetDataSource(ds1.Tables(0).DefaultView)

'Thiết lập tên máy in cần in (nếu cần)

myReport.PrintOptions.PrinterName =

"Foxit Reader PDF Printer"

'In bảng kê bán hàng ra máy in chỉ định

myReport.PrintToPrinter(1, True, 0, 0)

'Trả trạng thái con trỏ về mặc định

Me.Cursor = Cursors.Default

'Tạm khóa nút In ấn

ButtonInAn.Enabled = True

End If

cn.Close()

End Using

End Using

'Thiết lập tên máy in cần in (nếu cần)

myReport.PrintOptions.PrinterName = "Foxit

Reader PDF Printer"

'In giấy mời ra máy in chỉ định

myReport.PrintToPrinter(1, True, 0, 0)

Next

End If

End Using

End Using

'Trả trạng thái con trỏ về mặc định

Me.Cursor = Cursors.Default

'Tạm khóa nút In ấn

200

ButtonInAn.Enabled = True

Else

If RadioButtonTungHD.Checked Then

'Kiểm tra số hiệu hóa đơn có tồn tại không

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Thiết lập câu lệnh tìm kiếm theo mã khác hàng

sqlTimKiem = "SELECT tblBanHang.*,

tblKhachHang.HoTen, tblKhachHang.DienThoai,

tblKhachHang.DiaChi, tblMatHang.TenMatHang, tblMatHang.DVT,

tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia,

tblChiTietHoaDon.SoLuong * tblChiTietHoaDon.DonGia AS

ThanhTien FROM tblBanHang, tblKhachHang, tblMatHang,

tblChiTietHoaDon WHERE tblBanHang.MaKH =

tblKhachHang.MaKH AND tblBanHang.SoHieuHD =

tblChiTietHoaDon.SoHieuHD AND tblMatHang.MaMH =

tblChiTietHoaDon.MaMH AND tblBanHang.SoHieuHD = " &

TextBoxSoHoaDon.Text

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

'Nếu tồn tại số hiệu hóa đơn

If ds.Tables(0).Rows.Count > 0 Then

'Chuyển trạng thái con trỏ

Me.Cursor = Cursors.WaitCursor

201

'Tạm khóa nút In ấn

ButtonInAn.Enabled = False

'In giấy mời ra máy in

'Khai báo một đối tượng Crystal Report

Dim myReport As New ReportDocument()

'Tải báo cáo từ đường dẫn chỉ định

myReport.Load(Application.StartupPath.ToString() &

"\HoaDonBanHang.rpt")

'Thiết lập nguồn dữ liêu mới cho giấy mời

myReport.SetDataSource(ds.Tables(0).DefaultView)

'Thiết lập tên máy in cần in (nếu cần)

myReport.PrintOptions.PrinterName = "Foxit

Reader PDF Printer"

'In giấy mời ra máy in chỉ định

myReport.PrintToPrinter(1, True, 0, 0)

'Trả trạng thái con trỏ về mặc định

Me.Cursor = Cursors.Default

'Tạm khóa nút In ấn

ButtonInAn.Enabled = True

Else

'Thông báo

MessageBox.Show("Số hiệu hóa đơn không

đúng", "Thông báo", MessageBoxButtons.OK,

MessageBoxIcon.Error)

TextBoxSoHoaDon.Focus()

End If

cn.Close()

End Using

End Using

202

End If

End If

End If

If ComboBoxLuaChonIn.SelectedIndex = 0 Then

'Lựa chọn bảng kê bán hàng

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Thiết lập câu lệnh tìm kiếm theo mã khác hàng

sqlTimKiem = "SELECT * FROM tblBanHang WHERE

DateDiff(Day, " & DateTimePickerTuNgay.Text & ", NgayMuaBan)

>= 0 AND DateDiff(Day, NgayMuaBan, " &

DateTimePickerDenNgay.Text & ") >= 0"

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

'Nếu tồn tại số hiệu hóa đơn

If ds.Tables(0).Rows.Count > 0 Then

'Chuyển trạng thái con trỏ

Me.Cursor = Cursors.WaitCursor

'Tạm khóa nút In ấn

ButtonInAn.Enabled = False

'In giấy mời ra máy in

'Khai báo một đối tượng Crystal Report

Dim myReport As New ReportDocument()

'Tải báo cáo từ đường dẫn chỉ định

203

myReport.Load(Application.StartupPath.ToString()

& "\BangKeBanHang.rpt")

'Thiết lập nguồn dữ liêu mới cho giấy mời

myReport.SetDataSource(ds.Tables(0).DefaultView)

'Thiết lập tên máy in cần in (nếu cần)

myReport.PrintOptions.PrinterName = "Foxit

Reader PDF Printer"

'In giấy mời ra máy in chỉ định

myReport.PrintToPrinter(1, True, 0, 0)

'Trả trạng thái con trỏ về mặc định

Me.Cursor = Cursors.Default

'Tạm khóa nút In ấn

ButtonInAn.Enabled = True

End If

cn.Close()

End Using

End Using

End If

End Sub

204

3. Kết quả thiết kế:

Hình 108. Kết quả thiết kế form in hóa đơn, bảng kê bán hàng

4. Kết quả thực thi:

Kết quả sau khi nhấn vào nút in ấn với lựa chọn in từng hóa đơn.

Hình 109. Form điều khiển việc in ấn hóa đơn bán hàng

205

Hình 110. Nội dung hóa đơn bán hàng sau khi được in ra máy in

c) Thiết kế form xem trước hóa đơn theo mẫu

1. Phân tích yêu cầu:

Theo yêu cầu trên cần có một form chứa các điều khiển:

Các nhãn (Label) hiển thị nội dung “Số hóa đơn”, “Xem trƣớc hóa đơn”.

Một đối tƣợng Crytal Report Viewer để hiển thị báo cáo trên form.

Các nút lệnh “Tìm kiếm”, “In ấn”, “Kết thúc” có thêm hình ảnh minh họa.

2. Hướng dẫn thao tác:

Thực hiện các thao tác giống nhƣ phần trên để tạo mới một form có tên

frmXemTruocHoaDonBanHang.

- Kéo điều khiển Label từ cửa sổ Toolbox vào form vào vị trí theo yêu cầu.

Nháy phải chuột vào đối tƣợng Label rồi chọn Properties để thiết lập các thuộc tính

cho đối tƣợng Label nhƣ sau:

+ Text: XEM TRƢỚC HÓA ĐƠN BÁN HÀNG

+ Font name: Microsoft Sans Serif

+ Font size: 18

+ Các giá trị khác để mặc định

+ Trên menu chọn Format/Center in form/Horizontally để căn giữa.

206

- Kéo điều khiển Crystal Report từ cửa sổ Toolbox vào form vào vị trí phù hợp.

Nháp phải chuột vào đối tƣợng chọn Properties để thiết lập các thuộc tính cho đối

tƣợng nhƣ sau:

+ Name: CrystalReportViewer1.

+ Anchor: Top, Bottom, Left, Right.

+ BorderStyle: FixedSingle.

+ DisplayStatusBar: False.

+ DisplayToolbar: False.

+ ToolPanelView: None.

+ Các giá trị khác để mặc định.

- Kéo điều khiển Button từ cửa sổ Toolbox vào form ở vị trí phù hợp. Nháy

phải chuột vào đối tƣợng chọn Properties để thiết lập các thuộc tính cho đối tƣợng nhƣ

sau:

+ Name: ButtonDauTien.

+ Font name: Microsoft Sans Serif

+ Font size: 9pt

+ Các giá trị khác để mặc định.

Làm thao tác tƣơng tự để tạo các nút <, >, >>.

- Tiếp tục, kéo điều khiển Button từ cửa sổ Toolbox vào form ở vị trí phù hợp.

Nháy phải chuột vào đối tƣợng chọn Properties để thiết lập các thuộc tính cho đối

tƣợng nhƣ sau:

+ Name: ButtonTimKiem.

+ Font name: Microsoft Sans Serif

+ Font size: 9pt.

+ ImageAlign: MiddleLeft.

+ Text: &Tìm kiếm.

+ TextAlign: MiddleRight.

+ Nhấn biểu tƣợng bên phải thuộc tính Image để lựa chọn hình ảnh cho nút

lệnh. Xuất hiện cửa sổ Select Resource.

207

Hình 111. Cửa sổ Select Resource.

Nhấn vào nút Import để lựa chọn hình ành phù hợp cho nút lệnh. Nhấn OK để

thêm ảnh vào nút lệnh.

+ Các giá trị khác để mặc định.

Thao tác tƣơng tự với các nút lệnh “In ấn”, “Kết thúc”.

Tiến hành viết mã lệnh cho các nút nhƣ sau:

Mã lệnh khi nhấn vào nút “<<”:

Private Sub ButtonDauTien_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDauTien.Click 'Chuyển đến trang đầu tiên của hóa đơn. CrystalReportViewer1.ShowFirstPage() End Sub

Mã lệnh khi nhấn vào nút “<”:

Private Sub ButtonTruoc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonTruoc.Click 'Chuyển về phía trước 1 trang. CrystalReportViewer1.ShowPreviousPage() End Sub

Mã lệnh khi nhấn vào nút “>”:

Private Sub ButtonSau_Click(ByVal sender As System.Object,

208

ByVal e As System.EventArgs) Handles ButtonSau.Click 'Chuyển về sau một trang. CrystalReportViewer1.ShowNextPage() End Sub

Mã lệnh khi nhấn vào nút “>>”:

Private Sub ButtonCuoiCung_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCuoiCung.Click 'Chuyển đến trang cuối cùng của hóa đơn CrystalReportViewer1.ShowLastPage() End Sub

Mã lệnh khi nhấn vào nút “Kết thúc”:

Private Sub ButtonKetThuc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonKetThuc.Click If MessageBox.Show("Bạn có chắc chắn muốn đóng form hiện tại.", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then Me.Close() End If End Sub

Mã lệnh khi nhấn vào nút “Tìm kiếm”:

Private Sub ButtonTimKiem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonTimKiem.Click If String.IsNullOrEmpty(TextBoxSoHoaDon.Text) Then MessageBox.Show("Số hóa đơn không được để trống và phải là số", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error) Me.TextBoxSoHoaDon.Focus() Else 'Khai báo đối tượng và biến cần sử dụng Dim sqlTimKiem As String 'Thiết lập câu lệnh tìm kiếm theo mã khác hàng sqlTimKiem = "SELECT tblBanHang.*, tblKhachHang.HoTen, tblKhachHang.DienThoai, tblKhachHang.DiaChi, tblMatHang.TenMatHang, tblMatHang.DVT, tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia, tblChiTietHoaDon.SoLuong * tblChiTietHoaDon.DonGia AS

209

ThanhTien FROM tblBanHang, tblKhachHang, tblMatHang, tblChiTietHoaDon WHERE tblBanHang.MaKH = tblKhachHang.MaKH AND tblBanHang.SoHieuHD = tblChiTietHoaDon.SoHieuHD AND tblMatHang.MaMH = tblChiTietHoaDon.MaMH AND tblBanHang.SoHieuHD = " & TextBoxSoHoaDon.Text Using cn As New SqlConnection("Data Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User ID=sa;Password=admin123@") Using cmd As New SqlCommand(sqlTimKiem, cn) cmd.CommandType = CommandType.Text cn.Open() Dim ds As New DataSet() Dim da As New SqlDataAdapter(cmd) da.Fill(ds) 'Nếu tồn tại số hiệu hóa đơn If ds.Tables(0).Rows.Count > 0 Then 'Chuyển trạng thái con trỏ Me.Cursor = Cursors.WaitCursor 'Tạm khóa nút In ấn ButtonInAn.Enabled = False ButtonTimKiem.Enabled = False 'In giấy mời ra máy in 'Khai báo một đối tượng Crystal Report Dim myReport As New ReportDocument() 'Tải báo cáo từ đường dẫn chỉ định myReport.Load(Application.StartupPath.ToString() & "\HoaDonBanHang.rpt") 'Thiết lập nguồn dữ liêu mới cho giấy mời myReport.SetDataSource(ds.Tables(0).DefaultView) 'Hiển thị báo cáo CrystalReportViewer1.ReportSource = myReport 'Trả trạng thái con trỏ về mặc định Me.Cursor = Cursors.Default 'Tạm khóa nút In ấn ButtonInAn.Enabled = True ButtonTimKiem.Enabled = True Else 'Thông báo MessageBox.Show("Số hiệu hóa đơn không đúng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error) TextBoxSoHoaDon.Focus() End If cn.Close() End Using

210

End Using End If End Sub

Mã lệnh khi nhấn vào nút “In ấn”:

Private Sub ButtonInAn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonInAn.Click If String.IsNullOrEmpty(TextBoxSoHoaDon.Text) Then MessageBox.Show("Số hóa đơn không được để trống và phải là số", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error) Me.TextBoxSoHoaDon.Focus() Else 'Khai báo đối tượng và biến cần sử dụng Dim sqlTimKiem As String 'Thiết lập câu lệnh tìm kiếm theo mã khác hàng sqlTimKiem = "SELECT tblBanHang.*, tblKhachHang.HoTen, tblKhachHang.DienThoai, tblKhachHang.DiaChi, tblMatHang.TenMatHang, tblMatHang.DVT, tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia, tblChiTietHoaDon.SoLuong * tblChiTietHoaDon.DonGia AS ThanhTien FROM tblBanHang, tblKhachHang, tblMatHang, tblChiTietHoaDon WHERE tblBanHang.MaKH = tblKhachHang.MaKH AND tblBanHang.SoHieuHD = tblChiTietHoaDon.SoHieuHD AND tblMatHang.MaMH = tblChiTietHoaDon.MaMH AND tblBanHang.SoHieuHD = " & TextBoxSoHoaDon.Text Using cn As New SqlConnection("Data Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User ID=sa;Password=admin123@") Using cmd As New SqlCommand(sqlTimKiem, cn) cmd.CommandType = CommandType.Text cn.Open() Dim ds As New DataSet() Dim da As New SqlDataAdapter(cmd) da.Fill(ds) 'Nếu tồn tại số hiệu hóa đơn If ds.Tables(0).Rows.Count > 0 Then 'Chuyển trạng thái con trỏ Me.Cursor = Cursors.WaitCursor 'Tạm khóa nút In ấn ButtonInAn.Enabled = False 'In giấy mời ra máy in 'Khai báo một đối tượng Crystal Report Dim myReport As New ReportDocument()

211

'Tải báo cáo từ đường dẫn chỉ định myReport.Load(Application.StartupPath.ToString() & "\HoaDonBanHang.rpt") 'Thiết lập nguồn dữ liêu mới cho giấy mời myReport.SetDataSource(ds.Tables(0).DefaultView) 'Thiết lập tên máy in cần in (nếu cần) myReport.PrintOptions.PrinterName = "Foxit Reader PDF Printer" 'In giấy mời ra máy in chỉ định myReport.PrintToPrinter(1, True, 0, 0) 'Trả trạng thái con trỏ về mặc định Me.Cursor = Cursors.Default 'Tạm khóa nút In ấn ButtonInAn.Enabled = True Else 'Thông báo MessageBox.Show("Số hiệu hóa đơn không đúng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error) TextBoxSoHoaDon.Focus() End If cn.Close() End Using End Using End If End Sub

3. Kết quả thiết kế

Hình 112. Kết quả thiết kế form xem trước hóa đơn

212

4. Kết quả thực thi:

Hình 113. Kết quả thực thi form xem trước hóa đơn

213

Công việc 3. Thiết kế báo cáo thống kê bán hàng theo ngƣời bán.

a) Sử dụng Crystal Report thiết kế báo cáo thống kê các hóa đơn bán phân nhóm theo

từng người bán theo mẫu sau

1. Phân tích yêu cầu

Theo yêu cầu trên ta thấy rằng phần thông tin hiển thị trên báo cáo đƣợc chia

thành các nhóm có đánh số thứ tự và tiêu đề mỗi nhóm chính là tên của ngƣời bán

hàng.

Phần danh sách các đơn hàng của mỗi ngƣời bán hàng hiển thị các thông tin về

hóa đơn mỗi lƣợt bán hàng trong đó có một cột hiển thị thành tiền không có trong bảng

cơ sở dữ liệu. Số thứ tự của các dòng đƣợc đánh lần lƣợt từ 1 đến hết. Khi bắt đầu một

nhóm mới sẽ đƣợc đặt lại là 1.

Cuối trang hiển thị phần thông tin về trang hiện tại trên tổng số trang báo cáo.

Các thông tin về ngày tháng năm đƣợc lấy từ đồng hồ hệ thống.

2. Hướng dẫn thao tác

Để thực hiện yêu cầu trên:

Thực hiện các thao tác tƣơng tự nhƣ trong phần hƣớng dẫn thao tác ở công việc

2 để tạo mới một báo cáo có tên BaoCaoBanHangTheoNguoiBanHang.rpt

Nhấn phải chuột vào phần Report Header chọn Insert / Text Object và nhập giá

trị “CỬA HÀNG THƢƠNG MẠI ABC” cho điều khiển này. Thao tác tƣơng tự để tạo

đối tƣợng Text Object có nội dung “BÁO CÁO THỐNG KÊ BÁN HÀNG”. Điều

chỉnh vị trí và font chữ của đối tƣợng Text Object này cho phù hợp.

Nhấn phải chuột vào phần Report Footer chọn Insert / Text Object và nhập nội

dung “Ngày tháng năm” để tạo phần hiển thị ngày in báo cáo. Mặc dù trong Crystal

Report có sẵn một đối tƣợng đặc biệt để hiển thị ngày hiện tại của hệ thống, tuy nhiên

đối tƣợng này hiển thị cả chuỗi ngày tháng năm không đúng yêu cầu của chủ cửa hàng.

Để chèn thêm các giá trị ngày tháng năm đƣợc lấy từ đồng hồ hệ thống phải tạo ra các

biến lƣu các giá trị này và chèn vào vị trí thích hợp trên báo cáo.

Để tạo ra các biến chứa ngày, tháng, năm thực hiện các thao tác sau:

214

Nhấn phải chuột vào Formula Fields ở cửa sổ Field Explorer chọn New. Xuất

hiện cửa sổ Formula Name. Nhập “ngay” vào ô Name và nhấn OK.

Hình 114. Cửa sổ Formula Name

Xuất hiện cửa sổ Formula Workshop.

Hình 115. Cửa sổ Formula Workshop

Day (CurrentDate)

Nhập công thức tính ngày hiện tại vào khung soạn thảo công thức:

Nhấn “Save and close” để lƣu biến hiển thị ngày hiện tại.

Thực hiện thao tác tƣơng tự để tạo các biến “thang” chứa giá trị tháng hiện tại,

“năm” chứa giá trị năm hiện tại.

Month (CurrentDate)

Công thức tính tháng hiện tại

215

Year (CurrentDate)

Công thức tính năm hiện tại

Nhấn phải chuột vào biến “ngay” vừa tạo chọn Insert to Report và kéo nó vào

vị trí sau chữ ngày. Làm tƣơng tự với các biến “thang” và “nam”.

Nhấn phải chuột vào phần Page Footer chọn Insert / Text Object và nhập nội

dung “Trang / ” để tạo phần thống kê số trang cho báo cáo. Sau đó, nhấn phải chuột

vào phần Page Footer của báo cáo chọn Insert / Special Field / Page Number và kéo

vào trƣớc dấu / để hiển thị giá trị trang hiện tại. Nhấn phải chuột vào phần Page Footer

của báo cáo chọn Insert / Special Field / Total Page Count và kéo vào sau dấu / để hiển

thị giá trị tổng số trang của báo cáo.

Thực hiện kết nối dữ liệu cho báo cáo.

Tại cửa sổ Field Explorer, nhấn phải chuột vào Database Fields / Chọn

Database Expert. Xuất hiện cửa sổ Database Expert, tiến hành kết nối tới nguồn dữ

liệu và chọn thủ tục hiển thị dữ liệu cho báo cáo (thủ tục này viết trong phần store

procedure của cơ sở dữ liệu SQL Server) giống nhƣ phần hƣớng dẫn ở trên.

Mã lệnh thủ tục TatCaHoaDonBanHang viết trong SQL SERVER

USE [QLYBH]

GO

/****** Object: StoredProcedure

[dbo].[TatCaHoaDonBanHang] Script Date: 12/07/2014

18:43:38 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

--

=============================================

-- Author:

-- Create date:

216

-- Description:

--

=============================================

CREATE PROCEDURE [dbo].[TatCaHoaDonBanHang]

-- Add the parameters for the stored procedure here

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result

sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

-- Insert statements for procedure here

SELECT tblBanHang.*, tblKhachHang.HoTen,

tblKhachHang.DienThoai, tblKhachHang.DiaChi,

tblMatHang.TenMatHang, tblMatHang.DVT,

tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia,

tblChiTietHoaDon.SoLuong * tblChiTietHoaDon.DonGia

AS ThanhTien FROM tblBanHang, tblKhachHang,

tblMatHang, tblChiTietHoaDon WHERE tblBanHang.MaKH

= tblKhachHang.MaKH AND tblBanHang.SoHieuHD =

tblChiTietHoaDon.SoHieuHD AND tblMatHang.MaMH =

tblChiTietHoaDon.MaMH

RETURN

END

Vì yêu cầu của báo cáo phải phân nhóm theo ngƣời bán hàng nên phải thêm vào

báo cáo một Group bằng cách: Nhấn phải chuột vào phần Details của báo cáo chọn

Insert / Group. Xuất hiện cửa sổ Insert Group.

217

Hình 116. Cửa sổ Insert Group

Trong tab Common, chọn trƣờng NguoiBanHang từ danh sách các trƣờng có

trong báo cáo. Nhấn OK để thêm Group vào báo cáo.

Nhấn phải chuột vào phần Group Header Section1 chọn Insert / Special Field /

Group Number và kéo vào phía trƣớc của phần Group Name để thêm số thứ tự của

nhóm cho báo cáo.

Để hiển thị chi tiết các đơn hàng mà mỗi ngƣời bán hàng đã bán thực hiện nhƣ

sau:

Tăng chiều cao cho phần Group Header Section1 bằng cách đƣa chuột tới phần

giao giữa Group Header Section1 và Details và kéo lùi xuống phía dƣới.

Từ cửa sổ Field Explorer lần lƣợt kéo các trƣờng HoTen, TenMatHang, DVT,

SoLuong, DonGia, ThanhTien vào phần Details của báo cáo. Điều chỉnh kích thƣớc, vị

trí của các trƣờng cho phù hợp với việc thể hiện của báo cáo.

Mặc định khi kéo các trƣờng từ cửa sổ Field Explorer vào phần Details của báo

cáo thì Crystal Report sẽ thêm vào phần Page Header các tiêu đề của các trƣờng này

để mỗi khi chuyển sang trang mới nó sẽ xuất hiện ở đầu mỗi trang. Trong yêu cầu của

báo cáo này thì khi hiển thị phía dƣới tên mỗi ngƣời bán hàng sẽ là tên các trƣờng cần

218

hiển thị và dữ liệu bán hàng sẽ lặp lại nhiều lần ở phía dƣới. Do đó, cần phải kéo các

tiêu đề này từ phần Page Header xuống phần Group Header Section1 và đặt chúng bên

dƣới của Group Name.

Nhấp đúp vào các tiêu đề này để sửa lại nội dung thành Khách hàng, Mặt hàng,

ĐVT, Số lƣợng, Đơn giá, Thành tiền. Thiết lập định dạng và căn chỉnh các tiêu đề này

phù hợp với yêu cầu của báo cáo.

Thêm số thứ tự vào phần danh sách các hóa đơn bán hàng của mỗi ngƣời bán

hàng:

Mặc định trong Crystal Report có trƣờng Record Number để hiển thị thứ tự của

các bản ghi trong báo cáo. Tuy nhiên, trƣờng này đƣợc thiết kế để tăng tự động nên

khi sang Group mới thì nó không tự reset về 1. Vì vậy, để chèn cột số thứ tự vào đầu

mỗi dòng trong danh sách các hóa đơn bán hàng của từng ngƣời bán phải thực hiện

nhƣ sau:

Nháy phải chuột vào Running Total Field ở cửa sổ Field Explorer / chọn New.

Xuất hiện cửa sổ Create Running Total Field.

Hình 117. Cửa sổ Create Running Total Field

Chọn trƣờng HoTen ở phần khung Available Tables and Fields, nhấn vào nút

mũi tên quay sang phải để cung cấp thông số cho việc tính toán của biến này. Nhập

stt_hoadon vào ô Running Total Name để đặt tên cho biến. Chọn hàm count ở mục

219

Type of summary. Chọn On change of group ở phần Reset. Nhấn OK để hoàn thành

việc tạo biến đếm.

Bảng 7. Các hàm để tính toán với nhóm của Crystal Report

Hàm Ý nghĩa

Sum Tính tổng tất cả các mặt hàng.

Average Tính trung bình trọng số tiêu chuẩn cho tất cả các mặt hàng.

Maximum Trả về giá trị lớn nhất.

Minimum Trả về giá trị nhỏ nhất.

Count Đếm tất cả các mặt hàng.

Sample Variance Tính phƣơng sai mẫu thống kê của một ví sam cụ thể của các mặt hàng.

Sample Standard Deviation Tính độ lệch tiêu chuẩn thống kê của một mẫu cụ thể của các mặt hàng.

Population Variance Tính phƣơng sai thống kê của toàn bộ dân số các mặt hàng.

Tính độ lệch tiêu chuẩn thống kê của toàn bộ dân số của các mặt hàng. Population Standard Deviation

Distinct Count

Tính số mặt hàng riêng biệt. Ví dụ, nếu hai trƣờng hợp khác nhau của "David" xuất hiện trong danh sách, họ sẽ chỉ đƣợc tính một lần.

Correlation Tính số đo của mối quan hệ giữa hai hoặc nhiều mục

Covariance Tính một biện pháp của phƣơng sai giữa hai hoặc nhiều mục.

Tính trung bình, trọng bởi số lần một item xuất hiện. Weighted Average

Median Tính trung bình thống kê của tất cả các mặt hàng.

Nth Percentile Tính percentile thứ N, trong đó N đƣợc xác định trƣớc số.

Nth Largest Trả về Nth mục lớn nhất, trong đó N đƣợc xác định

220

trƣớc số.

Nth Smallest Trả về các mục nhỏ nhất thứ N, trong đó N đƣợc xác định trƣớc số.

Mode Tính chế độ thống kê của tất cả các mặt hàng.

Nth Most Frequent Trả về Nth mục thƣờng xuyên nhất, trong đó N là một số prede phạt.

Nhấn phải chuột vào biến stt_hoadon ở phần Running Total Field chọn Insert to

Report và kéo vào phía trƣớc của trƣờng HoTen trong phần Details.

Để tạo biến chứa tổng tiền của mỗi ngƣời bán hàng thực hiện nhƣ sau: Nháy

phải chuột vào Running Total Field ở cửa sổ Field Explorer / chọn New. Xuất hiện cửa

sổ Create Running Total Field.

Hình 118. Cửa sổ Create Running Total Field

Chọn trƣờng ThanhTien ở phần khung Available Tables and Fields, nhấn vào

nút mũi tên quay sang phải để cung cấp thông số cho việc tính toán của biến này. Nhập

tongtientheonhom vào ô Running Total Name để đặt tên cho biến. Chọn hàm sum ở

mục Type of summary. Chọn On change of group ở phần Reset. Nhấn OK để hoàn

thành việc tạo biến đếm.

Nhấn phải chuột vào biến tongtientheonhom ở phần Running Total Field chọn

Insert to Report và kéo vào GroupFooterSection1 sau nhãn “Tổng tiền”.

221

Chuyển sang cửa sổ Main Report Preview để xem thử kết quả của báo cáo. Ta

nhận thấy rằng các biến ngay, thang, nam khi hiển thị đều có thêm 2 số 0 đằng sau dấu

phẩy. Đây là tùy chọn hiển thị mặc định của các trƣờng có giá trị số. Để bỏ các số 0

này khi hiển thị báo cáo thực hiện nhƣ sau:

Nháy phải chuột vào biến ngay ở phần Report Footer, chọn Format Embedded

Field. Xuất hiện cửa sổ Format Editor / chọn Customize. Xuất hiện cửa sổ Custom

Style.

Hình 119. Cửa sổ Custom Style

Thay đổi ở phần Decimals, Rounding về giá trị 1, bỏ dấu chọn ở mục

Thousands Separator. Nhấn OK hai lần để áp dụng.

Thực hiện tƣơng tự với các biến thang, nam.

222

3. Kết quả thiết kế

Hình 120. Kết quả thiết kế báo cáo thống kê bán hàng bằng Crystal Report

223

4. Kết quả thực thi

Hình 121. Kết quả thực thi báo cáo bán hàng

224

b) Thiết kế form điều khiển việc xem in báo cáo thống kê bán hàng theo mẫu sau:

Hình 122. Form điều khiển in báo cáo bán hàng

1. Phân tích yêu cầu

Theo yêu cầu trên thì cần một form chứa các điều khiển:

Điều khiển có nội dung “In báo cáo bán hàng”, “In theo”, “Ngƣời bán hàng” là

các Label

Điều khiển chọn lựa “Tất cả ngƣời bán hàng”, “Từng ngƣời bán hàng” là các

Radio Button.

Các nút lệnh “Xem trƣớc, In ấn, Kết thúc” là các điều khiển Button.

Ngoài ra cần phải thiết kế một form cho phép xem thử báo cáo trƣớc khi in.

2. Hướng dẫn thao tác

Để thực hiện yêu cầu trên, thực hiện các thao tác tƣơng tự nhƣ ở phần công việc

2 để tạo form frmInBaoCaoBanHang với các điều khiển và nội dung nhƣ yêu cầu.

Viết mã lệnh cho các điều khiển này nhƣ sau:

Lưu ý: Để thao tác với Crystal Report người

lập trình phải đưa vào các thư viện bằng

đoạn mã sau:

Imports CrystalDecisions.CrystalReports.Engine

Mã lệnh khi lựa chọn vào RadioButtonTatCa

Private Sub RadioButtonTatCa_CheckedChanged(ByVal

225

sender As System.Object, ByVal e As System.EventArgs)

Handles RadioButtonTatCa.CheckedChanged

ComboBoxNguoiBanHang.DataSource = Nothing

ComboBoxNguoiBanHang.Enabled = False

End Sub

Mã lệnh khi lựa chọn vào RadioButtonTungHD

Private Sub

RadioButtonTungHD_CheckedChanged(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

RadioButtonTungHD.CheckedChanged

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Tìm kiếm tất cả các người bán hàng có trong bảng

bán hàng.

sqlTimKiem = "SELECT DISTINCT NguoiBanHang

FROM tblBanHang GROUP BY NguoiBanHang"

'Thực hiện tìm kiếm và đưa kết quả ra lưới

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

ComboBoxNguoiBanHang.DataSource =

ds.Tables(0).DefaultView

ComboBoxNguoiBanHang.DisplayMember =

226

"NguoiBanHang"

ComboBoxNguoiBanHang.ValueMember =

"NguoiBanHang"

cn.Close()

End Using

End Using

ComboBoxNguoiBanHang.Enabled = True

End Sub

Mã lệnh khi nhấn vào nút Kết thúc

Private Sub ButtonKetThuc_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

ButtonKetThuc.Click

'Đóng form

Me.Close()

End Sub

Mã lệnh khi nhấn vào nút Xem trƣớc

Private Sub ButtonXemTruoc_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

ButtonXemTruoc.Click

'Khai báo một form kiểu

frmXemTruocBaoCaoBanHang

Dim frm As New frmXemTruocBaoCaoBanHang()

'Hiển thị form ở trên cùng

frm.ShowDialog()

End Sub

Mã lệnh khi nhấn vào nút In ấn

227

Private Sub ButtonInAn_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

ButtonInAn.Click

If RadioButtonTatCa.Checked Then

'Chuyển trạng thái con trỏ

Me.Cursor = Cursors.WaitCursor

'Tạm khóa nút In ấn

ButtonInAn.Enabled = False

'In tất cả các khách hàng

'Khai báo một đối tượng Crystal Report

Dim myReport As New ReportDocument()

'Tải báo cáo từ đường dẫn chỉ định

myReport.Load(Application.StartupPath.ToString()

& "\BaoCaoBanHangTheoNguoiBanHang.rpt")

'Thiết lập tên máy in cần in (nếu cần)

myReport.PrintOptions.PrinterName = "Foxit

Reader PDF Printer"

'In giấy mời ra máy in chỉ định

myReport.PrintToPrinter(1, True, 0, 0)

'Trả trạng thái con trỏ về mặc định

Me.Cursor = Cursors.Default

'Tạm khóa nút In ấn

ButtonInAn.Enabled = True

Else

If RadioButtonTungHD.Checked Then

'Kiểm tra mã khách hàng có tồn tại không

'Khai báo đối tượng và biến cần sử dụng

Dim sqlTimKiem As String

'Thiết lập câu lệnh tìm kiếm theo mã khác hàng

sqlTimKiem = "SELECT tblBanHang.*,

tblKhachHang.HoTen, tblKhachHang.DienThoai,

228

tblKhachHang.DiaChi, tblMatHang.TenMatHang,

tblMatHang.DVT, tblChiTietHoaDon.SoLuong,

tblChiTietHoaDon.DonGia, tblChiTietHoaDon.SoLuong *

tblChiTietHoaDon.DonGia AS ThanhTien FROM

tblBanHang, tblKhachHang, tblMatHang,

tblChiTietHoaDon WHERE tblBanHang.MaKH =

tblKhachHang.MaKH AND tblBanHang.SoHieuHD =

tblChiTietHoaDon.SoHieuHD AND tblMatHang.MaMH =

tblChiTietHoaDon.MaMH AND

tblBanHang.NguoiBanHang LIKE '%" &

ComboBoxNguoiBanHang.SelectedValue.ToString() &

"%'"

Using cn As New SqlConnection("Data

Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User

ID=sa;Password=admin123@")

Using cmd As New

SqlCommand(sqlTimKiem, cn)

cmd.CommandType = CommandType.Text

cn.Open()

Dim ds As New DataSet()

Dim da As New SqlDataAdapter(cmd)

da.Fill(ds)

'Nếu tồn tại đơn hàng phù hợp

If ds.Tables(0).Rows.Count > 0 Then

'Chuyển trạng thái con trỏ

Me.Cursor = Cursors.WaitCursor

'Tạm khóa nút In ấn

ButtonInAn.Enabled = False

'In giấy mời ra máy in

'Khai báo một đối tượng Crystal Report

Dim myReport As New

229

ReportDocument()

'Tải báo cáo từ đường dẫn chỉ định

myReport.Load(Application.StartupPath.ToString() &

"\BaoCaoBanHangTheoNguoiBanHang.rpt")

'Thiết lập nguồn dữ liêu mới cho giấy

mời

myReport.SetDataSource(ds.Tables(0).DefaultView)

'Thiết lập tên máy in cần in (nếu cần)

myReport.PrintOptions.PrinterName =

"Foxit Reader PDF Printer"

'In giấy mời ra máy in chỉ định

myReport.PrintToPrinter(1, True, 0, 0)

'Trả trạng thái con trỏ về mặc định

Me.Cursor = Cursors.Default

'Tạm khóa nút In ấn

ButtonInAn.Enabled = True

Else

'Thông báo

MessageBox.Show("Không tìm thấy",

"Thông báo", MessageBoxButtons.OK,

MessageBoxIcon.Error)

End If

cn.Close()

End Using

End Using

End If

End If

End Sub

230

Để thiết kế form xem thử báo cáo thực hiện nhƣ sau:

Tạo mới một form giống các phần trên. Thiết lập các thuộc tính về tiêu đề, nút

phóng to, thu nhỏ, chế độ hiển thị, vị trí khi hiển thị của form ở cửa sổ Properties.

Từ cửa sổ Toolbox kéo điều khiển Crystal Report Viewer vào form vừa tạo.

Thiết lập thuộc tính các thuộc tính cho điều khiển này nhƣ sau:

 Name: CrystalReportViewer1.

 BorderStyle: FixedSingle.

 Dock: Fill.

 Các thuộc tính khác đặt mặc định.

Tiếp theo, tiến hành thiết lập nguồn cho điều khiển Crystal Report Viewer nhƣ

sau: Nhấn vào mũi tên quay xuống ở thuộc tính ReportSource và chọn báo cáo vừa

xây dựng để thiết lập nó hiển thị ở trong Crystal Report Viewer.

Hình 123. Cửa sổ thiết kế form xem trước báo cáo.

Có thể chọn nhiều Report cho thuộc tính ReportSource. Tuy nhiên, tại một thời

điểm Crystal Report Viewer chỉ có thể hiển thị đƣợc duy nhất nội dung của một

Report. Để lựa chọn báo cáo nào sẽ hiển thị ngƣời lập trình sẽ viết mã lệnh trong sự

kiện tải form hoặc trong sự kiện nhấp vào một nút lệnh nào đó trên form.

Lƣu ý: Cần phải thêm các thƣ viện bên dƣới để thao tác với báo

cáo xây dựng bằng Crystal Report.

Imports CrystalDecisions.CrystalReports.Engine

Imports CrystalDecisions.Shared

231

Imports CrystalDecisions.Windows.Forms

Imports CrystalDecisions.ReportSource

Mã lệnh khi form xem trƣớc đƣợc tải:

Private Sub frmXemTruocBaoCaoBanHang_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim cr As New ReportDocument Dim strReportName As String strReportName = "BaoCaoBanHangTheoNguoiBanHang.rpt" Dim strReportPath As String = Application.StartupPath & "\" & strReportName If Not IO.File.Exists(strReportPath) Then Throw (New Exception("Không thể tải báo cáo:" & _ vbCrLf & strReportPath)) End If Dim sqlTimKiem As String 'Thiết lập câu lệnh tìm kiếm theo mã khác hàng sqlTimKiem = "SELECT tblBanHang.*, tblKhachHang.HoTen, tblKhachHang.DienThoai, tblKhachHang.DiaChi, tblMatHang.TenMatHang, tblMatHang.DVT, tblChiTietHoaDon.SoLuong, tblChiTietHoaDon.DonGia, tblChiTietHoaDon.SoLuong * tblChiTietHoaDon.DonGia AS ThanhTien FROM tblBanHang, tblKhachHang, tblMatHang, tblChiTietHoaDon WHERE tblBanHang.MaKH = tblKhachHang.MaKH AND tblBanHang.SoHieuHD = tblChiTietHoaDon.SoHieuHD AND tblMatHang.MaMH = tblChiTietHoaDon.MaMH" Using cn As New SqlConnection("Data Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User ID=sa;Password=admin123@") Using cmd As New SqlCommand(sqlTimKiem, cn) cmd.CommandType = CommandType.Text cn.Open() Dim ds As New DataSet() Dim da As New SqlDataAdapter(cmd) da.Fill(ds) cr.Load(strReportPath) cr.SetDataSource(ds.Tables(0).DefaultView)

232

CrystalReportViewer1.ReportSource = cr End Using End Using End Sub

3. Kết quả thiết kế

Kết quả thiết kế form in báo cáo

Hình 124. Kết quả thiết kế form điều khiển in báo cáo bán hàng

Kết quả thiết kế form xem trƣớc báo cáo.

Hình 125. Kết quả thiết kế form xem trước báo cáo bán hàng

4. Kết quả thực thi

Kết quả khi thực thi form

233

Hình 126. Kết quả thực thi form in báo cáo bán hàng

Kết quả khi nhấn vào nút Xem trƣớc

Hình 127. Kết quả thực thi form xem trước báo cáo bán hàng.

3.3. Bài tập áp dụng

Bài tập số 1. Để quản lý việc phân công giảng dạy trong một học kỳ cho giáo

viên của khoa CNTT, khoa có một cơ sở dữ liệu QLYGD.MDF trong đó có các bảng:

tblGiaoVien(MaGV, HoTen, BoMon, DMGD)

tblMonHoc(Mamon, Tenmon, SoTinChi)

tblPhanCong(MaGV, MaMon, LHP, SSO, HocKy)

Tiếp tục với bài tập số 1 đã thực hiện trong phần bài tập thực hành của bài 2

thực hiện các công việc sau:

234

Công việc 1:

1. Sử dụng Crystal Report thiết kế bảng phân công giảng dạy theo mẫu sau:

Hình 128. Mẫu bảng phân công giảng dạy

Yêu cầu:

+ Báo cáo đƣợc thiết kế in trên khổ giấy: A4

+ Lề trên: 2cm.

+ Lề dƣới: 2cm.

+ Lề trái: 3cm.

235

+ Lề phải: 2cm

+ Nội dung trên báo cáo đƣợc lấy dữ liệu từ các bảng trong cơ sở dữ liệu

QLYGD.MDF

+ Ngày tháng năm lấy theo đồng hồ hệ thống.

+ Số trang đánh bắt đầu từ 1 / tổng số trang.

+ Cỡ chữ của các phần trên báo cáo là 13

+ Font chữ: Times New Roman

+ Các nhãn có nội dung là TRƢỜNG ĐẠI HỌC ABC, KHOA CNTT, PHÂN

CÔNG GIẢNG DẠY, NGƢỜI LẬP BIỂU kiểu in đậm.

2. Thiết kế form để điều khiển việc xem và in báo cáo theo mẫu sau:

Hình 129. Form in phân công giảng dạy

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn in báo cáo bán hàng:

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form theo chiều ngang

 Mầu chữ: Xanh lá

- Các nhãn in theo, họ tên giáo viên:

236

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Có lề trái bằng nhau

- Danh sách giáo viên

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Kiểu: DropDown

 Có giá trị đƣợc lấy từ bảng giáo viên.

 Mặc định lựa chọn này bị khóa không cho ngƣời sử dụng lựa chọn. Chỉ

khi ngƣời sử dụng lựa chọn in theo từng ngƣời bán hàng thì lựa chọn này

mới đƣợc bật lên.

- Lựa chọn tất cả giáo viên, từng giáo viên:

 Là dạng radio button.

 Mặc định lựa chọn tất cả giáo viên.

 Font: Microsoft Sans Serif, 9pt.

 Mầu chữ: Đen

 Khi lựa chọn tất cả giáo viên thì tự động khóa danh sách giáo viên.

 Khi lựa chọn từng giáo viên thì mở khóa danh sách lựa chọn giáo viên

cho phép ngƣời sử dụng lựa chọn.

- Nút lệnh Xem trƣớc

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: X

Khi nhấn vào nút lệnh xem trƣớc, chƣơng trình sẽ căn cứ vào lựa chọn của

ngƣời sử dụng để hiển thị bảng phân công giảng dạy của tất cả giáo viên hoặc từng

giáo viên tƣơng ứng tại một form mới.

- Nút lệnh In ấn

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: I

237

Khi nhấn vào nút lệnh in ấn, chƣơng trình sẽ căn cứ vào lựa chọn của ngƣời sử

dụng để in bảng phân công giảng dạy của tất cả giáo viên hoặc từng giáo viên tƣơng

ứng ra máy in mặc định.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc điều khiển việc in ấn

không. Nếu chọn Yes sẽ đóng form. Nếu chọn No sẽ trở lại form.

Công việc 2:

1. Thiết kế báo cáo phân nhóm theo môn

Hình 130. Mẫu bảng phân công giảng dạy theo bộ môn

Yêu cầu:

+ Báo cáo đƣợc thiết kế in trên khổ giấy: A4

+ Lề trên: 2cm.

+ Lề dƣới: 2cm.

+ Lề trái: 3cm.

+ Lề phải: 2cm

238

+ Nội dung trên báo cáo đƣợc lấy dữ liệu từ các bảng trong cơ sở dữ liệu

QLYGD.MDF

+ Ngày tháng năm lấy theo đồng hồ hệ thống.

+ Số trang đánh bắt đầu từ 1 / tổng số trang.

+ Cỡ chữ của các phần trên báo cáo là 13

+ Font chữ: Times New Roman

+ Các nhãn có nội dung là TRƢỜNG ĐẠI HỌC ABC, KHOA CNTT, PHÂN CÔNG

GIẢNG DẠY, NGƢỜI LẬP BIỂU kiểu in đậm.

2. Thiết kế form để xem in báo cáo phân nhóm theo bộ môn

Hình 131. Form in phân công giảng dạy

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn in báo cáo bán hàng:

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form theo chiều ngang

 Mầu chữ: Xanh lá

- Các nhãn in theo, tên bộ môn:

 Font: Microsoft Sans Serif, 9

239

 Mầu chữ: Đen

 Có lề trái bằng nhau

- Danh sách bộ môn

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Kiểu: DropDown

 Có giá trị đƣợc lấy từ bảng bộ môn.

 Mặc định lựa chọn này bị khóa không cho ngƣời sử dụng lựa chọn. Chỉ

khi ngƣời sử dụng lựa chọn in theo từng bộ môn thì lựa chọn này mới

đƣợc bật lên.

- Lựa chọn tất cả giáo viên, từng bộ môn:

 Là dạng radio button.

 Mặc định lựa chọn tất cả giáo viên.

 Font: Microsoft Sans Serif, 9pt.

 Mầu chữ: Đen

 Khi lựa chọn tất cả giáo viên thì tự động khóa danh sách bộ môn.

 Khi lựa chọn từng bộ môn thì mở khóa danh sách lựa chọn bộ môn cho

phép ngƣời sử dụng lựa chọn.

- Nút lệnh Xem trƣớc

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: X

Khi nhấn vào nút lệnh xem trƣớc, chƣơng trình sẽ căn cứ vào lựa chọn của

ngƣời sử dụng để hiển thị bảng phân công giảng dạy của tất cả giáo viên hoặc từng bộ

môn tƣơng ứng tại một form mới.

- Nút lệnh In ấn

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: I

240

Khi nhấn vào nút lệnh in ấn, chƣơng trình sẽ căn cứ vào lựa chọn của ngƣời sử

dụng để in bảng phân công giảng dạy của tất cả giáo viên hoặc từng bộ môn tƣơng ứng

ra máy in mặc định.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc điều khiển việc in ấn

không. Nếu chọn Yes sẽ đóng form. Nếu chọn No sẽ trở lại form.

241

Công việc 3. Thiết kế bảng phân công giảng dạy theo môn học

1. Thiết kế bảng phân công giảng dạy theo môn học theo mẫu sau:

Hình 132. Mẫu bảng phân công giảng dạy theo môn học

Yêu cầu:

+ Báo cáo đƣợc thiết kế in trên khổ giấy: A4

+ Lề trên: 2cm.

+ Lề dƣới: 2cm.

242

+ Lề trái: 3cm.

+ Lề phải: 2,5cm

+ Nội dung trên báo cáo đƣợc lấy dữ liệu từ các bảng trong cơ sở dữ liệu

QLYGD.MDF

+ Báo cáo đƣợc phân theo nhóm môn học. Phải đánh số thứ tự trƣớc mỗi nhóm

và đánh số thứ tự trƣớc mỗi dòng của nhóm, số thứ tự của mỗi dòng sẽ bắt đầu từ 1 khi

bắt đầu một nhóm mới (Đánh lại số thứ tự của dòng theo mỗi nhóm).

+ Ngày tháng năm lấy theo đồng hồ hệ thống.

+ Số trang đánh bắt đầu từ 1 / tổng số trang.

+ Cỡ chữ của các phần trên báo cáo là 13

+ Font chữ: Times New Roman

+ Các nhãn có nội dung là TRƢỜNG ĐẠI HỌC ABC, KHOA CNTT, PHÂN

CÔNG GIẢNG DẠY, NGƢỜI LẬP BIỂU kiểu in đậm.

2. Thiết kế form để xem in báo cáo phân nhóm theo môn học theo mẫu sau:

Hình 133. Form in phân công giảng dạy

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn in báo cáo bán hàng:

 Font: Microsoft Sans Serif, Bold, 14

243

 Căn giữa màn hình form theo chiều ngang

 Mầu chữ: Xanh lá

- Các nhãn in theo, tên môn học:

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Có lề trái bằng nhau

- Danh sách môn học

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Kiểu: DropDown

 Có giá trị đƣợc lấy từ bảng môn học.

 Mặc định lựa chọn này bị khóa không cho ngƣời sử dụng lựa chọn. Chỉ

khi ngƣời sử dụng lựa chọn in theo từng môn học thì lựa chọn này mới

đƣợc bật lên.

- Lựa chọn tất cả môn học, từng môn học:

 Là dạng radio button.

 Mặc định lựa chọn tất cả môn học.

 Font: Microsoft Sans Serif, 9pt.

 Mầu chữ: Đen

 Khi lựa chọn tất cả môn học thì tự động khóa danh sách môn học.

 Khi lựa chọn từng môn học thì mở khóa danh sách lựa chọn môn học

cho phép ngƣời sử dụng lựa chọn.

- Nút lệnh Xem trƣớc

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: X

Khi nhấn vào nút lệnh xem trƣớc, chƣơng trình sẽ căn cứ vào lựa chọn của

ngƣời sử dụng để hiển thị bảng phân công giảng dạy của tất cả môn học hoặc từng

môn học tƣơng ứng tại một form mới.

- Nút lệnh In ấn

244

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: I

Khi nhấn vào nút lệnh in ấn, chƣơng trình sẽ căn cứ vào lựa chọn của ngƣời sử

dụng để in bảng phân công giảng dạy của tất cả môn học hoặc từng môn học tƣơng

ứng ra máy in mặc định.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc điều khiển việc in ấn không. Nếu chọn Yes sẽ đóng form. Nếu chọn No sẽ trở lại form

Bài tập số 2. Để quản lý tài sản của các đơn vị trong một trƣờng ngƣời ta tổ

chức một cơ sở dữ liệu QLTAISAN.MDF có các bảng nhƣ sau:

tblDonVi(MaDV, TenDV, ViTri, SoNhanVien)

tblTaiSan(MaTS, TenTS, DVT, HSD)

tblQuanLy(MaDV, MaTS, SoLuong, NgayCap, TinhTrang)

Tiếp tục với bài tập số 2 đã thực hiện trong phần bài tập thực hành của bài 2 thực hiện

các công việc sau:

Công việc 1: Thiết kế báo cáo tài sản

a) Sử dụng Crystal Report thiết kế bảng danh mục tài sản theo mẫu sau:

Hình 134. Mẫu bảng danh mục tài sản

245

b) Thiết kế form để xem và in bảng danh mục tài sản theo mẫu sau:

Hình 135. Form in danh mục tài sản

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn in danh mục tài sản:

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form theo chiều ngang

 Mầu chữ: Đen

- Các nhãn chọn đơn vị, chọn tình trạng

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Có lề trái bằng nhau

- Danh sách đơn vị

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Kiểu: DropDown

 Có giá trị lấy từ bảng tblDonVi với dữ liệu hiển thị là tên đơn vị

246

- Lựa chọn tất cả đơn vị, từng đơn vị:

 Là dạng radio button.

 Mặc định lựa chọn tất cả đơn vị

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Khi lựa chọn tất cả đơn vị thì tự động khóa điều khiển danh sách đơn vị

 Khi lựa chọn từng đơn vị thì mở khóa điều khiển danh sách đơn vị cho

ngƣời sử dụng lựa chọn.

- Lựa chọn danh sách tình trạng

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Kiểu: DropDown.

 Giá trị gồm: Tất cả tình trạng, Bình thƣờng, Hỏng.

 Lựa chọn mặc định: Tất cả tình trạng.

- Nút lệnh Xem trƣớc

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: X

Khi nhấn vào nút lệnh xem trƣớc, chƣơng trình sẽ căn cứ vào lựa chọn của

ngƣời sử dụng để hiển thị tất cả tài sản của đơn vị tƣơng ứng tại một form mới.

- Nút lệnh In ấn

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: I

Khi nhấn vào nút lệnh in ấn, chƣơng trình sẽ căn cứ vào lựa chọn của ngƣời sử

dụng để in danh mục tài sản tƣơng ứng ra máy in mặc định.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

247

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc điều khiển việc in ấn

không. Nếu chọn Yes sẽ đóng form. Nếu chọn No sẽ trở lại form.

Công việc 2: Thiết kế báo cáo thống kê tài sản

a) Sử dụng Crystal Report thiết kế báo cáo thống kê tài sản theo nhóm (đơn vị, mã tài

sản)

Hình 136. Mẫu bảng danh mục tài sản theo đơn vị sử dụng

Yêu cầu:

+ Báo cáo đƣợc thiết kế in trên khổ giấy: A4

248

+ Lề trên: 2cm.

+ Lề dƣới: 2cm.

+ Lề trái: 3cm.

+ Lề phải: 2,5cm

+ Nội dung trên báo cáo đƣợc lấy dữ liệu từ các bảng trong cơ sở dữ liệu

QLYTAISAN.MDF

+ Báo cáo đƣợc phân theo nhóm đơn vị sử dụng. Phải đánh số thứ tự trƣớc mỗi

nhóm và đánh số thứ tự trƣớc mỗi dòng của nhóm, số thứ tự của mỗi dòng sẽ bắt đầu

từ 1 khi bắt đầu một nhóm mới (Đánh lại số thứ tự của dòng theo mỗi nhóm).

+ Ngày tháng năm lấy theo đồng hồ hệ thống.

+ Số trang đánh bắt đầu từ 1 / tổng số trang.

+ Cỡ chữ của các phần trên báo cáo là 13

+ Font chữ: Times New Roman

+ Các nhãn có nội dung là TRƢỜNG ĐẠI HỌC ABC, DANH MỤC TÀI SẢN,

NGƢỜI LẬP BIỂU kiểu in đậm.

b) Thiết kế form điều khiển việc in ấn và xem báo cáo thống kê tài sản theo nhóm theo

mẫu sau:

Hình 137. Form điều khiển việc bảng danh mục tài sản

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

249

- Form xuất hiện chính giữa màn hình

- Nhãn in danh mục tài sản:

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form theo chiều ngang

 Mầu chữ: Đen

- Các nhãn chọn đơn vị, chọn tình trạng

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Có lề trái bằng nhau

- Danh sách đơn vị

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Kiểu: DropDown

 Có giá trị lấy từ bảng tblDonVi với dữ liệu hiển thị là tên đơn vị

- Lựa chọn tất cả đơn vị, từng đơn vị:

 Là dạng radio button.

 Mặc định lựa chọn tất cả đơn vị

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Khi lựa chọn tất cả đơn vị thì tự động khóa điều khiển danh sách đơn vị

 Khi lựa chọn từng đơn vị thì mở khóa điều khiển danh sách đơn vị cho

ngƣời sử dụng lựa chọn.

- Lựa chọn danh sách tình trạng

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Kiểu: DropDown.

 Giá trị gồm: Tất cả tình trạng, Bình thƣờng, Hỏng.

 Lựa chọn mặc định: Tất cả tình trạng.

- Nút lệnh Xem trƣớc

250

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: X

Khi nhấn vào nút lệnh xem trƣớc, chƣơng trình sẽ căn cứ vào lựa chọn của

ngƣời sử dụng để hiển thị tất cả tài sản của đơn vị tƣơng ứng tại một form mới.

- Nút lệnh In ấn

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: I

Khi nhấn vào nút lệnh in ấn, chƣơng trình sẽ căn cứ vào lựa chọn của ngƣời sử

dụng để in danh mục tài sản tƣơng ứng ra máy in mặc định.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc điều khiển việc in ấn

không. Nếu chọn Yes sẽ đóng form. Nếu chọn No sẽ trở lại form.

Bài tập số 3. Cho cơ sở dƣ̃ liê ̣u Quản lý đi ểm có tên QLDIEM .MDF gồm các

bảng:

tblSinhVien(MaSV, Hoten, Ngaysinh, Noisinh, Gioitinh, Diachi, Makhoa,

LopNC)

tblKhoa(Makhoa, Tenkhoa)

tblLopHP(MaLopHP, TenLopHP, MaSV, MaMon)

tblMonHoc(Mamon, Tenmon, Sohocphan, Giaovien)

tblDiem(MaLopHP, MaSV, Diem, HocKy)

Tiếp tục với bài tập số 3 đã thực hiện trong phần bài tập thực hành của bài 2

thực hiện các công việc sau:

Công việc 1: Thiết kế bảng điểm của sinh viên

251

a) Sử dụng Crystal Report thiết kế bảng điểm của sinh viên theo mẫu sau:

Hình 138. Mẫu bảng điểm sinh viên

Yêu cầu:

+ Báo cáo đƣợc thiết kế in trên khổ giấy: A4

+ Lề trên: 2cm.

+ Lề dƣới: 2cm.

+ Lề trái: 3cm.

+ Lề phải: 2,5cm

252

+ Nội dung trên báo cáo đƣợc lấy dữ liệu từ các bảng trong cơ sở dữ liệu

QLYDIEM.MDF

+ Báo cáo đƣợc phân theo học kỳ. Phải đánh số thứ tự trƣớc mỗi nhóm và đánh

số thứ tự trƣớc mỗi dòng của nhóm, số thứ tự của mỗi dòng sẽ bắt đầu từ 1 khi bắt đầu

một nhóm mới (Đánh lại số thứ tự của dòng theo mỗi nhóm).

+ Ngày tháng năm lấy theo đồng hồ hệ thống.

+ Số trang đánh bắt đầu từ 1 / tổng số trang.

+ Cỡ chữ của các phần trên báo cáo là 13

+ Font chữ: Times New Roman

+ Các nhãn có nội dung là TRƢỜNG ĐẠI HỌC ABC, BẢNG ĐIỂM SINH

VIÊN, NGƢỜI LẬP và các thông tin của sinh viên kiểu in đậm.

b) Tạo form điều khiển việc xem và in ấn bảng điểm của sinh viên theo mẫu sau:

Hình 139. Form điều khiển in bảng điểm sinh viên

Yêu cầu:

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn in bảng điểm sinh viên:

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form theo chiều ngang

 Mầu chữ: Xanh lá

253

- Các nhãn In theo, Họ tên sinh viên

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Có lề trái bằng nhau

- Danh sách sinh viên

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Kiểu: DropDown

 Có giá trị lấy từ bảng sinh viên với dữ liệu hiển thị là tên sinh viên

- Lựa chọn tất cả sinh viên, từng sinh viên:

 Là dạng radio button.

 Mặc định lựa chọn tất cả đơn vị

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Khi lựa chọn tất cả sinh viên thì tự động khóa điều khiển danh sách sinh

viên.

 Khi lựa chọn từng sinh viên thì mở khóa điều khiển danh sách sinh viên

cho ngƣời sử dụng lựa chọn.

- Nút lệnh Xem trƣớc

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: X

Khi nhấn vào nút lệnh xem trƣớc, chƣơng trình sẽ căn cứ vào lựa chọn của

ngƣời sử dụng để hiển thị tất cả bảng điểm của sinh viên hoặc từng sinh viên tƣơng

ứng tại một form mới.

- Nút lệnh In ấn

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: I

254

Khi nhấn vào nút lệnh in ấn, chƣơng trình sẽ căn cứ vào lựa chọn của ngƣời sử

dụng để in bảng điểm tƣơng ứng ra máy in mặc định.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc điều khiển việc in ấn

không. Nếu chọn Yes sẽ đóng form. Nếu chọn No sẽ trở lại form.

c) Thiết kế form điều khiển việc xem và in ấn bảng điểm của sinh viên theo mẫu sau:

Hình 140. Mẫu bảng điểm sinh viên theo môn

255

Yêu cầu:

+ Báo cáo đƣợc thiết kế in trên khổ giấy: A4

+ Lề trên: 2cm.

+ Lề dƣới: 2cm.

+ Lề trái: 3cm.

+ Lề phải: 2,5cm

+ Nội dung trên báo cáo đƣợc lấy dữ liệu từ các bảng trong cơ sở dữ liệu

QLYDIEM.MDF

+ Báo cáo đƣợc phân theo môn học. Phải đánh số thứ tự trƣớc mỗi nhóm và

đánh số thứ tự trƣớc mỗi dòng của nhóm, số thứ tự của mỗi dòng sẽ bắt đầu từ 1 khi

bắt đầu một nhóm mới (Đánh lại số thứ tự của dòng theo mỗi nhóm).

+ Ngày tháng năm lấy theo đồng hồ hệ thống.

+ Số trang đánh bắt đầu từ 1 / tổng số trang.

+ Cỡ chữ của các phần trên báo cáo là 13

+ Font chữ: Times New Roman

+ Các nhãn có nội dung là TRƢỜNG ĐẠI HỌC ABC, BẢNG ĐIỂM SINH

VIÊN, NGƢỜI LẬP và các thông tin môn học kiểu in đậm.

2. Thiết kế form điều khiển việc xem in bảng điểm theo mẫu sau

Hình 141. Form điều khiển in bảng điểm sinh viên

Yêu cầu:

256

- Form có kiểu: FixedSingle

- Các nút thu nhỏ và phóng to của form bị ẩn

- Form xuất hiện chính giữa màn hình

- Nhãn in bảng điểm sinh viên:

 Font: Microsoft Sans Serif, Bold, 14

 Căn giữa màn hình form theo chiều ngang

 Mầu chữ: Xanh lá

- Các nhãn In theo, Họ tên sinh viên

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Có lề trái bằng nhau

- Danh sách sinh viên

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Kiểu: DropDown

 Có giá trị lấy từ bảng sinh viên với dữ liệu hiển thị là tên sinh viên

- Lựa chọn tất cả sinh viên, từng sinh viên:

 Là dạng radio button.

 Mặc định lựa chọn tất cả đơn vị

 Font: Microsoft Sans Serif, 9

 Mầu chữ: Đen

 Khi lựa chọn tất cả sinh viên thì tự động khóa điều khiển danh sách sinh

viên.

 Khi lựa chọn từng sinh viên thì mở khóa điều khiển danh sách sinh viên

cho ngƣời sử dụng lựa chọn.

- Nút lệnh Xem trƣớc

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: X

257

Khi nhấn vào nút lệnh xem trƣớc, chƣơng trình sẽ căn cứ vào lựa chọn của

ngƣời sử dụng để hiển thị tất cả bảng điểm của sinh viên hoặc từng sinh viên tƣơng

ứng tại một form mới.

- Nút lệnh In ấn

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: I

Khi nhấn vào nút lệnh in ấn, chƣơng trình sẽ căn cứ vào lựa chọn của ngƣời sử

dụng để in bảng điểm tƣơng ứng ra máy in mặc định.

- Nút lệnh Kết thúc:

 Font: Microsoft Sans Serif, Bold, 9

 Mầu chữ: Đen

 Phím nóng là: K

Khi nhấn vào nút lệnh hỏi ngƣời dùng có muốn kết thúc điều khiển việc in ấn

không. Nếu chọn Yes sẽ đóng form. Nếu chọn No sẽ trở lại form.

3.3. Bài tập về nhà

Bài tập số 4. Hãy thiết kế các báo cáo và form điều khiển việc in báo cáo cần thiết cho

việc quản lý xuất - nhập kho tại công ty BCD

Bài tập số 5. Hãy thiết kế các báo cáo và form điều khiển việc in báo cáo cần thiết cho

việc quản lý thƣ viện tại trƣờng XYZ

Bài tập số 6. Hãy thiết kế các báo cáo và form điều khiển việc in báo cáo cần thiết cho

việc quản lý ký túc xá

Bài tập số 7. Hãy thiết kế các báo cáo và form điều khiển việc in báo cáo cần thiết cho

việc quản lý các đề tài khoa học tại trƣờng đại học SPK

Bài tập số 8. Hãy thiết kế các báo cáo và form điều khiển việc in báo cáo cần thiết cho

việc quản lý giải bóng đá vô địch quốc gia

Bài tập số 9. Hãy thiết kế các báo cáo và form điều khiển việc in báo cáo cần thiết cho

việc quản lý nhân sự tại công ty ABC

Bài tập số 10. Hãy thiết kế các báo cáo và form điều khiển việc in báo cáo cần thiết

cho việc quản lý thi đua khen thƣởng tại công ty ABC.

258

BÀI 4. LẬP TRÌNH MENU VÀ PHÂN PHỐI ỨNG DỤNG

Mục tiêu

Sau bài học, sinh viên có khả năng:

- Kiến thức: Biết thiết kế hệ thống menu trên form và gắn các chức năng của ứng dụng

vào các mục chọn của hệ thống menu. Biết tạo bộ cài đặt và phân phối ứng dụng.

- Kỹ năng: Vận dụng đƣợc kiến thức thiết kế hệ thống menu trên form và gắn các chức

năng của ứng dụng vào các mục chọn của hệ thống menu. Biết tạo bộ cài đặt và phân

phối ứng dụng vào giải quyết các bài toán thực tế.

- Thái độ:

+ Nghiêm túc, sáng tạo

+ Tích cực tập luyện

Chuẩn bị dụng cụ, vật tư, thiết bị

Chuẩn bị máy tính có hệ điều hành Windows XP hoặc cao hơn, phần mềm

Microsoft Office, bộ gõ Tiếng Việt, phần mềm SQL Server 2000 hoặc cao hơn,phần

mềm Visual Studio 2008 hoặc cao hơn.

4.1. Tóm tắt kiến thức cần nhớ

4.1.1. Menu

Menu là một cách tổ chức để lựa chọn các chức năng nào đó cần thực hiện của

một ứng dụng. Có thể trình bày menu dƣới dạng đồ họa kiểu các button hoặc trình bày

dƣới dạng thanh menu có phân cấp.

259

Hình 142. Menu kiểu các nút lệnh

Hình 143. Menu dạng phân cấp

Trong tài liệu này ta chỉ đề cập tới dạng menu có phân cấp. Với dạng menu có

phân cấp thì cấp đầu tiên là menu bar nó gồm một số mục chọn chính gọi là menu pad.

Khi một menu pad đƣợc chọn thì hoặc thực thi công việc đƣợc gắn với sự kiện của nó

hoặc sẽ thả xuống một menu con gồm nhiều mục chọn cấp thấp hơn gọi là menu

pulldown hoặc menu popup. Khi một mục của menu này đƣợc chọn thì nó thực thi một

công việc gắn với mục chọn này hoặc tiếp tục mở ra một menu con cấp thấp hơn nữa

260

Ngƣời ta thƣờng tổ chức menu trên một form quản lý chung của ứng dụng.

1. Để xây dựng một menu cho một ứng dụng cần thực hiện các bƣớc sau:

1. Thiết kế menu

2. Gắn các mục chọn trên menu với các module chƣơng trình.

3. Chạy thử menu để kiểm tra

4. Hiệu chỉnh menu để đạt yêu cầu

5. Lƣu menu

2. Để xây dựng một form chính chứa menu dùng để quản lý ứng dụng bằng

VB.NET, thực hiện các bƣớc sau:

1. Xây dựng một form mới dạng MDI Parent.

2. Gắn menu vừa tạo vào form.

3. Đƣa các điều khiển vào form.

4. Đặt thuộc tính cho form và các điều khiển trên form

5. Chạy thử để kiểm tra.

6. Hiệu chỉnh form để đạt yêu cầu.

7. Lƣu form.

4.1.2. Phân phối ứng dụng

Sau khi chỉnh sửa, nâng cấp và thử nghiệm các tính năng của ứng dụng đã hoàn

thành thi một trong những bƣớc cuối cùng trong vòng đời phát triển phần mềm là việc

triển khai thực tế của ứng dụng cho ngƣời sử dụng.

Visual Studio .NET hỗ trợ ngƣời sử dụng dễ dàng tạo ra một bộ đĩa cài đặt chạy

trên môi trƣờng Window Form hoặc trên môi trƣờng Web Form bằng các thao tác

đơn giản. Sau khi hoàn thành việc tạo bộ cài đặt chạy trên môi trƣờng Window Form,

ngƣời sử dụng có thể cài đặt, triển khai nó trên hầu hết các máy tính có cài đặt phiên

bản hệ điều hành Windows hiện hành. Riêng các bộ cài đặt ứng dụng trên môi trƣờng

Web Form thì ngƣời sử dụng phải cài đặt nó trên các máy tính có cài đặt hệ điều hành

máy chủ (Window Server 2000 hoặc cao hơn) và có cài đặt dịch vụ IIS.

261

Bảng 8. Bảng danh sách các loại dự án tạo bộ cài đặt

Kiểu dự án cài đặt Mô tả

Setup Project Tạo bộ đóng gói cho ứng dụng Windows (hay còn gói là

ứng dụng chạy trên Desktop)

Merge Module Tạo ra file .msm, đóng gói các components cho phép ngƣời

Project sử dụng chia sẻ các components đó giữa nhiều Project hoặc

nhiều ứng dụng

CAB Project Cho phép ngƣời sử dụng tạo 1 file .cab để nén ActiveX

controls chứ không phải những ứng dụng, tuy nhiên có thể

đƣợc download từ Web server tới trình duyệt web

Web Setup Project Cho phép ngƣời sử dụng triển khai 1 ứng dụng Web tới web

server. Ngƣời sử dụng tạo 1 Web Setup project, build nó tạo

ra file đóng gói, copy file đó tới Web Server, và chạy file đó

để cài đặt ứng dụng này trên server, sử dụng những Setting

định nghĩa Web Setup project của ngƣời sử dụng

Smart Device CAB Tạo Cab project để cài đặt trên ứng dụng trên thiết bị di

Project động

Setup Wizard Nếu ngƣời sử dụng không rõ mình dùng loại đóng gói nào

thì dùng lựa chọn này để dùng trình thuật sỹ Wizard sẽ

hƣớng dẫn chúng ta đi từng bƣớc trong suốt quá trình tạo

file đóng gói. Áp dụng cho mọi loại ứng dụng, kể cả ứng

dụng Web.

Để tạo bộ cài đặt cho ứng dụng (Setup Project) trên môi trƣờng Window Form,

thực hiện các thao tác sau:

- Tạo mới một dự án kiểu Setup Project.

- Thêm các tệp tin thực thi của ứng dụng.

262

- Thêm các biểu tƣợng cho ứng dụng.

- Thêm các tệp tin thƣ viện cần thiết cho ứng dụng.

- Thiết lập thông số cho bộ cài đặt (thƣ mục cài đặt, môi trƣờng chạy ứng

dụng,…)

- Biên dịch thƣ mục cài đặt.

4.2. Hướng dẫn thực hành

4.2.1. Bài tập mẫu

Bài tập số 1: Tiếp tục bài tập số 1 đã thực hiện ở bài 3, thực hiện các công việc

sau:

Công việc 1: Thiết kế form quản lý chung cho ứng dụng vừa xây dựng

Yêu cầu:

 Loại form: MDIForm

 Tiêu đề: Quản lý bán hàng

 Chế độ hiển thị: Lớn nhất

 Thanh trạng thái: Có

 Hỗ trợ xem trƣớc khi nhấn phím: Có

Công việc 2: Thiết kế menu trên form có sử dụng phím nóng để truy cập vào

mục chọn trên menu theo mẫu sau:

263

Hình 144. Form quản lý bán hàng đã gắn menu

Yêu cầu:

- Cấu trúc của menu nhƣ sau:

Cập nhật dữ liệu

Thông tin khách hàng

Danh sách mặt hàng

Bán hàng cho khách

----------

Thoát ra

Tìm kiếm

Tìm kiếm đơn giản

Tìm kiếm phức tạp

Báo cáo

Giấy mời hội nghị khách hàng

264

Bảng kê chi tiết bán hàng

Hóa đơn bán hàng

Báo cáo theo nhóm

Trợ giúp

Hƣớng dẫn sử dụng

Giới thiệu phần mềm

Công việc 3: Gắn các chức năng tƣơng ứng vào các mục chọn cho menu vừa

tạo trên form

Yêu cầu:

- Khi nhấn vào mục chọn Thông tin khách hàng sẽ hiển thị form

frmThongTinKhachHang là form con của form quản lý

- Khi nhấn vào mục chọn Danh sách mặt hàng sẽ hiển thị form

frmDanhSachMatHang là form con của form quản lý

- Khi nhấn vào mục chọn Bán hàng cho khách sẽ hiển thị form

frmChiTietBanHang là form con của form quản lý

- Khi nhấn vào mục chọn Thoát ra sẽ đóng form quản lý và kết thúc ứng dụng

- Khi nhấn vào mục chọn Giấy mời hội nghị khách hàng sẽ hiển thị form

frmInGiayMoi là form con của form quản lý

- Khi nhấn vào mục chọn Báo cáo doanh thu sẽ hiển thị form

frmInBaoCaoDoanhThu là form con của form quản lý

- Khi nhấn vào mục chọn Hướng dẫn sử dụng sẽ mở tệp tin

HuongDanSuDung.doc nằm tại thƣ mục cùng với tệp chạy của ứng dụng

- Khi nhấn vào mục chọn Giới thiệu phần mềm sẽ hiển thị form frmGioiThieu

là form con của form quản lý và căn form frmGioiThieu ở chính giữa form quản lý.

Công việc 4. Tạo bộ cài đặt cho ứng dụng QLYBH

Yêu cầu:

265

- Tích hợp đầy đủ các tập tin cần thiết để chạy ứng dụng trên nền tảng Windows

Desktop;

- Kiểu tệp tin cài đặt: Setup Project;

- Phiên bản đóng gói: Net Framework 4.0;

- Sử dụng trình hỗ trợ cài đặt: Windows Installer 3.1;

- Tạo shortcut của ứng dụng trên màn hình Desktop

Công việc 5. Cài đặt thử nghiệm bộ cài đặt vừa tạo ở công việc 4 và chạy thử

ứng dụng QLYBH trên máy tính khác.

Yêu cầu:

- Viết một báo cáo ngắn gọn về ứng dụng QLYBH

- Chụp hình quá trình cài đặt ứng dụng QLYBH, viết hƣớng dẫn cài đặt cho

ứng dụng QLYBH và lƣu tại đƣờng dẫn

D:\VB.NET\HuongDanSuDung\HuongDanCaiDat.doc

- Gỡ cài đặt ứng dụng QLYBH khỏi máy tính vừa đƣợc cài đặt.

4.2.2. Hướng dẫn thực hiện

Công việc 1: Thiết kế form quản lý chung cho ứng dụng vừa xây dựng theo mẫu

1. Phân tích yêu cầu:

Theo yêu cầu trên thì phải có một form dạng MDI có thuộc tính và các đối

tƣợng sau:

- Đối tƣợng menu có 2 cấp và đƣợc gắn phím nóng, shortcut key cho các mục

chọn

- Đối tƣợng status bar hiển thị thông tin ứng dụng.

- Form quản lý có thể phóng to, thu nhỏ bằng các nút chức năng.

2. Hướng dẫn thao tác:

Để thực hiện việc thiết kế form quản lý theo yêu cầu: Nháy phải chuột vào dự

án đang xây dựng ở cửa sổ Solution Explore, chọn Add/Windows Form. Xuất hiện cửa

sổ Add New Item

266

Hình 145. Cửa sổ Add New Item

Lựa chọn loại MDI Parent Form, sau đó nhập tên from frmQuanLy.vb vào ô

Name. Nhấn vào Add để thêm form vào dự án.

Nháy phải chuột vào form chọn Properties và thiết lập các thông số của form

theo đúng yêu cầu:

 Text: Quản lý bán hàng

 WindowState: Maximized

 KeyPreview: True

 Xóa bỏ các phần không cần thiết

3. Kết quả thiết kế:

Hình 146. Kết quả thiết kế form quản lý

267

4. Kết quả thực thi:

Hình 147. Kết quả thực thi form quản lý

Công việc 2: Thiết kế menu trên form có sử dụng phím nóng để truy cập vào mục chọn

trên menu:

1. Phân tích yêu cầu.

Theo yêu cầu trên thì cần phải xây dựng một hệ thống menu dạng phân cấp (2

cấp).

2. Hướng dẫn thao tác

Để thực hiện việc tạo menu theo đúng yêu cầu: Chọn các mục có sẵn trên menu

của form frmQuanly nhấn Delete để xóa các mục chọn này. Nháy phải chuột vào menu

chọn Edit Items xuất hiện cửa sổ Items Collection Editor

268

Hình 148. Cửa sổ Items Collection Editor

Lựa chọn kiểu MenuItem từ danh sách Select item and add to list below nhấn

Add để thêm mới một mục chọn vào danh sách mục chọn ở khung Members bên dƣới.

Chọn menu vừa tạo và thay đổi các thuộc tính của menu ở khung bên phải:

 Text: Cập nhật dữ liệu

 Name: mnuCapNhatDuLieu

 DropDownItems: (Collection)

 ShortcutKey: None

Nhấn vào biểu tƣợng bên cạnh thuộc tính (Collection) của menu để tạo các

menu con của nó. Cửa sổ Items Collection Editor xuất hiện. Nhấn Add để tạo mới một

menu con. Lựa chọn menu con vừa tạo và thiết lập các thuộc tính cho meu ở khung

bên phải:

 Text: Thông tin &khách hàng (Thông tin khách hàng)

 Name: mnuCapNhatThongTinKhachHang

 DropDownItems: (Collection)

 ShortcutKey: Ctrl+Alt+1

 ShowShortcutKey: True

Nhấn OK để hoàn thành việc tạo menu cho form frmQuanLy.

Làm tƣơng tự với các mục chọn còn lại.

269

3. Kết quả thiết kế

Hình 149. Kết quả thiết kế menu

4. Kết quả thực thi

Hình 150. Kết quả thực thì form quản lý có menu

Công việc 3: Gắn các chức năng tƣơng ứng vào các mục chọn cho menu vừa

tạo trên form.

1. Phân tích yêu cầu

Theo yêu cầu trên thì hệ thống menu có 3 nhóm chức năng chính và ngƣời lập

trình phải viết các mã lệnh cho các chức năng này bao gồm:

- Chức năng hiển thị một form là form con của form quản lý.

270

- Chức năng hiển thị một tệp tin word.

- Chức năng kết thúc ứng dụng.

2. Hướng dẫn thao tác

Để thực hiện việc tạo menu theo đúng yêu cầu: Đƣa chuột đến mục chọn cần

gán thao tác, nhấp đúp chuột vào mục chọn để chuyển về cửa sổ cho phép viết mã lệnh

tƣơng ứng với mục chọn đó và thực hiện viết mã lệnh cho các mục chọn nhƣ sau:

Đoạn mã lệnh gán chức năng mở form frmThongTinKhachHang khi nhấp vào

mục chọn Cập nhật dữ liệu / Thông tin khách hàng trên thanh menu nhƣ sau:

Private Sub mnuCapNhatThongTinKhachHang_Click(ByVal

sender As System.Object, ByVal e As System.EventArgs)

Handles mnuCapNhatThongTinKhachHang.Click

' Khai báo một form con mới là một đối tượng form kế thừa

frmThongTinKhachHang

Dim ChildForm As New frmThongTinKhachHang

' Thiết lập form sắp hiển thị là form con của form hiện tại

ChildForm.MdiParent = Me

' Hiển thị form con

ChildForm.Show()

End Sub

Đoạn mã lệnh gán chức năng mở form frmDanhSachMatHang khi nhấp vào

mục chọn Cập nhật dữ liệu / Danh sách mặt hàng trên thanh menu nhƣ sau:

Private Sub mnuCapNhatDanhSachKhachHang_Click(ByVal

sender As System.Object, ByVal e As System.EventArgs)

271

Handles mnuCapNhatDanhSachKhachHang.Click

' Khai báo một form con mới là một đối tượng form kế thừa

frmDanhSachMatHang

Dim ChildForm As New frmDanhSachMatHang

' Thiết lập form sắp hiển thị là form con của form hiện tại

ChildForm.MdiParent = Me

' Hiển thị form con

ChildForm.Show()

End Sub

Đoạn mã lệnh gán chức năng mở form frmBanHang khi nhấp vào mục chọn

Cập nhật dữ liệu / Bán hàng cho khách trên thanh menu nhƣ sau:

Private Sub mnuCapNhatThongTinBanHang_Click(ByVal

sender As System.Object, ByVal e As System.EventArgs)

Handles mnuCapNhatThongTinBanHang.Click

' Khai báo một form con mới là một đối tượng form kế thừa

frmBanHang

Dim ChildForm As New frmBanHang

' Thiết lập form sắp hiển thị là form con của form hiện tại

ChildForm.MdiParent = Me

' Hiển thị form con

ChildForm.Show()

272

End Sub

Đoạn mã lệnh gán chức năng Thoát ra trên thanh menu nhƣ sau:

Private Sub mnuThoatRa_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

mnuThoatRa.Click

' Thoát khỏi ứng dụng

Application.Exit()

End Sub

Đoạn mã lệnh gán chức năng mở form frmTimKiemDonGian khi nhấp vào mục

chọn Tìm kiếm / Tìm kiếm đơn giản trên thanh menu nhƣ sau:

Private Sub mnuTimKiemDonGian_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

mnuTimKiemDonGian.Click

' Khai báo một form con mới là một đối tượng form kế thừa

frmTimKiemDonGian

Dim ChildForm As New frmTimKiemDonGian

' Thiết lập form sắp hiển thị là form con của form hiện tại

ChildForm.MdiParent = Me

' Hiển thị form con

ChildForm.Show()

273

End Sub

Đoạn mã lệnh gán chức năng mở form frmTimKiemPhucTap khi nhấp vào mục

chọn Tìm kiếm / Tìm kiếm phức tạp trên thanh menu nhƣ sau:

Private Sub mnuTimKiemPhucTap_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

mnuTimKiemPhucTap.Click

' Khai báo một form con mới là một đối tượng form kế thừa

frmTimKiemPhucTap

Dim ChildForm As New frmTimKiemPhucTap

' Thiết lập form sắp hiển thị là form con của form hiện tại

ChildForm.MdiParent = Me

' Hiển thị form con

ChildForm.Show()

End Sub

Đoạn mã lệnh gán chức năng mở form frmGiayMoiHoiNghiKhachHang khi

nhấp vào mục chọn Báo cáo / Giấy mời hội nghị khách hàng trên thanh menu nhƣ sau:

Private Sub

mnuBaoCaoGiayMoiHoiNghiKhachHang_Click(ByVal sender

As System.Object, ByVal e As System.EventArgs) Handles

mnuBaoCaoGiayMoiHoiNghiKhachHang.Click

274

' Khai báo một form con mới là một đối tượng form kế thừa

frmGiayMoiHoiNghiKhachHang

Dim ChildForm As New frmGiayMoiHoiNghiKhachHang

' Thiết lập form sắp hiển thị là form con của form hiện tại

ChildForm.MdiParent = Me

' Hiển thị form con

ChildForm.Show()

End Sub

Đoạn mã lệnh gán chức năng mở form frmBangKeChiTietBanHang khi nhấp

vào mục chọn Báo cáo / Bảng kê chi tiết bán hàng trên thanh menu nhƣ sau:

Private Sub mnuBaoCaoBangKeChiTietBanHang_Click(ByVal

sender As System.Object, ByVal e As System.EventArgs)

Handles mnuBaoCaoBangKeChiTietBanHang.Click

' Khai báo một form con mới là một đối tượng form kế thừa

frmBangKeChiTietBanHang

Dim ChildForm As New frmBangKeChiTietBanHang

' Thiết lập form sắp hiển thị là form con của form hiện tại

ChildForm.MdiParent = Me

' Hiển thị form con

ChildForm.Show()

End Sub

275

Đoạn mã lệnh gán chức năng mở form frmHoaDonBanHang khi nhấp vào mục

chọn Báo cáo / Hóa đơn bán hàng trên thanh menu nhƣ sau:

Private Sub mnuBaoCaoHoaDonBanHang _Click(ByVal sender

As System.Object, ByVal e As System.EventArgs) Handles

mnuBaoCaoHoaDonBanHang.Click

' Khai báo một form con mới là một đối tượng form kế thừa

frmHoaDonBanHang

Dim ChildForm As New frmHoaDonBanHang

' Thiết lập form sắp hiển thị là form con của form hiện tại

ChildForm.MdiParent = Me

' Hiển thị form con

ChildForm.Show()

End Sub

Đoạn mã lệnh gán chức năng mở form frmBaoCaoTheoNhom khi nhấp vào

mục chọn Báo cáo / Báo cáo theo nhóm trên thanh menu nhƣ sau:

Private Sub mnuBaoCaoTheoNhom _Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

mnuBaoCaoTheoNhom.Click

' Khai báo một form con mới là một đối tượng form kế thừa

frmBaoCaoTheoNhom

Dim ChildForm As New frmBaoCaoTheoNhom

276

' Thiết lập form sắp hiển thị là form con của form hiện tại

ChildForm.MdiParent = Me

' Hiển thị form con

ChildForm.Show()

End Sub

Đoạn mã lệnh gán chức năng mở form frmGioiThieuPhanMem khi nhấp vào

mục chọn Trợ giúp / Giới thiệu phần mềm trên thanh menu nhƣ sau:

Private Sub mnuTroGiupGioiThieuPhanMem _Click(ByVal

sender As System.Object, ByVal e As System.EventArgs)

Handles mnuTroGiupGioiThieuPhanMem.Click

' Khai báo một form con mới là một đối tượng form kế thừa

frmGioiThieuPhanMem

Dim ChildForm As New frmGioiThieuPhanMem

' Thiết lập form sắp hiển thị là form con của form hiện tại

ChildForm.MdiParent = Me

' Hiển thị form con

ChildForm.Show()

End Sub

Đoạn mã lệnh gán chức năng mở tập tin HuongDanSuDung.doc đặt tại cùng thƣ

mục chứa tệp tin thực thi của ứng dụng khi nhấp vào mục chọn Trợ giúp / Hƣớng dẫn

sử dụng trên thanh menu nhƣ sau:

277

Private Sub mnuTroGiupHuongDanSuDung _Click(ByVal

sender As System.Object, ByVal e As System.EventArgs)

Handles mnuTroGiupHuongDanSuDung.Click

Dim startInfo As New ProcessStartInfo

startInfo.FileName = "WINWORD.EXE"

startInfo.Arguments = Application.StartupPath.ToString() +

"/HuongDanSuDung.doc"

Process.Start(startInfo)

End Sub

Đoạn mã xác nhận việc đóng form frmQuanLy và thoát khỏi ứng dụng đƣợc

viết trong sự kiện . Đoạn mã xác nhận việc thoát khỏi ứng dụng nhƣ sau:

Private Sub frmQuanLy_FormClosing(ByVal sender As Object,

ByVal e As System.Windows.Forms.FormClosingEventArgs)

Handles Me.FormClosing

If MessageBox.Show("Bạn có chắc chắn muốn thoát khỏi

ứng dụng không?", "Xác nhận", MessageBoxButtons.YesNo,

MessageBoxIcon.Question) =

Windows.Forms.DialogResult.Yes Then

Application.ExitThread()

End If

End Sub

278

3. Kết quả thiết kế:

Phần này sinh viên tự kiểm tra và so sánh kết quả của mình với yêu cầu đề bài.

Điều chỉnh lại thiết kế và mã lệnh nếu cần.

4. Kết quả thực thi:

Phần này sinh viên tự kiểm tra và so sánh kết quả của mình với yêu cầu đề bài.

Công việc 4. Tạo bộ cài đặt cho ứng dụng QLYBH

1. Phân tích yêu cầu

Theo yêu cầu của đề bài, cần tạo một bộ cài đặt dạng đóng gói cho ứng dụng

Windows. Bộ cài đặt này phải đáp ứng các yêu cầu đó là chạy trên nền tảng Net

Framework 4.0, có chức năng tạo shortcut cho ứng dụng ở màn hình nền và có biểu

tƣợng riêng ở cửa sổ Add Remove Program của Windows.

2. Hướng dẫn thao tác

Để thực hiện việc tạo bộ cài đặt cho ứng dụng QLYBH nhƣ sau:

Tạo dự án cài đặt

Lựa chọn File / Add / New Project xuất hiện cửa sổ Add New Project

Hình 151. Cửa sổ Add New Project

Chọn Other Project Types / Setup and Deployment / Visual Studio Installer

Chọn Setup Project, nhập tên dự án vào ô Name. Nhấn OK để thêm mới dự án

tạo bộ cài đặt. Cửa sổ File System của dự án cài đặt xuất hiện.

279

Hình 152. Cửa sổ File System

Thêm các tập tin cần thiết:

Nháy phải chuột vào Application Folder chọn Add / Project Output

Hình 153. Cửa sổ Add Project Output Group

Chọn Primary output sau đó nhấn OK để thêm các tệp tin thực thi của ứng dụng

QLYBH vào bộ cài đặt.

280

Nháy phải chuột vào mục User’s Desktop chọn Create Shortcut to User’s

Desktop sau đó nhập tên cho shortcut này để tạo shortcut của ứng dụng trên màn hình

Desktop khi cài đặt.

Để thêm biểu tƣợng cho shortcut: Nháy phải chuột vào tên shortcut vừa tạo.

Chọn Properties Windows, tìm đến dòng Icon trong cửa sổ Properties sau đó nhấn vào

mũi tên quay xuống của phần giá trị và chọn (Browse …). Lựa chọn một biểu tƣợng đã

có trong cửa sổ Icons hoặc nhấn vào nút Browse để thêm vào một biểu tƣợng khác

Hình 154. Cửa sổ Icon

Hình 155. Cửa sổ Select Item in Project

281

Để thêm các tệp tin cần thiết khác cho ứng dụng: Nháy phải chuột vào mục

Application Folder, chọn Add/File để thêm các tệp tin cần thiết khác cho ứng dụng:

Icon (biểu tƣợng của ứng dụng), tệp tin hƣớng dẫn sử dụng, …

Hình 156. Cửa sổ Add Files cho phép thêm các file cần thiết vào bộ cài đặt

Thiết lập các thông số cho bộ cài đặt:

Để thiết lập các thông số cho bộ cài đặt của ứng dụng ngƣời sử dụng chọn ứng

dụng cài đặt từ cửa sổ Solution Explorer rồi nhấn F4 để chuyển sang cửa sổ Properties

cho phép thay đổi các thông tin khi cài đặt. Một số thuộc tính quan trọng của bộ cài đặt

bao gồm:

 AddRemoveProgramIcon: Biểu tƣợng sẽ xuất hiện trong cửa sổ Add

Remove Program

 Author: Tác giả của ứng dụng, thông tin này sẽ chính là thƣ mục chứa

ứng dụng khi cài đặt

 DetechNewerInstalledVersion: Kiểm tra phiên bản mới trƣớc khi cài đặt

 InstalAllUsers: Có cho phép cài đặt cho tất cả ngƣời dùng sử dụng

không

 Manufacturer: Tên hãng sản xuất, thông tin này sẽ chính là thƣ mục chứa

thƣ mục có tên là giá trị của thuộc tính Author khi cài đặt

282

 ProductName: Tên của ứng dụng xuất hiện khi cài đặt

 RemovePreviousVersions: Có yêu cầu gỡ bỏ phiên bản cũ đã cài đặt trên

máy trƣớc khi cài đặt không

 TargetPlatform: Nền tảng chạy ứng dụng (x86, x64)

 Title: Tiêu đề cửa sổ cài đặt ứng dụng

Bổ xung các thành phần cần thiết khi cài đặt ứng dụng nhƣ nền tảng Net

Frameword, trình ứng dụng hỗ trợ cài đặt của Windows, ứng dụng để hiển thị báo cáo

(nếu xây dựng báo cáo bằng Crystal Report hoặc một hãng khác), … Để bổ xung các

thành phần này: Nháy phải chuột vào dự án cài đặt chọn Properties (Alt + Enter). Xuất

hiện cửa sổ Property Pages

Hình 157. Cửa sổ Property Pages

Nhấn chọn Prerequisites. Cửa sổ Prerequisites xuất hiện cho phép ngƣời sử

dụng lựa chọn các thành phần cần bổ xung khi cài đặt ứng dụng.

283

Hình 158. Cửa sổ Prerequisites

Lựa chọn các thành phần cần thiết sẽ tích hợp vào bộ cài đặt bằng cách tích vào

lựa chọn phía trƣớc mỗi thành phần. Chọn vị trí chứa các thành phần tích hợp ở mục

Specify the install location for prerequisites, sau đó nhấn OK để thêm các thành phần

này vào bộ cài đặt.

Có 3 lựa chọn về vị trí chứa các thành phần cài đặt bổ xung này:

 Trên Website của hãng

 Trên một thƣ mục của bộ cài đặt

 Trên một đƣờng dẫn chỉ định

Biên dịch dự án tạo bộ cài đặt:

Sau khi hoàn thành việc thêm các tệp tin cần thiết và các thành phần cài đặt bổ

xung, ngƣời sử dụng cần tiến hành Build dự án cài đặt vừa tạo để Visual Studio .NET

đóng gói thành các tệp tin thực thi. Để đóng gói dự án cài đặt thành các tệp tin thực

thi: Nháy phải chuột vào dự án cài đặt tại cửa sồ Solution Explorer chọn Build.

Quá trình tạo và đóng gói bộ cài đặt cho ứng dụng hoàn thành. Lúc này ngƣời

sử dụng chỉ việc chép toàn bộ các tệp tin và thƣ mục mà Visual Studio đã tạo ra

(thƣờng nằm trong thƣ mục Debug) và tiến hành cài đặt trên các máy tính khác.

284

3. Kết quả thiết kế:

Hình 159. Kết quả thiết kế bộ cài đặt

4. Kết quả thực thi:

Hình 160. Kết quả thực thi bộ cài đặt

Công việc 5: Các thao tác cài đặt và gỡ bỏ sinh viên tự thực hiện

4.2.3. Bài tập thực hành

Bài tập số 1: Tiếp tục bài tập số 1 đã thực hiện ở bài 3, thực hiện các công việc

sau:

Công việc 1: Thiết kế form quản lý chung cho ứng dụng quản lý phân công

giảng dạy vừa xây dựng

Yêu cầu:

 Loại form: MDIForm

285

 Tiêu đề: Quản lý phân công giảng dạy

 Chế độ hiển thị: Lớn nhất

 Thanh trạng thái: Có

 Hỗ trợ xem trƣớc khi nhấn phím: Có

Công việc 2: Thiết kế menu trên form có sử dụng phím nóng để truy cập vào

mục chọn trên menu theo mẫu sau:

Hình 161. Form quản lý phân công giảng dạy đã gắn menu

Yêu cầu:

- Cấu trúc của menu nhƣ sau:

Cập nhật dữ liệu

Thông tin giáo viên

Danh sách môn học

Phân công giảng dạy

----------

Thoát ra

286

Tìm kiếm

Tìm kiếm giáo viên.

Tìm kiếm môn học.

Tìm kiếm phân công giáo viên.

Báo cáo

Danh sách giáo viên

Phân công giảng dạy của giáo viên

Phân công giảng dạy của bộ môn

Phân công giáo viên theo môn học

Trợ giúp

Hƣớng dẫn sử dụng

Giới thiệu phần mềm

Công việc 3: Gắn các chức năng tƣơng ứng vào các mục chọn cho menu vừa

tạo trên form

Yêu cầu:

- Khi nhấn vào mục chọn Thông tin giáo viên sẽ thi hành form chứa thông tin

giáo viên là form con của form quản lý

- Khi nhấn vào mục chọn Danh sách giáo viên sẽ thi hành form chứa thông tin

môn học là form con của form quản lý

- Khi nhấn vào mục chọn Phân công giảng dạy sẽ thi hành form cho phép phân

công giảng dạy cho giáo viên là form con của form quản lý

- Khi nhấn vào mục chọn Thoát ra sẽ đóng form quản lý và kết thúc ứng dụng

- Khi nhấn vào mục chọn Danh sách giáo viên sẽ hiển thị form điều khiển việc

in danh sách giáo viên là form con của form quản lý

287

- Khi nhấn vào mục chọn Phân công giảng dạy giáo viên sẽ hiển thị form điều

khiển việc in ấn bảng phân công giảng dạy của giáo viên là form con của form quản lý

- Khi nhấn vào mục chọn Phân công giảng dạy của bộ môn sẽ hiển thị form

điều khiển việc in ấn bảng phân công giảng dạy của các giáo viên trong bộ môn là

form con của form quản lý

- Khi nhấn vào mục chọn Phân công giảng dạy theo môn học sẽ hiển thị form

điều khiển việc in ấn bảng phân công giảng dạy của giáo viên theo môn học là form

con của form quản lý

- Khi nhấn vào mục chọn Hướng dẫn sử dụng sẽ mở tệp tin

HuongDanSuDung.doc nằm tại thƣ mục cùng với tệp chạy của ứng dụng

- Khi nhấn vào mục chọn Giới thiệu phần mềm sẽ hiển thị form frmGioiThieu

là form con của form quản lý và căn form frmGioiThieu ở chính giữa form quản lý.

Công việc 4. Tạo bộ cài đặt cho ứng dụng QLYPC

Yêu cầu:

- Tích hợp đầy đủ các tập tin cần thiết để chạy ứng dụng trên nền tảng Windows

Desktop;

- Kiểu tệp tin cài đặt: Setup Project;

- Phiên bản đóng gói: ;

- Sử dụng trình hỗ trợ cài đặt: Windows Installer 3.1;

- Tạo shortcut của ứng dụng trên màn hình Desktop

Công việc 5. Cài đặt thử nghiệm bộ cài đặt vừa tạo ở công việc 4 và chạy thử

ứng dụng QLYPC trên máy tính khác.

Yêu cầu:

- Viết một báo cáo ngắn gọn về ứng dụng QLYBH

288

- Chụp hình quá trình cài đặt ứng dụng QLYBH, viết hƣớng dẫn cài đặt cho

ứng dụng QLYPC và lƣu tại đƣờng dẫn

D:\VB.NET\HuongDanSuDung\HuongDanCaiDat.doc

- Gỡ cài đặt ứng dụng QLYPC khỏi máy tính vừa đƣợc cài đặt.

Bài tập số 2: Tiếp tục bài tập số 1 đã thực hiện ở bài 3, thực hiện các công việc

sau:

Công việc 1: Thiết kế form quản lý chung cho ứng dụng vừa xây dựng

Yêu cầu:

 Loại form: MDIForm

 Tiêu đề: Quản lý tài sản

 Chế độ hiển thị: Lớn nhất

 Thanh trạng thái: Có

 Hỗ trợ xem trƣớc khi nhấn phím: Có

Công việc 2: Thiết kế menu trên form có sử dụng phím nóng để truy cập vào

mục chọn trên menu theo mẫu sau:

Hình 162. Form quản lý tài sản đã gắn menu

Yêu cầu:

289

- Cấu trúc của menu nhƣ sau:

Cập nhật dữ liệu

Thông tin tài sản

Danh sách đơn vị

Quản lý tài sản

Tìm kiếm

Tìm kiếm tài sản

Tìm kiếm đơn vị

Tìm kiếm tài sản thuộc đơn vị

Tìm kiếm tài sản có tình trạng

Báo cáo

In nhãn cho tài sản

Báo cáo tài sản tại đơn vị

Báo cáo tài sản có tình trạng

Trợ giúp

Hƣớng dẫn sử dụng

Giới thiệu phần mềm

----------

Thoát ra

Công việc 3: Gắn các chức năng tƣơng ứng vào các mục chọn cho menu vừa

tạo trên form

Yêu cầu:

- Khi nhấn vào mục chọn Thông tin tài sản sẽ thi hành form

frmThongTinKhachHang là form con của form quản lý

290

- Khi nhấn vào mục chọn Danh sách đơn vị sẽ thi hành form

frmDanhSachMatHang là form con của form quản lý

- Khi nhấn vào mục chọn Quản lý tài sản sẽ thi hành form frmQuanLyTaiSan là

form con của form quản lý

- Khi nhấn vào mục chọn Thoát ra sẽ đóng form quản lý và kết thúc ứng dụng

- Khi nhấn vào mục chọn In nhãn tài sản sẽ hiển thị form điều khiển việc in ấn

nhãn tài sản là form con của form quản lý

- Khi nhấn vào mục chọn Báo cáo tài sản tại đơn vị sẽ hiển thị form điều khiển

việc in ấn danh mục tài sản tại đơn vị là form con của form quản lý

- Khi nhấn vào mục chọn Báo cáo tài sản theo tình trạng sẽ hiển thị form điều

khiển việc in ấn danh mục tài sản có tình trạng là form con của form quản lý

- Khi nhấn vào mục chọn Hướng dẫn sử dụng sẽ mở tệp tin

HuongDanSuDung.doc nằm tại thƣ mục cùng với tệp chạy của ứng dụng

- Khi nhấn vào mục chọn Giới thiệu phần mềm sẽ hiển thị form frmGioiThieu

là form con của form quản lý và căn form frmGioiThieu ở chính giữa form quản lý.

- Khi nhấn vào mục chọn Tìm kiếm tài sản sẽ hiển thị form cho phép tìm kiếm

thông tin về tài sản.

- Khi nhấn vào mục chọn Tìm kiếm đơn vị sẽ hiển thị form cho phép tìm kiếm

thông tin về đơn vị.

- Khi nhấn vào mục chọn Tìm kiếm tài sản thuộc đơn vị sẽ hiển thị form cho

phép tìm kiếm thông tin về tài sản thuộc đơn vị.

- Khi nhấn vào mục chọn Tìm kiếm tài sản có tình trạng sẽ hiển thị form cho

phép tìm kiếm thông tin về tài sản có tình trạng theo chỉ định.

Công việc 4. Tạo bộ cài đặt cho ứng dụng QLYTS

Yêu cầu:

- Tích hợp đầy đủ các tập tin cần thiết để chạy ứng dụng trên nền tảng Windows

Desktop;

- Kiểu tệp tin cài đặt: Setup Project;

- Phiên bản đóng gói: ;

- Sử dụng trình hỗ trợ cài đặt: Windows Installer 3.1;

291

- Tạo shortcut của ứng dụng trên màn hình Desktop

Công việc 5. Cài đặt thử nghiệm bộ cài đặt vừa tạo ở công việc 4 và chạy thử

ứng dụng QLYBH trên máy tính khác.

Yêu cầu:

- Viết một báo cáo ngắn gọn về ứng dụng QLYTS

- Chụp hình quá trình cài đặt ứng dụng QLYBH, viết hƣớng dẫn cài đặt cho

ứng dụng QLYTS và lƣu tại đƣờng dẫn

D:\VB.NET\HuongDanSuDung\HuongDanCaiDat.doc

- Gỡ cài đặt ứng dụng QLYTS khỏi máy tính vừa đƣợc cài đặt.

Bài tập số 3: Tiếp tục bài tập số 1 đã thực hiện ở bài 3, thực hiện các công việc

sau:

Công việc 1: Thiết kế form quản lý chung cho ứng dụng quản lý điểm vừa xây

dựng

Yêu cầu:

 Loại form: MDIForm

 Tiêu đề: Quản lý bán hàng

 Chế độ hiển thị: Lớn nhất

 Thanh trạng thái: Có

 Hỗ trợ xem trƣớc khi nhấn phím: Có

Công việc 2: Thiết kế menu trên form có sử dụng phím nóng để truy cập vào

mục chọn trên menu theo mẫu sau:

292

Hình 163. Form quản lý điểm đã gắn menu

Yêu cầu:

- Cấu trúc của menu nhƣ sau:

Cập nhật dữ liệu

Thông tin sinh viên

Thông tin khoa

Thông tin lớp học phần

Thông tin môn học

Điểm sinh viên

Tìm kiếm

Tìm kiếm sinh viên

Tìm kiếm môn học

Tìm kiếm điểm của sinh viên trong học kỳ

Tìm kiếm điểm của sinh viên theo môn

Báo cáo

293

Giấy báo kết quả học tập

Bảng điểm sinh viên

Bảng điểm môn học

Bảng điểm lớp niên chế

Trợ giúp

Hƣớng dẫn sử dụng

Giới thiệu phần mềm

----------

Thoát ra

Công việc 3: Gắn các chức năng tƣơng ứng vào các mục chọn cho menu vừa

tạo trên form

Yêu cầu:

- Khi nhấn vào mục chọn Thông tin sinh viên sẽ thi hành form quản lý thông tin

sinh viên là form con của form quản lý

- Khi nhấn vào mục chọn Thông tin khoa sẽ thi hành form quản lý thông tin

khoa là form con của form quản lý

- Khi nhấn vào mục chọn Thông tin môn học sẽ thi hành form quản lý thông tin

môn học là form con của form quản lý

- Khi nhấn vào mục chọn Thông tin lớp học phần sẽ thi hành form quản lý

thông tin lớp học phần là form con của form quản lý

- Khi nhấn vào mục chọn Quản lý điểm sẽ thi hành form cập nhật điểm cho sinh

viên là form con của form quản lý

- Khi nhấn vào mục chọn Thoát ra sẽ đóng form quản lý và kết thúc ứng dụng

- Khi nhấn vào mục chọn Giấy báo kết quả học tập sẽ hiển thị form điều khiển

việc in xem giấy báo kết quả học tập của sinh viên là form con của form quản lý

294

- Khi nhấn vào mục chọn Bảng điểm sinh viên sẽ hiển thị form điều khiển việc

in xem bảng điểm của sinh viên là form con của form quản lý

- Khi nhấn vào mục chọn Bảng điểm sinh viên theo lớp niên chế sẽ hiển thị

form điều khiển việc in xem bảng điểm của sinh viên theo lớp niên chế là form con

của form quản lý

- Khi nhấn vào mục chọn Bảng điểm sinh viên theo môn sẽ hiển thị form điều

khiển việc in xem bảng điểm của sinh viên theo môn là form con của form quản lý

- Khi nhấn vào mục chọn Hướng dẫn sử dụng sẽ mở tệp tin

HuongDanSuDung.doc nằm tại thƣ mục cùng với tệp chạy của ứng dụng

- Khi nhấn vào mục chọn Giới thiệu phần mềm sẽ hiển thị form frmGioiThieu

là form con của form quản lý và căn form frmGioiThieu ở chính giữa form quản lý.

Công việc 4. Tạo bộ cài đặt cho ứng dụng QLYDIEM

Yêu cầu:

- Tích hợp đầy đủ các tập tin cần thiết để chạy ứng dụng trên nền tảng Windows

Desktop;

- Kiểu tệp tin cài đặt: Setup Project;

- Phiên bản đóng gói: ;

- Sử dụng trình hỗ trợ cài đặt: Windows Installer 3.1;

- Tạo shortcut của ứng dụng trên màn hình Desktop

Công việc 5. Cài đặt thử nghiệm bộ cài đặt vừa tạo ở công việc 4 và chạy thử

ứng dụng QLYDIEM trên máy tính khác.

Yêu cầu:

- Viết một báo cáo ngắn gọn về ứng dụng QLYDIEM

- Chụp hình quá trình cài đặt ứng dụng QLYBH, viết hƣớng dẫn cài đặt cho

ứng dụng QLYDIEM và lƣu tại đƣờng dẫn

D:\VB.NET\HuongDanSuDung\HuongDanCaiDat.doc

295

- Gỡ cài đặt ứng dụng QLYDIEM khỏi máy tính vừa đƣợc cài đặt.

4.3. Bài tập về nhà

Bài tập số 4. Tạo form quản lý và hệ thống menu cho ứng dụng xuất nhập kho công ty

BCD. Tạo bộ cài đặt cho ứng dụng này.

Bài tập số 5. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin thƣ viện tại trƣờng XYZ

Bài tập số 6. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin ký túc xá

Bài tập số 7. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin các đề tài khoa học tại trƣờng đại học SPK

Bài tập số 8. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin giải bóng đá vô địch quốc gia

Bài tập số 9. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin nhân sự tại công ty ABC

Bài tập số 10. Hãy thiết kế cơ sở dữ liệu phù hợp và các form cần thiết cho việc tìm

kiếm thông tin thi đua khen thƣởng tại công ty ABC

296

BÀI TẬP NHÓM.

Ca thực tập đƣợc chia thành các nhóm nhỏ, mỗi nhóm có tối đa 3 thành viên.

Tiến hành bốc thăm ngẫu nhiên để chọn một bài tập nhóm dƣới đây.

Yêu cầu:

Có bảng phân công nhiệm vụ và chữ ký xác nhận của các thành viên trong

nhóm.

Thời gian hoàn thành bài tập nhóm là 7 ngày kể từ khi nhận nhiệm vụ.

Bài tập nhóm hoàn thành đƣợc lƣu chung trong một thƣ mục có cấu trúc nhƣ

sau:

Trong đó:

+ Thƣ mục “BoCaiDat” chứa các tệp tin cần thiết cho việc cài đặt, phân phối

ứng dụng vừa xây dựng.

+ Thƣ mục “CoSoDuLieu” chứa tệp tin backup cơ sở dữ liệu của ứng dụng.

+ Thƣ mục “MaNguon” chứa toàn bộ Project của ứng dụng.

+ Tệp tin “Bảng phân công nhiệm vụ.docx” chứa thông tin về bài tập nhóm và

phân công nhiệm vụ các thành viên trong nhóm.

+ Tệp tin “Hƣớng dẫn cài đặt.docx” chứa thông tin đính kèm dữ liệu cho ứng

dụng và hƣớng dẫn cài đặt để chạy ứng dụng trên các máy tính khác.

Danh sách các bài tập nhóm

1. Xây dựng hệ thống quản lý bán vé tầu qua mạng

297

2. Xây dựng hệ thống quản lý bảo hiểm nhân thọ của công ty DEF

3. Xây dựng hệ thống quản lý giải bóng đá trƣờng

4. Xây dựng hệ thống quản lý nhân sự công ty SNO

5. Xây dựng hệ thống quản lý thiết bị tại công ty SHO

6. Xây dựng hệ thống quản lý đề tài khoa học tại trƣờng SPK/

7. Xây dựng hệ thống quản lý bán hàng cho cửa hàng văn phòng phẩm ABC.

8. Xây dựng hệ thống quản lý bán hàng cho cửa hàng thuốc tân dƣợc TBO.

9. Xây dựng hệ thống quản lý bán hàng cho chuỗi cửa hàng thời trang Việt

Tiến.

10. Xây dựng hệ thống quản lý bảo hành sản phẩm cho sản phẩm bình nƣớc

nóng của hãng SAMSUN.

11. Xây dựng hệ thống quản lý sách tại thƣ viện trƣờng GHY.

12. Xây dựng hệ thống quản lý điểm của học viên cho trung tâm đào tạo ngắn

hạn.

13. Xây dựng phần mềm quản lý bán máy tính cho cửa hàng BACTHA.

14. Xây dựng hệ thống quản lý ra vào của công nhân trong công ty may

SONHON.

15. Xây dựng hệ thống quản lý thuê xe cho công ty du lịch TANSON.

298

DANH MỤC TÀI LIỆU THAM KHẢO

Tiếng Việt

[1] Phạm Hùng Phú, Nguyễn Văn Thẩm, Giáo trình hệ quản trị cơ sở dữ liệu,

Trƣờng đại học SPKT Nam Định, 2013.

[2] Đoàn Tuấn Nam, Giáo trình lập trình cơ sở dữ liệu, Trƣờng đại học SPKT

Nam Định, 2012.

Tiếng Anh

[3] Ying Bai, Practical database programming with Visual Basic.NET (PDF).

IEEE Press, 2012.

[4] Evangelos Petroutsos and Asli Bilgin, Mastering Visual Basic .NET Database

Programming, Richard Mills, 2002

Website

[5] http://www.codeproject.com/

[6] http://caulacbovb.com/

[7] http://blog.sqlauthority.com/

[8] http://www.sqlviet.com/blog/

299