Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   problema al intentar guardar una imagen como blob en una tabla (https://www.clubdelphi.com/foros/showthread.php?t=40609)

Gigabyte1024 21-02-2007 23:59:37

problema al intentar guardar una imagen como blob en una tabla
 
hola, tengo un problema con este codigo:

procedure TForm1.Button2Click(Sender: TObject);
var
m,f: TStream;
s: string;
begin
ibdataset1.Active:=True;
if OpenPictureDialog1.Execute then
begin
f:= TFileStream.Create(OpenPictureDialog1.filename, fmOpenRead);
IBDataSet1.Insert;
m:= IBDataSet1.CreateBlobStream(IBDataSet1.FieldByName('foto'), bmReadWrite);
m.CopyFrom(f, f.Size);
ibdataset1.FieldByName('nombre').AsString:=edit1.Text;
ibdataset1.FieldByName('apellido').AsString:=edit5.Text;
ibdataset1.FieldByName('grado').AsString:=edit2.Text;
ibdataset1.FieldByName('turno').AsString:=edit3.Text;
ibdataset1.FieldByName('codigo').AsInteger:=strtoint(edit4.Text);
IBDataSet1.Post;
ibtransaction1.CommitRetaining;
f.Free;
m.Free;
end;

ibtransaction1.Active:=False;
end;

Su proposito principal es convertir una imagen a un BLOB y guardarla en la tabla de interbase pero al ejecutarlo me regresa este error: "feature is not supported BLOB and array data types are not supported for compare operation", espero alguien pueda ayudarme incluyo el codigo de la tabla para referencia:

CREATE TABLE CREDENCIAL
(
FOTO BLOB SUB_TYPE 0 SEGMENT SIZE 20000,
NOMBRE VARCHAR(25),
APELLIDO VARCHAR(40),
GRADO VARCHAR(10),
TURNO VARCHAR(20),
CODIGO INTEGER
);

por sus respuestas gracias.

aledieb 22-02-2007 15:02:32

Probaste con:

IBDataSet1.FieldByName('foto').loadfromfile('C:\camino\foto.bmp');

fidel 22-02-2007 19:07:19

A mi esto que es similar me funciona bien
Código Delphi [-]
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids, DBGrids, ComCtrls, Mask, DBCtrls,
  ExtCtrls, Menus, ExtDlgs, Jpeg, DB;
....
procedure TFDatos.Cargarfoto1Click(Sender: TObject);
var
  m, f: TStream;
  s: string;
begin
  if dlgOpenPicture.Execute then
    begin
      DM.IBDSAlumnos.Edit;
      m:= DM.IBDSAlumnos.CreateBlobStream(DM.IBDSAlumnosFOTO, bmWrite);
      f:= TFileStream.Create(dlgOpenPicture.filename, fmOpenRead);
      m.CopyFrom(f, f.Size);
      s:= AnsiUpperCase(ExtractFileExt(dlgOpenPicture.FileName));
      DM.IBDSAlumnos.Post;
      f.Free;
      m.Free;
    end
end;

Gigabyte1024 22-02-2007 23:30:34

he intentado ambos codigos pero me sigue regresando el mismo error le hice algunas correcciones y lo deje asi:

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  m, f: TStream;
  s: string;
begin
  if OpenPictureDialog1.Execute then
  begin
    IBDataSet1.Edit;
    image1.Picture.LoadFromFile(openpicturedialog1.FileName);
    //image1.Picture.Graphic.SaveToStream(f);
    //m:= IBDataSet1.CreateBlobStream(form1.IBDataSet1FOTO, bmWrite);
    f:= TFileStream.Create(OpenPictureDialog1.filename, fmOpenRead);
    //m.CopyFrom(f, f.Size);
    form1.IBDataSet1FOTO.LoadFromStream(f);
    form1.IBDataSet1NOMBRE.AsString:=edit1.Text;
    form1.IBDataSet1APELLIDO.AsString:=edit5.Text;
    form1.IBDataSet1GRADO.AsString:=edit2.Text;
    form1.IBDataSet1TURNO.AsString:=edit3.Text;
    form1.IBDataSet1CODIGO.AsInteger:=strtoint(edit4.Text);
    IBDataSet1.Post;
    f.Free;
    m.Free;
  end;
end;

Eso despues de haber estado jugando con las sintaxis por varias horas pero sigue retornando el mismo error no se que esta mal la verdad.

muchas gracias por sus respuestas espero por favor sigan respondiendo
gracias


La franja horaria es GMT +2. Ahora son las 20:00:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi