Te recomiendo el uso de parámetros, de manera que tu base de datos y el motor que usas se encarguen de definir el formato en que trasladarán las fechas. (válido también para números y cadenas de texto).
Código Delphi
[-]
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('UPDATE compras');
IBSQL1.SQL.Add('SET fecha= :fecha');
IBSQL1.SQL.Add('where empresa = :empresa');
IBSQL1.SQL.Add('and noc=:noc');
ibSQL1.ParamByName('fecha').AsDateTime := now;
ibSQL1.ParamByName('empresa').AsString := label1.caption;
ibSQL1.ParamByName('noc').AsString := noc;
if not IBDatabase1.InternalTransaction.InTransaction then
IBDatabase1.InternalTransaction.StartTransaction;
try
IBSQL1.Prepare;
IBSQL1.ExecQuery;
IBDatabase1.InternalTransaction.Commit;
except
IBDatabase1.InternalTransaction.Rollback;
raise;
end;
Como ves, he cambiado también el bloque try/except. La verdad, no le hallé sentido como estaba antes.
Hasta luego.