[RESOLVIDO] Validar campo

Prezados,

Em um Formulario registro unico, um campo de codigo do produto, preciso validar assim que o cara digita se já existe o codigo digitado, tentei colocar uma validação no Evento AJAX no onchange do campo.

Coloquei o sc_lookup() para buscar o produto na mesma base de dados e coloquei tambem mensagem de sc_ajax_message(), mas nada acontece …na critica, coloquei uma mensagem qualquer para saber se passa por lá…mas nada acontece

o que devo verificar…

Ari

Acho que é onKeyPress isso, você terá que fazer essa validação em JQuery.

Ari,
deixa ver se entendi, eu fiz o seguinte:

marquei ‘Usar lookup para exibir a descrição do campo’ no campo CODIGO_PRODUTO com este select,
SELECT DESCRICAO_PDV
FROM produto
WHERE ID = ‘{ID}’
ORDER BY DESCRICAO_PDV (somente para exibir ao lado do campo este detalhe, caso exista o codigo informado)

Em ‘Mensagem em caso de EOF’ escrevi esta mgs ‘Cod. não Cadastrado !’ caso o codigo não exista.

depois, criei um evento ajax pro meu campo CODIGO_PRODUTO assim;

sc_lookup(ds,“SELECT ID FROM produto WHERE CODIGO_INTERNO = {CODIGO_INTERNO}”);
{ID} = {ds[0][0]};

Caso seja após digitar o código e antes da passagem de campos vc terá que fazer por JQuery mesmo.
aki vc encontra muita coisa boa mesmo! http://www.youtube.com/playlist?list=PL0BF91DBECE5F52F9&feature=plcp

obrigado pela dica do site, vou assistir as aulas.

o caso é o seguinte

eu tenho que validar o produto digitado e não pode continuar a preencher o formulário, é campo chave.

Tem que avisar e continuar/focar no campo e pedir que digte novamente.

Ari

Ari faz assim no onBlur ajax do campo chave você faz seu código:

if (CONDICAO) {
SUA CONDICAO;
}
else {
sc_ajax_message (“Dados Inválidos”, “Error”, “timeout=2&button=N”);
sc_set_focus(‘SEUCAMPOCHAVE’);
}

Acho que funcionará para o que você quer.

Robert

Obrigado.

vou tentar e posto se resolveu.

Ari

Robert

Apaguei o Event Ajax anterir, fiz o novo no onBur, escolhi dois campos de paramentros

codigo_pro “codigo do produto”
codfor_pro “codigo da marca”

neste arquivo nao pode repetir codigo_pro + codfor_pro

coloquei o codigo:

sc_lookup( ds, "SELECT codigo_pro, codfor_pro FROM arq_prof WHERE codfor_pro = ‘{codfor_pro}’ AND codigo_pro = ‘{codigo_pro}’ ");

sc_ajax_message( {ds[0][0]} ,“Error”,“timeut=2&button=N” );
sc_ajax_message( {ds[1][1]} ,“Error”,“timeut=2&button=N” );

Nem a mensagem aparece.

o parametro que estou concatenando é com chaves {} ou com $ ?

Ari

Não pode Repetir né? Então é assim.

$sql = "SELECT codigo_pro, codfor_pro FROM arq_prof WHERE codfor_pro = ‘{codfor_pro}’ AND codigo_pro = ‘{codigo_pro}’ ";

sc_lookup( ds, $sql);

if(isset({ds[0][0]})) {
$error_codigo = "Já existem esses dados na base: " . {ds[0][0]} . ", ".{ds[0][1]};
sc_ajax_message($error_codigo,“Erro”,“timeut=2&button=N” );
}

Robert

Blz ! ok funcionou agora aparece a mensagem

Obrigado.

Ari

Hum Ari o Robert tem razao, neste video do scriptcase(menu cursos do site netmake) vc tb ve parte da validacao que ele citou, parabéns Robert! força Ari!

http://downloads.netmake.com.br/site/videos/fundamentals/v6_fund_pt_br_03/v6_fund_pt_br_03.html

Ok obrigado pelas dicas

é agora estou na fase de formulários, te tenho que aprender muitas coisas.

Ari

Srs, boa tarde
tenho dois campos para verificar se já existe, mas não veio nenhuma mensagem

ipcentral, iphg

Evento onBlur

$sql = "SELECT ipcentral, iphg FROM secretarias WHERE iphg = ‘{iphg}’ AND ipcentral = ‘{ipcentral}’ ";

sc_lookup( ds, $sql);

if(isset({ds[0][0]})) {
$error_codigo = "Já existem esses dados na base: " . {ds[0][0]} . ", ".{ds[0][1]};
sc_ajax_message($error_codigo,“Erro”,“timeut=2&button=N” );
}

no meu caso ao preencher o campo ipcentral e o mesmo já exista no BD tem que dar a msn já existe e não mudar de campo.

Celso nesse caso ai só vai mostrar a mensagem caso os 2 já existirem na base de dados.

Se você quer que um ou outro exista na base de dados use:

$sql = "SELECT ipcentral, iphg FROM secretarias WHERE iphg = ‘{iphg}’ OR ipcentral = ‘{ipcentral}’ ";

Ou ainda se sua verificação for só em um campo:

$sql = "SELECT ipcentral, iphg FROM secretarias WHERE ipcentral = ‘{ipcentral}’ ";

Agora se é este exemplo anterior que você quer mesmo, coloque a aplicação em modo debug, e poste o resultado do aqui.

Caro Robert,

o campo pesquizado é somente um mesmo, a pesquiza é no campo ipcentral realmente, mas ainda não apareceu a mensagem,
será que o comando é mesmo onBlur.
veja como ficou.
$sql = "SELECT ipcentral, iphg FROM secretarias WHERE ipcentral = ‘{ipcentral}’ ";

sc_lookup( ds, $sql);

if(isset({ds[0][0]})) {
$error_codigo = "Já existem esses dados na base: " . {ds[0][0]} . ";
sc_ajax_message($error_codigo,“Erro”,“timeut=2&button=N” );
}

onBlur é quando você sai do campo. Se nesse caso for um Select use onChange.

na verdade gostaria de preencher o campo ipcentral e quando tentar sai do campo faça a verificação caso exista o ipcentral na base de uma mensagem de erro.

Então é onBlur mesmo, faça o que lhe disse coloque em modo debug pra gente saber o que o SQL está retornando ai saberemos se é o SQL ou o Ajax que está com problemas.

Caro Robert,
Não consegui identificar o debug pode me indicar como efetuar este procedimento

Menu da esquerda>Aplicação>Configuração>Botão Rádio: Modo Debug>Sim

Caro Robert, deu certo a configuração ficou assim.

$sql = "SELECT ipcentral FROM secretarias WHERE ipcentral = ‘{ipcentral}’ ";
sc_lookup( ds, $sql);
if(isset({ds[0][0]})) {
$error_codigo = "Este IP já esta configurado: " . {ds[0][0]} .’’;
sc_ajax_message($error_codigo,“Erro”,“timeut=2&button=N” );
}

Porem quando entro para atualizar o formulário e passo pelo campo ipcentral sem alterar nada ele tambem da a mesma mensagem, teria como só dar a menagem quando alterar o campo.