número de registro en uma tabela indice

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

número de registro en uma tabela indice

Mensagem por Adalberto »

Boa tarde amigos.
Por favor me ajude com o seguinte:

Exemplo:

Clientes.DBF
Zapata // (RECNO() = 1)
Garcia // (RECNO() = 2)
Baqueros // (RECNO() = 3)

INDEX ON Apellido ON Temp

na tabela TEMP ficará

Baqueros // (RECORD 1)
García // (RECORD 2)
Zapata // (RECORD 3)

Eu preciso saber que número de registro tem o sobrenome Baqueros na tabela de índice.

Baqueros // (RECORD 1),

O “RECORD” 1 é o que eu preciso.

Muito obrigado antecipadamente.

Um grande abraço a todos

Adalberto
Avatar do usuário
Carlos Susviela
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

número de registro en uma tabela indice

Mensagem por Carlos Susviela »

Acho que essa função vai te ajudar:
Se eu entendi sua pergunta.

https://harbour.github.io/doc/harbour.html#reccount


--------------------
Li novamente sua pergunta e talvez seja isso que buscas:

Código: Selecionar todos

DBGOTOP()
 LOCATE FOR 'Baqueros'$Apellido
IF EOF()
    ? "Não achei"
ELSE 
  ? RECNO()
ENDIF
.
#Susviela
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20416
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

número de registro en uma tabela indice

Mensagem por JoséQuintas »

Adalberto escreveu:Eu preciso saber que número de registro tem o sobrenome Baqueros na tabela de índice.
Sei lá se entendi...
A pergunta só faz sentido se fosse a posição do índice, porque a do arquivo é só pegar RecNo()

Código: Selecionar todos

SEEK "BAQUEROS"
? RecNo()
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

número de registro en uma tabela indice

Mensagem por Adalberto »

Queridos amigos, muito gratos por sua atenção e sua ajuda

É como diz o professor JoséQuintas, a questão é como saber o número do registro, mas no arquivo de índice não do DBF

Aguardo sua ajuda, obrigado a todos.

Abrazos.

Adalberto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20416
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

número de registro en uma tabela indice

Mensagem por JoséQuintas »

hbmk2 -find ordkey

Núcleo Harbour (instalado):
ordKey()
ordKeyAdd()
ordKeyCount()
ordKeyDel()
ordKeyGoto()
ordKeyNo()
ordKeyRelPos()
ordKeyVal()
O mais provável é que seja OrdKeyNo()
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

número de registro en uma tabela indice

Mensagem por Adalberto »

Queridos amigos, bom dia.

Para esclarecer minha pergunta, devo dizer que o que preciso é:

Conhecer o número do registro na tabela indexada.

Como sabemos, um registro que está no último na tabela sem indexar pode ser o primeiro na tabela indexada, portanto, preciso saber qual é o número de cada registro com a tabela é idexada.

por favor, desculpe-me se eu não me expressar bem.

Espero sua ajuda, muito obrigado.

Adalberto.
Avatar do usuário
Carlos Susviela
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

número de registro en uma tabela indice

Mensagem por Carlos Susviela »

Interessante a questão, mas ... Teria alguma aplicação para isso ?

Pois na pratica, o que interessa mesmo é os dados da tabela/dbf, então fiquei curioso para saber qual sua real necessidade, e quem sabe criar uma gambiarra, hehehehe.

#Susviela
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 765
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

número de registro en uma tabela indice

Mensagem por Nascimento »

Código: Selecionar todos

  local nRec:= 0
   sele temp
   set order to 1
  seek Baqueros
 if (found())
     nRec := Recno()
 endif

if nrec != 0
  alert(rtrim(str(nrec)))
endif

se entendi bem deve ser isso que vc quer
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

número de registro en uma tabela indice

Mensagem por Adalberto »

Meus caros,

Exemplo:

Código: Selecionar todos

Personas.DBF
Zapata       // (RECNO() = 1)
Garcia       // (RECNO() = 2)
Baqueros   // (RECNO() = 3)

//
LOCAL nRegistro:= 0
SELECT 1 // Personas
USE Personas
INDEX ON Nombre TO Personas
DBGOTOP()
WHILE !EOF()
     nRegistro++
     ? Nombre, nRegistro
     wait
     SKIP
ENDDO
DBCLOSEAREA()
RETURN NIL

Resultado:
Baqueros         1
Garcia             2
Zapata            3
Então, eu recebo o que preciso, agora sei qual é a posição de cada registro na tabela indexada.

Mas eu gostaria de conseguir isso sem passar por toda a tabela.

Como posso obter a posição de um registro sem percorrer a tabela inteira?
Ranier
Usuário Nível 2
Usuário Nível 2
Mensagens: 80
Registrado em: 02 Abr 2019 09:01
Localização: Goiania/Goias

número de registro en uma tabela indice

Mensagem por Ranier »

Adalberto escreveu:Como posso obter a posição de um registro sem percorrer a tabela inteira?
O Jose Quintas ja respondeu a sua pergunta:
ordKeyNo()
Precisa ler melhor as respostas...
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

número de registro en uma tabela indice

Mensagem por Adalberto »

Resolvido !!

A todos os amigos e professores do fórum: Muito obrigado, Deus os abençoe.

Maestro JoséQuintas, a função OrdKeyNo() é o que eu estava procurando, ela resolve exatamente.

Mestre Susviela:
Uso o TBBrowse e, para posicionar em um determinado registro, faço-o com:
SETPROPERTY (cWinName, 'oBrowAseg', 'Value', nPos)

Assim:
SEEK cNombre // ex. 'Baqueros'
nRecNo:= RECNO() // 133 na tabele sem indexar
nPos:= OrdKeyNo() // 4351 na tabela INDEXADA
SETPROPERTY ('Janela', 'oBrowNom', 'Value', nPos)


Agradeço a todos.

Adalberto
Responder