0

他の人と同じ問題に苦しんだ後、CrystalReportsXIレポートをプレビュー/印刷するためのこのソリューションを思いつきました。これは、ログインシーケンスのために数行を借用します。* TLB.pasファイルには、テーブルのリストを実行するのではなく、サーバーに直接ログインできるものがまだ見つかりません。とにかく、これが私がこの時点で持っているものです。それが誰かを助けることを願っています!

Unit CrystalReports;
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,          Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.OleCtrls, ActiveX, ComObj, Data.DB, Data.Win.ADODB,
    CrystalActiveXReportViewerLib11_TLB, Vcl.OleServer, CrystalReportsControllersLib_TLB;

    type
    TCrystalReportForm = class(TForm)
        CRV: TCrystalActiveXReportViewer;
        procedure DisplayReport;
    private
        { Private declarations }
    public
        {Public declarations }
        ReportName : WideString;
        ReportCaption : String;
        ReportSelectionFormula : WideString;
    end;

    var
    CRXIRuntime : Variant;

    implementation

    {$R *.dfm}

    procedure TCrystalReportForm.DisplayReport;
    var
    CrystalReport : variant;
    i : integer;

    begin
    CrystalReport := CRXIRuntime.OpenReport(ReportName);
    for i := 1 to CrystalReport.Database.Tables.Count do begin
        CrystalReport.Database.Tables[1].ConnectionProperties.Item['User ID'] := 'user';
        CrystalReport.Database.Tables[1].ConnectionProperties.Item['Password'] := 'password';
    end;
    CrystalReport.FormulaSyntax := 0;
    Caption := ReportCaption;
    CrystalReport.RecordSelectionFormula := ReportSelectionFormula;
    CRV.Align := alClient;
    CRV.ReportSource := CrystalReport;
    WindowState := wsMaximized;
    CRV.ViewReport;
    ShowModal;
    end;

    begin
    CRXIRuntime := CreateOleObject('CrystalRuntime.Application');
    end.
4

0 に答える 0