• Viernes 8 de Noviembre de 2024, 18:52

Autor Tema:  Problemas con Rutina  (Leído 1841 veces)

mebernal

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Problemas con Rutina
« en: Miércoles 22 de Julio de 2009, 02:45 »
0
buenas tardes amigos ,quisiera me pudieran ayudar con el siguiente problema:

tengo una tabla catalogo(cuenta,car01,car02,ab01,ab02) donde car01=cargos enero, ab01=abonos enero

y tengo otras dos tablas maestro detalle con los movimientos de las cuentas.

cuando voy a grabar los movimientos de las cuentas corro una rutina para que me envie los cargos y abonos del mes que sean a la tabla catalogo a su respectiva cuenta.
pero al correr la rutina se queda haciendo un loop infinito,quisiera me ayudaran(ahh si quito el do while me graba bien el abono,pero el cargo ya no)

aqui va el codigo



PARAMETER partmayor
partmayor1 = ALLTRIM(partmayor)
SELECT CATApier2009
IF  .NOT. FLOCK()
WAIT WINDOW 'Otro usuario esta actualizando saldos.  Por favor espere ...'
RETRY
ELSE
MENSAJE = 'Mayorizando partida número '+partmayor1
WAIT WINDOW TIMEOUT 0.5 MENSAJE
*****esta es mi idea****
***hago un select de encabezado y detalle con fechas***
SELECT diarioenc.numero,diarioenc.fecha,diariodet.numero,diariodet.cuenta,;
diariodet.abono,diariodet.cargo FROM diarioenc,diariodet WHERE diarioenc.numero=diariodet.numero;
AND diarioenc.numero=partmayor INTO TABLE  encabedet



*SELECT diarioDET
*SET FILTER TO
*SET FILTER TO diariodet.numero=partmayor .AND.  .NOT. EMPTY(diariodet.cuenta)
*GOTO TOP
SELECT encabedet
GO top
DO WHILE .not. EOF()
   SELECT CATApier2009
   SET FILTER TO
   GOTO TOP
   SET ORDER TO codcta
   SEEK encabedet.cuenta
  IF FOUND()
DO case
CASE MONTH(encabedet.fecha)=1
replace catapier2009.car01 WITH catapier2009.car01+encabedet.cargo
replace catapier2009.ab01 WITH catapier2009.ab01+encabedet.abono
CASE MONTH(encabedet.fecha)=2
replace catapier2009.car02 WITH catapier2009.car02+encabedet.cargo
replace catapier2009.ab02 WITH catapier2009.ab02+encabedet.abono
CASE MONTH(encabedet.fecha)=3
replace catapier2009.car03 WITH catapier2009.car03+encabedet.cargo
replace catapier2009.ab03 WITH catapier2009.ab03+encabedet.abono
CASE MONTH(encabedet.fecha)=4
replace catapier2009.car04 WITH catapier2009.car04+encabedet.cargo
replace catapier2009.ab04 WITH catapier2009.ab04+encabedet.abono
CASE MONTH(encabedet.fecha)=5
replace catapier2009.car05 WITH catapier2009.car05+encabedet.cargo
replace catapier2009.ab05 WITH catapier2009.ab05+encabedet.abono
CASE MONTH(encabedet.fecha)=6
replace catapier2009.car06 WITH catapier2009.car06+encabedet.cargo
replace catapier2009.ab06 WITH catapier2009.ab06+encabedet.abono
CASE MONTH(encabedet.fecha)=7
replace catapier2009.car07 WITH catapier2009.car07+encabedet.cargo
replace catapier2009.ab07 WITH catapier2009.ab07+encabedet.abono
CASE MONTH(encabedet.fecha)=8
replace catapier2009.car08 WITH catapier2009.car081+encabedet.cargo
replace catapier2009.ab08 WITH catapier2009.ab08+encabedet.abono
CASE MONTH(encabedet.fecha)=9
replace catapier2009.car09 WITH catapier2009.car09+encabedet.cargo
replace catapier2009.ab09 WITH catapier2009.ab09+encabedet.abono
CASE MONTH(encabedet.fecha)=10
replace catapier2009.car10 WITH catapier2009.car10+encabedet.cargo
replace catapier2009.ab10 WITH catapier2009.ab10+encabedet.abono
CASE MONTH(encabedet.fecha)=11
replace catapier2009.car11 WITH catapier2009.car11+encabedet.cargo
replace catapier2009.ab11 WITH catapier2009.ab11+encabedet.abono
CASE MONTH(encabedet.fecha)=12
REPLACE CATApier2009.car12 WITH CATApier2009.car12+encabedet.cargo
REPLACE CATApier2009.ab12 WITH CATApier2009.ab12+encabedet.abono
endcase
endif
ENDdo
DELETE FILE encabedet.dbf
endif



UNLOCK ALL

ENDPROC
**

xodrf

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Problemas con Rutina
« Respuesta #1 en: Miércoles 22 de Julio de 2009, 04:06 »
0
bueno no entiendo muy bien lo que hace tu codigo, pero se que se estanca en un bucle infinito porque al terminar los reemplazos de tu tabla no volves a seleccionar  encabedet y avanzando un registro o no se cuantos registros es decir
....

SELECT CATApier2009
SET FILTER TO
SET ORDER TO codcta

SELECT encabedet
GO top
DO WHILE .not. EOF()

   SELECT CATApier2009
   *SET FILTER TO
   GOTO TOP
   *SET ORDER TO codcta
   IF SEEK( encabedet.cuenta )
   *IF FOUND()
      DO case
         CASE MONTH(encabedet.fecha)=1
            replace catapier2009.car01 WITH catapier2009.car01+encabedet.cargo
            replace catapier2009.ab01 WITH catapier2009.ab01+encabedet.abono
         CASE MONTH(encabedet.fecha)=2
            replace catapier2009.car02 WITH catapier2009.car02+encabedet.cargo
            replace catapier2009.ab02 WITH catapier2009.ab02+encabedet.abono
         CASE MONTH(encabedet.fecha)=3
            replace catapier2009.car03 WITH catapier2009.car03+encabedet.cargo
            replace catapier2009.ab03 WITH catapier2009.ab03+encabedet.abono
         CASE MONTH(encabedet.fecha)=4
            replace catapier2009.car04 WITH catapier2009.car04+encabedet.cargo
            replace catapier2009.ab04 WITH catapier2009.ab04+encabedet.abono
         CASE MONTH(encabedet.fecha)=5
            replace catapier2009.car05 WITH catapier2009.car05+encabedet.cargo
            replace catapier2009.ab05 WITH catapier2009.ab05+encabedet.abono
         CASE MONTH(encabedet.fecha)=6
            replace catapier2009.car06 WITH catapier2009.car06+encabedet.cargo
            replace catapier2009.ab06 WITH catapier2009.ab06+encabedet.abono
         CASE MONTH(encabedet.fecha)=7
            replace catapier2009.car07 WITH catapier2009.car07+encabedet.cargo
            replace catapier2009.ab07 WITH catapier2009.ab07+encabedet.abono
         CASE MONTH(encabedet.fecha)=8
            replace catapier2009.car08 WITH catapier2009.car081+encabedet.cargo
            replace catapier2009.ab08 WITH catapier2009.ab08+encabedet.abono
         CASE MONTH(encabedet.fecha)=9
            replace catapier2009.car09 WITH catapier2009.car09+encabedet.cargo
            replace catapier2009.ab09 WITH catapier2009.ab09+encabedet.abono
         CASE MONTH(encabedet.fecha)=10
            replace catapier2009.car10 WITH catapier2009.car10+encabedet.cargo
            replace catapier2009.ab10 WITH catapier2009.ab10+encabedet.abono
         CASE MONTH(encabedet.fecha)=11
            replace catapier2009.car11 WITH catapier2009.car11+encabedet.cargo
            replace catapier2009.ab11 WITH catapier2009.ab11+encabedet.abono
         CASE MONTH(encabedet.fecha)=12
            REPLACE CATApier2009.car12 WITH CATApier2009.car12+encabedet.cargo
            REPLACE CATApier2009.ab12 WITH CATApier2009.ab12+encabedet.abono
      endcase
   endif
   
        *///////////////////////////////////////////////////////////////////////
        * si aca no avanzas o retrocedes esta tabla se queda colgado, en un bucle infinito
        * se supone que debe acumular cada uno de los registros de tu tabla encabedet creo
   SELECT encabedet
   SKIP +1
        *///////////////////////////////////////////////////////////////////////
   
ENDdo
DELETE FILE encabedet.dbf
endif


UNLOCK ALL

mebernal

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Problemas con Rutina
« Respuesta #2 en: Miércoles 22 de Julio de 2009, 06:32 »
0
gracias xodrf se me habia escapado el skip,eso era todo el problema...muchas gracias