Page 1 of 1

duda sobre la localizacion de registros mediante indices...

Posted: Fri Oct 06, 2006 9:47 am
by Elias Torres
Hola a todos..

Tengo una duda sobre la busqueda por indices y es que al declararme la tabla y especificarle el indice intento realizar un seek sobre el indice y me da error...

La tabla la declaro de la siguiente forma:

USE ( CurDir() + "\articulos" ) VIA "DBFCDX" new
articulos->( OrdSetFocus( "cod_art" ) )
cAliasArticulos := Alias()

Luego intento hacer un seek("codigodelarticulo") y me da error. Puede ser simplemente que la declaracion del seek no sea asi. La verdad es que no he encontrado nada que me diga como es. Por eso recurro de nuevo aqui....

¿Alguien sabe algo?

Saludos y gracias.


Elías Torres.

Posted: Fri Oct 06, 2006 10:30 am
by Carles
Hola,

(cAliasArticulos)->( DbSeek( tucodigodelarticulo ) )

Adios

Posted: Fri Oct 06, 2006 11:06 am
by Elias Torres
Hola Carles,

Gracias por la información pero no me funciona. Se supone que el dbseek() lo que hace es posicionar el puntero en el registro de la tabla que se indique en base a la relación que se ponga y a partir de ahi se podría mostrar cualquier campo del registro, correcto?, pues no me va.....

No me da error pero no me muestra nada...


Seguiré averiguando el por que.....


Saludos y gracias.

Elías Torres.

Posted: Fri Oct 06, 2006 12:33 pm
by Carles
Elias,

- Tienes correctos los indices ?
- Hay registros q cumplen la condicion ?

Prueba de abrir la tabla y crear el indice de nuevo.

Code: Select all

USE ...
INDEX ON .. TO ...
...

(cAlias)->( DbSeek( codigodearticulo, .t. ) )

WHILE (cAlias)->codigo == codigodearticulo .AND. (cAlias)->( !Eof() )
 
   MsgInfo( (cAlias)->(FieldGet(1) ) )

   (cAlias)->( DbSkip() )

END
Siau.

Posted: Fri Oct 06, 2006 4:19 pm
by Elias Torres
Hola Carles,

Al final he solucionado el tema de los indices, gracias. Lo que me pasa es que me surgió otro problema... Cuando me posiciono con el indice en la tabla me muestra de ahi para abajo. Te pongo un ejemplo, supongamos que de la tabla solo quiero mostrar los dos primeros registros que son los que cumple las condicion de los indices, pero me muestra esos dos mas el resto....

Estoy utilizando un LISTBOX para mostrar la informacion, pero no se como decirle que si cambia el codigo del cliente no me siga mostrando ningun registro.

En definitiva, lo que pretendo es hacer lo mismo que hace set filter pero con indices, no se si me he explicado.....

(cAliasArticulos)->( DbSeek( (cAliasCliente)->codcli, .t. ) )

DEFINE dialog odlg resource "Cliente_articulos"

redefine LISTBOX oBrw ;
FIELDS articulos->cod_art,articulos->nom_art,STR(articulos->cant),STR(articulos->precio) ;
HEADERS "Código", "Descripción", "Cant", "Precio" ID 100 OF oDlg

ACTIVATE dialog odlg

Saludos y gracias....

Elías Torres.

Posted: Fri Oct 06, 2006 4:54 pm
by Antonio Linares
Elías,

Añade esto:

redefine LISTBOX oBrw ;
FIELDS articulos->cod_art,articulos->nom_art,STR(articulos->cant),STR(articulos->precio) ;
HEADERS "Código", "Descripción", "Cant", "Precio" ID 100 OF oDlg ;
SELECT articulos->cod_cli FOR (cAliasCliente)->codcli