FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour funci贸n para saber claves de una entrada CDX
Posts: 145
Joined: Wed Nov 03, 2010 09:16 AM
funci贸n para saber claves de una entrada CDX
Posted: Tue Mar 15, 2016 09:52 AM

Hola.
Quisiera saber si existe alguna funci贸n que pregunte al 铆ndice CDX por una clave y devuelva un array de registros que apuntan a esa clave.
Un saludo

Paco Garc铆a
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: funci贸n para saber claves de una entrada CDX
Posted: Tue Mar 15, 2016 02:52 PM

SELECT (laTabla)
SET ORDER TO (elIndice)
aResult := Array()
dBSeek( cClaveABuscar )
WHILE !Eof() .AND. OrdKeyVal() == cClaveABuscar
aAdd( aResult, Recno() )
SKIP
ENDDO

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: funci贸n para saber claves de una entrada CDX
Posted: Tue Mar 15, 2016 02:57 PM

O bien, quiz谩s este ejemplo te sirva para lo que buscas

viewtopic.php?f=3t=32063#p187645

&

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 145
Joined: Wed Nov 03, 2010 09:16 AM
Re: funci贸n para saber claves de una entrada CDX
Posted: Wed Mar 16, 2016 09:27 AM
Hola, gracias por las respuestas.

As铆 es como lo hice:
Code (fw): Select all Collapse
*****************************************************************************************************************************************
   function aGetDetails( cCode, cFieldName )
*****************************************************************************************************************************************
local nPos := FieldPos( cFieldName )
local aRet := {}
local nRecno := Recno()
local nOrder := IndexOrd()
DbSetOrder(1)

if DbSeek( cCode, .t. )
   do while fieldGet( nPos ) == cCode
      aadd( aRet, Recno() )
      DbSkip()
   enddo
endif

DbGoto(nRecno)
DbSetOrder( 0 )

return aRet


En todo caso, creo que debe de poderse sacar la informaci贸n directamente del 铆ndice de alguna forma.
El 铆ndice debe de guardar un conjunto de valor -> nRecno para poder acceder a la informaci贸n.
Eso ser铆a genial sin tener que hacer b煤squedas.
Un saludo
Paco Garc铆a

Continue the discussion