do while vs scan

30/09/2003 - 00:54 por Noe diego Velazquez Hernandez | Informe spam
Hola foro !!

tengo una duda dentro del scan puedo utilizar un (select 1) no pierde la
secuencia del primer archivo ?

close data
select 1
use tabla1
select 2
use tabla2

scan
num=numemp
select 1
locate for num = keynumemp
if found()
ordenes
endif
endscan








PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway

Preguntas similare

Leer las respuestas

#1 Ana María Bisbé York
30/09/2003 - 02:01 | Informe spam
Hola Noe:

No es buena idea abrir las tablas indicando el número del area de trabajo,
eso más que soluciones te traerá problemas.
Abrir la tabla en el area 0 (cero) te garantiza que el Foxpro la va a
colocar en el area disponible, no necesitas controlarlo por el número, luego
al referirte a tu tabla simplemente select tabla1 sin preocuparte por el
area de trabajo.

Sobre el código que muestras, la duda es ¿por qué tabla te quieres mover?

Cuando llamas al SCAN estás posicionado en la tabla2, guardas el valor de un
campo en una variable y luego te posicionas en la tabla1 para a su vez hacer
un locate; pero luego regresas al ciclo del SCAN ... pero !!!! no te
has posicionado de nuevo en la tabla2, esto está mal, con SCAN, DO WHILE,
FOR o lo que quieras.

Pero te digo más, como te quedas parado en la tabla1, si el resultado de la
búsqueda es negativo pues la tabla1 va a fin de fichero y sale del ciclo del
scan aunque la tabla2 tenga miles de registros que comprobar.

Debes plantearte si necesitan utilizar toda esta estructura de código o lo
que deseas lo solucionas con un SELECT - SQL, vistas o tablas relacionadas.

Saludos y suerte !!

Ana


"Noe diego Velazquez Hernandez" escribió en el
mensaje news:
Mostrar la cita
#2 Alex Feldstein [MVP]
30/09/2003 - 12:20 | Informe spam
On Tue, 30 Sep 2003 02:01:16 +0200, "Ana María Bisbé York"
wrote:

Mostrar la cita
Ana:

Estas en lo cierto en los comentarios que haces en tu respuesta en
este hilo, excepto en este último. SCAN vuelve al area original (tabla
2 en el ejemplo) y continúa.


Alex Feldstein
________________________________
Microsoft Visual FoxPro MVP
Please respond in the public groups so that everybody
can benefit from the exchange.
Favor de responder en los foros públicos asi todos se benefician.
(Address scrambled with ROT-13)
How To make good Newsgroups posts
http://dts-l.org/goodpost.htm
RFC 1855: Netiquette Guidelines
http://www.dtcc.edu/cs/rfc1855.html
How To Ask Questions The Smart Way
http://www.catb.org/~esr/faqs/smart-questions.html
Cómo hacer preguntas de manera inteligente:
http://www.sindominio.net/ayuda/pre...entes.html
#3 Ana María Bisbé York
30/09/2003 - 13:06 | Informe spam
Alex:

La verdad es que estaba convencida de lo contrario. Para mí la única
diferencia entre estos comandos estaba en el skip automático que realiza el
scan.
He mirado hasta en las ayudas y en VFP8 se dice explícitamente; pero en el
VFP6 no y fue el que siempre utilicé.

Menos mal que siempre uno de ustedes está atento y "ataja" los despistes. Es
increible lo que se aprende desde aquí. Muy agradecida como siempre,

Ana

"Alex Feldstein [MVP]" escribió en el mensaje
news:
Mostrar la cita
la
Mostrar la cita
del
Mostrar la cita
#4 Carlos Yohn Zubiria
30/09/2003 - 13:16 | Informe spam
¿Por qué ha desaparecido la respuesta de ANA a este mensaje?

Saludos,
A.G.P.


"Alex Feldstein [MVP]" escribió en el mensaje
news:
Mostrar la cita
la
Mostrar la cita
del
Mostrar la cita
#5 Ana María Bisbé York
30/09/2003 - 13:17 | Informe spam
Hola Noe:

Gracias a la aclaración de Alex, quizás entonces entienda el asunto de tu
pregunta.

En efecto, el do while sí que te hubiera dado error si quedas en eof() en la
tabla 1, si la búsqueda no es fructífera. Como en el do while has de hacer
skip pues sería:

do while ... && puede ser !eof() o lo que quieras
num=numemp
select 1
locate for num = keynumemp
if found()
ordenes
endif
select tabla 1
skip
enddo

Por lo que tu código corre bien, debido a diferencias que existen entre DO
WHILE y SCAN en cuanto a la forma automática en que el VFP se posiciona en
la tabla original si utilizas SCAN. (diferencias que yo desconocía, gracias
Noe, salí ganando con tu duda... así es la vida)

Saludos y suerte,

Ana

"Noe diego Velazquez Hernandez" escribió en el
mensaje news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida