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) MsgStop("Cliente não existe!", "Atenção") Else MsgInfo("Cliente já existe!", "Atenção") EndIf
Bom pessoal, por hoje é só.
Abraços e até a próxima.