You are on page 1of 86

Quản lý thông tin

(Information Management)

Bài giảng 2

1
Các ngôn ngữ truy vấn CSDL

 SQL
 Xquery, Xpath
 Crystal Report

Bài giảng:IM
2
Bài giảng 2
(Môn: Quản lý thông tin)

Phần 1: SQL

3
1. SQL
 Nhắc lại các nhóm lệnh
 Truy vấn dữ liệu
 Lập trình với cơ sở dữ liệu

4
Các nhóm lệnh
 Nhóm định nghĩa dữ liệu (DDL)
 Gồm các lệnh tạo, thay đổi cấu trúc các
bảng dữ liệu (Create, Drop, Alter, …)
 Nhóm thao tác dữ liệu (DML)
 Gồm các lệnh làm thay đổi dữ liệu lưu trong
bảng (Insert, Delete, Update, …)
 Nhóm điều khiển dữ liệu (DCL)
 Gồm các lệnh quản lý quyền truy cập vào dữ
liệu và các bảng (Grant, Revoke, …)

5
Truy vấn dữ liệu
 Giới thiệu
 Phép kết trên nhiều bảng
 Truy vấn lồng (Sub query)
 Một số dạng truy vấn khác
 Hàm kết hợp, gom nhóm
 Khung nhìn (View)

6
Giới thiệu
 SQL (Structured Query Language)
 Ngôn ngữ cấp cao
 Người sử dụng chỉ cần đưa ra nội dung cần
truy vấn
 Được IBM phát triển (1970s)
 Được gọi là SEQUEL
 Được ANSI công nhận và phát triển thành
chuẩn SQL-86, SQL-92, SQL-99

7
Phép kết trên nhiều bảng
 Phép  kết, kết tự nhiên
 Mệnh đề WHERE chỉ ra điều kiện kết giữa
các thuộc tính của các bảng
 Hoặc dùng từ khóa Inner Join (hoặc
Join) trong mệnh đề FROM
 Phép kết trái, phải, ngoài
 Dùng Half Outer Join (Left join, Right
Join), Full Outer Join trong mệnh đề
FROM

8
 NHANVIEN (HONV, TENLOT, TENNV, MANV,
NGSINH, DCHI, PHAI, LUONG, MA_NQL, PHG)
 PHONGBAN ( TENPHG, MAPHG, TRPHG, NG_NC)
 DIADIEM_PHG (MAPHG, DIADIEM)
 THANNHAN (MA_NVIEN, TENTN, PHAI, NGSINH,
QUANHE)
 DEAN (TENDA, MADA, DDIEM_DA, PHONG)
 PHANCONG (MA_NVIEN, SODA, THOIGIAN)

9
Phép kết trên nhiều bảng
1. In danh sách mã số, họ tên nhân viên
và tên thân nhân của nhân viên đó.
2. In danh sách mã số, họ tên của tất
cả các nhân viên và tên thân nhân
của nhân viên đó (nếu có).

10
Truy vấn lồng
 Giới thiệu
 In và Not In
 Exists và Not Exists
 Any/Some và All
 Phân loại
 Một số dạng truy vấn khác
 Các phép toán trên tập hợp

11
Giới thiệu
 Các câu lệnh SELECT có thể lồng
nhau ở nhiều mức
 Các câu truy vấn con thường trả về
một tập các giá trị
 Các câu truy vấn con được kết hợp
bằng phép nối logic với câu truy vấn
cha.

12
In và Not In
 Cú pháp:
<thuộc tính> (NOT) IN (<truy vấn con>)
 Lưu ý:
 Thuộc tính ở mệnh đề SELECT của truy vấn con
phải có cùng kiểu dữ liệu với thuộc tính ở mệnh đề
WHERE của truy vấn cha
Ví dụ:
3. Tìm nhân viên chưa được phân công thực hiện đề án nào
SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten
FROM Nhanvien
Where manv NOT IN
(SELECT distinct ma_nvien FROM Phan cong)

13
Any/Some và All
 Cú pháp:
<thuộc tính> <phép so sánh> Any/Some/All (<truy vấn con>)

 Lưu ý:
 Thuộc tính ở mệnh đề SELECT của truy vấn
con phải có cùng kiểu dữ liệu với thuộc tính ở
mệnh đề WHERE của truy vấn cha
 Any/Some: so sánh với bất kỳ giá trị nào đó
trong tập hợp.
 All: so sánh với tất cả các giá trị trong tập
hợp.

14
SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten
FROM Nhanvien
Vd 4
Where luong >= ALL
(SELECT luong FROM Nhanvien)

SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten


Vd 5 FROM Nhanvien
Where phai= ‘Nu’ AND luong >ANY
(SELECT luong FROM Nhanvien Where phai=‘Nam’)

SELECT nv1.manv, nv1.honv+’ ‘+nv1.tenlot+’ ‘+nv1.tennv as hoten


Vd 6 FROM Nhanvien nv1, Nhanvien nv2
Wheres nv1.phai=‘Nu’ AND nv1.luong>nv2.luong AND nv2.phai=‘Nam’

15
Exists và Not Exists
 Cú pháp:
(NOT) EXISTS (<câu truy vấn con>)
 Lưu ý:
 Không cần có thuộc tính, hằng số hay biểu
thức nào khác đứng trước
 Không nhất thiết liệt kê tên thuộc tính ở
mệnh đề SELECT của truy vấn con
 Những câu truy vấn có điều kiện “= ANY”
hay “IN” đều có thể chuyển thành câu truy
vấn có EXISTS
16
SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten
FROM Nhanvien
Vd 7
Where manv NOT IN
(SELECT distinct ma_nvien FROM Phancong)

SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten


FROM Nhanvien
Vd 8
Where manv <> ALL
(SELECT distinct ma_nvien FROM Phancong)

SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten


FROM Nhanvien
Vd 9
Where NOT EXISTS
(SELECT * FROM Phancong WHERE manv=ma_nvien )

17
Phân loại
 Lồng phân cấp
 Mệnh đề WHERE của truy vấn con không tham chiếu
đến thuộc tính của các quan hệ trong mệnh đề FROM ở
truy vấn cha
 Khi thực hiện, câu truy vấn con sẽ được thực hiện trước
 Lồng tương quan
 Mệnh đề WHERE của truy vấn con tham chiếu ít nhất
một thuộc tính của các quan hệ trong mệnh đề FROM
ở truy vấn cha
 Khi thực hiện, câu truy vấn con sẽ được thực hiện
nhiều lần, mỗi lần tương ứng với một bộ của truy vấn
cha

18
Lồng phân cấp
Vd 10
SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten
FROM Nhanvien, Thannhan
Where manv=ma_nvien AND quanhe=‘Con trai’

SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten


FROM Nhanvien
Where manv IN
(SELECT ma_nvien FROM Thannhan Where quanhe=‘Con trai’)
Vd 11

19
Lồng tương quan
Vd 12
SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten
FROM Nhanvien, Thannhan
Where manv=ma_nvien AND quanhe=‘Con trai’

SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten


FROM Nhanvien
Where EXISTS
(SELECT * FROM Thannhan Where manv=ma_nvien AND
quanhe=‘Con trai’)

Vd 13

20
Vd 14
SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten
FROM Nhanvien
Where manv NOT IN
(SELECT distinct ma_nvien FROM PHANCONG)

SELECT manv, honv+’ ‘+tenlot+’ ‘+tennv as hoten


FROM Nhanvien
Where NOT EXISTS
(SELECT * FROM Phancong Where manv=ma_nvien)

Vd 15

21
Một số dạng truy vấn khác
 Câu truy vấn con không chỉ xuất hiện
ở mệnh đề WHERE mà có thể xuất
hiện ở những nơi khác (SELECT,
FROM, HAVING,…)
 Kết quả trả về của câu truy vấn con
 Là một bảng trung gian trong quá trình
truy vấn
 Bảng này không có lưu trữ thật sự

22
Vd: Cho biết số lượng nhân viên Nam (phai=‘Nam’), nhân
viên Nữ (phai=‘Nu’) trong từng phòng ban.

SELECT MAPHG, TENPHG, NAM.SLNV, NU.SLNV


FROM PHONGBAN,
(SELECT PHG, COUNT(*) AS SLNV
FROM NHANVIEN
WHERE PHAI=‘Nam’
GROUP BY PHG) AS NAM,
(SELECT PHG, COUNT(*) AS SLNV
FROM NHANVIEN
WHERE PHAI=‘Nu’
GROUP BY PHG) AS NU
WHERE MAPHG=NAM.PHG AND MAPHG=NU.PHG

Vd 16

23
SELECT MAPHG, TENPHG,

(SELECT COUNT(*) FROM NHANVIEN


WHERE PHAI=‘Nam’ AND PHG=MAPHG) AS SLNAM,

(SELECT COUNT(*) FROM NHANVIEN


WHERE PHAI=‘Nu’ AND PHG=MAPHG) AS SLNU

FROM PHONGBAN

Vd 17

24
Các phép toán trên tập hợp
 SQL có cài đặt các phép toán
 Hội (UNION)
 Giao (INTERSECT)
 Trừ (EXCEPT)
 Kết quả trả về là tập hợp
 Loại bỏ các bộ trùng nhau
 Để giữ lại các bộ trùng nhau
 UNION ALL
 INTERSECT ALL
 EXCEPT ALL

25
Các phép toán trên tập hợp
 Cú pháp:
SELECT <các thuộc tính> FROM <các bảng> WHERE <các điều kiện>
UNION [ALL]
SELECT <các thuộc tính> FROM <các bảng> WHERE <các điều kiện>

SELECT < các thuộc tính> FROM <các bảng> WHERE <các điều kiện>
INTERSECT [ALL]
SELECT <các thuộc tính> FROM <các bảng> WHERE <các điều kiện>

SELECT <các thuộc tính> FROM <các bảng> WHERE <các điều kiện>
EXCEPT [ALL]
SELECT <các thuộc tính> FROM <các bảng> WHERE <các điều kiện>

26
Các phép toán trên tập hợp
 Tuy nhiên, chúng ta có thể sử dụng IN, NOT
IN, EXISTS, NOT EXISTS, … để thực hiện các
phép toán hội, giao trừ trên tập hợp.
 Đối với phép chia: sử dụng NOT EXISTS.
 Ví dụ:
1. Tìm họ tên nhân viên được phân công thực hiện tất
cả các đề án.
2. Tìm tên các đề án được phân công cho tất cả các
nhân viên thuộc phòng số 5 thực hiện

27
Các phép toán trên tập hợp
Vd 18
SELECT manv, honv, tenlot, tennv
FROM Nhanvien
Where NOT EXISTS
(SELECT * FROM Dean WHERE NOT EXISTS
(SELECT * FROM Phancong WHERE manv=ma_nvien
AND mada=soda))

SELECT tenda
FROM Dean
Where NOT EXISTS
(SELECT * FROM Nhanvien WHERE phg=5 AND NOT EXISTS

(SELECT * FROM Phancong WHERE manv=ma_nvien


AND mada=soda))
Vd 19
28
Hàm kết hợp, gom nhóm
 Hàm kết hợp
 Top N
 Gom nhóm

29
Hàm kết hợp
 MIN, MAX, SUM, AVG
TÊN HÀM(<tên thuộc tính>)
 COUNT
 COUNT(*) đếm số dòng
 COUNT(<tên thuộc tính>) đếm số dòng
thuộc tính có giá trị khác NULL
 COUNT(DISTINCT <tên thuộc tính>) đếm số
dòng thuộc tính có giá trị khác nhau và khác
NULL

30
Ví dụ
20.Tính lương thấp nhất, cao nhất, trung
bình và tổng lương của nhân viên
21.Có tất cả bao nhiêu nhân viên
22.Có bao nhiêu nhân viên được quản lý
trực tiếp bởi người khác
23.Có tất cả bao nhiêu người quản lý
24.Có bao nhiêu nhân viên không có người
quản lý trực tiếp

31
SELECT min(luong) as CN, max(luong) as TN, avg(luong) as TB,
Vd 20 sum(luong) as TONG
FROM Nhanvien

Vd 21 SELECT count(*) as SLNV


FROM Nhanvien

SELECT count(ma_nql) as SLNV


FROM Nhanvien
Vd 22
SELECT count(*) as SLNV
FROM Nhanvien
WHERE ma_nql IS NULL

SELECT count(DISTINCT ma_nql) as SLNQL


Vd 23
FROM Nhanvien

SELECT count(*) as SLNV


Vd 24 FROM Nhanvien
WHERE ma_nql IS NULL

32
Top N
 Trả về N dòng kết quả đầu tiên của câu
truy vấn
 Cú pháp: TOP N
với N là số nguyên dương
 Nên sử dụng ORDER BY để sắp xếp kết
quả
SELECT TOP 1 luong as CN
Vd 25
FROM Nhanvien
ORDER BY luong DESC

33
Gom nhóm
 Cú pháp:
SELECT <các thuộc tính>
FROM <các bảng>
[WHERE <các điều kiện>]
GROUP BY <các thuộc tính gom nhóm>
[HAVING <các điều kiện>]
 Trong đó:
 Điều kiện ở WHERE thực hiện trước khi gom nhóm
 Điều kiện ở HAVING thực hiệu sau khi gom nhóm
 Các thuộc tính sau GROUP BY dùng để gom nhóm và
phải có đầy đủ các thuộc tính sau SELECT (trừ những
thuộc tính trong những hàm kết hợp)

34
Ví dụ
26.Tìm số lượng nhân viên của từng phòng ban
27.Tìm số lượng nhân viên Nam (phai=‘Nam’) của
từng phòng ban
28.Tìm phòng ban có từ 2 nhân viên Nam
(phai=‘Nam’) trở lên
29.Tìm phòng ban có đông nhân viên nhất
30.Tìm đề án có ít nhân viên Nữ (phai=‘Nu’) tham
gia nhất
31.Tìm 3 nhân viên thuộc phòng số 4 (phg=4) có
lương thấp nhất

35
Khung nhìn (View)
 Giới thiệu
 Mục đích
 Định nghĩa View
 Truy vấn trên View
 Cập nhật trên View

36
Giới thiệu
 Bảng (Table) là một quan hệ được tổ
chức lưu trữ vật lý trong CSDL
 Khung nhìn (View) cũng là một quan
hệ
 Là bảng ảo (không được lưu trữ vật lý)
 Không chứa dữ liệu
 Được định nghĩa từ những bảng khác
 Có thể truy vấn hay cập nhật thông qua
View
37
Mục đích
 Che dấu tính phức tạp của dữ liệu
 Đơn giản hóa các câu truy vấn
 Hiển thị dữ liệu dưới dạng tiện dụng
nhất
 An toàn dữ liệu

38
Định nghĩa View
 Cú pháp CREATE VIEW <tên khung nhìn> AS
 Tạo View: <câu truy vấn>

 Xóa View: DROP VIEW <tên khung nhìn>

 Bảng ảo này có:


 Danh sách thuộc tính trùng với các thuộc tính
trong mệnh đề SELECT
 Số dòng phụ thuộc vào điều kiện ở mệnh đề
WHERE
 Dữ liệu được lấy từ các bảng ở mệnh đề FROM

39
CREATE VIEW DEAN_P5 AS
SELECT MADA, TENDA, DDIEM_DA
Vd 32
FROM DEAN
WHERE PHONG=5

CREATE VIEW TONGTG_SLNV_DA AS


SELECT MADA, TENDA, COUNT(*) AS SLNV,
SUM(THOIGIAN) AS TONGTG
Vd 33
FROM DEAN, PHANCONG
WHERE MADA=SODA
GROUP BY MADA, TENDA

40
Truy vấn trên View
 Không chứa dữ liệu nhưng được truy
xuất như một bảng
Vd 34 SELECT * FROM DEAN_P5 WHERE DDIEM_DA=‘TP HCM’

 Có thể viết câu truy vấn dữ liệu từ


View và bảng
SELECT MA_NVIEN FROM DEAN_P5, PHANCONG WHERE
Vd 35
MADA=SODA

41
Cập nhật trên View
 Đối với View đơn giản được xây dựng trên 1
bảng và có khóa chính của bảng: có thể
dùng các câu lệnh INSERT, DELETE và
UPDATE
 Không thể cập nhật trên View nếu View:
 dùng từ khóa DISTINCT
 sử dụng các hàm kết hợp
 có mệnh đề SELECT mở rộng
 được xây dựng từ bảng có ràng buộc trên cột
 được xây dựng từ nhiều bảng
42
Bài giảng 2
(Môn: Quản lý thông tin)

Phần 2: XPath và XQuery

43
2. Xquery, Xpath
 Giới thiệu
 Xpath
 Xquery

44
Giới thiệu
 Xpath và Xquery
 là hai ngôn ngữ có rất nhiều mặt giống
nhau, hỗ trợ tìm kiếm thông tin trong tài
liệu XML.
 có thể xem Xpath là tập hợp con của
Xquery.
 Xquery sử dụng Xpath như là một ngôn
ngữ chính để định hướng tìm kiếm thay
vì dùng đệ qui để duyệt cây.

45
XPath
 XML Path language (gọi tắt là Xpath)
là một chuẩn để xử lý tài liệu XML
(cũng như SQL là một chuẩn để làm
việc với csdl)
 Dùng để xử lý nhiều kiểu truy vấn
trong tài liệu XML
 Là ngôn ngữ rất phổ biến
 Tiết kiệm thời gian trích xuất dữ liệu

46
Ví dụ 36:
1. <users>
2. <user>
3. <name>
4. <first>Lola</first>
15. <visits>
5. <last>Solis</last>
16. <first>2008-01-15</first>
6. </name>
17. <last>2008-02-15</last>
7. <age>2</age>
18. </visits>
8. </user>
19. </user>
9. <user>
20. <user>
10. <name>
21. <name>
11. <first>Nina</first>
22. <first>Tracy</first>
12. <last>Serafina</last>
23. <last>Keller</last>
13. </name>
24. </name>
14. <age>4</age>
25. <age>35</age>
26. </user>
27. </users>

47
 Đoạn Xpath sau: tìm tên của người dùng
dưới 18 tuổi
1. /user[age lt 18]/name/last/text()
2.  
3. (: Result
4. Solis
5. Serafina
6. :)

 Nếu không dùng Xpath sẽ gặp chút khó


khăn khi xử lý việc loại bỏ giá trị trong
node visits
48
Nhận xét
 Biểu thức Xpath ngắn gọn, rõ ràng
 Hiểu được các node phức tạp trong tài
liệu XML và biết các mối quan hệ giữa
chúng.
 Một hạn chế của Xpath là không cung
cấp cách chuyển đổi tập kết quả trả
về.
 Ở ví dụ trên không thể sắp kết quả hiện
thị tăng dần theo tên
49
XQuery
 Làm được những gì Xpath đã làm
 Phức tạp hơn so với Xpath
 Sử dụng cú pháp pha trộn XML và Xpath
 Làm được những điều Xpath không làm:
 Sắp xếp kết quả của câu truy vấn hoặc
chuyển chúng thành HTML, CSV, SQL, XML …
 Cung cấp tính năng biểu thức FLWOR
 Sử dụng hàm và đệ quy
 Diễn tả các phép nối

50
Biểu thức FLWOR
 Biểu thức FLWOR dùng để liên kết các
tiêu chí rút trích dữ liệu và chuyển đổi
tập kết quả trả về của câu truy vấn.
 FLWOR là viết tắt của các từ for, let,
where, order by và return
 Bắt đầu bằng một biểu thức for hoặc
let và kết thúc bằng một biểu thức
return

51
Biểu thức FLWOR đơn giản
 Tìm tên của người dùng dưới 18 tuổi, có sắp xếp
kết quả tăng dần
1. let $xml:= _XML from Vidu36
2. for $user in $xml//user[age lt 18]
3. order by $user/name/last
4. return $user/name/last/text()

5. (: Result
6. Serafina
7. Solis
8. :)
 Để ngắn gọn thay đoạn XML trong Ví dụ 36
bằng Vidu36
52
Biểu thức FLWOR đơn giản
 Kết quả truy vấn trả về 1 đoạn HTML, danh
sách có đánh số thứ tự

1. let $xml:= _XML from Vidu36


2. return
3. <ol>{
4. for $user in $xml//user[age lt 18]
5. order by $user/name/last
6. return <li>{$user/name/last/text()}</li>
7. }</ol>
8. (: Result
9. <ol><li>Serafina</li><li>Solis</li></ol>
10.:)

53
Sử dụng mệnh đề where
 Chuyển đoạn biểu thức mô tả điều
kiện vào mệnh đề where
1. let $xml:= _XML from Vidu36
2. return
3. <ol>{
4. for $user in $xml//user
5. where $user/age lt 18
6. order by $user/name/last
7. return <li>{$user/name/last/text()}</li>
8. }</ol>
9. (: Result
10. <ol><li>Serafina</li><li>Solis</li></ol>
11.:)
54
Sử dụng các hàm và đệ quy
 Xquery
 cung cấp các hàm, các phép toán được xây
dựng sẳn và cho phép định nghĩa các hàm
riêng.
 hỗ trợ đệ quy: tiện lợi khi làm việc với XML
(có thể chứa các node lồng nhau tùy ý)
 Ví dụ 37: Định nghĩa hàm transform-
names dùng để thay đổi tên các node
trong bất kỳ tài liệu XML nào.
55
1. (: Part 1 :)
2. define function transform-names($node as node()) as node() {
3. element{replace(name($node), "_", "-")} {
4. $node/text(), for $subnode in $node/* return transform-names($subnode)
5. }
6. }

56
7. (: Part 2 :)
8. let $xml:=
9. <item>
10. <item_type>book</item_type>
11. <contributors>
12. <author>
13. <first_name>Charles</first_name>
14. <last_name>Edward</last_name>
15. <home_address>
16. <home_street>206 S. Solomon St.</home_street>
17. <home_city>New Orleans</home_city>
18. <home_state>LA</home_state>
19. <home_zip>70119</home_zip>
20. </home_address>
21. </author>
22. <artist>
23. <last_name>Salinas</last_name>
24. </artist>
25. </contributors>
26.</item>
27.return transform-names($xml) 57
7. (: Result
8. <item>
9. <item-type>book</item-type>
10. <contributors>

11. <author>
12. <first-name>Charles</first-name>
13. <last-name>Edward</last-name>
14. <home-address>
15. <home-street>206 S. Solomon St.</home-street>
16. <home-city>New Orleans</home-city>
17. <home-state>LA</home-state>
18. <home-zip>70119</home-zip>
19. </home-address>
20. </author>
21. <artist>
22. <last-name>Salinas</last-name>
23. </artist>
24. </contributors>
25. </item>
26.:) 58
Diễn tả các phép nối
 Xquery còn cung cấp phương tiện để
nối các node XML trong một câu truy
vấn (giống như diễn tả các phép nối
bảng trong câu truy vấn của SQL)

59
Bài giảng 2
(Môn: Quản lý thông tin)

Phần 3: Crystal Report

60
3. Crystal Report
 Giới thiệu
 Cài đặt
 Hướng dẫn sử dụng

61
Giới thiệu
 Crystal Report là công cụ thiết kế báo
cáo cho phép tạo ra những báo cáo (từ
đơn giản đến phức tạp) bằng cách tìm
và định dạng dữ liệu từ một hay nhiều
nguồn dữ liệu khác nhau.
 Hỗ trợ các chức năng in ấn, kết xuất
sang các định dạnh khác: PDF, Excel,
Word…

62
Cài đặt
 Crystal Report được tích hợp sẵn trong
bộ Visual Studio Team System và
Professional (không có trong phiên bản
VS Express)
 Ngoài ra, có thể download Crystal
Report và sử dụng công cụ này như một
phần mềm chuyên dùng để thiết kế báo
cáo.

63
Hướng dẫn sử dụng
 Các thành phần của một Report
 Các bước xây dựng Report
 Tích hợp Report vào ứng dụng

64
Các thành phần của Report
 Mỗi Report gồm 5 Sections
 Section là một vùng hiển thị trong
Report. Mỗi Section được biểu thị
bởi một đầu đề (header) và một
cuối đề (footer) (trừ section chi tiết
bên trong trang (Section Detail)

65
66
1. Report Header: chứa các dòng chữ hay
hình ảnh xuất hiện ở đầu của mỗi report
như : tên report, logo, …
2. Page Header: chứa các thông tin hiện
diện ở đầu mỗi trang, ví dụ như tên
danh mục cần hiển thị từ cơ sở dữ liệu.

67
3. Details: chứa phần dữ liệu của Report.
- Liên kết với các fields trong CSDL để hiển thị các
dòng (data rows), các rows này có thể gom nhóm
theo một số tiêu chí nào đó (column gom nhóm), khi
đó sẽ xuất hiện phần Group By nằm trong Section
“Details”.
- Trong phần Section “Details”, Group by cũng có
Group Header và Group Footer.
- Ta có thể thêm Field tính toán cho cuối mỗi Group
này bằng cách click chuột từ thanh công cụ của
Crystal Report để Insert một Summary.

68
4. Page Footer: chứa các thông tin nằm ở cuối
mỗi trang như số trang…
5. Report Footer: chứa các thông tin xuất hiện
ở cuối mỗi report: tổng kết, số lượng mẫu tin
trong báo cáo, địa chỉ , người ký, chức vụ,
ngày ký,.…..

69
Report Header

Page Header

Detail

Page Footer

Report Footer

70
Các bước xây dựng một Report
 Thiết kế Report
 Chuẩn bị nguồn dữ liệu
 Sử dụng công cụ để xây dựng Report
theo thiết kế
 Tích hợp Report vào ứng dụng

71
Thiết kế Report
 Xác định các thông tin cần hiển thị,
cách bố trí, tổ chức thông tin
 Thiết kế theo mẫu sẳn có hoặc theo đề
nghị của người dùng.
 Yêu cầu:
 Đáp ứng mục tiêu nghiệp vụ, phù hợp với
yêu cầu thực tế của người dùng.
 Dữ liệu hiển thị vừa đủ, có sắp xếp, gom
nhóm hợp lý.
72
Chuẩn bị nguồn dữ liệu
 Tạo cơ sở dữ liệu, các câu truy vấn, các
hàm … để hỗ trợ hiển thị dữ liệu theo
yêu cầu của Report.
 Có thể dùng crystal report hiển thị kết
quả thực thi của một store procedure.
 Store procedure phải thực thi một câu lệnh
SELECT
 Các field trả về của câu select này được xem
là các database field.

73
Sử dụng công cụ
 Phân loại Report
 Các đối tượng dữ liệu của Report

74
Phân loại Report
 Không có tham số: là những report
đơn giản, các yêu cầu hiển thị dữ liệu
không thay đổi.
 Có tham số: các yêu cầu hiển thị dữ
liệu có thay đổi và giá trị của tham số
phải do người dùng ấn định khi thực
thi.

75
Các đối tượng dữ liệu
 Database fields
 Formula fields
 SQL Expression field
 Parameter fields
 Group Name Field
 Running Total Field
 Special fields

76
 Database fields:
 Trường thuộc dạng csdl (có thể là Table,
Stored Procedure, SQL command).
 Thường được hiển thị trong phần Details
của Report.
 Cách thêm database field từ Stored
Procedure

77
78
 Formula fields:
 Dùng để thiết lập các công thức.
 Tạo mới đối tượng này bằng cách dùng
Formula Editor hoặc Formula Expert.

79
80
 SQL Expression Fields:
 Dữ liệu được tính toán từ những trường
khác (dùng hàm count, sum, … hay công
thức tính toán bất kỳ).
 Được đưa về xử lý ở database và trả kết
quả về report qua SQL Expression field.
 Group Name Fields: chứa các thuộc
tính dùng để gom nhóm dữ liệu trong
report.
81
 Parameters Fields:
 Là trường tham số
 Do ta tự khai báo hoặc Crystal Report tự
động thêm vào khi ta đưa 1 stored
procedure có tham số vào trong
database field.
 Khi thực thi report trong Crystal Report,
những trường tham số sẽ được hỏi giá
trị, ta cần nhập vào để hiển thị tạm thời.

82
 Running Total Fields:
chứa giá trị tổng hợp
(aggregate) như max,
min, sum, count, …
 Special Fields: là trường
đặc biệt, có sẳn của
Crystal Report như số
trang, ngày hiện tại, …

83
84
Tích hợp Report vào ứng dụng
 Sử dụng control Crystal Report Viewer.
Cấu hình thuộc tính ReportSource

85
Nếu Report
(có tham số) được lấy
dữ liệu từ
Stored Procedure thì
tham số của sp được
xem là tham số của
control
Crystal Report Viewer

86

You might also like