Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Bản đồ lại nguồn dữ liệu Crystal Report

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:

  1. Đố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ê
  2. 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C # / SQL:sao lưu và khôi phục bằng cách sao chép và thay thế các tệp cơ sở dữ liệu?

  2. Khung thực thể 4 Bảng mỗi thứ bậc - Làm thế nào để xác định thuộc tính điều hướng trên trẻ em?

  3. Lỗi tràn số học khi chuyển đổi biểu thức thành kiểu dữ liệu int

  4. Truy vấn SELECT có luôn trả về các hàng theo cùng một thứ tự không? Bảng có chỉ mục được phân nhóm

  5. Thực thi các câu lệnh chuẩn bị do NHibernate tạo trong SQL Server Management Studio