Deutsches Application Express Forum (ApEx) -- Installation , Engine / SQL , Anwendungen
HTMLDB Engine :  Oracle Apex The fastest message board... ever.
Alles in HTMLDB, Applikationen, Berichte, SQL ... 
Re: Dateinamen für PDF-Reports erstellt über Berichtabfragen
geschrieben von: christian_goto (---.dip0.t-ipconnect.de)
Datum:

ich mach sowas ähnliches mit excel:

zunächst hab ich ein table mit xls-files,das sind meine vorlagen.
wenn ich ich nun auf seite x den button "rechnung drucken" benutze,wird die entsprechende vorlage,je nach auswahl aus den (lov)elementen zum browser gesendet.

dann war die frage,was der browser mit xls soll.zunächst kann ein browser keine externen programme starten,ausser der IE mit active x.es gibt aber einen anderen weg über mime-type.der browser erkennt an der dateierweiterung,welches programm gestartet werden soll,in meinem fall excel samt vorlage.dann wird automatisch über excel querys die vorlage gefüllt usw usw.

der trick besteht nun darin,beim "download" die datei umzubennen und zwar je nach(lov)elementauswahl.

vieleicht wäre das ein ansatz für dich,hier mal kurzer auszug aus meinem package:

.................................................................

PROCEDURE DATEI_HERUNTERLADEN(iDruVorID IN VARCHAR2)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
TK_FUNC_NAME CONSTANT USER_OBJECTS.OBJECT_NAME%TYPE := 'DATEI_HERUNTERLADEN';
rDruVor DRUVOR%ROWTYPE;
vLength NUMBER;
vPos PLS_INTEGER := 0;
vBezExt CMB.T_DB_SQLERRM := NULL;
BEGIN
CMT.ClearAppMsg;
vPos := INSTR(iDruVorID,':');
IF vPos>0 THEN
rDruVor.DRUVOR_ID := TO_NUMBER(SUBSTR(iDruVorID,1,vPos-1));
vBezExt := TRIM(SUBSTR(iDruVorID,vPos+1));
ELSE
rDruVor.DRUVOR_ID := TO_NUMBER(iDruVorID);
END IF;
SELECT d.FILENAME,NVL(MIME_TYPE, 'application/octet'), DBMS_LOB.getlength(d.BLOB_CONTENT), d.BLOB_CONTENT
INTO rDruVor.FILENAME,rDruVor.MIME_TYPE, vLength, rDruVor.BLOB_CONTENT
FROM DRUVOR d
WHERE d.DRUVOR_ID = rDruVor.DRUVOR_ID;
--vTab := 'ROLLBACK'; vSel := NULL;
ROLLBACK;
IF vBezExt IS NULL THEN
vBezExt := rDruVor.FILENAME;
ELSE
vPos := INSTR(rDruVor.FILENAME,'.',-1);
IF vPos>0 THEN
vBezExt := SUBSTR(rDruVor.FILENAME,1,vPos-1)||vBezExt|| SUBSTR(rDruVor.FILENAME,vPos);
ELSE
vBezExt := rDruVor.FILENAME||vBezExt;
END IF;
END IF;
-- Im HTTP-Header wird der Dateityp gesetzt. Damit erkennt der Browser
-- welche Applikation (bspw. MS Excel) zu starten ist
OWA_UTIL.mime_header(rDruVor.MIME_TYPE,FALSE);
-- Die Dateigröße wird dem Browser ebenfalls mitgeteilt
htp.p('Content-length: '||vLength);

-- Der Browser soll die Datei nicht sofort anzeigen (Virengefahr), sondern
-- die Datei zunächst auf die Festplatte des Nutzers speichern bzw. diesen
-- erst fragen.
--htp.p('Content-Disposition: attachment; filename="'||rDruVor.FILENAME||'"');
--direktes öfffnen
htp.p('Content-Disposition: inline; filename="'||vBezExt||'"');

-- close the headers
OWA_UTIL.http_header_close;

-- Dieser kurze Aufruf führt den eigentlichen Datei-Download durch.
WPG_DOCLOAD.download_file(rDruVor.BLOB_CONTENT);
EXCEPTION
WHEN OTHERS THEN
DECLARE
vSlqErmm CMB.T_DB_SQLERRM := SQLERRM;
BEGIN
CMT.SetAppMsg('Fehler: '||vSlqErmm,'red');
WPG_DOCLOAD.download_file(CMB.K_ERRFILE4DATEI_HERUNTERLADEN);
END;
END DATEI_HERUNTERLADEN;


....................................................................
-- Public Konstanten-Deklaration
K_ERRFILE4DATEI_HERUNTERLADEN CONSTANT APEX_APPLICATION_FILES.NAME%TYPE := 'F959485501/ERRFILE4DATEI_HERUNTERLADEN.txt';

....................................................................
in dem zusammenhang ist WPG_DOCLOAD vieleicht interessant:
[download.oracle.com]

gruss








2 mal bearbeitet. Zuletzt am .



Thema Neugierige geschrieben von geschrieben
Dateinamen für PDF-Reports erstellt über Berichtabfragen 2883 ChristianF
Re: Dateinamen für PDF-Reports erstellt über Berichtabfragen 1830 christian_goto
Re: Dateinamen für PDF-Reports erstellt über Berichtabfragen 1550 ChristianF
Re: Dateinamen für PDF-Reports erstellt über Berichtabfragen 1812 christian_goto
Re: Dateinamen für PDF-Reports erstellt über Berichtabfragen 1700 ChristianF


In diesem Forum dürfen nur registrierte Benutzer schreiben.
This forum powered by Phorum.