Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi bilder als blob in abs db speichern (https://www.delphipraxis.net/79260-bilder-als-blob-abs-db-speichern.html)

agm65 19. Okt 2006 09:31

Datenbank: abs • Zugriff über: lokal

bilder als blob in abs db speichern
 
guten morgen freunde, ich hab mal ne frage zum speichern von bildern in blob felder.
ich möchte die bilder im dbimage anzeigen lassen in kombination mit meinem dbctrl grid.
derzeit lade ich die bilder aus lokalen dirs in normale image boxen.

Delphi-Quellcode:
procedure TfrmShowVehicles.DBCtrlGridPaintPanel(DBCtrlGrid: TDBCtrlGrid;
  Index: Integer);

with DataSource.DataSet do

image1.Picture.LoadFromFile(frmmain.QueryLoadDatashow_image.text);

end;
da die bilder in die box gezeichnet werden verursachen diese große laggs wenn man zB mit einer anderen form darüber fährt, oder beim scrollen.
deswegen wollte ich die dbimagebox nehmen, denn diese lässt sich direkt mit der db verknüpfen.

agm65 19. Okt 2006 10:56

Re: bilder als blob in abs db speichern
 
Delphi-Quellcode:
var
stream1: TMemoryStream;
stream:tstream;
begin

Stream1:=TMemoryStream.Create;
  Stream1.LoadFromFile('h:\test.jpg');
  try
    Stream:=queryloaddata.CreateBlobStream(queryloaddata.FieldByName('show_image'),bmwrite);
    try
      Stream1.seek(0,0);
      Stream.CopyFrom(Stream1,Stream1.Size);
    finally
      Stream.Free;
    End;
  finally
   Stream1.Free;
  End;
ich dachte man könnte das so speichern aber ich bekomme nur fehler ...hat jemand eine idee ? auch versucht habe ich:

Delphi-Quellcode:
image:Timage;
begin

 image.Picture.LoadFromFile('h:\test.jpg');

  with Tabel do
  begin
    Edit;
    FieldByName('show_image').Assign(Image.Picture );
    Post;
  end;
zugriffsverletzung ?

dataspider 19. Okt 2006 11:29

Re: bilder als blob in abs db speichern
 
Hi,

bei mir funktioniert es so:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  InStream: TMemoryStream;
  BlobStream: TStream;
begin
  InStream := TMemoryStream.Create;
  InStream.LoadFromFile('d:\test.jpg');
  try
    dm.qryBild.Edit;
    BlobStream := dm.qryBild.CreateBlobStream(dm.qryBild.FieldByName('bild'),bmwrite);
    try
      BlobStream.CopyFrom(InStream, 0);
      dm.qryBild.Post;
    finally
      BlobStream.Free;
    end;
  finally
    InStream.Free;
  end;

end;
Cu, Frank

agm65 19. Okt 2006 12:05

Re: bilder als blob in abs db speichern
 
erstmal danke für die antwort, also ich habe jetzt aus der hilfe folgendes:

Delphi-Quellcode:
procedure TForm1.btLoadClick(Sender: TObject);
var
  FileStream: TFileStream;
  BlobStream: TABSBlobStream;
begin
  ABSTable1.Edit;
  try
    FileStream := TFileStream.Create('Comments.txt',fmOpenRead or fmShareDenyNone);
    BlobStream := TABSBlobStream(ABSTable1.CreateBlobStream(ABSTable1.FieldByName('Comments'),bmWrite));
    BlobStream.CopyFrom(FileStream,FileStream.Size);
    FileStream.Free;
    BlobStream.Free;
    ABSTable1.Post;
  except
    ABSTable1.Cancel;
    raise;
  end;
end;
dann habe ich die txt einfach auf den bild namen geändert und fieldbyname mein blob feld angegeben.
ich bekomme den fehler:

'ABSTable1: Operation bei geschlossener Datenmenge nicht ausführbar'.

dataspider 19. Okt 2006 12:19

Re: bilder als blob in abs db speichern
 
Hi,

also, wenn ich diesen Fehler bekomme, dann ist die Datenmenge auch nicht offen.
Der Fehler müsste schon bei:

ABSTable1.Edit;

kommen.
Die Datenmenge muss schon offen sein und ein Datensatz muss auch aktiv sein.

Cu, Frank

agm65 19. Okt 2006 12:31

Re: bilder als blob in abs db speichern
 
was meinst du damit ? also mein datenbank ist connected. ich lade ja auch vorher schon daten aus.

dataspider 19. Okt 2006 12:36

Re: bilder als blob in abs db speichern
 
Zitat:

Zitat von agm65
was meinst du damit ? also mein datenbank ist connected. ich lade ja auch vorher schon daten aus.

Ich kenne abs nicht. Aber ich denke, dass irgendwo ein ABSTable1.Open fehlt.

Wenn du den Debugger bemühst, an welcher Stelle kommt denn der Fehler?

Cu, Frank

agm65 19. Okt 2006 12:42

Re: bilder als blob in abs db speichern
 
also wenn ich den tabel auf open mache, bekomme ich nen fehler: missing table name property
ich glaube du hast recht beim edit hängt es schon

agm65 19. Okt 2006 12:44

Re: bilder als blob in abs db speichern
 
hey frank du bist echt ein schatz ...so jetzt fängt er an zu meckern, dass verschiedene felder nen wert haben müssen

das problem ist nur ich fülle die anderen felder nicht mit dem tabel sondern mit dem query....vll kann ich das umbauen

agm65 19. Okt 2006 12:52

Re: bilder als blob in abs db speichern
 
oder hast du eine idee wie ich das jetzt kombinieren kann ?
ich trage die anderen werte wie folgt ein:

Delphi-Quellcode:

Query.sql.text := 'Insert into vehicles ('

 +      'brand,'
 +      'model,'

 + ') values ('

 + '''' + txtMarke.Text  + ''','
 + '''' + txtModell.Text + ''')';

Query.ExecSQL;
kann ich da jetzt nicht meinem blob feld den stream zuweisen ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr.

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