Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-04-2016
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 227
Poder: 14
darkamerico Va por buen camino
Exclamation No Logro grabar una imagen desde Clipboard hacia la BD

Saludos amigos, estoy intentando grabar una imagen que tengo en un componente cxImage hacia la BD, la imagen la obtengo desde la camara web, luego la pongo en Clipboard en BMP:

Este codigo funciona bien:

Código Delphi [-]
procedure TForm9.BitBtn1Click(Sender: TObject);
var
  MyFormat : Word;
  AData : THandle;
  APalette : HPALETTE;
begin
  img.Picture.SaveToClipboardFormat(MyFormat, AData, APalette);
  ClipBoard.SetAsHandle(MyFormat,AData);
  form3.imgEnClipBoard:=true;
  form9.Hide;
end;

Luego en el otro formulario en OnActivate intento que la imagen se muestre y luego se grabe en su tabla correspondiente:

Código Delphi [-]
procedure TForm3.FormActivate(Sender: TObject);
var
  nomArch:string;
  BlobFieldValue:TMemoryStream;
begin
  if imgEnClipBoard=false then
   tab.PageIndex:=0
  else
  begin
    BlobFieldValue:=TMemoryStream.Create;
    imgFoto2.Picture.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap), 0);
    imgFoto2.Picture.Bitmap.SaveToStream(BlobFieldValue);

      dm.q_UPDFoto.Close;
      dm.q_UPDFoto.Params[0].LoadFromStream(BlobFieldValue,ftblob);
      dm.q_UPDFoto.ParamByName('IDPerx').AsInteger:=StrToInt(txtID.Text);
      dm.q_UPDFoto.ExecSQL;

  end;

El error aparece en la linea: dm.q_UPDFoto.ExecSQL;

El error que aparece es el siguiente:



El SQL del componente q_UPDFoto es el siguiente:

Código SQL [-]
UPDATE personal set foto=:FOTOX
where id_personal=:IDPerx

Agradezco cualquier alcance que me puedan brindar.
Responder Con Cita
  #2  
Antiguo 09-04-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No repitas temas.
He borrado el otro.
Responder Con Cita
  #3  
Antiguo 10-04-2016
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 227
Poder: 14
darkamerico Va por buen camino
Saludos

Alguna idea?, en realidad no logro descifrar el error.
Responder Con Cita
  #4  
Antiguo 10-04-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Si queres guardar una imagen de manera "normal" es decir sacando todo lo del portapapeles, funciona?
Cual es el tipo del campo en la BD?
Responder Con Cita
  #5  
Antiguo 11-04-2016
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 227
Poder: 14
darkamerico Va por buen camino
Saludos

El tipo del campo es Longblob amigo.
Responder Con Cita
  #6  
Antiguo 11-04-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola darkamerico.

No mencionaste con que componentes estas trabajando y hay diferencias al operar entre ellos.

Pero para darte un ejemplo orientativo, de este modo copiarias un TBitmap desde el clipboard a un TBlobField usando los componentes IBX:
Código Delphi [-]
...
var
  Stream: TStream;
  bmp   : TBitmap;
begin
  if Clipboard.HasFormat(CF_BITMAP) then
  begin
    Stream := TMemoryStream.Create;
    try
      bmp := TBitmap.Create;
      try
        bmp.Assign(Clipboard);
        bmp.SaveToStream(Stream);
      finally
        bmp.Free;
      end;
      Stream.Seek(0, soBeginning);
      IBQuery1.SQL.Clear;
      IBQuery1.SQL.Text := 'UPDATE LA_TABLA SET CPO_IMAGE = :IMAGE WHERE ID = :ID';
      IBQuery1.ParamByName('ID').AsInteger := un_ID;
      IBQuery1.ParamByName('IMAGE').LoadFromStream(Stream, ftBlob);
      IBQuery1.ExecSQL;
    finally
      Stream.Free;
    end;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 12-04-2016
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 227
Poder: 14
darkamerico Va por buen camino
Thumbs up Muchas Gracias

GRACIAS ECFISA!!!

Es una real satisfacción comunicarles que al fin salio el código, aquí lo comparto con ustedes:

Código Delphi [-]
procedure TForm3.Inserta(Sender: TObject);
var
  nomArch: string;
  BlobFieldValue: TMemoryStream;
  bmp, BMPdestino:TBitmap;
  Rect: TRect;
begin
  if imgEnClipBoard = false then
    tab.PageIndex := 0
  else
  begin
    if Clipboard.HasFormat(CF_BITMAP) then
    begin
      BlobFieldValue := TMemoryStream.Create;
      try
        bmp:=TBitmap.Create;
        BMPdestino:=TBitmap.Create;
        try
          bmp.Assign(Clipboard);
          BMPdestino.Width := 100;
          BMPdestino.Height := 100;
          Rect:= TRect.Create(0, 0, 100, 100);
          BMPdestino.Canvas.StretchDraw(Rect, bmp);
          BMPdestino.SaveToStream(BlobFieldValue);
        finally
          bmp.Free;
          BMPdestino.Free;
        end;
        BlobFieldValue.Seek(0, soBeginning);
        dm.q_UPDFoto.Close;
        dm.q_UPDFoto.Params[0].LoadFromStream(BlobFieldValue, ftblob);
        dm.q_UPDFoto.ParamByName('IDPerx').AsInteger := StrToInt(txtID.Text);
        dm.q_UPDFoto.ExecSQL;
      finally
        BlobFieldValue.Free;
      end;
    end;
  end;
end;
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
Pegar desde Clipboard a InputBox Cristhor1982 Varios 2 21-03-2013 21:50:10
Pegar imagen desde el Portapapeles (Clipboard) gluglu Gráficos 8 20-10-2010 15:09:55
Como cargo una imagen desde Mysql hacia aplicacion Delphi7.0? gozi Conexión con bases de datos 1 06-02-2006 19:41:11
Texto-Clipboard-imagen OmarPerez Varios 1 25-11-2003 05:02:03


La franja horaria es GMT +2. Ahora son las 02:55:34.


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