Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Foto in DB speichern? (https://www.delphipraxis.net/127084-foto-db-speichern.html)

khh 7. Jan 2009 15:47

Re: Foto in DB speichern?
 
nochmal Blob :-(

bei der Zuweisung
FQuery1['ARTFOTO']:= FARTFOTO;

FARTFOTO ist von Type TBLOBField ,bekomme ich nen Fehler :
Error: Incompatible type for arg no. 2: Got "TBlobField", expected "Variant"

was mach ich da noch falsch?


dane Gruss KH

DeddyH 7. Jan 2009 15:51

Re: Foto in DB speichern?
 
Zeig doch mal die Routine zum Speichern (vielleicht zeig ich Dir dann auch meine :lol:).

khh 7. Jan 2009 15:56

Re: Foto in DB speichern?
 
Zitat:

Zitat von DeddyH
Zeig doch mal die Routine zum Speichern (vielleicht zeig ich Dir dann auch meine :lol:).

also wie gesagt artfoto habe ich als TBLOBfield definiert.

die restliche Felder hab ich der Übersichtlichkeit wegen hier mal weggelassen.



FQuery1.SQL.clear;
FQuery1.SQL.add('select ');
FQuery1.SQL.add('*');
FQuery1.SQL.add('from artikel where ');
FQuery1.SQL.add('ARTIKEL_ID = :ARTIKEL_ID');
FQuery1.ParamByName('ARTIKEL_ID').AsInteger := FARTIKEL_ID;
FQuery1.open; // liefert eine leere datenmenge
FQuery1.append; // neuen Datensatz anhängen
FQuery1['ARTFOTO']:= FARTFOTO;

FhwdQuery1.post;

DeddyH 7. Jan 2009 16:04

Re: Foto in DB speichern?
 
Wieso holst Du Dir erst eine leere Datenmenge, statt gleich ein Insert zu machen?

khh 7. Jan 2009 16:15

Re: Foto in DB speichern?
 
Zitat:

Zitat von DeddyH
Wieso holst Du Dir erst eine leere Datenmenge, statt gleich ein Insert zu machen?

weil das Ganze ohne das open nicht funktioniert hat.
Lasse mich aber gerne eines Besseren belehren.
EDIT: ich habe append anstatt insert verwendet, weil ich den DS an der geöffneten Datenmenge anhängen wollte und nicht irgendwo zwischenreinschieben.

Gruss KH

DeddyH 7. Jan 2009 16:27

Re: Foto in DB speichern?
 
Hier mal meine Routine (FBLib statt ZEOS, nicht wundern). Allerdings speichere ich vorher ggf. den neuen Datensatz ab und mache danach ein Update, um nicht alles doppelt schreiben zu müssen:
Delphi-Quellcode:
procedure TMyClass.StorePic;
var aStream: TMemoryStream;
begin
  if FPicModified then
    begin
      with TFBLParamDsql.Create(nil) do
        try
          Transaction := FTransaction;
          if not Transaction.InTransaction then
            Transaction.StartTransaction;
          SQL.Text := 'UPDATE Tabelle SET Bild=:bild WHERE ID=:id';
          Prepare;
          ParamByNameAsInt64('id',FID);
          if Assigned(FBild) then
            begin
              aStream := TMemoryStream.Create;
              try
                FBild.SaveToStream(aStream);
                aStream.Position := 0;
                BlobParamByNameLoadFromStream('bild',aStream);
              finally
                aStream.Free;
              end;
            end
          else
            ParamByNameAsNull('bild');
          try
            ExecSQL;
          except
            raise;
          end;
          FPicModified := false;
        finally
          Free;
        end;
    end;
end;

khh 7. Jan 2009 16:31

Re: Foto in DB speichern?
 
ok, ich danke dir

Gruss KH


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 Uhr.
Seite 2 von 2     12   

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