La Web del Programador: Comunidad de Programadores
 
    Pregunta:  41091 - SQL SERVER Y DELPHI 5.O PARA INSERTAR IMAGENES
Autor:  FABIAN ENRIQUE CAYAMBE ANDRADE
TENGO UNA BASE DE DATOS HECHA EN SQL SERVER Y REALICE LA CONEXIÓN CON DELPHI 5.0 PERO EN UNA TABLA TENGO UN CAMPO TIPO IMAGEN EN SQL SERVER 2000 PERO EN DELPHI 5.0 ME DA PROBLEMAS AL INSERTAR Y ME APARECE EL MENSAJE DE NON-BLOB Y NO ME PERMITE REALIZAR NADA.

COMO PUEDO SOLUCIONAR ESTE PROBLEMA O QUE CAMPO PUEDO DEFINIR PARA EVITAR ESTO.

  Respuesta:  G Horner
Yo he insertado imágenes en la base de datos, quizá no sea la mejor forma, pero a mi me funcionó:

{RutaIlustracion es una variable conteniendo la ruta de la imagen, este procedimiento inserta un registro en una tabla, incluyendo la imagen, el campo emb_foto es de tipo blob}

var
Stream: TAdoBlobStream;

begin
gxConeccion:=TAdoConnection.create(gxConeccion);
gxConeccion.ConnectionString:=ConeccionBD;
gxconeccion.LoginPrompt:=false;
gxConeccion.open;

rs_auxiliar:=TAdoDataSet.create(rs_auxiliar);
rs_auxiliar.Connection:=gxConeccion;
rs_auxiliar.commandtext:='select * from Tabla';
rs_auxiliar.Active:=true;
rs_auxiliar.Insert;

Stream:=TAdoBlobStream.Create(TBlobField(rs_auxiliar.fieldbyname('emb_foto')),bmwrite);
Stream.LoadFromFile(RutaIlustracion);
Stream.Free;

rs_auxiliar.FieldByName('emb_keyemb').value:=trim(ClaveEmbobinado);
rs_auxiliar.Fieldbyname('emb_palabras').value:=trim(Palabras);
rs_auxiliar.Fieldbyname('emb_lectura').value:=trim(Lectura);
rs_auxiliar.Fieldbyname('emb_fotocel').value:=trim(FotoCelda);
rs_auxiliar.FieldByName('emb_ladimp').value:=trim(LadoImprimir);
rs_auxiliar.Post;

rs_auxiliar.Connection:=nil;
rs_auxiliar:=nil;
gxConeccion.close;
gxConeccion:=nil;
end;