[RESOLVIDO] Duplicação de CPF

Fala galera

Estou começando agora com SC e preciso de uma ajuda. Tenho duas tabelas de cadastros, onde uma delas cadastro de Produtores, a mesma não pode aceitar a duplicação de cadastro de um CPF, a dúvida é a seguinte o código abaixo que estou colocando e o evento onde estou declarando estão corretos? Acredito que esta faltando algo pois rodei e ainda aceita o cadastro duplicado.

Evento Onvalidate

Código

sc_lookup(DS,“Select count(*) from form_ronei_tb_produtor where CNPJ_PROD={CPF}”);
if(!empty({DS[0][0]})){
sc_error_message(“O CPF

{CPF} já está cadastrado.”);
}

Tente ir em Chave Ünica e informar a coluna CPF.

O Sc vai evitar a duplicidade para você.

Desculpe, poderia me explicar como fazer, pois sou totalmente leigo em SC

Tente fazer assim:

sc_lookup(DS,"Select CNPJ_PROD from form_ronei_tb_produtor where CNPJ_PROD='{CPF}'");
if(!empty({DS})){
sc_error_message("O CPF </p><b>{CPF}</b></p> já está cadastrado.");
}

Edite o formulariio pelo sc, no menua lateral tem o item chave unica.

Esse instrução do Haroldo é a melhor saída.

Não vamos ficar “inventando” códigos se temos uma solução pronta.

Dentro desta idéia, como poderíamos ser redirecionado para o CPF que já está cadastrado ?

Ou seja, quando o usuário digitar um CPF que já consta no banco, ao invés de simplesmente dar uma mensagem de erro, como faço para dar uma mensagem avisando da duplicidade e ao mesmo tempo trazer as informações do cliente no formulário ?

Tentei fazer assim, no Evento Ajax no OnChange do campo CPF, mas não deu certo.

$sql = “SELECT cli_cpf FROM cliente WHERE cli_cpf = {cli_cpf}”;

sc_lookup( ds, $sql);

if(isset({ds})) {
sc_alert(“CPF Já Cadastrado.\nVocê será redirecionado aos dados existentes !”);
$cpf = {ds[0][0]};
sc_redir(cad_cliente_supervisor.php, cli_cpf=$cpf); (assim tentei passar o parâmetro para o formulário, mas ele abre o formulário no primeiro registro)
}

onde estou errando ?

obrigado pelo apoio

Primeiro : Seu form vai ser aberto sempre informando um cpf ou poderá ser aberto para navegação entre os registros?

Se o seu form for sempre aberto em um registro que exija um parâmetro cpf. Vai na clausula where do SQL do form e coloque o campo do cpf recebendo sua variavel global “cli_cpf”;

Ex:
camposqldocpf = ‘[cli_cpf]’.

Fazendo assim, sempre que abrir o form para edição terá que informar um cpf.

Agora se seu form poderá ser aberto para navegação use uma variavel global tipo assim “where_cpf_opcional”, passe o where completo para ela, apenas nesse caso de redirecionamento a mesma recebera valores. Coloque a variavel na clausula where do SQL do formulário.

Ex:
[where_cpf_opcional] = “camposqldocpf = '”.[cli_cpf]."’";

PS: Aconselharia ao invés de fazer o where pelo CPF, quando encontrasse o campo CPF retornasse o ID do registro e passaria o por parâmetro, não o cpf.

você não pode redirecionar para outra aplicação dentro de um evento ajax, lembre-se que o código de um evento ajax esta sendo executado em background.

Se deseja verificar se o cnpj ou cpf ja existe, faça uma app de controle com um campo cpf, no evento ajax onchange busque na base de dados, se existir habilite um botão redirecionando o form para edição, caso não redirecione ao form para inclusão passando o cpf como parâmetro e atualizando o campo cpf do formulário.

Se desejar isso sem o controle, para fazer sentido o cpf deve ser o primeiro campo do formulário, pois em modo de edição se tiver outros campos antes, preenche-los e depois ao digitar o cpf e ja existir você perderá od dados digitados no campo anterior.

A questão não é só saber como fazer uma ação, mas sim se essa ação do jeito que está fazendo é valida e se faz sentido.

No caso de não querer usar o controle, você pode no evento ajax onchange do cpf habilitar um botão para editar caso o cpf exista.

O Evento ajax ocorre no servidor, mais todo evento ajax tem um retorno, podemos pegar e no retorno do ajax redirecionar o form sim.
macro sc_redir do scriptcase já faz issu, após o retorno do ajax a mesma redireciona o form, para tirar a dúvida fiz o teste e funcinou o sc_redir no evento ajx perfeitamente.

Pelo que entendi nosso amigo está com problema em filtrar o CPF que foi digitado duplicadamente.
Dei um exemplo superficial acima, mais a base é essa.

De uma olhada aqui amigo, tem um sugestão para você.
http://www.scriptcase.com.br/forum/index.php/topic,7350.0/topicseen.html

Desculpe a demora a responder galera, deu certo aqui, valeu pela ajuda