Ver Mensaje Individual
  #1  
Antiguo 07-06-2018
LACV LACV is offline
Miembro
 
Registrado: oct 2015
Posts: 80
Reputación: 10
LACV Va por buen camino
Exclamation guardar imagen en campo longblob o blob

Buen día e estado buscando y no logro encontrar un hilo que me sirva para guiarme para guardar una imagen.

Les comento que estoy usando unidac para las conexión y consulta a la base de datos, logro visualizar y seleccionar la imagen que se va a guardar pero el problema viene cuando doy en el botón guardar pues no me guarda la imagen tengo este codigo


primero muestro y selecciona la imagen con este código
Código:
 if D_Img.Execute then
  begin
    // bloqueamos el boton de guardar para que la imagen termine de cargar.
    BtmGuardar.Enabled := false;
    // verificamos el tipo de extension del archivo
    ext := ExtractFileExt(D_Img.FileName);
    // verificamos que sea de as extensiones especificadas en el filtro
    if (ext = '.png') then
    begin
      // creamos la instancia de la clase
      png := TPngImage.Create;

      // cargamos y mostramos la imagen; con SaveToStream cargamos en temporal
      Img_base.Picture.LoadFromFile(D_Img.FileName);
      png.LoadFromFile(D_Img.FileName);

      // liberamos la memoria ram
      png.Free;
      // desbloqueamos el boton de guardar para que la imagen termine de cargar.
      BtmGuardar.Enabled := true;
    end
    else if (ext = '.jpeg') or (ext = '.jpg') then
    begin
      // creamos la instancia de la clase
      jpg := TJpegImage.Create;

      // cargamos y mostramos la image
      Img_base.Picture.LoadFromFile(D_Img.FileName);
      jpg.LoadFromFile(D_Img.FileName);

      // liberamos la memoria ram
      jpg.Free;
      // desbloqueamos el boton de guardar para que la imagen termine de cargar.
      BtmGuardar.Enabled := true;
    end
    else
    begin
      // Mostramos un error por si el usuario a seleccionado una extension equibocada
      png.Free;
      jpg.Free;
      MessageBox(Application.Handle,
        Pchar('A seleccionado una extensión que no es permitida (' + ext + ')'),
        Pchar('¡Error!'), MB_OK + MB_ICONWARNING);
    end;
  end;
y luego esta el código del botón guardar

Código:
{ Insertar }
      sql := 'INSERT INTO cm_producto(Imagen,Barcode,Descripcion,Inv_min,Caja,Und,F_crear_prod,Id_catg,Id_marca,Estado_Prod) VALUES(:Param0 ,'''
        + EdtCod_Barra.Text + ''',''' + EdtDescripcion.Text + ''',''' +
        EdtInve_Min.Text + ''',''' + EdtCaja.Text + ''',''' + EdtUnd.Text +
        ''',''' + EdtFecha.Text + ''',''' + DBEdt_Categoria_id.Text + ''',''' +
        DBEdt_Marca_id.Text + ''',''Activo'')';

// mostramos el fomulario y lo ubicamos
    Frm_Producto.Visible := true;
    Frm_Producto.Show;

    MS := TMemoryStream.Create;
    MS.LoadFromFile(D_Img.FileName);

    // ejecuta la consulta
    // DataModuleLACM.Consulta_Flotante(sql);
    DataModuleLACM.UniQuery1.sql.Add(sql);
    DataModuleLACM.UniQuery1.ParamByName('Param0')
      .LoadFromStream(MS, ftGraphic);
    DataModuleLACM.UniQuery1.Active;
    DataModuleLACM.UniQuery1.ExecSQL;

    MS.Free;
    DataModuleLACM.UniQuery1.Close;

esto es lo que tengo en el botón de guardar; gracias por la atención prestada
Responder Con Cita