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.