Ir para conteúdo

POWERED BY:

Arquivado

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

Guilherme Teixeira

[Resolvido] Por que BOF e EOF Verdadeiros se acabei de inserir?

Recommended Posts

desculpem-me colei o código sem explicação!

 

tenho este codigo que INSERE valores em duas tabelas. Primeiro ele insere na tabela ALUNOS

e depois na tabela PAIS, porém antes de inserir na tabela PAIS, gostaria que ele localiza-se o

ID do aluno, para relacionar com o pai, mas ele dá akele famoso erro:

 

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo

requer um registro atual.

/meu_caminho/usuarioadd.asp, line 80

 

este é o local

 

' pesquisar codigo aluno

Set rec = Server.CreateObject ("ADODB.RecordSet")

rec.open "SELECT * FROM Alunos WHERE Usuario='"&usuario_aluno&"'",conn,2,3

 

codigo_aluno = rec("Id_aluno").value

 

<!--#include file="includes/connectlogin.asp"-->
<%
'recebe valores
nome = request.form("nome")
serie = request.form("serie")
complemento = request.form("complemento")
dia = request.form("dia")
mes = request.form("mes")
ano = request.form("ano")
usuario_aluno = request.form("usuario_aluno")
senha_aluno = request.form("senha_aluno")
nome_pai = request.form("nome_pai")
usuario_pai = request.form("usuario_pai")
senha_pai = request.form("senha_pai")
nome_mae = request.form("nome_mae")
usuario_mae = request.form("usuario_mae")
senha_mae = request.form("senha_mae")
' armazena em cookies
response.Cookies("nome") = nome 
response.Cookies("serie") = serie
response.Cookies("complemento") = complemento
response.Cookies("dia") = dia 
response.Cookies("mes") = mes
response.Cookies("ano") = ano 
response.Cookies("usuario_aluno") = usuario_aluno
response.Cookies("senha_aluno") = senha_aluno 
response.Cookies("nome_pai") = nome_pai
response.Cookies("usuario_pai") = usuario_pai
response.Cookies("senha_pai") = senha_pai
response.Cookies("nome_mae") = nome_mae
response.Cookies("usuario_mae") = usuario_mae
response.Cookies("senha_mae") = senha_mae

' verifica se existe algum campo em branco
if nome = "" or serie = "-" or dia = "-" or mes = "-" or ano = "-" or usuario_aluno = "" or senha_aluno = ""
 or nome_pai = "" or usuario_pai = "" or senha_pai = "" or nome_mae = "" or usuario_mae = "" or senha_mae = "" 
then
response.redirect replace(replace(replace(Replace(Request.ServerVariables("HTTP_REFERER"),"?Erro=Verifique%20se%20todos%20os%20campos%20foram%20preenchidos", ""),"?Erro2=Este%20usuário%20para%20aluno%20já%20existe,%20escolha%20outro!",""),"?Erro3=Este%20usuário%20para%20pai%20já%20existe,%20escolha%20outro!",""),"?Erro4=Este%20usuário%20para%20mãe%20já%20existe,%20escolha%20outro!","")+"?Erro=Verifique%20se%20todos%20os%20campos%20foram%20preenchidos"
else
'verifica se o usuario do aluno já existe
Set rec0 = Server.CreateObject ("ADODB.RecordSet")
rec0.open "SELECT * FROM Alunos, Administradores, Secretaria, Pais, Professores, Pedagogia WHERE (Alunos.Usuario='"&usuario_aluno&"') OR  (Administradores.Usuario='"&usuario_aluno&"') OR  (Secretaria.Usuario='"&usuario_aluno&"') OR  (Pais.usuario_pai='"&usuario_aluno&"') OR  (Pais.usuario_mae='"&usuario_aluno&"') OR  (Professores.Usuario='"&usuario_aluno&"') OR   (Pedagogia.usuario='"&usuario_aluno&"')",conn,2,3

If Not rec0.EOF Or Not rec0.BOF Then
response.redirect replace(replace(replace(Replace(Request.ServerVariables("HTTP_REFERER"),"?Erro=Verifique%20se%20todos%20os%20campos%20foram%20preenchidos", ""),"?Erro2=Este%20usuário%20para%20aluno%20já%20existe,%20escolha%20outro!",""),"?Erro3=Este%20usuário%20para%20pai%20já%20existe,%20escolha%20outro!",""),"?Erro4=Este%20usuário%20para%20mãe%20já%20existe,%20escolha%20outro!","")+"?Erro2=Este%20usuário%20para%20aluno%20já%20existe,%20escolha%20outro!"
elseIf rec0.EOF Or rec0.BOF Then

'verifica se o usuario do pai já existe
Set rec0 = Server.CreateObject ("ADODB.RecordSet")
rec0.open "SELECT * FROM Alunos, Administradores, Secretaria, Pais, Professores, Pedagogia WHERE (Alunos.Usuario='"&usuario_pai&"') OR  (Administradores.Usuario='"&usuario_pai&"') OR  (Secretaria.Usuario='"&usuario_pai&"') OR  (Pais.usuario_pai='"&usuario_pai&"') OR  (Pais.usuario_mae='"&usuario_pai&"') OR  (Professores.Usuario='"&usuario_pai&"') OR   (Pedagogia.usuario='"&usuario_pai&"')",conn,2,3
If Not rec0.EOF Or Not rec0.BOF Then

response.redirect replace(replace(replace(Replace(Request.ServerVariables("HTTP_REFERER"),"?Erro=Verifique%20se%20todos%20os%20campos%20foram%20preenchidos", ""),"?Erro2=Este%20usuário%20para%20aluno%20já%20existe,%20escolha%20outro!",""),"?Erro3=Este%20usuário%20para%20pai%20já%20existe,%20escolha%20outro!",""),"?Erro4=Este%20usuário%20para%20mãe%20já%20existe,%20escolha%20outro!","")+"?Erro3=Este%20usuário%20para%20pai%20já%20existe,%20escolha%20outro!"
elseIf rec0.EOF Or rec0.BOF Then

'verifica se o usuario da mae existe
Set rec0 = Server.CreateObject ("ADODB.RecordSet")
rec0.open "SELECT * FROM Alunos, Administradores, Secretaria, Pais, Professores, Pedagogia WHERE (Alunos.Usuario='"&usuario_mae&"') OR  (Administradores.Usuario='"&usuario_mae&"') OR  (Secretaria.Usuario='"&usuario_mae&"') OR  (Pais.usuario_mae='"&usuario_mae&"') OR  (Pais.usuario_mae='"&usuario_mae&"') OR  (Professores.Usuario='"&usuario_mae&"') OR (Pedagogia.usuario='"&usuario_mae&"')",conn,2,3
If Not rec0.EOF Or Not rec0.BOF Then

response.redirect replace(replace(replace(Replace(Request.ServerVariables("HTTP_REFERER"),"?Erro=Verifique%20se%20todos%20os%20campos%20foram%20preenchidos", ""),"?Erro2=Este%20usuário%20para%20aluno%20já%20existe,%20escolha%20outro!",""),"?Erro3=Este%20usuário%20para%20pai%20já%20existe,%20escolha%20outro!",""),"?Erro4=Este%20usuário%20para%20mãe%20já%20existe,%20escolha%20outro!","")+"?Erro4=Este%20usuário%20para%20mãe%20já%20existe,%20escolha%20outro!"

else
'inserir aluno
sqlstmt = "Insert into Alunos (Nome, Serie, Complemento, Usuario, Senha, Data_nasc, Mes_nasc, Ano_nasc)
 values ('"&nome&"','"&serie&"','"&complemento&"','"&usuario_aluno&"','"&senha_aluno&"','"&dia&"','"&mes&"','"&ano&"')"

Set add = server.createobject("adodb.connection") 'abre a conexão com o banco de dados

add.open conn 'avisa qual banco de dados será utilizado na consulta

set rsquery = add.execute(sqlstmt) 'executa a instrução SQL contida na variavel sqlstmt

set rsquery = nothing

set add = nothing


' pesquisar codigo aluno
Set rec = Server.CreateObject ("ADODB.RecordSet")
rec.open "SELECT * FROM Alunos WHERE Usuario='"&usuario_aluno&"'",conn,2,3

codigo_aluno = rec("Id_aluno").value

'inserir pais
sqlstmt2 = "Insert into Pais (Filho, Nome_pai, Usuario_pai, Senha_pai, Nome_mae, Usuario_mae, Senha_mae) 
values ('"&codigo_aluno&"','"&nome_pai&"','"&usuario_pai&"','"&senha_pai&"','"&nome_mae&"','"&usuario_mae&"','"&senha_mae&"')"

Set add2 = server.createobject("adodb.connection") 'abre a conexão com o banco de dados

add2.open conn 'avisa qual banco de dados será utilizado na consulta

set rsquery2 = add2.execute(sqlstmt2) 'executa a instrução SQL contida na variavel sqlstmt

set rec0 = nothing
set  add2 = nothing
set rsquery2 = nothing

' apagar cookies e redirecionar
response.Cookies("nome") = ""
response.Cookies("serie") = ""
response.Cookies("complemento") = ""
response.Cookies("dia") = ""
response.Cookies("mes") = ""
response.Cookies("ano") = ""
response.Cookies("usuario_aluno") = ""
response.Cookies("senha_aluno") = ""
response.Cookies("nome_pai") = ""
response.Cookies("usuario_pai") = ""
response.Cookies("senha_pai") = ""
response.Cookies("nome_mae") = ""
response.Cookies("usuario_mae") = ""
response.Cookies("senha_mae") = ""

response.Redirect "secretaria_usuarios.asp"
end if
end if
end if
end if
%>

Se alguém puder me ajudar eu agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

as tabelas possuiem um relacionamento correto, você não pode criar varios ob. recordset com mesmo nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

as tabelas possuiem um relacionamento correto, você não pode criar varios ob. recordset com mesmo nome.

Já mudei os nomes das RecordSets,

 

porém continua o mesmo erro! E o relacionamento está correto!!!

 

http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

use o bof and eof quando fazer select

 

Olha só que fiz:

 

Set rec = Server.CreateObject ("ADODB.RecordSet")
rec.open "SELECT * FROM Alunos WHERE Usuario='"&usuario_aluno&"'",conn,2,3
If Not rec.EOF Or Not rec.BOF Then
codigo_aluno = rec("Id_aluno").value

'inserir pais
sqlstmt2 = "Insert into Pais (Filho, Nome_pai, Usuario_pai, Senha_pai, Nome_mae, Usuario_mae, Senha_mae) values ('"&codigo_aluno&"','"&nome_pai&"','"&usuario_pai&"','"&senha_pai&"','"&nome_mae&"','"&usuario_mae&"','"&senha_mae&"')"

Set add2 = server.createobject("adodb.connection") 'abre a conexão com o banco de dados

add2.open conn 'avisa qual banco de dados será utilizado na consulta

set rsquery2 = add2.execute(sqlstmt2) 'executa a instrução SQL contida na variavel sqlstmt

set rec0 = nothing
set rec1 = nothing
set rec2 = nothing
set  add2 = nothing
set rsquery2 = nothing

' apagar cookies e redirecionar
response.Cookies("nome") = ""
response.Cookies("serie") = ""
response.Cookies("complemento") = ""
response.Cookies("dia") = ""
response.Cookies("mes") = ""
response.Cookies("ano") = ""
response.Cookies("usuario_aluno") = ""
response.Cookies("senha_aluno") = ""
response.Cookies("nome_pai") = ""
response.Cookies("usuario_pai") = ""
response.Cookies("senha_pai") = ""
response.Cookies("nome_mae") = ""
response.Cookies("usuario_mae") = ""
response.Cookies("senha_mae") = ""

response.Redirect "secretaria_usuarios.asp"
else
end if
end if
end if
end if
end if

adicionei If Not rec.EOF Or Not rec.BOF Then

 

mas que q aconteceu?

 

Ele não inseriu os pais, pq não conseguiu ler o codigo do aluno.

 

Alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deixou separado os ob. recordset para cada finalizadade e ainda recebe o mesmo erro:

você poderia seguir uma lógica simples, fiz agora este código,ele faz a inclusao no BD, antes fazendo uma verificaçao através de SQL Select , para ver se existe o nome ,se nao for final do arquivo (if not rs.eof then) é pq ja existe .então redireciono para o form.asp , else, incluo no bd atraves da SQL Insert e redireciono para adiministraçao.asp,onde receberá um mensagem de sucesso.

você pode fazer isso para as duas tabelas.pois aqui é feito em apenas uma tabela.

 

 

<%	 
   Option explicit
   'declaro as var
   dim varlogin, varemail, varsenha, conexao, conDBQ, constring, rsselect, SQLselect, rsinsert, SQLinsert
   'recupero todos os dados
   varlogin=trim(request.form("login"))
   varsenha=trim(request.form("senha"))
   varemail=trim(request.form("email"))
   'crio a conexao
   %>
   <!--#include file="conn/conexao1.asp"-->
   <% 'abrir a conexao
   call abreconexao
   'crio o rsselect para verificar se os dados jah estaun cadastrados
   set rsselect=server.createobject("ADODB.Recordset")
   'crio o SQLselect
   SQLselect="SELECT login FROM login WHERE login='"&varlogin&"'"
   rsselect.open SQLselect,conexao,1,3
   if not rsselect.eof then
   		response.redirect("incluir_form_treina.asp?msgeof=1")
		set rsselect=nothing
   else	
   		'crio o rsinsert para inseiri os dados no bd
   		 set rsinsert=server.createobject("ADODB.Recordset")
		'crio o SQLinsert pra incluir no bd
		SQLinsert="INSERT INTO login(login,senha,email) values('"&varlogin&"','"&varsenha&"','"&varemail&"')"
		rsinsert.open SQLinsert,conexao,1,3
		response.redirect("administracao_treina.asp?msg=1")
		set rsinsert=nothing
	end if 
	call fechaconexao %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

acabei de testar, o mesmo código que postei acima, porem como disse fazendo com uma tabela, inseri um dado e selecionei-o em seguida, foi normal.faz um teste de mesa em seu código reveja-o.

procure otimizar.

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.