Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-05-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Question Vincular imagen a una base de datos

Hola CLUB!!! Hago una simple consulta... quiero vincular imágenes a la base de datos pero no guardar la imagen en la misma, ejemplo: una carpeta que contenga imágenes con el nombre del producto a mostrar... es decir si en mi base de datos tengo un producto 33333 y en la carpeta tengo una imagen 33333.jpg como hago para vincularlas?

alguien me pasa algún link de este tema?
Desde ya muchas gracias...
Responder Con Cita
  #2  
Antiguo 26-05-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Crea un hilo nuevo para tu consulta. Donde lo has puesto es para contestar a alguien que inició su propia consulta.
Lo he movido a un hilo nuevo, tenlo en cuenta para otra ocasión, gracias.
Responder Con Cita
  #3  
Antiguo 26-05-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Qué quieres decir con "cómo vincularlas"? Si ya la tienes guardada con el nombre 333.jpg y estás consultando el artículo 333, no tienes más que abrir la imagen 333.jpg
Tal vez no he entendido lo que preguntas.
Responder Con Cita
  #4  
Antiguo 26-05-2018
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Ya las tienes vinculadas por el nombre. (Imagen = Ruta + CodigoProducto + ".JPG")

Supongo que te refieres a mostrar la imagen.
En ese caso tienes que tener un componente TImage en el formulario y cargarle la imagen:

Código Delphi [-]
procedure TForm.CargarImagenDeArchivo(Imagen: TImage; Archivo: string);
begin
  try
     Imagen.Picture.LoadFromFile(Archivo);
  except
     on EInvalidGraphic do
     begin
        Imagen.Picture.Graphic := nil;
        MessageDlg(_('Formato de imagen no aceptado'), mtError, [mbOK], 0);
     end;
     on EFOpenError do
     begin
        Imagen.Picture.Graphic := nil;
     end;
  end;
end;

begin
   RutaImagenesProductos := 'C:\Imagenes\Productos\';
   RutaImagenesClientes := 'C:\Imagenes\Clientes\';
[...]
   CargarImagenDeArchivo(MiImagen, RutaImagenesProductos + Tabla.FieldByName('PRODUCTO').AsString + '.JPG')
[...]
end;
Responder Con Cita
  #5  
Antiguo 26-05-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Gracias Casimiro Notevi y perdón soy nuevo... Pero como creo un Hilo??
Desde ya un millón de gracias...
Responder Con Cita
  #6  
Antiguo 26-05-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Gracias duilioisola No sabia como hacerlo o encargarlo... :-).
Responder Con Cita
  #7  
Antiguo 26-05-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por DiegoPucho Ver Mensaje
Pero como creo un Hilo??
Eliges el foro más adecuado a tu pregunta, una vez allí solamente tienes que pulsar el botón que está arriba, a la izquierda, que dice: "Nuevo hilo".
Escribes un título lo más descriptivo posible a lo que quieras preguntar. Y describes tu duda lo más ampliamente posible.
Saludos.
Responder Con Cita
  #8  
Antiguo 26-05-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
No entendí

Donde coloco esto??? Ultima parte...

Código Delphi [-]
begin
   RutaImagenesProductos := 'C:\Imagenes\Productos\';
   RutaImagenesClientes := 'C:\Imagenes\Clientes\';
[...]
   CargarImagenDeArchivo(MiImagen, RutaImagenesProductos + Tabla.FieldByName('PRODUCTO').AsString + '.JPG')
[...]
end;

Perdón que recién empiezo con delphi y a programar... estoy aprendiendo mucho así... a prueba y error...
Responder Con Cita
  #9  
Antiguo 27-05-2018
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Esto debes ponerlo en el lugar donde quieras que se ejecute la acción de mostrar la imagen.

Se me ocurre que lo quieres cada vez que cambie el producto. En ese caso lo puedes poner en el evento OnChange del Edit que muestre el código del producto.

También lo puedes poner en el OnClick de un botón para evitar que se carguen cada vez que muestras un producto diferente. Solo se cargará la imagen si el usuario lo pide, presinando el botń.

Código Delphi [-]
procedure TForm.BotonMuestraImagen.Click(Sender: TObject);
begin
   // Estas deberían ser variables globales, o globales a la unidad
   // Podrías cargarlas desde un fichero .ini que contenga la configuración/preferencias
   RutaImagenesProductos := 'C:\Imagenes\Productos\';
   RutaImagenesClientes := 'C:\Imagenes\Clientes\';

   CargarImagenDeArchivo(MiImagen, RutaImagenesProductos + Tabla.FieldByName('PRODUCTO').AsString + '.JPG')
end;
otń.
Responder Con Cita
  #10  
Antiguo 27-05-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Problemas con visualización

Hola duilioisola tengo problemas en que se visualice. Hice muchas pruebas y nada aun.. explico por donde voy:
Tenia problemas con este código:
Código Delphi [-]
RutaImagenesProductos := 'C:\Imagenes\Productos\';
Le puse en un VAR y nada hasta que se me ocurrió esto:
Código Delphi [-]
const
  RutaImagenesProductos:String = ('C:\SOME\Imagenes\Productos');
entre USE y TYPE.
Luego coloque justo donde mencionas:
Código Delphi [-]
CargarImagenDeArchivo(MiImagen, RutaImagenesProductos + Tabla.FieldByName('PRODUCTO').AsString + '.JPG')

Aun no logro que la muestre, esta bien por donde voy????
Responder Con Cita
  #11  
Antiguo 27-05-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Voy a Expresarme mejor...

Hola voy de nuevo... En el form tengo los siguientes componentes: Base de Datos, un Query, un DBGrid y un SImage.
Lo que quiero es visualizar una imagen guardada con el numero de código de un producto. cuando selecciono en el dbgrid me muestre dicha Imagen correspondiente.
Responder Con Cita
  #12  
Antiguo 27-05-2018
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Mañana trataré de hacer un minidemo de eso.
Lo publicaré aquí para que puedas probarlo.
Ahora no tengo un delphi a mano...
Responder Con Cita
  #13  
Antiguo 29-05-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Smile Una revisión

duilioisola gracias por tu operación y excelentes explicaciones... creo que lo soluciones... explico lo que hice...
donde dice:
Cita:
Le puse en un VAR y nada hasta que se me ocurrió esto:
Código Delphi [-]
const
  RutaImagenesProductos:String = ('C:\Imagenes\Productos');
lo que le faltaba era (\) al final...
Código Delphi [-]
const
  RutaImagenesProductos:String = ('C:\Imagenes\Productos\');
Luego coloque todo como me dijiste...
Pero tuve que acomodar las propiedades de la Imagen... y listo .
Esta bien lo que hice???
Responder Con Cita
  #14  
Antiguo 29-05-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Question Como guardar una Imagen vinculando con la base de datos?

Ahora como guardo una Imagen en el mismo fichero cuando creo un nuevo producto?
hice otro form donde cargo productos a mi base de datos.
y en el fichero donde tengo las Imágenes C:\Imagenes\Productos guardarlas con el mismo código de mi producto...
Responder Con Cita
  #15  
Antiguo 29-05-2018
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Básicamente, debes pedir el fichero que contiene la imagen y luego copiarlo a la carpeta donde las almacenas, con el nombre que le corresponda (COD_PRODUCTO + '.JPG').
Pordrías poner un Botón y en el evento OnClick hacer algo asi:

Código Delphi [-]
var
o, d : TStream;
begin
  // Pregunto por fichero que contiene la imagen a asignar al articulo
  with TOpenDialog.Create(nil) do
  begin
    try
    // Extensiones para filtrar la busqueda
    Filter := _('Imagenes JPG|*.jpg;*.jpeg|Todos los archivos|*.*');
    // Por defecto que esté en la primera (JPG)
    FilterIndex := 1; 
    // Posicion inicial en Mis Documentos (Necesitas el procedimiento GetSpecialFolderPath)
    // InitialDir := GetSpecialFolderPath(CSIDL_PERSONAL, False);
    // Posicion inicial
    InitialDir := '';
    Title := _('Cargar imagen para producto');
    // Si se ejecuta correctamente (Termina con botón Aceptar)
    if (Execute) then
    begin
      // Creo dos Streams. Origen y Destino. Copio en destino lo que haya en origen.
      o := TFileStream.Create(FileName, fmOpenRead);
      try
        d := TFileStream.Create(RutaImagenesProductos + Tabla.FieldByName('PRODUCTO').AsString + '.JPG', fmCreate);
        try
          d.CopyFrom(m, m.Size);
        finally
          d.Free;
        end;
      finally
        o.Free;
      end;
    end;
    finally
      Free;
    end;
  end;
end;
Responder Con Cita
  #16  
Antiguo 29-05-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por DiegoPucho Ver Mensaje
...

Te aconsejo este estupendo libro, es libre y gratis, enfocado a delphi con bases de datos.
Responder Con Cita
  #17  
Antiguo 29-05-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Gracias Casimiro consejo tomado y descargando...
Responder Con Cita
  #18  
Antiguo 29-05-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Un millón de gracias duilioisola... Saludos...
Responder Con Cita
  #19  
Antiguo 01-06-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Question Una ultima pregunta duilioisola

Hola duilioisola, no entiendo esta parte...
Código Delphi [-]
try
        d := TFileStream.Create(RutaImagenesProductos + Tabla.FieldByName('PRODUCTO').AsString + '.JPG', fmCreate);
        try
          d.CopyFrom(m, m.Size);
        finally
          d.Free;
        end;
en
Código Delphi [-]
d.CopyFrom(m, m.Size);
m, m.size??? No entiendo que es m?
No logro que me lo guarde!!!
Código Delphi [-]
// Posicion inicial en Mis Documentos (Necesitas el procedimiento GetSpecialFolderPath)
    // InitialDir := GetSpecialFolderPath(CSIDL_PERSONAL, False);
    // Posicion inicial
Que es GetSpecialFolderPath???
Responder Con Cita
  #20  
Antiguo 06-06-2018
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Esto debería ser "o". El TStream Origen
Código Delphi [-]
// Destino.CopiarDesde(Origen, Origen.Tamaño)
// Copia en Destino el contenido de Origen, tantos bytes como tenga.
d.CopyFrom(o, o.Size);
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
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
Imagen a base de datos nicolass_83 C++ Builder 1 30-05-2016 22:30:42
Imagen a Base de datos KingOfDragons MySQL 2 27-10-2012 01:36:36
Vincular TcxScheduler a base de datos cincosoft OOP 0 13-03-2011 16:25:26
vincular una dbgrid con una imagen chalo C++ Builder 1 23-01-2011 00:59:12
Imagen en base de datos. kwan Conexión con bases de datos 20 29-07-2003 23:48:21


La franja horaria es GMT +2. Ahora son las 22:19:36.


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