Announcement

Collapse
No announcement yet.

Dateien in ein Blob speichern und laden ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dateien in ein Blob speichern und laden ?

    Ich benutze ADOExpress um mit OLEDB auf eine Access Datenbank zuzugreifen.

    Wie schaffe ich es Dateien (Bilder JPG,PNG usw.) in ein Blobfeld zu speichern bzw. wieder rauszuholen ?
    In der der Hilfe gibts zwar LoadFromFile aber wie wendet man das auf das Blobfeld an ?

  • #2
    Bsp:

    // To save a file to BLOB:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    blob: TBlobStream;
    begin
    blob := yourDataset.CreateBlobStream(yourDataset.FieldByNa me('YOUR_BLOB'), bmWrite);
    try
    blob.Seek(0, soFromBeginning);
    fs := TFileStream.Create('c:\your_name.doc', fmOpenRead or
    fmShareDenyWrite);
    try
    blob.CopyFrom(fs, fs.Size)
    finally
    fs.Free
    end;
    finally
    blob.Free
    end;
    end;
    // To load from BLOB:

    procedure TForm1.Button1Click(Sender: TObject);
    var
    blob: TBlobStream;
    begin
    blob := yourDataset.CreateBlobStream(yourDataset.FieldByNa me('YOUR_BLOB'), bmRead);
    try
    blob.Seek(0, soFromBeginning);

    with TFileStream.Create('c:\your_name.doc', fmCreate) do
    try
    CopyFrom(blob, blob.Size)
    finally
    Free
    end;
    finally
    blob.Free
    end;
    end

    Comment


    • #3
      Hallo,

      das ist meine IB-Table:
      CREATE TABLE TEST
      (
      SIMFIRMA VARCHAR(3) NOT NULL,
      LFDNR VARCHAR(5) NOT NULL,
      BESCHREIBUNG BLOB SUB_TYPE TEXT SEGMENT SIZE 6144,
      PRIMARY KEY (SIMFIRMA, LFDNR)
      );

      Ich möchte über IBSQL bestimte Daten auswählen und über DataSetProvider die Daten an ClientDataSet übergeben (was auch funktioniert).

      In mein BLOB - BESCHREIBUNG möchte ich z.B. eine PDF- oder DOC-Datei speichern.
      Das Beispiel habe ich übernommen:

      procedure TForm1.Button4Click(Sender: TObject);
      var blob: TBlobStream;
      FName : string;
      field_name : string;
      begin
      screen.Cursor := crHourglass;
      FName := 'c:\blob.doc';

      blob := cd1.CreateBlobStream(cd1.FieldByName('Beschreibung '), bmWrite);
      try
      blob.Seek(0, soFromBeginning);
      fs := TFileStream.Create('c:\blob.doc', fmOpenRead or
      fmShareDenyWrite);
      try
      blob.CopyFrom(fs, fs.Size)
      finally
      fs.Free
      end;
      finally
      blob.Free
      end;

      screen.Cursor := 0;

      end;

      Leider bekomme ich die Meldung "Inkompatible Typen: 'TBlobStream' und 'TStream'"

      Vielen Dank für euere Hilf

      Comment


      • #4
        Du solltest eine neue Frage (in Datenbankentwicklung) eröffnen. Dieser Thread ist fast 3 Jahre al
        Christian

        Comment

        Working...
        X