Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Blobs speichern (https://www.delphipraxis.net/52005-blobs-speichern.html)

TheMiller 22. Aug 2005 14:57

Datenbank: MySQL • Version: 4 • Zugriff über: ZEOSLib

Blobs speichern
 
Hallo,

nochmal zum Blob:

Habe folgenden Code:

Delphi-Quellcode:
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 Fehler liegt bei der Initialisierung des Blob-Streams. Ich bekomme immer die Meldung "inkompatible Typen String und TBlobField"

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!

Sharky 22. Aug 2005 16:24

Re: Blobs speichern
 
Zitat:

Zitat von DJ-SPM
... Mein zu speichernder Anhang befindet sich in der Edit1 Komponente. ...

:gruebel:
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?

TheMiller 22. Aug 2005 16:27

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

ol1uw 22. Aug 2005 16:40

Re: Blobs speichern
 
Zitat:

Delphi-Quellcode:
 BloBStream:=TBlobStream.Create(TEdit(Form1.ZQuery1.FieldByName('anlage')), bmread);

Vielleicht geht das.
Delphi-Quellcode:
BloBStream:=TBlobStream.Create((Form1.ZQuery1.FieldByName('anlage') as TBlobField), bmread);

TheMiller 22. Aug 2005 16:43

Re: Blobs speichern
 
Undefinierter Bezeichner TBlobField
inkompatible Typen TBlobField und TField
konnte nicht ...

ol1uw 22. Aug 2005 17:02

Re: Blobs speichern
 
Delphi-Quellcode:
BloBStream:=TBlobStream.Create(Form1.ZQuery1.FieldByName('anlage'), bmread);
Allerdings stand im ersten Post
Zitat:

Mein Fehler liegt bei der Initialisierung des Blob-Streams. Ich bekomme immer die Meldung "inkompatible Typen String und TBlobField"
deswegen das as TBlobField

TheMiller 22. Aug 2005 17:04

Re: Blobs speichern
 
Ja, hatte schon mehrere Möglichkeiten ausprobiert. Es funktionieren beide nicht :wall:

Sharky 22. Aug 2005 18:03

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;

TheMiller 22. Aug 2005 18:05

Re: Blobs speichern
 
Danke,

werde es mal ausprobieren und mich melden!

marabu 22. Aug 2005 18:10

Re: Blobs speichern
 
Hi Sharky,

muss der Umweg über einen Parameter wirklich sein?

Delphi-Quellcode:
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;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 Uhr.
Seite 1 von 2  1 2      

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