Ver Mensaje Individual
  #1  
Antiguo 06-01-2013
Bobybalazo Bobybalazo is offline
Registrado
 
Registrado: oct 2007
Posts: 2
Reputación: 0
Bobybalazo Va por buen camino
access violation al actualizar una imagen en un campo blob firebird

Hola todos, tengo un problema que ya me trae loco.
Estoy haciendo una aplicación que cada cierto tiempo me actualice una imagen que guardo dentro de una tabla en firebird 2.5, la tabla se llama pcs, el campo que debo actualizar se llama img.

En el código que muestro abajo, tal como está se ejecuta perfecto desde un botón, pero si ejecuto desde un timer, que es donde debe ir, entonce me da el siguiente error "Project xxxxx.exe raised exception class EAccessViolation with message 'Access violation at address 00380040. read of address 00380040'

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var  
      mem : TMemoryStream;
begin 
          upq.SQL.Clear;
          upq.SQL.Add('update pcs set img = 1 where pc= '''+pcnombre+'''');
          mem:=TMemoryStream.create;
          mem.LoadFromFile('captura.jpg');
          upq.Params.Clear;
          upq.Params.CreateParam(ftBlob,'p1',ptInput);
          upq.Params.ParamByName('p1').SetBlobData(mem.Memory,mem.Size);
          upq.ExecSQL;
end;
En el timer es asi:

Código Delphi [-]
procedure TForm1.Timer2Timer(Sender: TObject);
var 
  mem : TMemoryStream;
begin
  if cap=1 then
  begin
    upq.SQL.Clear;
          
    upq.SQL.Add('update pcs set img = 1 where pc= '''+pcnombre+'''');
    mem:=TMemoryStream.create;
    mem.LoadFromFile('captura.jpg');
    upq.Params.Clear;
    upq.Params.CreateParam(ftBlob,'p1',ptInput);
    upq.Params.ParamByName('p1').SetBlobData(mem.Memory,mem.Size);
    upq.ExecSQL;        
  end;      
end;

Nota: estoy usando dbexpress por lo que upq es un sqlquery. upq es exclusivo para esa actualización, osea, no lo uso en ningún otro lugar, ni cambio sus parámetros.

cualquier ayuda o aclaracion les estare imensamente agradecido.

Última edición por Casimiro Notevi fecha: 06-01-2013 a las 17:52:46.
Responder Con Cita