Ver Mensaje Individual
  #61  
Antiguo 06-01-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Reputación: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Buenísima la idea, lo he probado y funciona perfectamente .... ... ... peeerooooo... ... ... no me sirve
No puedo usar un procedimiento almacenado porque en pantalla el usuario selecciona una serie de opciones de filtro y el select sql se crea dinámicamente
No se me ocurre cómo pasar ese select a un procedimiento, salvo crear el procedure dinámicamente, lanzarlo y borrarlo después. Hacer un "create or alter procedure"... ... ... puede ser

Código Delphi [-]
procedure TFapuntes.CargarDiario(iParametro: integer);
var
  cSql : string;
begin
{ TODO 3 -oampc -cControlar : Hace falta controlar los tipos de usuarios, por si tiene permisos para verlos o no. }
  DMapuntes.QRdiario.Close;
  cSql := 'select * from tbapuntes where codigoempresa= :codigoempresa and ejercicio= :ejercicio ';
  case iParametro of
    0,1,2,3,4: cSql := cSql + ' and codigoestadoapunte=2 ';  // 1.definitivo  2.borrador
    5: cSql := cSql + ' and codigoestadoapunte=1 ';  // 1.definitivo  2.borrador
  end;
  case iParametro of
    0,2,3: cSql := cSql+' and fechaasiento  between :fechadesde and :fechahasta ';
    1: cSql := cSql+' and fechacreacion= :fechacreacion and horacreacion>= :horacreacion ';
  end;
  case iParametro of
    4: cSql := cSql + ' and (codigousuariocreacion='+IntToStr(fmain._iCodigoUsuario_)+
                       ' or codigousuariomodificacion='+IntToStr(fmain._iCodigoUsuario_)+')';
  end;
  cSql := cSql + ' order by codigoempresa, ejercicio, numeroasiento, lineaasiento';
  //
  DMapuntes.QRdiario.SelectSQL.Text := cSql;
  //
  DMapuntes.QRdiario.Params[0].AsInteger := Fmain._iCodigoEmpresa_;
  DMapuntes.QRdiario.Params[1].AsInteger := Fmain._iCodigoEjercicio_;
  //
  case iParametro of
    0:begin  // cd_config
        DMapuntes.QRdiario.Params[2].AsDate := edDfecD.Date;
        DMapuntes.QRdiario.Params[3].AsDate := edDfecH.Date;
      end;
    1:begin  // cd_sesion
        DMapuntes.QRdiario.Params[2].AsDate := Trunc(fmain._dFechaInicioSesion_);
        DMapuntes.QRdiario.Params[3].AsTime := Frac (fmain._dFechaInicioSesion_);
      end;
    2:begin  // cd_hoy
        DMapuntes.QRdiario.Params[2].AsDate := getFechaServidor;
        DMapuntes.QRdiario.Params[3].AsDate := getFechaServidor;
      end;
    3:begin  // cd_ftrabajo
        DMapuntes.QRdiario.Params[2].AsDate := fmain._dFechaTrabajo_;
        DMapuntes.QRdiario.Params[3].AsDate := fmain._dFechaTrabajo_;
      end;
  end;
  //
  DMapuntes.QRdiario.Open;
  //
  grDiario.SetFocus;
end;
Responder Con Cita