Trong mơ hình Pull đã đề cập ở trên, khi khai báo nguồn dữ liệu trong thiết kế, chúng ta phải chỉ rõ
nguồn dữ liệu (đường dẫn của tập tin mdb hay thơng tin đăng nhập trong SQL Server). Vì thế, lúc thực thi, cần định lại thơng tin nguồn CSDL.
Trước hết cần làm quen với một số đối tượng trong CrystalDecisions.CrystalReports.Engine:
Các đối tượng trong CrystalDecisions.CrystalReports.Engine
Tên Mơ tả
Database Nguồn CSDL sử dụng cho báo biểu.
Table Thơng qua chỉ số, tên trả về bảng tương ứng được sử dụng trong báo biểu. Tables Tập hợp các bảng sử dụng trên báo biểu.
Báo biểu cĩ thành phần Database cho biết nguồn dữ liệu hiển thị. Khi vị trí nguồn thay đổi, chúng ta phải định lại vị trí nguồn mới cho báo biểu thơng qua thơng tin đăng nhập của Table, thuộc tập hợp
Tables của Database.
Thơng tin đăng nhập thuộc lớp TableLogOnInfo trong khơng gian tên CrystalDecisions.Shared.TableLogOnInfo với các thơng tin:
Tên Mơ tả
ConnectionInfo Đối tượng chứa thơng tin kết nối của bảng.
DatabaseName Tên tập tin CSDL.
Password Mật khẩu truy cập nguồn CSDL ServerName Tên server hoặc nguồn dữ liệu ODBC. UserID Tên người dùng để truy cập CSDL.
Thơng tin TableLogOnInfo của bảng cĩ tính chỉ đọc và mặc định lưu giữ thơng tin kết nối lúc chúng ta khai báo nguồn để thiết kế báo biểu. Khi thay đổi và muốn cập nhật lại, chúng ta phải sử dụng phương thức ApplyLogOnInfo của đối tượng Table với tham số là TableLogOnInfo chúng ta đã thay đổi.
Ví dụ: Minh họa khi nguồn dữ liệu là MS Access
Dim f As New Form()
' CReportVD là báo biểu đã tạo lúc thiết kế Dim rpt As New CreportVD()
Dim cv As New CrystalDecisions.Windows.Forms.CrystalReportViewer() f.Controls.Add(cv)
cv.Dock = DockStyle.Fill
Dim logOnInfo As CrystalDecisions.Shared.TableLogOnInfo
' Nếu các Table cùng từ một nguồn dữ liệu, chỉ cần định lại cho một bảng là đủ logOnInfo = rpt.Database.Tables(0).LogOnInfo logOnInfo.ConnectionInfo.ServerName = <đường dẫn đến .mdb> rpt.Database.Tables(0).ApplyLogOnInfo(logOnInfo) cv.ReportSource = rpt f.ShowDialog()
Ví dụ: Minh họa khi nguồn dữ liệu là SQL Server
Dim f As New Form()
' CReportVD là báo biểu đã tạo lúc thiết kế Dim rpt As New CreportVD()
Dim cv As New CrystalDecisions.Windows.Forms.CrystalReportViewer() f.Controls.Add(cv)
cv.Dock = DockStyle.Fill
Dim logOnInfo As CrystalDecisions.Shared.TableLogOnInfo
' Nếu các Table cùng từ một nguồn dữ liệu, chỉ cần định lại cho một bảng là đủ
logOnInfo = rpt.Database.Tables(0).LogOnInfo
logOnInfo.ConnectionInfo.ServerName = <Tên server> logOnInfo.ConnectionInfo.DatabaseName = <Tên CSDL> logOnInfo.ConnectionInfo.UserID = <Người dùng> logOnInfo.ConnectionInfo.Password = <Mật khẩu>
rpt.Database.Tables(0).ApplyLogOnInfo(logOnInfo) cv.ReportSource = rpt
f.ShowDialog()