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