Einzelnen Beitrag anzeigen

cytrinox

Registriert seit: 4. Sep 2006
88 Beiträge
 
#13

Re: Crystal Reports XI + Delphi und unterschiedliche Datenba

  Alt 12. Aug 2007, 15:21
Noe, denn ich weiß ja nicht was für Verknüpfungen der Report braucht.

Ich weiß ja nicht, ob du mit CR schonmal gearbeitet hast, aber um dort z.B. einen INNER JOIN zu erstellen, geht man in die Datenbankverwaltung rein, da hat man z.B. seine zwei Tabellen und zieht das eine zu verknüpfende Feld auf das der anderen Tabelle - genauso wie z.B. bei Access.

Ich kann bei den TCrpeDS Komponenten nicht mehr machen also zu sagen:


CrpeDS1.connection := myZconnection;
CrpeDS1.sql("SELECT * FROM tbl_1");
CrpeDS2.connection := myZConnection;
CrpeDS2.sql("SELECT * FROM tbl_2");

CrpeViewer.open(report.rpt);

CrpeViewer.tableByName(tbl_1).datapointer := crpeDS1.datapointer;
CrpeViewer.tableByName(tbl_2).datapointer := crpeDS2.datapointer;

Damit bekommt CR zwei komplette Resultsets und muss diese anhand der im Report hinterlegten verknüpfung selbst ausrechnen.


Mit einer SQL fähigen Schnittstelle hängt man einfach die Datenbankverbindung an das CrpeVier Object, z.b. eine ODBC Verbindung, CR sieht er hat eine SQL Datenbank zu Verfügung, erzeugt einen SQL INNER JOIN, schickt das an die Datenbank und das eine Resultset dass es bekommt wir einfach nur noch ausgedruckt.


Es sollte dir wohl klar sein, dass erste Methode länger dauert, zum einen weil die ganzen datenbankspezifischen Optimierungen wegfallen, die ein Datenbanktreiber hätte, zum anderen weil auch Datenstätze geholt werden, die z.B. keinen passenden verknüpften Datensatz in der zweiten Tabelle enthält und CR die dann selbst "wegwerfen" muss.



(Den Code soll jetzt kein Delphicode sein sondern nur die Vorgehensweise verdeutlichen )
  Mit Zitat antworten Zitat