Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Rave Report ausführen... (https://www.delphipraxis.net/12260-rave-report-ausfuehren.html)

barnti 24. Nov 2003 08:02


Rave Report ausführen...
 
Hallo,
ich habe mit dem Ravedesigner einen Report erstellt, den ich auch in der Entwicklungsumgebung erfolgreich ausführen kann.
Für einen Button in meinem Programm habe ich in das OnClickEreignis folgendes geschrieben:

Delphi-Quellcode:

RvProject.Execute;
Leider stürzt das Programm an dieser Stelle bei der Ausführung des Ereignisses mit einer Zugriffsverletzung ab.

Ich weiß leider überhaupt nicht, wie ich den Fehler weiter eingrenzen kann. Zur Designzeit wird der Report erfolgreich erstellt.

Kann jemand helfen?

Gruß,

Barnti


Nachtrag:

Ich habe folgendes festgestellt:

Der Report funktioniert, wenn ich die zugehörigen Komponenten auf mein Hauptformular positioniere. Vorher hatte ich ein eigenes Datenmodul dafür vorgesehen.
Ich verstehe nicht, warum ich die Rave-Komponenten nicht in ein eigenes Datenmodul bekomme.

Weiß jemand Rat?

Tonic1024 24. Nov 2003 08:35

Re: Rave Report ausführen...
 
Moin...

Hast du in deiner onClick prozedur nur den Text? Du musst ja noch die .RAV Datei öffnen und zuweisen.

soetwas sollte mindestens drin stehen.
Delphi-Quellcode:
RvProject.ProjectFile := ExtractFilePath(ParamStr(0))+'myReport.rav';
Ich kann dir noch die Seite von Nevrona empfehlen... Da habe ich mir viel herausgelesen... Tips vom Hersteller

Leider habe ich auch die Erfahrung gemacht, das sich Rave, wenn es sich verabschiedet, nie so genau sagt warum...

Bios denne...

barnti 24. Nov 2003 09:14

Re: Rave Report ausführen...
 
Hi,

Delphi-Quellcode:
Hast du in deiner onClick prozedur nur den Text? Du musst ja noch die .RAV Datei öffnen und zuweisen.

soetwas sollte mindestens drin stehen.
 
RvProject.ProjectFile := ExtractFilePath(ParamStr(0))+'myReport.rav';
Die Projektdatei ist fest im Modul TRVProject vorgegeben.

Außerdem funktioniert das ganze nur nicht, wenn ich ein eigenes Modul für die Komponenten vorsehe. Setze ich die Komponenten auf das Hauptformular meiner Anwendung funktioniert es!

Was mache ich falsch? Was muss ich tun, um die Komponenten in einem eigenen Datenmodul zum Laufen zu kriegen?

Danke für Ratschlag,
Gruß,

Barnti

Tonic1024 24. Nov 2003 09:37

Re: Rave Report ausführen...
 
Moin...

Hm, nee... dann kann es daran ja nicht liegen...

Ich habe sowas ähnliches schon mal gehabt.
Da hat mir folgendes geholfen:
Delphi-Quellcode:
type
  TDBAnbindung = class(TDataModule)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;                        


implementation

initialization
  DBAnbindung := TDBAnbindung.Create(nil);

finalization
  DBAnbindung.Free;

barnti 24. Nov 2003 09:52

Re: Rave Report ausführen...
 
Hi,

wie gesagt: das Problem besteht nur, wenn ich die Komponenten in ein eigenes Datenmodul auslagere. Sonst funktioniert es.
Beim Debuggen kann ich feststellen, dass

Delphi-Quellcode:

RvProject.Execute;
RvProject = nil ist. Irgentwie Funktioniert das Instanzieren wohl nicht. Der Typenzeiger verweist auf nix, wenn ich die Komponenten in ein eigenes Datenmodul auslagere. Ich verstehe das Problem nicht.

Gibt es noch weitere Ideen?

Gruß,

Barnti

merlin17 24. Nov 2003 09:54

Re: Rave Report ausführen...
 
barnti,

rave läuft normalerweise ohne probleme in einem datenmodul.
ist es sichergestellt, dass alle units/forms erstellt sind und/oder
evtl. falsche reihenfolge im dpr-file ?!


:-) thomas, TeamNevrona

Tonic1024 24. Nov 2003 10:06

Re: Rave Report ausführen...
 
Ja genauso äußerte sich das auch bei mir.

Zitat:

Zitat von barnti
Hi,

wie gesagt: das Problem besteht nur, wenn ich die Komponenten in ein eigenes Datenmodul auslagere. Sonst funktioniert es.
Beim Debuggen kann ich feststellen, dass

Bin mir nicht mehr sicher ob diese Lösung nur für DLL's oder generell gilt. Ansonsten Kannst du mal versuchen Dein RvProjekt über die Unit anzusprechen... Quasi so:

Delphi-Quellcode:
implementation

uses Datenmodul_Rave;

procedure TForm1.BtnClick(Sender: TObject);
begin
  Datenmodul_Rave.RvProject.Execute;
end;
Wenns daran gelegen hat, bekommst du einen Fehler: 'Datenmodul_Rave unbekannt' oder so.

Wenigstens weisst du dann mehr...

Bis denne...

barnti 24. Nov 2003 10:13

Re: Rave Report ausführen...
 
Hallo,

@merlin17: Du scheintst ja hier der Experte in Sachen Rave zu sein. Hatte gehofft, dass Du Dich einschaltest.

Zitat:

rave läuft normalerweise ohne probleme in einem datenmodul.
ist es sichergestellt, dass alle units/forms erstellt sind und/oder
evtl. falsche reihenfolge im dpr-file ?!
Das war meine erste Vermutung. Schutzverletzungen sind ja meist das Problem nicht bestehender oder noch nicht erzeugter Komponenten. Deshalb bin ich alles im "Step-Modus" durchgegangen - die Datenmodule bestehen beim Ereignis "OnClick". Daher ist das wohl nicht das Problem. Trotzdem wird die Komponente "RvProject" nicht richtig erzeugt...

Noch weitere Ideen?

Gruß,

Barnti

barnti 24. Nov 2003 10:34

Re: Rave Report ausführen...
 
Hallo noch einmal,

das Problem scheint doch mit der Generierung der Files im dpr-file zusammenzuhängen:

Delphi-Quellcode:
...
  Application.CreateForm(THauptForm, HauptForm); // noch korrekt
  Application.CreateForm(TAdminForm, AdminForm); // wird erzeugt

  Application.CreateForm(TDMReport, DMReport);  // hier kommt der normale Programmablauf nicht mehr
  Application.Run;                              // hin
...
Dadurch, dass ich Ereignisbehandlungsroutinen im Create vom "AdminForm" habe, wird der Ablauf unterbrochen. Soll heißen die Anwendung startet "normal", ich kann auch damit wie geplant arbeiten aber die letzten Zeilen werden nicht erreicht(Letztes FormCreate und Run).

Wenn ich das CreateForm(Report) vor Create Admin aufrufe klappt es!

Allerdings wird "Application.run" nie aufgerufen. Jedenfals nicht in diesem Block zur Startzeit des Programms...

Gruß,

Barnti

merlin17 24. Nov 2003 11:31

Re: Rave Report ausführen...
 
barnti,

Zitat:

Code:
  Application.CreateForm(THauptForm, HauptForm); // noch korrekt
  Application.CreateForm(TAdminForm, AdminForm); // wird erzeugt
  Application.CreateForm(TDMReport, DMReport);  // hier kommt der normale Programmablauf nicht mehr
  Application.Run;                              // hin
Dadurch, dass ich Ereignisbehandlungsroutinen im Create vom "AdminForm" habe, wird der Ablauf unterbrochen
was für (rave-bezogene) ereignisse hast du im adminModul ?? zu diesem zeitpunkt gibt es TDMReport ja noch nicht.

hier liegt das problem aber nicht mehr im rave, sondern etwas mehr auf delphi-seite, oder ?


:-) thomas


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz