Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   jpeg in firebird-blob speichern (https://www.delphipraxis.net/155971-jpeg-firebird-blob-speichern.html)

rgaustria 15. Nov 2010 13:52

Datenbank: firebird • Version: 1.5 • Zugriff über: delphi 5

jpeg in firebird-blob speichern
 
liebe kollegen,

bitte nicht gleich brüllen "hättest mal die suche strapaziert". glaubt mir, ich habe zur genüge gesucht und gegooglet aber leider keine antwort auf mein problem gefunden. ich möchte ein jpg in einer firebird-db speichern. ist soweit ja nicht unbedingt da problem, aber ich bekomme beim kompilieren des programmes (source etwas später unten) den fehler "Undefinierter Bezeichner 'TBlobTYpe'" und ich weiß leider nicht warum. der fehler tritt bei der zeile "uex.logos_sql.ParamByName('logo').LoadFromStream( s, TBlobType(0));" auf.

hier nun der source-code:
Delphi-Quellcode:
procedure TForm28.Button1Click(Sender: TObject);
var logo_name: string;
    s: TMemoryStream;
    pic: TJpegImage;

begin

    logo_name := FileListBox1.FileName;

    uex.logos_sql.SQL.Clear;
    uex.logos_sql.SQL.Add('insert into tmwarz_logos (record_id, tmuaktz,   tmvst, tmguedat, tmlogo');
    uex.logos_sql.SQL.Add('values(:record_id, :wznr, :vst, :guedat, :logo');
    uex.logos_sql.ParamByName('record_id').asinteger := 0;
    uex.logos_sql.ParamByName('wznr').asinteger := uex.marken.FieldValues['tmuaktz'];
    uex.logos_sql.ParamByName('vst').AsString := uex.marken.FieldValues['tmvst'];
    uex.logos_sql.ParamByName('guedat').Asdatetime := date;

    pic := TJPEGImage.Create;
    pic.LoadFromFile(logo_name);
    s := TMemoryStream.Create;
    pic.SaveToStream(s);
    s.Position := 0;
    uex.logos_sql.ParamByName('logo').LoadFromStream(s, TBlobType(0));

    uex.logos_sql.Prepare;
    uex.logos_sql.ExecSQL;

    pic.Free;

    MessageBox(0,'Das Bild wurden erfolgreich hinzugefügt!','Nachricht',64);
end;

vorab schon herzlichen dank für eure unterstützung und liebe grüße :-D
robert

scrat1979 15. Nov 2010 13:56

AW: jpeg in firebird-blob speichern
 
Vielleicht so?? Hab grad keine IDE zu Hand, aber evtl. liegt hier schon der Fehler...

Delphi-Quellcode:
  [...]
  uex.logos_sql.ParamByName('logo').LoadFromStream(s , SizeOf(s));
  [...]
(1) Vergiss nicht, den TMemoryStream wieder freizugeben
(2) Hat TJpegImage keine Stream-Methoden integriert?!? :gruebel:

DeddyH 15. Nov 2010 13:57

AW: jpeg in firebird-blob speichern
 
Hallo und Willkommen in der DP :dp:,

TBlobType ist in der Unit DB deklariert, hast Du diese eingebunden?

rgaustria 15. Nov 2010 14:08

AW: jpeg in firebird-blob speichern
 
hallo detlef,

genau das war es - ich hatte leider die unit db nicht in meiner uses. manchmal ist man einfach wie total verbohrt - blickt direkt auf den fehler und sieht ihn trotzdem nicht!!!!

jedenfalls recht recht herzlichen dank für eure verdammt rasche unterstützung.

bis zum nächstenmal - liebe grüße
robert

Satty67 15. Nov 2010 14:18

AW: jpeg in firebird-blob speichern
 
Braucht es hier überhaupt den Umweg über ein MemoryStream und TJpgImage. Könnte man LoadFromStream hier nicht auf einen einfachen FileStream loslassen? Das File wird ja 1:1 im Blob gespeichert und u.U. durch pic.Save etwas schlechter in der Qualität.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 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