Crystal Report
Mục tiêu bài thuyết trình:
Thiết kế 1 chương đơn giản từ khâu kết nối CSDL –
hiện thị lên form – tạo ra 1 report.
Giới thiệu Crystal Report
Crystal Reports là công cụ thiết kế báo cáo cho phép bạn
tạo ra những báo cáo 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
Crystal Report được tích hợp sẵn trong bộ Visual Studio
Team System và Professional (còn phiên bản VS Express
thì không có)
Ngoài ra, bạn có thể download Crystal Report và sử dụng
công cụ này như 1 phần mềm chuyên dùng để thiết kế
report (dĩ nhiên là có tính phí)
Chương trình minh họa
Đầu tiên, chúng ta tạo CSDL (mình dùng SQL) tạo 1
database tên VD, có 1 table là NhanVien
NhanVien (MaNV, HoTen, SoDT, NgVL)
Form chính :
Viết 1 chương trình hiện thị table NhanVien lên
form, và 1 button in:
Tạo DataTable
Bước tiếp theo là tạo 1 DataTable trong Dataset để
chứa data sẽ đổ vào Crystal Report.
DataTable
Chú ý: DataTable mới tạo phải có số lượng ,tên
colum giống hệt với số lượng và tên colum mà ta sẽ
chứa dữ liệu cần hiện thị.
Tạo Crystal Report mới:
Vào Project -> Add New Item -> Crystal Report
Cửa sổ Crystal Report Gallery
Các bạn chọn “As a Blank report”
để dễ dàng thao tác theo ý mình->ok
Khi các bạn đã hiểu rõ và thành thạo
hơn các bạn có thể dùng “Using the
Report Wizard” để tiến hành thao tác
nhanh chóng
“From a Existing Report” là mở
Một báo cáo đã có sẵn
Giao diện của Crystal Report
Các Section của báo cáo
Report Header : phần tiêu đề của báo cáo
Các Section của báo cáo
Report footer : xuất hiện ở cuối cùng của báo cáo,
thường là tổng kết, ký tên
Các Section của báo cáo
Page header : thường xuất hiện ở đầu mỗi trang,
dùng để ghi tiêu đề các cột, số trang
Các Section của báo cáo
Page footer : thường xuất hiện ở cuối mỗi trang,
dùng để ghi số trang, ngày giờ in báo cáo
Các Section của báo cáo
Details : Xuất hiện đối với mỗi mẫu tin thường được
dùng in thông tin của cột
Đưa DataTable vào Report
Click phải “Database Fields” chọn “Database Expert ”
Bạn chọn như hình, và đưa
DataTable hồi nãy sang
“Selected Tables” bằng
nút [>]
Kết nối Datatable vào Report
Vậy từ nãy giờ chúng ta thiết kế Dataset và Crystal
Report để làm gì?
Câu trả lời nằm ở phần này: Dataset giống như 1 cái
thùng chứa rỗng (datatable) nó sẽ chứa thông tin mà
chúng ta đưa vào để hiện lên report, công việc tiếp
theo mà chúng ta sẽ làm là gắn từng colum trong
datatable vào report để hiện thông tin.
Đưa colum vào Report
Công việc rất đơn giản chỉ là “kéo và thả” các colum
vào vị trí cần hiện thị
Một số fields đặc biệt
. Print Date : ngày in
. Page Number : số trang
. Chỉ cần kéo thả, là bạn có ngay 1
fields hữu ích cho báo cáo.
Tạo form chứa CrystalReportViewer
Tạo 1 form mới và thêm
vào tool
“crystalreportviewer” các
bạn nên chỉnh
WindowsState là Maximun
để dễ nhìm
Chúng ta sẽ dùng form này
để load report lên.
Thoàn thành phần thiết kế giao diện
Từ nãy giờ chúng ta đã thiết kế 3 thành phần:
- Dataset: để tạo datatable.
- Crystal Report: để thiết kế report.
- Form thứ 2: chứa CrystalReportViewer để hiện thị
report.
-> công dụng của 3 thành phần này là: database như 1
cái table chứa các cột dữ liệu, để thể hiện lên report,
và report này được xem bằng công cụ
CrystalReportViewer trong form mới tạo.
Kết nối thành phần bằng code
Nhưng tất cà những thành phần kia, chúng chỉ là các
table rỗng, không có dữ liệu gì cả, công việc của
chúng ta bây giờ là dùng code kết nối chúng lại với
nhau thành 1 chương trình hoàn thiện.
Trong bước chuận bị đầu tiên, chúng ta đã kết nối
dữ liệu với SQL server, và đưa dữ liệu vào biến
“hienthi” kiểu DataTable và đổ vào DataGirViewer.
Code kết nối CSDL SQL Server
‘khai báo các biến
Public ketnoi As New SqlConnection()
Public kq_truyvan As New SqlDataAdapter
Public hienthi As New DataTable
Chú ý: biến hiện thị sẽ dùng để chứa kết quả là các
dòng và cột. Biến này sẽ dùng cho việc hiện thị lên
DataGridViewr và đổ vào DataTable của report.
ketnoi.ConnectionString = "server=ANH-
PC\SQLEXPRESS;database=vd;trusted_connection=tr
ue;uid=;pwd="
ketnoi.Open()
kq_truyvan = New SqlDataAdapter("select * from
NHANVIEN", ketnoi)
kq_truyvan.Fill(hienthi)
Me.DataGridView1.DataSource = hienthi
Sự kiện form Load
Code đưa kết quả vào table của report
' Nap du lieu cho report
Dim myreport As New CrystalReport1
myreport.SetDataSource(hienthi)
'Nap form trong report
Dim f As New Form2
f.CrystalReportViewer1.ReportSource = myreport
f.Show()