Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Пренасочване на източника на данни на Crystal Report

По-нататък ще намерите процедурата, която използвам (опростих я в движение, като премахнах нашите собствени обекти и глобални променливи). Тази процедура позволява пренасочване на отчет от оригинална връзка, използвана по време на разработка, към активния SQL сървър. Написан е на VB и използва 2 основни обекта:

  1. Оригиналният отчетен обект, отворен чрез екземпляр на кристален отчет
  2. ADODB връзка е активната връзка (наречена P_currentConnection) към текущия SQL сървър

Тази функция (може да бъде и под) се извиква преди преглед/отпечатване на обекта на отчета в приложението. Може да се използва при разпространение на отчети между репликирани бази данни, където потребителите, в зависимост от тяхното местоположение, се свързват с различни сървъри/бази данни.

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

Може да се извика с процедура като:

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)

В случай че отчетът ви включва подотчети, може също да се наложи да ги пренасочите към активната връзка. В този случай ще трябва да прегледате всички обекти във вашия отчет, да маркирате тези, които са от типа отчет и да ги пренасочите към новата връзка. Сигурен съм, че ще се забавлявате, като добавите съответните допълнителни редове към тази оригинална процедура.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sql Server Linked Server Issue Неуспешно влизане за потребител „NT AUTHORITY\ANONYMOUS LOGON“

  2. Ограничението на външния ключ може да причини цикли или множество каскадни пътища?

  3. Не може да се влезе в SQL Server + SQL Server Удостоверяване + Грешка:18456

  4. Поддръжка на SQL 2008 HierarchyID в NHibernate

  5. Компресиране на специфичен дял в таблица в SQL Server (T-SQL)