Home General
New Blog Posts: Merging Reports - Part 1 and Part 2

Upgrade from RB 12.05 to RB 18 B2

edited July 2013 in General
Hi there,
I have some strange problem with upgrade. Not so long ago we purchased
the new ReportBuilder 15 (Build 201) and as usually I have uninstalled
previous version and installed new version, added my translation files
(Slovenian), deleted all DCU's and then rebuild our major application
for first test drive.
More or less all reports do work without any need to convert except for
one particular part of the program. We have to print out some special
medical forms and for this there are about 10 different reports which
all of them get loaded through same procedure and then get printed. But
only a couple of them do get printed without any problems while the
rest freeze a program in such way that even MadExcept does not find the
application freezed. The report preview gets on the screen, background
is gray (not white as paper), in the left bottom edge there is
inscription Accessing data and that's it. I can't click anywhere, not
even on button Cancel.
The data is organized as such:

Master pipeline - Detail Pipeline 1 (connected to Master)
- Detail Pipeline 2 (connected to Master)

All three datasets have same fields in all cases, Detail pipeline 2
could be empty or not, depending on the report. In any case,
Master+Detail1 are always full, also tested in these cases. What is
even more strange is that if I load completely empty report with one
non-data aware label instead of one faulty report, RB still gets stuck.

Any ideas? Did anyone has experience similar problem, maybe with RB14?

With Best regards,
Goran Brumen
AUDAX d.o.o.

Comments

  • edited July 2013
    Goran Brumen wrote:


    Hi,
    to add some additional clarification. Data is in ClientDataSets and is
    fed to RB through standard TDataSource - TppDBPipeline. Function for
    printing (after all data is updated in CDS's) is:

    function Print(AFileName: String; ALeft, ATop: extended): boolean;
    begin
    Result := False;
    with ppObrazec do
    begin
    Template.FileName := AFileName;
    Template.LoadFromFile;

    if glDebug then
    DeviceType := 'Screen'
    else
    DeviceType := 'Printer';
    AllowPrintToFile := False;
    PreviewFormSettings.WindowState := wsNormal;
    //PreviewFormSettings.WindowState := wsMaximized;
    //PreviewFormSettings.ZoomSetting := zs100percent;
    SavePrinterSetup := True;
    OnPrintDialogClose := ppObrazecPrintDialogClose;

    PrinterSetup.PrinterName := glObrazciSkup.PrinterName;
    PrinterSetup.BinName := glObrazciSkup.PrinterBin;

    PrinterSetup.MarginLeft := ALeft;
    PrinterSetup.MarginTop := ATop;
    PDFSettings.ScaleImages := False;
    Print;
    Result := True;
    end;
    end;

    We use Delphi XE Enterprise with all updates, Windows 8 x64 8 GB RAM,
    ReportBuilder 15.0 Build 201.

    Best regards,
    Goran
  • edited July 2013
    Hi Goran,

    As a test, try setting the Report.PreviewFormSettings.SinglePageOnly
    property to True and see if that solves the issue.

    This disables the new threading architecture used for multi-page
    previewing which may cause a conflict with that section of your application.

    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
  • edited July 2013
    Nico, this is a wonder :) Yes it works now as it worked before.
    Fortunatelly these forms are more or less single page and I can leave
    this property in the code.
    If You need data to find a solution, I can send You CDS XML data by
    mail.

    Thank You and best regards,
    Goran



  • edited July 2013
    Hi Goran,

    This issue likely has nothing to do with the data itself. The threading
    architecture is constantly sending and receiving windows messages which
    can conflict with your application's other components.

    If for instance you have some data-aware Delphi components connected to
    the same datasets as the report, this can cause issues. To work around
    this you can either keep all report datasets separate from other
    components or you can try disabling the controls using the
    DisableControls call before calling Print.

    DataSet.DisableControls;
    try
    Report.Print;
    finally
    Dataset.EnableControls
    end;

    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
This discussion has been closed.