Ver Mensaje Individual
  #7  
Antiguo 10-11-2025
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Reputación: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Tienes razón @olbeup. El campo debe devolverse como entero mediante .AsInteger. He adaptado a mano un código similar que tengo para obtener descripciones de cosas dado un código.

Lo de capturar la excepción depende del contexto. En este caso en particular yo prefiero dejar que la excepción llegue a evitar que se ejecute lo que venga dentrás.
Es más fácil que hacer if resultado <> -1 then ... para cada petición.

Código Delphi [-]
function crear_cabecera_factura(...) : integer;
var
  ...
begin
  Result := 0;
  try
    id := DameId('ID_CABECERA');
    FormaPago := DameFormaPagoDefecto(...);
    Cliente := DameClienteDefecto(...);
    Almacen := DameAlmacenDefecto(...);
    ...

    xCabecera.Insert;
    ... Asigno parámetros
    xCabecera.Post;

    // Si llega hasta aquí todo ha salido bien
    Result := id;
  except
    on e:Exception do
      ShowMessage('Fallo al crear cabecera' + sLineBreak + e.Message);
  end;
end
Responder Con Cita