Seek não encontra registro mesmo existindo no SQL | Ti Responde 055

No vídeo de hoje vamos demonstrar o que pode causar do registro não ser encontrado via DbSeek / MsSeek (mesmo o registro existindo no banco de dados).

Essa dúvida foi feita pelo grande Igor, onde ele questionou que mesmo as variáveis estando corretas, o Seek não encontrava os registros.

Então foi explicado que o que pode ter ocasionado são os espaços a direita, ai usamos a função AvKey para demonstração.

E abaixo o código fonte desenvolvido para exemplificar:

//Bibliotecas
#Include "TOTVS.ch"
 
/*/{Protheus.doc} User Function zVid0055
Função para demonstrar o posicionamento de registros com DbSeek / MsSeek
@type  Function
@author Atilio
@since 29/08/2022
/*/
 
User Function zVid0055()
    Local aArea   := FWGetArea()
    Local cFilSB1 := FWxFilial("SB1")
    Local cDescri := "Caneta Vermelha"
    Local cCodigo := "E0002"
 
    DbSelectArea("SB1")
    SB1->(DbSetOrder(3)) //B1_FILIAL + B1_DESC + B1_COD
 
    //Primeiro teste (que não irá encontrar o registro)
    If SB1->(MsSeek(Alltrim(cFilSB1) + cDescri + cCodigo))
        FwAlertInfo("Encontrou", "Teste 1")
    Else
        FwAlertInfo("Não encontrou", "Teste 1")
    EndIf
 
    //Segundo teste (que irá encontrar o registro)
    If SB1->(MsSeek(cFilSB1 + AvKey(cDescri, "B1_DESC") + AvKey(cCodigo, "B1_COD")))
        FwAlertInfo("Encontrou", "Teste 2")
    Else
        FwAlertInfo("Não encontrou", "Teste 2")
    EndIf
 
    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação