AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bild in Datenbank speichern und wieder auslesen

Bild in Datenbank speichern und wieder auslesen

Ein Thema von emsländer · begonnen am 15. Okt 2008 · letzter Beitrag vom 15. Okt 2008
Antwort Antwort
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
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Bild in Datenbank speichern und wieder auslesen

  Alt 15. Okt 2008, 12:03
Hallo

Auf die schnelle fällt mir folgendes auf
1.) bei deiner Zeile mit "Edit;" bzw. "Post" fehlt der Bezug zum dataset "_Query1.edit;" (Evt.verdecktz durch deinen internen "With"
2.) Query eigentlich für abfrage. Beim schreiben verwendi ich immer TADoTable
3.) ich meide "with do begin" und verwende immer den lngen absolut namen ...
Peter Schaible
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

Re: Bild in Datenbank speichern und wieder auslesen

  Alt 15. Okt 2008, 12:13
Hallo,

nur 'ne Vermutung:

macht der eventuell schon ein implizites Post?

BS := CreateBlobStream(BlobField,bmWrite); Mal im Debugger die property State der Query befragen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 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