esto es correcto??

Post Reply
Elias Torres
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

esto es correcto??

Post by Elias Torres »

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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Elías,

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

Antonio Linares
www.fivetechsoft.com
Elias Torres
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Post by Elias Torres »

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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Post by Biel EA6DD »

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/
Post Reply