![]() |
Datenbank: Oracle • Version: 11 • Zugriff über: ??
Rechnung per PDF aus Oracle
Moin,
ich habe hier etwas wo ich noch nicht einmal einen Ansatz habe wie man das machen kann :-( Ich muss aus einer Warenwirtschaft Rechnungskopien als PDF ziehen. Dazu müsste ich ein Programm aufrufen, die entsprechende Rechnungsnummer als Parameter übergeben und dann mir dieses PDF generieren und auf Platte ablegen. Als SQL-Script habe ich das ja - aber wie mache ich das in Delphi ?
Delphi-Quellcode:
Vielen Dank
declare
cursor c_rg is select r.kunden_id, r.rechnung_nr, r.rg_nr2, r.filiale, v.rg_anschrift from rechnungs_kopf r, v_rechnungen_kdrg v where r.kunden_id = &1 and r.rechnung_nr = &2 and r.kunden_id = v.kunden_id and r.rechnung_nr = v.rechnung_nr; gonogo varchar2(5) default 'go'; rg c_rg%rowtype; cnt number; i number default 0; j number default 0; out_pfad varchar2(50); pdf_datei varchar2(500); ex_seq number; nex_seq number; rg_report varchar2(25); out_ok boolean; subtype t_vcmax is varchar2(32767); befehl t_vcmax; h_clob clob; i_datei varchar2(100); ret_msg varchar2(4000); begin open c_rg; fetch c_rg into rg; if (c_rg%found) then rg_report := get_report(rg.kunden_id, 'ERGK', rg.rg_anschrift); -- Pfadname fest eintrgen. Muss ein physikalisches Laufwerk auf dem Server sein. out_pfad := 'd:\oout\'; --' --mit abschliessenden \ pdf_datei := out_pfad||get_pdf_dateiname(rg.kunden_id, 'RGPDFEXPORT', rg.rechnung_nr); kl_report.write_rg2pdf(rg_report, pdf_datei, rg.kunden_id, rg.rechnung_nr, nvl(rg.filiale,1)); end if; close c_rg; end; / exit Hans |
AW: Rechnung per PDF aus Oracle
Du hast doch die Datenbankroutine, rufe die aus deinem Delphiprogramm auf. Wo die PDF-Datei liegt, ergibt sich aus dem Quelltext der Datenbankroutine, die Info ist also "reproduzierbar", sprich: Du kannst im Delphiprogramm die PDF-Datei laden und anzeigen, oder sie, wie auch immer, weiterverarbeiten.
'ne eigene Logik würd' ich nicht bauen. Sind Änderungen erforderlich, werden die nur an der Datenbankroutine vorgenommen. Nur, falls sich der Aufbau und Ablageort der PDF-Dateien ändern sollte, müsstes Du im Delphiprogramm was ändern. Ideal wäre natürlich, wenn die Datenbankroutine den Dateinamen entweder als Rückgabewert oder als Parameter zurückgeben könnte. Als Rückgabewert hätte den "Charme", dass Du im Delphiprogramm mit sowas wie
SQL-Code:
arbeiten könntest, da reicht dann eine Query mit 'nem simplen Select aus. Änderungen an der Datenbankroutine wären für Dein Programm transparent: Sprich: solange sich nichts am Parameter für die Rechnungsnummer und / oder am Rückgabewert ändert, kann datenbankseitig beliebig "rumhantiert werden".
select NameDerDatenbankroutine(Rechnungsnummer) as PDFDateiname from Dual
Aber auch eine "Massenproduktion" von PDF-Dateien müsste möglich sein:
SQL-Code:
In der Ergbenismenge hättest Du dann letztlich alle Dateinamen der PDF-Dateien und könntest sie in 'ner Schleife weiterverarbeiten.
select NameDerDatenbankroutine(Rechnungsnummer) as PDFDateiname from TabelleDieDieRechnungsnummerEnthaelt
where Rechnungsnummer between 1 and 10 or IrgendeineSinnvolleBedingung |
AW: Rechnung per PDF aus Oracle
Also so wie das aussieht, kannst Du das einfach als Query "abfeuern".
Analog zu einer normalen Abfrage, Parameter rein, befüllen und dann Execute statt Open. Das "Exit" und der Slash davor und vlt auch das Semicolon nicht übernehmen. Kannst Du einfach mal ausprobieren mit einer abgespeckten Variante die nur ein DBMS_OUTPUT.putline macht, oder eine Testtabelle updated (als Kontrolle) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz