10/31/16
LÀM VIỆC VỚI CRYSTAL REPORT
10/31/16
MỤC TIÊU BÀI HỌC
v Tìm hiểu về Crystal Report: các đối tượng, phương pháp
thiết kế các report.
v Áp dụng để xây dựng các báo cáo trong ứng dụng quản
lý sinh viên.
10/31/16
2
1
10/31/16
Giới thiệu
v Crystal Report là phần mềm cho phép tạo lập báo cáo
chuyên nghiệp của hãng SAP phát triển
v CR có thể tạo báo cáo theo nhiều dạng, dễ thay đổi
nguồn dữ liệu, điều kiện lọc, gom nhóm, tính tốn,..
v CR cho phép tạo báo cáo động trong runtime, định dạng
theo điều kiện.
10/31/16
3
Giới thiệu
v CR thường được cung cấp kèm VS hoặc có thể
cài đặt riêng độc lập.
Crystal report 9.0; 10.0,...
v Bản tích hợp cho VS2010 có thể dowload theo
địa chỉ
/>cr4vs2010/CRforVS_13_0.exe
10/31/16
4
2
10/31/16
Giới thiệu
v Làm việc dễ dàng với Unicode.
v Tích hợp chung với Visual Studio .NET
v Tạo report có thể hiển thị ở cả 2 mơi trường Winform và
Webform.
v Dễ dàng triển khai, có thể sử dụng các modules để tạo
file setup.
v Sử dụng kiến trúc ADO.NET để kết nối CSDL nhanh
hơn.
v Có khả năng tạo XML Report Web Services.
10/31/16
5
Tạo Report CR trong VS.NET
• Add/New Item/Reporting/CrystalReport/
chọn As a Blank Report
10/31/16
6
3
10/31/16
Report Designer
10/31/16
7
Các thành phần của Report
v Thành phần Report:
§
§
§
§
10/31/16
Report Header, Footer
Page Header, Footer.
Detail
[Group Header, Footer]
8
4
10/31/16
10/31/16
9
Một số đối tượng điều khiển trên Report
v TextObject
v Group
v Summary
v Line
v TextBox
v Picture
v Chart
10/31/16
10
5
10/31/16
Field Explorer
v Các loại trường/biểu thức có thể đưa vào Report
§
§
§
§
§
§
Database Fields
Formula Fields
Parameter Fields
Group Name Fields
Running Total Fields
Special Fields: Title, Page Number,..
10/31/16
11
Field Explorer
v Special Fields:
v Page Number
v Total Page Count
v Print Date
v Modification Date
v Report Selection Formula
v …
10/31/16
12
6
10/31/16
Chuẩn bị xây dựng báo cáo
v Mục đích của báo cáo là gì?
v Các cột dữ liệu nào sẽ có trong báo cáo?
v Dữ liệu sẽ được lấy từ đâu? Table hay View
v Hiển thị tất cả các bản ghi hay chỉ một phần – có lọc?
v Dữ liệu có gom nhóm – có sắp xếp?
v Báo cáo có u cầu tính tốn nào khơng?
10/31/16
13
Một số đối tượng thao tác dữ liệu
v ReportDocument
v DataDefinition
v CrystalReportViewer
10/31/16
14
7
10/31/16
Đối tượng ReportDocument
v Là lớp cơ sở đối với tất cả các báo cáo
v Mỗi báo cáo đều được kế thừa từ ReportDocument
v Các lớp thành phần:
10/31/16
15
Đối tượng ReportDocument
v Các lớp thành phần:
10/31/16
16
8
10/31/16
DataDefinition
v Cho phép truy xuất đến các trường như parameter
fields, sort field, summary fields,..
v Cho phép hiệu chỉnh các trường này trong khi thực thi –
runtime; hỗ trợ tùy biến báo cáo.
10/31/16
17
Điều khiển Crystal Report Viewer
Muốn hiển thị báo cáo sử dụng điều khiển CrytalReportViewer
Có thể dùng thay cho ReportDocument
10/31/16
18
9
10/31/16
Điều khiển Crystal Report Viewer
Các lớp thành phần
v Phương thức:
v ViewReport()
v PrintReport()
v Phương thức:
v Refresh()
v ….
10/31/16
19
Các thao tác cơ bản
v Bước 1: Thiết kế Report
§ Xác định nguồn dữ liệu:
•
•
•
•
Crystal Report/Database/DatabaseExpert
Chọn loại kết nối (OLEDB), xác định thông số
Chọn Table/View/SP cần
Xác định liên kết giữa các bảng nếu có
§ Đưa các trường/biểu thức vào report: kéo thả từ Fields Explorer
đặt vào từng phần trong thiết kế
§ Thiết lập định dạng
§ Thiết lập tính tốn, gom nhóm nếu có
§ Sắp xếp, lọc dữ liệu nếu có
10/31/16
20
10
10/31/16
10/31/16
21
10/31/16
22
11
10/31/16
Các thao tác cơ bản
v Bước 2: Hiển thị Report trong ứng dụng
§
§
§
§
§
Sử dụng Crystal Report Viewer
Viết code nạp Report (*.rpt) vào đối tượng ReportDocument
Truyền tham số , đặt lọc dữ liệu,… nếu có
Xác định nguồn dữ liệu cho báo cáo
Hiện Report lên CRViewer
10/31/16
23
Thiết kế Form để hiện Report
Viết lệnh hiện Report lên CRViewer
10/31/16
24
12
10/31/16
10/31/16
25
Kết quả thực hiện
10/31/16
26
13
10/31/16
Thiết lập nguồn dữ liệu cho Report
v Design: Report làm việc với CSDL ở máy thiết kế
v Runtime: Report có thể được gọi ở máy khác với máy
thiết kế => cần xác định lại nguồn dữ liệu cho Report
v B1: Thiết lập các thuộc tính của đối tượng TableLogOnInfo
thuộc namespace: CrystalDecisions.Shared;
TableLogOnInfo.ConnectionInfo
§
§
§
§
§
.ServerName
.DatabaseName
.IntegratedSecurity (true)
.UserID
.Password
v B2: sử dụng TableLogOnInfo cho từng Table trong
ReportDocument.Database
10/31/16
27
Thiết lập nguồn dữ liệu cho Report
10/31/16
28
14
10/31/16
Đặt lọc bản ghi
v Để lọc những bản ghi hiển thị trên report thỏa mãn điều
kiện nào đó ta sử dụng
<ReportDocument>.RecordSelectionFormula =
lọc>
Trong đó: <biểu thức lọc> được chỉ rõ:
{tên bảng.tên trường}
Ví dụ:
cryRpt.RecordSelectionFormula = "{tblSinhvien.malop} = 2";
10/31/16
29
Đặt lọc hiện sinh viên thuộc lớp có malop =2
10/31/16
30
15
10/31/16
Truyền tham số
v Tham số của Report (ParameterField) là những nội dung
mà khi thiết kế ta chưa biết hoặc giá trị của nó thay đổi
v Ví dụ:
Người lập danh sách
Số KW định mức
10/31/16
31
Truyền tham số
v Thêm tham số vào thiết kế Report (ParameterField)
10/31/16
32
16
10/31/16
Truyền tham số
v Truyền các giá trị cho các tham số để Report hiển thị
10/31/16
33
Kết quả chạy
10/31/16
34
17
10/31/16
18