![]() |
AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
Jaja :stupid:, letzter Vorschlag (ungetestet):
Delphi-Quellcode:
Wobei man das ganze ShellExecuteEx-Geraffel (und auch das Ermitteln des Temp-Verzeichnisses) natürlich besser in eine eigene Routine auslagert, in der man dann auch auf das Schließen des PDF-Readers warten könnte, um die temporäre Datei im Anschluss wieder zu löschen. Beispiele gibt es ja genug im Forum oder der Codelib.
procedure TForm17.Button2Click(Sender: TObject);
const FILENAME = 'Dok.pdf'; var PDFField: TBlobField; TempPath : String; ExecuteInfo: SHELLEXECUTEINFO; begin ADOTable1.Open; PDFField := ADOTable1.FieldByName('PDFFILE') as TBlobField; if not PDFField.IsNull then begin SetLength(TempPath, GetTempPath(0, nil)); GetTempPath(Length(TempPath), PChar(TempPath)); SetLength(TempPath, StrLen(PChar(TempPath))); TempPath := IncludeTrailingPathDelimiter(TempPath) + FILENAME; try PDFField.SaveToFile(TempPath); ZeroMemory(@ExecuteInfo, SizeOf(ExecuteInfo)); ExecuteInfo.cbSize := SizeOf(ExecuteInfo); ExecuteInfo.fMask := SEE_MASK_NOCLOSEPROCESS; ExecuteInfo.lpVerb := 'open'; ExecuteInfo.lpFilename := PChar(TempPath); ExecuteInfo.nShow := SW_SHOWNORMAL; if ShellExecuteEx(@ExecuteInfo) then CloseHandle(ExecuteInfo.hProcess) else raise Exception.Create(SysErrorMessage(GetLastError)); except on E: Exception do ShowMessage('Fehler beim Öffnen der Datei: ' + E.Message); end; end else ShowMessage('Kein PDF im aktuellen Datensatz enthalten.'); end; |
AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
Ich kenne mich mit ADO nicht aus aber kann es sein das keine Daten in die Datenbank geschrieben werden weil ADOTable1.Post im except-Abschnitt steht?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin ADOTable1.Edit; OpenDialog1.Filter:='*.pdf|*.pdf'; if OpenDialog1.Execute then try TBlobField(ADOTable1.FieldByName('PDFFILE')).LoadFromFile(OpenDialog1.FileName); EXCEPT ShowMessage ('Fehler beim Öffnen der Datei!'); ADOTable1.Post; // <-- Aufruf in Except-Bereich? end; end; |
AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
Das ist noch keinem aufgefallen (mir auch nicht) :lol:. OK, wenn wir eh schon dabei sind:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin OpenDialog1.Filter:='*.pdf|*.pdf'; if OpenDialog1.Execute then try ADOTable1.Edit; TBlobField(ADOTable1.FieldByName('PDFFILE')).LoadFromFile(OpenDialog1.FileName); ADOTable1.Post; except on E: Exception do ShowMessage ('Fehler beim Speichern der Daten: ' + E.Message); end; end; |
AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
Darf ich mal vorsichtig fragen um was es hier jetzt noch geht?
Lesen einer Datei und abspeichern in DB? oder DB-Wert in Datei Speichern? oder doch Bahnhof,Kofferklauen? Gruß K-H |
AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
Prinzipiell waren ja beide Methoden im Ausgangspost falsch. Das haben wir nur (hoffentlich) korrigiert.
|
AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
Danke, das hat mir alles sehr geholfen...
Grüße Robert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz