Ver Mensaje Individual
  #155  
Antiguo 23-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Reputación: 23
José Luis Garcí Va camino a la fama
Debido a que voy a usar este método más de una vez he modificado el código del botón nuevo y creado una nueva función para este módulo

Código Delphi [-]
procedure TFXPAF.SBDetalleNuevoClick(Sender: TObject);
// ------------------------------------------------------------------------------
// *********************************************************[ Nuevo Detalle ]****
// ------------------------------------------------------------------------------
var I:Integer;
begin
  if CambiarEstado=0 then
  begin
    DsDetalle.DataSet.Insert;
    FExtPPAF.ListView1.Items.Clear;
    for I := 1 to FExtPPAF.StringGrid1.RowCount - 1 do   FExtPPAF.StringGrid1.Rows[i].Clear;
    FExtPPAF.Show;
    FExtPPAF.DBEdit1.SetFocus;
  end;
end;

Después del cambio es como queda este procedure y ahora la function

Código Delphi [-]
function TFXPAF.CambiarEstado: Integer;
//------------------------------------------------------------------------------
//*********************************************************[ CambiarEstado ]****
// Nos permite comprobar si los datos necesarios estan rellenos
//------------------------------------------------------------------------------
var varIPaso:Integer;
begin
  varIPaso:=0;  //Si sigue a 0 grabará y pasará al siguiente
  if DsPrincipal.DataSet.State in [DsInsert] then
  begin { Si esta en insercion, lo salvamos y editamos, para que acepte los cambios posteriores }
    if DM.IBDDocumentosIDDIRECCIONES.IsNull then
    begin
       if IBQDirecciones.IsEmpty then DM.IBDDocumentosIDDIRECCIONES.Value:=0
                                 else DM.IBDDocumentosIDDIRECCIONES.Value:=IBQDirecciones.FieldByName('IDDIRECCIONES').Value;
    end;
    DSPrincipal.DataSet.FieldByName('NUMERODOCUMENTO').Value:=DBNNumeroDocumento.Text;
    DSPrincipal.DataSet.FieldByName('SERIE').Value:=DBNSerie.Text;
    if DSPrincipal.DataSet.FieldByName('CODIGOCLIENTE').IsNull then varIPaso:=1;
    if DSPrincipal.DataSet.FieldByName('CODIGOAGENTE').IsNull then varIPaso:=2;
    if DSPrincipal.DataSet.FieldByName('FECHA').IsNull then varIPaso:=3;
    if DSPrincipal.DataSet.FieldByName('FORMADEPAGO').IsNull then varIPaso:=4;
    if DSPrincipal.DataSet.FieldByName('NUMEROPROTECCIONDATOS').IsNull then varIPaso:=5;
    if varIPaso=0 then
    begin
       DsPrincipal.DataSet.Post;
       DsPrincipal.DataSet.Edit;
    end else
    begin
       case varIPaso of
          1:begin
               ShowMessage('Falta por rellenar el código de cliente');
               DBNCodigoCliente.SetFocus;
            end;
          2:begin
               ShowMessage('Falta por rellenar el código de agente/comercial');
               DBNCodigoComercial.SetFocus;
            end;
          3:begin
               ShowMessage('Falta por rellenar la fecha');
               DBNFecha.SetFocus;
            end;
          4:begin
               ShowMessage('Falta por rellenar la forma de pago');
               DBNFormaPago.SetFocus;
            end;
          5:begin
               ShowMessage('Falta por rellenar el número de protección de datos');
               NDBSENumeroProteccionDatos.SetFocus;
            end;
       end;
      end;
  end;
  if varIPaso=0 then Result:=0 else Result:=1;  //0 = OK, 1 = problema
end;
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita