Ver Mensaje Individual
  #6  
Antiguo 09-05-2019
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Reputación: 21
mRoman Va por buen camino
Bueno Saúl, mira no manejo SQL Server, soy mas de Firebird, pero considero puede aplicar para tu DBMS ya q jugaré un poco con la lógica a reserva de que alguien mas de una mejor opción.

Agregaría unos CheckBox en cada Combo, los cuales pudieran estar a un costado del Combo (TcxLookupComboBox) que me servirán para usarlos en un IF dentro de tu siguiente código:

Código Delphi [-]
 
  dnData.Buttons.Post.Click;
  dmMain2.muInsertarRequisicion.ParamByName('NUM_REQUISICION').AsInteger := 
  dmMain2.tblRequisicionHdr.FieldByName('NUM_REQUISICION').AsInteger;
  dmMain2.muInsertarRequisicion.ParamByName('POR_COBRAR').AsBoolean := ckPorCobrar.Checked;
  dmMain2.muInsertarRequisicion.ParamByName('COD_PROVEEDOR').AsString := cblProveedores.EditValue;
  if (cBoxOrdenTrab.Checked) and not(cBoxProyecto.Checked) then
  begin
        dmMain2.muInsertarRequisicion.ParamByName('NUM_OT_TRABAJO').AsInteger := cblOrdenTrabajo.EditValue;
        dmMain2.muInsertarRequisicion.ParamByName('ID_PROYECTO').AsInteger :=null; 
  end Else
  begin
       if not(cBoxOrdenTrab.Checked) and (cBoxProyecto.Checked) then
       begin
           dmMain2.muInsertarRequisicion.ParamByName('NUM_OT_TRABAJO').AsInteger :=null;
           dmMain2.muInsertarRequisicion.ParamByName('ID_PROYECTO').AsInteger:=cblProyectos.EditValue;
       end Else
       begin
            if (cBoxOrdenTrab.Checked) and (cBoxProyecto.Checked) then
           begin
                dmMain2.muInsertarRequisicion.ParamByName('NUM_OT_TRABAJO').AsInteger := cblOrdenTrabajo.EditValue;
                dmMain2.muInsertarRequisicion.ParamByName('ID_PROYECTO').AsInteger := cblProyectos.EditValue;
           end Else
           begin
                Application.MessageBox('Error, debes seleccionar una Orden de Trabajo o Proyecto','Aviso', mb_ok+mb_IconError);
           end; 
       end;
  end;
  dmMain2.muInsertarRequisicion.Open;
  dmMain2.muInsertarRequisicion.Close;

  btnSave.Enabled := False;
  btnNew.Enabled := True;

  gbDatos.Enabled := False;
  dnData.Enabled := False;
  gvData.Enabled := False;
  DisplayReport(dmMain2.tblRequisicionHdr.FieldByName('NUM_REQUISICION').AsString);
  dmMain2.tblRequisicionHdr.Filtered := False;


A este código le veo un problema...deberás encontrar la forma de que NO SE EJECUTE este código:
Código Delphi [-]
  dmMain2.muInsertarRequisicion.Open;
  dmMain2.muInsertarRequisicion.Close;

  btnSave.Enabled := False;
  btnNew.Enabled := True;

  gbDatos.Enabled := False;
  dnData.Enabled := False;
  gvData.Enabled := False;
  DisplayReport(dmMain2.tblRequisicionHdr.FieldByName('NUM_REQUISICION').AsString);
  dmMain2.tblRequisicionHdr.Filtered := False;

Cuando entre y se ejecute esta linea:
Código Delphi [-]
                Application.MessageBox('Error, debes seleccionar una Orden de Trabajo o Proyecto','Aviso', mb_ok+mb_IconError);

Ya que posterior a esta, se abrira/cerrara el DataSet y se ejecutara todo lo demás.
Código Delphi [-]
dmMain2.muInsertarRequisicion.Open;
dmMain2.muInsertarRequisicion.Close;

Bueno espero te sirva...lo hice sin tener Delphi a la mano. Ya nos dirás como te fue.

Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 09-05-2019 a las 21:12:59.
Responder Con Cita