Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Sintaxe

 


MsSeek( <expressão caracter>, <expressão lógica 1>,  [ <expressão lógica 2> ] )

 

Propósito

<cChave> , <lSoft> )


Propósito 


Pesquisa a área de trabalho ativa para encontrar um determinado registro, de acordo com a chave de pesquisa utilizada. 


Argumentos

 

<expressão caracter>


 <cChave → expressão caracter>


São os dados do registro que se deseja localizar, de acordo com a ordem de busca previamente especificada pela função dbSetOrder(). Ou seja, de acordo com o índice ativo no momento para a área de trabalho.

 

<expressão lógica 1>

 


<lSoft → expressão lógica>


Define se o cursor ficará posicionado no próximo registro válido, em relação à chave de pesquisa especificada, ou no final do arquivo, caso não se encontre a exata informação da chave de pesquisa. O padrão utilizado é falso (.F.), indicando que a busca será aproximada.

 


Nesse caso, a pesquisa será considerada um sucesso quando encontrar uma parte da informação.

 

<expressão lógica 2>

 

Define se o cursor será posicionado no primeiro ou no último registro de um intervalo com as mesmas informações especificadas na chave de pesquisa. O padrão utilizado é falso (.F.), indicando que o cursor será posicionado no primeiro registro encontrado.

 


Utilização 


A função MsSeek possui as mesmas funcionalidades da função dbSeek(), com a vantagem de não necessitar acessar novamente a base de dados para localizar uma informação já utilizada pela conexão (thread) ativa. 


Desta forma, a thread mantém em memória os dados necessários para reposicionar os registros já localizados, de forma que a aplicação pode, simplesmente, posicionar o registro sem executar novamente a pesquisa. 


A diferença entre as funções dbSeek() e MsSeek() é notada em aplicações com grande volume de posicionamentos e pesquisas, como relatórios, por exemplo, que necessitam referenciar diversas vezes o mesmo registro durante uma execução. 


Exemplos 


Segue abaixo o exemplo de uma pesquisa exata. Ou seja, a pesquisa será considerada um sucesso somente se toda a chave de pesquisa for encontrada:

Bloco de código
languagejs
themeMidnight
dbSelectArea(

...

 

"SA1")

// De acordo com o arquivo SIX, a chave de pesquisa é A1_FILIAL + A1_COD + A1_LOJA

...


dbSetOrder(1)

...

 

...



If MsSeek(

...

          MsgInfo(“Cliente localizado”, “Consulta por cliente”)

ELSE

          MsgInfo(“Cliente não encontrado”, “Consulta por cliente”)

ENDIF

...

"01" + "000001" + "02")     // Filial: 01 / Código: 000001 / Loja: 02
    MsgInfo("Cliente localizado", "Consulta por cliente")
Else
    MsgInfo("Cliente não encontrado", "Consulta por cliente")
EndIf



No exemplo abaixo, verificaremos uma pesquisa aproximada. Ou seja, a pesquisa será considerada um sucesso caso uma parte da chave de pesquisa seja encontrada:

Bloco de código
languagejs
themeMidnight
dbSelectArea(

...

 

"SA1")

// De acordo com o arquivo SIX, a chave de pesquisa é A1_FILIAL + A1_COD + A1_LOJA

...


dbSetOrder(1)

...

 

...



If MsSeek(

...

"01" + "000001" + "02", .T.)     // Filial: 01 / Código: 000001 / Loja:

...

          MsgInfo(“Cliente localizado”, “Consulta por cliente”)

ELSE

          MsgInfo(“Cliente não encontrado”, “Consulta por cliente”)

ENDIF

...

 02
    MsgInfo("Cliente localizado", "Consulta por cliente")
Else
    MsgInfo("Cliente não encontrado", "Consulta por cliente")
EndIf