FoxPro/Visual FoxPro - Recorrer dos tablas

   
Vista:

Recorrer dos tablas

Publicado por Jova (1 intervención) el 29/01/2009 15:44:11
Necesito una ayuda....
Tengo dos tablas y necesito scaniar una buscando unos campos de la otra.... el problema es q cuando reviza la primera tabla y termina, no se como decirle que vuelva a la misma tabla solo q en el siguiente registro y vuelva a recorrer la tabla principal

SELECT mayorgen
GO top
DO WHILE !EOF()
SELECT gastosmayor
IF gastosmayor.campo1 = mayorgen.campo1 AND gastosmayor.destino = mayorgen.destino AND gastosmayor.vendorid = mayorgen.ormstrid
SET STEP ON
endif
SELECT mayorgen
skip
enddo

necesito que recorra la tabla buscando los campos y si no lo encuentra que salte al siguiente registro y vuelva a buscar hasta que termine de recorrer la tabla gastos mayor... hasta ahora solo busca el primer registros en la tabla mayorgen
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

RE:Recorrer dos tablas

Publicado por Mario (199 intervenciones) el 29/01/2009 15:49:33
Select Tabla1
RegistroActual=Recno()
Select Tabla2
..... instrucciones

Select Tabla1
Go Registro
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 Mauricio

Recorrer dos tablas

Publicado por Mauricio (1367 intervenciones) el 29/01/2009 19:58:39
Prueba esto:
CLOSE TABLE ALL
USE mayorgen IN 0
USE gastosmayor IN 0
*
SELECT mayorgen
GO top
DO WHILE !EOF()
SCAN
SELECT gastosmayor
GO TOP
IF gastosmayor.campo1 = mayorgen.campo1 AND gastosmayor.destino = mayorgen.destino AND gastosmayor.vendorid = mayorgen.ormstrid
* SET STEP ON
EXIT
ENDIF
LOOP
ENDSCAN
SELECT mayorgen
SKIP
ENDDO
SUERTE!!!!!!!!!!!!!!!!!!!!!!!!
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

RE:Recorrer dos tablas

Publicado por Luighi (105 intervenciones) el 30/01/2009 05:15:49
observemos este codigo:

sele tabla1 && tabla principal
scan && comenzar el recorrido en la tabla principal
sele tabla2 && tabla en donde buscaremos cada registro de la tabla principal
scan for campo=tabla1.campo && comenzar el recorrido y evaluar
suspend && esto detendra el programa
endscan && fin del recorrido de la tabla2
endscan && retorna a la tabla1 y avanza al siguiente registro

siete lineas de programa
el siete es un numero de la buena suerte

adecuamos esto a lo que se necesita:

sele mayorgen
scan
sele gastosmayor
scan for campo1=mayorgen.campo1 and destino=mayorgen.destino and vendorid=mayorgen.ormstrid
suspend
endscan
endscan

suspend detiene la ejecucion del programa dirigiendonos a la ventana de comandos para las observaciones que se desee hacer sobre el registro encontrado
para reanudar el programa
escribir desde la misma ventana de comandos el comando resume

suspend logra su cometido
pero si se desea se puede reemplazar por set step on

mas facil imposible
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