Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Temporäre Datenbank vom ADS an Crystal Reports übergeben (https://www.delphipraxis.net/101690-temporaere-datenbank-vom-ads-crystal-reports-uebergeben.html)

hsg 17. Okt 2007 13:35

Datenbank: Advantage Database Server • Version: 8.1 • Zugriff über: TDataSetDescendet

Temporäre Datenbank vom ADS an Crystal Reports übergeben
 
Hallo,

ich habe einen fertig designten crystal XI Release 2 - Report, der auch auf der Originalen Datenbank super funktioniert.
Nun erzeuge ich in einem anderen Programmteil zwei temporäre Tabellen und fülle die mit Daten. Auch das funktioniert einwandfrei.

Nun soll diese temporären Daten ausgedruckt werden und da fängt mein Problem an. Da die temporäre Datenbank beim ADS an der Connection zum Datenbank-Server liegt, muss ich im Crystal Reports das ConnectionHandle übergeben, das scheint auch zu funktionieren, zumindest kommt keine Fehlermeldung. Aber zusätzlich muss ich im Report auch den Namen der beteiligten Tabellen ändern. Nur wie?

Hier erst einmal der Code:
Delphi-Quellcode:
procedure TBlindBereitFRM.mnuPrintClick(Sender: TObject);
var
 iDb : IDatabase;
 idT : IDatabaseTable;
 i   : Integer;
 iApp : CRAXDDRT_TLB.TApplication;
 iRep : CRAXDDRT_TLB.IReport;
begin
  if PPSReportPreview = nil then begin
    iApp := CRAXDDRT_TLB.TApplication.Create(Self);
    iRep    := iApp.OpenReport(Global.Reports + 'Bereitstellung.rpt');
    if iRep <> nil then begin
      iDb := iRep.Database;
      for i := 1 to iDb.Tables.Count do begin
        iDT := iDb.Tables.Item[i];
        if UpperCase(idT.Name) = 'PRQUE' then begin
          idT.Name := StringToWideString('#PrqueTmp');
          idT.SetLogOnInfo( Global.Connections.dcLager.AliasName,
                           'ConnectionHandle=' + IntToStr( Global.Connections.dcLager.Handle ) + ';',
                           '',
                           '' );
        end;
        if UpperCase(idT.Name) = 'BEREITSTLG' then begin
          idT.Name := StringToWideString('#BereitTmp');
          idT.SetLogOnInfo( Global.Connections.dcLager.AliasName,
                           'ConnectionHandle=' + IntToStr( Global.Connections.dcLager.Handle ) + ';',
                           '',
                           '' );
        end;
      end;
      iRep.DiscardSavedData();
      irep.formulasyntax   := crCrystalSyntaxFormula;
      iRep.RecordSelectionFormula := '';
      PPSReportPreview         := TPPSReportPreview.Create(self, 'Bereitstellung');
      PPSReportPreview.SetReport(iApp,iRep);
      PPSReportPreview.ShowReport('',True);
      PPSReportPreview.Free();
      if iApp <> nil then
        iApp.Free();
      iRep                   := nil;
    end;
  end;
end;
Sobald der Report angezeigt werden soll, meckert Crystal, dass im Namen #BereitTmp ungültige Zeichen vorhanden sind.
Wie kann ich nun dem Crystal sagen, welche Tabelle er statt der Originalen Tabelle nehmen soll?

BTW: die Strukturen der temporären Tabellen stimmen vollständig mit denen der Originalen Tabellen überein.

Danke für jede Hilfe

chericks 17. Okt 2007 14:06

Re: Temporäre Datenbank vom ADS an Crystal Reports übergeben
 
So wie ich das sehe, nutzt du die temporären Tabellen (#) bei ADS. Diese existieren ja nur solange die Session noch existiert. Könnte mir vorstellen, dass Crystal diese nicht unterstützt. Ich würde das über normale Tabellen lösen und diese dann vor dem Füllen leeren.

hsg 17. Okt 2007 14:31

Re: Temporäre Datenbank vom ADS an Crystal Reports übergeben
 
Korrekt, ich nutze die Temporären Tabellen im ADS. Damit Crystal an die entsprechende Session herankommt übergebe ich ihm ja das ConnectionHandle.
Laut Roadshow zum ADS 8.1 heiß es zu diesem Thema
Zitat:

Enhanced Crystal Reports Support
- Driver allows to pass in a Connection Handle
* Reduced Overhead
* Increased Performance
* Sharing of Temp Tables
Also genau, was ich will. Nur wie setze ich im Crystal den Tabellenname um?

chericks 17. Okt 2007 15:35

Re: Temporäre Datenbank vom ADS an Crystal Reports übergeben
 
Hatte bisher nur mit Crystal 8 zu tun, an deiner stelle würde ich Joachim Dürr bei ADS mal fragen, der weiß eigentlich immer ne Antwort.

hsg 18. Okt 2007 05:53

Re: Temporäre Datenbank vom ADS an Crystal Reports übergeben
 
Ich hoffe ja darauf, dass er hier antwortet...

joachimd 25. Okt 2007 12:56

Re: Temporäre Datenbank vom ADS an Crystal Reports übergeben
 
Zitat:

Zitat von hsg
Ich hoffe ja darauf, dass er hier antwortet...

Dann bin ich ja wohl in der Pflicht...Leider habe ich mit Crystal noch nicht gearbeitet und kann hier nicht weiterhelfen. Die schnellste Lösung sollte über die Advantage Foren (devzone.advantagedatabase.com - Advantage.Crystal) zu bekommen sein. Da lesen auch die Entwickler mit.

hsg 26. Okt 2007 06:34

Re: Temporäre Datenbank vom ADS an Crystal Reports übergeben
 
Zitat:

Zitat von joachimd
Zitat:

Zitat von hsg
Ich hoffe ja darauf, dass er hier antwortet...

Dann bin ich ja wohl in der Pflicht...Leider habe ich mit Crystal noch nicht gearbeitet und kann hier nicht weiterhelfen. Die schnellste Lösung sollte über die Advantage Foren (devzone.advantagedatabase.com - Advantage.Crystal) zu bekommen sein. Da lesen auch die Entwickler mit.

Dort läuft bereits seit über einer Woche ein entsprechender Thread, eines meiner Probleme ist leider doch die Tatsache, dass ich die offene Connection nicht an Crystal übergeben bekomme und damit findet der Report natürlich auch die Temporären Datenbanken nicht. :(

joachimd 26. Okt 2007 08:53

Re: Temporäre Datenbank vom ADS an Crystal Reports übergeben
 
Zitat:

Zitat von hsg
Dort läuft bereits seit über einer Woche ein entsprechender Thread, eines meiner Probleme ist leider doch die Tatsache, dass ich die offene Connection nicht an Crystal übergeben bekomme und damit findet der Report natürlich auch die Temporären Datenbanken nicht. :(

Mail an Support. Wie gesagt, ich kann hier leider nicht helfen, da ich keine Ahnung von Crystal habe. Die Jungs hier zwar auch nicht, aber die haben die Eskalationspfade (ich mache keinen support mehr, nur noch Presales).


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 Uhr.

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