Einzelnen Beitrag anzeigen

Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Bild in Datenbank speichern und wieder auslesen

  Alt 15. Okt 2008, 10:31
Datenbank: MS SQL • Version: 2005 • Zugriff über: ADO
Salvete die Kollegen,

habe ein Problem mit Bildern, welche ich in einer SQL-Datenbank speicher.
Fehlermeldung: Im Projekt bla.. ist eine Exception der Klasse EDatabaseerror mit der Meldung 'Datenmenge weder im Editier, noch im Einfügemodus' aufgetreten.

Code:

Delphi-Quellcode:
procedure bildzufuegen(nummer : string);
  var _query : TADOQuery;
    Blobfield : TField;
    BS : Tstream;
begin
  _query := Tadoquery.Create(nil);
  with _query do begin
    connection := FrmMain.ADOConnMUS;
    try
      _query.sql.Text := 'select * from musmanager_user where lfdnr='+nummer;
      _query.open;
      if eof then begin
         showmessage('Keine Daten vorhanden'+#10#13+'Sollte eigentlich hier nicht vorkommen!');
      end else begin
        with frmmain do begin
          edit;
          blobfield := fieldbyname('Bild');
          try
          BS := CreateBlobStream(BlobField,bmWrite);
          Frmmain.userimage.Picture.Bitmap.SaveToStream(BS);
          post;
          finally
            freeandnil(BS); => hier kommt die Fehlermeldung
          end;
        end;
      end;
    finally
      freeandnil(_query);
    end;
  end;
end;
Die gleiche Meldung kommt, wenn ich das Image wieder einlesen möchte:
Delphi-Quellcode:
procedure set_pic(usernr : string);
  var _stmp : string;
  _query : Tadoquery;
   BS : TStream;
   Blobfield : TField;

begin
  _stmp := 'select * from musmanager_user where lfdnr ='+usernr;
  _query := Tadoquery.Create(nil);
  with _query do begin
    connection := FrmMain.ADOConnMUS;
    try
      _query.sql.Text := _stmp;
      _query.open;
      if (not eof) then begin
        try
          Blobfield := FieldbyName('Bild');
          if blobfield <> NIL then begin
            BS := CreateBlobStream(BlobField,bmReadWrite); => hier kommt die Fehlermeldung
            FrmMain.userimage.picture.bitmap.loadfromstream(BS);
          end;
        finally
          freeandnil(stream);
        end;
      end;
      _query.close;
    finally
      freeandnil(_query);
    end;
  end;
end;
Wer hat eine Idee?

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat