Ir para conteúdo

POWERED BY:

Arquivado

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

Legionario-rs

[Resolvido] Erro ao excluir usuário

Recommended Posts

Boa noite,

No código a seguir quando vou excluir um usuário cadastrado aparece o erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80020009) O identificador de linha referia-se a uma linha excluída ou marcada para exclusão.

 

Agradeço mais uma vez aos que ajudarem.

 

<table border=0 width=100%>
<tr width=100%><td width=100%><h2>Lista de Administradores</h2></td></tr>
<%
Dim lista_admin,malha1,temp1
If Request.QueryString("acao") = "exclui" Then
set lista_admin = lojaDB.Execute("SELECT * FROM admin")
temp1 = 0
While not lista_admin.EOF
temp1 = temp1 + 1
lista_admin.MoveNext
Wend
If temp1 = 1 Then
%>
<tr width=100%><td width=100%><font color=red>Existe somente um usuário cadastrado. Não é possível excluir esse administrador.</font></tr>
<%
Else
set lista_admin = lojaDB.Execute("SELECT usuario FROM admin WHERE id=" & Request.QueryString("id"))
lojaDB.Execute("DELETE FROM admin WHERE id=" & Request.QueryString("id"))
%>
<tr width=100%><td width=100%><font color=red>Administrador <b><%=lista_admin("usuario")%></b> removido com sucesso.</font></tr>
<%
End If
End If
set lista_admin = lojaDB.Execute("SELECT * FROM admin")
%>
<tr width=100%><td width=100%><table border=1 width=100%>
<tr width=100%><th width=5%>Id</th><th>Usuário</th><th>Excluir</th></tr>
<%
malha1 = "sim"
temp1 = 0
While not lista_admin.EOF
%>
<tr width=100% class=<%=malha1%>><td align=center width=1%><%=lista_admin("id")%></td><td><%=lista_admin("usuario")%></td>
<td align=center><a href="./exclui_admin.asp?acao=exclui&id=<%=lista_admin("id")%>">Excluir</a></td>
<%
temp1 = temp1 + 1
lista_admin.MoveNext
If malha1 = "sim" Then malha1 = "não" Else malha1 = "sim" End If
Wend
%>
</table>
<tr width=100%><td>Total de Usuários: <%=temp1%></td></tr>
<%
%>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode estar havendo repetição na execução da SQL de exclusão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso aqui está passando?

If malha1 = "sim" Then malha1 = "não" Else malha1 = "sim" End If

o correto para meu ver é assim:

If malha1 = "sim" Then : malha1 = "não" : Else : malha1 = "sim" : End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola pessoas,

 

Ted K, tentei como voce reformulou e continua dando o mesmo erro...

 

Salgado, e o que eu teria que mudar para funcionar...

 

Obrigado e abraco.

Ps. espero uma solucao por favor....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei! aqui:

Else
set lista_admin = lojaDB.Execute("SELECT usuario FROM admin WHERE id=" & Request.QueryString("id"))
lojaDB.Execute("DELETE FROM admin WHERE id=" & Request.QueryString("id"))
%>
<tr width=100%><td width=100%><font color=red>Administrador <b><%=lista_admin("usuario")%></b> removido com sucesso.</font></tr>
<%
End If

Você não pode fazer a seleção e logo a seguir excluir o usuário pois o RecordSet criado dessa forma é atualizavel, caso se exclua algo posterior ele "marca" essa exclusão e não exibe mais o dado.

 

Você pode selecionar, armazenar esse valor numa variável, fechar o RecordSet e depois excluir.

 

Dica de segurança: pesquise por SQLInjection pois seu sistema está vulnerável.

Dica de performance: é possível fazer seu código mais enxuto e com maior performance. Para contar os Admins você pode fazer uma SQL com a função COUNT, o que eliminaria o 1º laço WHILE e já te daria uma resposta imediata.

 

Qualquer duvida é só postar novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa pessoal!!!

beleza amigo, absorvi a informação, mas teria como arrumar esta código para ele funcionar assim mesmo pois esta página vai mudar em breve, agora meu cliente tem uma loja virtual de mostruário de produtos somente então em breve acredito que vai trocar por uma loja virtual completa. Valeu mesmo pela força

Ps. Se tiver uma solução agradeço muito pois tentei de tudo ao ler suas anotações e nada deu certo...

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Else
ID_Admin = Replace(Request("id"),"'","''")
set lista_admin = lojaDB.Execute("SELECT usuario FROM admin WHERE id="& ID_Admin &";")
If Not lista_admin.EOF Then
	Lista_Admin_Usuario = lista_admin("usuario")
	lojaDB.Execute("DELETE FROM admin WHERE id="& ID_Admin &";")
	If Err.Number = 0 Then
%><tr width=100%><td width=100%><font color=red>Administrador <b><%=Lista_Admin_Usuario%></b> removido com sucesso.</font></tr><%		Else
%><tr width=100%><td width=100%><font color=red><b>Houve um problema na execução dessa ação, volte e verifique se a ação foi concluida com sucesso.</b></font></tr><%
	End If
Else
%><tr width=100%><td width=100%><font color=red><b>Houve um problema na execução dessa ação, aparentemente o Administrador já foi excluido anteriormente. Volte e verifique se a ação foi concluida com sucesso.</b></font></tr><%
End If
lista_admin.Close
Set lista_admin = Nothing
End If

Veja se substituindo o trecho que passei anteriormente por esse esta funcionando corretamente.

Montei de cabeça e pode ser que algo não funcione a contento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo...

Foi quase eu acredito...

Apareceu o seguinte erro:

 

Microsoft VBScript runtime (0x800A01F4)

Variable is undefined: 'ID_Admin'

/Projetos/Projetos em Aberto/Projeto Lojas Adri/Projeto Lojas Adri/admin/exclui_admin.inc, line 17

 

Obrigado pela paciencia e ajuda.

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você usa a definição obrigatória de variáveis em seu script. Assim que entrar naquele ELSE que trocamos faça um DIM ID_Admin, Lista_Admin_Usuario e teste novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Salgado,

 

Cara funcionou beleza, não dá mais página de erro alguma. Em compensação agora quando cadastro qualquer usuário mesmo um que nunca esteve cadastrado ele me diz o seguinte:

 

Esse nome de usuário já está em uso.

Por favor, digite um outro nome.

 

Vou postar o código do cad_admin pra você dar uma olhada pode ser algo bem simples que eu não to me fragando.

 

<table border=0 width=100%>
<%
Dim lista_admin,exibeform,acao
acao = Request.QueryString("acao")
If acao = "incluir" Then
	If Not (IsEmpty(Request.Form("senha"))) Then
		If Request.Form("senha") <> Request.Form("confsenha") Then
			%>
			<tr width=100%><td width=100%><font color=red>Senhas não conferem.</font></tr>
			<tr width=100%><td width=100%>Por favor, digite-as novamente.</tr>
			<%
			acao = "erro"
		End If
	End If
End If
If acao = "incluir" Then
	If IsEmpty(Request.Form("usuario")) OR Request.Form("usuario") = "" OR Request.Form("senha") = "" Then
		%>
		<tr width=100%><td width=100%><font color=red>O nome e senha do usuário não podem estar vazios.</font></tr>
		<%
		acao = "erro"
	End If
End If
If acao = "incluir" Then
	set lista_admin = lojaDB.Execute("SELECT * FROM admin WHERE usuario='" & Request.Form("usuario") & "'")
	If Not lista_admin.EOF Then
		%>
		<tr width=100%><td width=100%><font color=red>Esse nome de usuário já está em uso.</font></tr>
		<tr width=100%><td width=100%>Por favor, digite um outro nome.</tr>
		<%
		acao = "erro"
	End If
End If
If acao = "incluir" Then
	 	lojaDB.Execute("INSERT INTO admin(usuario,senha) VALUES ('" & Request.Form("usuario") & "','" & Request.Form("senha") & "')")
	%>
	<tr width=100%><td width=100%><font color=red>Novo administrador cadastrado com sucesso.</font></tr>
	<%
	exibeform = "nao"
End If
If Not (exibeform = "nao") Then
	%>
	<tr width=100%><td width=100%><h2>Cadastro de novos administradores</h2></td></tr>
	<tr width=100%><td width=100%> </td></tr>
	<tr width=100%><td width=100%>
		<form action="./cad_admin.asp?acao=incluir" method=post>
		<table border=1>
			<tr>
				<td>Usuário : </td>
				<td><input type=text maxlength=12 size=12 name=usuario></td>
			</tr><tr>
				<td>Nova Senha : </td>
				<td><input type=password maxlength=8 size=8 name=senha></td>
			</tr><tr>
				<td>Redigite a senha : </tr>
				<td><input type=password maxlength=8 size=8 name=confsenha></td>
			</tr><tr>
				<td align=right colspan=2><input type=submit value="Cadastrar" onclick="submit();this.value='Aguarde!'"></td>
			</tr>
		</table>
		</form> 
	</td></tr>
<% End If %>
</table>
Muito obrigado,

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem dois

 

If acao = "incluir" Then

É pra ser assim mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, boa noite,

 

Na verdade são 4 If acao = "incluir" Then:

 

1 para conferencia de senha

2 para verificar se o campo está vazio

3 para verificar se o nome está em uso

4 para incluir novo usuário

 

Acredito estar tudo certo sim pois se não apareceria algum erro de duplicação de comando. Com a ajuda do Salgado consegui arrumar o código e agora funciona tudo certo só tive que trocar algumas coisas na página de registro de usuário.

Graças a Deus tudo está normal.

 

Mesmo assim valeu pela ajuda e toda é mto bem vinda.

Abraço.

 

Pessoal Podem fechar o tópico!!!

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.