Versões comparadas

Chave

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

Sintaxe


La función MsSeek( <cChave> , <lSoft> ), cuando se utiliza bien, puede disminuir mucho el I/O de disco cuando se ejecuta.
Su principal característica es realizar el cache del resultado del seek, tanto con relación al recno encontrado como con relación al contenido del registro.
El uso incorrecto del MsSeek puede crear una situación de lectura sucia no deseada.
<enlace para el tópico de lectura sucia>


Propósito


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


Argumentos


<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.


<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.


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("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: 02
    MsgInfo("Cliente localizado", "Consulta por cliente")
Else
    MsgInfo("Cliente não encontrado", "Consulta por cliente")
EndIf