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.