Quando usar o ExistCPO e o ExistChav

No artigo de hoje, vou falar um pouco sobre as funções ExistCPO e ExistChav, qual a diferença das duas e como usar nas customizações.

Ambas as funções citadas, servem para validar se um registro existe na base de dados. A diferença é que a ExistCPO valida se a informação existe em algum alias informado. Já a ExistChav, valida se a informação existe na mesma tabela posicionada.

Trazendo para um exemplo mais simples, vamos imaginar o cadastro de clientes, se você quisesse validar se o código e loja do cliente existem, enquanto o usuário está digitando, você deve usar a ExistChav, com o alias SA1 e os campos A1_COD + A1_LOJA (índice 1 padrão).

Agora, se você tiver em um pedido de venda, e quer validar se o cliente digitado existe, ai você deve utilizar a função ExistCPO, passando o alias SA1 e os campos C5_CLIENTE e C5_LOJACLI.

 

Resumindo então, ExistChav valida se a informação existe na mesma tabela posicionada no momento do cadastro e ExistCPO valida se a informação existe em alguma tabela buscada que não está sendo manipulada no momento.

Abaixo irei demonstrar alguns exemplos de ambas as funções.

ExistCPO

Documentação: https://tdn.totvs.com/pages/viewpage.action?pageId=24346640

//Exemplo colocando na validação do campo:
ExistCPO( "SA1", &(ReadVar()) )

//Exemplo colocando na validação de uma tela em MVC (campo não está posicionado):
ExistCPO( "SA1", FWFldGet("CAMPO_CLI") + FWFldGet("CAMPO_LOJ") )

//Exemplo, usando o índice 3 (CNPJ / CPF)
ExistCPO( "SA1", cCampoCNPJ, 3 )

//Exemplo usando dentro de um programa em AdvPL
cCodigo := "000001"
cLoja := "01"

If ExistCPO("SA1", cCodigo + cLoja)
	MsgInfo("Cliente existe!", "Atenção")
Else
	MsgStop("Cliente não existe!", "Atenção")
EndIf

ExistChav

Documentação: https://tdn.engpro.totvs.com.br/pages/viewpage.action?pageId=24346638

//Exemplo colocando na validação do campo:
ExistChav( "SA1", &(ReadVar()) )

//Exemplo colocando na validação de uma tela em MVC (campo não está posicionado):
ExistChav( "SA1", FWFldGet("CAMPO_CLI") + FWFldGet("CAMPO_LOJ") )

//Exemplo, usando o índice 3 (CNPJ / CPF)
ExistChav( "SA1", cCampoCNPJ, 3 )

//Exemplo usando dentro de um programa em AdvPL
cCodigo := "000001"
cLoja := "01"

If ExistChav("SA1", cCodigo + cLoja)
	MsgInfo("Cliente já existe!", "Atenção")
Else
	MsgStop("Cliente não existe!", "Atenção")
EndIf

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan Atilio (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

Deixe uma resposta