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 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
  #2  
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
  #3  
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
  #4  
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
  #5  
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
  #6  
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 23:55:04.


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