AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Rechnung per PDF aus Oracle
Thema durchsuchen
Ansicht
Themen-Optionen

Rechnung per PDF aus Oracle

Ein Thema von H.Bothur · begonnen am 22. Jun 2017 · letzter Beitrag vom 22. Jun 2017
Antwort Antwort
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
252 Beiträge
 
Delphi 11 Alexandria
 
#1

Rechnung per PDF aus Oracle

  Alt 22. Jun 2017, 16:11
Datenbank: Oracle • Version: 11 • Zugriff über: ??
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:
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
Vielen Dank
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Rechnung per PDF aus Oracle

  Alt 22. Jun 2017, 17:03
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 select NameDerDatenbankroutine(Rechnungsnummer) as PDFDateiname from Dual 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".

Aber auch eine "Massenproduktion" von PDF-Dateien müsste möglich sein:
SQL-Code:
select NameDerDatenbankroutine(Rechnungsnummer) as PDFDateiname from TabelleDieDieRechnungsnummerEnthaelt
where Rechnungsnummer between 1 and 10 or IrgendeineSinnvolleBedingung
In der Ergbenismenge hättest Du dann letztlich alle Dateinamen der PDF-Dateien und könntest sie in 'ner Schleife weiterverarbeiten.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Rechnung per PDF aus Oracle

  Alt 22. Jun 2017, 17:10
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)
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 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