You are on page 1of 481

TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI

SQL, VBA VÀ
EXCEL”

TÀI LIỆU HƯỚNG DẪN KHÓA HỌC


“XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM
BÁO CÁO TỰ ĐỘNG VỚI SQL,
VBA VÀ EXCEL”
MasterMOS Education & Training Ltd

© Ngọc Chiến 10/04/2018 www.mastermos.edu.vn


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

LỜI CẢM ƠN TỪ MASTERMOS


Cảm ơn các anh/chị/em đã quan tâm đến khóa học “Xử lý dữ liệu đỉnh cao, làm báo cáo tự
động với SQL và Excel”, MasterMOS xin gửi tặng các anh chị một tài liệu đầy đủ nhất đi kèm với
khóa học.
Tài liệu này được thực hiện theo một trình tự dễ học và dễ thực hành, đi kèm với các hình
ảnh minh họa chi tiết từng bước một, nhằm giúp các anh chị có thể tự tin thực hành trong suốt khóa
học và sau khi kết thúc khóa học.
Nếu như trong quá trình sử dụng, các anh/chị/em muốn nội dung nào cần được nói rõ thêm,
anh/chị/em vui lòng gửi email phản hồi về mastermosvn@gmail.com hoặc SMS/Call qua Mobile
theo số 0987581645.
Khóa học “Xử lý dữ liệu đỉnh cao, làm báo cáo tự động với SQL và Excel” là khóa học đầu
tiên trên thị trường Việt Nam hướng dẫn các anh/chị/em từng bước làm chủ công nghệ làm báo cáo
tự động, khóa học được sáng tạo và triển khai bởi MasterMOS, MasterMOS rất mong các anh chị
không chia sẻ một phần hay toàn bộ tài liệu này cho những người không phải là học viên của
MasterMOS.
MasterMOS trân trọng cảm ơn các anh/chị/em và hy vọng sẽ được đồng hành cùng các
anh/chị/em trong các khóa học khác của trung tâm.
Chúc các anh/chị/em sức khỏe, hạnh phúc và thành đạt.

Hà Nội, ngày 10/04/2018


Version 3.0
Nguyễn Ngọc Chiến
CEO Trung tâm tin học MasterMOS
Giám đốc công ty TNHH Giáo dục và đào tạo MasterMOS

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 1


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

MỤC LỤC
Contents
LỜI CẢM ƠN TỪ MASTERMOS.............................................................................................................................. 1
Bài 1: Logic & trình tự học thực hành................................................................................................................ 9
Bài 2: SQL là gì ....................................................................................................................................................... 10
1. SQL là gì? .................................................................................................................................................... 10
2. Tại sao sử dụng SQL ................................................................................................................................. 10
3. Lịch sử ngắn gọn của SQL........................................................................................................................ 10
4. Các câu lệnh SQL có các dạng DDL, DML, DCL ..................................................................................... 11
Bài 3: RDBMS là gì?............................................................................................................................................... 12
1. RDBMS là gì? .............................................................................................................................................. 12
2. Bảng là gì? .................................................................................................................................................. 12
3. Trường là gì ............................................................................................................................................... 12
4. Bản ghi hoặc một hàng (row) là gì?....................................................................................................... 12
5. Cột (column) là gì? ................................................................................................................................... 13
6. Một giá trị NULL là gì? .............................................................................................................................. 13
7. Constraint (ràng buộc) trong SQL ......................................................................................................... 13
8. Toàn vẹn dữ liệu ....................................................................................................................................... 14
Bài 4: Các hệ quản trị cơ sở dữ liệu .................................................................................................................. 15
1. MySQL ......................................................................................................................................................... 15
2. MS SQL Server ........................................................................................................................................... 15
3. ORACLE ....................................................................................................................................................... 16
4. MS ACCESS.................................................................................................................................................. 17
Bài 5: Tìm hiểu sự khác biệt giữa Windows 64bit và Windows 32bit ....................................................... 19
Bài 6: Hướng dẫn cài đặt phần mềm SQL Server 2014 ................................................................................. 22
Bài 7: Tạo thư mục thực hành SQL_Excel......................................................................................................... 41
Bài 8: Cấu hình SQL Server Configuration Manager đảm bảo sự sẵn sàng sử dụng của SQL Server .... 42
Bài 9: Sử dụng SQL Server Management Studio (SSMS) để quản trị cơ sở dữ liệu .................................. 59
Bài 10: Tạo cơ sở dữ liệu INTERFACE, DATA_MART & REPORT_SYSTEM ................................................. 63
Bài 11: Tạo các bảng trong cơ sở dữ liệu, import và export dữ liệu .......................................................... 69
1. TẠO BẢNG DỮ LIỆU VỚI FILE TEXT .......................................................................................................... 69
2. TẠO BẢNG DỮ LIỆU VỚI FILE EXCEL ........................................................................................................ 87
3. TẠO BẢNG BẰNG CÁCH COPY TABLE GIỮA CÁC DATABASE .............................................................. 113

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 2


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
4. EXPORT RA TEXT FILE TỪ 1 BẢNG DỮ LIỆU ĐỂ GỬI CHO ĐƠN VỊ KHÁC SỬ DỤNG ...................... 123
5. CÁCH IMPORT FILE TEXT VÀO EXCEL MỘT CÁCH CHUẨN NHẤT (MICROSOFT HƯỚNG DẪN).... 134
Bài 12: Các kiểu dữ liệu phổ biến thường dùng trong SQL Server ........................................................... 139
1. Các Kiểu dữ liệu số nguyên ...................................................................................................................... 139
2. Kiểu dữ liệu số có dấu phảy động ........................................................................................................... 139
3. Các Kiểu dữ liệu Date and Time .............................................................................................................. 140
4. Các Kiểu dữ liệu chuỗi ký tự .................................................................................................................... 140
5. Các Kiểu dữ liệu chuỗi ký tự Unicode .................................................................................................... 141
6. Các Kiểu dữ liệu nhị phân......................................................................................................................... 141
7. Các Kiểu dữ liệu khác ................................................................................................................................ 142
Bài 13: Các toán tử trong SQL .......................................................................................................................... 143
1. Toán tử trong SQL là gì? ........................................................................................................................ 143
2. Các toán tử số học trong SQL ................................................................................................................ 143
3. Các toán tử so sánh trong SQL.............................................................................................................. 143
4. Các toán tử logical trong SQL ............................................................................................................... 144
Bài 14: Biểu thức trong SQL ............................................................................................................................. 146
1. Cú pháp................................................................................................................................................. 146
2. Biểu thức Boolean .............................................................................................................................. 146
3. Biểu thức Numeric ............................................................................................................................. 147
4. Biểu thức Date .................................................................................................................................... 148
Bài 15: Các câu lệnh thao tác với cơ sở dữ liệu Database .......................................................................... 149
1. Create Database ...................................................................................................................................... 149
2. Drop Database ........................................................................................................................................ 149
3. Select Database ....................................................................................................................................... 150
Bài 16: Các câu lệnh thao tác với bảng dữ liệu Table .................................................................................. 152
1. Lệnh tạo bảng dữ liệu – CREATE TABLE ............................................................................................ 152
2. Thêm trường/cột dữ liệu vào bảng - ALTER TABLE ADD.............................................................. 152
3. Xóa cột trong một bảng – ALTER TABLE DROP COLUMN................................................................ 152
4. Xóa toàn bộ dữ liệu trong 1 bảng – TRUNCATE TABLE ................................................................... 153
5. Xóa bảng dữ liệu - DROP TABLE ......................................................................................................... 153
6. Đổi kiểu dữ liệu Data Type cho 1 trường/cột dữ liệu – ALTER TABLE ALTER COLUMN ......... 153
7. Đổi tên của trường dữ liệu trong bảng .............................................................................................. 153
Bài 17: Các câu lệnh thao tác với dữ liệu Record ......................................................................................... 154
1. Câu lệnh SELECT ..................................................................................................................................... 154
1.1 SELECT TEN_COT ................................................................................................................................... 154

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 3


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
1.2 SELECT * ................................................................................................................................................. 154
1.3 SELECT TOP(n) * .................................................................................................................................... 154
1.4 SELECT DISTINCT .................................................................................................................................. 155
1.5 SELECT * INTO........................................................................................................................................ 155
1.6 SELECT * INTO WHERE ......................................................................................................................... 156
2. Câu lệnh WHERE ..................................................................................................................................... 156
3. Câu lệnh GROUP BY ................................................................................................................................ 156
4. Câu lệnh ORDER BY ................................................................................................................................ 157
5. Câu lệnh INSERT INTO ........................................................................................................................... 158
6. Câu lệnh UPDATE ................................................................................................................................... 160
7. Câu lệnh DELETE .................................................................................................................................... 161
8. Câu lệnh UNION / UNION ALL............................................................................................................... 162
9. Câu lệnh HAVING .................................................................................................................................... 163
10. Sử dụng AND, OR, IN, BETWEEN, LIKE............................................................................................ 164
Bài 18: Xử lý DATE trong SQL Server ............................................................................................................. 167
Bài 19: Một số hàm tính toán cơ bản trong SQL Server .............................................................................. 170
Bài 20: Một số hàm xử lý chuỗi trong SQL Server ........................................................................................ 172
Bài 21: Một số hàm quan trọng khác trong SQL Server .............................................................................. 174
SQL Server Conversion Functions ............................................................................................................... 174
SQL Server CONVERT() Function .................................................................................................................... 174
Definition and Usage ..................................................................................................................................... 174
Syntax ............................................................................................................................................................... 174
Parameter Values ........................................................................................................................................... 174
More Examples ............................................................................................................................................... 178
Example ........................................................................................................................................................ 178
Example ........................................................................................................................................................ 178
Example ........................................................................................................................................................ 178
SQL Server Advanced Functions.................................................................................................................. 179
Bài 22: Hướng dẫn sử dụng Excel để viết câu lệnh SQL, tăng tốc độ viết câu lệnh ................................ 181
Bài 23: Cách di chuyển Database sang máy khác ......................................................................................... 184
Bài 24: Cách tạo thủ tục Stored Procedure trong SQL Server .................................................................... 201
Bài 25: Phân tích hai thủ tục Stored Procedure DAILY_DATA_PROCESS và
KQKD_DAILY_TABLE_PROCESS trong Database REPORT_SYSTEM........................................................... 210
(1) Thủ tục DAILY_DATA_PROCESS ........................................................................................................ 210
(2) Thủ tục KQKD_DAILY_TABLE_PROCESS .......................................................................................... 211
Bài 26: Xây dựng Data Model để làm báo cáo Dashboard trên Excel ....................................................... 216

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 4


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Bài 27: Kết nối SQL Server với Excel có sử dụng tham số .......................................................................... 217
Bài 28: Một số kiến thức Excel quan trọng ứng dụng trong làm báo cáo ................................................ 241
Bài 29: Học VBA qua ví dụ để tự động hóa công việc ................................................................................... 242
1. Tổng quan về VBA .................................................................................................................................. 242
VBA là gì?....................................................................................................................................................... 242
Excel VBA là gì? ............................................................................................................................................. 242
Tại sao bạn nên học Excel VBA? .................................................................................................................. 242
Macro là gì? ................................................................................................................................................... 242
2. Tạo một Macro trong Excel................................................................................................................... 242
1. Bật Developer Tab .................................................................................................................................... 243
2. Save As Excel file thành Excel Macro File (từ excel 2007 trở lên) ........................................................ 244
3. Viết code VBA............................................................................................................................................ 245
4. Run code VBA............................................................................................................................................ 248
3. Insert button ........................................................................................................................................... 248
4. Gán thủ tục macro cho button.............................................................................................................. 250
5. Run ............................................................................................................................................................ 250
6. MsgBox trong Excel VBA ....................................................................................................................... 251
Ví dụ về MsgBox trong Excel VBA ................................................................................................................... 251
7. Hệ thống các đối tượng trong Excel VBA ........................................................................................... 252
Các đối tượng trong Excel VBA........................................................................................................................ 252
Mỗi đối tượng có nhiều thành viên khác nhau ............................................................................................... 254
8. Đối tượng Application trong Excel VBA ............................................................................................. 254
Các phương thức của đối tượng Application.................................................................................................. 254
Các thuộc tính của đối tượng Application ...................................................................................................... 254
Sử dụng các phương thức của Application ..................................................................................................... 255
Sử dụng các thuộc tính của Application.......................................................................................................... 257
9. Đối tượng Workbook trong Excel VBA .............................................................................................. 260
Các phương thức của đối tượng Workbook ................................................................................................... 260
Các thuộc tính của đối tượng Workbook ........................................................................................................ 266
10. Đối tượng Worksheet trong Excel VBA .......................................................................................... 266
Các phương thức của đối tượng Worksheet................................................................................................... 266
11. Đối tượng Range trong Excel VBA................................................................................................... 272
Ví dụ đối tượng Range trong Excel VBA ......................................................................................................... 272
Khai báo một đối tượng Range ........................................................................................................................ 273
Các phương thức của đối tượng Range ........................................................................................................... 274

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 5


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Các thuộc tính của đối tượng Range ............................................................................................................... 277
12. Biến và kiểu dữ liệu trong VBA........................................................................................................ 280
Kiểu dữ liệu trong VBA..................................................................................................................................... 280
Biến trong VBA ................................................................................................................................................. 281
Ví dụ biến trong VBA ........................................................................................................................................ 282
13. Toán tử trong VBA ............................................................................................................................. 284
14. Function trong VBA ............................................................................................................................ 287
Cú pháp của Function trong VBA .................................................................................................................... 287
Đặc điểm của Function trong VBA .................................................................................................................. 288
Ví dụ Function trong VBA ................................................................................................................................ 288
Gọi một Function trong VBA ............................................................................................................................ 289
15. Sub trong VBA ..................................................................................................................................... 292
Cú pháp của Sub trong VBA ............................................................................................................................. 292
Gọi một Sub trong VBA .................................................................................................................................... 293
16. Khối lệnh With-End With trong VBA .............................................................................................. 296
Cú pháp.............................................................................................................................................................. 296
Ví dụ khối lệnh With-End With trong VBA ..................................................................................................... 296
17. Mảng (Array) trong VBA ................................................................................................................... 298
1. Khai báo mảng trong VBA ............................................................................................................................ 299
2. Gán giá trị cho mảng ..................................................................................................................................... 299
3. Mảng đa chiều trong VBA ............................................................................................................................. 301
4. Mảng động trong VBA .................................................................................................................................. 302
5. Các phương thức xử lý mảng trong VBA..................................................................................................... 303
18. Collection trong VBA.......................................................................................................................... 312
1. Add reference “Microsoft Scripting Runtime”............................................................................................ 312
2. Hướng dẫn nhanh về việc sử dụng Collection ............................................................................................ 313
3. Ví dụ về Collection trong VBA...................................................................................................................... 314
4. Phương thức Add trong Collection ............................................................................................................. 316
5. Ưu/Nhược điểm của Collection trong VBA ................................................................................................ 318
19. Dictionary trong VBA......................................................................................................................... 318
1. Add reference “Microsoft Scripting Runtime” (* bắt buộc). ...................................................................... 319
2. Hướng dẫn nhanh về việc sử dụng Dictionary trong VBA. ........................................................................ 319
3. Ví dụ về Dictionary trong VBA. .................................................................................................................... 320
20. Debug trong Excel VBA ...................................................................................................................... 322
Các khái niệm trong Debug .............................................................................................................................. 323

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 6


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Làm thế nào để debug ...................................................................................................................................... 323
Các phím tắt để Debug ..................................................................................................................................... 324
Ví dụ Debug trong Excel VBA........................................................................................................................... 324
21. Xử lý lỗi trong VBA ............................................................................................................................. 328
1. Các loại lỗi ..................................................................................................................................................... 328
Xử lý lỗi trong VBA ........................................................................................................................................... 329
22. Truyền tham chiếu và giá trị trong VBA ........................................................................................ 332
Ví dụ truyền tham chiếu và giá trị ................................................................................................................... 333
23. Mệnh đề if-else trong VBA ................................................................................................................ 335
1. Mệnh đề if ...................................................................................................................................................... 335
2. Mệnh đề if-else .............................................................................................................................................. 337
3. Mệnh đề if-elseif-else ................................................................................................................................... 338
4. Mệnh đề if lồng nhau .................................................................................................................................... 340
24. Vòng lặp for trong VBA ...................................................................................................................... 342
Cú pháp.............................................................................................................................................................. 342
Ví dụ về vòng lặp for trong VBA ...................................................................................................................... 343
Ví dụ về thoát vòng lặp for trong VBA ............................................................................................................ 345
25. Vòng lặp For Each trong VBA ........................................................................................................... 346
Cú pháp.............................................................................................................................................................. 346
ví dụ về vòng lặp For Each trong VBA ............................................................................................................. 346
26. Vòng lặp While-Wend trong VBA .................................................................................................... 347
Cú pháp.............................................................................................................................................................. 347
Ví dụ về vòng lặp While-Wend trong VBA ...................................................................................................... 348
27. Vòng lặp Do-While trong VBA .......................................................................................................... 349
Cú pháp: kiểm tra điều kiện ở cuối vòng lặp .................................................................................................. 349
Cú pháp: kiểm tra điều kiện ở đầu vòng lặp ................................................................................................... 351
28. Vòng lặp Do-Until trong VBA ............................................................................................................ 352
Cú pháp: kiểm tra điều kiện ở cuối vòng lặp .................................................................................................. 352
Cú pháp: kiểm tra điều kiện ở đầu vòng lặp ................................................................................................... 354
29. Mệnh đề Select-Case trong VBA ....................................................................................................... 355
Cú pháp mệnh đề Select-Case trong VBA ....................................................................................................... 355
Ví dụ mệnh đề Select-Case trong VBA............................................................................................................. 357
30. String trong VBA ................................................................................................................................. 358
Nối chuỗi trong VBA ......................................................................................................................................... 358
Các hàm xử lý chuỗi trong VBA ....................................................................................................................... 359

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 7


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
31. Hàm xử lý Date và Time trong VBA................................................................................................. 361
Các hàm xử lý Date ........................................................................................................................................... 361
Các hàm xử lý Time .......................................................................................................................................... 362
32. Ví dụ Excel VBA ................................................................................................................................... 363
Bài 30: Học SSIS để tự động hóa việc chạy dữ liệu hàng ngày ................................................................... 364
Bài 31: Một số kiến thức SQL nâng cao, lập trình với SQL Server ............................................................. 479
Bài 32: Bài tập lớn để kiểm tra đầu ra, cấp chứng chỉ và ứng dụng thực tế sau khóa học................... 480

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 8


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 1: Logic & trình tự học thực hành

1. Giới thiệu nội dung khóa học và các tài liệu kèm theo khóa học
2. Cài đặt SQL Server 2014
3. Tạo các Database để sử dụng
4. Tạo bảng dữ liệu
a. Tạo bảng bằng import file Excel
b. Tạo bảng bằng import file Text
c. Tạo bảng bằng export – import dữ liệu giữa các Database
d. Tạo bảng bằng câu lệnh SQL
5. Các kiểu dữ liệu thường dùng – SQL Server Data Type
6. Các câu lệnh làm việc với bảng dữ liệu
7. Các câu lệnh làm việc với dữ liệu
8. Các hàm thường dùng trong SQL Server
9. Viết thủ tục xử lý dữ liệu tự động có tham số, để có thể chạy theo các biến khác nhau
(ngày, …)
10. Tạo bảng dữ liệu đích để làm template lên báo cáo Excel
11. Link dữ liệu tự động từ Excel vào SQL Server, đặt biến để có thể thay đổi theo định
kỳ.
12. Xây dựng Data Model trên Excel để làm các loại báo cáo
13. Xây dựng báo cáo dạng Dashboard trên Excel.
14. Giới thiệu SSIS tự động hóa việc ETL dữ liệu hàng (mức giới thiêu, chi tiết sẽ có ở
khóa học khác)
15. Giới thiệu về VBA phân phối kết quả báo cáo tự động (mức giới thiêu, chi tiết sẽ có ở
khóa học khác)
16. Các kiến thức SQL nâng cao góp phần đẩy nhanh tốc độ viết code, tốc độ xử lý của hệ
thống

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 9


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 2: SQL là gì
SQL là một ngôn ngữ để tương tác với cơ sở dữ liệu, ó bao gồm việc tạo ra cơ sở dữ liệu, xóa,
lấy các hàng, sửa đổi các hàng, vv SQL là một ngôn ngữ chuẩn ANSI (American National Standards
Institute), nhưng có nhiều phiên bản khác nhau của ngôn ngữ SQL. Vậy SQL là gì?

1. SQL là gì?

SQL là viết tắt của Structured Query Language có nghĩa là ngôn ngữ truy vấn có cấu trúc, là
một ngôn ngữ máy tính để lưu trữ, thao tác và truy xuất dữ liệu được lưu trữ trong một cơ sở dữ
liệu quan hệ.

SQL là ngôn ngữ chuẩn cho hệ cơ sở dữ liệu quan hệ. Tất cả các hệ thống quản lý cơ sở dữ
liệu quan hệ (RDMS) như MySQL, MS Access, Oracle, Sybase, Informix, Postgres và SQL Server đều
sử dụng SQL làm ngôn ngữ cơ sở dữ liệu chuẩn.

Ngoài ra, họ đang sử dụng các ngôn ngữ khác nhau, chẳng hạn như:

 MS SQL Server using T-SQL,


 Oracle using PL/SQL,
 MS Access version of SQL is called JET SQL (native format) etc.

2. Tại sao sử dụng SQL

SQL được sử dụng phổ biến vì nó có các ưu điểm sau:

 Cho phép người dùng truy cập dữ liệu trong các hệ thống quản lý cơ sở dữ liệu quan hệ.
 Cho phép người dùng mô tả dữ liệu.
 Cho phép người dùng xác định dữ liệu trong cơ sở dữ liệu và thao tác dữ liệu đó.
 Cho phép nhúng trong các ngôn ngữ khác sử dụng mô-đun SQL, thư viện và trình biên dịch
trước.
 Cho phép người dùng tạo và thả các cơ sở dữ liệu và bảng.
 Cho phép người dùng tạo chế độ view, thủ tục lưu trữ, chức năng trong cơ sở dữ liệu.
 Cho phép người dùng thiết lập quyền trên các bảng, thủ tục và view.

3. Lịch sử ngắn gọn của SQL

 1970 – Tiến sĩ Edgar F. “Ted” Codd của IBM được biết đến như là cha đẻ của các cơ sở dữ liệu
quan hệ. Ông mô tả một mô hình quan hệ cho cơ sở dữ liệu.
 1974 – Đã xuất hiện Structured Query Language.
 1978 – IBM đã làm việc để phát triển các ý tưởng của Codd và đưa ra một sản phẩm có tên
System / R.
 1986 – IBM đã phát triển nguyên mẫu đầu tiên của cơ sở dữ liệu quan hệ và được tiêu chuẩn
hóa bởi ANSI. Cơ sở dữ liệu quan hệ đầu tiên được phát hành bởi Relational Software sau này
được gọi là Oracle.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 10


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
4. Các câu lệnh SQL có các dạng DDL, DML, DCL
Các lệnh SQL tiêu chuẩn để tương tác với cơ sở dữ liệu quan hệ là CREATE, SELECT, INSERT,
UPDATE, DELETE và DROP. Các lệnh này có thể được phân thành các nhóm sau dựa trên bản chất
của chúng

DDL – Ngôn ngữ định nghĩa dữ liệu(Data Definition Language)

Lệnh Mô tả

CREATE Tạo ra một bảng mới, một view của một bảng, hoặc các đối tượng khác trong cơ sở dữ
liệu.

ALTER Sửa đổi một đối tượng cơ sở dữ liệu hiện có, chẳng hạn như một bảng.

DROP Xoá toàn bộ một bảng, view của một bảng hoặc các đối tượng khác trong cơ sở dữ liệu.

DML – Ngôn ngữ thao tác dữ liệu(Data Manipulation Language)

Lệnh Mô tả

SELECT Lấy ra các bản ghi nhất định từ một hoặc nhiều bảng.

INSERT Tạo một bản ghi..

UPDATE Chỉnh sửa bản ghi.

DELETE Xóa bản ghi.

DCL – Ngôn ngữ điều khiển dữ liệu (Data Control Language)

Lệnh Mô tả

GRANT Cung cấp một đặc quyền cho người dùng.

REVOKE Lấy lại các đặc quyền được cấp từ người dùng.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 11


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 3: RDBMS là gì?


1. RDBMS là gì?
RDBMS là viết tắt của Relational Database Management System có nghĩa là hệ quản trị cơ sỡ dữ
liệu quan hệ. RDBMS là cơ sở cho SQL, và cho tất cả các hệ thống cơ sở dữ liệu hiện đại như MS SQL
Server, IBM DB2, Oracle, MySQL và Microsoft Access.
Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) là một hệ thống quản lý cơ sở dữ liệu (DBMS)
dựa trên mô hình quan hệ được giới thiệu bởi EF Codd.
2. Bảng là gì?
Dữ liệu trong một RDBMS được lưu trữ trong các đối tượng cơ sở dữ liệu được gọi là các
bảng (table) . Bảng này về cơ bản là một bộ sưu tập các mục nhập dữ liệu có liên quan và nó bao
gồm nhiều cột và hàng.

Bảng là hình thức lưu trữ dữ liệu phổ biến và đơn giản nhất trong một cơ sở dữ liệu quan hệ.
Chương trình sau đây là một ví dụ về một bảng KHACH_HANG

+----+----------+------+-----------+----------+

| ID | TEN | TUOI | DIA_CHI | LUONG |

+----+----------+------+-----------+----------+

| 1 | Nam | 32 | Ha Noi | 2000.00 |

| 2 | Dung | 25 | Vinh Phuc | 1500.00 |

| 3 | Vinh | 23 | Ha Noi | 2000.00 |

+----+----------+-----+------------+----------+

3. Trường là gì
Mỗi bảng được chia thành các thực thể nhỏ gọi là các trường. Các trường trong bảng
KHACH_HANG bao gồm ID, TEN, TUOI, DIA_CHI VÀ LUONG.

Trường là một cột trong một bảng được thiết kế để lưu trữ thông tin cụ thể về mỗi bản ghi
trong bảng.

4. Bản ghi hoặc một hàng (row) là gì?


Một bản ghi cũng được gọi là một hàng dữ liệu là từng mục riêng lẻ tồn tại trong một bảng.
Ví dụ: có 3 bản ghi trong bảng KHACH_HANG trên. Sau đây là một hàng dữ liệu hoặc một bản ghi
trong bảng

+----+----------+------+-----------+----------+

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 12


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
| 1 | Nam | 32 | Ha Noi | 2000.00 |

+----+----------+-----+------------+----------+

5. Cột (column) là gì?


Một cột là một thực thể thẳng đứng trong một bảng có chứa tất cả các thông tin liên kết với
một trường cụ thể trong một bảng.

Ví dụ: một cột trong bảng KHÁCH HÀNG là DIA_CHI, mô tả vị trí và sẽ như dưới đây:

+-----------+

| DIA_CHI |

+-----------+

| Ha Noi |

| Vinh Phuc |

| Ha Noi |

+-----------+

6. Một giá trị NULL là gì?


Một trường với một giá trị NULL là một trường không có giá trị.

Điều quan trọng là phải hiểu rằng một giá trị NULL khác với giá trị bằng không hoặc một
trường có chứa khoảng trắng (space). Trường có giá trị NULL là giá trị đã để trống trong quá trình
tạo bản ghi.

7. Constraint (ràng buộc) trong SQL


Constraint là các quy tắc được thi hành trên các cột dữ liệu trên một bảng. Chúng được sử
dụng để giới hạn loại dữ liệu có thể insert vào một bảng. Điều này đảm bảo tính chính xác và độ tin
cậy của dữ liệu trong cơ sở dữ liệu.

Constraint có thể là cấp độ cột hoặc cấp độ bảng. Các ràng buộc cấp độ cột chỉ được áp dụng
cho một cột trong khi các ràng buộc mức bảng được áp dụng cho toàn bộ bảng.

Sau đây là một số các ràng buộc phổ biến nhất được sử dụng trong SQL:

 NOT NULL – Đảm bảo rằng một cột không thể có giá trị NULL.
 DEFAULT – Cung cấp một giá trị mặc định cho một cột khi không có gì được chỉ định.
 UNIQUE – Đảm bảo rằng tất cả các giá trị trong một cột là khác nhau.
 PRIMARY Key – Xác định mỗi hàng / bản ghi là duy nhất trong một bảng cơ sở dữ liệu.
 FOREIGN Key – Xác định một hàng / bản ghi là duy nhất trong bất kỳ bảng cơ sở dữ liệu khác.
 CHECK – CHECK constraint đảm bảo rằng tất cả các giá trị trong một cột thỏa mãn một số
điều kiện.
 INDEX – Dùng để tạo và lấy dữ liệu từ cơ sở dữ liệu rất nhanh.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 13


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
8. Toàn vẹn dữ liệu
Các loại sau đây của toàn vẹn dữ liệu tồn tại với mỗi RDBMS:

 Thực thể toàn vẹn – Không có hàng trùng lặp trong một bảng.
 Domain Integrity Thực thi kiểm tra tính hợp lệ cho một cột nhất định bằng cách hạn chế
kiểu, định dạng hoặc phạm vi giá trị.
 Tính toàn vẹn tham chiếu Các hàng không thể bị xóa, được sử dụng bởi các bản ghi khác.
 Tính toàn vẹn do người dùng định nghĩa Thực thi một số quy tắc kinh doanh cụ thể không
rơi vào thực thể, miền hoặc toàn vẹn tham chiếu.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 14


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 4: Các hệ quản trị cơ sở dữ liệu


Hiện nay, có rất nhiều RDBMS – hệ quản trị cơ sở dữ liệu phổ biến có sẵn để làm việc. Hướng
dẫn này đưa ra một cái nhìn ngắn gọn về một số các RDBMS phổ biến nhất. Điều này sẽ giúp bạn so
sánh các tính năng cơ bản của chúng.

1. MySQL

MySQL là một hệ quản trị cơ sở dữ liệu SQL mã nguồn mở, được phát triển bởi một công ty
Thụy Điển – MySQL AB.

MySQL hỗ trợ nhiều nền tảng khác nhau bao gồm Microsoft Windows, Linux, UNIX và Mac
OS X.

MySQL có các phiên bản miễn phí và trả phí, tùy thuộc vào cách sử dụng của nó (phi thương
mại / thương mại) và các tính năng. MySQL đi kèm với một máy chủ cơ sở dữ liệu SQL rất nhanh,
đa luồng, nhiều người dùng và mạnh mẽ.

Lịch sử

 Sự phát triển của MySQL bởi Michael Widenius & David Axmark bắt đầu từ năm 1994.
 Phát hành nội bộ đầu tiên vào ngày 23 thứ Tháng năm 1995.
 Phiên bản Windows được phát hành vào 8 ngày tháng 1 năm 1998 cho Windows 95 và NT.
 Phiên bản 3,23: beta từ tháng 6 năm 2000, sản xuất tháng 1/2001.
 Phiên bản 4.0: phiên bản beta từ tháng 8/2002, phát hành sản phẩm tháng 3/2003 (công
đoàn).
 Phiên bản 4.01: beta từ tháng 8 năm 2003, Jyoti thông qua MySQL để theo dõi cơ sở dữ liệu.
 Phiên bản 4.1: Phiên bản beta từ tháng 6 năm 2004, sản xuất tháng 10 năm 2004.
 Phiên bản 5.0: beta từ tháng 3 năm 2005, phát hành sản phẩm tháng 10 năm 2005.
 Sun Microsystems mua MySQL AB trên 26 ngày tháng 2 năm 2008.
 Version 5.1: sản xuất phát hành 27 ngày tháng 11 năm 2008.

Tính năng, đặc điểm

 Hiệu suất cao.


 Tính sẵn sàng cao.
 Khả năng mở rộng và Tính linh hoạt Chạy bất cứ điều gì.
 Hỗ trợ giao dịch mạnh mẽ.
 Điểm mạnh của Web và Data Warehouse.
 Bảo vệ dữ liệu mạnh mẽ.
 Phát triển ứng dụng toàn diện.
 Quản lý dễ dàng.
 Tự do nguồn mở và Hỗ trợ 24 x 7.
 Tổng chi phí sở hữu thấp nhất.

2. MS SQL Server

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 15


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
MS SQL Server là một hệ quản lý cơ sở dữ liệu quan hệ được phát triển bởi Microsoft Inc Ngôn ngữ
truy vấn chính của nó là:

 T-SQL
 ANSI SQL

Lịch sử

 1987 – Sybase phát hành SQL Server cho UNIX.


 1988 – Microsoft, Sybase, và Aston-Tate cổng SQL Server sang OS / 2.
 1989 – Microsoft, Sybase, và Aston-Tate phát hành SQL Server 1.0 cho OS / 2.
 1990 – SQL Server 1.1 được phát hành với sự hỗ trợ cho khách hàng Windows 3.0.
 Aston – Tate giọt ra khỏi SQL Server phát triển.
 2000 – Microsoft phát hành SQL Server 2000.
 2001 – Microsoft phát hành XML cho SQL Server Web Release 1 (download).
 2002 – Microsoft phát hành SQLXML 2.0 (đổi tên từ XML cho SQL Server).
 2002 – Microsoft phát hành SQLXML 3.0.
 2005 – Microsoft phát hành SQL Server 2005 vào ngày 7 tháng 11 năm 2005.

Tính năng, đặc điểm

 Hiệu năng cao


 Tính sẵn sàng cao
 Database mirroring
 Database snapshots
 Tích CLR
 Service Broker
 DDL triggers
 Chức năng Ranking
 Row version-based isolation levels
 Tích hợp XML
 TRY…CATCH – xử lý ngoại lệ
 Database Mail

3. ORACLE

Đây là một hệ thống quản lý cơ sở dữ liệu đa người dùng rất lớn. Oracle là một hệ quản lý cơ
sở dữ liệu quan hệ được phát triển bởi ‘Tổng công ty Oracle’.

Oracle làm việc để quản lý hiệu quả các nguồn lực, một cơ sở dữ liệu thông tin giữa nhiều
khách hàng yêu cầu và gửi dữ liệu trong mạng.

Đây là một lựa chọn máy chủ cơ sở dữ liệu tuyệt vời cho khách hàng / máy tính máy tính.
Oracle hỗ trợ tất cả các hệ điều hành chính cho cả khách hàng và máy chủ, bao gồm MSDOS,
NetWare, UnixWare, OS / 2 và hầu hết các hương vị UNIX.

Lịch sử
Oracle bắt đầu vào năm 1977 và kỷ niệm 32 năm tuyệt vời của nó trong ngành công nghiệp (từ năm 1977
đến năm 2009).

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 16


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

 1977 – Larry Ellison, Bob Miner và Ed Oates thành lập các Phòng thí nghiệm Phát triển phần
mềm để đảm nhận công việc phát triển.
 1979 – Phiên bản 2.0 của Oracle được phát hành và trở thành cơ sở dữ liệu quan hệ thương
mại đầu tiên và cơ sở dữ liệu SQL đầu tiên. Công ty đổi tên thành Relational Software Inc.
(RSI).
 1981 – RSI bắt đầu phát triển các công cụ cho Oracle.
 1982 – RSI được đổi tên thành Tổng công ty Oracle.
 1983 – Oracle phát hành phiên bản 3.0, viết lại bằng ngôn ngữ C và chạy trên nhiều nền tảng.
 1984 – Oracle phiên bản 4.0 được phát hành. Nó chứa các tính năng như kiểm soát đồng thời
– sự nhất quán đọc nhiều phiên bản, v.v …
 1985 – Oracle phiên bản 4.0 đã được phát hành. Nó chứa các tính năng như kiểm soát đồng
thời – tính nhất quán đọc nhiều phiên bản, v.v …
 2007 – Oracle phát hành Oracle11g. Phiên bản mới tập trung vào phân vùng tốt hơn, di
chuyển dễ dàng, v.v.

Tính năng, đặc điểm

 Truy cập đồng thời


 Đọc tính nhất quán
 Cơ chế khóa
 Cơ sở dữ liệu Quiesce
 Tính khả chuyển
 Cơ sở dữ liệu tự quản lý
 SQL*Plus
 ASM
 Scheduler
 Quản lý Tài nguyên
 Data Warehousing
 Materialized views
 Bitmap indexes
 Table compression
 Thực thi song song
 Phân tích SQL
 Data mining
 Partitioning

4. MS ACCESS

Đây là một trong những sản phẩm phổ biến nhất của Microsoft. Microsoft Access là một
phần mềm quản lý cơ sở dữ liệu cấp cơ sở. Cơ sở dữ liệu MS Access không chỉ là không tốn kém
mà còn là một cơ sở dữ liệu mạnh mẽ cho các dự án quy mô nhỏ.

MS Access sử dụng công cụ cơ sở dữ liệu Jet, sử dụng một ngôn ngữ cụ thể ngôn ngữ SQL
(đôi khi được gọi là Jet SQL).

MS Access đi kèm với phiên bản chuyên nghiệp của gói MS Office. MS Access có giao diện
đồ họa trực quan sử dụng easyto.

 1992 – Truy cập phiên bản 1.0 đã được phát hành.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 17


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
 1993 – Truy cập 1.1 phát hành để cải thiện khả năng tương thích với việc bao gồm ngôn
ngữ lập trình Access Basic.
 Quá trình chuyển đổi quan trọng nhất là từ Access 97 đến Access 2000.
 2007 – Access 2007, một định dạng cơ sở dữ liệu mới đã được giới thiệu ACCDB hỗ trợ các
kiểu dữ liệu phức tạp như nhiều lĩnh vực có giá trị và đính kèm.

Tính năng, đặc điểm

 Người dùng có thể tạo bảng biểu, truy vấn, biểu mẫu và báo cáo và kết nối chúng cùng với
macro.
 Tùy chọn nhập và xuất dữ liệu sang nhiều định dạng bao gồm Excel, Outlook, ASCII, dBase,
Paradox, FoxPro, SQL Server, Oracle, ODBC …
 Cũng có định dạng Jet Database (MDB hoặc ACCDB trong Access 2007), có thể chứa ứng dụng
và dữ liệu trong một tệp. Điều này làm cho nó rất thuận tiện để phân phối toàn bộ ứng dụng
cho người dùng khác, những người có thể chạy nó trong môi trường bị ngắt kết nối.
 Microsoft Access cung cấp truy vấn tham số. Những truy vấn và bảng truy cập có thể được
tham chiếu từ các chương trình khác như VB6 và. NET thông qua DAO hoặc ADO.
 Các phiên bản máy tính để bàn của Microsoft SQL Server có thể được sử dụng với Access như
là một sự thay thế cho Jet Database Engine.
 Microsoft Access là một cơ sở dữ liệu dựa trên máy chủ tập tin. Không giống như các hệ thống
quản lý cơ sở dữ liệu quan hệ khách hàng (RDBMS), Microsoft Access không thực hiện các
trình khởi tạo cơ sở dữ liệu, các thủ tục lưu trữ hoặc đăng nhập giao dịch.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 18


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 5: Tìm hiểu sự khác biệt giữa


Windows 64bit và Windows 32bit
Theo kiến trúc máy ở trong CPU có các thanh ghi, thanh ghi này có nhiệm vụ chứa các dữ liệu
mà CPU cần để xử lý, Khi ta nói độ rộng của các thanh ghi bên trong CPU là 32-bit thì có nghĩa là
Windows 32-bit. Với thanh ghi này, CPU có thể quản lý được 2 mũ 32 địa chỉ tương đương với khả
năng quản lý khoảng 3,2GB RAM. Tương tự với Windows 64bit là 2 mũ 64 tương đương với hơn 17
tỉ GB RAM.

Ưu Điểm Của Windows 64 Bit So Với Windows 32bit


1. Khả năng xử lý RAM tốt hơn
Từ trên ta có thể nhận thấy rằng, Win 64-bit có khả năng xử lý RAM tốt hơn Win 32-bit.
Win32-bit chỉ có thể nhận và quản lý được bộ nhớ RAM tối đa là 3,2GB Còn Win 64 bit có thể làm
việc với bộ nhớ RAM có dung lượng lớn hơn 3,2GB. Do đó, nếu máy tính bạn có 4G RAM thì khoảng
800M RAM thừa sẽ không tác dụng trong hệ thống. Vậy nên, bạn cần chọn hệ điều hành tùy thuộc
vào số RAM để tránh bị lãng phí.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 19


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

2. Xử lý các ứng dụng tốt hơn và khả năng phân phối bộ nhớ tốt hơn so với Win 32-bit.
Win 64bit nó không giới hạn dung lượng RAM cho ứng dụng, nghĩa là nhu cầu của bạn không bị
giới hạn, bạn có thể chạy ứng dụng nặng tốn nhiều RAM như mô hình 3D, autocad, hay Photoshop,...
một cách thoải mái, ứng dụng sẽ làm việc hiệu quả, ổn định và nhanh hơn trong nền tảng này.

Win 32bit chỉ cung cấp tối đa cho mỗi ứng dụng khi chạy là 2GB RAM do vậy nếu ta chạy những
ứng dụng nặng, tốn nhiều dung lượng Ram thì hiệu quả và tốc độ bị hạn chế.

Nhược Điểm Của Windows 64bit

Tuy nhiên không phải máy nào cũng có thể cài được Win 64bit. Nếu CPU của máy không hỗ trợ
thì bạn sẽ không cài và sử dụng được hệ điều hành Win 64bit. Và một số ứng dụng phần mềm hoạt
động được trên Windows 64bit
Với những thông số trên, bạn cũng đã phần nào hiểu và biết được sự khác nhau giữa 2 nền tảng
của Windows 32bit và 64bit. Biết được sự khác biệt giữ Windows 64 bit và Windows 32 bit và sẽ
biết mình nên sử dụng hệ điều hành nào mục đích sử dụng của mình như thế nào với số RAM ra sao
để đảm bảo hiệu quả và tối ưu nhất.
Tương ứng với hệ điều hành của chúng ta, chúng ta sẽ lựa chọn cài đặt phiên bản SQL Server
2014 là 32 bit hay 64 bit để phù hợp với Hệ điều hành.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 20


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Tiếp theo, chúng ta tiến hành cài đặt SQL Server 2014: làm theo hướng dẫn file Word của em,
em chỉ có một số lưu ý như sau:
i. Đặt tên cho SQL Server
ii. Đặt pasword ở chế độ Mixed Mode

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 21


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 6: Hướng dẫn cài đặt phần mềm SQL


Server 2014
Kiểm tra xem hệ điều hành Windows hiện tại của bạn là 32 bit hay 64 bit để cài đặt phần mềm SQL
Server 2014 tương ứng bản 32 bit hoặc 64 bit.

Sau đó giải nén file cài đặt.

Giải nén file cài đặt dạng ISO bằng Winrar

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 22


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Tìm file Setup có hình mũi tên đi lên rồi chuột phải chọn Run as Admin, đợi một chút cho máy khởi
động trình cài đặt SQL lên

Giao diện trình cài đặt xuất hiện

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 23


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

CHọn Installation,

Trong Installation, chọn New SQL Server stand – alone … -> Lựa chọn đầu tiên

Đợi SQL khởi động vào phần tiếp theo

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 24


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Đến phần nhập key, đây là key do trình cài đặt nhập sẵn, chỉ cần ấn NEXT

TIếp theo chọn I accept phần điều khoản điều kiện của Microsoft

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 25


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Trình cài đặt chạy phần check theo yêu cầu, đẻ máy tự chạy

Phần Microsoft update để nguyên ko lựa chọn, rồi ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 26


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Trình cài đặt tự chạy qua 2 màn hình sau, để trình cài đặt tự chạy

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 27


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ấn NEXT

Chọn cái đầu tiên trong ảnh sau (Mặc định) rồi ấn Next

Màn hình tiếp theo chọn Select All

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 28


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau khi chọn Select All ở trên, bỏ chọn phân Reporting Services - Native

Sau đó ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 29


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần tiếp theo chọn đặt tên cho SQL server của mình

Ở đây em sẽ đặt là MINHDUC

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 30


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ấn Next

Màn hình tiếp theo ấn Next

Phần tiếp theo rất quan trọng,

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 31


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

CHuyển sang chọn Mixed Mode để có thể sử dụng SQL với user và mật khẩu riêng

NHập Password tại phần Mixed Mode, đồng thời phía dưới ấn chọn Add Current user sau đó ấn
Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 32


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Màn hình tiếp theo chọn Add Current User

RỒi ấn Next

Màn hình tiếp theo chọn Next

Màn hình tiếp theo ấn Add Current User, rồi ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 33


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần tiếp theo, Controller name đặt tên là MInhDUc

Màn hình check tiếp theo, tất cả mọi thứ tích xanh là được, rồi ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 34


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo ấn Install

Trình cài đặt tự chạy, để cho trình cài đặt chạy hết là xong việc cài đặt

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 35


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 36


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 37


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình sau khi đã cài đặt xong như sau

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 38


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ấn vào Close là hoàn thành, anh chị có thể xem log file trong quá trình cài đặt, 1 file dạng text theo
đường dẫn xuất hiện trên màn hình.

Ấn close

Trong phần All Program của máy tính đã có phần mềm SQL Server 2014

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 39


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 40


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 7: Tạo thư mục thực hành SQL_Excel


(1) Tạo thư mục SQL_EXCEL trong ổ cứng máy tính, chứa các folder con như sau:

(2) Xây dựng Data Model gồm 3 folder chứa 3 DATABASE như sau:
- INTERFACE: Nơi chứa dữ liệu thô ban đầu, thông thường chỉ lưu dữ liệu 1 ngày, kiểu dữ
liệu chưa được chuẩn hóa.
- DATA_MART: Nơi lưu dữ liệu đã được chuẩn hóa về mặt cấu trúc bảng, kiểu dữ liệu. Lưu dữ
liệu xếp chồng theo nhiều ngày.
- REPORT_SYSTEM: Nơi lưu các dữ liệu đã được tổng hợp, là nguồn để link với Excel, tạo ra
các báo cáo cuối cùng, lưu dữ liệu nhiều ngày.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 41


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 8: Cấu hình SQL Server Configuration


Manager đảm bảo sự sẵn sàng sử dụng của
SQL Server
Ý nghĩa: Đây là việc cần thực hiện đầu tiên sau khi cài SQL Server 2014 xong để đảm bảo các máy
sẵn sàng sử dụng (SQL Server ở chế độ Running) và đặc biệt cho phép các máy khác nhau trong
cùng mạng LAN có thể kết nối đến máy chủ SQL Server vừa được cài đặt.
1. Cấu hình SQL Server để truy cập vào Database
Sau khi cài đặt xong SQL Server 2014, trong phần Program của Windows sẽ có hiển thị như sau
trên Windows 7 (trên Win 8 và Win 10 có thể hiển thị khác một chút)

(1) Chọn phần SQL Server Configuration Manager

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 42


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Trong phần SQL Server Configuration Manager (Local) chú ý phần “SQL Server Services”.

Ở phần màn hình bên phải, hãy chắc chắn rằng SQL Server đang ở State là Running. Nếu
như nó đang ở chế độ Stop thì chúng ta sẽ không truy cập được vào SQL Server

Khi SQL Server Services đang ở chế độ State là Stop, thì khi chúng ta đăng nhập vào SQL
Server sẽ bị thông báo lỗi như sau:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 43


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Để bật dịch vụ SQL Server, chúng ta chuột phải vào dịch vụ SQL Server trên máy chúng ta
rồi ấn chọn Start

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 44


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

2. Cấu hình SQL Server để truy cập được từ các máy khác trong mạng LAN1
Vào chức năng:

SQL Server Configuration Management


Chức năng này cho phép bạn cấu hình để các máy tính khác có thể truy cập vào SQL Server thông
qua IP hoặc Server name.

Bạn cần Start service: SQL Server Browser. Nhấn phải chuột vào nó chọn Property.

1
https://skyit.vn/thu-thuat/huong-dan-cai-dat-va-cau-hinh-sql-server-2014-express-t205633.html

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 45


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Chuyển chế độ Start service sang Automatic (tự động).

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 46


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau đó nhấn Start, để khởi động dịch vụ.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 47


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 48


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 49


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Tiếp theo bật TCP/IP cho phép máy tính khác kết nối vào SQL Server thông qua IP.

Tương tự bật: Named Pipes, cho phép máy tính khác kết nối vào SQL Server thông qua Server
name.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 50


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Tiếp theo, đảm bảo rằng SQL Server của bạn đang chạy dưới chế độ Network Service.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 51


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau khi cấu hình xong, restart lại service của SQL Server.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 52


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Trong trường hợp cấu hình đến đây mà vẫn chưa truy cập được từ máy tính khác vào SQL
Server của chúng ta qua mạng LAN, chúng ta thực hiện tiếp như sau2:
B1: Vào Start > All Programs > SQL Server 2008 R2 > Configuration Tools > SQL Server
Configuration Manager (cách làm tương tự cho SQL Server 2014)

B2: Chọn SQL Server Network Configuration > Protocols for SQLEXPRESS > Chọn TCP/IP >
Enable = Yes

2
https://www.mrcyclo.com/2015/05/cac-set-sql-server-co-truy-cap-qua-mang.html

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 53


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

B3: Chuyển qua tab IP Address > Tại ô TCP Port của IP1 và IPAll đặt là 1433 (đây là cổng kết nối
của SQL Server) > OK

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 54


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

B4: Chuyển qua SQL Server Services > SQL Server (SQLEXPRESS) > Chuột phải > Restart

Để cho chắc chắn hơn là đã có thể truy cập từ máy khác thông qua mạng LAN, bạn nên cho phép
cổng 1433 lưu thông dễ dàng qua cái tường lửa.

Control Panel > System and Security > Windows Firewall > Advanced settings

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 55


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần Inbound Rules, chọn New Rule... > chọn Port > Next > chọn TCP > chọn Specific local
ports: > để là 1433 > Next > chọn Allow the connection > Next > Next > ô Name để là SQL cho
dễ nhớ (bạn có thể chọn tên tùy ý) > Finish

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 56


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 57


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Làm tương tự với bên Outbound Rules

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 58


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 9: Sử dụng SQL Server Management


Studio (SSMS) để quản trị cơ sở dữ liệu
Thao tác đăng nhập vào SQL Server 2014
Mở SQL Server: theo đường dẫn
Start/ALL Program/Microsoft SQL Server 2014/ SQL Server 2014 Management Studio (SSMS)
SSMS là giao diện quản lý cơ sở dữ liệu của SQL Server.

Màn hình SQL Server hiện ra cho phép chọn kết nối vào cơ sở dữ liệu SQL
Lưu ý: Lựa chọn Server type là Database Engine
Có 2 chế độ xác thực là Windows Authentication và SQL Server Authentication
 Chế độ Windows Authentication: Là chế độ xác thực người dùng windows, chỉ cần có user
vào windows là được, không cần nhập Password.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 59


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
 Chế độ SQL Server Authentication: Là chế độ xác thực người dùng mức SQL Server, do SQL
server quản lý user và password, người dùng phải có user và password mới có thể truy cập
vào SQL Server
a. SQL Server có 1 user mặc định full quyền là security admin- viết tắt là sa.
b. Password của user sa do người dùng nhập vào khi cài đặt SQL Server

Sau khi đăng nhập thành công SQL Server, giao diện sẽ như hình ảnh phía dưới.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 60


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 61


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Trong ảnh dưới đây, chúng ta đã đăng nhập thành công vào SQL Server với cả 2 chế độ
Windows Authentication (MasterMOS-PC\MasterMOS) và SQL Server Authentication
(sa).

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 62


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 10: Tạo cơ sở dữ liệu INTERFACE,


DATA_MART & REPORT_SYSTEM
1. Tạo Database Interface
- Chuột phải vào Database chọn New Database

- Màn hình hộp thoại New Database hiện ra, trong phần
o Database name: gõ tên Database là INTERFACE
o Path: Là đường dẫn đến thư mục Database trong thư mục SQL_Excel đã tạo ở các
bước trước đó. Để chọn đường dẫn, ấn vào hình vuông nổi có dấu …, sau đó chọn
đúng đường dẫn đã có sẵn folder.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 63


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 64


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Chọn xong đường dẫn ấn OK, phần Path sẽ hiện ra đường dẫn cuối cùng để lưu Database

Sau đó ấn OK, database INTERFACE đã được tạo ra.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 65


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Trong ổ cứng máy tính của chúng ta cũng có 2 file INTERFACE (lưu Data file) và
INTERFACE_LOG (lưu lịch sử tác động vào SQL Server) xuất hiện tại thư mục
INTERFACE. Đây là thư mục chúng ta đã chọn để lưu ra trong phần File Path.

Tương tự chúng ta cùng thực hành để tạo thêm 2 Database còn lại là DATABASE CHO
DATA_MART VÀ REPORT_SYSTEM

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 66


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Kết quả hiện ra trong ổ cứng của máy tính như sau:
Database INTERFACE

DATABASE DATA_MART

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 67


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

DATABASE REPORT_SYSTEM

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 68


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 11: Tạo các bảng trong cơ sở dữ liệu,


import và export dữ liệu
1. TẠO BẢNG DỮ LIỆU VỚI FILE TEXT
Sử dụng dữ liệu tại mục RAW DATA được MasterMOS cung cấp sẵn như sau:

Bắt đầu thực hiện import file TEXT vào DATABASE INTERFACE.
Chuột phải vào Database INTERFACE, chọn Task/Import Data

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 69


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình Choose a Data Source hiện ra, mặc định là .Net framework Data Provider for ODBC
Ấn chuột trái vào phần mũi tên, chọn định dạng là Flat File Source

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 70


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 71


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 72


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ấn vào nút Browse để tìm đến file TEXT đang lưu trong máy, trong ví dụ cụ thể này đường dẫn lưu
file TEXT là : D\SQL_EXCEL\1. RAW DATA, chọn FILE TEXT SaoKeTGTT_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 73


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Chuyển chuột trái ấn vào phần Columns, tại mục Column Delimiter, lựa chọn ký tự phân tách các
cột, nhìn xuống phần Preview là dấu # thì gõ dấu #, nếu là dấu * thì gõ dấu *, .vvv

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 74


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau khi gõ xong ký tự phân tách các cột thì ấn vào nút Refresh.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 75


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Lúc này các cột đã được phân cách bởi một đường thẳng.
Chuyển sang phần Advanced để lựa chọn loại dữ liệu và độ dài của dữ liệu.
Thông thường để cho nhanh khi import text file, người ta hay ấn chuột trái vào cột đầu tiên, sau đó
giữ phím Shift, rồi ấn chuột trái vào cột cuối cùng để lựa chọn tất cả các cột (các cột sẽ được bôi
xanh thể hiện đã chọn hết), rồi chuyển sang phần Data Type mặc định để String, có thể chuyển
sang Unicode String, phần OutputColumnWidth là độ rộng của trường dữ liệu chuyển lên 500.
Nếu trong phần trường dữ liệu, có một giá trị nào đó của trường dữ liệu có độ dài lớn hơn 500 ký
tự thì máy sẽ báo lỗi khi import vào cơ sở dữ liệu, lúc đó cần phải tăng độ rộng của trường dữ liệu
lên ví dụ 1000, …
Nếu gặp các lỗi bất thường khác khi import file, anh chị hãy chụp ảnh rồi gửi qua email
mastermosvn@gmail.com cho NgocChienCN để bạn ấy giải đáp nhé 
Phần Preview cho xem trước kết quả đầu ra của dữ liệu được import vào Database, ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 76


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 77


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Phần chọn điểm đến, choose a Destination, chọn mục SQL Server Native Client 11.0

Sau đó tại phần Serer name chọn Server sẽ import, thông thường nếu trên máy của chúng ta thì là
có sẵn tên máy\tên Server, nếu import vào máy khác phải biết tên máy đó hoặc địa chỉ IP của máy
đích.
Chọn mục Authentication là User SQL Server Authentication, nhập user và password.
Mục Database, do khi trỏ chuột ban đầu ta trỏ vào Database INTERFACE, nên phần này hiện ra sẵn
là Database INTERFACE, nếu ta muốn chọn Database khác thì trỏ chuột trái xuống phần mũi tên để
chọn Database khác. Sau đó ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 78


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Mục Destination tiếp theo, đặt tên cho Bảng dữ liệu sẽ được import vào Database, rồi ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 79


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Mục tiếp theo là xác nhận của phần mềm chạy ngay lập tức Run immediately, ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 80


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo ấn Finish

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 81


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

SQL Server sẽ thực hiện việc import file text vào Cơ sở dữ liệu

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 82


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau khi SQL Server báo Success với tích màu xanh là tất cả các phần đã thành công, việc import
hoàn thành, nếu xảy ra lỗi anh chị hãy tự tìm hiểu với Google, nếu không được tiếp hãy chụp ảnh
hỏi NgocChienCN

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 83


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau khi import xong, ấn Refresh vào phần Table trong Database INTERFACE, bảng dữ liệu vừa
được import sẽ xuất hiện, cho phép chúng ta thực hiện các công việc khác liên quan.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 84


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 85


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 86


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

2. TẠO BẢNG DỮ LIỆU VỚI FILE EXCEL


Cách 1: Áp dụng cho những máy cài Windows 64 bit, cài Office 32 bit hoặc cài đặt thành công
AccessDatabaseEngine để khắc phục lỗi import với Excel từ 2007 trở lên (đuôi .xlsx)
Chuột phải vào Database INTERFACE, chọn Task/Import Data

Màn hình Choose a Data Source hiện ra, mặc định là .Net framework Data Provider for ODBC
Ấn chuột trái vào phần mũi tên, chọn định dạng là Microsoft Excel

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 87


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần Browse chọn đường dẫn với file Excel đang lưu trong máy

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 88


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Chọn file SaoKeBaoLanh_20170922, sau đó ấn Open, hoặc ấn đúp chuột trái vào file
SaokeBaoLanh_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 89


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo xuất hiện ấn Next

Trong trường hợp ấn Next mà máy báo lỗi thì cài đặt AccessDatabaseEngine như em có gửi để
chữa lỗi import với file Excel dạng *.xlsx

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 90


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần đích đến chọn SQL Server Native Client 11.0

Sau đó tại phần Serer name chọn Server sẽ import, thông thường nếu trên máy của chúng ta thì là
có sẵn tên máy\tên Server, nếu import vào máy khác phải biết tên máy đó hoặc địa chỉ IP của máy
đích.
Chọn mục Authentication là User SQL Server Authentication, nhập user và password.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 91


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Mục Database, do khi trỏ chuột ban đầu ta trỏ vào Database INTERFACE, nên phần này hiện ra sẵn
là Database INTERFACE, nếu ta muốn chọn Database khác thì trỏ chuột trái xuống phần mũi tên để
chọn Database khác. Sau đó ấn Next

Màn hình tiếp theo chọn mặc đinh rồi ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 92


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo xuất hiện, lựa chọn đặt tên cho bảng dữ liệu, đổi tên chỗ Sheet1$ thành
SaoKeBaoLanh_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 93


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau khi đổi tên thì ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 94


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Lưu ý, SQL Server sẽ tự động xác định loại dữ liệu khi import file Excel vào, dựa trên nội dung dữ
liệu nó đọc được trong File Excel, nếu muốn SQL Server hiểu 1 cột chỉ toàn số thành chữ, thì trước
đó trong Excel phải Convert cột số đó thành dạng Text. Chọn Next sau khi đổi xong tên file.
Phần Edit Mapping (tham khảo) sẽ cho biết các loại trường dữ liệu sẽ được import vào do SQL tự
định nghĩa, ấn OK khi xem xong, sau đó ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 95


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo xuất hiện ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 96


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình xác nhận lại các nội dung xuất hiện, ấn Finish để máy bắt đầu import file Excel vào
Database.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 97


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Máy sẽ import file Excel vào Database một cách rất nhanh chóng, sau đó máy cho biết số lượng bản
ghi đã được import thành công, ấn Close để kết thúc.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 98


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ấn chuột phải vào mục Table của Database Interface, chọn Refresh, bảng dữ liệu được import từ
file Excel sẽ xuất hiện.

Làm tương tự cho các file Excel khác.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 99


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Cách 2: Áp dụng cho những máy cài Windows 64 bit, cài Office 64 bit hoặc cài đặt không thành
công AccessDatabaseEngine, khi import Excel file bị báo lỗi.
Vào Start/Program/chọn chương trình Microsoft SQL Server 2014, sau đó chọn mục “SQL Server
2014 Import and Export Data (64-bit)”. Chú ý với các hệ điều hành khác, có thể bạn chỉ cần lựa
chọn “SQL Server 2014 Import and Export Data (64-bit)” ngay phía ngoài phần Program mà nó
không nằm trong thư mục Microsoft SQL Server 2014 trên Windows 7 như minh họa này.

Màn hình Choose a Data Source hiện ra, mặc định là .Net framework Data Provider for ODBC
Ấn chuột trái vào phần mũi tên, chọn định dạng là Microsoft Excel

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 100


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần Browse chọn đường dẫn với file Excel đang lưu trong máy

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 101


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Chọn file SaoKeBaoLanh_20170922, sau đó ấn Open, hoặc ấn đúp chuột trái vào file
SaokeBaoLanh_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 102


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo xuất hiện ấn Next

Phần đích đến chọn SQL Server Native Client 11.0

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 103


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau đó tại phần Server name chọn Server sẽ import, thông thường nếu trên máy của chúng ta thì là
có sẵn tên máy\tên Server, nếu import vào máy khác phải biết tên máy đó hoặc địa chỉ IP của máy
đích.
Chọn mục Authentication là User SQL Server Authentication, nhập user và password.
Mục Database, chúng ta trỏ chuột xuống chọn Database INTERFACE là Database chúng ta muốn
import vào. Khác với cách 1, ở cách 2 chúng ta cần lựa chọn 1 Database với tên cụ thể để import
vào. Sau đó chúng ta ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 104


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo chọn mặc đinh rồi ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 105


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo xuất hiện, lựa chọn đặt tên cho bảng dữ liệu, đổi tên chỗ Sheet1$ thành
SaoKeBaoLanh_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 106


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau khi đổi tên thì ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 107


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Lưu ý, SQL Server sẽ tự động xác định loại dữ liệu khi import file Excel vào, dựa trên nội dung dữ
liệu nó đọc được trong File Excel, nếu muốn SQL Server hiểu 1 cột chỉ toàn số thành chữ, thì trước
đó trong Excel phải Convert cột số đó thành dạng Text. Chọn Next sau khi đổi xong tên file.
Phần Edit Mapping (tham khảo) sẽ cho biết các loại trường dữ liệu sẽ được import vào do SQL tự
định nghĩa, ấn OK khi xem xong, sau đó ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 108


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo xuất hiện ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 109


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình xác nhận lại các nội dung xuất hiện, ấn Finish để máy bắt đầu import file Excel vào
Database.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 110


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Máy sẽ import file Excel vào Database một cách rất nhanh chóng, sau đó máy cho biết số lượng bản
ghi đã được import thành công, ấn Close để kết thúc.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 111


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ấn chuột phải vào mục Table của Database Interface, chọn Refresh, bảng dữ liệu được import từ
file Excel sẽ xuất hiện.

Làm tương tự cho các file Excel khác.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 112


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

3. TẠO BẢNG BẰNG CÁCH COPY TABLE GIỮA CÁC DATABASE


Giả sử cơ sở dữ liệu nguồn Interface có chứa bảng SaoKeTGTK_20170922, chúng ta muốn copy
bảng dữ liệu này sang cơ sở dữ liệu đích DATA_MART, để làm việc này chúng ta sử dụng tính năng
Export – import data giữa 2 Database như sau.
Chuột phải vào Database INTERFACE chọn Task/Export Data

Trong phần Choose a Data Source, lựa chọn SQL Server Native Client 11.0

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 113


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Nhập user SQL Server như thông thường để truy cập vào Database nguồn là Database INTERFACE

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 114


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau đó ấn Next để chọn Database đích.


Database đích có thể là Database trên chính máy của chúng ta, hoặc Database của máy người khác
mà chúng ta có user và pass để truy cập vào.
Mục Choose a Destination, cũng chọn SQL Server Native Client 11.0

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 115


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Mục Servername, gõ tên ServerName mà chúng ta muốn thực hiện việc copy bảng dữ liệu vào.
Nếu Servername trên máy chúng ta, có thể thực hiện copy tên server này bằng cách quay lại màn
hình của SSMS (SQL Server Management Studio), chuột phải vào tên máy chủ SQL của chúng ta, chọn
Connect, rồi sau đó tại Màn hình connect, chọn Ctrl + C để copy tên Server Name. Sau khi copy xong
thì ấn Cancel tại màn hình Connect này.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 116


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Paste (Ctrl +V) phần tên Server name vào phần Server name ở mục phía dưới. Nhập user và
password để truy cập Database.
Lưu ý: Nếu muốn copy table lên Database của máy khác thì phải biết tên của máy đó hoặc địa chỉ IP
của máy đó, sau đó cũng tiến hành nhập user và pass truy cập bình thường.
Phần tên Database, chọn Database đích để copy bảng dữ liệu vào, trong trường hợp này là
Database DATA_MART

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 117


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần tiếp theo giữ nguyên mặc định rồi ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 118


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần tiếp theo lựa chọn bảng dữ liệu muốn copy sang, ở đây chúng ta có thể lựa chọn một hoặc
nhiều bảng dữ liệu để copy từ Database nguồn sang Database đích.
Tại Database đích chúng ta có thể thực hiện đổi tên bảng dữ liệu nếu muốn
Trong ví dụ này là copy bảng dữ liệu SaoKeTGTK_20170922 thì tích vào ô vuông bên cạnh bảng
này là được, sau đó ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 119


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo để mặc định rồi ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 120


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo để mặc định rồi ấn Finish

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 121


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

SQL Server sẽ tiến hành export bảng từ Database nguồn sang Database đích.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 122


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

4. EXPORT RA TEXT FILE TỪ 1 BẢNG DỮ LIỆU ĐỂ GỬI CHO ĐƠN VỊ KHÁC SỬ DỤNG
Giả sử cơ sở dữ liệu nguồn Interface có chứa bảng SaoKeTGTK_20170922, chúng ta muốn export
dữ liệu của bảng này để gửi số liệu cho một đơn vị khác, chúng ta sẽ xuất bảng này ra dạng file text
(đuôi *.txt), để làm việc này chúng ta sử dụng tính năng Export data như sau:
Chuột phải vào Database INTERFACE chọn Task/Export Data

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 123


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Trong phần Choose a Data Source, lựa chọn SQL Server Native Client 11.0

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 124


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Nhập user SQL Server như thông thường để truy cập vào Database nguồn là Database INTERFACE

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 125


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau đó ấn Next để chọn điểm đến Destionation, ở đây chúng ta muốn xuất ra Text file nên chúng ta
cần lựa chọn Destionation là: Flat File Destination

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 126


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau đó chúng ta ấn Browse để chọn 1 nơi sẽ lưu file text được xuất ra, chúng ta chọn folder sẽ lưu
file, rồi đặt tên cho file cần xuất ra, ví dụ đặt tên là SaoKe_TGTK_20170922_OP
Chú ý tích chọn mục Column Names in the first data row tức là phần tiêu đề cột có trong cột đầu
tiên của bảng dữ liệu được xuất ra.
Sau đó ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 127


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Mục tiếp theo lựa chọn Next, để mặc định các phần khác

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 128


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo, chúng ta cần chọn bảng dữ liệu mà chúng ta định export ra Text file, trong ví
dụ này là SaoKeTGTK_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 129


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Trong phần Column Delimiter, nhập ký tự # từ bàn phím. # là ký tự sẽ được sử dụng để ngăn cách
giữa các cột trong file dữ liệu đích.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 130


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo để mặc định rồi ấn Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 131


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo để mặc định rồi ấn Finish

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 132


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

SQL Server sẽ export ra file text bảng dữ liệu SaoKeTGTK_20170922 từ Databae Interface và lưu ra
file tên là SaoKeTGTK_20170922_OP.txt đặt trên ổ cứng. Chúng ta có thể gửi file này cho đơn vị
khác sử dụng

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 133


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

5. CÁCH IMPORT FILE TEXT VÀO EXCEL MỘT CÁCH CHUẨN NHẤT (MICROSOFT HƯỚNG
DẪN)
B1: Vào Tab Data, chọn From Text trong nhóm Get External Data

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 134


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

B2: Trỏ chuột tới file Text cần mở, sau đó ấn Import.

B3: Màn hình Text Import Wizard xuất hiện, lựa chọn Delimited (nếu các cột các nhau bởi 1 ký tự
đặc biệt như dấu #,*, /, Tab…) hoặc Fixed width (nếu các cột cách nhau bởi dấu cách) -> Thông
thường hay chọn Delimited

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 135


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

B4: Nhập ký tự phân chia các cột, tích vào nút kiểm Other, và trong ví dụ này nhập dấu #, các cột đã
được chia ra, không bị díu vào nhau như lúc đầu.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 136


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
B5: Lựa chọn loại dữ liệu cho mỗi một cột sẽ được import vào. Nếu muốn chọn nhiều cột không
liền kề cho cùng 1 loại dữ liệu thì khi vừa chọn cột vừa ấn Ctr, sau đó cọn General hoặc Text hoặc
Date.
Nếu chọn Do not import column (skip) thì cột đó sẽ không được import vào Excel.

Sau đó ấn Finish.
B6: Màn hình hiện ra hỏi nơi sẽ lưu dữ liệu, mặc định là tại trang tính hiện thời. Nếu chọn New
Worksheet thì dữ liệu sẽ hiển thị trong trang tính mới của cùng bảng tính workbook. Sau đó ấn OK

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 137


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

B7: Dữ liệu file text đã được import thành công vào Excel.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 138


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 12: Các kiểu dữ liệu phổ biến thường


dùng trong SQL Server
Kiểu dữ liệu SQL là một thuộc tính xác định Kiểu dữ liệu của bất kỳ đối tượng nào. Mỗi cột,
biến và biểu thức có một Kiểu dữ liệu trong SQL. Bạn có thể sử dụng các Kiểu dữ liệu này trong khi
tạo các bảng của bạn. Bạn có thể chọn Kiểu dữ liệu cho một cột của bảng dựa trên yêu cầu của bạn.

SQL Server cung cấp sáu Kiểu dữ liệu được liệt kê như dưới đây:

1. Các Kiểu dữ liệu số nguyên

Kiểu dữ liệu Từ Từ

bigint -9,223,372,036,854,775,808 9.223.372.036.854.775,807

int -2.147.483.648 2.147.483.647

smallint -32.768 32.767

tinyint 0 255

bit 0 1

decimal -10 ^ 38 +1 10 ^ 38 -1

numeric -10 ^ 38 +1 10 ^ 38 -1

money -922,337,203,685,477.5808 +922,337,203,685,477.5807

smallmoney -214.748.3648 +214.748.3647

2. Kiểu dữ liệu số có dấu phảy động

Kiểu dữ liệu Từ Đến

float -1.79E + 308 1,79E + 308

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 139


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

real -3,40E + 38 3,40E + 38

3. Các Kiểu dữ liệu Date and Time

Kiểu dữ liệu Từ Đến

datetime Ngày 1 tháng 1 năm 1753 Ngày 31 tháng 12 năm 9999

smalldatetime 1 tháng 1 năm 1900 6 tháng 6 năm 2079

date Lưu trữ một ngày như ngày 30 tháng 6 năm 1991

time Lưu trữ thời gian trong ngày như 12:30 PM

Lưu ý: datetime có độ chính xác 3,33 mili giây, trong đó độ chính xác của smalldatetime là 1 phút.

4. Các Kiểu dữ liệu chuỗi ký tự

No. Kiểu dữ liệu & Mô tả

1 char

Chiều dài tối đa 8.000 ký tự (cố định chiều dài ký tự không phải là ký tự Unicode)

2 varchar

Tối đa 8.000 ký tự. (Dữ liệu không phải dạng Unicode có độ dài biến đổi).

3 varchar (tối đa)

Chiều dài tối đa 231 ký tự, Dữ liệu không phải dạng Unicode có độ dài biến (chỉ có
trong SQL Server 2005).

4 text

Dữ liệu không phải dạng Unicode có chiều dài không thay đổi với độ dài tối đa là
2,147,483,647 ký tự.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 140


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

5. Các Kiểu dữ liệu chuỗi ký tự Unicode

No. Kiểu dữ liệu & Mô tả

1 nchar

Chiều dài tối đa 4.000 ký tự. (Chiều dài cố định Unicode)

2 nvarchar

Chiều dài tối đa 4.000 ký tự. (Chiều dài biến Unicode)

3 nvarchar (tối đa)

Chiều dài tối đa 231 ký tự (chỉ SQL Server 2005). (Chiều dài biến Unicode)

4 ntxt

Chiều dài tối đa là 1.073.741.823 ký tự. (Chiều dài biến Unicode)

6. Các Kiểu dữ liệu nhị phân

No. Kiểu dữ liệu & Mô tả

1 binary

Chiều dài tối đa 8.000 byte (Dữ liệu nhị phân chiều dài cố định)

2 varbinary

Chiều dài tối đa 8.000 byte (Dữ liệu nhị phân chiều dài biến đổi)

3 varbinary(max)

Chiều dài tối đa 231 byte (chỉ SQL Server 2005). (Dữ liệu nhị phân chiều dài biến)

4 image

Chiều dài tối đa là 2,147,483,647 byte. (Dữ liệu nhị phân chiều dài biến)

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 141


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

7. Các Kiểu dữ liệu khác

No. Kiểu dữ liệu & Mô tả

1 sql_variant

Lưu trữ các giá trị của các Kiểu dữ liệu khác nhau được hỗ trợ bởi SQL Server, ngoại
trừ văn bản, ntext và dấu thời gian.

2 timestamp

Lưu trữ một số duy nhất trong cơ sở dữ liệu được cập nhật mỗi khi một hàng được
cập nhật

3 uniqueidentifier

Lưu trữ một định danh duy nhất trên toàn cầu(GUID)

4 xml

Lưu trữ dữ liệu XML. Bạn có thể lưu trữ các thể hiện xml trong một cột hoặc một
biến (chỉ có SQL Server 2005).

5 cursor – con trỏ

Tham chiếu Từ một đối tượng con trỏ

6 table

Lưu trữ một tập kết quả để xử lý sau

Chúng ta thường chỉ cần nhớ một số kiểu dữ liệu hay dùng nhất như sau:

 Kiểu dữ liệu chuỗi văn bản: Varchar, Nvarchar


 Kiểu dữ liệu số: Int, Float
 Kiểu dữ liệu ngày tháng: Date, Datetime

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 142


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 13: Các toán tử trong SQL


1. Toán tử trong SQL là gì?
Toán tử là một từ dành riêng hoặc một ký tự được sử dụng chủ yếu trong mệnh đề WHERE của câu
lệnh SQL để thực hiện các thao tác, chẳng hạn như so sánh và các phép toán số học. Các toán tử này
được sử dụng để chỉ định các điều kiện trong câu lệnh SQL và dùng làm ngữ pháp cho nhiều điều
kiện trong một câu lệnh.

 Toán tử số học
 Toán tử so sánh
 Toán tử logic
 Các toán tử sử dụng để phủ định các điều kiện

2. Các toán tử số học trong SQL


Giả sử ‘biến a’ là 10 và ‘biến b’ là 20, khi đó:

Toán tử Mô tả Ví dụ

+ (cộng) Thêm các giá trị ở hai bên của toán tử. a + b sẽ cho 30

– (trừ) Lấy toán hạng bên phải trừ toán hạng bên trái. a – b sẽ cho -10

* (nhân) Nhân giá trị ở hai bên của toán tử. A * b sẽ cho 200

/ (chia) Chia hai giá trị b / a sẽ cho 2

3. Các toán tử so sánh trong SQL


Giả sử ‘biến a’ là 10 và ‘biến b’ là 20, khi đó:

Toán tử Mô tả Ví dụ

= Kiểm tra nếu các giá trị của hai toán hạng bằng nhau hay (a = b) là false.
không, nếu có thì điều kiện trở thành true.

!= Kiểm tra nếu các giá trị của hai toán hạng bằng hoặc không, (a != b) là true.
nếu các giá trị không bằng nhau thì điều kiện trở thành true.

<> Kiểm tra nếu các giá trị của hai toán hạng bằng hoặc không, (a <> b) là true.
nếu các giá trị không bằng nhau thì điều kiện trở thành true.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 143


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

> Kiểm tra nếu giá trị của toán hạng trái lớn hơn giá trị của (a > b) là là false.
toán hạng phải, nếu có thì điều kiện trở thành true.

< Kiểm tra nếu giá trị của toán hạng trái nhỏ hơn giá trị của (a < b) là true.
toán hạng phải, nếu có thì điều kiện trở thành true.

>= Kiểm tra nếu giá trị của toán hạng trái lớn hơn hoặc bằng (a >= b) là là false.
giá trị của toán hạng phải, nếu có thì điều kiện trở thành
true.

<= Kiểm tra nếu giá trị của toán hạng trái nhỏ hơn hoặc bằng (a <= b) là true.
giá trị của toán hạng phải, nếu có thì điều kiện trở thành
true.

!< Kiểm tra nếu giá trị của toán hạng trái không nhỏ hơn giá trị (a !< b) là sai.
của toán hạng phải, nếu có thì điều kiện trở thành true.

!> Kiểm tra nếu giá trị của toán hạng trái không lớn hơn giá trị (a! b) là true.
của toán hạng phải, nếu có thì điều kiện trở thành true.

4. Các toán tử logical trong SQL


Dưới đây là danh sách tất cả các toán tử logic có sẵn trong SQL.

No. Toán tử & mô tả

1 ALL

Toán tử ALL được sử dụng để so sánh một giá trị với tất cả các giá trị trong một
tập hợp giá trị khác.

2 AND

Toán tử AND cho phép tồn tại nhiều điều kiện trong mệnh đề WHERE của câu
lệnh SQL.

3 ANY

Toán tử ANY được sử dụng để so sánh một giá trị với bất kỳ giá trị thích hợp
nào trong danh sách theo điều kiện.

4 BETWEEN

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 144


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Toán tử BETWEEN được sử dụng để tìm kiếm các giá trị trong một tập các giá
trị, với giá trị nhỏ nhất và giá trị lớn nhất.

5 EXISTS

Toán tử EXISTS được sử dụng để tìm kiếm sự tồn tại của một hàng trong một
bảng được chỉ định đáp ứng một tiêu chí nhất định.

6 IN

Toán tử IN được sử dụng để so sánh một giá trị với một danh sách các giá trị
văn bản đã được chỉ định.

7 LIKE

Toán tử LIKE được sử dụng để so sánh một giá trị với các giá trị tương tự sử
dụng toán tử ký tự đại diện.

8 NOT

Toán tử NOT đảo ngược ý nghĩa của toán tử logic mà nó được sử dụng. Ví dụ:
NOT EXISTS, NOT BETWEEN, NOT IN, vv Đây là một toán tử phủ định.

9 OR

Toán tử OR được sử dụng để kết hợp nhiều điều kiện trong mệnh đề WHERE
của câu lệnh SQL.

10 IS NULL

Toán tử NULL được sử dụng để so sánh một giá trị với một giá trị NULL.

11 UNIQUE

Toán tử UNIQUE tìm kiếm tất cả các hàng của một bảng quy định cho tính duy
nhất (không có bản sao).

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 145


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 14: Biểu thức trong SQL


Một biểu thức trong SQL (SQL Expression) là sự kết hợp của một hoặc nhiều giá trị, toán tử và các
hàm SQL đánh giá một giá trị. Những biểu thức SQL này giống như công thức và chúng được viết
bằng ngôn ngữ truy vấn. Bạn cũng có thể sử dụng chúng để truy vấn cơ sở dữ liệu cho một tập dữ
liệu cụ thể.

1. Cú pháp
Cú pháp cơ bản của câu lệnh SELECT như sau:

SELECT column1, column2, columnN

FROM table_name

WHERE [CONDITION|EXPRESSION];

Có các loại biểu thức SQL khác nhau, được đề cập dưới đây –

 Boolean
 Numeric
 Date

2. Biểu thức Boolean


Biểu thức Boolean trong SQL (SQL Boolean Expressions) tìm nạp dữ liệu dựa trên việc kết hợp một
giá trị duy nhất. Sau đây là cú pháp:

SELECT column1, column2, columnN

FROM table_name

WHERE SINGLE VALUE MATCHING EXPRESSION;

Giả sử bảng CUSTOMERS có các bản ghi sau:

SELECT * FROM CUSTOMERS;


+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ha Anh | 32 | Da Nang | 2000.00 |
| 2 | Van Ha | 25 | Ha Noi | 1500.00 |
| 3 | Vu Bang | 23 | Vinh | 2000.00 |
| 4 | Thu Minh | 25 | Ha Noi | 6500.00 |
| 5 | Hai An | 27 | Ha Noi | 8500.00 |
| 6 | Hoang | 22 | Ha Noi | 4500.00 |

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 146


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
| 7 | Binh | 24 | Ha Noi | 10000.00 |
+----+----------+-----+-----------+----------+
7 rows in set (0.00 sec)
Bảng sau đây là một ví dụ đơn giản về việc sử dụng các biểu thức SQL Boolean:

SELECT * FROM CUSTOMERS WHERE SALARY = 10000;


+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 7 | Binh | 24 | Ha Noi | 10000.00 |
+----+----------+-----+-----------+----------+
1 row in set (0.00 sec)

3. Biểu thức Numeric


Những biểu thức này được sử dụng để thực hiện bất kỳ phép toán nào trong bất kỳ truy vấn nào.
Sau đây là cú pháp:

SELECT numerical_expression as OPERATION_NAME

[FROM table_name

WHERE CONDITION];

Trong đó, phép tính số được sử dụng cho một biểu thức toán học hoặc bất kỳ công thức nào. Sau
đây là một ví dụ đơn giản về việc sử dụng biểu thức SQL Numeric:

SELECT (15 + 6) AS ADDITION


+----------+
| ADDITION |
+----------+
| 21 |
+----------+
1 row in set (0.00 sec)
Có một số hàm được tích hợp sẵn như avg(), sum(), count() vv để thực hiện những gì được gọi là
tính toán tổng hợp dữ liệu đối với một bảng hoặc một cột bảng cụ thể.

SELECT COUNT(*) AS "RECORDS" FROM CUSTOMERS;


+---------+
| RECORDS |
+---------+

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 147


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
| 7|
+---------+
1 row in set (0.00 sec)

4. Biểu thức Date


Biểu thức Date trong SQL (SQL Date Expressions) trả về giá trị ngày và giờ hiện tại của hệ thống:

SELECT CURRENT_TIMESTAMP;
+---------------------+
| Current_Timestamp |
+---------------------+
| 2009-11-12 06:40:23 |
+---------------------+
1 row in set (0.00 sec)
Một ví dụ khác về biển thức Date trong SQL:

SELECT GETDATE();
+-------------------------+
| GETDATE |
+-------------------------+
| 2009-10-22 12:07:18.140 |
+-------------------------+
1 row in set (0.00 sec)

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 148


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ
EXCEL”

Bài 15: Các câu lệnh thao tác với cơ sở dữ


liệu Database
1. Create Database
 Câu lệnh SQL CREATE DATABASE được sử dụng để tạo một cơ sở dữ liệu SQL mới.

Cú pháp

 Cú pháp cơ bản của câu lệnh CREATE DATABASE này như sau:

CREATE DATABASE DatabaseName;

 Tên cơ sở dữ liệu phải là duy nhất trong RDBMS.

Ví dụ

 Nếu bạn muốn tạo một cơ sở dữ liệu mới <testDB>, thì câu lệnh CREATE DATABASE sẽ như
dưới đây:

CREATE DATABASE testDB;

 Đảm bảo bạn có quyền quản trị viên trước khi tạo bất kỳ cơ sở dữ liệu nào. Một khi cơ sở dữ
liệu được tạo ra, bạn có thể kiểm tra nó trong danh sách các cơ sở dữ liệu như sau:

 SQL> SHOW DATABASES;


 +--------------------+
 | Database |
 +--------------------+
 | information_schema |
 | mysql |
 | orig |
 | test |
 | testDB |
 +--------------------+
 5 rows in set (0.00 sec)
2. Drop Database
 Câu lệnh SQL DROP DATABASE được sử dụng để xóa một cơ sở dữ liệu đang tồn tại trong
SQL Server.

Cú pháp

 Cú pháp cơ bản của câu lệnh DROP DATABASE như sau:


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
DROP DATABASE DatabaseName;

 Tên cơ sở dữ liệu phải là duy nhất trong RDBMS.

Ví dụ

 Nếu bạn muốn xóa một cơ sở dữ liệu đang tồn tại <testDB>, thì câu lệnh DROP DATABASE
sẽ như thể hiện dưới đây:

DROP DATABASE testDB;

 Chú ý – Hãy cẩn thận trước khi sử dụng hoạt động này bởi vì bằng cách xóa một cơ sở dữ liệu hiện có sẽ
dẫn đến mất thông tin được lưu trữ trong cơ sở dữ liệu.

 Đảm bảo bạn có quyền quản trị viên trước khi xóa (drop) bất kỳ cơ sở dữ liệu nào. Khi cơ sở
dữ liệu bị xóa, bạn có thể kiểm tra nó trong danh sách các cơ sở dữ liệu như hình dưới đây:

SHOW DATABASES;

 Kết quả:

 +--------------------+
 | Database |
 +--------------------+
 | information_schema |
 | mysql |
 | orig |
 | test |
 +--------------------+
 4 rows in set (0.00 sec)
3. Select Database
 Khi bạn có nhiều cơ sở dữ liệu trong lược đồ SQL. Khi đó trước khi thao tác với cơ sở dữ liệu,
bạn cần phải chọn một cơ sở dữ liệu để làm việc với nó.

 Câu lệnh SQL USE được sử dụng để chọn bất kỳ cơ sở dữ liệu nào hiện có trong lược đồ SQL.

Cú pháp

 Cú pháp cơ bản của câu lệnh USE như dưới đây:

USE DatabaseName;

 Luôn luôn là tên cơ sở dữ liệu phải là duy nhất trong RDBMS.

Ví dụ

 Bạn có thể kiểm tra các cơ sở dữ liệu sẵn có như hình dưới đây:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 150


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
SHOW DATABASES;

 Kết quả:

 +--------------------+
 | Database |
 +--------------------+
 | information_schema |
 | mysql |
 | orig |
 | test |
 | testDB |
 +--------------------+
 5 rows in set (0.00 sec)
 Bây giờ, nếu bạn muốn làm việc với cơ sở dữ liệu testDB thì bạn có thể thực hiện lệnh SQL
sau và bắt đầu làm việc với cơ sở dữ liệu testDB.

USE testDB;

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 151


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 16: Các câu lệnh thao tác với bảng dữ


liệu Table
1. Lệnh tạo bảng dữ liệu – CREATE TABLE
Câu lệnh CREATE TABLE trong SQL được sử dụng để tạo một bảng cơ bản liên quan đến đặt tên
cho bảng và xác định các cột và kiểu dữ liệu của mỗi cột.
Câu lệnh SQL CREATE TABLE được sử dụng để tạo một bảng mới.

CREATE TABLE là từ khóa cho hệ thống cơ sở dữ liệu được sử dụng để tạo một bảng mới với
tên bảng là duy nhất trong CSDL

Sau đó trong ngoặc đơn là khai báo cho các cột trong bảng và kiểu dữ liệu của nó.

Cú pháp:
CREATE TABLE TEN_DATABASE.dbo.TEN_BANG
(
COT1 LOAIDULIEU1,
COT2 LOAIDULIEU2,
COT3 LOAIDULIEU3,
...(CAC COT TIEP THEO - LOAI DU LIEU TIEP THEO)
)

---THUC HANH TAO BANG DU LIEU TREN DATA_MART

CREATE TABLE DATA_MART.dbo.FactTermDeposits1


(
TRANSACTION_DATE date,
SUB_BRANCH_CODE varchar(10),
ACCTNO varchar(25),
CIF varchar(25),
TERM varchar(25),
BALANCE float,
BALANCE_QD float,
CURRENCY varchar(5),
INTEREST_RATE float,
SECTOR varchar(5),
SBV_CODE varchar(5)
)

2. Thêm trường/cột dữ liệu vào bảng - ALTER TABLE ADD


---CU PHAP

ALTER TABLE TEN_DATABASE.dbo.TEN_BANG ADD TEN_COT KIEUDULIEU

---VI DU

ALTER TABLE DATA_MART.dbo.FactTermDeposits1 ADD SEGMENT varchar(25)


3. Xóa cột trong một bảng – ALTER TABLE DROP COLUMN
---CU PHAP

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 152


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

ALTER TABLE TEN_DATABASE.dbo.TEN_BANG DROP COLUMN TEN_COT

---VI DU

ALTER TABLE DATA_MART.dbo.FactTermDeposits1 DROP COLUMN SEGMENT varchar(25)

4. Xóa toàn bộ dữ liệu trong 1 bảng – TRUNCATE TABLE


---SAU KHI XOA, CAU TRUC CUA BANG DU LIEU CUNG NHU TEN BANG VAN TON TAI TRONG CO SO DU LIEU

---CU PHAP
TRUNCATE TABLE TEN_DATABASE.dbo.TEN_BANG

---VI DU

TRUNCATE TABLE DATA_MART.dbo.FactTermDeposits1


5. Xóa bảng dữ liệu - DROP TABLE
---XOA BANG DU LIEU KHOI CO SO DU LIEU, TOAN BO DU LIEU BEN TRONG BANG VA CAU TRUC CUA BANG SE BI MAT
---CU PHAP

DROP TABLE TEN_DATABASE.dbo.TEN_BANG

---VI DU
DROP TABLE DATA_MART.dbo.FactTermDeposits1

6. Đổi kiểu dữ liệu Data Type cho 1 trường/cột dữ liệu – ALTER TABLE ALTER COLUMN
---Tac dung: Doi kieu du lieu cho truong du lieu tu kieu du lieu nay sang kieu du lieu khac
---CU PHAP:
ALTER TABLE TEN_DATABASE.dbo.TEN_BANG ALTER COLUMN TEN_COT KIEUDULIEU
---Vi du: Doi ten kieu du lieu cua truong STT bang DimBranches tu int sang float

ALTER TABLE DATA_MART..DimBranches_VT ALTER COLUMN STT float

7. Đổi tên của trường dữ liệu trong bảng

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 153


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 17: Các câu lệnh thao tác với dữ liệu


Record
Chú ý: Nội dung các ví dụ trong câu lệnh sẽ thường xuyên được gửi tới các anh chị em qua email để
đảm bảo cập nhật phù hợp với nhu cầu thực tế.

1. Câu lệnh SELECT


-- CÂU LỆNH SELECT CHO PHÉP GỌI DỮ LIỆU TRONG BẢNG RA ĐỂ XEM HOẶC CHUẨN BỊ DỮ LIỆU
---ĐƯA VÀO TRONG BẢNG KHI ĐI KÈM VỚI CÂU LỆNH INSERT INTO

1.1 SELECT TEN_COT


--2.1 CÚ PHÁP THỨ 1

SELECT TEN_COT1, TEN_COT2, TEN_CAC_COT_MUON_XEM FROM TEN_DATABASE.dbo.TEN_BANG


--- TÁC DỤNG: XEM MỘT SỐ CỘT DỮ LIỆU TRONG BẢNG DỮ LIỆU
---VÍ DỤ ÁP DỤNG:

SELECT TRANSACTION_DATE, CO_CODE, ACCTNO, CUS_ID FROM INTERFACE.dbo.SaoKeTGTT_20170922

SELECT TRANSACTION_DATE, CO_CODE, ACCTNO, CUS_ID FROM INTERFACE..SaoKeTGTT_20170922

SELECT TRANSACTION_DATE, CO_CODE, ACCTNO, CUS_ID FROM SaoKeTGTT_20170922

---LƯU Ý: VIẾT CÂU LỆNH CÓ ĐẦY ĐỦ TÊN DATABASE VÀ TÊN BẢNG ĐỂ TRÁNH TRƯỜNG HỢP BỊ LỖI
---KHI CHẠY CÂU LỆNH DO PHẦN DATABASE ĐANG ĐỂ MẶC ĐỊNH LÀ DATABASE master

1.2 SELECT *

--2.2 CÚ PHÁP THỨ 2

SELECT * FROM TEN_DATABASE.dbo.TEN_BANG

---TÁC DỤNG: XEM TOÀN BỘ CÁC TRƯỜNG DỮ LIỆU, CÁC DÒNG DỮ LIỆU CÓ TRONG 1 BẢNG DỮ LIỆU.
---CHÚ Ý: CÂU LỆNH NÀY KHÔNG KHUYẾN KHÍCH SỬ DỤNG VÌ CÓ THỂ LÀM ĐƠ HỆ THỐNG DO SỐ LƯỢNG
--- BẢN GHI TRUY VẤN RA KẾT QUẢ LÀ QUÁ LỚN
--VÍ DỤ:

SELECT * FROM INTERFACE.dbo.SaoKeTGTT_20170922


SELECT * FROM INTERFACE..SaoKeTGTT_20170922

1.3 SELECT TOP(n) *

--2.3 CÚ PHÁP THỨ 3

SELECT TOP(n) * FROM TEN_DATABASE.dbo.TEN_BANG

SELECT TOP(n) TEN_COT1, TEN_COT2, TEN_CAC_COT_MUON_XEM FROM TEN_DATABASE.dbo.TEN_BANG

---TÁC DỤNG: Xem TOP n, n = 10, 20, vvv... CÁC BẢN GHI TRONG BẢNG DỮ LIỆU
---THÔNG THƯỜNG CHÚNG TA DÙNG CÚ PHÁP NÀY ĐỂ BIẾT CÁC TRƯỜNG DỮ LIỆU TRONG BẢNG
---MỘT CÁCH NHANH CHÓNG ---> VÀ CÂU LỆNH NÀY SẼ KHÔNG LÀM ĐƠ HỆ THỐNG KHI CÓ NHIỀU DÒNG DỮ LIỆU

---VÍ DỤ:
SELECT TOP 100 * FROM INTERFACE..SaoKeTGTT_20170922

SELECT TOP 100 TRANSACTION_DATE, CO_CODE, ACCTNO, BALANCE FROM INTERFACE..SaoKeTGTT_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 154


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

--- CHÚ Ý: ĐỂ TIẾT KIỆM THỜI GIAN VIẾT CODE, VÀ TĂNG ĐỘ CHÍNH XÁC CHO CÂU LỆNH
--- CHÚNG TA SẼ VIẾT MỆNH ĐỀ SELECT FROM TEN_DATABASE..TEN_TABLE TRƯỚC
----SAU ĐÓ CHÚNG TA MỚI VIẾT CÁC CỘT/TRƯỜNG TRONG BẢNG DỮ LIỆU
----VÌ KHI ĐÓ SQL SERVER SẼ CÓ CHỨC NĂNG GỢI NHỚ CÁC CỘT/TRƯỜNG DỮ LIỆU CHO CHÚNG TA.
----VÍ DỤ

SELECT TOP 100 TRANSACTION_DATE, CO_CODE, ACCTNO, BALANCE FROM INTERFACE..SaoKeTGTT_20170922

1.4 SELECT DISTINCT

---2.4 CÚ PHÁP THỨ 4 VỚI SELECT

SELECT DISTINCT TEN_COT1 FROM TEN_DATABASE.dbo.TEN_BANG

SELECT DISTINCT TEN_COT1, TEN_COT2, TEN_COT_MUON_XEM FROM TEN_DATABASE.dbo.TEN_BANG

----TÁC DỤNG: CÂU LỆNH SELECT DISTINCT SẼ GIÚP CHÚNG TA GỌI RA DUY NHẤT
----CÁC BẢN GHI KHÔNG TRÙNG NHAU CỦA 1 TRƯỜNG DỮ LIỆU HOẶC MỘT SỐ TRƯỜNG DỮ LIỆU
----TRONG BẢNG DỮ LIỆU CỦA CHÚNG TA.
----CÁCH NÀY SẼ GIÚP CHÚNG TA NHANH CHÓNG XÁC ĐỊNH CÁC THÀNH PHẦN CỦA MỘT TRƯỜNG DỮ LIỆU TRONG BẢNG

---VÍ DỤ: XÁC ĐỊNH CÁC CHI NHÁNH CÓ TRONG BẢNG SAO KÊ TGTT_20170922

SELECT DISTINCT CO_CODE FROM INTERFACE..SaoKeTGTT_20170922

--- XÁC ĐỊNH CÁC LOẠI TIỀN TỆ Có tRONG BẢNG TIỀN GỬI tHANH TOÁN 20170922

SELECT DISTINCT CURRENCY FROM INTERFACE..SaoKeTGTT_20170922

---VÍ DỤ XÁC ĐỊNH CÁC CHI NHÁNH VÀ TỪNG LOẠI TIỀN TỆ TƯƠNG ỨNG VỚI TỪNG CHI NHÁNH CÓ TRONG BẢNG
--- SAO KÊ TGTT_20170922

SELECT DISTINCT CO_CODE, CURRENCY FROM INTERFACE..SaoKeTGTT_20170922

-----THEM MOT SO CAU LENH VI DU


-----SELECT TRANSACTION_DATE, CO_CODE, ACCTNO, CUS_ID FROM INTERFACE.dbo.SaoKeTGTK_20170922
-----SELECT * FROM INTERFACE.dbo.SaoKeTGTK_20170922
-----SELECT TOP 10 * FROM INTERFACE.dbo.SaoKeTGTK_20170922
-----SELECT TOP 10 TRANSACTION_DATE,CO_CODE,ACCTNO, CUS_ID FROM INTERFACE.dbo.SaoKeTGTK_20170922
------SELECT DISTINCT TRANSACTION_DATE FROM INTERFACE.dbo.SaoKeTGTK_20170922
------SELECT DISTINCT TRANSACTION_DATE, CO_CODE FROM INTERFACE.dbo.SaoKeTGTK_20170922
------SELECT DISTINCT TRANSACTION_DATE, CO_CODE, ACCTNO FROM INTERFACE.dbo.SaoKeTGTK_20170922

1.5 SELECT * INTO

--- ---2.5 CÚ PHÁP THỨ 5 VỚI SELECT

SELECT * INTO TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_MOI


FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_CU_DANG_CO

--- TÁC DỤNG: COPY TOÀN BỘ BẢNG DỮ LIỆU HIỆN THỜI SANG 1 BẢNG DỮ LIỆU MỚI
---- CHÚNG TA THƯỜNG HAY DÙNG CÂU LỆNH NÀY ĐỂ BACKUP 1 BẢNG DỮ LIỆU TRƯỚC KHI
--- LÀM MỘT VIỆC GÌ ĐÓ QUAN TRỌNG TÁC ĐỘNG LÊN BẢNG DỮ LIỆU HIỆN THỜI
---- (VÍ DỤ DELETE BẢN GHI, UPDATE BẢN GHI...)

--- VÍ DỤ:
SELECT * INTO INTERFACE..SAOKETGTT_20170922_BAK
FROM INTERFACE..SaoKeTGTT_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 155


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
1.6 SELECT * INTO WHERE

--- ---2.6 CÚ PHÁP THỨ 6 VỚI SELECT

SELECT * INTO TEN_DATABASE.dbo.TEN_BANG_DULIEU_MOI


FROM TEN_DATABASE.dbo.TEN_BANG_DULIEU_CU_DANG_CO
WHERE DIEU_KIEN_LOC_DU_LIEU

---TÁC DỤNG: COPY MỘT PHẦN BẢNG DỮ LIỆU GỐC SANG BẢNG DỮ LIỆU MỚI NHỎ HƠN
--- NHỜ CÂU LỆNH LỌC DỮ LIỆU SAU MỆNH ĐỀ WHERE

---VÍ DỤ THỰC TẾ: CHÚNG TA CÓ MỘT BẢNG DỮ LIỆU GỒM TẤT CẢ CÁC KHỐI ĐƯỢC IMPORT VÀO DATABASE
--- SAU ĐÓ CHÚNG TA CHỈ MUỐN TẠO RA BẢNG DỮ LIỆU MỚI BAO GỒM DỮ LIỆU CỦA KHỐI KHÁCH HÀNG CÁ NHÂN
--- THÌ ĐIỀU KIỆN LỌC DỮ LIỆU CỦA CHÚNG TA SẼ LÀ WHERE KHOI = 'INDIV' HOẶC SECTOR GIỮA 1602 VÀ 1899

--- VÍ DỤ:

SELECT * INTO INTERFACE..SAOKETGTT_20170922_INDIV


FROM INTERFACE..SaoKeTGTT_20170922
WHERE SECTOR BETWEEN 1602 AND 1899

2. Câu lệnh WHERE

Mệnh đề WHERE trong SQL được sử dụng để chỉ định một điều kiện trong khi lấy dữ liệu từ một
bảng hoặc bằng cách join với nhiều bảng. Nếu điều kiện thỏa mãn, thì nó trả về một giá trị cụ thể từ
bảng. Bạn nên sử dụng mệnh đề WHERE để lọc các bản ghi và chỉ lấy các bản ghi cần thiết.

Mệnh đề WHERE không chỉ được sử dụng trong câu lệnh SELECT, mà nó còn được sử dụng trong
câu lệnh UPDATE, DELETE, vv, mà sẽ được đề cập đến trong các bài tiếp theo.

----7 CÂU LỆNH VỚI MỆNH ĐỀ WHERE


--- CÚ PHÁP:
SELECT TEN_COT_1, TEN_COT_2, ..., TEN_COT_CAN_HIEN_THI FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU
WHERE DIEU_KIEN_LOC_DU_LIEU

---TÁC DỤNG: CHO PHÉP LỌC DỮ LIỆU TỪ CÂU LỆNH SELECT ĐỂ CHỈ HIỂN THỊ CÁC LOẠI DỮ LIỆU
--- MONG MUỐN VỚI CÁC ĐIỀU KIỆN LỌC DỮ LIỆU SAU MỆNH ĐỀ WHERE
--- LƯU Ý: KHI TRUY XUẤT DỮ LIỆU TRONG DATABASE TỪ HỆ THỐNG CỦA IT, VÍ DỤ ORS, DWH
--- BẮT BUỘC PHẢI SỬ DỤNG MỆNH ĐỀ WHERE SAU CÂU LỆNH SELECT ĐỂ LỌC MỘT SỐ BẢN GHI MONG MUỐN
--- TRÁNH LÀM ĐƠ HỆ THỐNG.

----VÍ DỤ TÌM CÁC BẢN GHI CỦA KHÁCH HÀNG CÓ MÃ KHÁCH HÀNG LÀ 149753 TRONG BẢNG SAO KÊ TIỀN GỬI
----THANH TOÁN 20170922
--- CÂU LỆNH:

SELECT TRANSACTION_DATE, CO_CODE, CUS_ID, BALANCE, BALANCE_QD


FROM INTERFACE..SaoKeTGTT_20170922
WHERE CUS_ID = '149753'
--- VÍ DỤ 2: TÌM CÁC BẢN GHI CỦA CHI NHÁNH MM0010005 TỪ BẢNG SAO KÊ TGTT_20170922

SELECT * FROM INTERFACE..SaoKeTGTT_20170922


WHERE CO_CODE = 'MM0010005'

3. Câu lệnh GROUP BY


-----8 CÂU LỆNH GROUP BY

-----CÚ PHÁP:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 156


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

SELECT TEN_COT_CAN_NHOM_DE_TINH_TOAN, HAM_TINH_TOAN_TONG_HOP (TEN_COT_CAN_TONG_HOP)


FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU
WHERE DIEU_KIEN_LOC_DU_LIEU
GROUP BY TEN_COT_CAN_NHOM_DE_TINH_TOAN

----TÁC DỤNG: CHO PHÉP CHÚNG TA SỬ DỤNG CÁC HÀM TÍNH TOÁN TỔNG HỢP DỮ LIỆU ĐỂ TỔNG HỢP DỮ LIỆU
---- THEO CÁC TRƯỜNG ĐƯỢC NHÓM BỞI MỆNH ĐỀ GROUP BY
--- LƯU Ý: TÊN CỘT PHÍA SAU MỆNH ĐỀ SELECT VÀ MỆNH ĐỀ GROUP BY DÙNG ĐỂ NHÓM DỮ LIỆU LẠI
---- CẦN PHẢI GIỐNG NHAU

--- VÍ DỤ: TÍNH TOÁN SỐ DƯ TIỀN GỬI THANH TOÁN BẰNG VND CỦA CÁC CHI NHÁNH CÓ TRONG BẢNG SAO KÊ
TGTT_20170922

SELECT CO_CODE, SUM(CONVERT(FLOAT,BALANCE_QD)) as SODU_TGTT_VND


FROM INTERFACE..SaoKeTGTT_20170922
WHERE CURRENCY = 'VND'
GROUP BY CO_CODE

----VÍ DỤ: TÍNH TOÁN SỐ DƯ TIỀN GỬI THANH TOÁN BẰNG NGOẠI TỆ THEO TỪNG CHI NHÁNH, TỪNG SBV_CODE
----TRONG BẢNG SAO KÊ TGTT 20170922

SELECT CO_CODE, SBV_CODE, SUM(CONVERT(FLOAT, BALANCE_QD))/1e9 as SODU_TGTT_SBV_CODE_NTE


FROM INTERFACE..SaoKeTGTT_20170922
WHERE CURRENCY != 'VND'
GROUP BY CO_CODE, SBV_CODE

4. Câu lệnh ORDER BY

-----9------ CAU LENH ORDER BY

---CÚ PHÁP:
SELECT TEN_COT_CAN_XEM FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU
WHERE DIEU_KIEN_LOC_DU_LIEU
ORDER BY TEN_COT_1, TEN_COT_2

----TÁC DỤNG: CHO PHÉP SẮP XẾP THỨ TỰ XUẤT HIỆN SAU CÂU LỆNH SELECT
---- VÍ DỤ: LIỆt kê CÁC BẢN GHI CỦA BẢNG DỮ LIỆU SAO KÊ TGTT_20170922
---SẮP XẾP THEO TÊN CHI NHÁNH

---CÂU LỆNH:
SELECT * FROM INTERFACE..SaoKeTGTT_20170922
ORDER BY CO_CODE

---LƯU Ý: TRONG TRƯỜNG HỢP MUỐN SẮP XẾP DỮ LIỆU TỪ Z TỚI A, HOẶC TỪ LỚN NHẤT TỚI NHỎ NHẤT
--- THÌ CHÚNG TA THÊM VÀO MỆNH ĐỀ ORDER BY CÚ PHÁP DESC
---- MẶC ĐỊNH CỦA SQL KHI SỬ DỤNG MỆNH ĐỀ ORDER BY LÀ SẮP TỪ A TỚI Z, TỪ NHỎ TỚI LỚN, TƯƠNG ỨNG VỚI CÚ
PHÁP ASC

----- VÍ DỤ: TÌM TOP 3 CHI NHÁNH CÓ SỐ DƯ TIỀN GỬI THANH TOÁN THEO VND LỚN NHẤT TRONG BẢNG DỮ LIỆU
----- SAO KÊ TGTT_20170922
----- CHÚNG TA SẼ SỬ DỤNG KẾT HỢP CÁC MỆNH ĐỀ SELECT TOP, WHERE, GROUP BY, ORDER BY ĐỂ LÀM VÍ DỤ NÀY

SELECT TOP 3 CO_CODE, SUM(CONVERT(FLOAT, BALANCE_QD))/1e9 AS SODU_QUYDOI


FROM INTERFACE..SaokeTGTT_20170922
WHERE CURRENCY = 'VND'
GROUP BY CO_CODE
ORDER BY SODU_QUYDOI DESC

SELECT TOP 3 CO_CODE, SUM(CONVERT(FLOAT,BALANCE_QD))/1e9 AS SODU_QUYDOI

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 157


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
FROM INTERFACE.dbo.SaoKeTGTT_20170922
WHERE CURRENCY = 'VND'
GROUP BY CO_CODE
ORDER BY SUM(CONVERT(FLOAT,BALANCE_QD)) DESC

5. Câu lệnh INSERT INTO

-----10------ CÂU LỆNH INSERT INTO


---- TÁC DỤNG: CHO PHÉP CHÈN DỮ LIỆU VÀO TRONG MỘT BẢNG DỮ LIỆU
----- BẢNG DỮ LIỆU NÀY CÓ THỂ CÓ DỮ LIỆU SẴN HOẶC CHƯA CÓ DỮ LIỆU
----CÚ PHÁP: CÓ 4 CÁCH ĐỂ VIẾT CÂU LỆNH INSERT INTO
5.1 INSERT INTO VALUES KHÔNG CHỈ RÕ TÊN CỘT
----CÁCH 1
INSERT INTO TEN_DATABASE.dbo.TEN_BANG_DU_LIEU
VALUES (GIATRI1, GIATRI2, GIATRI3, CAC_GIA_TRI_KHAC_CAN_THEM)

---- VÍ DỤ: TẠO BẢNG DỮ LIỆU ĐIỂM THI SAU ĐÓ CHÈN THÔNG TIN CỦA 3 THÍ SINH VÀO BẢNG
--- TẠO BẢNG DỮ LIỆU ĐIỂM THI

CREATE TABLE INTERFACE.dbo.DIEM_THI


(
STT int,
HODEM nvarchar(25),
TEN nvarchar(25),
DIEM_TOAN float,
DIEM_VAN float
)

SELECT * FROM INTERFACE..DIEM_THI

INSERT INTO INTERFACE..DIEM_THI


VALUES ('1','NGUYEN VAN', 'A', '9.5','7')

INSERT INTO INTERFACE..DIEM_THI


VALUES ('2','TRAN THI', 'B', '10','8')

Lưu ý: Muốn sử dụng câu lệnh này không bị lỗi, chúng ta cần phải nhớ trong đầu số cột của bảng dữ liệu, kiểu dữ liệu trong
bảng dữ liệu

5.2 INSERT INTO VALUES CHỈ RÕ TÊN CỘT

----CÁCH 2:

--CÚ PHÁP

INSERT INTO TEN_DATABASE.dbo.TEN_BANG_DU_LIEU (COT1, COT2, COT3, ... COTN)


VALUES (GIATRI1, GIATRI2, GIATRI3, ... GIATRI N)

---CACH NAY AP DUNG KHI CHUNG TA CHI MUON INSERT DU LIEU VAO MOT SO COT TRONG BANG DU LIEU
---MA KHONG PHAI LA INSERT VAO TOAN BO CAC COT DU LIEU. VI TA DA CHI RO RA COT NAO SE DUOC INSERT DU LIEU

---CAU LENH NAY CHI RO BAO NHIEU TRUONG DU LIEU DUOC CHEN DU LIEU VAO
---TUONG UNG VOI CAC GIA TRI DU LIEU O SAU VALUES NEN SE IT BI SAI HON

---Vi du: Them gia tri vao mot so truong/cot du lieu cua bang TGTT_20170922
---CO_CODE = 'MM123'; ACCTNO = '123456'; BALANCE = '100'

INSERT INTO INTERFACE..SaoKeTGTT_20170922 (CO_CODE, ACCTNO,BALANCE)

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 158


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
VALUES ('MM123','123456','100')
---KIEM TRA LAI KET QUA NHU SAU:
SELECT * FROM INTERFACE..SaoKeTGTT_20170922 WHERE CO_CODE = 'MM123'

5.3 INSERT INTO VỚI SELECT KHÔNG CHỈ RÕ TÊN CỘT

----CACH 3:
---CU PHAP NHU SAU:
INSERT INTO TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_1
SELECT * FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_2

---TAC DUNG: CHO PHEP THEM DU LIEU VAO BANG DU LIEU DICH TU KET QUA LA MOT CAU LENH SELECT.
---CACH NAY SE CHO PHEP CHUNG TA TIET KIEM THOI GIAN CHEN DU LIEU VI KHONG PHAI INSERT TUNG BAN GHI MOT
---LUU Y: DE SU DUNG CAU LENH NAY THI CAC TRUONG DU LIEU O BANG_DU_LIEU_1 VA BANG_DU_LIEU_2 PHAI BANG
NHAU
---VA CAC KIEU DU LIEU CUA BANG_DU_LIEU_1 VA BANG_DU_LIEU_2 PHAI TUONG THICH VOI NHAU
---- VI DU:
--1. TAO BANG DU LIEU BACKUP CUA BANG INTERFACE..SaoKeTGTT_20170922

SELECT * INTO INTERFACE..SaoKeTGTT_20170922_BACKUP


FROM INTERFACE..SaoKeTGTT_20170922

--2. INSERT TOAN BO DU LIEU TU BANG INTERFACE..SaoKeTGTT_20170922


----SANG BANG DU LIEU INTERFACE..SaoKeTGTT_20170922_BACKUP

INSERT INTO INTERFACE..SaoKeTGTT_20170922_BACKUP


SELECT * FROM INTERFACE..SaoKeTGTT_20170922

5.4 INSERT INTO VỚI SELECT CHỈ RÕ TÊN CỘT

----CACH 4:
---CU PHAP:
INSERT INTO TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_1 (COT1, COT2, COT3, ... COTN)
SELECT (COT1, COT2, COT3, ... COTN) FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_2

---TAC DUNG: CAU LENH CHO PHEP CHEN DU LIEU VAO MOT SO COT/TRUONG TRONG BANG DU LIEU
---TU NGUON DU LIEU LA KET QUA CUA MOT CAU LENH SELECT
---CHU Y: SO COT TRONG BANG DICH VA SO COT TRONG CAU LENH SELECT TU BANG NGUON PHAI GIONG NHAU
---TAC DUNG CUA CACH NAY SE GIUP CHO CAU LENH CUA CHUNG TA CHAY ON DINH QUA THOI GIAN, KHONG BI BAO LOI
----VI: THUC TE LA BANG DU LIEU CO THE THEM TRUONG DU LIEU MA KHONG BAO CHO CHUNG TA BIET
----NEU SU DUNG INSERT INTO MA KHONG CHI RO RA TRUONG DU LIEU CAN INSERT THI CO THE BI LOI CU PHAP.
----NEN SU DUNG CACH 4

Tác dụng của cách này sẽ giúp cho câu lệnh của chúng ta chạy ổn định qua thời gian không bị báo lỗi. Vì thực tế là bảng dữ
liệu có thể thêm trường dữ liệu mà không báo cho chúng ta biết. Nếu sử dụng Insert Into mà không chỉ rõ ra trường dữ liệu
cần Insert thì có thể bị lỗi cú pháp. Nên sử dụng cách 4

-----
--VI DU: INSERT INTO CAC TRUONG CO_CODE, ACCTNO, BALANCE TU BANG INTERFACE..SaoKeTGTT_20170922
--VAO BANG INTERFACE..SaoKeTGTT_20170922_BACKUP

INSERT INTO INTERFACE..SaoKeTGTT_20170922_BACKUP (CO_CODE,ACCTNO, BALANCE)


SELECT CO_CODE,ACCTNO, BALANCE FROM INTERFACE..SaoKeTGTT_20170922

5.5 Ý TƯỞNG ÁP DỤNG TRONG THỰC TẾ


----- Y TUONG THUC TE 1
-----SU DUNG INSERT INTO DE TINH TOAN TONG HOP DU LIEU, SAU DO CHEN DU LIEU DA TINH TOAN NAY
-----VAO TRONG 1 BANG TAM. SAU DO DUNG BANG TAM NAY DE UPDATE VAO BANG DU LIEU GOC
----INSERT INTO TEMPLATE_TABLE
----SELECT CO_CODE, CURRENCY, SUM(BALANCE_QD)
----FROM INTERFACE.dbo.SaoKeTGTK_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 159


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
----GROUP BY CO_CODE, CURRENCY

----- Y TUONG THUC TE 2


--- CO 1 BANG DU LIEU CO SAN VOI 200 CHI NHANH, PGD
--- SANG THANG MOI, NGAN HANG PHAT TRIEN THEM 20 CHI NHANH, PGD
----LAM THE NAO DE CHEN DU LIEU MOI VAO BANG DU LIEU DANG CO MOT CACH NHANH NHAT ???

Có 1 bảng dữ liệu có sẵn với 200 chi nhánh, PGD. Sang tháng mới, ngân hàng phát triển thêm 20 Chi nhánh, PGD. Làm thế nào
để chèn dữ liệu mới vào bảng dữ liệu đang có một cách nhanh nhất.

--- CACH XU LY:


----1. LAY DANH SACH 20 CHI NHANH, PGD MOI DUA VAO FILE EXCEL.
----2. IMPORT FILE EXCEL VAO DATABASE.
----3. SU DUNG INSER INTO vA SELCT * FROM BANG DU LIEU MOI IMPORT TU EXCEL VAO
-----CHUNG TA SE DUOC BANG DU LIEU UPDATE MOT CACH NHANH CHONG VOI 20 CN - PGD

Cách xử lý: Lấy danh sách 20 Chi nhánh, PGD mới đưa vào file Excel. Import file Excel vào Database. Sử dụng Insert Into và
Select * from bảng dữ liệu mới Import từ Excel vào chúng ta sẽ được bảng dữ liệu update một cách nhanh chóng với 20 – CN
– PGD mới.

6. Câu lệnh UPDATE


6.1 UPDATE VỚI DỮ LIỆU TỪ 1 BẢNG DỮ LIỆU KHÁC

-----11------ CAU LENH UPDATE


---- CU PHAP 1

UPDATE TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_1
SET COT1 = value1, COT2 = value2,...
FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_2
WHERE TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_1.COTTHAMCHIEU
= TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_2.COTTHAMCHIEU

----TAC DUNG: CAU LENH NAY CHO PHEP CHUNG TA CAP NHAT DU LIEU VAO BANG DU LIEU DICH
--- TU DU LIEU CUA MOT BANG DU LIEU NGUON KHAC

6.2 UPDATE VỚI DỮ LIỆU TRONG NỘI BỘ MỘT BẢNG DỮ LIỆU

---CU PHAP 2

UPDATE TEN_DATABASE.dbo.TEN_BANG_DU_LIEU
SET COT1 = value1, COT2 = value2,...
WHERE COTN = ValuesN

---TAC DUNG: CAU LENH NAY CHO PHEP CHUNG TA CAP NHAT DU LIEU VAO BANG DU LIEU DICH
--- VOI CAC COT DU LIEU TRONG CHINH BANG DU LIEU DO THEO MOT DIEU KIEN NHAT DINH (NEU CO)

---VI DU MINH HOA

----- CAP NHAT TY GIA CUA BANG TY GIA VAO TRONG COT TY GIA CUA BANG
INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP

---1. IMPORT BANG DU LIEU SAO KE TY GIA NGAY 20170922 vao DATABASE INTERFACE
---SU DUNG VIEC IMPORT VOI FILE TEXT DA HOC TRONG BUOI TRUOC
---2. THEM COT DU LIEU TY_GIA VAO BANG INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP

ALTER TABLE INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP ADD TY_GIA float

---3. SU DUNG CAU LENH UPDATE DE CAP NHAT TY GIA VAO BANG INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 160


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

UPDATE TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_1
SET COT1 = value1, COT2 = value2,...
FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_2
WHERE TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_1.COTTHAMCHIEU
= TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_2.COTTHAMCHIEU

UPDATE INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP
SET TY_GIA = CONVERSION_RATE
FROM INTERFACE.dbo.SaoKeTyGia_20170922
WHERE INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP.CURRENCY = INTERFACE.dbo.SaoKeTyGia_20170922.CURRENCY

---TRONG TRUONG HOP TEN COT CAN UPDATE HOAC TEN COT THAM CHIEU O BANG DU LIEU 1 VA 2 TRUNG NHAU
---CHUNG TA CAN CHI RO CA TEN BANG TRONG CAU LENH
---VI DU INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP.CURRENCY = INTERFACE.dbo.SaoKeTyGia_20170922.CURRENCY

---4. TAO THEM COT SODU_QUYDOI VAO BANG INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP

ALTER TABLE INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP ADD SODU_QUYDOI float

---5. DUNG CAU LENH UPDATE DE TINH TOAN SODU_QUYDOI = BALANCE * TY_GIA VAO BANG
INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP

UPDATE INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP
SET SODU_QUYDOI = BALANCE * TY_GIA

---------------------------------------
SELECT TOP 1000 * FROM INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP
SELECT TOP 1000 * FROM INTERFACE.dbo.SaoKeTyGia_20170922

ALTER TABLE INTERFACE.dbo.SaoKeTGTK_20170922 ADD TY_GIA float


ALTER TABLE INTERFACE.dbo.SaoKeTGTK_20170922 ADD SODU_QUYDOI float
ALTER TABLE INTERFACE.dbo.SaoKeTGTK_20170922 ADD TYM_GIA float
----------XOA MOT COT TRONG BANG DU LIEU -----------
ALTER TABLE INTERFACE.dbo.SaoKeTGTK_20170922 DROP COLUMN TY_GIA

7. Câu lệnh DELETE


-----12------ CAU LENH DELETE
----CU PHAP 1
DELETE FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU
---CU PHAP TREN KET QUA GIONG CAU LENH
TRUNCATE TABLE TEN_DATABASE.dbo.TEN_BANG_DU_LIEU

---HOAC CU PHAP 2
DELETE FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU
WHERE DIEU_KIEN_LOC_DU_LIEU

--- TAC DUNG:


----CHO PHEP CHUNG TA XOA DU LIEU TRONG BANG DU LIEU MA VAN GIU NGUYEN CAU TRUC CUA BANG
----CAU LENH DELETE THUONG DI KEM VOI MENH DE WHERE DE CHI RA CHINH XAC DU LIEU NAO CAN PHAI XOA

----PHAN BIET VOI CAU LENH TRUNCATE TABLE:


----CAU LENH TRUNCATE THI KO CO DIEU KIEN WHERE VA MAC DINH TRUNCATE TABLE SE XOA TOAN BO DU LIEU
TRONG BANG
----CAU LENH TRUNCATE TABLE SE THUC THI NHANH HON CAU LENH DELETE

---VI DU 1:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 161


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
---XOA DU LIEU VOI CAC BAN GHI CO LOAI TIEN BANG EUR TRONG BANG INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP

DELETE FROM INTERFACE.dbo.SaoKeTGTT_20170922_BACKUP


WHERE CURRENCY = 'EUR'

SELECT TOP 100 * FROM INTERFACE.dbo.SaoKeTGTK_20170922_COPY

DELETE FROM INTERFACE.dbo.SaoKeTGTK_20170922_COPY


WHERE CURRENCY = 'EUR'

(140 row(s) affected)

VI DU 2: XOA TOAN BO DU LIEU TRONG BANG INTERFACE.dbo.SaoKeTGTK_20170922_COPY

DELETE FROM INTERFACE.dbo.SaoKeTGTK_20170922_COPY

(56054 row(s) affected)

SELECT TOP 100 * FROM INTERFACE.dbo.SaoKeTGTK_20170922_COPY

8. Câu lệnh UNION / UNION ALL


-----13------ CAU LENH UNION ALL / UNION
---TAC DUNG:
---CAU LENH CHO PHEP NOI DU LIEU GIUA CAC BANG DU LIEU KHAC NHAU DE SU DUNG KHI HIEN THI DU LIEU
---HOAC CHO VAO TRONG CAU LENH INSERT INTO

---CU PHAP

SELECT COT1, COT2, ....COTN FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_1


WHERE DIEU_KIEN_LOC_DU_LIEU
UNION ALL
SELECT COT1, COT2, ....COTN FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_2
WHERE DIEU_KIEN_LOC_DU_LIEU

---CHU Y: DANH SACH CAC COT DU LIEU TRONG BANG DU LIEU 1 VA DU LIEU 2 PHAI GIONG NHAU

---VI DU: TINH SO DU HUY DONG VON THEO TUNG CHI NHANH VA HIEN THI TRONG 1 BANG DU LIEU
--- NGUON DU LIEU TU 2 BANG SAOKETGTT_20170922 và SAOKETGTK_20170922
--- SAU DO SU DUNG CAU LENH SELECT LONG NHAU DE HIEN THI KET QUA HUY DONG VON THEO TUNG CHI NHANH.

SELECT CO_CODE, SUM(SODU_HUYDONG) as SODU_HDV_TONGHOP


FROM
(
SELECT 'TGTT' AS LOAI_HUY_DONG, CO_CODE, SUM(CONVERT(FLOAT,BALANCE_QD))/1e9 as SODU_HUYDONG
FROM INTERFACE..SaoKeTGTT_20170922
WHERE SBV_CODE like '42%'
GROUP BY CO_CODE
UNION ALL
SELECT 'TGTK' AS LOAI_HUY_DONG, CO_CODE, SUM(CONVERT(FLOAT,BALANCE_QD))/1e9 as SODU_HUYDONG
FROM INTERFACE..SaoKeTGTK_20170922
WHERE SBV_CODE like '42%'
GROUP BY CO_CODE
) AS BANG_1
GROUP BY CO_CODE

----------Lenh UNION --------

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 162


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
---CU PHAP

SELECT COT1, COT2, ....COTN FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_1


WHERE DIEU_KIEN_LOC_DU_LIEU
UNION
SELECT COT1, COT2, ....COTN FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU_2
WHERE DIEU_KIEN_LOC_DU_LIEU

--- TAC DUNG: LENH UNION SE LOAI TRU CAC BAN GHI BI TRUNG TRONG KET
----QUA HIEN THI CUA CAU LENH GHEP GIUA 2 BANG DU LIEU SO VOI DUNG UNION ALL

----VI DU:
----TAI NGAY 22/09: TA CO CHI NHANH A VOI SO TIEN LA 100 TY
----TAI NGAY 23/09: TA CO CHI NHANH A VOI SO TIEN LA 100 TY
----KET QUA CUA CAU LENH UNION ALL: SE HIEN THI 2 DONG VOI CHI NHANH A, SO TIEN 100 TY
----CON KET QUA CUA CAU LENH UNION: SE HIEN THI 1 DONG VOI CHI NHANH A, SO TIEN 100 TY

SELECT 'TGTT' AS LOAI_HUY_DONG, CO_CODE, SUM(CONVERT(FLOAT,BALANCE_QD))/1e9 as SODU_HUYDONG


FROM INTERFACE..SaoKeTGTT_20170922
WHERE SBV_CODE like '42%'
GROUP BY CO_CODE
UNION
SELECT 'TGTT' AS LOAI_HUY_DONG, CO_CODE, SUM(CONVERT(FLOAT,BALANCE_QD))/1e9 as SODU_HUYDONG
FROM INTERFACE..SaoKeTGTT_20170922
WHERE SBV_CODE like '42%'
GROUP BY CO_CODE

----CAU LENH UNION GIONG CHUC NANG REMOVE DUPLICATE TRONG EXCEL NEU CO BAN GHI BI TRUNG NHAU

---UNG DUNG CUA CAU LENH UNION ALL


---Ví dụ: Ta có 2 file tiền gửi tiết kiệm và tiền gửi thanh toán dùng để tính huy động vốn
---Khi đó: Ta sẽ tính như sau:

SELECT MÃ CHI NHÁNH, SUM(SỐ DƯ) FROM TIỀN GỬI TIẾT KIỆM
WHERE TRANSACTION_DATE = 'NGÀY DỮ LIỆU'
GROUP BY MÃ CHI NHÁNH
UNION ALL
SELECT MÃ CHI NHÁNH, SUM(SỐ DƯ) FROM TIỀN GỬI THANH TOÁN
WHERE TRANSACTION_DATE = 'NGÀY DỮ LIỆU'
GROUP BY MÃ CHI NHÁNH
---> CÂU LỆNH NÀY SẼ GIÚP CHÚNG TA HIỂN THỊ CẢ TIỀN GỬI THANH TOÁN vÀ Tiền GưI tiết KIỆM TRONG CÙNG 1 CÂU
LỆNH.

9. Câu lệnh HAVING


-----14------ CAU LENH HAVING
---CÚ PHÁP

SELECT TEN_COT, HAM_TONG_HOP_DU_LIEU(TEN_COT) FROM TEN_DATABASE.dbo.TEN_BANG_DU_LIEU


WHERE TEN_COT DIEU_KIEU_LOC_DU_LIEU
GROUP BY TEN_COT
HAVING HAM_TONG_HOP_DU_LIEU DIEU_KIEN_LOC_DU_LIEU

---TÁC DỤNG: CÂU LỆNH HAVING GIÚP CHÚNG TA LỌC DỮ LIỆU SAU KHI CÓ KẾT QUẢ NHÓM TỪ CÂU LỆNH GROUP BY
---DO ĐÓ HAVING BAO GIỜ CŨNG PHẢI ĐI SAU GROUP BY

---Ví dụ:

---Xác định các Chi nhánh có số tiền gửi VND lớn hơn 100 tỷ trong ngày 22/09 từ bảng TGTT.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 163


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
SELECT CO_CODE, SUM(CONVERT(FLOAT,BALANCE_QD))/1e9 AS SODU
FROM INTERFACE.dbo.SaoKeTGTT_20170922
WHERE CURRENCY = 'VND'
GROUP BY CO_CODE
HAVING SUM(CONVERT(FLOAT,BALANCE_QD))/1e9 > 100

---THAY THE 3 BUOC TRONG EXCEL: 1 LOC DU LIEU VOI TIEN TE BANG VND, 2 PIVOT TABLE, 3 FILTER > 100

---Xác định các khách hàng xuất hiện lớn hơn 20 lần trong sao kê tiền gửi tiết kiệm ngày 22/09.

SELECT CUS_ID, COUNT(CUS_ID) FROM INTERFACE.dbo.SaoKeTGTK_20170922


GROUP BY CUS_ID
HAVING COUNT(CUS_ID) > 60

10. Sử dụng AND, OR, IN, BETWEEN, LIKE


-----15----- SU DUNG AND, OR, IN, BETWEEN, LIKE

------SU DUNG AND TRONG CAU LENH SELECT

--- TÁC DỤNG: AND DÙNG ĐỂ GIỚI HẠN CÁC ĐIỀU KIỆN LỌC DỮ LIỆU SAU MỆNH ĐỀ WHERE

--- VÍ DỤ: XÁC ĐỊNH CÁC BẢN GHI CÓ SỐ DƯ TIỀN GỬI LÀ VND THUỘC CHI NHÁNH 'MM0010005'
----TẠI BẢNG DỮ LIỆU SAO KÊ TIỀN GỬI THANH TOÁN 20170922

----CÂU LỆNH:

SELECT * FROM INTERFACE..SaoKeTGTT_20170922


WHERE CURRENCY = 'VND'
AND CO_CODE = 'MM0010005'

---Ví dụ: Xác định các bản ghi có loai tien khac VND cua Chi nhanh MM0010005
----TẠI BẢNG DỮ LIỆU SAO KÊ TIỀN GỬI THANH TOÁN 20170922

SELECT * FROM INTERFACE..SaoKeTGTT_20170922


WHERE CURRENCY <> 'VND'
AND CO_CODE = 'MM0010005'

------SU DUNG OR TRONG CAU LENH SELECT

----TÁC DỤNG: OR DÙNG ĐỂ MỞ RỘNG CÁC ĐIỀU KIỆN LẤY DỮ LIỆU SAU MỆNH ĐỀ WHERE

VÍ DỤ: XÁC ĐỊNH CÁC BẢN GHI CÓ SỐ DƯ TIỀN GỬI LÀ VND


THUỘC CHI NHÁNH 'MM0010005' vÀ 'MM0010004' và'MM0010003'
TẠI BẢNG DỮ LIỆU SAO KÊ TIỀN GỬI THANH TOÁN 20170922

CÂU LỆNH:
SELECT COUNT(*) FROM INTERFACE..SaoKeTGTT_20170922
WHERE CURRENCY = 'VND'
AND (CO_CODE = 'MM0010005' OR CO_CODE = 'MM0010004' OR CO_CODE = 'MM0010003')

LƯU Ý: LỆNH OR RẤT HAY BỊ VIẾT NHẦM NHƯ SAU, DẪN TỚI LÀM ĐƠ MÁY DO SELECT QUÁ NHIỀU BẢN GHI
Ví dụ: Chúng ta muốn tìm những bản ghi vừa có ngày giao dịch là 2017-09-22, vừa có currency là VND hoặc Sector = 1700

SELECT * FROM INTERFACE..SaokeTGTK_22_29


WHERE TRANSACTION_DATE = '2017-09-22' AND CURRENCY = 'VND' OR SECTOR = '1700'

--134408 rows

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 164


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
---Khi viết như trên thì kể cả những sector = 1700 mà có ngày transaction_date khác 2017-09-22 vẫn xuất hiện trong phần
kết quả

Cách viết đúng như sau:

SELECT * FROM INTERFACE..SaokeTGTK_22_29


WHERE TRANSACTION_DATE = '2017-09-22' AND (CURRENCY = 'VND' OR SECTOR = '1700')
---27683
---Khi viết như trên thì chỉ những sector = 1700 mà có ngày transaction_date = 2017-09-22 mới xuất hiện trong phần kết quả

--------SU DUNG IN TRONG CAU LENH SELECT


----TÁC DỤNG: IN DÙNG ĐỂ MỞ RỘNG CÁC ĐIỀU KIỆN LẤY DỮ LIỆU SAU MỆNH ĐỀ WHERE NHƯNG
----CÁCH VIẾT GỌN/TƯỜNG MINH HƠN LỆNH OR

VÍ DỤ: XÁC ĐỊNH CÁC BẢN GHI CÓ SỐ DƯ TIỀN GỬI LÀ VND


THUỘC CHI NHÁNH 'MM0010005' VÀ 'MM0010004' và'MM0010003'
TẠI BẢNG DỮ LIỆU SAO KÊ TIỀN GỬI THANH TOÁN 20170922

---CÂU LỆNH:

SELECT * FROM INTERFACE..SaoKeTGTT_20170922


WHERE CURRENCY = 'VND'
AND CO_CODE IN ('MM0010005','MM0010004','MM0010003')

--------SU DUNG LIKE TRONG CAU LENH SELECT


Mệnh đề LIKE trong SQL được sử dụng để so sánh một giá trị với các giá trị tương tự sử dụng toán
tử ký tự đại diện (wildcard). Có hai ký tự đại diện được sử dụng kết hợp với toán tử LIKE.

 Phần trăm (%)


 Dấu gạch dưới (_)

Dấu phần trăm thể hiện không, một hoặc nhiều ký tự. Dấu gạch dưới đại diện cho một số hoặc một
ký tự. Những ký hiệu này có thể được sử dụng trong sự kết hợp.
---TÁC DỤNG: LIKE CHO PHÉP CHÚNG TA LỌC CÁC BẢN GHI THỎA MÃN ĐIỀU KIỆN CÓ SỬ DỤNG KÝ TỰ TÌM KIẾM % và _
---ĐỂ ĐẠI DIỆN CHO MỘT NHÓM KÝ TỰ (%) HAY 1 KÝ TỰ (_).

VÍ DỤ: XÁC ĐỊNH CÁC TÀI KHOẢN KẾT THÚC BỞI SỐ 5 trong BẢNG DỮ LIỆU SAO KÊ TIỀN GỬI THANH TOÁN 20170922

CÂU LỆNH
SELECT * FROM INTERFACE..SaoKeTGTT_20170922
WHERE ACCTNO like '%5'

--------SU DUNG BETWEEN TRONG CAU LENH SELECT

----TÁC DỤNG: LỆNH BETWEEN CHO PHÉP CHÚNG TA GIỚI HẠN ĐIỀU KIỆN LỌC DỮ LIỆU TRONG CÂU LỆNH SELECT
----GIỮA CÁC KHOẢNG GIÁ TRỊ KHÁC NHAU.
----CHÚNG TA THƯỜNG DÙNG BETWEEN CHO CÁC SỐ VÀ CHO THỜI GIAN ( VÍ DỤ GIỮA CÁC NGÀY)

VI DỤ: XÁC ĐỊNH CÁC BẢN GHI CÓ GIÁ TRỊ QUY ĐỔI TỪ 10.000.000 ĐẾN 100.000.000
TRONG BẢNG INTERFACE..SaoKeTGTT_20170922

CÂU LỆNH:

SELECT * FROM INTERFACE..SaoKeTGTT_20170922


WHERE CONVERT(FLOAT,BALANCE_QD) BETWEEN 10000000 AND 100000000

--- TƯƠNG ĐƯƠNG VỚI CÂU LỆNH

SELECT * FROM INTERFACE..SaoKeTGTT_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 165


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
WHERE CONVERT(FLOAT,BALANCE_QD) >= 10000000
AND CONVERT(FLOAT,BALANCE_QD) <= 100000000

-------------HÀM CONVERT DỮ LIỆU

CONVERT(LOAI_DU_LIEU_SE_DUOC_CHUYEN_SANG, TRUONG_DU_LIEU_MUON_CHUYEN_DOI_DU_LIEU)

Ví dụ: Chuyển dữ liệu của cột BALANCE_QD từ TEXT sang FLOAT ta sẽ viết CONVERT(FLOAT, BALANCE_QD)
Ví dụ: Chuyển dữ liệu của cột TRANSACTION_DATE từ TEXT sang DATE ta sẽ viết CONVERT(DATE, TRANSACION_DATE)

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 166


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 18: Xử lý DATE trong SQL Server

Function Description
CURRENT_TIMESTAMP Returns the current date and time
DATEADD Returns a date after a certain time/date interval has been added
Returns the difference between two date values, based on the interval
DATEDIFF specified
DATENAME Returns a specified part of a given date, as a string value
DATEPART Returns a specified part of a given date, as an integer value
DAY Returns the day of the month (from 1 to 31) for a given date
GETDATE Returns the current date and time
GETUTCDATE Returns the current UTC date and time
MONTH Returns the month (from 1 to 12) for a given date
YEAR Returns the year (as a four-digit number) for a given date

---DE HIEN THI NGAY THANG NAM MOT CACH CHINH XAC, TRONG SQL SERVER DINH DANG NGAY LA
---KIEU DATE VOI FORMAT HIEN THI LA YYYY-MM-DD

VÍ dụ: Transaction_date = '2017-01-16'

---- CÒN KIỂU NGÀY GIỜ SẼ CÓ DẠNG: YYYY-MM-DD HH:MI:SS

Ví dụ: SELECT GETDATE()

--SQL Server comes with the following data types for storing a date or a date/time value in the database:
--• DATE - format YYYY-MM-DD
--• DATETIME - format: YYYY-MM-DD HH:MI:SS
--• SMALLDATETIME - format: YYYY-MM-DD HH:MI:SS

----2. HÀM DATEADD

Tác dụng: Cho phép lấy ra một ngày/tháng/năm


từ một ngày có sẵn

Cú pháp: DATEADD(day/month/year,
SO_NGAY_THANG_NAM_MUON_TANG_HOAC_GIAM,
NGAY_GIAO_DICH)

Ví dụ: Xác định 2 ngày tiếp theo của ngày '2017-08-25'


Xác định 2 ngày trước đó của ngày '2017-08-25'
SELECT DATEADD(day, 2, '2017-08-25')
SELECT DATEADD(day, -2, '2017-08-25')
SELECT DATEADD(day, 32, '2017-08-25')
Xác định 3 tháng tiếp theo kể từ ngày '2017-08-25'
Xác định 4 tháng trước đó kể từ ngày '2017-08-25'
SELECT DATEADD(month, 3, '2017-08-25')
SELECT DATEADD(month, -4, '2017-08-25')
Xác định 5 năm tiếp theo kể từ ngày '2017-08-25'
Xác định 9 năm trước đó kể từ ngày '2017-08-25'
SELECT DATEADD(year, 5, '2017-08-25')
SELECT DATEADD(year, -9, '2017-08-25')

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 167


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

----3. HÀM DATEDIFF

Tác dụng: Cho phép xác định khoảng cách giữa các ngày, tháng, năm
CÚ PHÁP: DATEDIFF(Day/Month/year,Ngay_thu_nhat,Ngay_thu_hai)
DATEDIFF(interval, date1, date2)

Ví dụ: Xác định số ngày giữa 2 ngày '2017-08-25'


--- và '2017-01-01'
SELECT DATEDIFF(day,'2017-01-01','2017-08-25')

Xác định số tháng giữa 2 ngày '2017-08-25'


--- và '2017-01-01'
SELECT DATEDIFF(month,'2017-01-01','2017-08-25')

Xác định số năm giữa 2 ngày '2017-08-25' và '2019-07-26'

SELECT DATEDIFF(year,'2017-01-01','2019-07-26')
----2 nam 7 thang 26 ngay

Xác định số giờ giữa 2 giờ '2017-08-25 07:00' và '2017-08-25 12:45'


SELECT DATEDIFF(month, '2017/08/25', '2011/08/25')
SELECT DATEDIFF(hour,'2017-08-25 07:00', '2017-08-25 12:45')
---Xac dinh 5h45m

----4. HÀM DATEPART


Tác dụng: Hiển thị một phần của ngày/tháng/năm/giờ/phút/giây
dựa trên một ngày giờ cho trước
Cú pháp:
DATEPART(ngày/tháng/năm/giờ/phút/giây, NGAY_CAN_XAC_DINH)
---Ví dụ
Xác định năm của ngày '2017-08-25'
SELECT DATEPART(year, '2017-08-25')
Xác định tháng của ngày '2017-08-25'
SELECT DATEPART(month, '2017-08-25')
Xác định ngày của ngày '2017-08-25'
SELECT DATEPART(day, '2017-08-25')
Xác định giờ của ngày '2017-08-25 08:35'
SELECT DATEPART(hour, '2017-08-25 08:35')
Xác định phút của ngày '2017-08-25 08:35'
SELECT DATEPART(minute, '2017-08-25 08:35')
Xác định giây của ngày '2017-08-25 08:35:11'
SELECT DATEPART(SECOND, '2017-08-25 08:35:11')
----5. HÀM EOMONTH
Tác dụng: Lấy ngày cuối tháng của một ngày bất kỳ
Cú pháp: EMONTH(NGAY_GIAO_DICH)
Ví dụ: Xác định ngày cuối tháng của ngày '2018-01-16'

SELECT EOMONTH('2018-01-16')
Lưu ý: Chúng ta có thể sử dụng kết hợp các hàm với nhau
để ra được một kết quả như chúng ta mong muốn.
Ví dụ: Để xác định một ngày đầu năm từ một ngày hiện tại
chúng ta sẽ làm như sau:

Declare @NgayGiaoDich date


Set @NgayGiaoDich = '2018-01-16'
SELECT
CONVERT(DATE,
LEFT(CONVERT(varchar(25),@NgayGiaoDich,112),4)+'0101')

SELECT DATEADD(day,-1,EOMONTH('2018-02-08'))

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 168


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
SELECT DATEDIFF(year,'2017-07-01','2019-01-26')
----2 nam 6 thang 26 ngay
SELECT DATEPART(year,'2017-07-01')
- DATEPART(year,'2019-01-26')
SELECT DATEPART(month,'2019-01-26')
- DATEPART(month,'2017-07-01')
SELECT DATEPART(day,'2019-01-26')
- DATEPART(day,'2017-07-01')

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 169


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 19: Một số hàm tính toán cơ bản trong


SQL Server
Function Description
ABS Returns the absolute value of a number
AVG Returns the average value of an expression
Returns the smallest integer value that is greater than or equal to a number
CEILING
COUNT Returns the count of an expression
Returns the largest integer value that is equal to or less than a number
FLOOR
MAX Returns the maximum value of an expression
MIN Returns the minimum value of an expression
RAND Returns a random number or a random number within a range
ROUND Returns a number rounded to a certain number of decimal places
SIGN Returns a value indicating the sign of a number
SUM Returns the summed value of an expression

--- 1. CÁC HÀM TÍNH TOÁN CƠ BẢN


----1. 1 HÀM SUM
--Tác dụng: Dùng để tính tổng giá trị của các bản ghi
--trong câu lệnh SELECT theo từng cột
Cú pháp: SUM(TEN_COT_CAN_TINH_TONG)
--Ví dụ: Tính tổng số dư tiền gửi thanh toán
--của các khách hàng cá nhân trong ngày 22/09/2017
SELECT 'RETAIL' as KHOI_KINH_DOANH,
SUM(CONVERT(FLOAT, BALANCE_QD))/1e9 as SO_DU
FROM INTERFACE..SaokeTGTT_20170922
WHERE SECTOR BETWEEN '1602' AND '1899'

SELECT 'SO_DU_TIEN_GUI_THANH_TOAN_TOAN_HANG'

SELECT SUM(CONVERT(FLOAT, BALANCE_QD))/1e9


FROM INTERFACE..SaokeTGTT_20170922
----1. 2 HÀM AVG
--Tác dụng: Dùng để tính trung bình giá trị của các bản ghi
--trong câu lệnh SELECT theo từng cột
Cú pháp: AVG(TEN_COT_CAN_TINH_TONG)
--Ví dụ: Tính trung bình số dư tiền gửi thanh toán
--của tất cả các bản ghi trong ngày 22/09/2017
SELECT 'SO_DU_TRUNG_BINH_CAC_BAN_GHI',
AVG(CONVERT(FLOAT, BALANCE_QD))/1e9
as SO_DU_TRUNG_BINH
FROM INTERFACE..SaokeTGTT_20170922

Chú ý: Thông thường chúng ta thường kết hợp hàm SUM


và COUNT để tính giá trị trung bình theo đúng ý nghĩa
nghiệp vụ hơn.
Ví dụ: Tính số dư trung bình tiền gửi tiết kiệm
của các khách hàng trong bảng INTERFACE..SaokeTGTK_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 170


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

SELECT SUM(CONVERT(FLOAT,BALANCE_QD))/COUNT(DISTINCT(CUS_ID))
AS SO_DU_TIEN_GUI_TK_THEO_KHACH_HANG
FROM INTERFACE..SaokeTGTK_20170922
----MAX
----1. 3 HÀM MAX
--Tác dụng: Dùng để tính số lớn nhất trong các giá trị
--của bản ghi trong câu lệnh SELECT theo từng cột
Cú pháp: MAX(TEN_COT_CAN_TIM_GIA_TRI_LON_NHAT)
--Ví dụ: Tính số dư tiền gửi thanh toán lớn nhất
--của các bản ghi trong ngày 22/09/2017
SELECT 'SO_DU_TIEN_GUI_THANH_TOAN_MAX'
AS LOAI_CHI_TIEU,
MAX(CONVERT(FLOAT, BALANCE_QD))/1e9
as SO_DU_LON_NHAT
FROM INTERFACE..SaokeTGTT_20170922
----MIN
----1. 4 HÀM MIN
--Tác dụng: Dùng để tính số nhỏ nhất trong các giá trị của bản ghi
--trong câu lệnh SELECT theo từng cột
Cú pháp: MIN(TEN_COT_CAN_TIM_GIA_TRI_NHO_NHAT)
--Ví dụ: Tính số dư tiền gửi thanh toán nhỏ nhất
--của các bản ghi trong ngày 22/09/2017
SELECT 'SO_DU_TIEN_GUI_THANH_TOAN_MIN',
MIN(CONVERT(FLOAT, BALANCE_QD))
as SO_DU_NHO_NHAT
FROM INTERFACE..SaokeTGTT_20170922
----COUNT
----1.5 HÀM COUNT
---Tác dụng: Đếm số lượng bản ghi thỏa mãn
---một điều kiện nào đó
---trong bảng dữ liệu theo một cột hoặc
---một số cột sau câu lệnh SELECT
Cú pháp: COUNT(TEN_COT_CAN_DEM)
---Lưu ý: Chúng ta thường sử dụng COUNT
---kết hợp với DISTINCT
---để tìm ra duy nhất các đối tượng cần đếm.
---Ví dụ:
---Đếm số lượng khách hàng có trong bảng
---SaoKeTGTK_20170922
SELECT COUNT(DISTINCT(CUS_ID)) AS SO_LUONG_KHACH_HANG
FROM INTERFACE..SAOKETGTK_20170922

SELECT CO_CODE, COUNT(DISTINCT(CUS_ID))


AS SO_LUONG_KHACH_HANG
FROM INTERFACE..SAOKETGTK_20170922
GROUP BY CO_CODE

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 171


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 20: Một số hàm xử lý chuỗi trong SQL


Server
Function Description
ASCII Returns the number code that represents the specific character
CHAR Returns the ASCII character based on the number code
CHARINDEX Returns the location of a substring in a string
CONCAT Concatenates two or more strings together
Concat with + Concatenates two or more strings together
DATALENGTH Returns the length of an expression (in bytes)
LEFT Extracts a substring from a string (starting from left)
LEN Returns the length of the specified string
LOWER Converts a string to lower-case
LTRIM Removes leading spaces from a string
NCHAR Returns the Unicode character based on the number code
PATINDEX Returns the location of a pattern in a string
REPLACE Replaces a sequence of characters in a string with another set of
characters
RIGHT Extracts a substring from a string (starting from right)
RTRIM Removes trailing spaces from a string
SPACE Returns a string with a specified number of spaces
STR Returns a string representation of a number
STUFF Deletes a sequence of characters from a string and then inserts another
sequence of characters into the string, starting at a specified position

SUBSTRING Extracts a substring from a string


UPPER Converts a string to upper-case

----CONCAT
CONCAT(CHUOI_1, CHUOI_2, ...., CHUOI_N)
--Tác dụng: Nối chuỗi giống hàm CONCATENATE TRONG EXCEL
SELECT CONCAT('SQL', ' that la', ' thu vi!');
----LEFT
LEFT(CHUOI_KY_TU, SO_KY_TU_CAN_CAT_TU_BEN_TRAI)
--Tác dụng: Cắt trái giống hàm LEFT TRONG EXCEL
---Ví dụ 1:
SELECT LEFT('NGUYEN VAN A',6) as Ho
---Ví dụ 2:
--Xác định 2 ký tự đầu tiên và duy nhất
--của trường CO_CODE trong
--bảng Interface..SaoKeTGTK_20170922
SELECT DISTINCT LEFT(CO_CODE,2)
FROM INTERFACE..SaoKeTGTK_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 172


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

----RIGHT
RIGHT(CHUOI_KY_TU, SO_KY_TU_CAN_CAT_TU_BEN_PHAI)
----Tác dụng: Cắt phải giống hàm RIGHT TRONG EXCEL
SELECT RIGHT('Tran Thi Hong Linh',4) as Ten
----LEN
LEN(CHUOI_KY_TU)
---Tác dụng: Đếm số lượng ký tự có trong 1 chuỗi văn bản
---Giống hàm LEN trong Excel
Ví dụ
SELECT LEN('Tran Thi Hong Linh')
----SUBSTRING
SUBSTRING(CHUOI_KY_TU, Vi_tri_ky_tu_bat_dau_cat,
So_luong_ky_tu_can_cat)
---Tác dụng: Giống hàm MID trong Excel
---Cắt một số ký tự từ một ký tự nào đó là ký tự bắt đầu
---VÍ dụ: Xác định hai ký tự đầu tiên
và duy nhất của CO_CODE trong bảng
SaoKeTGTT_20170922 sử dụng hàm SUBSTRING
SELECT DISTINCT SUBSTRING(CO_CODE,3,5)
AS HAI_KY_TU_DAU_TIEN
FROM INTERFACE.Dbo.SaoKeTGTT_20170922

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 173


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 21: Một số hàm quan trọng khác trong


SQL Server
SQL Server Conversion Functions

Function Description

CAST Converts an expression from one data type to another

CONVERT Converts an expression from one data type to another

SQL Server CONVERT() Function


Definition and Usage

The CONVERT() function converts an expression from one data type to another data type.

Note: When converting from a float or numeric to an integer, the CONVERT() function will
truncate the result. For other conversions, the CONVERT() function will round the result.

Tip: See also the CAST() function.

Syntax
CONVERT(data_type(length), expression, style)
Parameter Values

Value Description

data_type Required. The datatype to convert expression to. Can be one of the
following: bigint, int, smallint, tinyint, bit, decimal, numeric, money,
smallmoney, float, real, datetime, smalldatetime, char, varchar, text, nchar,
nvarchar, ntext, binary, varbinary, or image

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 174


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

(length) Optional. The length of the resulting data type (for char, varchar, nchar,
nvarchar, binary and varbinary)

expressio Required. The value to convert to another data type


n

style Optional. The format used to convert between data types, such as a date or
string format. Can be one of the following values:

Converting datetime to character:

Without With Input/Output Standard


century century

0 100 mon dd yyyy hh:miAM/PM Default

1 101 mm/dd/yyyy US

2 102 yyyy.mm.dd ANSI

3 103 dd/mm/yyyy British/French

4 104 dd.mm.yyyy German

5 105 dd-mm-yyyy Italian

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 175


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

6 106 dd mon yyyy -

7 107 Mon dd, yyyy -

8 108 hh:mm:ss -

9 109 mon dd yyyy Default + millisec


hh:mi:ss:mmmAM (or PM)

10 110 mm-dd-yyyy USA

11 111 yyyy/mm/dd Japan

12 112 yyyymmdd ISO

13 113 dd mon yyyy hh:mi:ss:mmm Europe (24 hour


clock)>

14 114 hh:mi:ss:mmm 24 hour clock

20 120 yyyy-mm-dd hh:mi:ss ODBC canonical (24


hour clock)

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 176


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

21 121 yyyy-mm-dd hh:mi:ss.mmm ODBC canonical (24


hour clock)

126 yyyy-mm-ddThh:mi:ss.mmm ISO8601

127 yyyy-mm-ddThh:mi:ss.mmmZ ISO8601 (with time


zone Z)

130 dd mon yyyy Hijiri


hh:mi:ss:mmmAM

131 dd/mm/yy hh:mi:ss:mmmAM Hijiri

Converting float to real:

Value Explanation

0 Maximum 6 digits (default)

1 8 digits

2 16 digits

Converting money to character:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 177


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Value Explanation

0 No comma delimiters, 2 digits to the right of decimal

1 Comma delimiters, 2 digits to the right of decimal

2 No comma delimiters, 4 digits to the right of decimal

More Examples
Example

Convert an expression from one data type to another (varchar):

SELECT CONVERT(varchar, 25.65);


Try it Yourself »
Example

Convert an expression from one data type to another (datetime):

SELECT CONVERT(datetime, '2017-08-25');


Try it Yourself »
Example

Convert an expression from one data type to another (varchar):

SELECT CONVERT(varchar, '2017-08-25', 101);


Try it Yourself »

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 178


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

SQL Server Advanced Functions

Function Description

COALESCE Returns the first non-null expression in a list

CURRENT_USER Returns the name of the current user in the SQL Server
database

ISDATE Returns 1 if the expression is a valid date, otherwise 0

ISNULL Lets you return an alternative value when an expression is


NULL

ISNUMERIC Returns 1 if the expression is a valid number, otherwise 0

NULLIF Compares two expressions

SESSION_USER Returns the user name of the current session in the SQL
Server database

SESSIONPROPERTY Returns the setting for a specified option of a session

SYSTEM_USER Returns the login name information for the current user in
the SQL Server database

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 179


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

USER_NAME Returns the user name in the SQL Server database

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 180


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 22:
Hướng dẫn sử dụng Excel để viết câu lệnh SQL, tăng tốc độ
viết câu lệnh
Chúng ta sẽ soạn câu lệnh trong Excel, sau đó dùng tính năng AutoFill cũng như hàm IF để có được kết câu lệnh mong muốn một cách
nhanh chóng, sau đó sẽ copy câu lệnh từ Excel vào SQL để thực thi

Độ dài của
Kiểu dữ trường - Viết câu lệnh trong Excel để
Tên Table - Table liệu - Data Data sử dụng Autofill tiết kiệm thời
Nname Type Length gian gõ lệnh FINAL COPY TO SQL
CREATE TABLE DimBranches CREATE TABLE
( DATA_MART.dbo.DimBranches (
DimBranches int STT int(), STT int, STT,
DimBranches varchar 25 BRANCH_CODE varchar(25), BRANCH_CODE varchar(25), BRANCH_CODE,
DimBranches varchar 25 BRANCH_NAME varchar(25), BRANCH_NAME varchar(25), BRANCH_NAME,
SUB_BRANCH_CODE
DimBranches varchar 25 varchar(25), SUB_BRANCH_CODE varchar(25), SUB_BRANCH_CODE,
SUB_BRANCH_NAME
DimBranches varchar 25 varchar(25), SUB_BRANCH_NAME varchar(25), SUB_BRANCH_NAME,
DimBranches varchar 25 AREA varchar(25), AREA varchar(25), AREA,
DimBranches varchar 25 REGION varchar(25) REGION varchar(25) REGION,
) )
CREATE TABLE
DATA_MART.dbo.DimCustomer (
SUB_BRANCH_CODE
DimCustomer varchar 25 varchar(25), SUB_BRANCH_CODE varchar(25), SUB_BRANCH_CODE,
DimCustomer varchar 25 CIF varchar(25), CIF varchar(25), CIF,
CUSTOMER_NAME
DimCustomer varchar 100 varchar(100), CUSTOMER_NAME varchar(100), CUSTOMER_NAME,
DimCustomer varchar 5 SECTOR varchar(5), SECTOR varchar(5), SECTOR,
DimCustomer date CUS_OPEN_DATE date(), CUS_OPEN_DATE date, CUS_OPEN_DATE,
DimCustomer varchar 10 SEGMENT varchar(10) SEGMENT varchar(10) SEGMENT,
) ) ,

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 181


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 182


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ứng dụng tạo các bảng dữ liệu trong 2 Database Data_Mart và Report
System, để có được kết quả như sau:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 183


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 23: Cách di chuyển Database sang máy


khác
Trong các bài học trước chúng ta đã học và thực hành để tạo ra được các Database, sẵn sàng chạy các thủ tục xử lý dữ
liệu hàng ngày. Tuy nhiên, do thời gian giành cho việc làm bài về nhà của các anh chị là không giống nhau, có người đã làm
xong rồi, có người chưa làm xong. Do đó, để đảm bảo mọi người cùng thao tác trên một file, và học tập hiệu quả hơn,
MasterMOS sẽ hướng dẫn anh chị kỹ thuật detach/atach database để sử dụng các Database do MasterMOS cung cấp với đầy đủ
các bảng dữ liệu và các thủ tục xử lý dữ liệu.
1. Detach Database
Cách này sử dụng để tạm ngắt kết nối của SQL Server đến Database, phục vụ cho việc copy databse. Nếu không ngắt database
(detach), Windows sẽ không cho phép copy database và sẽ báo lỗi như sau:

Để Detach Database, ta thực hiện theo các bước sau:


Chuột phải vào Database cần Detach, chọn Tasks, rồi chọn Detach

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 184


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo hiện ra, chú ý phần Message không có gì thì có thể ấn OK để thực hiện Detach bình thường.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 185


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Nếu màn hình Message thông báo có 1 hoặc nhiều connection như hình dưới đây

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 186


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 187


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Thì khi ấn OK, máy sẽ báo lỗi: Database đang được sử dụng nên không detach được.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 188


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Cách đơn giản để xử lý vấn đề này là bạn hãy thoát khỏi ứng dụng SQL Server, sau đó bật lại SQL Server. Trong trường
hợp làm như vậy mà chưa được, bạn hãy Restart lại Windows, sau đó mở lại SQL Server và chọn Detach Database. Trong
trường hợp làm như vậy vẫn chưa được nữa, bạn hãy vào SQL Server 2014 Configuration Manager, để Restart lại service của
SQL Server thì chắc chắn sẽ Detach được. Phần SQL Server 2014 Configuration Manager sẽ được hướng dẫn trọng mục SQL
Server nâng cao trong bài học cuối cùng.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 189


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau khi Detach thành công, Database sẽ biến mất khỏi màn hình giao diện SQL Server Management Studio

Lưu ý: Database mới bị ngắt kết nối khỏi SQL Server Management Studio, chứ không bị xóa khỏi máy tính, mọi dữ liệu
của chúng ta vẫn còn nguyên. Bây giờ chúng ta có thể copy Database sang một thư mục/USB/máy tính khác bình thường để sử
dụng.
2. Attach Database
Để attach được database không bị báo lỗi Cấp quyền truy cập, chúng ta cần phải làm 2 việc sau đây:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 190


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
(3) Đăng nhập vào SQL server với kiểu xác thực Windows Authentication, để SQL Server có quyền truy cập vào file
của chúng ta trong ổ cứng (nếu truy cập bằng SQL Server Authentication sẽ báo lỗi cần quyền truy cập, hoặc
Database khi Attach thành công chỉ có chế độ Read Only) (1)
(4) Cấp quyền cho file, cho phép User cũng có quyền Full Control với file Database chúng ta muốn Attach.(2)
(1) Để đăng nhập vào SQL Server với kiểu xác thực Windows Authentication, chúng ta làm như sau:
Vào Phần Object Explorer, chọn Connect và chọn Database Engine

Màn hình tiếp theo hiện ra chọn kiểu Authentication là Windows Authentication, sau đó ấn Connect

Sau khi đăng nhập thành công, SQL Server sẽ hiển thị tên người dùng Admin, chứ không hiển thị user là sa hoặc 1 user do
chúng ta tạo ra để truy cập vào SQL Server

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 191


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Đây là cách hiển thị khi ta truy cập bằng SQL User: sa

(2) Để cấp quyền truy cập cho user Windows vào file Database, ta làm như sau:
Chuột phải vào file (lưu ý ta phải làm cho cả 2 file Database và file log), chọn Properties

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 192


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo hiện ra chọn Tab Security

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 193


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Trong phần này ấn vào chữ Edit, màn hình Permissions cho Database xuất hiện, ta lựa chọn user muốn cấp quyền truy cập (ví
dụ ở đây là MasterMOS), các máy khác có thể có “user”, sau đó chọn Full Control phần Allow.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 194


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Cấp quyền truy cập Full control vào file cho cả 2 file Database và file log.

Sau khi làm xong 2 phần trên, thực hiện Attach Database theo các bước sau:
Chuột phải vào Database chọn Attach

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 195


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình Attach Databases hiện ra, chọn Add

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 196


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình Locate Database Files hiện ra, tìm đến thư mục có chứa Database cần Attach, chọn file database có đuôi là mdf, ví dụ
DATA_MART.mdf Sau đó ấn OK

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 197


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình tiếp theo hiện ra ấn OK

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 198


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Máy thực thi công việc Executing, sau đó thành công, trên phần Database của chúng ta sẽ có thêm Database chúng ta vừa mới
Attach.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 199


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 200


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 24: Cách tạo thủ tục Stored Procedure


trong SQL Server
Stored Procedure là một loại đối tượng trong SQL Server cho phép chúng ta nhóm tất cả các câu
lệnh lại vào trong nó, đồng thời đặt được biến để có thể truyền các giá trị linh động vào cho câu lệnh, để
sử dụng đi sử dụng lại nhiều lần.
Biến sử dụng trong Stored Procedure với chúng ta làm công việc xử lý dữ liệu lên báo cáo thông thường là
biến ngày (thay ngày dữ liệu)

Để tạo Stored Procedure, chúng ta làm theo các bước sau đây:
Mở rộng phần Database (ấn vào dấu +) ví dụ Database REPORT_SYSTEM, sau đó tìm đến mục
Programmability, chuột phải vào Stored Procedure, chọn New, sau đó chọn Stored Procedure

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 201


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình sau đây hiện ra một template mẫu, cho phép chúng ta chỉnh sửa để tạo ra Stored Procedure

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 202


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Các phần chữ màu xanh, bắt đầu bởi dấu ---- là phần ghi chú, không làm ảnh hưởng đến cú pháp tạo ra
Stored Procedure.
SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author: <Author,,Name>

-- Create date: <Create Date,,>

-- Description: <Description,,>

-- =============================================

CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName>

-- Add the parameters for the stored procedure here

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 203


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,

<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>

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 <@Param1, sysname, @p1>, <@Param2, sysname, @p2>

END

GO

Chúng ta có thể nhập tên tác giả là chúng ta, ngày tạo, và mô tả về chức năng của thủ tục Stored
Procedure này là gì để người khác có thể dễ dàng nắm bắt được việc chúng ta đang thực hiện ở đây.
Những từ khóa Create PROCEDURE chúng ta để nguyên, chúng ta thay đổi phần Procedure_Name và đưa
thêm các biến @Param1, @Param2, … vào trong thủ tục
Lưu ý chúng ta sử dụng bao nhiêu biến trong thủ tục thì khai báo bấy nhiêu biến, khi khai báo biến sẽ khai
báo kiểu dữ liệu của biến đó.
Trong phần BEGIN và END; sau từ khóa SET NOCOUNT ON là các câu lệnh của chúng ta. Chúng ta viết bao
nhiêu câu lệnh cũng được.
Ví dụ một thủ tục đơn giản để hiển thị giá trị của biến chúng ta sử dụng sẽ như sau:
SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author: <Chien, Nguyen>

-- Create date: <01/12/2017,,>

-- Description: <Test tao thu tuc Procedure>

-- =============================================

CREATE PROCEDURE TEST_TAO_PROC @NGAYDULIEU varchar(10)

AS

BEGIN

SET NOCOUNT ON;

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 204


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

-- Hien thi ngay du lieu truyen vao bien

@NGAYDULIEU

END

GO

Sau khi chúng ta soạn thảo xong nội dung của Stored Procedure, chúng ta ấn F5 để thực hiện tạo thủ tục,
màn hình báo “Command(s) completed successfully.” Là chúng ta đã thực hiện tạo thủ tục thành công

Chuột phải vào mục Stored Procedures, chọn Refresh.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 205


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Kết quả thủ tục sẽ hiện ra.

Để chạy thủ tục, chúng ta có cú pháp như sau:


EXEC REPORT_SYSTEM.dbo.TEST_TAO_PROC '2017-12-01'

Từ khóa Exec, sau đó đến tên Database, rồi .dbo, rồi đến tên thủ tục, rồi đến giá trị của biến nằm giữa 2
dấu ngoặc đơn.
Sau khi chạy thủ tục đơn giản trên, màn hình sẽ hiển thị ngày 01/12/2017

Để sửa đổi thủ tục, thêm mới các đoạn code, sửa đổi các đoạn code, chúng ta làm như sau:
Chuột phải vào thủ tục muốn chỉnh sửa, chọn Modify

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 206


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình soạn thảo code xuất hiện, với một số thành phần chính như sau:
USE [REPORT_SYSTEM] : Thể hiện cơ sở dữ liệu đang chứa thủ tục
ALTER PROCEDURE: Cú pháp thể hiện việc sửa thủ tục.
Trong phần BEGIN và END chúng ta có thể thêm các câu lệnh như mong muốn

Ví dụ đoạn thủ tục sau:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 207


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
USE [REPORT_SYSTEM]

GO

/****** Object: StoredProcedure [dbo].[TEST_TAO_PROC] Script Date: 12/8/2017 11:34:39 PM ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author: <Chien, Nguyen>

-- Create date: <01/12/2017,,>

-- Description: <Test tao thu tuc Procedure>

-- =============================================

ALTER PROCEDURE [dbo].[TEST_TAO_PROC] @NGAYDULIEU varchar(10)

AS

BEGIN

SET NOCOUNT ON;

-- Hien thi ngay du lieu truyen vao bien

@NGAYDULIEU

Select top 10 * from DATA_MART.dbo.FactLending

where TRANSACTION_DATE = @NGAYDULIEU

END

Đoạn code bôi vàng ở trên được thêm vào thủ tục đang có Stored Procedure, sau khi việc thêm code hoàn
tất, chúng ta ấn F5 để lưu lại đoạn code. Nếu các đoạn code chúng ta thêm đều chính xác, máy sẽ báo
“Command(s) completed successfully.”
Ảnh minh họa như sau:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 208


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Chạy thủ tục để kiểm tra lại kết quả, kết quả như hình minh họa phía dưới.
EXEC REPORT_SYSTEM.dbo.TEST_TAO_PROC '2017-09-22'

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 209


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 25: Phân tích hai thủ tục Stored


Procedure DAILY_DATA_PROCESS và
KQKD_DAILY_TABLE_PROCESS trong
Database REPORT_SYSTEM

(1) Thủ tục DAILY_DATA_PROCESS


Mục đích việc tạo ra thủ tục này là để tiền xử lý dữ liệu trước khi chạy thủ tục tổng hợp dữ liệu lên template báo cáo cuối
cùng.
Thủ tục DAILY_DATA_PROCESS thực hiện một số công việc sau:
Cập nhật khối theo trường sector
ALTER PROCEDURE [dbo].[DAILY_DATA_PROCESS]
@DATE VARCHAR(10)

AS
BEGIN

UPDATE DATA_MART..FactTermDeposits
SET SEGMENT =
(CASE WHEN CONVERT(FLOAT, SECTOR) BETWEEN 1602 AND 1899 THEN 'INDIV'
WHEN CONVERT(FLOAT, SECTOR) BETWEEN 3000 AND 3999 THEN 'CIB'
WHEN CONVERT(FLOAT, SECTOR) BETWEEN 1095 AND 1100 THEN 'DVC'
WHEN CONVERT(FLOAT, SECTOR) BETWEEN 5000 AND 8999 THEN 'FI'
WHEN SECTOR = ''THEN 'KXD'
ELSE 'SME'
END)
WHERE TRANSACTION_DATE = @DATE

Xử lý những trường hợp kỳ hạn trong dữ liệu đầu vào bị nhập sai: chuyển 1 M, 1 T, 90D về đơn vị số tháng. Để trong câu
lệnh tổng hợp dữ liệu sẽ cho ra kết quả chính xác nhất.

------- UPDATE LOC_TERM TGTK


UPDATE DATA_MART.dbo.FactTermDeposits
SET TERM = '1M'
WHERE TERM = '1/0/1900'

UPDATE DATA_MART.dbo.FactTermDeposits
SET TERM = REPLACE(TERM,'M','')
WHERE TERM LIKE '%M'

UPDATE DATA_MART.dbo.FactTermDeposits
SET TERM = REPLACE(TERM,'T','')
WHERE TERM LIKE '%T'

UPDATE DATA_MART.dbo.FactTermDeposits
SET TERM = CONVERT(FLOAT,REPLACE(TERM,'D',''))/30

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 210


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
WHERE TERM LIKE '%D'

(2) Thủ tục KQKD_DAILY_TABLE_PROCESS


Tổng hợp dữ liệu theo nhiều chiều khác nhau để lên template báo cáo cuối cùng.
Tại sao lại tạo ra thủ tục này ???
Chúng ta hãy đi theo chiều ngược để xử lý bài toán.
Đầu tiên chúng ta có yêu cầu báo cáo -> Từ yêu cầu đầu ra của báo cáo  Ta sẽ xác định được các chỉ tiêu và chiều phân
tích cần phải tổng hợp dữ liệu  Tạo template tổng hợp dữ liệu  Viết các thủ tục/câu lệnh để tổng hợp dữ liệu  Chuẩn
bị đầy đủ các dữ liệu thô từ nguồn  Tạo luồng ETL hoặc VBA để đẩy dữ liệu hàng ngày/hàng tháng/định kỳ.
Nguyên tắc viết các câu lệnh tổng hợp dữ liệu một cách đơn giản, dễ hiểu, từng bước một như sau:

(5) Phần cú pháp ban đầu của thủ tục, như template, khai báo 1 biến ngày để có thể chạy các ngày dữ liệu khác nhau.
USE [REPORT_SYSTEM]
GO
/****** Object: StoredProcedure [dbo].[KQKD_DAILY_TABLE_PROCESS] Script Date: 12/9/2017 8:55:19
AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[KQKD_DAILY_TABLE_PROCESS]
@DATE VARCHAR(10)
AS
BEGIN

(6) Trong thủ tục chúng ta thường cho 1 câu lệnh DELETE đầu tiên để xóa dữ liệu có ngày bằng ngày hiện thời chúng
ta muốn chạy dữ liệu – để tránh bị lỗi trùng lặp dữ liệu – chúng ta có thể chạy thủ tục nhiều lần mà không làm đúp,
sai lệch số liệu.
----XOA DU LIEU HIEN TAI DE CHAY LAI DU LIEU TU DAU NEU PHAI CHAY DI CHAY LAI NHIEU LAN
DELETE FROM REPORT_SYSTEM.[dbo].[KQKD_DAILY_TABLE]
WHERE CONVERT(DATE,[TRANSACTION_DATE]) = CONVERT(DATE,@DATE)
(7) Ví dụ ta thi hành thủ tục EXEC REPORT_SYSTEM.dbo.KQKD_DAILY_TABLE_PROCESS '2017-09-22', SQL Server sẽ thực
hiện tuần tự các bước từ trên xuống dưới theo thứ tự chúng ta viết dòng lệnh, câu lệnh sau là câu lệnh sẽ được ưu
tiên nếu có cả 2 lệnh tác động vào cùng 1 loại số liệu.
(8) Đầu tiên bảng của chúng ta NULL, chưa có gì

(9) Sau đó chúng ta bắt đầu đưa các Chi nhánh vào bảng đầu tiên

---- CAP NHAT CHI NHANH VAO BANG DU LIEU HANG NGAY

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 211


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
INSERT INTO REPORT_SYSTEM.[dbo].[KQKD_DAILY_TABLE] (CO_CODE, NAME_2, NAME_1, KHUVUC,MIEN, KHOI)
SELECT SUB_BRANCH_CODE, SUB_BRANCH_NAME, BRANCH_NAME, AREA, REGION, 'CIB' FROM DATA_MART..DimBranches
INSERT INTO REPORT_SYSTEM.[dbo].[KQKD_DAILY_TABLE] (CO_CODE, NAME_2, NAME_1, MIEN, KHUVUC, KHOI)
SELECT SUB_BRANCH_CODE, SUB_BRANCH_NAME, BRANCH_NAME, AREA, REGION, 'SME' FROM DATA_MART..DimBranches
INSERT INTO REPORT_SYSTEM.[dbo].[KQKD_DAILY_TABLE] (CO_CODE, NAME_2, NAME_1, MIEN, KHUVUC, KHOI)
SELECT SUB_BRANCH_CODE, SUB_BRANCH_NAME, BRANCH_NAME, AREA, REGION, 'INDIV' FROM DATA_MART..DimBranches
INSERT INTO REPORT_SYSTEM.[dbo].[KQKD_DAILY_TABLE] (CO_CODE, NAME_2, NAME_1, MIEN, KHUVUC, KHOI)
SELECT SUB_BRANCH_CODE, SUB_BRANCH_NAME, BRANCH_NAME, AREA, REGION, 'FI' FROM DATA_MART..DimBranches
INSERT INTO REPORT_SYSTEM.[dbo].[KQKD_DAILY_TABLE] (CO_CODE, NAME_2, NAME_1, MIEN, KHUVUC, KHOI)
SELECT SUB_BRANCH_CODE, SUB_BRANCH_NAME, BRANCH_NAME, AREA, REGION, 'TOAN_HANG' FROM
DATA_MART..DimBranches

(10) Kết quả chạy câu lệnh là bảng dữ liệu đã được thêm tên các phong giao dịch khu vực, theo từng khối vào
Template tổng hợp dữ liệu cuối cùng

(11)Sau đó chúng ta update dữ liệu vào trường TRANSACTION_DATE cho ngày dữ liệu bị NULL.

UPDATE REPORT_SYSTEM.[dbo].[KQKD_DAILY_TABLE]
SET [TRANSACTION_DATE] = CONVERT(DATE,@DATE) WHERE [TRANSACTION_DATE] IS NULL

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 212


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

(12) Chúng ta lần lượt tính toán các chỉ tiêu:


a. Tạo ra 1 bảng tạm để lưu trữ dữ liệu tính toán thô
b. Tính toán dữ liệu thô rồi lưu kết quả vào bảng tạm
c. Cập nhật dữ liệu đã tính toán vào bảng đích
d. Xóa dữ liệu trong bảng tạm
e. Tính toán dữ liệu cho chỉ tiêu mới, cập nhật vào bảng tạm, rồi lại update dữ liệu tổng hợp từ
bảng tạm vào bảng đích  Cứ làm tuần tự như vậy cho đến khi tính xong hết các chỉ tiêu.
***---***
(13) Tạo ra 1 bảng tạm để lưu trữ dữ liệu tính toán thô

---1. TINH TOAN CHI TIEU HUY DONG VON


------1.1 HUY DONG VON CO KY HAN
IF EXISTS (SELECT * FROM REPORT_SYSTEM.DBO.SYSOBJECTS WHERE NAME ='TEMPLATE_TABLE')
DROP TABLE REPORT_SYSTEM.DBO.TEMPLATE_TABLE
CREATE TABLE REPORT_SYSTEM.DBO.TEMPLATE_TABLE
(
CO_CODE_TP VARCHAR(20),
KHOI_TP VARCHAR(20),
SODU_TP FLOAT NULL
)
DELETE FROM REPORT_SYSTEM..TEMPLATE_TABLE

(14) Tính toán dữ liệu thô rồi lưu kết quả vào bảng tạm

INSERT INTO REPORT_SYSTEM..TEMPLATE_TABLE


select SUB_BRANCH_CODE, SEGMENT, SUM(BALANCE_QD) from DATA_MART..FactTermDeposits
where TRANSACTION_DATE = CONVERT(DATE,@DATE)
AND SBV_CODE like '42%'
GROUP BY SUB_BRANCH_CODE, SEGMENT

INSERT INTO REPORT_SYSTEM..TEMPLATE_TABLE


select SUB_BRANCH_CODE, 'TOAN_HANG', SUM(BALANCE_QD) from DATA_MART..FactTermDeposits
where TRANSACTION_DATE = CONVERT(DATE,@DATE)

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 213


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
AND SBV_CODE like '42%'
GROUP By SUB_BRANCH_CODE

(15) Cập nhật dữ liệu đã tính toán vào bảng đích

UPDATE REPORT_SYSTEM.[dbo].[KQKD_DAILY_TABLE]
SET HDV_CKH = SODU_TP/1e9 from REPORT_SYSTEM..TEMPLATE_TABLE
WHERE TRANSACTION_DATE = CONVERT(DATE,@DATE)
AND KHOI = KHOI_TP AND CO_CODE = CO_CODE_TP

(16) Xóa dữ liệu trong bảng tạm


(17)--------------1.2 HUY DONG VON KHONG KY HAN

DELETE FROM REPORT_SYSTEM..TEMPLATE_TABLE

(18) Tính toán dữ liệu cho chỉ tiêu mới, cập nhật vào bảng tạm, rồi lại update dữ liệu tổng hợp từ bảng tạm vào
bảng đích.  Cứ làm tuần tự như vậy cho đến khi tính xong hết các chỉ tiêu.

INSERT INTO REPORT_SYSTEM..TEMPLATE_TABLE


select SUB_BRANCH_CODE, SEGMENT, SUM(BALANCE_QD) from DATA_MART..FactNonTermDeposits
where TRANSACTION_DATE = CONVERT(DATE,@DATE)
AND SBV_CODE like '42%'
GROUP BY SUB_BRANCH_CODE, SEGMENT

INSERT INTO REPORT_SYSTEM..TEMPLATE_TABLE


select SUB_BRANCH_CODE, 'TOAN_HANG', SUM(BALANCE_QD) from DATA_MART..FactNonTermDeposits
where TRANSACTION_DATE = CONVERT(DATE,@DATE)
AND SBV_CODE like '42%'
GROUP By SUB_BRANCH_CODE

UPDATE REPORT_SYSTEM.[dbo].[KQKD_DAILY_TABLE]
SET HDV_KKH = SODU_TP/1e9 from REPORT_SYSTEM..TEMPLATE_TABLE
WHERE TRANSACTION_DATE = CONVERT(DATE,@DATE)
AND KHOI = KHOI_TP AND CO_CODE = CO_CODE_TP

(19) Cách tiếp cận trên là cách làm đơn giản, dễ hiểu, dễ duy trì, dễ tìm ra lỗi sai khi có lỗi phát sinh, không yêu cầu
kỹ thuật phức tạp nên có thể áp dụng cho tất cả mọi người ở mọi trình độ  Đặc biệt dữ liệu tính toán luôn đạt
chính xác tuyệt đối.
(20) Sau khi viết xong thủ tục tính toán tổng hợp, chúng ta bắt đầu chạy dữ liệu để tổng hợp dữ liệu theo từng ngày
từ 22/09/2017 đến 29/09/2017. Lưu ý, có thể bôi đen tất cả các dòng thi hành thủ tục rồi ấn F5 để chạy luôn một
lần.

EXEC REPORT_SYSTEM.dbo.DAILY_DATA_PROCESS '2017-09-22'


EXEC REPORT_SYSTEM.dbo.KQKD_DAILY_TABLE_PROCESS '2017-09-22'
EXEC REPORT_SYSTEM.dbo.DAILY_DATA_PROCESS '2017-09-23'
EXEC REPORT_SYSTEM.dbo.KQKD_DAILY_TABLE_PROCESS '2017-09-23'
EXEC REPORT_SYSTEM.dbo.DAILY_DATA_PROCESS '2017-09-25'
EXEC REPORT_SYSTEM.dbo.KQKD_DAILY_TABLE_PROCESS '2017-09-25'
EXEC REPORT_SYSTEM.dbo.DAILY_DATA_PROCESS '2017-09-26'
EXEC REPORT_SYSTEM.dbo.KQKD_DAILY_TABLE_PROCESS '2017-09-26'
EXEC REPORT_SYSTEM.dbo.DAILY_DATA_PROCESS '2017-09-27'
EXEC REPORT_SYSTEM.dbo.KQKD_DAILY_TABLE_PROCESS '2017-09-27'
EXEC REPORT_SYSTEM.dbo.DAILY_DATA_PROCESS '2017-09-28'
EXEC REPORT_SYSTEM.dbo.KQKD_DAILY_TABLE_PROCESS '2017-09-28'
EXEC REPORT_SYSTEM.dbo.DAILY_DATA_PROCESS '2017-09-29'

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 214


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
EXEC REPORT_SYSTEM.dbo.KQKD_DAILY_TABLE_PROCESS '2017-09-29'

(21) Sau khi chạy xong, ta đã được 1 bảng dữ liệu tổng hợp theo nhiều chiều, trong 1 tuần, sẵn sàng có thể link với
Excel để chuẩn bị lên báo cáo Dashboard.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 215


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 26: Xây dựng Data Model để làm báo cáo


Dashboard trên Excel

Chi tiết xem trong file Dashboard_Template – tài liệu đính kèm khóa học
này

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 216


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 27: Kết nối SQL Server với Excel có sử


dụng tham số
(1) Từ Excel, vào Tab Data chọn From Other Sources, chọn From Microsoft Query

Phần Choose Data Source hiện ra, chọn New Data Source

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 217


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Phần Create New Data Source, viết tên kết nối dữ liệu sẽ sử dụng. Thông thường bảng dữ liệu ta muốn kết nối từ
Excel đến SQL Server là gì thì ta đặt tên như thế cho dễ nhớ và dễ quản lý.

Ví dụ đặt tên Data Source là KQKD_DAILY_TABLE

Phần Select a driver for the type of database you want to accees, chọn SQL Server Native Client 11.0

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 218


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau đó ấn vào Connect

Phần SQL Server Login, chỗ tên Server có thể nhập tên Server hoặc địa chỉ IP của Server

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 219


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Trong ví dụ này chúng ta nhập tên server, bằng cách copy từ SQL Server Management Studio
Chuột phải vào server chọn Connect,

Sau đó copy phần Server name trong SQL Server

Paste vào phần Server ở mục SQL Server Login

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 220


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần Login ID và Password nhập tên user (ví dụ sa) và pass truy cập, sau đó ấn Options >>

Trong phần Options, mục Database chọn Database ta muốn kết nối đến, ví dụ REPORT_SYSTEM

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 221


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau đó ấn OK

Ấn OK một lần nữa

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 222


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau đó lại ấn OK khi phần lựa chọn màu xanh đang ở tên Data Source của chúng ta (trong ví dụ này là
KQKD_DAILY_TABLE)

Màn hình Microsoft Query xuất hiện, màn hình này sẽ giúp chúng ta viết câu lệnh SQL để lấy dữ liệu từ SQL Server
đưa vào Excel.
Chú ý mục tiêu của chúng ta là viết câu lệnh SQL nên ở mục Query Winzard – Choose Columns này ta có thể chọn
mặc định phần all_columns cho nhanh, sau đó ấn mũi tên >

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 223


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Tiếp tục ấn Next

Ấn Next tiếp

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 224


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ấn Next tiếp

Dưới đây là một lựa chọn quan trọng, Mục What would you like to do next, ta sẽ chọn “View Data or edit query in
Microsoft Query”, sau đó Ấn Finish

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 225


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 226


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình Query form KQKD_DAILY_TABLE xuất hiện, ta chọn biểu tượng ô vuông SQL

Trong của số SQL, phần SQL Statement

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 227


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 228


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 229


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 230


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 231


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Thêm tham số

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 232


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 233


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 234


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 235


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 236


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 237


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 238


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 239


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 240


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 28: Một số kiến thức Excel quan trọng


ứng dụng trong làm báo cáo

1. Xây dựng Excel Model để làm báo cáo


2. Đặt tên vùng dữ liệu
3. Các hàm tìm kiếm và tham chiếu
4. Nguyên tắc xây dựng báo cáo Dashboard.

Các kiến thức Excel khác, anh chị vui lòng tham dự khóa học online tại Học viện Unica
được giảng viên Nguyễn Ngọc Chiến trực tiếp giảng dạy:

Tên khóa học: “Thành thạo Excel từ A tới Z, tự tin thi đỗ chứng chỉ MOS”
Link khóa học: https://unica.vn/thanh-thao-excel-2013-tu-tin-thi-do-chung-chi-mos?aff=12948

Cách kích hoạt khóa học trực tuyến tại học viên Unica:

1. Truy cập vào https://unica.vn


2. Chọn đăng ký 1 tài khoản học viên
3. Sau khi đăng ký tài khoản học viên xong, đăng nhập vào hệ thống
4. Dán link: https://unica.vn/coupon lên trình duyệt. Lưu ý: Dán link
https://unica.vn/coupon chứ không phải link
https://unica.vn/kichhoat
5. Copy coupon giảng viên gửi cho anh chị vào, và chọn Kích hoạt ngay
6. Xong, như vậy anh chị đã sẵn sàng học rồi.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 241


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 29: Học VBA qua ví dụ để tự động hóa


công việc
1. Tổng quan về VBA

VBA là gì?
VBA (Visual Basic for Applications) là 1 ngôn ngữ lập trình được tích hợp trong ứng dụng văn phòng như
Excel, Word, PowerPoint, … Vì vậy, tất cả các chương trình mà bạn thực hiện trong Excel hoặc trong ứng
dụng văn phòng khác sẽ có thể được thực hiện với VBA.

Về mặt kỹ thuật, VBA là một ngôn ngữ lập trình hướng sự kiện của Microsoft. VBA cũng được gọi là một
ngôn ngữ lập trình mở rộng được tạo thành từ một tập các lệnh cốt lõi và được mở rộng trên cơ sở mỗi
ứng dụng để có thể làm việc trực tiếp với các đối tượng trong ứng dụng đó.

Excel VBA là gì?


Visual Basic for Applications (VBA) trong Excel là một ngôn ngữ lập trình nhẹ nhàng, mạnh mẽ cho
phép bạn viết các hàm hoặc lệnh của riêng mình trong một bảng tính Excel.

Sử dụng Excel VBA bạn có thể làm hầu như bất kỳ tác vụ nào tương tự trong Excel.

Tại sao bạn nên học Excel VBA?


Mặc dù Excel cung cấp cho bạn một số lượng lớn các công cụ nhưng vẫn không có mọi thứ bạn cần để thực
hiện các công việc hàng ngày. Các công việc đó có thể bao gồm tạo các chức năng tùy chỉnh, tự động tạo dữ
liệu, vv

Do đó Microsoft đã cung cấp VBA như là một sự bổ sung cho khoảng trống đó, nó cho phép người dùng tự
viết các phương thức hoặc lệnh của mình để thực hiện nhiệm vụ của mình.

Khi bạn có kinh nghiệm với lập trình VBA trong Excel, bạn sẽ không bị mắc kẹt trong những vấn đề khó
khăn đó nữa!

Macro là gì?
Macro là một chuỗi các lệnh mà bạn có thể sử dụng để tự động hóa các tác vụ được sử dụng thường xuyên
để tiết kiệm thời gian gõ phím và thao tác chuột.

Một Macro có thể được tạo bằng cách sử dụng Visual Basic for Applications (VBA) và được viết bởi người
sử dụng.

2. Tạo một Macro trong Excel

Với Excel VBA, bạn có thể tự động hóa các tác vụ trong Excel bằng cách viết code macro và gọi nó. Bài này hướng
dẫn bạn cách tạo một macro trong excel đơn giản và sẽ thực thi code bằng một button.

Các bước để viết code và run code VBA trong Excel:

1. Bật Developter tab.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 242


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

2. Save As Excel file thành Excel Macro File (từ excel 2007 trở lên).
3. Viết code VBA.
4. Run code VBA.

Trước tiên, bạn cần phải bật Developer Tab.

1. Bật Developer Tab


Để mở Developter tab thực theo các bước sau:

1. Mở một file excel.

2. Click chuột phải vào bất kỳ chỗ nào trong vùng ribbon -> chọn Customize the Ribbon…

3. Check vào hộp Developer -> click OK.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 243


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

4. Bạn có thể thấy Developer tab bên cạnh View tab như sau:

2. Save As Excel file thành Excel Macro File (từ excel 2007 trở lên)
Để tạo một macro từ excel, bạn cần phải Save As file excel thành tập tin với phần mở rộng có định dạng .xlsm
(excel 2007 trở lên) hoặc .xls (excel 2003)

Note: Để tạo một macro từ excel, nếu bạn đang dùng excel 2003 (.xls) thì bạn không phải làm việc này. Nếu bạn
dùng excel 2007 (.xlsx) trở lên thì bạn làm theo các bước sau.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 244


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
1. Chọn File -> Save As

2. Chọn kiểu file phần mở rộng .xlsm (hoặc .xls) -> click Save

3. Click Ok.

Đến đây là đã tạo được một macro file.

3. Viết code VBA


Dưới đây là các bước để tạo ra một thủ tục trong Excel VBA.

1. Mở Visual Basic Editor: chọn Vusual Basic hoặc bấm tổ hợp phím Alt + F11.

Giao diện Visual Basic Editor:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 245


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

2. Tạo module mới: click chuột phải vào VBAProject -> Insert -> Module.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 246


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

3. Tạo một Sub có tên ClickButton() vào Module1 với nội dung như trong hình.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 247


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

4. Run code VBA


Có nhiều các để run code từ excel macro file như sử dụng đối tượng đồ họa, Form Control, ActiveX Control, … Bài
này hướng dẫn bạn run code bằng một button của ActiveX Controls.

3. Insert button

Tại Developer tab, bạn có thể insert một button như sau:

1. Chọn Insert -> click vào biểu tượng button trong phần ActiveX Controls.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 248


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

2. Kéo thả vào vùng cell của excel.

3. Click OK, ta được một button như sau.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 249


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
4. Gán thủ tục macro cho button

1. Chọn Desing Mode.

2. Click chuột phải vào “Button1” tạo ở trên -> chọn Assign Macro…

3. Gán “ClickButton()” cho “Button1”.

5. Run

Click vào button “Button1” cho ra kết quả như sau:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 250


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Done.

6. MsgBox trong Excel VBA

MsgBox là một hộp thoại được sử dụng để hiển thị thông tin đến người dùng.

Ví dụ về MsgBox trong Excel VBA


Tạo một button và assign macro như trong bài tạo một Macro trong Excel.

Ví dụ 1:

MsgBox ("Hello!")
Kết quả:

Ví dụ 2:

MsgBox "Hello!" & vbNewLine & "Admin"


Kết quả:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 251


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

7. Hệ thống các đối tượng trong Excel VBA

Hệ thống các đối tượng trong Excel VBA được kết nối với nhau bởi dấu chấm (.).

Các đối tượng VBA được tổ chức trong một hệ thống phân cấp. Ở đầu phân cấp này là đối tượng
Application. Tất cả các đối tượng trong Excel là các member (thành viên) hoặc sub-member (thành viên
con) của đối tượng Application.

Các đối tượng trong Excel VBA

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 252


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Ví dụ: dưới đây là một dòng code hoàn chỉnh để gán giá trị 100 cho file “Book1.xlsx”, sheet “Sheet1”,
range “A1”.

Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Value = 100

Dấu chấm (.) từ cho phép chúng ta tham chiếu (gọi) các thành viên của hệ thống phân cấp từ trên xuống
dưới. Vì vậy, application là cấp cao nhất của hệ thống phân cấp, và Workbook là một thành viên của
application. Thuộc tính Workbooks() trả về một tập hợp tất cả các bảng tính đang mở trên máy tính.

Chỉ định tên Workbook thao tác là: “Book1.xlsx”

Application.Workbooks("Book1.xlsx")

Worksheets là một thành viên của đối tượng Workbook. Thuộc tính Worksheets() trả về một tập hợp tất
cả các sheet của đối tượng Workbook đang được active.

Chỉ định tên Worksheet thao tác là: “Sheet1”

Application.Workbooks("Book1.xlsx").Worksheets("Sheet1")

Cuối cùng để trỏ đến Range “A1” của sheet “Sheet1” và gán bằng 100 như sau:

Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Value = 100

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 253


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Mỗi đối tượng có nhiều thành viên khác nhau


Điều quan trọng cần lưu ý là mỗi đối tượng có nhiều thành viên khác nhau mà chúng ta có thể sử dụng
để tham chiếu đến các đối tượng khác nhau. Ví dụ, các thành viên của đối tượng Worksheet có thể bao
gồm: Ranges, PivotTables, Shapes, Charts, ListObjects, vv

Chúng ta sẽ tìm hiểu về các thành viên của các đối tượng trong hệ thống các đối tượng trong Excel VBA
trong những bài học tiếp theo.

Bài viết liên quan:

 Ví dụ đối tượng Workbook và Worksheet trong Excel VBA

8. Đối tượng Application trong Excel VBA

Đối tượng application trong Excel VBA là đối tượng được sử dụng thường xuyên nhất khi thực hiện bất kỳ tác
vụ nào với VBA.

Dưới đây là các phương thức và thuộc tính được sử dụng nhiều nhất của đối tượng Application. Để bạn có thể
nhanh chóng tìm ra giải pháp, cú pháp bất cứ khi nào bạn cần sử dùng nó.

Các phương thức của đối tượng Application


Dưới đây là các phương thức được sử dụng nhiều nhất của đối tượng Application.

Phương thức Mô tả

FindFile Để mở hộp thoại để mở một file.

Goto Để chọn bất kỳ range nào.

Run Để chạy một thủ tục hoặc một hàm

Wait Để tạm ngưng chương trình macro.

Các thuộc tính của đối tượng Application


Dưới đây là các thuộc tính được sử dụng nhiều nhất của đối tượng Application.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 254


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Properties Mô tả

DisplayAlerts Để đại diện cho hiển thị cảnh báo.

Path Để có được đường dẫn tuyệt đối của ứng dụng.

ScreenUpdating Để bật/tắt màn hình.

Sử dụng các phương thức của Application


Phương thức FindFile
Phương thức FindFile của Application trong VBA được sử dụng để mở một hộp thoại cho phép người sử dụng mở
một workbook hoặc một file. Phương thức này trả về giá trị Boolean là true hoặc false. If giá trị trả về là true thì
người dùng đã mở file thành công. Nếu người dùng hủy hộp thoại thì giá trị trả về là false.

Cú pháp:

Application.FindFile

Ví dụ:

Sub Demo_FindFile()

Application.FindFile

End Sub

Phương thức Goto


Phương thức Goto của Application trong VBA được sử dụng để chọn bất kỳ range trên một worksheet hoặc lựa
chọn bất kỳ thủ tục visual basic trong workbook. Nếu workbook là đang không hoạt động, nó sẽ khiến workbook
này hoạt động.

Cú pháp:

Application. Goto ([Reference], [Scroll])

Trong đó:
Reference: Nó chỉ định đích đến.
Scroll: Đây là tham số tùy chọn. Nó có giá trị Boolean hoặc True hay False. Nếu giá trị là true thì nó sẽ di chuyển
thanh cuộn đến vị trí chỉ đích. Nếu đó là false thì nó sẽ không di chuyển thanh cuộn.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 255


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Ví dụ: thủ tục sau sẽ chọn cell “A250” của worksheet có tên “Sheet1”. Thuộc tính Scroll:=True của câu lệnh sau sẽ
cuộn tới vị trí cell “A250”.

Sub Demo_Goto()

Application.Goto Reference:=Worksheets("Sheet1").Range("A250"), Scroll:=True

End Sub

Phương thức Run


Phương thức Run của Application trong VBA được sử dụng để run một thủ tục hoặc function được viết trong VBA.

Cú pháp:

Application.Run([Macro], [Arg1], [Arg2],…, [Arg30])

Trong đó:
Macro: Nó chỉ định macro để run.
Arg1 to Arg30: Đây là tham số tùy chọn. Nó được sử dụng để truyền các tham số cho function.

Ví dụ sau run một thủ tục macro có tên “MyMacro” của workbook có tên “Workbook1.xls”.

Sub Demo_Run()

Application.Run "'Workbook1.xls'!MyMacro"

End Sub

Phương thức Wait


Phương thức Wait của Application trong VBA được sử dụng để được sử dụng để tạm dừng hoặc dừng macro trong
một khoảng thời gian được chỉ định. Nó trả về một giá trị Boolean. Nếu thời gian đã chỉ định đến, nó trả về true
nếu không nó sẽ trả về false.

Cú pháp:

Application.Wait(Time)

Trong đó:
Time: Đây là một tham số được yêu cầu. Nó chỉ định thời gian bạn muốn tiếp tục macro.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 256


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Ví dụ 1: tạm ngưng macro đến 16h cùng ngày.

Sub Demo_Wait1()

Application.Wait "16:00:00"

End Sub

Ví dụ 2: tạm ngưng macro 20 giây.

Sub Demo_Wait2()

Application.Wait Now + TimeValue("00:00:20")

End Sub

Sử dụng các thuộc tính của Application


Thuộc tính DisplayAlerts
Thuộc tính DisplayAlerts của Application trong VBA có giá trị Boolean là True hoặc False. Giá trị mặc định là
True. Khi giá trị là True nó sẽ hiển thị cảnh báo hoặc thông báo trong khi chạy macro. Nếu giá trị là False nó sẽ
không hiển thị bất kỳ thông báo hoặc cảnh báo nào.

Ví dụ 1: không hiển thị bất kỳ cảnh báo nào trong khi đóng workbook đang hoạt động.

Sub Display_Alert_Example1()

Application.DisplayAlerts = False

ActiveWorkbook.Close

Application.DisplayAlerts = True

End Sub

Ví dụ 2: Hiển thị cảnh báo trong khi đóng workbook đang hoạt động.

Sub Display_Alert_Example1()

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 257


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Application.DisplayAlerts = True ' tùy chọn vì mặc định là true

ActiveWorkbook.Close

End Sub

Thuộc tính Path


Thuộc tính Path của Application trong VBA được sử dụng để lấy giá trị tuyệt đối của ứng dụng.

Ví dụ 1: hiển thị đường dẫn tuyệt đối của thư mục chứa ứng dụng excel.

Sub Path_Example1()

MsgBox "The application path is:" & Application.Path

End Sub

Kết quả:

The application path is: C:\Program Files\Microsoft Office\Office15


Ví dụ 1.1: hiển thị đường dẫn tuyệt đối của thư mục chứa file excel macro (workbook).

Sub Path_Example1()

MsgBox "The workbook path is:" & Application.ActiveWorkbook.Path

End Sub

Kết quả:

The workbook path is: D:\Test


Ví dụ 2: hiên thị đường dẫn tuyệt đối của file excel macro.

Sub Path_Example2()

MsgBox "Workbook full path is: " & ThisWorkbook.FullName

End Sub

Kết quả:

Workbook full path is: D:\Test\MyFile.xlsm

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 258


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Thuộc tính ScreenUpdating


Thuộc tính ScreenUpdating của Application trong VBA được sử dụng để cập nhật ON/OFF màn hình. Nếu chúng
ta thiết lập thuộc tính ScreenUpdating thành True thì nó sẽ mở màn hình cập nhật. Khi chúng ta thiết lập thuộc
tính ScreenUpdating của một đối tượng Application thành False thì nó sẽ tắt màn hình cập nhật, điều này có nghĩa
là sẽ tăng tốc độ macro. Đó là một trong những kỹ thuật tối ưu hóa.

Ví dụ 1: Trong ví dụ sau, nó sẽ hiển thị số từ 1 đến 100 trong cột đầu tiên của Sheet1. Chúng ta có thể quan sát màn
hình đang cập nhật trong khi cập nhật Sheet1.

Sub ScreenUpdating_Example1()

Dim i As Integer

For i = 1 To 100

Sheets("Sheet1").Cells(i, 1) = i

Next

End Sub

Ví dụ 2: Trong ví dụ sau, nó sẽ hiển thị số từ 1 đến 100 trong cột đầu tiên của Sheet1. Chúng ta không thể quan sát
màn hình đang cập nhật trong khi cập nhật Sheet1.

Sub ScreenUpdating_Example1()

Application.ScreenUpdating = False

Dim i As Integer

For i = 1 To 100

Sheets("Sheet1").Cells(i, 1) = i

Next

Application.ScreenUpdating = True

End Sub

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 259


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Xem thêm tại: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-object-excel

9. Đối tượng Workbook trong Excel VBA

Đối tượng Workbook trong Excel VBA là một trong những đối tượng được sử dụng thường xuyên nhất trong
khi tự động hóa bất kỳ tác vụ nào với VBA. Bài này cung cấp các phương thức hay sử dụng của đối tượng
Workbook.

Mỗi đối tượng Workbook tương ứng với một file excel.

Các phương thức của Workbook giúp chúng ta thực hiện các hành động khác nhau với Excel Workbooks. Ví dụ,
chúng ta có thể Kích hoạt một Workbook và Xóa một Workbook hoặc Move Workbook. Và chúng ta cũng có thể
Protect và UnProtect Workbooks.

Các phương thức của đối tượng Workbook


Dưới đây là các phương thức được sử dụng thường xuyên của đối tượng Workbook trong VBA:

Phương thức Mô tả

Activate Để kích hoạt một Workbook.

Calculate Để làm mới tất cả tính toán trong một Workbook.

Close Để close một Workbook.

Save Để save một Workbook.

SaveAs Để SaveAs một Workbook.

SaveCopyAs Để SaveCopyAs một Workbook.

Phương thức Activate


Phương thức Activate của đối tượng Workbook trong VBA sẽ giúp bạn kích hoạt một Workbook cụ thể. Rất hữu
ích khi bạn mở nhiều workbooks và muốn truy cập một Workbook cụ thể để thao tác hoặc đọc một số dữ liệu từ
Active Workbook.

Tại sao chúng ta cần phải kích hoạt một Workbook bằng VBA?
Khi chúng ta phải xử lý nhiều workbooks (nhiều file excel) và bạn muốn đọc hoặc ghi vào một Workbook cụ thể
thì bạn phải kích hoạt Workbook đó.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 260


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Ví dụ 1: Activate Workbook trong VBA với tên của Workbook
Sub ActiveWorkbookExample1()

' sử dụng tên của một Workbook

Application.Workbooks("myFile.xlsx").Activate

End Sub

Ví dụ 2: Activate Workbook trong VBA với chỉ số của Workbook


Sub ActiveWorkbookExample2()

' sử dụng chỉ số của một Workbook

Set wb = Application.Workbooks(2).Activate

End Sub

Ví dụ 3: Activate Workbook trong VBA với ThisWorkbook


Sử dụng ThisWorkbook bạn có thể activate Workbook chứa macro đang chạy như sau:

Sub ActiveWorkbookExample3()

' bạn có thể activate Workbook chứa macro đang chạy

ThisWorkbook.Activate

End Sub

Note: với Workbook đang được activate, tức là Workbook mà đang được chọn. Khi đó mọi thao tác đọc và ghi từ macro
sẽ ảnh hưởng trực tiếp đến nó.
Tạo biến tham chiếu đến Workbook
Vấn đề: Khi bạn phải làm việc với nhiều workbooks (nhiều file excel), mỗi Workbook có nhiều Worksheet. Bạn
phải sử dụng phương thức Activate với hết Workbook này đến Workshet khác để đọc hoặc ghi dữ liệu từ chúng,
điều này có thể dẫn đến mã rối rắm, khó hiểu khiến bạn lúng túng.

Giải quyết vấn đề


Để giải quyết vấn đề trên, có một giải pháp cho bạn đó là với mỗi Workbook bạn tạo ra một biến tham chiếu. Sau
đó, bất cứ khi nào muốn sử dụng (Activate) Workbook nào bạn chỉ cần tham chiếu đến biến tương ứng.

Ví dụ:

' khai báo đối tượng wb

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 261


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Dim wbInput As Workbook

Dim wbOutput As Workbook

' gán wbInput bằng Workbook đang hoạt động (ActiveWorkbook)

Set wbInput = Application.ActiveWorkbook

' gán wbOutput bằng Workbooks.Open để mở file D:\test\Output.xlsx

Set wbOutput = Application.Workbooks.Open("D:\test\Output.xlsx")

Sau đó, khi nào bạn sử dụng đến hai đối tượng wbInput, wbOutput thì nó tự động được kích hoạt, Khi đó bạn
không cần phải gọi phương thức Activate nữa.

Có 6 cách để khởi tạo đối tượng Workbook


Từ khóa Set được sử dụng để để khởi tạo đối tượng Workbook.

Có 6 cách để khởi tạo đối tượng Workbook như sau:

' 1. khởi tạo bằng Workbook hiện tại (ThisWorkbook)

Set wb = Application.ThisWorkbook

' 2. Khởi tạo bằng Workbook đang hoạt động (ActiveWorkbook)

Set wb = Application.ActiveWorkbook

' 3. Khởi tạo bằng cách mở một Workbook khác (Workbooks.Open)

Set wb = Application.Workbooks.Open("D:\test\myFile.xlsx", ReadOnly:=True)

' 4. khởi tạo bằng cách sử dụng tên của một Workbook

Set wb = Application.Workbooks("myFile.xlsx")

' 5. khởi tạo bằng cách sử dụng chỉ số của một Workbook

Set wb = Application.Workbooks(2)

' 6. tạo ra một Workbook mới

Set wb = Workbooks.Add

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 262


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phương thức Close


Bạn có thể đóng một Workbook (tương ứng một file excel) bởi việc sử dụng phương thức Close của đối tượng
Workbook trong Excel VBA.

Cú pháp:
Workbooks(“Workbook Name”).Close ([SaveChanges], [Filename], [RouteWorkbook])

Ví dụ 1: Close Workbook trong VBA với Savechanges: = True

Sub CloseWorkbookExample()

Dim wb As Workbook

Set wb = Workbooks.Open("D:\myFile.xlsx")

wb.Close Savechanges:=True

End Sub

Trong ví dụ trên, chúng ta tạo ra một biến có tên là wb trong câu lệnh đầu tiên. Chúng ta đã sử dụng phương thức
‘Open’ của workbook object để mở một bảng tính có tên là “D:\myFile.xlsx” và sau đó gán nó cho đối tượng wb
trong câu lệnh thứ hai. Cuối cùng trong câu lệnh thứ ba, chúng ta đã sử dụng phương thức ‘Close’ của đối tượng
workbook để đóng lại trên bảng tính đã xác định. Cuối cùng chúng ta đã đề cập đến ‘Savechanges: = True’, có nghĩa
là nếu chúng ta đã thực hiện bất kỳ thay đổi trong bảng tính thì nó sẽ lưu các thay đổi.

Ví dụ 2: Close Workbook trong VBA với Savechanges: = False

Sub CloseWorkbookExample2()

Workbooks("D:\myFile.xlsx").Close Savechanges:=False

End Sub

Ví dụ trên giống như ví dụ 1. Sự khác biệt là chúng ta sử dụng ‘Savechanges:=False’, điều đó có nghĩa là nếu chúng
ta thực hiện bất kỳ thay đổi trong bảng tính nó sẽ không được lưu lại.

Ví dụ 3: Close Workbook đang được activate

Sub CloseWorkbookExample3()

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 263


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

ActiveWorkbook.Close Savechanges:=False

End Sub

Ví dụ trên đóng bẳng tính đang được chọn và không lưu lại những gì thay đổi.

Phương thức Save


Chúng ta có thể lưu bảng tính bằng cách sử dụng phương thức ‘Save’ của đối tượng Workbook trong Excel VBA.

Cú pháp:
Workbooks(“Workbook Name”).Save

Ví dụ 1: Save Workbook trong VBA

Sub SaveWorkbookExample1()

Dim wb As Workbook

Set wb = Workbooks.Add

wb.Save

End Sub

Trong ví dụ trên, chúng ta đã tạo ra biến có tên wb trong câu lệnh đầu tiên. Chúng ta đã sử dụng phương thức
‘Add’ của đối tượng Workbook để tạo ra bảng tính mới và sau đó gán nó cho đối tượng wb trong câu lệnh thứ hai.
Cuối cùng trong câu lệnh thứ ba, chúng ta đã sử dụng phương thức ‘Save’ của đối tượng Workbook để lưu lại bảng
tính vừa tạo.

Câu hỏi: Trong ví dụ trên, bảng tính trên đã được tạo ra và lưu ở đâu?

Trả lời: Trong ví dụ trên bảng tính trên đã được lưu tại thư mục Documents.

Ví dụ 1: Save Workbook hiện tại (đang được kích hoạt)

Sub SaveWorkbookExample1()

ActiveWorkbook.Save

End Sub

Trong ví dụ trên mọi thay đổi của Workbook đang được kích hoạt sẽ được lưu lại.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 264


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Note: Đối tượng ActiveWorkbook đại diện cho bảng tính hiện tại mà đang kích hoạt.
Phương thức SaveAs
Chúng ta có thể lưu bảng tính bằng cách sử dụng phương thức ‘SaveAs’ của đối tượng Workbook trong Excel VBA.

Cú pháp:

Workbooks(“Workbook Name”).SaveAs([Filename], [FileFormat], [Password],

[WriteResPassword], [ReadOnlyRecommended], [CreateBackup],

[AccessMode As XlSaveAsAccessMode = xlNoChange], [ConflictResolution],

[AddToMru], [TextCodepage], [TextVisualLayout], [Local])

Ví dụ: SaveAs Workbook trong VBA

Sub SaveAsWorkbookExample()

Dim wb As Workbook

Set wb = Workbooks.Add

wb.SaveAs Filename:="D:\test\Sample.xlsx"

End Sub

Trong ví dụ trên, chúng ta đã tạo ra biến có tên wb trong câu lệnh đầu tiên. Chúng ta đã sử dụng phương thức
‘Add’ của đối tượng Workbook để thêm bảng tính mới và sau đó gán nó cho đối tượng wb trong câu lệnh thứ hai.
Cuối cùng trong câu lệnh thứ ba chúng ta đã sử dụng phương thức ‘SaveAs’ của đối tượng Workbook để lưu bảng
tính ở vị trí khác và tên file là “D:\test\Sample.xlsx” (Bạn có thể thay đổi tên tập tin theo ý muốn của bạn).

Phương thức SaveCopyAs


Với phương thức SaveCopyAs của đối tượng Workbook trong VBA, bạn có thể lưu một bản sao của Workbook
đang mở.

Tại sao cần sử dụng phương thức SaveCopyAS?


Đôi khi bạn muốn lưu bảng tính với những thay đổi và bạn không muốn sửa đổi bảng tính đã mở. Vì vậy, chỉ cần
bạn cần phải sử dụng phương thức ‘SaveCopyAs’ của đối tượng Workbook.

Cú pháp:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 265


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Workbooks(“Workbook Name”).SaveCopyAs([Filename])

Ví dụ: SaveCopyAs Workbook trong VBA

Sub WorkbookSaveCopyAsExample()

ThisWorkbook.SaveCopyAs ThisWorkbook.Path & "\" & "ver1_" & ThisWorkbook.Name

End Sub

Các thuộc tính của đối tượng Workbook


Dưới đây là các thuộc tính được sử dụng thường xuyên của đối tượng Workbook trong VBA:

Properties Mô tả

Path Để lấy ra đường dẫn tuyệt đối của Workbook.

FullName Để lấy ra tên đầy đủ đối của Workbook.

Sheets Lấy ra một collection của Charts và Worksheets..

Worksheets Để lấy ra tất cả các Worksheet của Workbook.

Tìm hiểu thêm: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbook-object-excel

10. Đối tượng Worksheet trong Excel VBA

Đối tượng Worksheet trong Excel VBA là một trong những đối tượng được sử dụng thường xuyên nhất trong
khi tự động hoá các tác vụ với VBA.

Đối tượng Worksheet đại diện cho các sheet trong Workbook, tức là mỗi Workbook chứa một hoặc nhiều
Worksheet.

Các phương thức của đối tượng Worksheet


Dưới đây là các phương thức được sử dụng thường xuyên của đối tượng Worksheet trong VBA:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 266


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phương thức Mô tả

Activate Để kích hoạt một Worksheet.

Calculate Để làm mới tất cả tính toán trong một Worksheet.

Copy Để copy một Worksheet.

Delete Để xóa một Worksheet.

Move Để di chuyển một Worksheet.

Select Để chọn một Worksheet.

Phương thức Activate


Phương thức Activate của đối tượng Worksheet trong VBA được sử dụng để kích hoạt một Worksheet cụ thể của
một Workbook đang được kích hoạt.

Tại sao chúng ta cần phải kích hoạt một Worksheet bằng VBA?
Khi chúng ta phải xử lý nhiều Worksheet (sheet trong một Workbook) và bạn muốn đọc hoặc ghi vào một
Worksheet (sheet) cụ thể thì bạn phải kích hoạt Worksheet đó.

Cú pháp:

Worksheets(“Worksheet Name”).Activate

' Or

Worksheets(“Worksheet Index”).Activate

Áp dụng cú pháp trên bạn sẽ kích hoạt được đối tượng Worksheet cụ thể của một Workbook đang được kích
hoạt.

Ví dụ 1: Activate Worksheet trong VBA với tên của Worksheet

Sub ActiveWorksheetExample1()

' sử dụng tên của một Worksheet

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 267


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Worksheets("data").Activate

'Or

Sheets("data").Activate

End Sub

Ví dụ 2: Activate Worksheet trong VBA với chỉ số của Worksheet

Sub ActiveWorksheetExample1()

' sử dụng tên của một Worksheet

Worksheets(2).Activate

'Or

Sheets(2).Activate

End Sub

Cách tiếp cận tốt nhất


Lưu ý: Luôn luôn sử dụng tên của Worksheet, thay vì chỉ số của Worksheet. Và cách tiếp cận tốt nhất là gán
Worksheet cho một đối tượng và sau đó làm bất cứ nhiệm vụ nào bạn muốn làm với đối tượng Worksheet cụ thể
đó.

Tạo biến tham chiếu đến Worksheet


Vấn đề: Khi bạn phải làm việc với nhiều Workshet (nhiều sheet), mỗi Workbook có nhiều Worksheet. Bạn phải sử
dụng phương thức Activate với hết Workshet này đến Workshet khác để đọc hoặc ghi dữ liệu từ chúng, điều này
có thể dẫn đến mã rối rắm, khó hiểu khiến bạn lúng túng.

Giải quyết vấn đề


Để giải quyết vấn đề trên, có một giải pháp cho bạn đó là với mỗi Worksheet bạn tạo ra một biến tham chiếu. Sau
đó, bất cứ khi nào muốn sử dụng (Activate) Worksheet nào bạn chỉ cần tham chiếu đến biến tương ứng.

Ví dụ:

Sub vidu3()

' khai báo đối tượng wb

Dim wb As Workbook

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 268


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

' khai báo đối tượng ws

Dim wsInput As Worksheet

Dim wsOutput As Worksheet

' gán wb cho active Workbook

Set wb = Application.ActiveWorkbook

' gán wsInput cho đối tượng Worksheet có tên "input"

Set wsInput = wb.Sheets("input")

' gán wsOutput cho đối tượng Worksheet có tên "output"

Set wsOutput = wb.Sheets("output")

End Sub

Xem ví dụ cụ thể tại ví dụ đối tượng Workbook và Worksheet

Phương thức Copy


Phương thức Copy của đối tượng Worksheet trong VBA được sử dụng để sao chép một Worksheet từ vị trí này
sang ví trí khác trong cùng một Workbook hoặc Workbook đang tồn tại hoặc Workbook mới khác.

Cú pháp:

Sheets(“Worksheet Number”).Copy([Before], [After])

Ví dụ 1: Copy Worksheet trong VBA với Before


Ví dụ sau sao chép sheet “Sheet3” tới vị trí trước sheet đầu tiên trong cùng Workbook. Trường hợp ‘1’ đại diện cho
số chỉ mục Worksheet đầu tiên.

Sub CopySheet_Beginning1()

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 269


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Worksheets("Sheet3").Copy Before:=Worksheets(1)

End Sub

Ví dụ trên, chúng ta sao chép worksheet đang hoạt động đến vị trí đầu tiên trong cùng Workbook.

Sub CopySheet_Beginning2()

ActiveSheet.Copy Before:=Worksheets(1)

End Sub

Ví dụ 2: Copy Worksheet trong VBA với After


Ví dụ sau sao chép sheet “Sheet3” tới vị trí trước sheet cuối cùng trong cùng Workbook. Trường hợp
Worksheets.Count đại diện cho số chỉ mục Worksheet cuối cùng.

Sub CopySheet_Ending1()

Worksheets("Sheet3").Copy After:=Worksheets(Worksheets.Count)

End Sub

Ví dụ trên, chúng ta sao chép worksheet đang hoạt động đến vị trí cuối cùng trong cùng Workbook.

Sub CopySheet_Ending2()

ActiveSheet.Copy After:=Worksheets(Worksheets.Count)

End Sub

Phương thức Delete


Phương thức Delete của đối tượng Worksheet trong VBA được sử dụng để xóa sheet khỏi Workbook (file Excel).
Khi bạn gọi phương thức Delete để xóa một sheet, nó sẽ hiển thị hộp thoại nhắc người dùng xác nhận việc xóa theo
mặc định. Nếu bạn click vào nút Delete trên hộp thoại thì nó sẽ xóa sheet. Nó trả về giá trị Boolean. Điều đó có
nghĩa là hộp thoại sẽ xuất hiện với hai tùy chọn. Đó là Cancel (False) hoặc Delete (True).

Cú pháp:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 270


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Worksheets(“Sheet Name”).Delete

Ví dụ 1: Xóa Worksheet trong VBA


Ví dụ sau xóa sheet có tên “Sheet2” từ một Workbook.

Sub DeleteSheetExample1()

Sheets("Sheet2").Delete

' or

Sheet2.Delete

End Sub

Ví dụ trên, sẽ hiển thị hộp thoại Excel và thông báo xác nhận tới người dùng để xóa “Sheet2”.

Ví dụ 2: Xóa Worksheet trong VBA

Sub DeleteSheetExample1()

ActiveSheet.Delete

End Sub

Ví dụ trên, chúng ta thực hiện xóa đối tượng Worksheet đang hoạt động từ một Workbook bằng cách sử dụng
phương thức Delete của đối tượng Worksheet.

Ví dụ 3: Xóa Worksheet trong VBA – không hiển thị alert

Sub DeleteSheetExample1()

Application.DisplayAlerts = False

Sheets("Sheet2").Delete

Application.DisplayAlerts = True

End Sub

Ví dụ trên, xóa “Sheet2” nhưng KHÔNG hiển thị hộp thoại Excel thông báo xác nhận tới người dùng.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 271


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Tìm hiểu thêm: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/worksheet-object-excel

11. Đối tượng Range trong Excel VBA

Đối tượng Range trong Excel VBA là một trong những đối tượng được sử dụng nhiều nhất trong khi tự động hóa
bất kỳ tác vụ nào với VBA. Chúng ta tham chiếu đến các Range khác nhau trong một Worksheet và thực hiện các
hoạt động khác nhau trên Range trong Excel. Chúng ta có các thuộc tính và các phương thức khác nhau để xử lý
các đối tượng Range trong Excel.

Đối tượng Range là đại diện của một cell (hoặc cells) trên Worksheet, là đối tượng quan trọng nhất của Excel VBA.

Ví dụ đối tượng Range trong Excel VBA


Đối tượng Range
Ví dụ 1: đặt một nút lệnh trên Worksheet và thêm dòng code sau:

Range("B3").Value = 2

Kết quả:

Ví dụ 2: đặt một nút lệnh trên Worksheet và thêm dòng code sau:

Range("A1:A4").Value = 5

Kết quả:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 272


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Đối tượng Cells


Thay vì Range, bạn có thể sử dụng Cells. Sử dụng Cells đặc biệt hữu ích khi bạn muốn lặp qua các ranges.

Ví dụ 3: đặt một nút lệnh trên Worksheet và thêm dòng code sau:

Cells(3, 2).Value = 2

Kết quả:

Ví dụ 4: đặt một nút lệnh trên Worksheet và thêm dòng code sau:

Range(Cells(1, 1), Cells(4, 1)).Value = 5

Kết quả:

Khai báo một đối tượng Range


Bạn có thể khai báo một đối tượng Range bằng cách sử dụng các từ khoá Dim và Set.

Dim rangeObj As Range

Set rangeObj = Range("A1:C4")

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 273


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

rangeObj .Value = 8

Kết quả:

Các phương thức của đối tượng Range


Dưới đây là các phương thức được sử dụng thường xuyên của đối tượng Range trong VBA:

Phương thức Mô tả

Select Để chọn Range được yêu cầu trong Worksheet

AddComment Để thêm bình luận vào Excel Range

AdvancedFilter Áp dụng các bộ lọc nâng cao trên Excel Range

Calculate Để làm mới các phép tính trong Excel Range

Formula Để thêm công thức cho Excel Range

Clear Để xóa một Excel Range hoàn toàn bao gồm các định dạng và dữ liệu

ClearComments Để chỉ xóa các bình luận trong Excel Range cụ thể

ClearContents Để chỉ xóa nội dung/dữ liệu trong một Excel Range

ClearFormats Để chỉ xóa các định dạng của một Excel Range

ClearHyperlinks Để chỉ xóa các siêu liên kết trong một Excel Range

Copy Để sao chép một Excel Range đến một vị trí khác

CopyFromRecordset Sao chép dữ liệu từ recordset và dán vào một Excel Range

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 274


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Cut Cắt Excel Range trong Worksheeet

Delete Để xóa một Range trong Worksheet

Find Để tìm kiếm và một Cell có dữ liệu cần thiết

Insert Để chèn một dãy các Cell, Row hoặc Column

ListNames Để liệt kê các Excel Range được đặt tên trong bảng tính

Merge Để hợp nhất Excel Range

Paste Để dán dữ liệu

PasteSpecial Để dán dữ liệu với các tiêu chí khác nhau, như các giá trị, các định dạng có hoạt động
toán học hoặc chuyển đổi

Phương thức Select


Một phương pháp quan trọng của đối tượng Range là phương thức Select. Phương thức Select được sử dụng để
chọn một range.

Ví dụ:

Dim rangeObj As Range

Set rangeObj = Range("A1:C4")

rangeObj.Select

Kết quả:

Lưu ý: Để chọn các ô trên một Worksheet khác, bạn phải kích hoạt Worksheet này trước. Ví dụ, các dòng code sau đây
chọn ô B7 trên Worksheet thứ ba từ bên trái.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 275


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Worksheets(3).Activate

Worksheets(3).Range("B7").Select

Phương thức Copy/Paste


Phương thức Copy và Paste sử dụng để sao chép một dãy và dán nó vào một nơi khác trên Worksheet.

Ví dụ:

Range("A1:A2").Select

Selection.Copy

Range("C3").Select

ActiveSheet.Paste

Kết quả:

Mặc dù phương thức Copy/Paste được cho phép sử dụng trong Excel VBA, nhưng tốt hơn là bạn sử dụng dòng
code dưới đây thay vì đoạn code trên.

Range("C3:C4").Value = Range("A1:A2").Value

ActiveSheet.Paste

Phương thức ClearContents


Phương thức ClearContents được sử dụng để chỉ xóa nội dung của một Excel Range.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 276


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Ví dụ:

Range("A1").ClearContents

Hoặc đơn giản hơn bằng cách sử dụng code sau:

Range("A1").Value = ""

Phương thức ClearFormats


Phương thức ClearFormats được sử dụng để chỉ xóa định dạng của một Excel Range.

Phương thức Clear


Phương thức Clear được sử dụng để xóa một Excel Range hoàn toàn bao gồm các định dạng và dữ liệu.

Phương thức Formula


Phương thức Formula được sử dụng để thêm công thức cho Excel Range.

Ví dụ:

Range("A1").Formula = "=Sum(B1:B5)"

Các thuộc tính của đối tượng Range


Dưới đây là các thuộc tính được sử dụng thường xuyên của đối tượng Range trong VBA:

Phương thức Mô tả

Rows Thuộc tính Rows cho phép truy cập vào một hàng cụ thể của range.

Columns Thuộc tính Columns cho phép truy cập vào một cột cụ thể trong một range.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 277


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Count Được sử dụng để đếm số ô, hàng và cột của range.

Thuộc tính Rows


Thuộc tính Rows cho phép truy cập vào một hàng cụ thể của range.

Ví dụ:

Dim rangeObj As Range

Set rangeObj = Range("A1:C4")

rangeObj.Rows(3).Select

Kết quả:

Thuộc tính Columns


Thuộc tính Columns cho phép truy cập vào một cột cụ thể của range.

Ví dụ:

Dim rangeObj As Range

Set rangeObj = Range("A1:C4")

rangeObj.Columns(2).Select

Kết quả:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 278


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Thuộc tính Count


Thuộc tính Count được sử dụng để đếm số ô, hàng và cột của range.

Ví dụ 1:

Dim rangeObj As Range

Set rangeObj = Range("A1:C4")

MsgBox rangeObj.Count

Kết quả:

Ví dụ 2:

Dim rangeObj As Range

Set rangeObj = Range("A1:C4")

MsgBox rangeObj.Rows.Count

Kết quả:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 279


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Xem thêm tại: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-object-excel

12. Biến và kiểu dữ liệu trong VBA

Kiểu dữ liệu trong VBA


Bảng dưới đây thể hiển các kiểu dữ liệu được hỗ trợ trong VBA, bao gồm kích thước lưu trữ và vùng giá trị.

Kiểu giá trị Kích thước Vùng giá trị

Byte 1 byte 0 to 255

Boolean 2 bytes True hoặc False

Integer 2 bytes -32,768 tới 32,767

Long 4 bytes -2,147,483,648 tới 2,147,483,647

LongLong 8 bytes -9,223,372,036,854,775,808 tới 9,223,372,036,854,775,807 (Chỉ


hợp lệ trên hệ thống 64-bit.)

LongPtr 4 bytes trên hệ thống 32- -2,147,483,648 tới 2,147,483,647 trên hệ thống 32-bit,
bit, -9,223,372,036,854,775,808 tới 9,223,372,036,854,775,807 trên
8 bytes trên hệ thống 64- hệ thống 64-bit
bit

Single 4 bytes -3.402823E38 tới -1.401298E-45 cho các giá trị âm;
1.401298E-45 tới 3.402823E38 cho các giá trị dương

Double 8 bytes -1.79769313486231E308 tới -4.94065645841247E-324 cho các


giá trị âm;

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 280


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

4.94065645841247E-324 tới 1.79769313486232E308 cho các giá


trị dương

Currency 8 bytes -922,337,203,685,477.5808 tới 922,337,203,685,477.5807

Decimal 14 bytes +/-79,228,162,514,264,337,593,543,950,335 với số không có dấu


phảy động (.);
+/-7.9228162514264337593543950335 với 28 ký tự bên phải sau
dấu thập phân;
số nhỏ nhất non-zero +/-0.0000000000000000000000000001

Date 8 bytes January 1, 100 tới December 31, 9999

Object 4 bytes Bất kỳ đối tượng tham chiếu

String (độ dài 10 bytes + string length 0 tới xấp xỉ 2 tỉ


thay đổi)

String (độ dài Độ dài của String 1 tới xấp xỉ 65,400


cố định)

Variant (kiểu 16 bytes Bất kỳ giá trị số nào


số)

Variant (kiểu 22 bytes + độ dài của chuỗi Giống như String có đội dài thay đổi
ký tự) ký tự (24 bytes trên hệ
thống 64-bit)

Biến trong VBA


Bạn có thể khai báo biến với kiểu dữ liệu cụ thể hoặc KHÔNG cần khai báo biến trong VBA. VBA luôn tự động lưu
các biến vào lần đầu tiên chúng được sử dụng. Những biến được không được khai báo là một dạng của biến thể
của kiểu dữ liệu Variant.

Ví dụ 1: KHÔNG cần khai báo biến trong VBA

n = 100

MsgBox n

Ví dụ 2: Khai báo biến với kiểu dữ liệu cụ thể trong VBA.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 281


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Dim str As Integer

str = "Hello VBA!"

MsgBox str

Ví dụ biến trong VBA


Tạo macro file như trong bài này tạo một Macro trong Excel.

Kiểu dữ liệu Integer

Dim x As Integer

x=6

Range("A1").Value = x

Kết quả:

Kiểu dữ liệu String

Dim str As String

str = "Hello Excel VBA!"

Range("A1").Value = str

Kết quả:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 282


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Kiểu dữ liệu Double


Ví dụ 1:

Dim x As Integer

x = 5.5

Range("A1").Value = "x = " & x

Kết quả:

Đó không phải là giá trị đúng! Rõ ràng giá trị biến x được khởi tạo với giá trị 5.5 ở dòng code thứ 2. Vậy tại sao kết
quả lại là 6? Vì chúng ta đã khai báo kiểu dữ liệu của biến x là Integer nên giá trị có chứa dấu phảy động sẽ được ép
thành kiểu Integer.

Ví dụ 2: để sử dụng số có chứa dấu phảy động, chúng ta nên khai báo biến có kiểu giá trị là Double

Dim x As Double

x = 5.5

Range("A1").Value = "x = " & x

Kết quả:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 283


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Kiểu dữ liệu Boolean


Ví dụ:

Dim flag As Boolean

flag = True

If flag = True Then

MsgBox "flag = True"

End If

Kết quả:

13. Toán tử trong VBA

Một toán tử (Operator) có thể được định nghĩa bằng cách sử dụng một biểu thức đơn giản – 4 + 5 bằng
9. Ở đây, 4 và 5 được gọi là các toán hạng và + được gọi là toán tử.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 284


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Có 4 loại toán tử trong VBA như sau:

 Các toán tử số học


 Các toán tử so sánh
 Các toán tử logic (hoặc quan hệ)
 Các toán tử móc nối

1. Các toán tử số học


Bảng dưới đây trình bày các toán tử số học sau được hỗ trợ bởi VBA.

Giả sử biến A có giá trị là 5 và biến B có giá trị là 10, sau đó:

Toán tử Mô tả Ví dụ

+ Phép cộng hai toán hạng A + B sẽ cho 15

– Phép trừ hai toán hạng A – B sẽ cho -5

* Phép nhân hai toán hạng A * B sẽ cho 50

/ Phép chia lấy phần nguyên hai toán hạng B / A sẽ cho 2

Mod Phép chia lấy phần dư hai toán hạng B Mod A sẽ cho 0

^ Lũy thừa hai toán hạng B ^ A sẽ cho 100000

Các toán tử so sánh


Bảng dưới đây trình bày các toán tử so sánh sau được hỗ trợ bởi VBA.

Giả sử biến A có giá trị là 5 và biến B có giá trị là 10, sau đó:

Toán tử Mô tả Ví dụ

= Kiểm tra nếu giá trị của hai toán hạng bằng nhau hay không. (A = B) là False.
Nếu có, thì điều kiện là đúng.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 285


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

<> Kiểm tra nếu giá trị của hai toán hạng bằng nhau hay không. (A <> B) là True.
Nếu các giá trị không bằng nhau, thì điều kiện là đúng.

> Kiểm tra nếu giá trị của toán hạng bên trái lớn hơn giá trị của (A > B) là False.
toán hạng bên phải không. Nếu có, thì điều kiện là đúng.

< Kiểm tra xem giá trị của toán hạng bên trái có nhỏ hơn giá trị (A < B) là True.
của toán hạng bên phải không. Nếu có, thì điều kiện là đúng.

>= Kiểm tra nếu giá trị của toán hạng bên trái lớn hơn hoặc bằng (A >= B) là False.
giá trị của toán hạng bên phải không. Nếu có, thì điều kiện là
đúng.

<= Kiểm tra xem giá trị của toán hạng bên trái có nhỏ hơn hoặc (A <= B) là True.
bằng giá trị của toán hạng bên phải không. Nếu có, thì điều
kiện là đúng.

3. Các toán tử logic (hoặc quan hệ)


Bảng dưới đây trình bày các toán tử logic sau được hỗ trợ bởi VBA.

Giả sử biến A có giá trị là 10 và biến B có giá trị là 0, sau đó:

Toán tử Mô tả Ví dụ

AND Nếu cả hai điều kiện là True, thì true. a<>0 AND b<>0 là False.

OR Nếu một trong hai điều kiện là True, thì true. a<>0 OR b<>0 là true.

NOT Được sử dụng để đảo ngược trạng thái logic của toán hạng. NOT(a<>0 OR b<>0) là
Nếu một điều kiện có giá trị true, thì toán tử NOT điều kiện đó false.
sẽ là false.

XOR Nếu chỉ một trong hai điều kiện là true thì biểu thức là true, (a<>0 XOR b<>0) là true.
ngược lại là false.

Các toán tử móc nối


Bảng dưới đây trình bày các toán tử móc nối sau được hỗ trợ bởi VBA.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 286


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Giả sử biến A có giá trị là 5 và biến B có giá trị là 10, sau đó:

Toán tử Mô tả Ví dụ

+ Cộng hai biến số A + B sẽ cho 15

& Nối hai chuỗi A & B sẽ cho 510

Giả sử biến A có giá trị là “Hello” và biến B có giá trị là ” VBA!”, sau đó:

Toán tử Mô tả Ví dụ

+ Cộng hai biến số A + B sẽ cho “Hello VBA!”

& Nối hai chuỗi A & B sẽ cho “Hello VBA!”

Chú ý: Có thể áp dụng toán tử móc nối cho cả số và chuỗi. Đầu ra phụ thuộc vào ngữ cảnh, nếu các biến có giá trị số hoặc
giá trị chuỗi.

14. Function trong VBA

Một Function trong VBA (chức năng do người dùng tự định nghĩa) là một nhóm các mã tái sử dụng, được gọi là
bất cứ nơi nào trong chương trình của bạn. Điều này giúp loại bỏ sự việc viết mã giống nhau lặp đi lặp lại. Điều này
cho phép các lập trình viên phân chia một chương trình lớn thành một số chức năng nhỏ và dễ quản lý.

Ngoài các Function sẵn có, VBA cũng cho phép người dùng tạo ra các Function của riêng bạn.

Cú pháp của Function trong VBA


Không có định nghĩa kiểu trả về cụ thể:

Function FunctionName([parameter-list])

statement 1

statement 2

statement 3

.......

statement n

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 287


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

End Function

Định nghĩa kiểu trả về cụ thể:

Function FunctionName([parameter-list]) As [data-type]

statement 1

statement 2

statement 3

.......

statement n

End Function

Trong đó:

[parameter-list]: là danh sách tham số, có thể có không, một hoặc nhiều.

[data-type]: là kiểu giá trị trả về của function, có thể định nghĩa hoặc không.

Đặc điểm của Function trong VBA


Một Function trong VBA có thể có giá trị trả về hoặc không. Điều này là cần thiết nếu bạn muốn Function trả về
một giá trị.

Ví dụ: bạn có thể truyền hai số vào trong một Function và sau đó bạn mong muốn Function đó trả về tích của hai
số đã cho.

Ví dụ Function trong VBA


Ví dụ: viết một Function tính tích của hai số, với tham số thứ hai là tùy chọn (có thể nhập hoặc không). Nếu tham
số thứ hai không được truyền vào thì Function này trả về tích của số thứ nhất với chính nó. Ngược lại nếu tham số
thứ hai được truyền vào thì Function này trả về tích của số thứ nhất và thứ hai.

Chỉ rõ kiểu giá trị trả về của function là Double:

Function findArea(Height As Double, Optional Width As Variant) As Double

If IsMissing(Width) Then

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 288


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

findArea = Height * Height

Else

findArea = Height * Width

End If

End Function

Hoặc không cần chỉ rõ kiểu giá trị trả về của function:

Function findArea(Height As Double, Optional Width As Variant)

If IsMissing(Width) Then

findArea = Height * Height

Else

findArea = Height * Width

End If

End Function

Note: Một giá trị có thể được trả về với tên của chính Function đó, trong ví dụ trên là giá trị findArea sẽ được trả về cho
Function có tên findArea.

Gọi một Function trong VBA


Bạn có thể gọi lại function trong một Functon khác hoặc trong một Sub khác, hoặc trong một Cell của Worksheet.

Gọi một Function trong một Function khác hoặc trong một Sub khác
Ví dụ:

Sub ClickButton()

Dim area1 As Double

Dim area2 As Double

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 289


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

area1 = findArea(10, 5)

area2 = findArea(10)

MsgBox "aria1 = " & area1 & ", area2 = " & area2

End Sub

Kết quả:

Gọi một Function trong một Cell của Worksheet


Để gọi một Function, hãy gọi hàm bằng cách sử dụng tên hàm như thể hiện trong ảnh chụp màn hình sau.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 290


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Kết quả:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 291


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

15. Sub trong VBA

Sub trong VBA hay còn gọi là thủ tục trong VBA là tương tự như function, tuy nhiên có một số khác biệt.

 Các thủ tục Sub KHÔNG không có giá trị trả về trong khi các function có thể hoặc không trả lại một giá
trị.
 Các thủ tục Sub được gọi với từ khóa Call hoặc không.

Cú pháp của Sub trong VBA


Sub SubName([parameter-list])

statement 1

statement 2

statement 3

.......

statement n

End Sub

Trong đó:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 292


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
[parameter-list]: là danh sách tham số, có thể có không, một hoặc nhiều.

Ví dụ
Ví dụ sau hiển thị tích của hai số đã cho trong một hộp thoại thông báo.

Sub Area(x As Double, y As Double)

MsgBox x * y

End Sub

Gọi một Sub trong VBA


Bạn có thể gọi lại Sub trong một Functon khác hoặc trong một Sub khác.

Bạn có thể sử dụng hoặc không cần sử dụng từ khóa Call để gọi Sub.

Gọi Sub trong một Sub khác


Ví dụ:

Sub ClickButton()

Call Area(10, 10)

End Sub

Gọi Sub trong một Function khác


Ví dụ:

Function findArea(height As Double, Optional width As Double)

If IsMissing(width) Then

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 293


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Call Area(height, height)

Else

Call Area(height, width)

End If

End Function

Gọi Sub trong Cell của Worksheet thông qua một function
Bây giờ bạn sẽ chỉ có thể gọi Sub trong Cell của Worksheet thông qua một function như thể hiện trong ảnh chụp
màn hình sau đây:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 294


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Tích của hai số được tính và chỉ được hiển thị trong hộp thoại thông báo:

Kết quả hiển thị trong cell là 0, vì Sub trong VBA không có giá trị trả về:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 295


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

16. Khối lệnh With-End With trong VBA

Khối lệnh With-End With trong VBA cho phép bạn thực hiện nhiều thao tác trên một đối tượng duy nhất. Đây là
một cách khác để làm cho mã chạy nhanh hơn và hiệu quả hơn.

Cú pháp

With objectExpression

[statements]

End With

Trong đó:
objectExpression: Bắt buộc, nó là một biểu thức đối tượng.
statements: Không bắt buộc, một hoặc nhiều câu lệnh có thể tham chiếu đến các thành viên của đối tượng
objectExpression.

Ví dụ khối lệnh With-End With trong VBA


Ví dụ 1: thiết lập màu background và giá trị cho range bằng khối lệnh With.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 296


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sub WithExample()

With Range("B3")

.Interior.ColorIndex = 7

.Value = "Violet"

End With

End Sub

Ví dụ 2: hiển thị hộp thoại chọn file bằng khối lệnh With.

Public Sub selectInputFile()

Dim fd As Office.FileDialog

Set fd = Application.FileDialog(msoFileDialogFilePicker)

With fd

.AllowMultiSelect = False

.InitialFileName = Application.ActiveWorkbook.path & "\"

.Filters.Clear

.Filters.Add "Excel 2007", "*.xlsx"

.Filters.Add "All Files", "*.*"

If .Show = True Then

SelectedFile = .SelectedItems(1)

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 297


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

End If

End With

End Sub

Kết quả:

17. Mảng (Array) trong VBA

Nội dung bài học:

 Khai báo mảng trong VBA


 Gán giá trị cho mảng trong VBA
 Mảng đa chiều trong VBA
 Mảng động trong VBA
 Các phương thức xử lý mảng trong VBA

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 298


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Mảng (Array) trong VBA được sử dụng để lưu trữ nhiều giá trị trong một biến duy nhất tại một thời điểm. Khi
một loạt các giá trị được lưu trữ trong một biến duy nhất, thì nó được gọi là biến mảng.

1. Khai báo mảng trong VBA


Mảng được khai báo giống như một biến kết hợp sử dụng dấu ngoặc đơn.

' Method 1: khai báo mảng không kích thước

Dim arr1()

' Method 2: khai báo mảng có kích thước

Dim arr2(5)

' Method 3: Sử dụng phương thức Array

Dim arr3

arr3 = Array("Java","C++","PHP")

' Method 4: chỉ định rõ kiểu giá trị của mảng

Dim arr4() As String

Các tính chất của mảng trong VBA

 Chỉ số mảng không được âm.


 Chỉ số mảng bắt đầu từ 0 (ZERO).
 Các mảng VBA có thể lưu trữ bất kỳ loại biến nào trong một mảng. Do đó, một mảng có thể lưu trữ một
số nguyên, chuỗi hoặc các ký tự trong một biến mảng.

2. Gán giá trị cho mảng


Các giá trị được gán cho mảng bằng cách chỉ định một giá trị chỉ số mảng với mỗi một giá trị được gán.

 TH không chỉ định rõ kiểu giá trị của mảng khi khai báo thì mảng có thể lưu giá trị bất kỳ.
 TH chỉ định rõ kiểu giá trị của mảng khi khai báo thì mảng chỉ có thể lưu kiểu giá trị đó.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 299


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Ví dụ

Sub arrayExample1()

Dim i As Integer

Dim arr(5) ' Khai bao mang

arr(0) = "1" ' String

arr(1) = "VBScript" ' String

arr(2) = 100 ' Number

arr(3) = 2.45 ' Decimal Number

arr(4) = #10/7/2013# ' Date

arr(5) = #12:45:00 PM# ' Time

' duyet cac phan tu cua mang

For i = 0 To UBound(arr)

MsgBox ("Gia tri duoc luu trong Array co index " & i & ": " & arr(i))

Next i

End Sub

Kết quả:

Gia tri duoc luu trong Array co index 0: 1


Gia tri duoc luu trong Array co index 1: VBScript
Gia tri duoc luu trong Array co index 2: 100
Gia tri duoc luu trong Array co index 3: 2.45
Gia tri duoc luu trong Array co index 4: 7/10/2013
Gia tri duoc luu trong Array co index 5: 12:45:00 PM

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 300


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
3. Mảng đa chiều trong VBA
Mảng trong VBA không chỉ giới hạn trong một chiều, mà chúng có thể có tối đa 60 chiều. Các mảng hai chiều là
những mảng được sử dụng phổ biến nhất.

Ví dụ

Sub arrayExample2()

Dim arr(2, 3) As Variant ' mang arr co 3 hang va 4 cot

arr(0, 0) = "Apple"

arr(0, 1) = "Orange"

arr(0, 2) = "Grapes"

arr(0, 3) = "pineapple"

arr(1, 0) = "cucumber"

arr(1, 1) = "beans"

arr(1, 2) = "carrot"

arr(1, 3) = "tomato"

arr(2, 0) = "potato"

arr(2, 1) = "sandwitch"

arr(2, 2) = "coffee"

arr(2, 3) = "nuts"

MsgBox ("Gia tri duoc luu trong Array co index 0,1: " & arr(0, 1))

MsgBox ("Gia tri duoc luu trong Array co index 2,2: " & arr(2, 2))

End Sub

Kết quả:
Gia tri duoc luu trong Array co index 0,1: Orange

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 301


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Gia tri duoc luu trong Array co index 2,2: coffee

4. Mảng động trong VBA


Từ khóa ReDim được sử dụng để khai báo mảng động trong VBA và phân bổ hoặc tái phân bổ không gian lưu trữ.
Cú pháp
ReDim [Preserve] arrayName(new_size)

Trong đó:
Preserve: Một tham số tùy chọn, được sử dụng để bảo toàn dữ liệu trong một mảng hiện có khi bạn thay đổi kích
thước của mảng.
arrayName: Một tham số bắt buộc, là tên của biến mảng.
new_size : Một tham số bắt buộc, cho biết kích thước của mảng.

Ví dụ
Trong ví dụ sau, một mảng đã được định nghĩa lại và các giá trị được bảo toàn khi kích thước hiện tại của mảng
được thay đổi.
Sub arrayExample3()

Dim a() As Variant

Dim i As Integer

ReDim a(5)

a(0) = "XYZ"

a(1) = 41.25

a(2) = 22

ReDim Preserve a(7)

For i = 3 To 7

a(i) = i

Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 302


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

'hien thi cac phan tu cua mang a

For i = 0 To UBound(a)

MsgBox a(i)

Next

End Sub

Kết quả:

XYZ
41.25
22
3
4
5
6
7
Lưu ý: Khi thay đổi kích thước mảng nhỏ hơn ban đầu, dữ liệu trong các phần tử đã loại bỏ sẽ bị mất.

5. Các phương thức xử lý mảng trong VBA


Có nhiều phương thức có sẵn trong VBA giúp các nhà phát triển xử lý các mảng một cách hiệu quả. Tất cả các
phương thức được sử dụng kết hợp với các mảng được liệt kê dưới đây. Xem chi tiết bằng cách click vào tên của
phương thức.
No. Mô tả chức năng

1 LBound

Trả về một số nguyên tương ứng với chỉ số nhỏ nhất của mảng đã cho.

2 UBound
Trả về một số nguyên tương ứng với chỉ số lớn nhất của mảng đã cho.

3 Split
Trả về một mảng chứa một số giá trị nhất định. Split dựa trên một dấu phân cách.

4 Join

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 303


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Trả về một chuỗi có chứa một số lượng quy định của chuỗi con trong một mảng. Đây là một chức năng đối
lập với phương thức Split.

5 Filter
Ttrả về một mảng chứa một tập hợp con của một mảng chuỗi đã cho dựa trên một tiêu chí lọc cụ thể.

6 IsArray
Trả về một giá trị boolean cho biết biến đầu vào có là mảng hay không.

7 Erase
Được sử dụng để giải phóng bộ nhớ được phân bổ cho các biến mảng.

Phương thức LBound


LBound trả về chỉ số nhỏ nhất của mảng được chỉ định. Do đó, LBound của mảng là ZERO.
Cú pháp
LBound(ArrayName[,dimension])

Trong đó:
ArrayName: Một tham số bắt buộc. Tham số này tương ứng với tên của mảng.
dimension: Một tham số tùy chọn. Nếu nó là ‘1’, thì nó sẽ trả về giới hạn dưới của kích thước thứ nhất; nếu nó là
‘2’, thì nó sẽ trả về giới hạn dưới của thứ hai, vv.

Ví dụ
Sub LBoundArrayExample()

Dim arr(5) As Variant

arr(0) = "1" ' String

arr(1) = "VBScript" ' String

arr(2) = 100 ' Number

arr(3) = 2.45 ' Decimal Number

arr(4) = #10/7/2013# ' Date

arr(5) = #12:45:00 PM# ' Time

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 304


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

MsgBox ("Chi so nho nhat cu mang arr la: " & LBound(arr))

' TH mang da chieu:

Dim arr2(3, 2) As Variant

MsgBox ("Chi so nho nhat cua chieu dau tien cua mang arr2 la: " & _

LBound(arr2, 1))

MsgBox ("Chi so nho nhat cua chieu thu hai cua mang arr2 la: " & _

LBound(arr2, 2))

End Sub

Kết quả:

Chi so nho nhat cu mang arr la: 0


Chi so nho nhat cua chieu dau tien cua mang arr2 la: 0
Chi so nho nhat cua chieu thu hai cua mang arr2 la: 0

Phương thức UBound


LBound trả về chỉ số lớn nhất của mảng được chỉ định. Do đó, giá trị này tương ứng với kích thước của mảng.
Cú pháp
UBound(ArrayName[,dimension])

Trong đó:
ArrayName: Một tham số bắt buộc. Tham số này tương ứng với tên của mảng.
dimension: Một tham số tùy chọn. Nếu nó là ‘1’, thì nó sẽ trả về giới hạn dưới của kích thước thứ nhất; nếu nó là
‘2’, thì nó sẽ trả về giới hạn dưới của thứ hai, vv.

Ví dụ
Sub UBoundArrayExample()

Dim arr(5) As Variant

arr(0) = "1" ' String

arr(1) = "VBScript" ' String

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 305


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

arr(2) = 100 ' Number

arr(3) = 2.45 ' Decimal Number

arr(4) = #10/7/2013# ' Date

arr(5) = #12:45:00 PM# ' Time

MsgBox ("Chi so nho nhat cu mang arr la: " & UBound(arr))

' For MultiDimension Arrays :

Dim arr2(3, 2) As Variant

MsgBox ("Chi so nho nhat cua chieu dau tien cua mang arr2 la: " & _

UBound(arr2, 1))

MsgBox ("Chi so nho nhat cua chieu thu hai cua mang arr2 la: " & _

UBound(arr2, 2))

End Sub

Kết quả:

Chi so nho nhat cu mang arr la: 5


Chi so nho nhat cua chieu dau tien cua mang arr2 la: 3
Chi so nho nhat cua chieu thu hai cua mang arr2 la: 2

Phương thức Split


Phương thức Split trả về một mảng có chứa một số giá trị cụ thể được phân chia dựa trên dấu phân cách.
Cú pháp
Split(expression[,delimiter[,count[,compare]]])

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 306


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Trong đó:
Expression: Một tham số bắt buộc. Biểu thức chuỗi có thể chứa chuỗi với các dấu phân cách.
Delimiter: Một tham số tùy chọn. Tham số được sử dụng để chuyển đổi thành các mảng dựa trên dấu phân cách.
Count: Một tham số tùy chọn. Số lượng các chuỗi con được trả về, và nếu được chỉ định là -1, thì tất cả các chuỗi
con được trả về.
Compare: Một tham số tùy chọn. Tham số này xác định phương thức so sánh nào sẽ được sử dụng.

 0 = vbBinaryCompare: Thực hiện phép so sánh nhị phân.


 1 = vbTextCompare – Thực hiện so sánh văn bản.

Ví dụ

Sub SplitArrayExample()

Dim a As Variant

Dim b As Variant

' phan tach chuoi thanh mang dua tren dau phan cach '$'

a = Split("Red $ Blue $ Yellow", "$")

b = UBound(a)

For i = 0 To b

MsgBox ("Gia tri trong mang co index " & i & " la:" & a(i))

Next

End Sub

Kết quả:

Gia tri trong mang co index 0 la:Red


Gia tri trong mang co index 0 la: Blue
Gia tri trong mang co index 0 la: Yellow

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 307


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phương thức Join


Phương thức Join trả về một chuỗi có chứa một số lượng quy định của chuỗi con trong một mảng. Đây là một chức
năng đối lập với phương thức Split.
Cú pháp
Join(ArrayName[,delimiter])

Trong đó:
ArrayName: Một tham số bắt buộc. Một mảng có chứa các chuỗi con được nối.
Delimiter: Một tham số tùy chọn. Tham số được sử dụng để chuyển đổi thành các mảng dựa trên dấu phân cách.

Ví dụ
Sub JoinArrayExample()

Dim a

Dim b As String

' Join su dung dau phan cach space

a = Array("Red", "Blue", "Yellow")

b = Join(a)

MsgBox ("Ket qua join khong su dung dau phan cach: b = " & b)

' Join su dung dau phan cach $

b = Join(a, "$")

MsgBox ("Ket qua join su dung dau phan cach '$': b = " & b)

End Sub

Kết quả:

Ket qua join khong su dung dau phan cach: b = Red Blue Yellow
Ket qua join su dung dau phan cach '$': b = Red$Blue$Yellow

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 308


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phương thức Filter


Phương thức Filter trả về một mảng chứa một tập hợp con của một mảng chuỗi đã cho dựa trên một tiêu chí lọc cụ
thể.
Cú pháp
Filter(inputstrings,value[,include[,compare]])

Trong đó:
inputstrings: Một tham số bắt buộc. Tham số này tương ứng với mảng các chuỗi được tìm kiếm.
value: Một tham số bắt buộc. ham số này tương ứng với chuỗi để tìm kiếm đối với tham số đầu vào.
include: Một tham số tùy chọn. Đây là một giá trị Boolean, cho biết có trả lại các chuỗi con bao gồm hay loại trừ.
compare: Một tham số tùy chọn. Tham số này xác định phương thức so sánh nào sẽ được sử dụng.

 0 = vbBinaryCompare: Thực hiện phép so sánh nhị phân.


 1 = vbTextCompare – Thực hiện so sánh văn bản.

Ví dụ

Sub FilterArrayExample()

Dim a, b, c, d As Variant

a = Array("Red", "Blue", "Yellow")

b = Filter(a, "B")

c = Filter(a, "e")

d = Filter(a, "Y")

For Each x In b

MsgBox ("Ket qua Filter 1: " & x)

Next

For Each y In c

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 309


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

MsgBox ("Ket qua Filter 2: " & y)

Next

For Each z In d

MsgBox ("Ket qua Filter 3: " & z)

Next

End Sub

Kết quả:

Ket qua Filter 1: Blue


Ket qua Filter 2: Red
Ket qua Filter 2: Blue
Ket qua Filter 2: Yellow
Ket qua Filter 3: Yellow

Phương thức IsArray


Phương thức IsArray trả về một giá trị boolean cho biết biến đầu vào có là mảng hay không.
Cú pháp
IsArray(ArrayName)

Trong đó:
ArrayName: Một tham số bắt buộc. Tham số này tương ứng với tên của mảng.

Ví dụ
Sub IsArrayExample()

Dim a, b As Variant

a = Array("Red", "Blue", "Yellow")

b = "12345"

MsgBox ("a la mot mang: " & IsArray(a))

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 310


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

MsgBox ("b la mot mang: " & IsArray(b))

End Sub

Kết quả:

a la mot mang: True


b la mot mang: False

Phương thức Erase


Phương thức Erase được sử dụng để đặt lại các giá trị của các mảng kích thước cố định và giải phóng bộ nhớ của
mảng động. Nó hoạt động tùy thuộc vào loại mảng.
Cú pháp
Erase ArrayName

Trong đó:
ArrayName: Một tham số bắt buộc. Tham số này tương ứng với tên của mảng.

Ví dụ

Sub EraseArrayExample()

Dim numArray(3)

numArray(0) = "VBScript"

numArray(1) = 1.05

numArray(2) = 25

numArray(3) = #4/23/2013#

Dim dynamicArray()

ReDim dynamicArray(9) ' phan bo khong gian luu tru.

Erase numArray ' cac phan tu duoc khoi tao.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 311


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Erase dynamicArray ' giai phong bo nho duoc su dung boi array.

' tat ca cac gia tri da bi xoa

MsgBox ("Gia tri thu nhat cua NumArray la: " & numArray(0))

MsgBox ("Gia tri thu hai cua NumArray la: " & numArray(1))

MsgBox ("Gia tri thu ba cua NumArray la: " & numArray(2))

MsgBox ("Gia tri thu tu cua NumArray la: " & numArray(3))

End Sub

Kết quả:

Gia tri thu nhat cua NumArray la:


Gia tri thu hai cua NumArray la:
Gia tri thu ba cua NumArray la:
Gia tri thu bon cua NumArray la:

18. Collection trong VBA

Nội dung bài học:

 Add reference “Microsoft Scripting Runtime” (* bắt buộc).


 Hướng dẫn nhanh về việc sử dụng Collection trong VBA.
 Ví dụ về Collection trong VBA.
 Phương thức Add trong Collection.
 Ưu/Nhược điểm của Collection trong VBA.

Collection trong VBA được sử dụng để lưu trữ một nhóm các giá trị. Collection có thể lưu trữ một tập
các hạng mục tương tự, ví dụ như một danh sách tên của các sinh viên hoặc tên quốc gia. Sử dụng một
collection hoặc array cho phép bạn nhanh chóng và dễ dàng thao tác một số lượng lớn các hạng mục.

1. Add reference “Microsoft Scripting Runtime”


Trước tiên, để sử dụng Collection trong VBA, bạn cần phải add reference “Microsoft Scripting Runtime”,
các bước thực hiện như sau:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 312


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

 1. Mở VB Editor(Alt + F11).
 2. Tools –> References…
 3. Chọn “Microsoft Scripting Runtime”.

 4. Click OK.

2. Hướng dẫn nhanh về việc sử dụng Collection


Dưới đây là bảng hướng dẫn sử dụng nhanh collection trong VBA.

Task Examples

Khai báo Dim coll As Collection

Khởi tạo lúc run time Set coll = New Collection

Khai báo và khởi tạo Dim coll As New Collection

Add phần tử vào Collection coll.Add “Apple”

Truy cập phần tử coll(1) hoặc coll(2)

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 313


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Task Examples

Truy cập phần tử đầu tiên coll(1)

Truy cập phần tử cuối cùng coll(coll.Count)

Get số lượng phần tử coll.Count

Truy cập tất cả các phần tử (For) Dim i As Long


For i = 1 To coll.Count
Debug. coll(i)
Next i

Truy cập tất cả các phần tử (For Each) Dim fruit As Variant
For Each fruit In coll
Debug. fruit
Next fruit

Remove phần tử coll.Remove(1)

Remove tất cả các phần tử Set coll = Nothing


(Dim coll As New Collection) coll.Add “Apple”

Remove tất cả các phần tử Set coll = Nothing


(Dim coll As Collection Set coll = New Collection
Set coll = New Collection) coll.Add “Apple”

Note: phần tử đầu tiên của mảng trong VBA có chỉ số là 0. Nhưng phần tử đầu tiên của collection trong VBA có chỉ số
là 1.

3. Ví dụ về Collection trong VBA


Ví dụ 1:

Sub collectionExample1()

Dim i As Integer

' khai bao collection fruitColl

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 314


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Dim fruitColl As Collection

' khoi tao coll

Set fruitColl = New Collection

' Add cac phan tu vao coll

fruitColl.Add "Apple"

fruitColl.Add "Mango"

fruitColl.Add "Lemon"

fruitColl.Add "Coconut"

' phan tu dau tien

MsgBox "Phan tu dau tien: " & fruitColl(1)

' phan tu cuoi cung

MsgBox "Phan tu cuoi cung: " & fruitColl(fruitColl.Count)

' truy cap cac phan tu (For)

For i = 1 To fruitColl.Count

MsgBox "Phan tu " & i & ": " & fruitColl(i)

Next i

' xoa phan tu dau tien

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 315


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

fruitColl.Remove (1)

MsgBox "So phan tu con lai: " & fruitColl.Count

' xoa tat ca phan tu

Set fruitColl = Nothing

' fruitColl.Add "Apple" ' error vi fruitColl da bi xoa

End Sub

Kết quả:

Phan tu dau tien: Apple


Phan tu cuoi cung: Coconut
Phan tu 1: Apple
Phan tu 2: Mango
Phan tu 3: Lemon
Phan tu 4: Coconut
So phan tu con lai: 3

4. Phương thức Add trong Collection


Phương thức Add được sử dụng để thêm mới phần tử vào collection.

Cú pháp:

Add (Item, [Key], [Before], [After])

Trong đó:

 Item: Một tham số bắt buộc, là giá trị của hạng mục.
 Key: Một tham số tùy chọn, là key của hạng mục.
 Before: Một tham số tùy chọn, lưu hạng mục tại vị trí trước vị trí chỉ định.
 After: Một tham số tùy chọn, lưu hạng mục tại vị trí sau vị trí chỉ định.

Ngoài việc lưu trữ bằng việc đánh chỉ số tự động, VBA cho phép bạn lưu trữ phần tử của collection với
một Key. Hãy xem ví dụ dưới đây để hiểu về vấn đề này:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 316


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sub collectionExample2()

Dim i As Integer

Dim fruitColl As New Collection

' add phan tu vao fruitColl

fruitColl.Add Item:="Apple", Key:="A"

fruitColl.Add Item:="Coconut", Key:="C", Before:=1

fruitColl.Add Item:="Orange", Key:="O", After:="C"

' hien thi cac phan tu theo index

MsgBox "phan tu so 1: " & fruitColl(1)

MsgBox "phan tu so 2: " & fruitColl(2)

MsgBox "phan tu so 3: " & fruitColl(3)

' hien thi cac phan tu theo key

MsgBox "phan tu ""a"": " & fruitColl("a")

MsgBox "phan tu ""C"": " & fruitColl("C")

MsgBox "phan tu ""O"": " & fruitColl("O")

' hien thi cac phan tu bang phuong thuc Item() theo index

MsgBox "phan tu Item(1): " & fruitColl.Item(1)

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 317


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

MsgBox "phan tu Item(2): " & fruitColl.Item(2)

MsgBox "phan tu Item(3): " & fruitColl.Item(3)

' xoa collection

Set fruitColl = Nothing

End Sub

Kết quả:

phan tu so 1: Coconut
phan tu so 2: Orange
phan tu so 3: Apple
phan tu "a": Apple
phan tu "C": Coconut
phan tu "O": Orange
phan tu Item(1): Coconut
phan tu Item(2): Orange
phan tu Item(3): Apple
Note: Key trong collection không phân biệt hoa thường.

5. Ưu/Nhược điểm của Collection trong VBA


Ưu điểm
Dễ sử dụng, không cần phải khai báo kích thước trước khi sử dụng.

Nhược điểm
Collection chỉ đọc. Có nghĩa là bạn có thể thêm hoặc xóa một phần tử nhưng bạn không thể thay đổi giá
trị của phần tử đó. Nếu bạn muốn thay đổi các giá trị trong một nhóm các giá trị thì bạn cần phải sử dụng
một mảng.

19. Dictionary trong VBA

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 318


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Nội dung bài học:

 Add reference “Microsoft Scripting Runtime” (* bắt buộc).


 Hướng dẫn nhanh về việc sử dụng Dictionary trong VBA.
 Ví dụ về Dictionary trong VBA.

Trong VBA, chúng ta có thể sử dụng Array hoặc Collection để lưu trữ các nhóm của các giá trị. Ví dụ,
chúng ta có thể sử dụng chúng để lưu trữ danh sách tên khách hàng, điểm của sinh viên, hoặc danh sách
giá trị từ các cell trong một cột.

Dictionary trong VBA lưu trữ dữ liệu dưới dạng cặp key và value, các key không được trùng nhau.
Dictionary được sinh ra để lấp đầy 2 khuyết điểm chính của Collection, với Dictionary chúng ta có thể:

1. Kiểm tra Key đã tồn tại chưa.


2. Có thể thay đổi giá trị của phần tử.

1. Add reference “Microsoft Scripting Runtime” (* bắt buộc).


Trước tiên, để sử dụng Dictionary trong VBA, bạn cần phải add reference “Microsoft Scripting Runtime”,
các bước thực hiện giống như trong bài Collection trong VBA.

2. Hướng dẫn nhanh về việc sử dụng Dictionary trong VBA.


Hàm VLookup trong Excel hoạt động tương tự như một Dictionary. Bạn có thể tra một giá trị dựa trên
một key duy nhất.

Dưới đây là bảng hướng dẫn sử dụng nhanh collection trong VBA.

Task Example

Khai báo và khởi tạo (early Dim dict As Scripting.Dictionary


binding) Set dict = New Scripting.Dictionary

Khai báo và khởi tạo (late binding) Dim dict As Object


Set dict = CreateObject(“Scripting.Dictionary”)

Add phần tử mới dict.Add Key, Value


e.g. dict.Add “Apples”, 50

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 319


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Task Example

Chay đổi giá trị của một key. Tự dict(Key) = Value


động thêm mới nếu key chưa tồn e.g. dict(“Oranges”) = 60
tại

Lấy ra một giá trị từ dictionary Value = dict(Key)


bằng việc sử dụng key e.g. appleCount = dict(“Apples”)

Check key tồn tại dict.Exists(Key)


e.g. If dict.Exists(“Apples”) Then

Remove phần tử dict.Remove Key


e.g. dict.Remove “Apples”

Remove tất cả các phần tử dict.RemoveAll

Duyệt các phần tử (For Each) Dim key As Variant


For Each key In dict.Keys
Debug. key, dict(key)
Next key

Duyệt các phần tử (for loop – chỉ Dim i As Long


TH early binding) For i = 0 To dict.Count – 1
Debug. dict.Keys(i), dict.Items(i)
Next i

Lấy số phần tử của dict dict.Count

Thiết lập key phân biệt hoa thường dict.CompareMode = vbBinaryCompare


(dictionary phải là empty).

Thiết lập key không phân biệt hoa dict.CompareMode = vbTextCompare


thường (dictionary phải là empty).

3. Ví dụ về Dictionary trong VBA.


Dưới đây là ví dụ tra từ điển các loại quả trong tiếng anh bằng việc sử dụng đối tượng Dictionary.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 320


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sub dictionaryExample1()

' khoi tao dictionary dict

Dim dict As New Scripting.Dictionary

' thiet lap key khong phan biet hoa thuong

dict.CompareMode = vbTextCompare

' add phan tu vao dict

dict.Add Key:="Apple", Item:="Qua Tao"

dict.Add Key:="Peach", Item:="Qua Dao"

dict.Add Key:="Plum", Item:="Qua Man"

dict.Add Key:="Orange", Item:="Qua Cam"

dict.Add Key:="Lemon", Item:="Qua Chanh"

dict.Add Key:="Cucumber", Item:="Qua Dua Chuot"

Dim sFruit As String

' Ask user to enter fruit

sFruit = InputBox("Enter fruit: ")

' check fruit ma nguoi dung nhap trong dict

If dict.Exists(sFruit) Then

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 321


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

MsgBox sFruit & " nghia la " & dict(sFruit)

Else

MsgBox sFruit & " khong ton tai."

End If

' xoa dict de giai phong bo nho

Set dict = Nothing

End Sub

Kết quả:

Nhập “lemon” -> click OK.

20. Debug trong Excel VBA

Với Debug trong Excel VBA chúng ta có thể tạm ngưng (pause) chương trình để xem giá trị của các biến
từ đó biết được luồng chạy của chương trình, thậm chí là thay đổi giá trị của các biến. Đặc biệt Debug
được sử dụng để tìm kiếm bug – một việc quan trọng trong phát triển phần mềm.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 322


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Các khái niệm trong Debug


Breakpoint – là điểm tạm ngưng chương trình.

Làm thế nào để debug


Trong VBA không phân biết chế độ Debug và chế độ Run, có nghĩa để Debug thì bạn chỉ cần tạo các
Breakpoint rồi run bình thường.

Để tạo Breakpoint, bạn phải thực hiện theo các thao tác sau:

 Mở màn hình VBA editor (Ctrl + F11).


 Click vào thanh nề trái (hoặc F9) để Add/Remove Breakpoint.

Ví dụ:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 323


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Run chương trình (F5, hoặc click vào button mà bạn assign), chương trình sẽ dừng lại tại các Breakpoint,
tiếp theo bạn nên dùng các phím tắt để Debug.

Các phím tắt để Debug


Dưới đây là các phím tắt để Debug trong Excel VBA:

 F9: Add/Remove Breakpoint.


 F5: nhảy đến breakpoint tiếp theo.
 F8: nhảy đến câu lệnh tiếp tiếp.
 Ctrl + F8: nhảy đến câu lệnh tiếp theo hoặc vị trí con trỏ chuột.
 Shift + F8: thoát ra khởi hàm hoặc nhảy đến câu lệnh tiếp theo.
 Ctrl + Shift + F8: nhảy đến Breakpoint tiếp theo.
 Ctrl + W: chỉnh sửa chế độ xem giá trị của biến.

Ví dụ Debug trong Excel VBA


Sử dụng ví dụ trong bài Dictionary trong VBA để Debug.

Add các Breakpoint.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 324


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Run chương trình.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 325


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Nhấn F5 -> nhấn F5 -> Nhập giá trị “lemon” -> click OK.

Xem giá trị của biến sFruit: chọn biến sFruit -> click phải chuột -> chọn Add Watch.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 326


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình Add Watch.

Đến đây là Breakpoint cuối cùng, nhấn F5 để kết thúc chương trình.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 327


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

21. Xử lý lỗi trong VBA

1. Các loại lỗi


Có ba loại lỗi trong lập trình:

 Lỗi cú pháp.
 Lỗi runtime.
 Lỗi Logic.

Lỗi cú pháp
Các lỗi cú pháp, còn gọi là lỗi phân tích cú pháp, xuất hiện tại thời điểm biên dịch code. Ví dụ, dòng sau gây ra một
lỗi cú pháp bởi vì nó thiếu một dấu đóng ngoặc ở dòng 4.

Sub ErrorHanlding_Demo1()

Dim str As String

str = "Hello!"

y = Ucase(str

End Sub

Lỗi runtime
Các lỗi runtime, còn được gọi là lỗi ngoại lệ, xảy ra trong quá trình thực thi.

Ví dụ, dòng sau gây ra lỗi runtime vì ở đây cú pháp là chính xác nhưng khi chạy nó đang cố gọi hàm fnmultiply,
nhưng hàm này không tồn tại.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 328


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sub ErrorHanlding_Demo2()

Dim x As Integer

Dim y As Integer

x = fnadd(10, 20)

y = fnmultiply(10, 20)

End Sub

Function fnadd(x,y)

fnadd = x + y

End Function

Lỗi Logic
Lỗi logic có thể là loại lỗi khó khăn nhất để theo dõi. Những lỗi này không phải là kết quả của lỗi cú pháp hoặc lỗi
runtime. Thay vào đó, chúng xuất hiện khi bạn mắc lỗi trong logic khiến cho đầu ra của chương trình không nhận
được kết quả mong đợi.

Ví dụ, chia một số cho số không hoặc một tập lệnh được thực thi trong vòng lặp vô hạn.

Xử lý lỗi trong VBA


Xử lý lỗi cú pháp
Trình VBA Editor trong Excel hỗ trợ xử lý lỗi cú pháp, khi biên dịch trình Editor sẽ chỉ cho bạn vị trí của những lỗi
cú pháp.

Để phát hiện ra nhiều lỗi khi biên dịch hay nói cách khác là hạn chế lỗi khi runtime bạn nên:

 Khai báo biến với kiểu dữ liệu (vì VBA không yêu cầu bạn phải khai báo biến).
 Khai báo Option Explicit trình Editor bắt những lỗi cú pháp, biến không được định nghĩa và nhiều hơn
thế nữa.

Ví dụ: ví dụ sau trình Editor sẽ báo lỗi biên dịch “Variable not defined” ở dòng số 6 cho bạn.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 329


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Option Explicit

Sub ErrorHanlding_Demo1()

Dim str As String

str = "Hello!"

y = UCase(str)

End Sub

Xử lý lỗi runtime
Bất kỳ lỗi runtime nào xảy ra đều gây hiện tượng dừng đột ngột. Bạn có thể sử dụng câu lệnh On Error để bắt các
lỗi runtime trong VBA với cú pháp như sau:

On Error { GoTo [ line | 0 | -1 ] | Resume Next }

No. Từ khóa & Mô tả

1 GoTo line

Cho phép xử lý lỗi bắt đầu ở dòng được chỉ định. Dòng được chỉ định phải ở trong cùng một thủ tục với
câu lệnh On Error.

2 GoTo 0

Vô hiệu hoá xử lý lỗi đã kích hoạt trong thủ tục hiện tại và đặt lại nó thành Nothing.

3 GoTo -1

Vô hiệu hóa ngoại lệ được bật trong thủ tục hiện tại và đặt lại nó thành Nothing.

4 Resume Next

Chỉ định rằng khi xảy ra lỗi runtime, điều khiển sẽ đi đến câu lệnh ngay sau câu lệnh nơi xảy ra lỗi và việc
thực hiện vẫn tiếp tục từ thời điểm đó.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 330


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Đối tượng Err
Đối tượng này được sử dụng để lấy ra thông tin lỗi, ví dụ Err.Number cung cấp mã số lỗi và Err.Description cung
cấp cho các mô tả lỗi.

Ví dụ xử lý lỗi trong VBA


Ví dụ cho một bảng tính, tính căn bậc hai của các giá trị của cell A1 đến A5 và điền vào cell B1 đến B5 tương ứng.

Option Explicit

Public Const COL_A = "A"

Public Const COL_B = "B"

Sub ErrorHanlding_Demo()

Dim i As Integer

On Error GoTo InvalidValue:

For i = 1 To 5

Cells(i, COL_B).Value = Sqr(Cells(i, COL_A).Value)

Next i

Exit Sub

InvalidValue:

MsgBox "Error: " & Err.number & " : " & Err.Description

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 331


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Resume Next

End Sub

Kết quả:

Click Square Root button: có 2 lỗi được bắt và show ra như sau:

Lỗi 1: không thể tính căn bậc hai của số âm.

Lỗi 2: kiểu dữ liệu không phù hợp.

Kết quả tính căn bậc hai:

22. Truyền tham chiếu và giá trị trong VBA

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 332


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Một điều khá quan trọng trong VBA đó là truyền tham chiếu và giá trị vào một Sub hoặc Function.

Từ khóa ByRef được sử dụng để truyền tham chiếu và từ khóa ByVal được sử dụng để truyền giá trị. Trong
trường hợp bạn không sử dụng từ khóa nào thì đó là trường hợp truyền giá trị.

Truyền tham chiếu là truyền địa chỉ ô nhớ của biến, do đó khi thay đổi giá trị của biến bên trong thủ tục thì giá trị
của biến cũng bị thay đổi bên ngoài thủ tục.

Truyền giá trị là truyền giá trị của biến (không phải là địa chỉ ô nhớ), thủ tục sẽ tự động tạo ra một địa chỉ ô nhớ
mới để lưu trữ giá trị này, do đó khi thay đổi giá trị của biến truyền vào thủ tục thì giá trị của biến không bị thay
đổi bên ngoài thủ tục.

Ví dụ truyền tham chiếu và giá trị


Dưới đây là ví dụ truyền tham chiếu và giá trị trong VBA.

Sub PassTypeExample()

Dim test As Integer

test = 50

Call PassByValue(test)

' hien thi 50

MsgBox "test = " & test

Call PassByReference(test)

' hien thi 100

MsgBox "test = " & test

Call PassByReference(test)

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 333


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

' hien thi 100

MsgBox "test = " & test

End Sub

Sub PassByValue(ByVal test As Integer)

' value chi bi thay doi ben trong thu tuc

test = 100

End Sub

Sub PassByReference(ByRef test As Integer)

' value cung bi thay doi ben ngoai thu tuc

test = 100

End Sub

Sub PassByValue2(test As Integer)

' value chi bi thay doi ben trong thu tuc

test = 200

End Sub

Kết quả:

test = 50
test = 100
test = 100

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 334


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

23. Mệnh đề if-else trong VBA

Mệnh đề if-else trong VBA được sử dụng để kiểm tra giá trị dạng boolean của điều kiện. Mệnh đề này
trả về giá trị True hoặc False. Có các kiểu của mệnh đề if-else trong java như sau:

 Mệnh đề if
 Mệnh đề if-else
 Mệnh đề if-elseif-else
 Mệnh đề if lồng nhau

1. Mệnh đề if
Mệnh đề if được sử dụng để kiểm tra giá trị dạng boolean của điều kiện. Khối lệnh sau if được thực thi
nếu giá trị của điều kiện là True

Cú pháp:

If (condition) Then

' statement

End If

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 335


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ví dụ:

Sub viduIf()

Dim age As Integer

age = 20

If (age >= 18) Then

MsgBox "Du tuoi lao dong."

End If

End Sub

Kết quả:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 336


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

2. Mệnh đề if-else
Mệnh đề if-else cũng kiểm tra giá trị dạng boolean của điều kiện. Nếu giá trị điều kiện là True thì chỉ có
khối lệnh sau if sẽ được thực hiện, nếu là False thì chỉ có khối lệnh sau else được thực hiện.

Cú pháp:

If (condition) Then

' khối lệnh này được thực thi

' nếu condition là true

Else

' khối lệnh này được thực thi

' nếu condition = false

End If

Ví dụ:

Sub viduIfElse1()

Dim number As Integer

number = 13

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 337


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

If (number Mod 2 = 0) Then

MsgBox "number " & number & " la so chan."

Else

MsgBox "number " & number & " la so le."

End If

End Sub

Kết quả:

3. Mệnh đề if-elseif-else
Mệnh đề if-elseif-else cũng kiểm tra giá trị dạng boolean của điều kiện. Nếu giá trị điều kiện if là True thì
chỉ có khối lệnh sau if sẽ được thực hiện. Nếu giá trị điều kiện ifelse nào là True thì chỉ có khối lệnh sau
elseif đó sẽ được thực hiện… Nếu tất cả điều kiện của if và elseif là False thì chỉ có khối lệnh sau else sẽ
được thực hiện.

Cú pháp:

If (condition1) Then

' khối lệnh này được thực thi

' nếu condition1 là true

ElseIf (condition2) Then

' khối lệnh này được thực thi

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 338


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

' nếu condition2 là true

ElseIf (condition3) Then

' khối lệnh này được thực thi

' nếu condition3 là true

...

Else

' khối lệnh này được thực thi

' nếu tất cả những điều kiện trên là false

End If

Ví dụ:

Sub viduIfElse2()

Dim marks As Integer

marks = 75

If (marks < 50) Then

MsgBox "Tach!"

ElseIf (marks >= 80 And marks < 90) Then

MsgBox "Xep loai B"

ElseIf (marks >= 90 And marks < 100) Then

MsgBox "xep loai A"

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 339


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Else

MsgBox "Xep loai TB"

End If

End Sub

Kết quả:

4. Mệnh đề if lồng nhau


Một câu lệnh If hoặc ElseIf bên trong câu lệnh If hoặc ElseIf khác được biết đến như là mệnh đề if lồng
nhau. Các câu lệnh if bên trong được thực thi dựa trên các câu lệnh if bên ngoài.

Ví dụ:

Sub viduNestedIf()

Dim a As Integer

a = 23

If a > 0 Then

MsgBox "Number la mot so duong"

If a = 1 Then

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 340


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

MsgBox "Number = 1"

ElseIf a = 2 Then

MsgBox "Number = 2"

ElseIf a = 3 Then

MsgBox "Number = 3"

Else

MsgBox "Number khong phai la 0,1,2 hoac 3"

End If

ElseIf a < 0 Then

MsgBox "Number la mot so am"

Else

MsgBox "Number la so 0"

End If

End Sub

Kết quả:

Click OK.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 341


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

24. Vòng lặp for trong VBA

Vòng lặp for trong VBA được sử dụng để lặp một phần của chương trình nhiều lần. Nếu số lần lặp là cố định thì
vòng lặp for được khuyến khích sử dụng, còn nếu số lần lặp không cố định thì nên sử dụng vòng lặp while hoặc do
while.

Cú pháp
Dưới đây là cú pháp của một vòng lặp for trong VBA.

For counter = start To end [Step stepcount]

[statement 1]

[statement 2]

....

[statement 10]

[Exit For]

[statement 11]

[statement 22]

....

[statement n]

Next

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 342


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Trong đó:

[Step stepcount] là tùy chọn, nó rất hữu ích khi đếm lùi, đếm nhiều đơn vị một vòng lặp. Hãy xem các ví dụ dưới
đây để hiểu các trường hợp sử dụng vòng lặp for trong VBA.

Ví dụ về vòng lặp for trong VBA


Ví dụ 1: Sử dụng từ khóa Step 2 để tăng biến đếm 2 đơn vị sau mỗi vòng lặp.

Sub ForExample1()

Dim i As Integer

For i = 0 To 10 Step 2

MsgBox "Gia tri cua i la: " & i

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 343


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Next

End Sub

Kết quả:

Gia tri cua i la: 0


Gia tri cua i la: 2
Gia tri cua i la: 4
Gia tri cua i la: 6
Gia tri cua i la: 8
Gia tri cua i la: 10
Ví dụ 2: Sử dụng từ khóa Step -2 để giảm biến đếm 2 đơn vị sau mỗi vòng lặp.

Sub ForExample2()

Dim i As Integer

For i = 10 To 0 Step -2

MsgBox "Gia tri cua i la: " & i

Next

End Sub

Kết quả:

Gia tri cua i la: 10


Gia tri cua i la: 8
Gia tri cua i la: 6
Gia tri cua i la: 4
Gia tri cua i la: 2
Gia tri cua i la: 0
Ví dụ 3: không cần sử dụng từ khóa Step, biến đếm i tăng dần từ 1 đến 5.

Sub ForExample3()

Dim i As Integer

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 344


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

For i = 1 To 5

MsgBox "Gia tri cua i la: " & i

Next

End Sub

Kết quả:

Gia tri cua i la: 1


Gia tri cua i la: 2
Gia tri cua i la: 3
Gia tri cua i la: 4
Gia tri cua i la: 5

Ví dụ về thoát vòng lặp for trong VBA


Từ khóa Exit For được sử dụng để thoát vòng lặp for trong VBA.

Ví dụ:

Sub ForExample4()

Dim i As Integer

For i = 0 To 10

If i > 3 Then

Exit For

Else

MsgBox "Gia tri cua i la: " & i

End If

Next

End Sub

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 345


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Kết quả:

Gia tri cua i la: 0


Gia tri cua i la: 1
Gia tri cua i la: 2
Gia tri cua i la: 3
25. Vòng lặp For Each trong VBA

Vòng lặp For Each trong VBA được sử dụng để thực hiện một câu lệnh hoặc một nhóm các câu lệnh cho mỗi phần
tử của một mảng hoặc một collection.

Một vòng lặp For Each tương tự vòng lặp For. Tuy nhiên, vòng lặp For Each được thực hiện cho mỗi phần tử của
một mảng hoặc collection. Do đó, bộ đếm Step sẽ không tồn tại trong loại vòng lặp này.

Cú pháp
Dưới đây là cú pháp của một vòng lặp For Each trong VBA.

For Each element In Group

[statement 1]

[statement 2]

....

[statement 10]

[Exit For]

[statement 11]

[statement 12]

[statement n]

Next

ví dụ về vòng lặp For Each trong VBA

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 346


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sub ForEachExample()

' khai bao mang fruits

fruits = Array("apple", "orange", "mango")

Dim fruitNames As Variant

' duyet mang fruits su dung vong lap For Each.

For Each Item In fruits

fruitNames = fruitNames & Item & vbCrLf

Next

MsgBox fruitNames

End Sub

Kết quả:

apple
orange
mango
26. Vòng lặp While-Wend trong VBA

Vòng lặp While-Wend trong VBA được sử dụng để lặp một phần của chương trình một vài lần. Nếu điều kiện là
True, tất cả các câu lệnh được thực hiện cho đến khi gặp từ khóa Wend. Nếu điều kiện là False, vòng lặp sẽ thoát và
nhảy tới câu lệnh tiếp theo sau từ khoá Wend.

Cú pháp
While (condition)

' Khối lệnh được lặp lại

' cho đến khi condition = False

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 347


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Wend

Ví dụ về vòng lặp While-Wend trong VBA

Sub whileWendExample()

Dim counter As Integer

counter = 10

While counter < 15

MsgBox "Gia tri hien tai cua counter la: " & counter

counter = counter + 1

Wend

End Sub

Kết quả:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 348


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Gia tri hien tai cua counter la: 10
Gia tri hien tai cua counter la: 11
Gia tri hien tai cua counter la: 12
Gia tri hien tai cua counter la: 13
Gia tri hien tai cua counter la: 14
27. Vòng lặp Do-While trong VBA

Vòng lặp Do-While trong VBA được sử dụng để lặp một phần của chương trình một vài lần khi điều kiện là True.
Điều kiện có thể được kiểm tra ở đầu vòng lặp hoặc ở cuối vòng lặp.

Cú pháp: kiểm tra điều kiện ở cuối vòng lặp


Dưới đây là cú pháp của vòng lặp Do-While trong VBA với điều kiện được kiểm tra ở cuối vòng lặp.

TH này Tương tự như vòng lặp While-Wend, ngoại trừ Do-While thực hiện lệnh ít nhất một lần ngay cả khi điều
kiện là False vì nó thực hiện lệnh trước khi kiểm tra điều kiện.

Do

[statement 1]

[statement 2]

...

[statement l]

[Exit Do]

[statement m]

...

[statement n]

Loop While condition

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 349


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ví dụ 1:

Sub doWhileExample1()

Dim counter As Integer

counter = 1

Do

MsgBox "Gia tri hien tai cua counter la: " & counter

counter = counter + 1

Loop While counter < 1

End Sub

Kết quả:

Gia tri hien tai cua counter la: 1

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 350


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Cú pháp: kiểm tra điều kiện ở đầu vòng lặp
Dưới đây là cú pháp của vòng lặp Do-While trong VBA với điều kiện được kiểm tra ở đầu vòng lặp.

Do While condition

[statement 1]

[statement 2]

...

[statement l]

[Exit Do]

[statement m]

...

[statement n]

Loop

Ví dụ 2:

Sub doWhileExample2()

Dim counter As Integer

counter = 1

Do While counter < 5

MsgBox "Gia tri hien tai cua counter la: " & counter

counter = counter + 1

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 351


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Loop

End Sub

Kết quả:

Gia tri hien tai cua counter la: 1


Gia tri hien tai cua counter la: 2
Gia tri hien tai cua counter la: 3
Gia tri hien tai cua counter la: 4
28. Vòng lặp Do-Until trong VBA

Vòng lặp Do-Until trong VBA được sử dụng để lặp một phần của chương trình một vài lần khi điều kiện là False.
Điều kiện có thể được kiểm tra ở đầu vòng lặp hoặc ở cuối vòng lặp.

Cú pháp: kiểm tra điều kiện ở cuối vòng lặp


Dưới đây là cú pháp của vòng lặp Do-Until trong VBA với điều kiện được kiểm tra ở cuối vòng lặp.

TH này Do-Util thực hiện lệnh ít nhất một lần ngay cả khi điều kiện là True vì nó thực hiện lệnh trước khi kiểm
tra điều kiện.

Do

[statement 1]

[statement 2]

...

[statement l]

[Exit Do]

[statement m]

...

[statement n]

Loop Until condition

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 352


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ví dụ 1:

Sub doUntilExample1()

Dim counter As Integer

counter = 1

Do

MsgBox "Gia tri hien tai cua counter la: " & counter

counter = counter + 1

Loop Until counter > 1

End Sub

Kết quả:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 353


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Gia tri hien tai cua counter la: 1

Cú pháp: kiểm tra điều kiện ở đầu vòng lặp


Dưới đây là cú pháp của vòng lặp Do-Until trong VBA với điều kiện được kiểm tra ở đầu vòng lặp.

Do Until condition

[statement 1]

[statement 2]

...

[statement l]

[Exit Do]

[statement m]

...

[statement n]

Loop

Ví dụ 2:

Sub doUntilExample2()

Dim counter As Integer

counter = 1

Do Until counter > 5

MsgBox "Gia tri hien tai cua counter la: " & counter

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 354


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

counter = counter + 1

Loop

End Sub

Kết quả:

Gia tri hien tai cua counter la: 1


Gia tri hien tai cua counter la: 2
Gia tri hien tai cua counter la: 3
Gia tri hien tai cua counter la: 4
Gia tri hien tai cua counter la: 5
29. Mệnh đề Select-Case trong VBA

Mệnh đề Select-Case trong VBA được sử dụng để thực thi 1 hoặc nhiều khối lệnh từ nhiều điều kiện.

Khi một người dùng muốn thực hiện một nhóm các câu lệnh tùy thuộc vào một giá trị của một biểu thức, thì
Select-Case sẽ được sử dụng. Mỗi giá trị được gọi là Case. Câu lệnh Case Else được thực thi nếu biểu thức kiểm tra
không khớp với bất kỳ trường hợp nào được chỉ định bởi người dùng.

Case Else là một câu lệnh tùy chọn trong mệnh đề Select-Case, tuy nhiên, nó là tốt hơn khi luôn luôn có một câu
lệnh Case Else.

Cú pháp mệnh đề Select-Case trong VBA


Dưới đây là cú pháp mệnh đề Select-Case trong VBA:

Select Case expression

Case expressionlist1

statement1

statement2

....

Case expressionlist2

statement1

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 355


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

statement2

....

Case expressionlistn

statement1

statement2

....

Case Else

elsestatement1

elsestatement2

....

End Select

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 356


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ví dụ mệnh đề Select-Case trong VBA


Dưới đây là ví dụ về mệnh đề Select-Case trong VBA:

Sub SelectCaseExample()

Dim myVar As Integer

myVar = 1

Select Case myVar

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 357


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Case 1

MsgBox "So nguyen duong nho nhat."

Case 2

MsgBox "So chan nho nhat."

Case 3

MsgBox "So nguyen to le nho nhat."

Case Else

MsgBox "Khong xac dinh."

End Select

End Sub

Kết quả:

So nguyen duong nho nhat.

30. String trong VBA

String trong VBA (hay chuỗi) là một dãy ký tự, có thể bao gồm các chữ cái, số, ký tự đặc biệt hoặc tất cả chúng.

Ví dụ:

str1 = "string"

str2 = "132.45"

str3 = "!@#$;*"

Str4 = "Asc23@#"

Nối chuỗi trong VBA


Để cộng 2 chuỗi trong VBA, bạn có thể sử dụng toán tử + hoặc &.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 358


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Ví dụ:

Sub StringExample1()

Dim str1 As String

Dim str2 As String

Dim str As String

str1 = "Hello "

str2 = "VBA!"

str = str1 + str2

MsgBox str & " 1"

MsgBox str + " 2"

End Sub

Kết quả:

Hello VBA! 1
Hello VBA! 2

Các hàm xử lý chuỗi trong VBA


Có các hàm VBA String có sẵn giúp các nhà phát triển làm việc với các chuỗi rất hiệu quả. Dưới đây là các hàm VBA
String được hỗ trợ trong VBA.

No. Hàm & Mô tả

1 InStr
Trả về lần xuất hiện đầu tiên của chuỗi con được chỉ định. Tìm kiếm xảy ra từ trái sang phải.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 359


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

2 InstrRev
Trả về lần xuất hiện đầu tiên của chuỗi con được chỉ định. Tìm kiếm xảy ra từ bên phải sang trái.

3 Lcase
Trả về chuỗi chữ hoa của chuỗi được chỉ định.

4 Ucase
Trả về chuỗi chữ thường của chuỗi được chỉ định.

5 Left
Trả lại một số ký tự cụ thể từ phía bên trái của chuỗi.

6 Right
Trả lại một số ký tự cụ thể từ phía bên phải của chuỗi.

7 Mid
Trả lại một số ký tự cụ thể từ một chuỗi dựa trên các tham số được chỉ định.

8 Ltrim
Trả về một chuỗi sau khi loại bỏ các khoảng trống ở phía bên trái của chuỗi được chỉ định.

9 Rtrim
Trả về một chuỗi sau khi loại bỏ các khoảng trống ở phía bên phải của chuỗi được chỉ định.

10 Trim
Trả về một giá trị chuỗi sau khi loại bỏ khoảng trống cả đầu và cuối chuỗi.

11 Len
Trả về độ dài của chuỗi đã cho.

12 Replace
Trả về một chuỗi sau khi thay thế một chuỗi với một chuỗi khác.

13 Space
Điền vào một chuỗi với số ký tự space được chỉ định.

14 StrComp
Trả về một giá trị số nguyên sau khi so sánh hai chuỗi được chỉ định.

15 String
Trả về một chuỗi ký tự được chỉ định cho số lần được chỉ định.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 360


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

16 StrReverse
Trả về một chuỗi sau khi đảo ngược chuỗi ký tự của chuỗi đã cho.

31. Hàm xử lý Date và Time trong VBA

Các hàm xử lý Date và Time trong VBA giúp các nhà phát triển chuyển đổi ngày và thời gian từ một định dạng
này sang định dạng khác hoặc để lấy ra giá trị ngày hoặc giờ theo định dạng phù hợp.

Các hàm xử lý Date


Bảng dưới đây thể hiện danh sách các hàm xử lý Date trong VBA.

No. Hàm & Mô tả

1 Date
trả về ngày hệ thống hiện tại.

2 CDate
chuyển đổi một chuỗi đầu vào cho trước thành kiểu Date.

3 DateAdd
trả về một ngày mà một khoảng thời gian xác định đã được thêm vào.

4 DateDiff
trả về sự khác biệt giữa hai khoảng thời gian.

5 DatePart
trả về một phần quy định của giá trị date đã cho.

6 DateSerial
trả về một ngày hợp lệ cho một năm, tháng và ngày cho trước.

7 FormatDateTime
định dạng ngày dựa trên các thông số được cung cấp.

8 IsDate
trả về một giá trị Boolean tham số được cung cấp có phải là một date hay không.

9 Day
trả về một số nguyên giữa 1 và 31 đại diện cho ngày của date đã cho.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 361


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

10 Month
trả về một số nguyên giữa 1 và 12 đại diện cho tháng của date đã cho.

11 Year
trả về một số nguyên đại diện cho năm của date đã cho.

12 MonthName
trả về tên của tháng cụ thể cho date đã cho.

13 WeekDay
trả lại một số nguyên (1 đến 7) đại diện cho ngày trong tuần cho date đã cho.

14 WeekDayName
trả về tên ngày trong tuần cho date đã cho.

Các hàm xử lý Time


Bảng dưới đây thể hiện danh sách các hàm xử lý Time trong VBA.

No. Hàm & Mô tả

1 Now
trả về ngày và giờ hệ thống hiện tại.

2 Hour
trả về một số nguyên giữa 0 và 23 đại diện cho phần giờ của time đã cho.

3 Minute
trả về một số nguyên từ 0 đến 59 đại diện cho phần phút của time đã cho.

4 Second
trả về một số nguyên giữa 0 và 59 đại diện cho phần giây của time đã cho.

5 Time
trả về thời gian hệ thống hiện tại.

6 Timer
trả lại số giây kể từ 12:00 AM.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 362


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

7 TimeSerial
định dạng thời gian dựa trên các thông số được cung cấp.

8 TimeValue
chuyển đổi chuỗi đầu vào sang định dạng thời gian.

32. Ví dụ Excel VBA

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 363


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 30: Học SSIS để tự động hóa việc chạy dữ


liệu hàng ngày
1. Hướng dẫn cài đặt phần mềm
HƯỚNG DẪN CÀI ĐẶT SQL SERVER DATA TOOLS 2015
1. Download bộ cài đặt được MasterMOS chia sẻ:

Bộ cài gồm 2 file: [vietdl.net] Visual_Studio_Enterprise_2015_setup và SSDT_14.0.61707.300_EN


2. Cài đặt phần mềm:
Phần 1: Cài đặt Visual Studio 2015
Giải nén file [vietdl.net] Visual_Studio_Enterprise_2015_setup

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 364


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau khi giải nén ra chúng ta được một file ISO tên là VS2015_ENT_ENU

Nếu như hệ điều hành của chúng ta là Win 10, Win 8 thì chuột phải vào file vs2015.ent_enu.iso rồi chọn Mount để
tạo ra 1 ổ đĩa ảo, từ đó chúng ta có thể cài đặt.
Nếu như hệ điều hành của chúng ta là Win 7 và có cài đặt phần mềm UltraISO chúng ta cũng có thể chuột phải vào
chọn Mount to drive để tạo ra ổ ảo và cài đặt.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 365


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Nếu như hệ điều hành của chúng ta là Win 7 và không có cài đặt phần mềm UltraISO chúng ta có thể sử dụng
Winzar để giải nén, sau đó tiến hành cài đặt bình thường

Sau khi Mount tạo ra ổ đĩa ảo hoặc giải nén ra ta được một số file như sau:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 366


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Chuột phải vào file vs_enterprise chọn Run as Administrator, chương trình sẽ chạy một số màn hình như sau

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 367


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 368


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần lựa chọn nơi cài đặt, bạn lưu ý máy tính phải còn ít nhất 10GB để lưu dữ liệu.
Chọn lựa chọn cài đặt là Default,sau đó ấn Install.
Máy sẽ tự chạy các phần cài đặt trong khoảng 1h -1h30 (do bộ cài có rất nhiều tính năng nên cần thời gian cài đặt).
Chúng ta sẽ để cho máy tự cài đặt, trong thời gian đó chúng ta làm các công việc khác bình thường (lưu ý là không
tắt máy).
Một số màn hình khi cài đặt như sau:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 369


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 370


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 371


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 372


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Khi cài đặt xong chúng ra Restart để khởi động lại máy.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 373


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Khi khởi động lại, máy có thể update một số nội dung, bạn cứ đợi máy update cho đến khi xong thì thôi, lưu ý không
tắt máy trong quá trình này, để máy tự chạy.
Sau khi cài xong Visual Studio, chúng ta tiến hành cài đặt SQL Server Data Tools.
Phần 2: Cài đặt SQL Server Data Tools 2015
Chúng ta có file ISO, chúng ta cũng làm tương tự như file Visual Studio (Mount ra ổ ảo hoặc giải nén) để có được file
cài đặt như hình sau:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 374


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Chuột phải vào file SSDTSETUP chọn Run as Administrator

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 375


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Màn hình tiếp theo chỉ chọn SQL Server Intergration Services, không chọn 2 cái trên, sau đó ấn Next.

Chọn I agree to the license terms and conditions

Sau đó máy sẽ tự chạy cài đặt, chúng ta đợi cho máy chạy xong là xong.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 376


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Một số hình ảnh cài đặt như sau:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 377


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 378


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 379


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 380


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 381


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 382


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 383


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau khi cài đặt xong chúng ta Restart lại máy là có thể sẵn sàng sử dụng.

Trong quá trình cài đặt nếu gặp lỗi anh chị liên hệ MasterMOS để được hỗ trợ xử lý.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 384


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

2. Hướng dẫn sử dụng SSDT để làm SSIS


1. Khởi động chương trình
Vào Start/All Programs/Tìm đến phần mềm tên là SQL Server Data Tools 2015

Màn hình SSDT 2015 hiện ra giao diện như sau

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 385


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

2. Cấu hình SSIS để tạo luồng import dữ liệu từ TEXT FILE


1. Tạo New Project
Từ giao diện SSDT, vào File/New/Project

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 386


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Màn hình New Project xuất hiện, ấn chọn Intergration Services Project, phần Name là nơi đặt tên cho tên
của Project, phần Location là nơi lưu Project trên ổ đĩa cứng.
Phần Create directory for solution lưu ý bỏ tích để không chọn phần này.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 387


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Môi trường làm việc cho Project xuất hiện, cho phép chúng ta bắt đầu thực hiện những công việc mình
mong muốn.
Chú ý màn hình quan trọng là SSIS Toolbox: đây là hộp công cụ cho phép chúng ta lựa chọn các tính năng
quan trọng của SSDT để đưa vào trong Project, thực hiện các nhiệm vụ mà chúng ta mong muốn.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 388


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Khi cửa sổ màn hình SSIS Toolbox không may bị mất đi, chúng ta sẽ vào SSIS, chọn SSIS Toolbox để mở lại
cửa sổ SSIS Toolbox

Trong phần SSIS Toolbox, chú ý phần Container, bao gồm 2 Container chính sau:
For Loop Container: Cho phép tạo luồng chạy dữ liệu có tính lặp lại, ví dụ có thể cho chạy dữ liệu của cả 1
năm từ 01/01 đến 31/12 dựa vào Container For Loop
Sequence Container: Cho phép tạo luồng chạy tuần tự, các đối tượng bên trong Sequence Container sẽ
được chạy tuần tự dựa theo chiều của mũi tên kết nối các đối tượng, giữa các Sequence Container cũng
được chay tuần tự dựa theo chiều mũi tên nối các Sequence Container.
Kết quả làm việc với SSIS sẽ giúp chúng ta tạo ra các màn hình Control Flow để kiểm soát, thực thị các
luồng chạy dữ liệu, và Data Flow cho phép chúng ta cấu hình một luồng chạy dữ liệu cụ thể.

Ví dụ Data Flow của phần import file Excel tự động vào SQL Server

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 389


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Lưu ý quan trọng: Trước khi tạo luồng import file TEXT tên là TGTT vào trong Database Interface, chúng ta cần tạo
ra bảng INT_NonTermDeposits để nhận dữ liệu import từ file Text. Bảng INT_NonTermDeposits có những trường
như sau:

Chúng ta bắt đầu thiết lập luồng import dữ liệu từ file TEXT vào trong SQL Server như sau:
Tạo 1 Execute SQL Task để viết câu lệnh TRUNCATE TABLE bảng INTERFACE, đảm bảo dữ liệu hàng ngày load vào
sẽ không bị trùng lặp, do dữ liệu cũ đang có đã bị xóa sạch đi.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 390


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ấn vào đối tượng Execute Task rồi chọn RENAME, đặt tên là TRUNCATE INTERFACE TABLE

Sau đó ấn đúp vào TRUNCATE INTERFACE TABLE để cấu hình Task này

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 391


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần Connection chọn New connection

Tiếp tục chọn NEW

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 392


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Gõ tên Server name và pass để truy cập vào SQL Server mà mình muốn kết nối

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 393


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 394


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Lựa chọn Database Inteface là Database chúng ta sẽ kết nối đến

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 395


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau đó ấn OK, OK.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 396


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần SQL SourceType chọn Direct Input.

Phần SQLStatement: ấn vào dấu … và bắt đầu viết 1 đoạn CODE SQL ngắn như sau:
TRUNCATE TABLE INT_FactNonTermDeposits, sau đó ấn OK.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 397


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 398


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Chuột phải vào Task “TRUNCATE TABLE INTERFACE” chọn Execute Task để kiểm tra xem việc cấu hình đã được
thực hiện thành công hay chưa.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 399


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Nếu xuất hiện biểu tượng màu xanh như dưới đây là đã thành công.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 400


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Tiếp theo chúng ta kéo Phần Data Flow Task từ SSIS Toolbox vào Project chúng ta đang thực hiện

Đổi tên Data Flow Task thành Import Text File

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 401


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Sau đó ấn đúp vào IMPORT TXt FILE để chuyển sang màn hình Data Flow

Phần SSIS Toolbox xuất hiện 2 công cụ ứng với phần Data Flow là Source Assistant và Destination Assistant

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 402


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”
Kéo Source Assistant vào trong Data Flow

Ấn chọn Flat File, sau đó ấn New

Phần Connection Manager Name đổi tên thành TGTT_Connection, phần Browse ta tìm đến nơi chứa file TXT cần
import

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 403


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Thông thường các thiết lập khác để mặc định

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 404


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ở phần bên trái ta chú ý có các mục General, Columns, Advanced, Preview.
Chuyển sang phần Columns
Phần Row delimiter để mặc định,
Phần Column delimiter thì dựa vào ký phân cách các cột do file TEXT quy định mà ta điền vào tương ứng. Người ta
thường hay phân cách bằng dấu #, *;, nhưng dấu # là được dùng nhiều nhất.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 405


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ấn nhập dấu # (Shitft 3) rồi ấn vào nút Refresh.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 406


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần thông tin hiện ra đã chia tách các cột trong rất đẹp rồi

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 407


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Chuyển sang tab Advanced, lựa chọn tất cả các cột rồi chọn Kiểu dữ liệu và độ dài của kiểu dữ liệu
Sau đó ấn OK

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 408


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Tiếp theo kéo Destination Assistant vào Data Flow, chọn SQL Server.
Phần connection, ta đã có sẵn connection kết nối đến Database Interface ở phần tạo Execute Task – TRUNCATE
TABLE nên giờ ta có thể sử dụng luôn, không cần tạo ra Connection mới.

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 409


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 410


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Ấn đúp vào phần OLE DB Destination, chọn màn hình thông báo hiện ra chọn Yes

Mục Data Access Mode chọn Table or View – Fast Load

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 411


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Phần Name of the table chọn bảng dữ liệu đích

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 412


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 413


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Các nội dung khác bạn thực hiện như hình minh họa dưới đây:

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 414


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 415


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 416


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 417


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 418


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 419


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 420


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 421


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 422


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 423


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 424


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 425


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 426


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 427


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 428


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 429


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 430


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 431


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 432


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 433


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 434


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 435


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 436


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 437


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 438


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 439


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 440


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 441


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 442


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 443


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

"D:\\SQL_EXCEL\\1. RAW DATA\\"

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 444


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 445


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 446


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

@[User::FILE_PATH]+"SaoKeTGTT_"+ @[$Package::SDATE] +".txt"

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 447


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 448


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

WHERE TRANSACTION_DATE = ' " + @[$Package::DATE]+ " '


Nháy đơn nháy kép + Tham số ngày + Nháy kép nháy đơn

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 449


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 450


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 451


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 452


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 453


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 454


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 455


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 456


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 457


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 458


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 459


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 460


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 461


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 462


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 463


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 464


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 465


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 466


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 467


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 468


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

@[User::FILE_PATH]+"SaoKeTGTK_"+ @[$Package::SDATE] +".xlsx"

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 469


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 470


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 471


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 472


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

"EXEC DAILY_DATA_PROCESS '"+ @[$Package::DATE]+"'"

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 473


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 474


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 475


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 476


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 477


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 478


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 31: Một số kiến thức SQL nâng cao, lập


trình với SQL Server

Chi tiết các nội dung anh chị xem trong tài liệu đính kèm khóa học này, mục
SQL nâng cao

1. Một số cách tiếp cận để xây dựng Database


2. Sử dụng SQL động – Dynamic SQL
3. Câu lệnh SQL lồng nhau
4. Câu lệnh Case When
5. Sử dụng hàm IS NULL
6. Sắp xếp với RANK(), ROWNUM() và DENSE_RANK()

7. Các loại JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN


8. Sử dụng Link Server
9. Check xem một trường có giá trị là số hay chữ
10. Tạo trường dữ liệu tự động tăng số thứ tự
11. Chăm sóc Database với Shrink Database
12. Tăng hiệu suất Database với Table Partitioning
13. Sử dụng con trỏ Cursor
14. Sử dụng vòng lặp trong SQL Server
15. Các nội dung khác sẽ thường xuyên được update …

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 479


TÀI LIỆU HƯỚNG DẪN KHÓA HỌC “XỬ LÝ DỮ LIỆU ĐỈNH CAO, LÀM BÁO CÁO TỰ ĐỘNG VỚI SQL, VBA VÀ EXCEL”

Bài 32: Bài tập lớn để kiểm tra đầu ra, cấp
chứng chỉ và ứng dụng thực tế sau khóa học
1. Nội dung bài kiểm tra sẽ được gửi qua email.
2. Sau khi học xong anh chị sẽ được cấp chứng chỉ hoàn thành khóa học.
3. MasterMOS tiếp tục hỗ trợ, tư vấn cho các anh chị các vấn đề sau khóa học:
 Tư vấn xây dựng cơ sở dữ liệu, xây dựng tự động hóa báo cáo phù hợp với tình
huống công việc hiện tại của học viên.
 Cung cấp các cập nhật, bài viết mới nhất về các công cụ sử dụng trong khóa học
 Hỗ trợ trả lời thắc mắc qua FanPage, Group.
 Các kênh thông tin hỗ trợ:
 Website: www.mastermos.edu.vn
 Fanpage: https://www.facebook.com/mastermosvn
 Email: mastermosvn@gmail.com
 Mobile: 0987.581.645
4. Các sản phẩm khác của MasterMOS:
 Các khóa đào tạo luyện thi chứng chỉ tin học văn phòng Microsoft Office Specialist MOS
(tập trung vào các môn học chính Excel, Word, Powerpoint, Outlook…) được Microsoft
công nhận toàn cầu.
 Các khóa đào tạo chuyên sâu về xử lý dữ liệu, làm báo cáo tự động với SQL, VBA và Excel
 Các khóa đào tạo tin học văn phòng dành cho người đi làm, xây dựng báo cáo Dashboard,
báo cáo thông minh.
 Website www.mastermos.edu.vn giới thiệu chung về các lĩnh vực hoạt động của
MasterMOS.
 Website www.hoctinonline.edu.vn: học trực tuyến chuyên biệt trong lĩnh vực tin học văn
phòng, tin học cơ bản, các khóa tin học chuyên sâu khác…
 Website www.sosanhkhoahoc.edu.vn: chuyên về tư vấn, giới thiệu các khóa học online
với nguồn khóa học phong phú từ các học viện online lớn nhất Việt Nam: edumall.vn,
unica.vn,kyna.vn…

© Ngọc Chiến MasterMOS Education & Traning Ltd Trang | 480

You might also like