Hasta donde puedo ver,
Query2 tiene una sentencia
Update con parámetros. Esta sentencia no devuelve campos, es por eso que
Query2.FieldByName('Existencias') te marca ese error...
Esto no lo he probado, pero intenta hacerlo así:
Código Delphi
[-]
Query2.Close;
Query2.Clear;
Query2.SQL.Add('UPDATE Productos SET Existencias = Existencias - :Cantidad WHERE UPPER(Clave) LIKE UPPER(:Clave)');
Query2.ParamByName('Cantidad').AsFloat := Table3.FieldByName('Cantidad').AsFloat;
Query2.ParamByName('Clave').AsString := Table3.FieldByName('Clave').AsString;
Query2.ExecQuery;
Saludos...