Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LyNcE

[Resolvido] Efetuar comando IF

Recommended Posts

AEW PESSOAL beleza?

 

POXA ESTOU COM UM PROBLEMA QUE ESTÁ ME DEIXANDO IRADO !

 

ESTOU DESENVOLVENDO UM SITE EM ASP, E PRECISO INSERIR DENTRO DE UMA TABELA 3 INFORMAÇÕES REFERENTES A UM FUNCIONÁRIO, SENDO CODIGO (CODFUNCIONARIO) DATA QUE FALTOU (DATA) PERIODO (INTEGRAL)

 

O NOME DA TABELA É RECURSOSHUMANOS.TB_FALTAS E OS CAMPOS SÃO DA SEGUINTE ESTRUTURA

 

CODFUNCIONARIO : INT

DATA : DATETIME

INTEGRAL : CHAR(1) // COM CONSTRAINT DE "S" OU "N"

 

O PROBLEMA:

 

ANTES DE INSERIR NA TABELA, EU EXECUTO UM COMANDO PARA PROCURAR NO BANCO DE DADOS O USUARIO E A RESPECTIVA DATA PARA VER SE NÃO É EXISTENTE:

 

 

ASP
buscasql = "select * from RECURSOSHUMANOS.TB_FALTAS where (CODFUNCIONARIO='" & vfuncionario & "')and (DATA='" & vfaltas & "')"

set ab = conn.execute (buscasql)

 

E EM SEGUIDA FAÇO A CONSISTENCIA:

 

 

ASP
if (ab.EOF and ab.BOF = true) then

 

NO CASO SE NÃO FOR EXISTENTE É PARA EFETUAR A GRAVAÇÃO NO BANCO:

 

ASP
grsq ="insert into RECURSOSHUMANOS.TB_FALTAS (CODFUNCIONARIO, DATA, INTEGRAL) values (" & vfuncionario & ", '" & vfaltas & "', '" & vperiodo & "')"

conn.execute grsq

conn.close

 

APÓS ESSE TRECHO SERIA PARA EXIBIR A MENSAGEM

 

ASP
response.write "Gravado com sucesso"

 

 

LOGO ABAIXO TENHO UM ELSE PARA QUE SE FOR EXISTENTE DAR A MENSAGEM

 

 

ASP
else

 

response.write "Essa data ja foi lançada"

 

end if

 

SO O QUE ACONTECE, AO EXECUTAR ESSA ROTINA A INFORMAÇÃO É GRAVADA NO BANCO DE DADOS E AI APARECE A MENSAGEM "ESSA DATA JA FOI LANÇADA" AO INVES DE APARECER "GRAVADO COM SUCESSO", NISSO SE EU TENTAR INSERIR O MESMO CÓDIGO E DATA DE NOVO, SURGE A MENSAGEM QUE JA FOI LANÇADA E NÃO GRAVA NO BANCO, MAS SE EU PEGAR UMA INFORMAÇÃO NOVA, ELE GRAVA NO BANCO E DA A MENSAGEM COMO SE JA EXISTISSE.. PARA TODAS QUE FAÇO... SE TEM ELE NÃO GRAVA E MOSTRA A MENSAGEM, ESTARIA CORRETO, MAS SE TB NÃO TIVER ELE GRAVA E DA A MESMA MENSAGEM TB.

 

EU FIZ O SEGUINTE TESTE, COMENTEI A LINHA ONDE OS DADOS SÃO INSERIDOS NO BANCO, DEIXEI SO AS MENSAGENS, SE TIVER ALGUM APARECE "JA FOI LANÇADO" E SE NÃO TIVER APARECE "GRAVADO COM SUCESSO", EXECUTO A ROTINA EM SEGUIDA E FUNCIONA NORMAL... SE TIVER ELE MOSTRA QUE JA TEM E SE NÃO TIVER ELE DIZ QUE SUPOSTAMENTE GRAVOU COM SUCESSO... ELE CAI DENTRO DOS BLOCOS DO IF NORMALMENTE E COM A LINHA PRA GRAVAR ELE GRAVA NORMAL E EM SEGUIDA "SE PERDE" E EXECUTA O CONTEUDO DO ELSE TB.

 

ABAIXO SEGUE O CODIGO COMPLETO:

 

ASP
<!--#include virtual="/site/conecta.asp"-->

 

<%

vfuncionario = request.form("funcionario")

vfaltas = request.form("faltas")

vperiodo = request.form("mperiodo")

 

if vperiodo = "" then

 vperiodo = "S"

else

 vperiodo = "N"

end if

 

buscasql = "select * from RECURSOSHUMANOS.TB_FALTAS where (CODFUNCIONARIO='" & vfuncionario & "')and (DATA='" & vfaltas & "')"

set ab = conn.execute (buscasql)

 

if (ab.EOF and ab.BOF = true) then

 

grsq ="insert into RECURSOSHUMANOS.TB_FALTAS (CODFUNCIONARIO, DATA, INTEGRAL) values (" & vfuncionario & ", '" & vfaltas & "', '" & vperiodo & "')"

conn.execute grsq

conn.close

response.write "GRAVADO COM SUCESSO"

 

 

%>

<script>

<!--

function redireciona(){

window.location.href = "principal.asp";

}

var tempo = window.setTimeout("redireciona()", 1000);

//-->

</script>

<%

 

else

response.write "ESSA DATA JA FOI LANÇADA!"

%>

<script>

<!--

function redireciona(){

window.location.href = "cadfaltas.asp";

}

var tempo = window.setTimeout("redireciona()", 1000);

//-->

</script>

<%

end if

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho um sistema pareceido mas coloco dessa forma vê se funciona com você:

 

ASP
buscasql = "select * from RECURSOSHUMANOS.TB_FALTAS where (CODFUNCIONARIO='" & vfuncionario & "')and (DATA='" & vfaltas & "')"

set ab = conn.execute (buscasql)

 

if (ab.EOF and ab.BOF = true) then

 

response.write "ESSA DATA JA FOI LANÇADA!"

 

else

 

grsq ="insert into RECURSOSHUMANOS.TB_FALTAS (CODFUNCIONARIO, DATA, INTEGRAL) values (" & vfuncionario & ", '" & vfaltas & "', '" & vperiodo & "')"

conn.execute grsq

conn.close

response.write "GRAVADO COM SUCESSO"

Compartilhar este post


Link para o post
Compartilhar em outros sites

moderador, desculpe pela falha...rs

 

Mas então um comentário, reinaldo:

 

Se eu colocar if ab.bof and ab.eof = true then

 

eu não estaria "dizendo" ao sistema que seria "vazio" ? ai sim efetuaria a gravação?, pois do jeito que vi o seu post, ele vai dar a mensagem que ja existe quando não existir, e quando existir ele vai tentar gravar e possivelmente daria erro, ou será que estou errado?

 

Aguardo a ajuda de todos ai.

 

 

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

LyNcE,

 

Porque ao inves de você usar

 

ASP
if (ab.EOF and ab.BOF = true) then

 

você nao usa

ASP
if ab <> vfaltas then

 

só uma sujestão, testa ai.

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que pode te ajudar é somente fazer a verificação com eof.

 

E outra coisa, tipo pelo código que você colocou é impossível que ele esteja criando o registro e mostrando a mensagem de registro já cadastrado.

SO O QUE ACONTECE, AO EXECUTAR ESSA ROTINA A INFORMAÇÃO É GRAVADA NO BANCO DE DADOS E AI APARECE A MENSAGEM "ESSA DATA JA FOI LANÇADA" AO INVES DE APARECER "GRAVADO COM SUCESSO"

Compartilhar este post


Link para o post
Compartilhar em outros sites

use apenas assim

 

ASP
if ab.EOF and then

 

em vez de assim

 

ASP
if (ab.EOF and ab.BOF = true) then

 

deve resolver

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal....

 

Parece inacreditável, mas é verdade, ele executa tanto o comando no conteudo Then e tb o conteudo do comando else, agora uma pergunta "Pode acontecer, ou existe o fato de que a tabela dentro do banco de dados esteja com problemas ou coisa do tipo que dai quando o comando sql vai procurar acusa como encontrado ou coisa do genero?" pq tipo pelo código que postei, eu não consegui enxergar até agora um erro de lógica, eu fui depurando passo a passo e eu achei a falha bem quando ele vai gravar. Se eu colocar o comando pra gravar, ele grava mas tb executa o comando do else tb...

 

E outra alguem por acaso conhece algum programinha que seja simples pra depurar arquivos asp passo a passo, tipo o F8 do vb ?

 

 

O pessoal, me ajudem, e referente a utilizar ab.EOF = true, eu ja utilizei, e acontece a mesma coisa.

 

 

Aguardo a colaboração de vcs.

 

E um abraço pro moderador... novamente desculpe pela falha..rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aew pessoal... resolvi !!

 

E acreditem, é algo que seria a ultima coisa que qualquer um faria....

 

O que acontece e que estou usando uma tela de formulario para entrada das informações e depois eu tenho 3 botões na tela que cada um da um destino diferente para o "post" e direcionamento, o que acontece é o seguinte eu estava usando um script para redirecionar ao arquivo gravafaltas.asp que era o arquivo em questão, todavia o script é esse:

 

<script language="JavaScript">

function readd()

{

 

document.faltou.action = "gravarfaltas.asp";

document.forms.faltou.submit();

}

</script>

 

reparem que o script ja possui um atributo de envio... ou seja "submit", logo dentro do código do botão eu estava usando também outro submit segue:

 

<input name="envidata" type="submit" class="botaoir" onclick = readd() value="Ir">

 

Então o que acontecia? Quando eu clicava no botão, ele redirecionava para a página em sequencia duas vezes a mesma informação, então ele gravava e depois consultava e dava a mensagem que ja existia.... Como eu resolvi?

 

Troquei o atributo de submit para button como um botão comum.

 

<input name="envidata" type="button" class="botaoir" onclick = readd() value="Ir">

 

Ai sim funcionou..... agora que eu digo, a esperança é a ultima que morre.... o pessoal que trabalha aqui comigo, insistiam que havia um erro de lógica no sql, eu imaginava o tempo todo que não tinha nada haver, e realmente não tinha.

 

Agradeço a ajuda de vcs, e se precisarem é só postar....heheh

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw pelos abraços hehehehe e ñ se preoculpe que todos erram agora a o seu erro a galera aqui ia ficar uma eternidade hehehe, que bom que resolveu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parabens por ter encontrado a solução

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.