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ß