Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TImage mit DBExpress in einer Firebird DB speichern (https://www.delphipraxis.net/77434-timage-mit-dbexpress-einer-firebird-db-speichern.html)

sega84 19. Sep 2006 15:26

Datenbank: Firebird • Version: 2.0 • Zugriff über: DBExpress

TImage mit DBExpress in einer Firebird DB speichern
 
Hallo,
habe den Inhalt eines TImage dynamisch über eine Twain-Komponente geladen, bzw. ein vorher definiertes Bild in diese geladen.
Nun möchte ich dessen Inhalt über eine SQLQuery direkt an die Firebird Datenbank senden. Habe zwar schon ein wenig was versucht, dass klappte aber nicht so besonders. Bekomme immer die Fehlermeldung:
Delphi-Quellcode:
Column Unknown: bild1
Das Blob Feld, in dem das TImage geladen wird, hat die folgende Definition:
Delphi-Quellcode:
BLOB SUB_TYPE 0 SEGMENT SIZE 80
Hier ein Quellcodeausschnitt:
Delphi-Quellcode:
procedure SaveBild;
  var query:TSQLQuery;
begin
  inherited;
  //Bild in DB Speichern...
  try
    query := TSQLQuery.Create(self);
    query.SQLConnection := SQLConnection1;
    query.Close;
    query.SQL.Clear;
    query.SQL.Add('update bilder set BILD = :bild1 where id = 1;');
    query.ParamByName('bild1').Assign(Image1.Picture);
    query.ExecSQL(true);
  except
    on e:Exception do ShowMessage(e.Message);
  end;
end;
Danke für eure Hilfe...

mkinzler 19. Sep 2006 16:55

Re: TImage mit DBExpress in einer Firebird DB speichern
 
Was für einen Wert hat .ParamCheck?

sega84 20. Sep 2006 07:17

Re: TImage mit DBExpress in einer Firebird DB speichern
 
Zitat:

Zitat von mkinzler
Was für einen Wert hat .ParamCheck?

ParamCheck hat einen Wert von 1.
Als wird der Parameter ja auch abgefragt....
Wieso klappt es denn dann nicht... :wall:

hoika 20. Sep 2006 07:27

Re: TImage mit DBExpress in einer Firebird DB speichern
 
Hallo,

Versuch mal

ParamByName().AsBlob:= .Picture ..

Noch ne andere Sache, die Id=1 existiert auch ?

Heiko

sega84 20. Sep 2006 07:38

Re: TImage mit DBExpress in einer Firebird DB speichern
 
Also die ID 1 besteht immer in dieser Tabelle.
Wie soll ich den den das folgende Machen?
query.FieldByName('bild1').AsBlob := Image1.Picture;
Das Klappt nicht, da ein Blob einen String erwartet und das Image1.Picture ein TPicture...
Oder würde es mit einem StringStream funktionieren? So nur als Idee....

hoika 20. Sep 2006 08:19

Re: TImage mit DBExpress in einer Firebird DB speichern
 
Hallo,

ParamByName().LoadFromStream geht
also könnte man das Bitmap in einen MemoryStream packen.


Heiko

sega84 20. Sep 2006 09:11

Re: TImage mit DBExpress in einer Firebird DB speichern
 
Und wie geht das??? Weiß das sowas geht, aber wie?? Google hat mir auch noch keine guten Tipps gegeben.....

sega84 20. Sep 2006 13:28

Re: TImage mit DBExpress in einer Firebird DB speichern
 
Fehler erldigt:
Man muss wie folgt die Query absenden:
Delphi-Quellcode:
query.ExecSQL(false);


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