Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

Re: alte quick reports in bds 2006 übernehmen ohne qr zu änd

  Alt 31. Jan 2007, 13:25
Zitat von cherry:
In D7 konnte man unter "Datei->Neu->weitere" einen "Bericht" (QR) erstellen...
Bei BDS2006 geht das nicht mehr (Zumindest bei mir)
die übernommenen QR sind normale Formulare.. vielleicht ist da der Bock???
Hallo, ich habe eine Lösung für Dich

Du hast Recht. Genau hier liegt das Problem.
Delphi denkt Dein Report ist ein Formular (TForm) und deshalb klappt es nicht.
Delphi 2006 kann (wegen des fehlenden QR Experten) nicht mit diesen Reports ohne Form umgehen.

Aber es gibt eine einfache Lösung:
  • Achte darauf, das der QuickReport als Text abgespeichert wird.
    (In die *.dfm Dateien kucken, falls die binär gespeicher sind, einfach im Delphi 7 in den Report gehen und das TQuckRep im Formulardesigner mit rechts anklicken und das Häckchen bei als Text speichern aktivieren)
  • Die *.dfm Datei in einem Texteditor (z.B. notepad) öffnen
  • Eine 2. Zeile (object myRep: TQuickRep) wie folgt einfügen:
    Delphi-Quellcode:
    object QuickReport2: TQuickReport2
      Left = 0
      Top = 0
      Width = 794
    ...
    wird zu
    Delphi-Quellcode:
    object QuickReport2: TQuickReport2
    object myRep: TQuickRep
      Left = 0
      Top = 0
      Width = 794
      Height = 1123
    ...
  • Am Ende der Datei noch ein zusätzliches END einfügen
    Delphi-Quellcode:
    ...
        Left = 56
        Top = 152
      end
    end
    wird zu
    Delphi-Quellcode:
    ...
        Left = 56
        Top = 152
      end
    end
    end
  • speichern
  • die zugehörige *.pas Datei im Editor öffnen
  • die Deklaration des Reports wie folgt ändern
    (aus class(TQuickRep) wird class(TForm) und myRep: TQuickRep; einfügen)
    Delphi-Quellcode:
    ...
    type
      TQuickReport2 = class(TQuickRep)
        QRBand1: TQRBand;
        QRSysData1: TQRSysData;
    ...
    wird zu
    Delphi-Quellcode:
    ...
    type
      TQuickReport2 = class(TForm)
        myRep: TQuickRep;
        QRBand1: TQRBand;
        QRSysData1: TQRSysData;
    ...
  • speichern
  • Delphi 2006 starten
  • Projekt laden
  • Report in Delphi öffnen -> geht ohne Fehler !!!
  • Beim Compilieren treten nun Fehler an allen Stellen auf, in denen auf den Report zugegriffen wird.
    Das lässt sich aber leicht beheben:
    Einfach ein myRep. einfügen.
    Delphi-Quellcode:
    ...
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      QuickReport2.Preview;
    end;
    ...
    wird zu
    Delphi-Quellcode:
    ...
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      QuickReport2.myRep.Preview;
    end;
    ...
  • Fertig !!!
Damit sollte Dein Problem gelöst sein.

Was wurde gemacht?
Eigentlich ganz einfach. Da TQuickRep eine visuelle Komponente ist, die man auf ein Formular legen kann, habe ich bei den Reports ohne Formular einfach ein leeres Formular druntergelegt Das Formular heißt nun wie Dein Report und der eigentliche Report heißt myRep. Da der Report nun auf dem Formular liegt, muß beim Zugriff auf den Report natürlich nicht nur der Report, sonder auch das Formular angegeben werden. -> Formular.Report.Preview -> alterReportname.myRep.Preview
Das ist alles.

Eigentlich ganz einfach, oder?

Viel Spaß
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat