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