...erstmal supervielen Dank für die fixen Antworten. Ich vermute das Laden funktioniert nun, aber ich bekomme einen CRC-Fehler beim Laden, also vermute ich ich mache das Speichern komplett falsch. Ich habe dazu keinen Codeschnipsel gefunden, aber vielleicht drückt mal jemand meine Nase (ruhig doll drücken) auf einen Thread mit einem einfachen Code?
Laden:
Delphi-Quellcode:
var
PNG_Bild : TPNGImage;
BildLadenQuery : TMyQuery;
BlobStream : TStream;
begin (*of Button_WappenbildvonDBinImageClick*)
PNG_Bild:=TPNGImage.Create;
BildLadenQuery:=TMyQuery.Create(BBM_Datamodule);
try
BildLadenQuery.Connection:=BBM_Datamodule.BMMConn;
BildLadenQuery.SQL.Text := 'Select Wappenbild from BBM_Verein where idVerein=:ID';
BildLadenQuery.Params[0].Value := Aktiv_Verein_ID;
BildLadenQuery.ExecSQL;
BlobStream := BildLadenQuery.CreateBlobStream(BildLadenQuery.FieldByName('Wappenbild'),bmRead);
PNG_Bild.LoadFromStream(BlobStream);
Image_Wappen1.Picture.Assign(PNG_Bild);
finally
PNG_Bild.Free;
BildLadenQuery.Free;
end; (*of finally*)
Speichern:
Delphi-Quellcode:
var
PictureFile : TFileName;
PNG_Bild : TPNGImage;
BildSpeicherQuery : TMyQuery;
BlobStream : TStream;
begin
PNG_Bild:=TPNGImage.Create;
BildSpeicherQuery:=TMyQuery.Create(BBM_Datamodule);
try
OpenDialog_NamenHauptform.Execute;
FileExists(OpenDialog_NamenHauptform.FileName);
PNG_Bild.LoadFromFile(OpenDialog_NamenHauptform.FileName);
BildSpeicherQuery.Connection:=BBM_Datamodule.BMMConn;
BildSpeicherQuery.SQL.Text := 'Update BBM_Verein set Wappenbild=:BILD Where idVerein=:ID';
BildSpeicherQuery.Params[0].Assign(PNG_Bild);
BildSpeicherQuery.Params[1].Value := Aktiv_Verein_ID;
//BildSpeicherQuery.Parameters[1].Assign(itPNG);
BildSpeicherQuery.ExecSQL;
finally
PNG_Bild.Free;
BildSpeicherQuery.Free;
end; (*of finally*)
EDIT: Habe gerade mit der Workbench das PNG-File direkt in die
DB geladen. Ob man das so naiv machen kann weiss ich nicht. Effekt: BLOB-Byteanzeige ist bei 147 KB (das passt), ladbar ist es nicht (CRC-Fehler wie zuvor).
Liebe Grüße,
David