Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2009
Elqui Elqui is offline
Registrado
 
Registrado: dic 2009
Posts: 2
Poder: 0
Elqui Va por buen camino
Thumbs up Guardar una imagen a una base de datos en mySQL

Tengo una tabla, en MySQL, para guardar datos de personas (nombres, apellidos, ..., foto). El campo foto es tipo BLOB.

Para actualizar la tabla desde un form, he ligado la tabla a un DataSource al cual están ligados los DBEdit de los campos. Para el campo foto uso un DBImage.

El codigo para actualizar la tabla es el siguiente:

begin
Tabla1.Edit; //abrir la tabla en modo edición
TOpenPictureDialog1.Execute; //Seleccionar la imagen de un directorio
TDBImage1.Picture.LoadFromFile(TOpenPictureDialog1.FileName); //cargar
Tabla1.Post; //guardar los datos en la tabla
end;

El código se ejecuta correctamente hasta llegar a la última línea (Tabla1.Post que es donde me salta el siguiente error: "No se puede encontrar la fila para su actualización: algunos valores han cambiado desde la última vez que se leyó"

Los demas campos de la tabla(nombres, apellidos, etc.) si son actualizados pero el campo foto no lo actualiza.

Agradezco puedan ayudarme a solucionar este error.
Responder Con Cita
  #2  
Antiguo 15-12-2009
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Estimado Elqui :

Yo utilizo el siguiente código y funciona perfecto

Código Delphi [-]
if DataSetEdit1.Execute then
if OpenPictureDialog1.Execute then
EDBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
DataSetRefresh1.Execute;
end;

Esto te permitirá ingresar en la base de datos imágenes BMP. Para ingresar imágenes en formato Jpeg deberías usar los componentes EDBImage 1.6 de Sebastián Mayora o el JvEDBImage de las librerías Jedi.

Saludos y suerte
Responder Con Cita
  #3  
Antiguo 15-12-2009
Elqui Elqui is offline
Registrado
 
Registrado: dic 2009
Posts: 2
Poder: 0
Elqui Va por buen camino
Gracias Radenf

Efectivamente, necesito guardar imagenes JPG, buscaré los componentes que me indicas y luego probaré con el código que has puesto.
Responder Con Cita
  #4  
Antiguo 15-12-2009
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
El EDBImage 1.6 funciona sólo hasta Delphi 7.
Las Jedi entiendo que hasta Delphi 2009.
Yo uso Delphi 2007 y tengo una versión de EDBImage 1.6 compilada para esta versión,que al instalarla tira algunos errores, pero al final funciona. Si fuera esta la versión que requieres te la podría enviar por mail privado.

Salu2
Responder Con Cita
  #5  
Antiguo 16-12-2009
Avatar de heroe
heroe heroe is offline
Miembro
 
Registrado: may 2006
Ubicación: Cartago, Costa Rica
Posts: 45
Poder: 0
heroe Va por buen camino
Lightbulb Guardando una imagen o archivo

Te recomiendo que uses un campo tipo longblob.

Ejemplo guardar una imagen

Donde
  • _Imagen es una variable stream
  • imgImagen es un TImage
  • ADOQuery1 es TADOQuery
Código Delphi [-]
_Imagen := TMemoryStream.Create;
imgImagen.Picture.LoadFromFile(OpenPictureDialog1.FileName);
_Imagen.LoadFromFile(OpenPictureDialog1.FileName);

with ADOQuery1 do
begin
SQL.Add('Insert into Tabla');
SQL.Add('(Imagen)');
SQL.Add('Values(:Param0)');
with Parameters do
  Items[0].LoadFromStream(_Imagen, ftBlob);
ExecSQL;
end;

_Imagen.Free;
Responder Con Cita
  #6  
Antiguo 18-12-2009
vinicc vinicc is offline
Miembro
 
Registrado: ago 2006
Posts: 31
Poder: 0
vinicc Va por buen camino
Talking pegando la imágen

hola ! quiero comentarte que una vez me pasó lo mismo pero incrementando el tamaño del campo se solucionó el problema. Por otraparte utilizo una forma diferente de colocar la imagen y se debe a las especificaciones del cliente. Lo que hago es lo siguiente:

el operador coloca la imágen en el buffer de memoria (copiar) y luego pulsa un botón y la imagen se "pega" en el campo.

if dbset.CoCfg.State <> dsEdit then dbset.CoCfg.Edit;
Logo.PasteFromClipboard;

Luego el usuario decide si cancela o guarda los cambios efectuados. Logo es un TDBImage
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar datos en Base de Datos MySQL knnibal Conexión con bases de datos 6 23-06-2011 15:36:42
Guardar imagen en base de datos Access fonx Conexión con bases de datos 2 31-03-2008 11:38:01
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
Guardar imagen en una tabla de la BD mysql jose_2057111 PHP 2 24-12-2004 18:30:16
Guardar una archivo de imagen (bmp,jpg..etc), en la base de datos cahosoft Firebird e Interbase 4 31-07-2004 16:53:56


La franja horaria es GMT +2. Ahora son las 21:20:14.


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