Ver Mensaje Individual
  #8  
Antiguo 13-10-2006
fly fly is offline
Miembro
 
Registrado: abr 2005
Posts: 65
Reputación: 20
fly Va por buen camino
Si no queda más remedio que incluir las imagenes en la DB vamos a ver si lo conseguimos .

Ya te digo que nunca lo he hecho, pero debería ser igual que cualquier otro dato.
Respecto al código acertaste, a ver si me explico mejor ahora:

DMQ1 es un Data Module (es igual que cualquier UNIT pero algo más específica) donde yo guardo todos mis compoentes relacionados con la DB (transacciones, querys, datasources... ) para tenerlas todas localizables y de facil acceso desde los diferentes Forms (aunque tambien tengo a veces componentes locales que solo uso en un form).

EDIT_Q es un componente TIBQuery (es el que uso por dejecto para cualquier sentencia SQL que no sea un SELECT)

No uso componentes DBE, FBIPlus ni similares, tan sólo los componetes básicos de Interbase, por lo tanto el código es algo como esto:

............... editado ...........
Al final mientras posteaba decidí cambiarlo, usando una imagen en vez de un MEMO como en el ejemplo anterior.

Código Delphi [-]
Procedure TMiform.GuardarDato; 
var parametro : TParam; // TParam se encuentra en DB.pas
begin

// primero creamos el prarámeto
parametro:=MiIBQuery.Params.CreateParam(ftBlob,'_parametro_blob',ptInput);

// ftBlob -> indico que queremos crear un parametro tipo Blob, existe un ftGraphic pero me da error al ejecutar la query  :!
//  ptInput -> indico que va a ser un parametro de entrada de datos
// '_parametro_blob' --> el nombre del parametro que vamos a crear (usa el que tu quieras)

// Cargamos los datos en el parámeto recien creado
 MiIBQuery.parambyname('_parametro_blob').LoadFromFile('c:\pru.bmp',ftBlob);

// Ponemos la sentencia SQL en la Query
MiIBQuery.SQL.TEXT:=
 'UPDATE configuracion SET'+
 ' logo_empresa= :_parametro_blob '+  // la inserción mediante parámetro se realiza siempre así, poniendo dos puntos ( : ) precediendo al parámetro
 ' WHERE codigo=1';

// ahora ejecutamos el SQL
MiIBQuery.close;
MiIBQuery.prepare;
MiIBQuery.execSQL;

// borramos el parámetro creado
MiTIBQuery.Params.Clear;

end;

He usado una imagen BMP porque no uso componentes para ver JPG, hice las pruebas con un DBImage para ver el resultado del campo blob.

Este código lo he probado y funciona, a ver si te sirve.

Saludos.

Última edición por fly fecha: 13-10-2006 a las 04:41:55.
Responder Con Cita