FoxPro/Visual FoxPro - obtener datodos segun la ruta

   
Vista:

obtener datodos segun la ruta

Publicado por Sebastian (244 intervenciones) el 16/05/2013 17:32:57
Hola programadores, tengo una duda tengo este codigo pero funciona cuando tengo las tablas en mi carpeta de mi proyecto, pero no puedo hacerlo funcionar cuando lo guardo en diferentes carpetas por ejemplo, necesito ayuda graciasssss.....

use c:\informacion\historicos\2010\tabla1
do while !eof()
use c:\informacion\historicos\2011\tabla1
set order to cod_cli
seek c:\informacion\historicos\2010\tabla1.cod_cliente
if found()
use c:\informacion\historicos\2010\tabla1
repla condicion with'OK'
Endif
use c:\informacion\historicos\2010\tabla1
skip
enddo
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

obtener datodos segun la ruta

Publicado por Fidel (558 intervenciones) el 16/05/2013 20:29:07
No tienes una buena idea sobre abrir tablas y sobre la búsqueda en campos indexados.
Además no uses el comando SEEK que es obsoleto. Usa la función Seek() ó, mejor, Indexseek()
Para buscar en toda una tabla, usa el comando SCAN ENDSCAN. Es más rápido que Do While !eof() y además, selecciona automáticamente la tabla que propones en el inicio de SCAN.
Para abrir dos tablas que tienen el mismo nombre, debes obligatoriamente asignar un ALIAS, por lo menos a una de ellas. En este caso resulta más práctico asignar ALIAS a ambas tablas.
Cuando pones el comando USE, Visual Fox asigna como Alias el nombre de la tabla, salvo que indiques cuál será el ALIAS.

No sé exactamente qué necesitas hacer, pero podría ser algo como lo que sigue. Ambas búsquedas se inician en la tabla de 2010. Pero puede ser a la inversa reemplazando los nombres de alias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
* SE SUPONE QUE LAS TABLAS TIENEN UN INDICE COD_CLI
* INDEX ON COD_CLIENTE TAG COD_CLI
* ----------------------------------------
cDir="C:\INFORMACION\HISTORICOS"
USE (ADDBS(CDIR)+"2010\TABLA1") IN 0 ALIAS TBL2010
USE (ADDBS(CDIR)+"2011\TABLA1") IN 0 ALIAS TBL2011
 
* Alternativa 1)
* Busco si un cod_cliente de la tabla Tbl2010 está en la
* Tabla Tbl2011 y si lo encuentra, pongo "Ok" en el campo
* "CONDICION" de la tabla Tbl2010.
 
SELECT TBL2010
SCAN
	IF INDEXSEEK(COD_CLIENTE,.F.,"TBL2011","COD_CLI")
		REPLACE CONDICION WITH "OK"
	ENDIF
ENDSCAN
*********************************************************
* Alternativa 2)
* Busco si un cod_cliente de la tabla Tbl2010 está en la
* Tabla Tbl2011 y si lo encuentra, pongo "Ok" en el campo
* "CONDICION" de la tabla Tbl2011.
 
SELECT TBL2010
SCAN
	IF INDEXSEEK(TBL2010.COD_CLIENTE,.F.,"TBL2011","COD_CLI")
		select TBL2011
		INDEXSEEK(tbl2010.Cod_cliente,.T.,"TBL2011","COD_CLI")
		REPLACE CONDICION WITH "OK"
	ENDIF
ENDSCAN
 
SELECT TBL2011
USE
SELECT TBL2010
USE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

obtener datodos segun la ruta

Publicado por Sebastian (244 intervenciones) el 16/05/2013 22:03:26
Muchas Gracias....
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