FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Pocket PC esto es correcto??
Posts: 233
Joined: Wed Aug 09, 2006 03:07 PM

esto es correcto??

Posted: Wed Nov 29, 2006 04: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.

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

esto es correcto??

Posted: Wed Nov 29, 2006 05:46 PM

Elías,

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

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 233
Joined: Wed Aug 09, 2006 03:07 PM

esto es correcto??

Posted: Wed Nov 29, 2006 06: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.

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

esto es correcto??

Posted: Thu Nov 30, 2006 07: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
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM

esto es correcto??

Posted: Thu Nov 30, 2006 08: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/

Continue the discussion