AW: PDF in Datenbank speichern
Alles klar.
Habe es jetzt mal für mich etwas umgebaut:
Delphi-Quellcode:
Nur leider werden keine Daten gespeichert. Wo ist der Fehler ?
function Datensatz_speichern_PDF(Tabelle, Spalte, Filter_Spalte, Filter_Wert, Pfad:String; PDF_loeschen: Boolean):Boolean;
var S : TStream; FileS : TFileStream; BlobFeld: TField; 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; DM_Main.TableRaw.Edit; BlobFeld := DM_Main.TableRaw.FieldByName(Spalte); S := BlobFeld.DataSet.CreateBlobStream(BlobFeld, bmReadWrite); try FileS := TFileStream.Create(Pfad, fmOpenRead); S.CopyFrom(FileS, FileS.Size); DM_Main.TableRaw.Post; Result := TRUE; finally FileS.Free; S.Free; end; end; Gruss Holger |
AW: PDF in Datenbank speichern
"Zurückspulen" vergessen?
|
AW: PDF in Datenbank speichern
Wenn ich vor dem "try" folgenden Code eingebe:
Delphi-Quellcode:
bringt das ncihts, wenn Du das meinst ?
S.Seek(0, soFromBeginning);
Gruss Holger |
AW: PDF in Datenbank speichern
Zitat:
Wenn ich das richtig sehe, speicherst du alles immer in den ersten Record (Open setzt den Datensatzzeiger auf den ersten Record). Möchtest du einen neuen Datensatz anlegen, dann muß es natürlich Append oder Insert statt Edit heißen. Wenn du einen bestehenden Datensatz bearbeiten möchtest, solltest du zuvor den gewünschten Datensatz lokalisieren. |
AW: PDF in Datenbank speichern
Zitat:
|
AW: PDF in Datenbank speichern
Ich filtere ja die TTable vorher auf einen bestimmten Datensatz und wenn ich dann "open" machen müsste doch dieser Datensatz geöffnet werden, oder ?
Wenn ich jetzt aber .edit gegen .append austausche klappt es auch nciht. Überprüfen tue ich das mit dem SQl-Developer, ob in der Spalte nun Daten vorhanden sind. Was könnte an meinem Code ncoh falsch sein ? Gruss Holger |
AW: PDF in Datenbank speichern
Zitat:
Wieso beläßt du die Function zum Einlesen der PDF-Datei in ein Blobfeld nicht so, wie ich sie dir gezeigt habe, und erledigst alles andere in der aufrufenden Methode? Dann könntest du nämlich deine Daten_To_Blob-Funktion für alle denkbaren Fälle verwenden, auch zum Einlesen von Bildern oder sonstwas, auch zum Einlesen in andere Blob-Felder usw. Zudem würde dein Code dadurch übersichtlicher. Lokalisiere also in der aufrufenden Methode den gewünschten Datensatz, setze deine Table-Komponente auf Append, Insert oder Edit, rufe die Einlese-Function auf und übergebe ihr die beiden Parameter Dateiname und Blobfeld, und danach machst du in der aufrufenden Methode Post und gibst die erzeugte Table-Komponente wieder frei. Das wäre sauberer Programmierstil. Unsauber ist es, wenn man versucht, alles in eine Funktion oder Prozedur zu quetschen. |
AW: PDF in Datenbank speichern
Zitat:
|
AW: PDF in Datenbank speichern
Zitat:
|
AW: PDF in Datenbank speichern
Guten morgen zusammen,
mir ist nun aufgefallen, dass bei mir in der Zeile
Delphi-Quellcode:
das FileS.Size = 0 ist ?
S.CopyFrom(FileS, FileS.Size);
Ist das richtig ? Gruss Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 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