Error al utilizar SKIP

434 views
Skip to first unread message

euronv

unread,
Nov 28, 2017, 2:05:35 PM11/28/17
to Comunidad de Visual Foxpro en Español
Hola amigos, estoy utilizando SKIP y SKIP -1 para navegar entre registros dentro de un cursor, en ambos casos valido EOF() y BOF() según el caso antes de ejecutar el SKIP, con SKIP -1 al llegar al primer registro el avance se detiene como lo tengo previsto, pero en el caso del SKIP al llegar al ultimo registro continua avanzando al pulsar nuevamente clic y arroja el error de "registro fuera de intervalo", el código en cuestión es este:

IF NOT EOF()
SKIP
"otras lineas de código"
ELSE
SKIP -1
ENDIF


Agradezco la asistencia que puedan brindarme

Saludos

 
 

Jorge Bernardo Morales Hernandez

unread,
Nov 28, 2017, 2:22:29 PM11/28/17
to Comunidad de Visual Foxpro en Español
Yo te sugeriría:

Skip

If Eof()
   Go Bottom
EndIf

De esa manera aunque le de la veces que quiera al botón y sea el último registro, le enviará al final del cursor / tabla.

Euro Nava

unread,
Nov 28, 2017, 2:48:04 PM11/28/17
to publice...@googlegroups.com

Hola Jorge aplique tu sugerencia pero el error persiste L

 

 

Saludos

 

 

 

El presente correo y sus anexos son exclusivamente para el uso de los destinatarios indicados en el encabezado del mismo, pueden contener información confidencial y/o privilegiada. Si usted por error ha recibido la presente correspondencia agradezco hacer omisión de esta y hacerme del conocimiento por esta misma vía    

 

Bendito el Hombre que ha sido llamado por Cristo para ser el soldado del ejército en cuya mano empuñe como arma la palabra de Dios

Ariel Octavio D'Alfeo

unread,
Nov 28, 2017, 2:52:36 PM11/28/17
to publice...@googlegroups.com
Yo tenia el mismo problema. Lo solucione asi:

IF RECCOUNT()>0
SKIP 1
IF EOF()
SKIP-1
ENDIF
ENDIF

--

Ariel Octavio D'Alfeo
Córdoba, Argentina

Patricio Muñoz

unread,
Nov 28, 2017, 2:53:32 PM11/28/17
to publice...@googlegroups.com
Hace mucho que no utilizo skip. Por que no mejor utilizas SCAN... ENDSCAN para recorrer tu cursor?

Bendiciones
--
Saludos

Patricio Muñoz
Pro&Tech
Analista en Sistemas

Antonio Meza

unread,
Nov 28, 2017, 2:55:48 PM11/28/17
to Comunidad de Visual Foxpro en Español
Asegúrate que estas sobre la tabla

Select tablaNombre
IF EOF
()
   
Go Bottom
ELSE
    SKIP
ENDIF

saludos
Antonio Meza

El martes, 28 de noviembre de 2017, 13:05:35 (UTC-6), euronv escribió:

Euro Nava

unread,
Nov 28, 2017, 3:03:22 PM11/28/17
to publice...@googlegroups.com

Gracias Ariel tu sugerencia fue acertada!!!

 

Gracias amigos por responder a mi SOS ja ja ja

 

 

Saludos

 

 

 

El presente correo y sus anexos son exclusivamente para el uso de los destinatarios indicados en el encabezado del mismo, pueden contener información confidencial y/o privilegiada. Si usted por error ha recibido la presente correspondencia agradezco hacer omisión de esta y hacerme del conocimiento por esta misma vía    

 

Bendito el Hombre que ha sido llamado por Cristo para ser el soldado del ejército en cuya mano empuñe como arma la palabra de Dios

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Ariel Octavio D'Alfeo
Enviado el: martes, 28 de noviembre de 2017 03:52 p.m.
Para: publice...@googlegroups.com
Asunto: Re: [vfp] Re: Error al utilizar SKIP

 

Yo tenia el mismo problema. Lo solucione asi:

 

IF RECCOUNT()>0

            SKIP 1

            IF EOF()

                        SKIP-1

            ENDIF

ENDIF

 

El 28 de noviembre de 2017, 16:48, Euro Nava <eur...@gmail.com> escribió:

Hola Jorge aplique tu sugerencia pero el error persiste L

 

 

Saludos

 

 

 

El presente correo y sus anexos son exclusivamente para el uso de los destinatarios indicados en el encabezado del mismo, pueden contener información confidencial y/o privilegiada. Si usted por error ha recibido la presente correspondencia agradezco hacer omisión de esta y hacerme del conocimiento por esta misma vía    

 

Bendito el Hombre que ha sido llamado por Cristo para ser el soldado del ejército en cuya mano empuñe como arma la palabra de Dios

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Jorge Bernardo Morales Hernandez
Enviado el: martes, 28 de noviembre de 2017 03:22 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Error al utilizar SKIP

 

Yo te sugeriría:

 

Skip

 

If Eof()

   Go Bottom

EndIf


De esa manera aunque le de la veces que quiera al botón y sea el último registro, le enviará al final del cursor / tabla.

El martes, 28 de noviembre de 2017, 13:05:35 (UTC-6), euronv escribió:

Hola amigos, estoy utilizando SKIP y SKIP -1 para navegar entre registros dentro de un cursor, en ambos casos valido EOF() y BOF() según el caso antes de ejecutar el SKIP, con SKIP -1 al llegar al primer registro el avance se detiene como lo tengo previsto, pero en el caso del SKIP al llegar al ultimo registro continua avanzando al pulsar nuevamente clic y arroja el error de "registro fuera de intervalo", el código en cuestión es este:

 

IF NOT EOF()

SKIP

"otras lineas de código"

ELSE

SKIP -1

ENDIF

 

 

Agradezco la asistencia que puedan brindarme

 

Saludos

 

 

 

Ariel Octavio D'Alfeo

unread,
Nov 28, 2017, 3:06:11 PM11/28/17
to publice...@googlegroups.com
De nada! 
Saludos

Alexander Marquéz

unread,
Nov 28, 2017, 5:33:53 PM11/28/17
to publice...@googlegroups.com
Como dice Jorge es la forma de controlar ese error o si quieres lo envías al primer registro con go top preguntándole al usuario y en el botón que mueve hacia atrás haces lo contrario pero con bof()  y go bottom 

Enviado desde mi iPhone

Alexander Marquéz

unread,
Nov 28, 2017, 5:35:58 PM11/28/17
to publice...@googlegroups.com
Debes tener un problema de índice re indexa la tabla con reindex 


Enviado desde mi iPhone

El 28 nov. 2017, a la(s) 3:48 p. m., Euro Nava <eur...@gmail.com> escribió:

Carlos Miguel FARIAS

unread,
Nov 29, 2017, 5:44:30 AM11/29/17
to Grupo Fox
En un cursor o tabla, sabes cual es tu ubicación con RECNO(), y la cantidad de registros la sabes con RECCOUNT().
Entonces, cuando RECNO() = 1, desabilitas el boton hacia atras, y cuando RECNO() == RECCOUNT(), desabilitas el boton hacia adelante.
De esa manera, no tienes que controlar si te pasas del principio o del final de la tabla.
Saludos: Miguel, La Pampa (RA)
Larga Vida y Prosperidad
Que la Fuerza los acompañe.

Fidel Charny

unread,
Nov 29, 2017, 6:54:33 AM11/29/17
to Comunidad de Visual Foxpro en Español
Miguel:
Si la tabla está indexada, el número de registro puede ser distinto del orden en que aparecen los registros.
Si hay registros marcados para borrar y SET DELETED ON, Reccount() dará un valor mayor a la cantidad de registros accesibles, porque devuelve la totalidad de registros de la tabla.

Volviendo al tema, si el puntero está en un registro, preguntar si es EOF() resulta inútil.
En cambio, al seleccionar una tabla o cursor, la consulta tiene sentido.

Uso esta función (por comodidad) para saber el número de registros no borrados (y evitar que se mueva el puntero de registro)
PROCEDURE get_Reccount
*!*    ---------------------------------
*!*    Cuenta los registros no borrados
*!*    de una tabla o cursor
*!*    ---------------------------------
LPARAMETERS tcCursor
TRY
    LOCAL lnRecords
,loex as Exception
    LOCAL ARRAY laCnt
(1)
    lnRecords
= 0
    SELECT CNT
(*) ;
        FROM
(m.tcCursor) ;
        WHERE
!DELETED() ;
        INTO ARRAY laCnt
    IF _tally
> 0
        lnRecords
= laCnt[1,1]
    ENDIF
CATCH TO loex
    loex
.UserValue = PROGRAM()
   
ShowError(loex)
FINALLY

ENDTRY
RETURN m
.lnRecords
ENDPROC

mapner

unread,
Nov 29, 2017, 12:49:52 PM11/29/17
to Comunidad de Visual Foxpro en Español
Si se está usando Buffering a nivel de Tabla, cada registro adicionado tiene Recno en negativo, -1, -2, -3, ...
Tenerlo en cuenta por si se usa Recno() como señal de posicionamiento.

El miércoles, 29 de noviembre de 2017, 7:44:30 (UTC-3), Miguel escribió:

Martín E. Lezama

unread,
Dec 6, 2017, 3:47:25 PM12/6/17
to Comunidad de Visual Foxpro en Español
Exactamente. Yo utilizo forms en los cuales mi tabla está indexada, por la cual el último registro y el primero no coinciden con el físico.

En esos casos yo tengo en mis forms dos propiedades, a las que acudo.

ThisForm.primerregistro = 0
ThisForm.ultimoregistro = 0

Cuando entro a la tabla y posiciono el índice, hago un GO TOP y le pongo el número de registro en el que está parado a la propiedad ThisForm.primerregistro. Y con GO BOTTOM hago lo mismo con la propiedad ThisForm.ultimoregistro.

Una vez que tengo esas dos propiedades con los valores correctos, hago que los botones desplazadores se habiliten o inhabiliten de acuerdo a dónde estoy parado en la tabla.

Un ejemplo, supongamos que yo tengo 32 registros en la tabla de clientes. Lo tengo ordenado por razón social. Supongamos que el primer registro en ese orden es el 15 y el último registro, el 12.

ThisForm.primerregistro = 15
ThisForm.ultimoregistro = 12

Yo tengo cuatro botones de desplazamiento, que son:

Primer registro
Registro anterior
Registro siguiente
Último registro

Entonces, cuando mi tabla esté parada en el registro 15, los botones Primer registro y Registro anterior van a estar deshabilitados. Y cuando mi tabla esté parada en el registro 12, Registro siguiente y Último registro se deshabilitan. En cambio, cuando estoy en cualquier otro registro, todos los botones están prendidos.

Obviamente, en tablas que tengo más de un índice y en donde permito al usuario cambiar el índice activo, una vez que lo cambian vuelvo a averiguar cuál es el primer registro de ese índice, cuál el último y regenero las dos propiedades.
Reply all
Reply to author
Forward
0 new messages