[Resolvido} SC_LOOKUP \ Simples...

No evento Onvalidate tenho esse código:
if ({pessoa} == ‘F’)
{
sc_lookup(DS,“Select cpf,nome from clientes where
cpf={cpf} AND codigo <> {codigo}”);

if(!empty({DS[0][0]})){
sc_error_message(“O CPF

{cpf} já está cadastrado.”.{DS[0][1]});
}
}
else
{
sc_lookup(DS,“Select cnpj,nome from clientes where
cnpj={cnpj} AND codigo <> {codigo}”);

if(!empty({DS[0][0]})){
sc_error_message(“O CNPJ

{cnpj} já está cadastrado.”.{DS[0][1]});
}
}

Somente a primeira instrução é realizada a segunda não executa, mesmo deixando somente
ela, já usei o debug, não mostra nenhum erro, inclusive mostra a sql certinha.

Objetivo: Mostrar a existencia do cpf ou cnpj conforme o tipo de pessoa.

Banco Firebird
Código da Aplicação (7.01.0013)

Alguém se habilitar a comentar.

Obrigado,
Leão
Obrigado

No onValidate colocaria um select pra verificar se há o CPF igual ou não já cadastrado.

Ex: “SELECT COUNT(cpf) as existe FROM cliente WHERE cpf = ‘{$cpf}’ LIMIT 1;”

fred deve fazer a comparação com id corrente no caso de updare.

Creio que seu problema está no select, pois não está encapsulando os campos string, no caso {cpf} ou {cnpj}, então sua primeira instrução SQL já retorna false e cai no primeiro IF. Teria que mudar seus selects para:

$sql = "Select cpf,nome from clientes where cpf=" . sc_sql_injection({cpf}) . " AND codigo <> " . sc_sql_injection({codigo};
sc_lookup(DS, $sql);

$sql = "Select cpf,nome from clientes where cpf=" . sc_sql_injection({cnpj}) . " AND codigo <> " . sc_sql_injection({codigo};
sc_lookup(DS, $sql);

Olá Almeida, deu certo, só faltou fechar o “)” na instrução.

$sql = “Select cpf,nome from clientes where cpf=” . sc_sql_injection({cpf}) . " AND codigo <> " . sc_sql_injection({codigo};
sc_lookup(DS, $sql);

assim:
$sql = “Select cpf,nome from clientes where cpf=” . sc_sql_injection({cpf}) . " AND codigo <> " . sc_sql_injection({codigo});
sc_lookup(DS, $sql);

Muito obrigado,
Leão