sql >> データベース >  >> RDS >> Sqlserver

CrystalReportデータソースのリマップ

    以下に、私が使用する手順を示します(私はその場でそれを単純化し、独自のオブジェクトとグローバル変数を抑制しました)。この手順により、開発時に使用された元の接続からアクティブなSQLサーバーにレポートをリダイレクトできます。 VBで記述され、2つの主要なオブジェクトを使用します:

    1. CrystalReportのインスタンスを介して開かれた元のレポートオブジェクト
    2. 現在のSQLサーバーへのアクティブな接続(P_currentConnectionと呼ばれる)であるADODB接続

    この関数(サブの場合もあります)は、アプリケーションでレポートオブジェクトを表示/印刷する前に呼び出されます。これは、ユーザーが場所に応じて異なるサーバー/データベースに接続するレプリケートされたデータベース間でレポートを配布するときに使用できます。

    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. Oracleuser_indexesのMySQLへの変換

    2. PHPMYSQLはアラビア語でデータを挿入します

    3. AWSRDSデータベースインスタンスのセキュリティグループを変更します

    4. SqlDataReaderからデータを読み取る