esto es correcto??

esto es correcto??

Postby Elias Torres » Wed Nov 29, 2006 4:31 pm

Hola a todos...

Vamos a ver.. Tengo dos tablas:

SELECT 0
USE (CURDIR()+"\temporal.dbf") new
temporal->( OrdSetFocus( "nomart+codart" ) )
INDEX ON codart+nomart TO temporal
Aliastemporal := Alias()

SELECT 0
USE (CURDIR()+"\precios.dbf") new
precios->(OrdSetFocus( "articulo+numero")) &&articulo es el codigo
INDEX ON articulo+numero TO precios
aliasPrecios:=ALIAS()

Entonces realizo una búsqueda sobre la tabla precios según un parámetro. Esta busqueda la realizo asi:

IF precios->(DbSeek(ALLTRIM(cod),.t.))
p:=precios->pvp
else
p:=0
endif
temporal->pvp:=p

Mi pregunta es bien sencilla:

precios->(DbSeek(ALLTRIM(cod),.t.)) ¿¿me posiciona en el registro de la tabla precios para el cual se cumpla la condicion de que sea igual a cod??. Porque supuestamente la tabla está indexada por el codigo (que es lo que representa la variable cod).. Pero me está devolviendo otro valor que no es el que le corresponde. Es como si los indices no estuvieran trabajando bien....


Hay que poner algun set?? He probado a poner el set softseek on (por probar) pero no hay ningún cambio...


Espero alguien me pueda aclarar esta duda..

Saludos y gracias.

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Wed Nov 29, 2006 5:46 pm

Elías,

Prueba a hacer los INDEX ON ... antes de llamar a OrdSetFocus()
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Elias Torres » Wed Nov 29, 2006 6:10 pm

Hola Antonio...

Si pongo los index antes me da error.. ¿Como puedo hacer una búsqueda combinada?¿La puedo hacer con un seek?

Saludos.

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Thu Nov 30, 2006 7:27 am

Elías,

Del ejemplo samples\TestBrwS.prg:

USE ( CurDir() + "\Customer" ) VIA "DBFCDX"
INDEX ON Customer->Last TO ( CurDir() + "\LAST" )
Customer->( OrdSetFocus( "LAST" ) )
Customer->( DbGoTop() )
...
Customer->( DbSeek( cSearch, .t. ) )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Biel EA6DD » Thu Nov 30, 2006 8:17 am

Veo que haces AllTrim En el seek, puede que ese sea el problema porque cuando indexas lo haces por el campo entero.

Cod=' 1'
En el indice tienes espacio+espacio+1
pero si buscas alltrim Cod, estas buscando 1 en la primera posicion.

No se si me explico.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca


Return to FiveWin para Pocket PC

Who is online

Users browsing this forum: No registered users and 32 guests