FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
...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. |
#3
|
|||
|
|||
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.
|
#4
|
||||
|
||||
Cita:
__________________
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. |
#5
|
|||
|
|||
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 |
#6
|
|||
|
|||
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 |
#7
|
|||
|
|||
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 |
#8
|
|||
|
|||
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.
|
#9
|
|||
|
|||
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 |
#10
|
|||
|
|||
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.
|
#11
|
|||
|
|||
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
|
#12
|
|||
|
|||
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.
|
|
|
|