Cita:
Empezado por Al González
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;
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;
if EstadoInsert=True then
begin
RejillaPrendasEmpenadasAltaCont.Enabled:=False;
NavegaPrendasEmpenadas.Enabled:=False;
BtnInsertarPrendaAltaContrato.Enabled:=True;
end; if not CTDPrend_Emp.IsEmpty then BtnAddCont.Enabled:=True;
end;
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
if AccesoDatos.Transaccion.Intransaccion=True then AccesoDatos.Transaccion.Commit;
AccesoDatos.BasedeDatos.Connected:=False;
AccesoDatos.BasedeDatos.Connected:=True;
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;
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.