Autor Tópico: [Resolvido} SC_LOOKUP \ Simples...  (Lida 673 vezes)

Leao

  • Iniciante
  • **
  • Mensagens: 86
[Resolvido} SC_LOOKUP \ Simples...
« Online: Dezembro 24, 2013, 03:51:57 pm »
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 </p><b>{cpf}</b></p> 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 </p><b>{cnpj}</b></p> 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
« Última modificação: Dezembro 26, 2013, 10:44:51 am por Leao »

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:SC_LOOKUP \ Simples...
« Responder #1 Online: Dezembro 24, 2013, 06:40:15 pm »
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;"
F. A.
Analista de Sistemas

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:SC_LOOKUP \ Simples...
« Responder #2 Online: Dezembro 25, 2013, 08:01:12 pm »
fred deve fazer a comparação com id corrente no caso de updare.

Almeida

  • Expert
  • *****
  • Mensagens: 610
    • Email
Re:SC_LOOKUP \ Simples...
« Responder #3 Online: Dezembro 25, 2013, 08:31:02 pm »
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:

Código: [Selecionar]
$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);

Att.
Eliezer Almeida
eliezeralmeidago@hotmail.com
www.infotecsoft.com.br - Modernidade e Eficiência

Leao

  • Iniciante
  • **
  • Mensagens: 86
Re:SC_LOOKUP \ Simples...
« Responder #4 Online: Dezembro 26, 2013, 10:44:21 am »
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