Ver Mensaje Individual
  #5  
Antiguo 30-03-2012
Tcmn Tcmn is offline
Miembro
 
Registrado: sep 2004
Posts: 153
Reputación: 22
Tcmn Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
Ahí podría estar la clave del problema. ¿Cómo funciona ese candado? ¿Sería mucho pedir que pusieras aquí algo de código fuente?
Pondre el codigo correspondiente a cada paso
1.- Alta del contrato:

Código Delphi [-]
procedure TFrmEmpenos.BtnAddContClick(Sender: TObject);
  begin
  LogicaNegocio.CTDContratos.EnableControls;
  LogicaNegocio.CTDContratos.Insert;
BtnGuardaCambiosAltaCont.Enabled:=True;
  BtnCancelarAltaCont.Enabled:=True;
  BtnQuitarPrendaDetalleContrato.Enabled:=False;
  BtnAddCont.Enabled:=False;
  DBEdit46.ReadOnly:=False;{numero de contrato}
  DBEdit46.SetFocus;
  end;

2.- Guardar el nuevo contrato:

Código Delphi [-]
procedure TFrmEmpenos.BtnGuardaCambiosAltaContClick(Sender: TObject);
  begin
  with LogicaNegocio do
    begin
  CadenaAbuscar:=CTDContratosNUM_CONT.AsString;
    CTDContratos.DisableControls;
    CTD1Cliente.DisableControls;
    if CTDContratos.State in dsEditModes then CTDContratos.Post;
    if CTD1Cliente.State in dsEditModes then CTD1Cliente.Post;
   
    CTD1Cliente.Refresh;
    CTDPrend_Emp.EnableControls;
    CTDContratos.Locate('num_cont',CadenaAbuscar,[loCaseInsensitive]);
    CTDContratos.EnableControls;
    CTD1Cliente.EnableControls;
    BtnGuardaCambiosAltaCont.Enabled:=False;
    BtnCancelarAltaCont.Enabled:=False;
    BtnDesHacerAltaContrato.Enabled:=True;
    DBEdit46.ReadOnly:=True; //Numero de contrato
  //Si la tabla esta en modo de insercion

  if EstadoInsert=True then
      begin
      RejillaPrendasEmpenadasAltaCont.Enabled:=False;
      NavegaPrendasEmpenadas.Enabled:=False;
      BtnInsertarPrendaAltaContrato.Enabled:=True;
      end;//if 
     if not CTDPrend_Emp.IsEmpty then BtnAddCont.Enabled:=True; 
    end;//with
  //Boton para eliminar el contrato por si finalmente no se concreta contrato nuevo con el cliente

BtnDesHacerAltaContrato.Enabled:=True;

  End;

3.- Una vez guardando el registro maestro, es decir, el contrato se procede a insertar las lineas de detalle del contrato por medio de un boton para agregar registros, con el siguiente codigo:

Código Delphi [-]
   procedure TFrmEmpenosCompraOro.BtnInsertarPrendaAltaContratoClick(
    Sender: TObject);
  begin
  {"Seguro" para que no se congele la aplicacion cuando ya tiene un rato sin
  trabajarse con ella}
  if AccesoDatos.Transaccion.Intransaccion=True then AccesoDatos.Transaccion.Commit;
  AccesoDatos.BasedeDatos.Connected:=False;
  AccesoDatos.BasedeDatos.Connected:=True;
  {Fin del "seguro"}
   
  LogicaNegocio.CTDPrend_Emp.Insert;
  BtnQuitarPrendaAltaContrato.Enabled:=False;
  BtnInsertarPrendaAltaContrato.Enabled:=False;
  BtnGuardarPrendaAltaContrato.Enabled:=True;
  BtnCancelarPrendaAltaContrato.Enabled:=True;
  NavegaPrendasEmpenadas.Enabled:=False;
  RejillaPrendasEmpenadasAltaCont.Enabled:=False;
  gbPrendaNuevaAltaContrato.Enabled:=True;//GroupBox que almacena Controles DataAware para insertar

EdtUnidadesNuevaPrendaAltaContrato.SetFocus;
   
  end;

Aunque se presiona el boton anterior, en ocasiones no se pueden insertar registros al detalle del contrato, por lo que se debe de presionar el boton Dehacer alta de contrato para que se elimine el registro que se genero en la cabecera, volver a insertar un nuevo registro en la cabecera y ahora si es posible añadir registros en el detalle, espero no haberte confundido mas.

Saludos Al.
__________________
Salu2

Última edición por Tcmn fecha: 30-03-2012 a las 18:26:58. Razón: Olvide poner etiqueta de codigo Delphi a una seccion del mensaje
Responder Con Cita