Ver Mensaje Individual
  #4  
Antiguo 09-04-2014
keine1lust keine1lust is offline
Miembro
NULL
 
Registrado: sep 2012
Posts: 17
Reputación: 0
keine1lust Va por buen camino
pasos para guardar imagenes

1.
declarar el uso de unidad DB y componente Zeos
Código Delphi [-]
unit freg_per;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
  StdCtrls, MaskEdit,ExtCtrls, ExtDlgs,conexionesbd, ZDataset,DB;

es importante declarar la unidad DB ya que el contiene las constantes para el manejo de varibles tipo blob ejemplo: ftBlob, ptInput si no la declaran el compilador no reconocerá dichas variables

2. este codigo es el que te da la guia de zeoslib:

Código Delphi [-]
Var TheStream : TMemoryStream;
Begin
  TheStream := TMemoryStream.Create;
  Try
    Image1.Picture.Bitmap.Savetostream(TheStream);
    With qryBlobInsert do 
    Begin
      Sql.Text := 'INSERT INTO EVENTS (EventNo,EVENT_PHOTO) VALUES (100,:ThePicture)';
      Params.Clear;
      Params.CreateParam(ftBlob,'ThePicture', ptInput);
      ParamByName('ThePicture').LoadfromStream(TheStream,ftBlob);
      ExecSQL;
    End;
  Finally
    TheStream.Free;
  End;
End;

en mi caso lo adapte a lo que necesitaba:

Código Delphi [-]
 TheStream := TMemoryStream.Create;
  Try
    Image1.Picture.Jpeg.Savetostream(TheStream);

    conexiodb.Conectar_Mysql; //llamo a la base de datos para conectarme
    sqlejecuta:=TZQuery.Create(nil);//creo un nuevo objeto

    With sqlejecuta do
    Begin
      Connection:= Conexion;
      Sql.Text:='INSERT INTO personal(cedula,nom_comp,direccion,telf_movil,'+
                'tlf_local,cargo,foto,departamento_iddepart,'+
                'parametro_idparametro,'+
                'tip_empleado_idtip_emp,id_user) '+
                'VALUES('+mcedula+','+ mnom_comp+','+mdireccion+
                ','+mtelf_movil+','+ mtlf_local+','+mcargo+',:foto'+
                ','+middepart+','+midparametro+','+midtip_emp+
                ','+QuotedStr(tid_user)+')';
      Params.Clear;
      Params.CreateParam(ftBlob,'foto', ptInput);
      ParamByName('foto').LoadfromStream(TheStream,ftBlob);
      ExecSQL;
    End;
  Finally
    TheStream.Free;
  End;

   MessageDlg('Registro almacenado con exito',mtInformation,[mbOK], 0);

   end     
Conexion.Disconnect;

de igual forma como hice el insert lo adapto para hacer update

hice una pequeña combinación ya que por el momento tengo que investigar mas sobre el uso de Params

si alguien me puede sugerir como optimizar el código o que sea mas presentable para otros programadores se los agradecería
Responder Con Cita