Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2010
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Lightbulb Usar Barras de Progreso con consultas

Hola a todos:


La situación que hace dias se me presenta es la siguiente:

Organizando parte del código de mi aplicación decidi desglozar gran parte del mismo utilizando consultas como se ve a continuación

Código Delphi [-]
procedure TDMLiquidacion.liquidaTarifa(pCodigoSuscriptor : Integer);
var QAuxiliarLiquidacion_temporal : TQuery;
    codigoServicio_local, codigoRango_local : Integer;
begin
  QAuxiliarLiquidacion_temporal:= CrearConsulta;
  codigoServicio_local:= 0;
  with QAuxiliarLiquidacion_temporal do
    begin
      Close;
      Sql.Text:= ' Select * From Tarifas '+
                 ' where CodigoRango not in (1,2,3,5,6) '+
                 ' And CodigoPeriodoPago =' + IntToStr(getCampo('DatosLiquidacion','CodigoPeriodo')) +
                 ' And CodigoAno =' + IntToStr(getCampo('DatosLiquidacion','CodigoAno')) +
                 ' And CodigoTipoServicio = ' + IntToStr(ObtenerTipoServicio(pCodigoSuscriptor)) +
                 ' And Estrato = ' + IntToStr(obtenerEstrato(pCodigoSuscriptor));
      open;
      while not eof do
        begin
          codigoServicio_local:= FieldByName('CodigoServicio').AsInteger;
          codigoRango_local:= FieldByName('CodigoRango').AsInteger;
          if verificaEstadoSuscriptor(pCodigoSuscriptor) then
            if verificaServicioSuscriptor(pCodigoSuscriptor,codigoServicio_local) then
              AdicionarRegistro('HistoricoPagos',' NumeroFactura,CodigoSuscriptor,Codigoservicio,CodigoReferencia,' +
                                                 ' CodigoPeriodo,CodigoAno,CodigoPeriodoOrigen,CodigoAnoOrigen, Clase, Valor,' +
                                                 ' ValorSubsidio, FechaDePago, Estado, Movimiento, ControlFacturacion, '+
                                                 ' NumeroFacturaOrigen, CodigoAnoPeriodo,CodigoRango',
                                                 IntToStr(0) + ',' + IntToStr(pCodigoSuscriptor) + ','+ IntToStr(codigoServicio_local) + ',' + IntToStr(codigoServicio_local) +
                                                 ',' + IntToStr(GetCampo('DatosLiquidacion','CodigoPeriodo')) + ',' + IntToStr(GetCampo('DatosLiquidacion','CodigoAno')) +
                                                 ',' + IntToStr(GetCampo('DatosLiquidacion','CodigoPeriodo')) + ',' + IntToStr(GetCampo('DatosLiquidacion','CodigoAno')) +
                                                 ',0,' + FloatToStr(obtenerTarifa(codigoServicio_local,codigoRango_local,pCodigoSuscriptor)) +
                                                 ',' + FloatToStr(obtenerTarifa(codigoServicio_local,codigoRango_local,pCodigoSuscriptor) * obtenerFactorSubsidio(codigoServicio_local,codigoRango_local,pCodigoSuscriptor)) +
                                                 ',NULL, FALSE,' + chr(39) + 'C' + chr(39) + ',NULL, 0,' + obtenerCodigoAnoPeriodo + ' ,' + IntToStr(codigoRango_local));
          next;
        end
    End;
  FreeAndNil(QAuxiliarLiquidacion_temporal);
end;

en orden de ideas varios de los procedimientos se presentan de la forma anterior formando algo así:

Código Delphi [-]
procedure TDMLiquidacion.LiquidarPeriodo(pZona : String; PProgresoGeneral, PProgresoParcial : TGauge );
Var QlistadoSuscriptoresLiquidacion_temporal: TQuery;
    CodigoSuscriptor_local, pCodigoSuscriptor : Integer;
    PBProgreso_local, PBParcial_local : TGauge;
begin
  PBProgreso_local:= TGauge.Create(PProgresoGeneral);
  PBParcial_local:= TGauge.Create(PProgresoParcial);

  QlistadoSuscriptoresLiquidacion_temporal:= CrearConsulta;
  if not verificarCritica then
    with QlistadoSuscriptoresLiquidacion_temporal do
      begin
        Close;
        sql.Text:= ' Select codigoSuscriptor ' +
                   ' From Suscriptores  '+
                   ' Where Zona in (' + pZona + ')';
        open;
        PBProgreso_local.MaxValue:= RecordCount;
        QlistadoSuscriptoresLiquidacion_temporal.DisableControls;
        While not eof do
          begin
            pCodigoSuscriptor:= FieldByName('CodigoSuscriptor').AsInteger;
            borraLiquidacion(pCodigoSuscriptor);
            divideLecturas(pCodigoSuscriptor);
            liquidaInteresDiario(pCodigoSuscriptor);
            // liquida Interes de mora mensual
            // liquida reconexiones
            liquidaTarifa(pCodigoSuscriptor);
            liquidaTarifa(pCodigoSuscriptor,1,GetCampo('Lecturas','Basico','CodigoSuscriptor = ' + IntToStr(pCodigoSuscriptor)));
            liquidaTarifa(pCodigoSuscriptor,2,GetCampo('Lecturas','Complementario','CodigoSuscriptor = ' + IntToStr(pCodigoSuscriptor)));
            liquidaTarifa(pCodigoSuscriptor,3,GetCampo('Lecturas','Suntuario','CodigoSuscriptor = ' + IntToStr(pCodigoSuscriptor)));
            liquidaTarifa(pCodigoSuscriptor,5,GetCampo('Lecturas','Multado','CodigoSuscriptor = ' + IntToStr(pCodigoSuscriptor)));
            liquidaPorcentaje(pCodigoSuscriptor);
            liquidaNovedadesPeriodo(pCodigoSuscriptor);
            liquidaNovedadesFinanciadas(pCodigoSuscriptor);
            liquidaSaldoPrepago(pCodigoSuscriptor);
            asignaNumeroFactura(pCodigoSuscriptor);
            asignaNumeroFacturaOrigen(pCodigoSuscriptor);
            PBProgreso_local.Progress:= PBProgreso_local.Progress + 1;
            next;
          end;
        actulizaEstadoLiquidacion(true);
      end;

  FreeAndNil(QlistadoSuscriptoresLiquidacion_temporal);
end;

bien la cosa que surge es la siguiente como se puede ver se toma una consulta y partiendo de los registro devueltos por la misma se realiza la ejecución de los procesos mensionados; como se dijo al inicio los procesos se guardan en un módulo de datos y los procesos son llamados en una forma con dos barras de Progresos para el caso TGauge, pero no se ve el progreso reflejado en las barras.

en lo que he encontrado relacionado con el tema he encontrado que el BDE (que el lo que utilizo para el trabajo de datos) no tiene sesiones multihilo y que tiende a dar ejecución a lo demás una vez termina.


agradezco de antemano cualquier colaboracion y ayuda



gertorresm
colombia
Responder Con Cita
  #2  
Antiguo 05-04-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Intenta poner Application.ProcessMessages al final de cada vueta del ciclo.

// Saludos
Responder Con Cita
  #3  
Antiguo 06-04-2010
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Cool No funciono

Gracías Roman por tu respuesta, pero lamentamente las barras siguen marcan ningun avance, lo único que se ve es que da una especie de liberación al formulario, es decir lo puedo mover libremente por la ventana y el boton (en el que le hacia click) queda como se no estuviese presionado, cosa que no podia hacer antes, pero de las barras nada.

¿Que podrá esta faltando ?


Gracias de Antemano



gertorresm
Colombia
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
usar codigo de barras lokodelphi Varios 2 23-04-2006 04:46:38
Mostrar progreso de descarga de IndyFTP con barra de progreso devicer Internet 2 05-12-2005 14:59:32
Barras de progreso que no se actualizan Mauro® Gráficos 2 22-04-2005 21:21:38
necesito usar codigos de barras squenda Varios 6 23-08-2004 17:49:58
Barras de progreso en QuickReport rvinfo Impresión 1 29-10-2003 14:04:08


La franja horaria es GMT +2. Ahora son las 17:34:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi