Bạn sẽ tìm thấy ở đây sau quy trình tôi sử dụng (tôi đã đơn giản hóa nó ngay lập tức, loại bỏ các đối tượng và biến toàn cục của chính chúng ta). Thủ tục này cho phép chuyển hướng một báo cáo từ một kết nối ban đầu được sử dụng tại thời điểm phát triển đến máy chủ SQL đang hoạt động. Nó được viết bằng VB và sử dụng 2 đối tượng chính:
- Đối tượng báo cáo ban đầu được mở thông qua một phiên bản của báo cáo pha lê
- Kết nối ADODB là kết nối đang hoạt động (được gọi là P_currentConnection) với máy chủ SQL hiện tại
Chức năng này (cũng có thể là một phụ) được gọi trước khi xem / in đối tượng báo cáo trong ứng dụng. Nó có thể được sử dụng khi phân phối báo cáo giữa các cơ sở dữ liệu được sao chép trong đó người dùng, tùy thuộc vào vị trí của họ, kết nối với các máy chủ / cơ sở dữ liệu khác nhau.
Public Function connectReportToDatabase( _
P_report As CRAXDRT.Report)
Dim table As CRAXDRT.DatabaseTable, _
For Each table In P_report.Database.tables
If table.DllName <> "crdb_ado.dll" Then
table.DllName = "crdb_ado.dll"
End If
table.ConnectionProperties.DeleteAll
table.ConnectionProperties.Add "Provider", P_currentConnection.Provider
table.ConnectionProperties.Add "Data source", P_currentConnection.Properties("Data source").Value
table.ConnectionProperties.Add "Database", P_currentConnection.DefaultDatabase
table.ConnectionProperties.Add "Integrated security", P_currentConnection.Properties("Integrated security").Value
table.ConnectionProperties.Add "Persist Security Info", P_currentConnection.Properties("Persist Security Info").Value
table.ConnectionProperties.Add "Initial Catalog", P_currentConnection.Properties("Initial Catalog").Value
table.SetTableLocation table.location, "", P_currentConnection.ConnectionString
table.TestConnectivity
Next table
Nó có thể được gọi với một thủ tục như:
Dim crystal As CRAXDRT.Application, _
m_report as CRAXDRT.report
Set crystal = New CRAXDRT.Application
Set m_rapport = crystal.OpenReport(nameOfTheReport & ".rpt")
connectreportToDatabase(m_report)
Trong trường hợp báo cáo của bạn bao gồm các báo cáo phụ, Bạn cũng có thể phải chuyển hướng chúng đến kết nối đang hoạt động. Trong trường hợp này, bạn sẽ phải duyệt qua tất cả các đối tượng trong báo cáo của mình, kiểm tra những đối tượng thuộc loại báo cáo và chuyển hướng chúng đến kết nối mới. Tôi chắc chắn rằng bạn sẽ thấy vui khi thêm các dòng bổ sung tương ứng vào quy trình ban đầu này.