![]() |
Datenbank: MySQL • Version: 4 • Zugriff über: ZEOSLib
Blobs speichern
Hallo,
nochmal zum Blob: Habe folgenden Code:
Delphi-Quellcode:
Mein Fehler liegt bei der Initialisierung des Blob-Streams. Ich bekomme immer die Meldung "inkompatible Typen String und TBlobField"
procedure TForm6.LbSpeedButton1Click(Sender: TObject);
var FileStream:TFileStream; BlobStream:TBlobStream; begin if OpenDialog1.Execute then Edit3.Text:=OpenDialog1.FileName; FileStream:=TFileStream.Create(Edit3.Text,fmOpenRead); BloBStream:=TBlobStream.Create(TEdit(Form1.ZQuery1.FieldByName('anlage')), bmread); //weiter bin ich noch nicht... end; Mein zu speichernder Anhang befindet sich in der Edit1 Komponente. Wie kann ich die Datei jetzt in die DB speichern bzw. das Feld "kompatibel" machen? EDIT: ICH HABE KEINE DATASET-KOMPONENTE! |
Re: Blobs speichern
Zitat:
Bist Du dir sicher das dein Anhang sich in Edit1 befindet? Was soll das denn für ein Anhang sein der in einem TEdit steht? |
Re: Blobs speichern
da steht der Pfad zu der Datei drin. Ich weiß, es muss in einen Filestream geschrieben werden. Ich bekomme es trotzdem net so hin
|
Re: Blobs speichern
Zitat:
Delphi-Quellcode:
BloBStream:=TBlobStream.Create((Form1.ZQuery1.FieldByName('anlage') as TBlobField), bmread);
|
Re: Blobs speichern
Undefinierter Bezeichner TBlobField
inkompatible Typen TBlobField und TField konnte nicht ... |
Re: Blobs speichern
Delphi-Quellcode:
Allerdings stand im ersten Post
BloBStream:=TBlobStream.Create(Form1.ZQuery1.FieldByName('anlage'), bmread);
Zitat:
|
Re: Blobs speichern
Ja, hatte schon mehrere Möglichkeiten ausprobiert. Es funktionieren beide nicht :wall:
|
Re: Blobs speichern
Hai DJ-SPM,
ich selber arbeite (fast)nur mit INSERT, UPDATE Befehlen. In diesem Fall würde ich das also so lösen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var FileStream: TMemoryStream; anlagefile : string; begin if (OpenDialog1.Execute) then begin anlagefile :=OpenDialog1.FileName; try FileStream:=TMemoryStream.Create; // Stream erzeugen FileStream.LoadFromFile(anlagefile); // Anhang laden FileStream.Position := 0; ZQuery1.Close; ZQuery1.SQL.Text := 'INSERT INTO anlagen (anlage) VALUES (:panlage)'; ZQuery1.ParamByName('panlage').LoadFromStream(FileStream,ftBlob); // ab damit ZQuery1.ExecSQL; finally FileStream.Free; end; end; end; |
Re: Blobs speichern
Danke,
werde es mal ausprobieren und mich melden! |
Re: Blobs speichern
Hi Sharky,
muss der Umweg über einen Parameter wirklich sein?
Delphi-Quellcode:
Grüße vom marabu
procedure TForm6.LbSpeedButton1Click(Sender: TObject);
var fs: TFileStream; bf: TBlobField; begin with OpenDialog do if Execute then begin fs := TFileStream.Create(FileName, fmOpenRead); bf := Form1.ZQuery1.FieldByName('anlage') as TBlobField; // ZQuery1.RequestLive ist TRUE und // die Query befindet sich hoffentlich im Edit-Modus bf.LoadFromStream(fs); fs.Free; end; end; |
Re: Blobs speichern
Zitat:
nö, muss natürlich nicht sein. Aber da ich so ziemlich alles über SQL-INSERT,UPDATE mache und dort immer mit Parametern arbeite mache ich es halt auch bei einem BLOB-Feld so ;-) (Dadurch bleibt die "Art" der DB-Zugriffstechnik die gleiche in einem Programm). |
Re: Blobs speichern
Hai Shary!
Bin jetzt endlich dazu gekommen, die Blob-Geschichte mal durchzuarbeiten. Ich wollte mich ja melden! Ich habe deinen Code erst mit Copy&Paste eingefügt und musste festellen, dass er funktioniert! Danach habe ich ihn mir kurz angesehen und auch gleich meinen Fehler gefunden. Den anderen Code habe ich leider noch nicht ausprobieren können, aber ich denke mal, dass er auch funktionieren wird. Er ist ja nicht viel anders, nur dass er keine Parameter benutzt. Hiermit danke ich euch allen. :hello: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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