AW: PDF in Datenbank speichern
Ich versteh den Sinn der ganzen Funktion nicht so richtig, wieso holst Du ein PDF aus einem BLOB-Feld, speicherst dies in eine Datei und löschst diese im Anschluss ggf. gleich wieder? Vom kreativen Gebrauch von Ressourcenschutzblöcken und Boolean-Vergleichen mal ganz abgesehen. Und wenn man einen BLOBStream mit bmRead zum Lesen erzeugt, wie muss es dann wohl zum Schreiben aussehen?
|
AW: PDF in Datenbank speichern
Ich verstehe selber zur Zeit gar nichts mehr.
Es geht mir darum, dass mir vielleicht eine andere Möglichkeit aufgezeigt wird eine PDF-Datei in eine Tabelle mit einer LONGRAW-Spalte zu schreiben, als wie ich Sie benutze, da komischerweise an bestimmten PC's (Ich nenne Sie mal CN-PCs) bei uns im Hause zwar mit meiner Eingangs geposteten Funktion ein Stream gespeichert wird, dieser aber nicht mehr ausgelesen werden kann ? Soll heissen: Folgende Auslesefunktion funktioniert bei allen PC's:
Delphi-Quellcode:
Folgende Funktion speichert den Stream in der Datenbank. Nur wenn der Stream über die CN-PCs gespeichert wird kann man diesen Stream mit der obigen Funktion nicht mehr laden.
function Datensatz_auslesen_Picture_PDF(Tabelle, Spalte, Filter_Spalte, Filter_Wert, Pfad:String):Boolean;
var fs: TFileStream; blob: TStream; begin Result := FALSE; DM_Main.TableRaw.Close; DM_Main.TableRaw.TableName := Tabelle; DM_Main.TableRaw.IndexFieldNames := Filter_Spalte; DM_Main.TableRaw.Filter := Filter_Spalte + ' = ' + Filter_Wert + ''; DM_Main.TableRaw.Filtered := TRUE; DM_Main.TableRaw.Open; if DM_Main.TableRaw[Spalte] = '' then exit; blob := DM_Main.TableRaw.CreateBlobStream(DM_Main.TableRaw.FieldByName(Spalte), bmRead); blob.Seek(0, soFromBeginning); fs:=TFileStream.Create(Pfad, fmCreate); fs.CopyFrom(blob, blob.Size); fs.Free; blob.Free; Result := TRUE; end;
Delphi-Quellcode:
Es geht mir darum eine andere Möglichkeit des speicherns von PDF-Dateien in eine Datenbank aufgezeigt zu bekommen, oder eventuell mal Hinweise was ich an der "Speicher-Funktion" mal testweise verändern sollte um dem Fehler auf den Grund zu gehen ?
procedure Datensatz_speichern_Pictures_PDF(Tabelle, Spalte, Filter_Spalte, Filter_Wert, Pfad:String; PDF_loeschen: Boolean);
var ms, outstream: TMemoryStream; begin ms := TMemoryStream.Create; outstream := TMemoryStream.Create; outstream.LoadFromFile(Pfad); outstream.Seek(0, soFromBeginning); DM_Main.QueryRaw.Close; DM_Main.QueryRaw.SQL[1] := Tabelle; DM_Main.QueryRaw.SQL[3] := Spalte; DM_Main.QueryRaw.SQL[5] := 'WHERE ' + Filter_Spalte; DM_Main.QueryRaw.ParamByName('p_pdf').SetBlobData(outstream.Memory, outstream.Size); DM_Main.QueryRaw.ParamByName('p_auftragsnummer').asstring := Filter_Wert; DM_Main.QueryRaw.ExecSQL; ms.Free; outstream.Free; if PDF_loeschen = true then begin DeleteFile(Pfad); end; end; Gruss Holger |
AW: PDF in Datenbank speichern
Ich fand die Herangehensweise von Perlsau gar nicht schlecht, Feld und Dateinamen als einzige Parameter an eine Methode zu übergeben.
|
AW: PDF in Datenbank speichern
Nur fehlte da das speichern ? Wie mache ich das denn dann ?
|
AW: PDF in Datenbank speichern
Zitat:
Ich finde Deine Methode der SQL-Text-Erzeugung ein wenig obskur. Zitat:
Gruß K-H |
AW: PDF in Datenbank speichern
Wieso fehlt das Speichern? Wir reden doch beide von #3, oder?
|
AW: PDF in Datenbank speichern
Nee nicht das Speichern, sondern die gespeicherten Daten!
(Soll alles schon vorgekommen sein.) Gruß K-H |
AW: PDF in Datenbank speichern
Zitat:
|
AW: PDF in Datenbank speichern
Perlsau schrieb in #3 aber
Zitat:
Gruss Holger |
AW: PDF in Datenbank speichern
Zitat:
Delphi-Quellcode:
Das funktioniert so sicher & zuverlässig, daß ich die Quelldatei (ob nun PDF oder HTML) danach einfach löschen kann.
DatMod.Qset_NewsLink.Edit;
DatMod.Qset_NewsLink.FieldByName('EXISTIERT').AsBoolean := Existiert; IF FileExists(Dateiname) THEN BEGIN DatMod.DateiToBlob(Dateiname,DatMod.Qset_NewsLink,DatMod.Qset_NewsLink.FieldByName('INHALT')); DeleteFile(Dateiname); END; DatMod.Qset_NewsLink.Post; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:25 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