Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 29-02-2008
a_f_g a_f_g is offline
No confirmado
 
Registrado: feb 2008
Ubicación: Paraguay
Posts: 14
a_f_g Va por buen camino
Exclamation guardar archivos en un campo blob

Hola a todos, quiero guardar archivos(*xls, *.doc, *.jpg) en un campo blob, me gustaria saber como hacerlos, utilizo firebird con fibplus, algun componente para realizar esta operacion, o codigos que pueda iluminarme


desde luego les agradesco por su ayuda
Responder Con Cita
  #2  
Antiguo 29-02-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.331
Lepe cantidad desconocida en este momento
Debes hacerlo mediante Streams. Los Streams son flujos de datos (un buffer, vamos) bastante potentes.

Código Delphi [-]
var ms :TMemoryStream;
begin
  ms := TMemoryStream.Create;
  ms.loadfromfile('fichero word');
  tabla.Edit; // bueno, lo que sea   
  campoBlob.LoadFromStream(ms); // aquí estamos cargando ya el fichero
  ms.free; // liberamos el intermediario que permite la carga.
  tabla.post;
end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 29-02-2008
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 287
RolphyReyes Va por buen camino
Exclamation

Saludos.

En la pagina de ellos en la sección de artículos explican el manejo de Blob con sus componentes.

Hasta luego.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #4  
Antiguo 03-03-2008
a_f_g a_f_g is offline
No confirmado
 
Registrado: feb 2008
Ubicación: Paraguay
Posts: 14
a_f_g Va por buen camino
Leer campo bloB

gracias por su ayuda, me guardo, ahora como abrir, sis .xls en excel o .doc en word
Responder Con Cita
  #5  
Antiguo 03-03-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.331
Lepe cantidad desconocida en este momento
Usa ShellExecute / WinExec / ExecandWait para que abra el programa con el que tiene asociado dicha extensión (OpenOffice, Word, wordpad, etc). Busca por el foro, hay muchísimos ejemplos.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 06-11-2008
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 250
JerS Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
Debes hacerlo mediante Streams. Los Streams son flujos de datos (un buffer, vamos) bastante potentes.

Código Delphi [-]var ms :TMemoryStream; begin ms := TMemoryStream.Create; ms.loadfromfile('fichero word'); tabla.Edit; // bueno, lo que sea campoBlob.LoadFromStream(ms); // aquí estamos cargando ya el fichero ms.free; // liberamos el intermediario que permite la carga. tabla.post; end;


Saludos

muy bien, pero si despues deseo guardar el archivo de tipo TMemeryStream en un campo de tipo blob en una tabla de Mysql como haria???
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #7  
Antiguo 07-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.331
Lepe cantidad desconocida en este momento
¿no has leído bien el código?. Los campos Blob tienen un metodo LoadFromStream:

Código Delphi [-]
campoBlob.LoadFromStream(ms); // aquí estamos cargando ya el fichero en el campo BLOB
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 07-11-2008
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 250
JerS Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
¿no has leído bien el código?. Los campos Blob tienen un metodo LoadFromStream:

Código Delphi [-]campoBlob.LoadFromStream(ms); // aquí estamos cargando ya el fichero en el campo BLOB

Si amigo he leido el codigo pero al hacer ese mismo proceso me da un error 'Invalid class typecast'
Código Delphi [-]
(rs.FieldByName('template') as  TBlobField).LoadFromStream(tptStream);
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #9  
Antiguo 07-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.331
Lepe cantidad desconocida en este momento
Aps, a ver si consigo explicarme.

doble clic a tu TTable, Tquery o lo que sea, si la ventana que aparece está en blanco, tienes que crear los campos persistentes (botón derecho y Add All Fields), ahora selecciona el campo Blob. Verás que en el inspector de objetos ya nos dice que es un TBlobField, bueno, en realidad, dependerá de los componentes de acceso IBX, BDE, ZEOS, etc, será un TIBBlobField, TBDEBlobField, etc...

Si tu campo "template" es ya un TIBBlobField y haces el moldeo de tipos, estás haciendo que coja la clase abstracta TBlobField y allí no está implementada (será virtual y/o abstract), por eso el error que obtienes.

Si añades los campos persistentes, tu linea sería así:
Código Delphi [-]
rstemplate.LoadFromStream(tptStream)

Si no tienes los campos persistentes, debes hacer el moldeo correcto según tus componentes:
Código Delphi [-]
(rs.Fieldbyname('template') as TIBBlobField).LoadFromStream(tptStream)

O lo que es lo mismo:
Código Delphi [-]
TIBBlobField(rs.Fieldbyname('template')).LoadFromStream(tptStream)

De todas formas no uses copy&paste porque seguro te dará error, crea los campos persistentes, en el inspector ves el nombre correcto que usa tus componentes y ya después puedes borrar los campos persistentes y hacerlo por código.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 07-11-2008
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 250
JerS Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
Aps, a ver si consigo explicarme.

doble clic a tu TTable, Tquery o lo que sea, si la ventana que aparece está en blanco, tienes que crear los campos persistentes (botón derecho y Add All Fields), ahora selecciona el campo Blob. Verás que en el inspector de objetos ya nos dice que es un TBlobField, bueno, en realidad, dependerá de los componentes de acceso IBX, BDE, ZEOS, etc, será un TIBBlobField, TBDEBlobField, etc...

Si tu campo "template" es ya un TIBBlobField y haces el moldeo de tipos, estás haciendo que coja la clase abstracta TBlobField y allí no está implementada (será virtual y/o abstract), por eso el error que obtienes.

Si añades los campos persistentes, tu linea sería así:
Código Delphi [-]rstemplate.LoadFromStream(tptStream)


Si no tienes los campos persistentes, debes hacer el moldeo correcto según tus componentes:
Código Delphi [-](rs.Fieldbyname('template') as TIBBlobField).LoadFromStream(tptStream)


O lo que es lo mismo:
Código Delphi [-]TIBBlobField(rs.Fieldbyname('template')).LoadFromStream(tptStream)


De todas formas no uses copy&paste porque seguro te dará error, crea los campos persistentes, en el inspector ves el nombre correcto que usa tus componentes y ya después puedes borrar los campos persistentes y hacerlo por código.

Saludos

Correcto Lepe, todo lo que dices esta muy bien , puede ser que no me he sabido explicar el problema que existe es que estoy usando un recordset el componente ADO, con una tabla en Mysql, y a la Hora de asignar el valor del Template a mi campo de tipo LongBLOB, con el metodo que te describi anteriormente me sale la excepcion de 'Invalid class typecast', nose si en mi ignorancia lo que te voy a decir tengo razon sino te agradezco que me corrijas pero puede ser que no coincidan los tipos de datos TBlobFile con el tipo de dato que utiliza MYSQL en sus campos de tipo BLOB..

Saludos
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #11  
Antiguo 07-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.331
Lepe cantidad desconocida en este momento
No uso mySql ni ADO, esperemos que otro forista pueda echarte un cable.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error al guardar Jpeg en Campo Blob El_Perrito Gráficos 6 28-04-2012 20:06:38
¿Como Guardar un Bmp/Jpg en un campo BLOB desde Delphi? LuCkY_007 MySQL 4 18-01-2007 12:05:26
guardar un fichero en un campo blob apicito Firebird e Interbase 2 02-03-2005 12:01:54
¿Como Guardar un "RECORD" en un campo BLOB? sitrico Conexión con bases de datos 5 29-06-2004 17:32:01
Guardar formatos en un campo blob morfeo21 Varios 0 30-06-2003 19:45:53


La franja horaria es GMT +2. Ahora son las 22:42:10.


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