Tác giả: Đoàn Thị Thùy Trang
Cấp độ bài viết: Cơ bản + Hơi nâng cao
Tóm tắt: Hướng dẫn thao tác với Crystal Report động (Crystal Report.Net)
-Đa số các trường hiển thị trong các báo cáo đều được thiết kế cố định, tức là lúc thiết kế thế nào thì lúc hiển thị nó sẽ y thế ấy. Tuy nhiên, trong một số trường hợp, chúng ta lại có nhu cầu điều khiển, tùy biến việc hiển thị của các trường đó, vậy phải làm thế nào đây? Tạo report động.
-Bài viết này là kết quả của quá trình tìm hiểu, học hỏi của mình. Vì vậy, để hiển thị một report động, cách thực hiện của mình có thể hơi dài dòng một xíu. Nói chung, nó cũng còn theo phong cách “du kích”, đụng đâu đánh đó thôi, mà kệ, miễn nó chạy ầm ầm hong báo lỗi là ok òi. Bạn nào có cách hay hơn thì chia xẻ nhé. Nếu không thì … cũng hong sao.

1. Giới thiệu:
“Tin học” là gì ? Hì, hiểu nôm na, mau lẹ là có tin mới học

- Dữ liệu để test report: Đặt trong thư mục Data của Project
- Tên CSDL: DynamicReport.mdb Pass: 123
2. Module phục vụ cho việc hiển thị report:
- Kiểm tra sự tồn tại của bảng dữ liệu trong CSDL. Trong đó, tablename là tên bảng cần kiểm tra.
Code: Select all
Function Kiemtra(ByVal tablename As String) As Boolean Dim dt As DataTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _ New Object() {Nothing,Nothing, Nothing, "TABLE"}) For Each dr As DataRow In dt.Rows If dr("TABLE_NAME") = tablename Then Kiemtra = True Exit For End If Next Return KiemtraEnd Function
- Hiển thị report:
Code: Select all
Sub ShowReport(ByVal frm As FrmReport, ByVal rpt As ReportDocument, _ ByVal ds As DataSet, _ Optional ByVal bien() As Integer = Nothing, _ Optional ByVal giatri() As String = Nothing) rpt.SetDatabaseLogon("Admin", "123") rpt.SetDataSource(ds) If Not bien Is Nothing Then For i As Integer = 0 To bien.Length - 1 rpt.SetParameterValue(bien(i), giatri(i)) Next End If frm.crp.ReportSource = rpt frm.crp.Refresh() frm.crp.Zoom(100) frm.Show() End Sub
Trong đó:
+ FrmReport: form hiển thị Report, form này chứa control CrystalReportViewer tên là crp.
+ bien, giatri: các tham số tùy chọn dùng để truyền giá trị cho các parameter trong report. Nếu report không có thì thiết lập bằng nothing.
- Thực thi câu truy vấn sql
Code: Select all
Sub execute(ByVal s As String) Dim cmd As OleDbCommand = New OleDbCommand(s, con) cmd.ExecuteNonQuery() cmd.Dispose() cmd = NothingEnd Sub