FoxPro/Visual FoxPro - Error "Se ha encontrado el final del archivo"

 
Vista:
sin imagen de perfil

Error "Se ha encontrado el final del archivo"

Publicado por Gustavo (2 intervenciones) el 05/05/2017 21:56:23
Saludos Programadores:

Tengo el siguiente código que lo que hace es tomar los datos de una tabla y determinar registro por registro que tiene 5 numeros almacenados, cuales son los números que más se repiten, en los sorteos de la Lotto y guarda el contador en un arreglo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DIMENSION numMasSalir[36] as Integer = 0
SELECT 1
USE LOTTO INDEX LOTTOI1  ==> Ordenado por el campo SORTEO  (Caracter 4)
REINDEX
GO TOP
DO WHILE .T.
	IF .NOT. EOF()
	    @ 12,10 SAY SORTEO + " - " + DTOC(FECHA)
     	SUM 1 TO numMasSalir[VAL(NUM1)]
	    SUM 1 TO numMasSalir[VAL(NUM2)]
	    SUM 1 TO numMasSalir[VAL(NUM3)]
	    SUM 1 TO numMasSalir[VAL(NUM4)]
	    SUM 1 TO numMasSalir[VAL(NUM5)]
		SKIP
	ELSE
		EXIT
	ENDIF
ENDDO

La tabla LOTTO cuenta con 102 registros.

Cuando se ejecuta el programa en la línea del SKIP da el error "Se ha encontrado el final del archivo". Ya le he modificado un chorro de veces y sigue el error. Podrían ayudarme por favor?.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Error "Se ha encontrado el final del archivo"

Publicado por Gustavo (2 intervenciones) el 05/05/2017 22:13:16
Se me olvidaba, cuando se ejecuta la primera vez lee el primer registro pero el error da cuando pasa al segundo, no sé porque se va hasta el final de la tabla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Error "Se ha encontrado el final del archivo"

Publicado por Fidel José (657 intervenciones) el 05/05/2017 22:55:06
No se cual es tu idea, pero esto debería ser algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DIMENSION numMasSalir[36]
numMasSalir = 0
SELECT 1
USE LOTTO INDEX LOTTOI1 ==> Ordenado por el campo SORTEO (Caracter 4)
REINDEX
GO TOP
DO WHILE NOT EOF()
	@ 12,10 SAY SORTEO + " - " + DTOC(FECHA)
	numMasSalir[VAL(num1)] = numMasSalir[VAL(num1)] + 1
	numMasSalir[VAL(num2)] = numMasSalir[VAL(num2)] + 1
	numMasSalir[VAL(num3)] = numMasSalir[VAL(num3)] + 1
	numMasSalir[VAL(num4)] = numMasSalir[VAL(num4)] + 1
	numMasSalir[VAL(num5)] = numMasSalir[VAL(num5)] + 1
 
	SKIP
ENDDO

Observaciones:
No dices en qué estás programando. Parece un Fox para DOS, al menos por ese vetusto @ say.
El comando SUM es un comando de tabla. En el caso, ejecutar un SUM sin indicar el SCOPE, es idéntico a SUM ALL, con lo cual, el puntero de registro ser irá al fin del archivo y el comando SKIP dará error de EOF()
Me pregunto por qué los num1, num2 , etc son campos caracter en lugar de numeric. Si son numéricos quita esos VAL() de ahí.
Nada puede aseverarse sobre los subscript. El array está definido para 36 elementos, pero se desconocen a priori los valores de num1, num2, num3, etc.
En el bucle no hay ningún condicional. O sea, no hay ninguna previsión para el caso en que num1=0 o num2 = 0 o num3=0 , etc.

Como no capto el objetivo, no hago ningún comentario fuera de lo estríctamente técnico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo Ureña
Val: 114
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Error "Se ha encontrado el final del archivo"

Publicado por Eduardo Ureña (114 intervenciones) el 06/05/2017 22:50:58
Yo lo haría asi:

1
2
3
4
5
6
7
8
9
DO WHILE. NOT. EOF()
@ 12,10 SAY SORTEO + " - " + DTOC(FECHA)
SUM 1 TO numMasSalir[VAL(NUM1)]
SUM 1 TO numMasSalir[VAL(NUM2)]
SUM 1 TO numMasSalir[VAL(NUM3)]
SUM 1 TO numMasSalir[VAL(NUM4)]
SUM 1 TO numMasSalir[VAL(NUM5)]
SKIP
ENDDO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar