Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
portuguese
Composition Setup
import.css=/download/attachments/3279126062824/newLayouttecnologia.css

Pagetitle

...

DBSeek

...

...

...

DBSeek

Localiza

...

um

...

registro

...

com

...

determinado

...

valor

...

da

...

expressão

...

de

...

chave

...

de

...

índice.

Sintaxe

Bloco de código
collapsefalse
DBSeek( <
xExp>
 xExp >, [ lSoftSeek ], [
lUltimo
 lLast ] )
--> lRet

Parâmetros

...

Nome

Tipo

Descrição

Obrigatório

Referência

xExp

...

qualquer

Indica o valor da chave que será encontrada do tipo caracter

...

.

X

...


lSoftSeek

...

lógico

Indica se, verdadeiro (.T.), posiciona no primeiro registro com expressão de chave maior que o valor procurado; caso contrário, falso (.F.) (Valor padrão).

...



lLast

lógico

Parâmetro de compatibilidade. Deve ser informado o valor nulo ( NIL ).



Retorno

Nome

Tipo

Descrição

lRet

lógico

...

 

...

Retorna verdadeiro (.T.), se encontrar um registro com o valor especificado; caso contrário, falso (.F.).

Observações

  • xExp Todos os tipos de expressão do índice com exceção do índice com apenas um campo do tipo numérico.
  • Antes de chamar a função DBSeek(), deve-se certificar de que existe uma ordem ativa no momento com os campos que se deseja pesquisar o valor. Se a expressão possuir apenas um campo numérico, o primeiro parâmetro <xExp> deve ser do tipo numérico, mas nos demais casos deve-se utilizar um valor do tipo caracter para este parâmetro (mesmo que sejam apenas dois campos numéricos ou do tipo data).
  • Quando o segundo parâmetro <lSoftSeek> for especificado como verdadeiro (.T.), mesmo que a expressão pesquisada não encontrar nenhum registro com este valor, a tabela será posicionada no próximo valor maior que o especificado no primeiro parâmetro <xExp>, mas mesmo posicionando no próximo valor essa função retornará falso (.F.) (pois não encontrou).
    Quando não for especificado este valor ou estiver configurado falso (.F.) e falhar o valor da pesquisa, a tabela será posicionada em LastRec +1 e será setada a flag de EOF.
  • Se o terceiro parâmetro

...

  • <lLast> for especificado com valor verdadeiro (.T.), a função posiciona a tabela no último registro com o valor, ou falso (.F.), será posicionada na primeira ocorrência.
  • Se o registro for encontrado o current record será atualizado.
  • Se o retorno do DBSeek for False (.F.) a flag de EOF() será definida como True (.T.) e o RECNO() será inválido.

Exemplos

O exemplo abaixo utiliza a RDD "TOPCONN", mas a função pode ser utilizada com qualquer uma das RDDs válidas.

Exemplo 1

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
//Este exemplo
,
 apresenta 
como
o 
utilizar
uso 
a
da 
função
DBSeek
()
 para 
busca
localizar 
de
um 
valores numéricos.
USE Clientes NEWORDListADD ("/teste/ind1.cdx") // Expressão é Num (campo numérico)
DBSeek(100) // Retorna: .F.
EOF() // Retorna: .T.
DBSeek(100,.T.) // Retorna: .F.
EOF() // Retorna: .F. (pois o softseek posicionou no próximo registro)
//Este exemplo, apresenta como utilizar a função DBSeek() para percorrer todos os registros
//de Clientes com o nome João e vencimentos a partir de Janeiro de 2001.
USE Clientes NEWORDListADD ("/teste/ind2.cdx") // Expressão é Nome+Venc (campo caracter + data)
DBSEEK("joao200101",.T.) // Procura a primeira ocorrência de Nome "joao" e vencimento maior que Janeiro de 2001
WHILE !EOF() .AND. Nome == "joao"
DBSkip()
ENDDO
Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server
registro caractere
user function test

local cRdd   := 'TOPCONN'
local cTable := 'MYTABLE'
local aStru  := {{"CPOC","C",10,0}}
local nHdl   := tcLink()

dbCreate(cTable, aStru, cRdd)
dbUseArea(.T., cRdd, cTable, (cTable), .F., .F. )
dbCreateIndex('MYINDEX', 'CPOC')

for i := 0 to 6
dbAppend(.F.)
(cTable)->CPOC := chr(65+i)  //Insere caracteres de A à F
dbCommit()
next

dbGoTop()
conout( dbSeek("C") ) // deve retornar .T. e reposicionar no recno() 3

dbCloseArea()
tcUnlink(nHdl)

return


Exemplo 2

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
//Este exemplo apresenta o uso da DBSeek para localizar um registro numérico
user function test

local cRdd   := 'TOPCONN'
local cTable := 'MYTABLE'
local aStru  := {{"CPON","N",10,0}}
local nHdl   := tcLink()

dbCreate(cTable, aStru, cRdd)
dbUseArea(.T., cRdd, cTable, (cTable), .F., .F. )
dbCreateIndex('MYINDEX', 'CPON')

for i := 1 to 15 step 2
dbAppend(.F.)
(cTable)->CPON := i
dbCommit()
next

dbGoTop()
conout( dbSeek(10, .T. ) ) // deve retornar .F. e reposicionar no recno() 6 respeitando o comportamento da lSoftSeek
conOut( recno() )

dbCloseArea()
tcUnlink(nHdl)

return