Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-11-2004
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Imagenes en Campos Blob

Hola amigos y amigas del foro:

Estoy seguro que este tema lo han tratado con anterioridad, mi inquietud consta en la necesidad de guardar una imagen dentro de un campo blob haciendolo por medio de instrucciones sql escritas en delphi, he revisado los ejemplos aqui propuestos pero aun no he encontrado la manera de hacerlo.

A todos gracias, de antemando si pueden ayudarme
Responder Con Cita
  #2  
Antiguo 08-11-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
...utiliza parámetros

Sin ir más lejos (debes utilizar parámetros):
http://www.clubdelphi.com/foros/showthread.php?t=11107


NOTA: La forma de definir parámetros cambia dependiendo de la Base de Datos y de los componentes de acceso, pero la idea es siempre la misma; Éste sistema lo he utilizado con Access, IB, SQlServer y Oracle y siempre me ha ido bien.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 08-11-2004
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Gracias por la ayuda en efecto me funcionó, ahora mi actual dilema es cargar esa imagen que se encuentra almacena y mostrarla en un TImage, les agradesco cualquier sugerencia.
Responder Con Cita
  #4  
Antiguo 09-11-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por subzero
...ahora mi actual dilema es cargar esa imagen que se encuentra almacena y mostrarla en un TImage
¿Porqué no utilizas un DBImage?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 16-11-2004
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
No, ya que estoy trabajando con consultas, pero no hay ningun problema ya puedo mostrar la imagen, utilizando algunos de los ejemplos que me ha proporcionado el foro, hice algo así:

var
temporal_imagen : TStream; jp : TJpegImage;
...
imgFoto.Picture := nil;
temporal_imagen := IBQuery.CreateBlobStream(fieldbyname('PLA_MPIO_FOTO'), bmRead);
jp := TJpegImage.Create;
jp.LoadFromStream(temporal_imagen);
imgFoto.Picture.Assign(jp);
FreeAndNil(jp);
temporal_imagen.Free;
...

ha, gracias por la sugerencia
Responder Con Cita
  #6  
Antiguo 16-11-2004
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Tengo un nuevo problema... cuando cargo la imagen que se encuentra almacenada se me presentan errores como #53, #43, no se si el error este ligado al momento de guardarla o de cargarla para una mejor descripción expongo el método que empleo

Almacenamiento
with ModuloDatos.IBQuery do
begin
close;
sql.clear;
sql.Add('UPDATE IMAGE');
sql.Add('SET FOTO = :fto');
sql.Add('WHERE CODIGO = :vlr');
ParamByName('vlr').AsString := '' + codigo + '';
ParamByName('fto').LoadFromFile(OPDFoto.FileName, ftBlob);
ExecSQL;
end;

Gracias por intersarse en mi duda
Responder Con Cita
  #7  
Antiguo 26-11-2004
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Borrar Blob's

Hola foro:

Tras de un largo tiempo de investigación creo descubir una de las características por las cuales se presentan los errores al momento de manipular imagenes que son guardadas en campos blob antes de asignarle la información del campo es necesario crear :
...
Image1.Picture := nil;
Image1.Picture.Graphic:= TJpegImage.Create;
temporal_imagen := DMDatos.IBQuery.CreateBlobStream(fieldbyname('PLA_MPIO_FOTO'), bmRead);
imgFoto.Picture.Graphic.LoadFromStream(temporal_imagen);
temporal_imagen.Free;

...

Mi actual duda es "Como eliminar la información que se encuentra almacenada en un campo blob sin borrar el registro"

He intentado por medio de la sentencia sql

UPDATE PLANTA_MUNICIPAL
SET PLA_MPIO_FOTO = NULL
WHERE PLA_MPIO_CODIGO = :vlr


Pero igual queda algo. Les agradesco cualquier idea, gracias
Responder Con Cita
  #8  
Antiguo 26-11-2004
athlontado athlontado is offline
Miembro
 
Registrado: sep 2004
Ubicación: Almázcara - León (España)
Posts: 63
Poder: 20
athlontado Va por buen camino
No, no queda nada. Simplemente deja el espacio anteriormente ocupado por el blob, disponible para nuevos datos.

Normalmente, el tamaño de la BBDD nunca baja, a no ser que hagas un backup/restore. Eso es porque Firebird aumenta el tamaño de la BBDD por páginas, cuando todas las páginas disponibles están llenas de datos, se aumenta el tamaño del fichero de la BBDD para alojar las nuevas páginas. Pero si borramos datos, las páginas donde esos datos estaban no se borran, sino que se dejan disponibles para los que vengan más tarde.
__________________
Óscar Salvador Páez
Aprendiendo a aprehender de quienes aprehenden, sin cerciorarse de sus edades, culturas, sexos, razas, creencias u orígenes, es la forma más sabia de aprehender.
Responder Con Cita
  #9  
Antiguo 26-11-2004
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
No estoy trabajando en Interbase 6.0 y en el campo hexadecial queda "basura", en text "œZM" y en el richText "œZM", por si acaso estoy utlizando el EMS Interbase Manager

Por si acaso estoy trabajando en delphi 7, y desde allí envio la sentencia SQL

Última edición por subzero fecha: 26-11-2004 a las 16:55:35. Razón: Falto más especificación
Responder Con Cita
  #10  
Antiguo 26-11-2004
athlontado athlontado is offline
Miembro
 
Registrado: sep 2004
Ubicación: Almázcara - León (España)
Posts: 63
Poder: 20
athlontado Va por buen camino
Por si no lo sabes, FB es hijo de IB6, por lo que su funcionamiento, en este aspecto es idéntico.

Efectivamente, el Blob sique apuntando al bloque donde se almacenaban los datos antiguos y, por eso, recupera basura al mostrarlo en un memo.
Esos datos no se eliminarán hasta la próxima recolección de basura de la BBDD ó hasta que no se haga un Backup/Restore ó, hasta que el espacio al que apunta el blob lo reserve otro blob.
__________________
Óscar Salvador Páez
Aprendiendo a aprehender de quienes aprehenden, sin cerciorarse de sus edades, culturas, sexos, razas, creencias u orígenes, es la forma más sabia de aprehender.
Responder Con Cita
  #11  
Antiguo 26-11-2004
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Si te has dado cuenta estoy tratando de cargarlo en un Image, pero como viene con basura me genera errores, que puedo hacer dentro del condicional inserto una nueva validación que verifique que no sea igual a "œZM", (no queria hacerlo así...). Debe existir algún metodo puesto que desde la consola lo puedo colocar nulo pero desde Delhpi no
Responder Con Cita
  #12  
Antiguo 26-11-2004
athlontado athlontado is offline
Miembro
 
Registrado: sep 2004
Ubicación: Almázcara - León (España)
Posts: 63
Poder: 20
athlontado Va por buen camino
Intenta cargar el Stream dentro de un bloque try..except y, en el except implementas el código necesario para mostrar una imagen en blanco. Creo que con eso te bastaría.
__________________
Óscar Salvador Páez
Aprendiendo a aprehender de quienes aprehenden, sin cerciorarse de sus edades, culturas, sexos, razas, creencias u orígenes, es la forma más sabia de aprehender.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 15:25:52.


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
Copyright 1996-2007 Club Delphi