Ver Mensaje Individual
  #3  
Antiguo 07-09-2005
JavierO JavierO is offline
Miembro
 
Registrado: jul 2005
Ubicación: Pachuca, Hidalgo, México
Posts: 38
Reputación: 0
JavierO Va por buen camino
yo lo que entiendo es, que los campos calculados solo se asignan en el evento OnCalc, pero yo no lo puedo hacer alli por que para poder asignarle el valor se tienen que cumplir una serie de validaciones, y ese campo solo lo necesito para que me guarde un valor para posterirmente compararlo, no debo ni mistrarlo al usuario solo me va a servir para ver si un registro ya existe no lo vuelva a crear.


Código Delphi [-]
 
procedure Tsilfpr0002.PPR0002_INCLUYE_DORE_GENERAL();
begin
   Q_Cursor.Close;
   Q_Cursor.SQL.Clear;
   Q_Cursor.SQL.Add(' SELECT ampp_prov_numero, ampp_mtpr_clave, SUM(ampp_cantidad) AS ampp_cant, SUM(ampp_centimetros_cubicos) AS ampp_cc                            ');
   Q_Cursor.SQL.Add(' FROM   sil_ajustes_mp_pedido                                                                                                                   ');
   Q_Cursor.SQL.Add(' WHERE  ampp_plan_clave                                                      = :gw_plan_clave_prod                                              ');
   Q_Cursor.SQL.Add(' AND    ampp_ctmn_fecha                                                      = (SELECT MAX(ctmn_fecha)                                          ');
   Q_Cursor.SQL.Add('                                                                                FROM   sil_contaminacion                                        ');
   Q_Cursor.SQL.Add('                                                                                WHERE  ctmn_plan_clave   = ampp_plan_clave                      ');
   Q_Cursor.SQL.Add('                                                                                AND    FORMAT(ctmn_fecha,''dd/mm/yyyy'') = :lw_fecha_operacion) ');
   Q_Cursor.SQL.Add(' AND    IIF(ISNULL(ampp_pedi_serie),:sil_pedi_pedi_serie,ampp_pedi_serie)    = :sil_pedi_pedi_serie                                             ');
   Q_Cursor.SQL.Add(' AND    IIF(ISNULL(ampp_pedi_numero),:sil_pedi_pedi_numero,ampp_pedi_numero) = :sil_pedi_pedi_numero                                            ');
   Q_Cursor.SQL.Add(' GROUP BY ampp_prov_numero, ampp_mtpr_clave                                                                                                     ');
   Q_Cursor.ParamByName('lw_fecha_operacion').Value    := lw_fecha_operacion;
   Q_Cursor.ParamByName('sil_pedi_pedi_serie').Value   := T_PEDI.FieldValues['pedi_serie'];
   Q_Cursor.ParamByName('sil_pedi_pedi_numero').Value  := T_PEDI.FieldValues['pedi_numero'];
   Q_Cursor.ParamByName('gw_plan_clave_prod').Value    := gw_plan_clave;
   Q_Cursor.Prepare;
   Q_Cursor.Open;
   while not Q_Cursor.Eof do
   begin
...
 
          if not(VarIsNull(lw_prov_numero)) or (lw_prov_numero <> '') then
         begin
            T_DORE_SD.First;
            while not(T_DORE_SD.Eof) and
                  ((T_DORE_SD.FieldByName('dore_origen_dosificacion').Value <> 'S') or
                   (T_DORE_SD.FieldByName('lw_origen_servicio').Value       <> 'P') or
                   (T_DORE_SD.FieldByName('dore_mtpr_clave').Value          <> Q_Cursor.FieldByName('plsm_mtpr_clave').Value) or
                   (T_DORE_SD.FieldByName('dore_prov_numero').Value         <> lw_prov_numero)) do
            begin
               T_DORE_SD.Next;
            end;
            if (T_DORE_SD.FieldByName('dore_origen_dosificacion').Value = 'S') and
               (T_DORE_SD.FieldByName('lw_origen_servicio').Value       = 'P') and
               (T_DORE_SD.FieldByName('dore_mtpr_clave').Value          = Q_Cursor.FieldByName('plsm_mtpr_clave').Value) and
               (T_DORE_SD.FieldByName('dore_prov_numero').Value         = lw_prov_numero) then
            begin
               if (T_DORE_SD.FieldByName('dore_cant_sobre_dosificacion').Value <> lw_cantidad) then
               begin
                  T_DORE_SD.Edit;
                  T_DORE_SD.FieldByName('dore_cant_sobre_dosificacio').Value := lw_cantidad;
               end;
            end
            else
            begin
               if not(T_DORE_SD.FieldByName('dore_mtpr_clave').IsNull) then
               begin
                  T_DORE_SD.Append; //CREATE_RECORD;
               end;
               T_DORE_SD.Append;
               T_DORE_SD.FieldByName('dore_origen_dosificacion').Value     := 'S';
               T_DORE_SD.FieldByName('dore_mtpr_clave').Value              := Q_Cursor.FieldValues['plsm_mtpr_clave'];
               T_DORE_SD.FieldByName('dore_prov_numero').Value             := lw_prov_numero;
               T_DORE_SD.FieldByName('dore_cant_sobre_dosificacion').Value := lw_cantidad;
               T_DORE_SD.FieldByName('dore_tipo_dosificacion').Value       := Q_Cursor.FieldValues['plsm_tipo_dosificacion'];
               T_DORE_SD.FieldByName('lw_origen_servicio').Value           := 'P';
               // Asignacion de valores basicos
               T_DORE_SD.FieldByName('dore_mtpr_clave').Value              := Q_Cursor.FieldValues['plsm_mtpr_clave'];
               T_DORE_SD.FieldByName('dore_numero').Value                  := T_DORE_SD.RecordCount + 1;
               T_DORE_SD.FieldByName('dore_usuario_creo').Value            := gw_usuario;
               T_DORE_SD.FieldByName('dore_fecha_creo').Value              := now;
            end;
         end;
      end;

    ...
 
      Q_Cursor.Next;
   end;
   Q_Cursor.Close;
   lwct_lw_incluye_dore_general := 'N';
end;
Responder Con Cita