PDA

View Full Version : BLOB Feld aus SQL-Tabelle ins IFS übertragen



Seiten : [1] 2

GJV23
18-02-15, 09:30
Hallo Forum,

wie kann ich ein BLOB-Feld aus einer SQL-Tabelle ins IFS übertragen.
(Das BLOB-Feld enthält eine .PDF Datei, die ich öffnen möchte)

Viele Grüße
GJV23

Fuerchau
18-02-15, 09:41
Ich behaupte mal:
Auf dem umgekehrten Weg wie du es gespeichert hast:).

GJV23
18-02-15, 10:46
Die Tabelle wird mit einem Fremdprogramm und einem Scanner befüllt.
Wie das genau funktioniert weiss ich nicht.

dschroeder
18-02-15, 10:52
Wir machen das mit einem RPG-Programm. Meinst du das?
Dieter

Fuerchau
18-02-15, 11:14
Per ILERPG und den IFS-API's.
Wenn die Anwendung aber vorsieht, dass Dokumente als BLOB gespeichert werden, sollte diese auch die Extraktion derselben vorsehen.
Da muss doch dann schon was existieren.

Ansonsten musst du tatsächlich mit den IFS-API's experimentieren. Hier ist ggf. darauf zu achten, dass keine Codewandlung durchgeführt wird, da das Dokument wahrscheinlich schon in ANSI ist.

GJV23
18-02-15, 11:21
Ja das meine ich.
Gibt es dazu evtl. ein Musterprogramm ?

Josef

dschroeder
18-02-15, 11:27
Hier mal die wichtigsten Stellen aus unserem Programm:



D IFSFile S SQLTYPE(BLOB_FILE) File Ref Var
D FILE_OVERWRITE C CONST(16)
D FILE_APPEND C CONST(32)


* Die in den D-Anweisungen definierte FileReference-Variable wird vom
* Pre-Compiler in eine Struktur umgesetzt. Diese Struktur enthält die
* notwendigen Angaben zur Blob-Verarbeitung:
C EVAL IFSFile_name = %trim(file)
C EVAL IFSFile_NL = %len(%trim(IFSFIle_name)) NameLength
C EVAL IFSFile_DL = 0 DataLength
C EVAL IFSFile_FO = FILE_APPEND FileOption


exec sql select bl_blob into :IFSFile from myLib/myFile
where bl_rec_id = :Record_ID;




Dieter

dschroeder
18-02-15, 11:32
Am besten probierst du das mit dem obigen Code mal aus. Wir hatten bei uns noch das Problem, dass die IFS-Datei, die aus dem Blob gebildet wurde, nicht den richtigen Zeichensatz hatte. Wir haben das dann so gelöst, dass wir zunächst eine leere IFS-File mit dem gewünschten Zeichensatz erstellt haben und das Blob dann in diese leere Datei geschrieben haben.

Dieter

GJV23
19-02-15, 07:44
Guten Morgen Dieter (dschroeder)

Vielen Dank für deine Hilfe. Hat bestens funktioniert !
Mir waren diese RPGLE-SQL-Feinheiten neu.

Schöne Grüße aus Tirol
Josef

Fuerchau
19-02-15, 09:41
In den Neuerungen ist das auch nicht dokumentiert. In den aktuellen SQL/RPG-PDF's gibt's da auch keine Hinweise.
Man kommt da von selber eigentlich gar nicht drauf.
Im http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_71/welcome.html kann man das finden, wenn man gezielt danach sucht.
Ich habe auch erst hier im Forum davon gelesen.