![]() |
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:
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.
procedure TfrmShowVehicles.DBCtrlGridPaintPanel(DBCtrlGrid: TDBCtrlGrid;
Index: Integer); with DataSource.DataSet do image1.Picture.LoadFromFile(frmmain.QueryLoadDatashow_image.text); end; deswegen wollte ich die dbimagebox nehmen, denn diese lässt sich direkt mit der db verknüpfen. |
Re: bilder als blob in abs db speichern
Delphi-Quellcode:
ich dachte man könnte das so speichern aber ich bekomme nur fehler ...hat jemand eine idee ? auch versucht habe ich:
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;
Delphi-Quellcode:
zugriffsverletzung ?
image:Timage;
begin image.Picture.LoadFromFile('h:\test.jpg'); with Tabel do begin Edit; FieldByName('show_image').Assign(Image.Picture ); Post; end; |
Re: bilder als blob in abs db speichern
Hi,
bei mir funktioniert es so:
Delphi-Quellcode:
Cu, Frank
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; |
Re: bilder als blob in abs db speichern
erstmal danke für die antwort, also ich habe jetzt aus der hilfe folgendes:
Delphi-Quellcode:
dann habe ich die txt einfach auf den bild namen geändert und fieldbyname mein blob feld angegeben.
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; ich bekomme den fehler: 'ABSTable1: Operation bei geschlossener Datenmenge nicht ausführbar'. |
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 |
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.
|
Re: bilder als blob in abs db speichern
Zitat:
Wenn du den Debugger bemühst, an welcher Stelle kommt denn der Fehler? Cu, Frank |
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 |
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 |
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:
kann ich da jetzt nicht meinem blob feld den stream zuweisen ?Query.sql.text := 'Insert into vehicles (' + 'brand,' + 'model,' + ') values (' + '''' + txtMarke.Text + ''',' + '''' + txtModell.Text + ''')'; Query.ExecSQL; |
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