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.