Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Apagar varios dasos de um BD em asp


Guest TSRDesign

Pergunta

Guest TSRDesign

<_< Ola, gostaria de saber se alguém pode me informar uma maneira de apagar varios dados de um banco de dados em asp.

Pois quando eu envio apenas uma variavel ele apaga, mas varias ele dá erro.

Esse é meu codigo do que estou usando:

<%
cod=request("cod")
set conexao=server.createobject("ADODB.Connection")
    conexao.open "DBQ= "&server.MapPath("mens.mdb")&"; Driver={microsoft access driver (*.mdb)};"
set objlista=server.createobject("ADODB.recordset")
objlista.open "delete from mens where cod="&cod&"",conexao

%>
<style type="text/css">
<!--
.style1 {
    color: #FFFFFF;
    font-weight: bold;
    font-family: Arial, Helvetica, sans-serif;
}
body,td,th {
    color: #FFFFFF;
}
body {
    background-color: #000000;
    background-image: url(fundo.jpg);
}
a:link {
    color: #FFFFFF;
}
a:visited {
    color: #FFFFFF;
}
a:hover {
    color: #FFFFFF;
}
a:active {
    color: #FFFFFF;
}
-->
</style>
<body>
<p align="center"> </p>
<p align="center"> </p>
<p align="center"> </p>
<p align="center"> </p>
<p align="center"> </p>
<p align="center"><span class="style1">Dados apagados com sucesso</span></p>
<p align="center"><a href="mens.asp"><strong>Voltar</strong></a></p>
<p>
  
</p>

:angry: pois da esse erro:

Informações técnicas (para a equipe de suporte)

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (vírgula) na expressão de consulta 'cod=42, 43'.

/teste/mensagens/act_apaga.asp, line 6

Tipo de navegador:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)

Página:

POST 29 bytes to /teste/mensagens/act_apaga.asp

POST Data:

button2=Excluir&cod=42&cod=43

Se alguém souber onde tah o erro, posta é.

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0
Guest TSRDesign
Esses dados que você quer excluir vem de uma consulta previa? Como você faz a seleção dos dados que deseja apagar? Qual o critério usado?

[]'s Rafael Spilki

Vem de um formulario.

Eu pego a variavel <% =objlista ("cod") %>

Eu to utilizando CheckBox com o nome = cod

Link para o comentário
Compartilhar em outros sites

  • 0

Apenas um exempo, pra você testar ...

<form action="excluir.asp" method="GET">

<% set conexao=server.createobject("ADODB.Connection")
    conexao.open "DBQ= "&server.MapPath("mens.mdb")&"; Driver={microsoft access driver (*.mdb)};"
set objlista=server.createobject("ADODB.recordset")

sql = "SELECT * FROM tabela "
Set rs = conexao.execute(sql)%>
<table width="100%" border="0" cellpadding="0" cellspacing="6">
<tr>
<td width="29%" height="20"><center><input name="Submit" type="submit" class="formulario" value="Excluir"></center></td>
</tr>
     <%while not tab.eof%>
    <tr>
<td height="20"><div align="center"><input name="checkbox" type="checkbox" value="<%=rs("cod")%"></div></td>
</tr>
<% tab.movenext
    wend%></table>
    </form>
excluir.asp 'Aki faço um pequeno array e um tratamento com o split todos os campos selecionados "checkbox"
<%

Dim conexao, sql, array_id, i, sql_id, id,strDBPath, objlista

set conexao=server.createobject("ADODB.Connection")
    conexao.open "DBQ= "&server.MapPath("mens.mdb")&"; Driver={microsoft access driver (*.mdb)};"
set objlista=server.createobject("ADODB.recordset")

id = Request.QueryString("checkbox")
'Caso ocorra algum erro os precessos não são interrompidos 
'e é passado para a próxima linha de comando
On error Resume Next 
        if err = 0 and id <> "" then
            array_id = split(id,",")
            For i=0 to ubound(array_id)
                sql_id = sql_id & "papeis.id = " & Trim(array_id(i)) & " OR "
                                                         'campo texto, então" & Trim(array_id(i)) & " OR "
                                                         'caso numerico '" & Trim(array_id(i)) & "' OR "
            Next
            sql_id = left(sql_id,(len(sql_id)-4))
            sql = "DELETE FROM tabela WHERE "&sql_id&""
            
                        Set rs= conexao.execute(sql)
            
                      
%>

Atere aki <%=rs("cod")%> por <%=objlista("cod")%">

lá no value fdo seu form

<input name="checkbox" type="checkbox" value="<%=objlista("cod")%">

Editado por jow
Link para o comentário
Compartilhar em outros sites

  • 0
Apenas um exempo, pra você testar ...

<form action="excluir.asp" method="GET">

<% set conexao=server.createobject("ADODB.Connection")
    conexao.open "DBQ= "&server.MapPath("mens.mdb")&"; Driver={microsoft access driver (*.mdb)};"
set objlista=server.createobject("ADODB.recordset")

sql = "SELECT * FROM tabela "
Set rs = conexao.execute(sql)%>
<table width="100%" border="0" cellpadding="0" cellspacing="6">
<tr>
<td width="29%" height="20"><center><input name="Submit" type="submit" class="formulario" value="Excluir"></center></td>
</tr>
     <%while not tab.eof%>
    <tr>
<td height="20"><div align="center"><input name="checkbox" type="checkbox" value="<%=rs("cod")%"></div></td>
</tr>
<% tab.movenext
    wend%></table>
    </form>
excluir.asp 'Aki faço um pequeno array e um tratamento com o split todos os campos selecionados "checkbox"
<%

Dim conexao, sql, array_id, i, sql_id, id,strDBPath, objlista

set conexao=server.createobject("ADODB.Connection")
    conexao.open "DBQ= "&server.MapPath("mens.mdb")&"; Driver={microsoft access driver (*.mdb)};"
set objlista=server.createobject("ADODB.recordset")

id = Request.QueryString("checkbox")
'Caso ocorra algum erro os precessos não são interrompidos 
'e é passado para a próxima linha de comando
On error Resume Next 
        if err = 0 and id <> "" then
            array_id = split(id,",")
            For i=0 to ubound(array_id)
                sql_id = sql_id & "papeis.id = " & Trim(array_id(i)) & " OR "
                                                         'campo texto, então" & Trim(array_id(i)) & " OR "
                                                         'caso numerico '" & Trim(array_id(i)) & "' OR "
            Next
            sql_id = left(sql_id,(len(sql_id)-4))
            sql = "DELETE FROM tabela WHERE "&sql_id&""
            
                        Set rs= conexao.execute(sql)
            
                      
%>

Atere aki <%=rs("cod")%> por <%=objlista("cod")%">

lá no value fdo seu form

<input name="checkbox" type="checkbox" value="<%=objlista("cod")%">

Acabei de tenta mais não eu certo

ele aparece uma tela em branco, e quando abro o BD os dados ainda estavam lá

:D Valeu pela ajuda.

Link para o comentário
Compartilhar em outros sites

  • 0
Ok ... então vamos lá ...

Posta como está agora o seu formulário e o seu script em asp !

eu corrigi alguns erros pois estava faltando end if

e ficou assim

teste.asp

<form action="excluir.asp" method="GET">

<% set conexao=Server.CreateObject("ADODB.Connection")
    conexao.open "DBQ= "&server.MapPath("mens.mdb")&"; Driver={microsoft access driver (*.mdb)};"
set objlista=Server.CreateObject("ADODB.recordset")
    objlista.open "select * from mens order by cod ASC", conexao
if not objlista.eof then %>
<table width="100%" border="0" cellpadding="0" cellspacing="6">
<tr>
<td width="29%" height="20"><center><input name="Submit" type="submit" class="formulario" value="Excluir"></center></td>
</tr>
     <% while not objlista.eof %>
    <tr>
<td height="20"><div align="center"><input name="checkbox" type="checkbox" value="<%= objlista("cod")%>"></div></td>
</tr>
<% objlista.movenext
    wend 
    end if%></table>
    </form>
excluir.asp
<%

Dim conexao, sql, array_id, i, sql_id, id,strDBPath, objlista

set conexao=server.createobject("ADODB.Connection")
    conexao.open "DBQ= "&server.MapPath("mens.mdb")&"; Driver={microsoft access driver (*.mdb)};"
set objlista=server.createobject("ADODB.recordset")

id = Request.QueryString("checkbox")
'Caso ocorra algum erro os precessos não são interrompidos 
'e é passado para a próxima linha de comando
On error Resume Next 
        if err = 0 and id <> "" then
            array_id = split(id,",")
            For i=0 to ubound(array_id)
                sql_id = sql_id & "papeis.id = " & Trim(array_id(i)) & " OR "
                                                         'campo texto, então" & Trim(array_id(i)) & " OR "
                                                         'caso numerico '" & Trim(array_id(i)) & "' OR "
            Next
            sql_id = left(sql_id,(len(sql_id)-4))
            sql = "DELETE FROM mens WHERE "&sql_id&""
            
                        Set rs= conexao.execute(sql)
                        
    end if
                        
                                
%>

Link para o comentário
Compartilhar em outros sites

  • 0

sua conexão tá ok ???

aki tá assim

sql = "DELETE FROM mens WHERE "&sql_id&""
            
                        Set rs= conexao.execute(sql)
ou
objlista.open "DELETE FROM mens WHERE "&sql_id&"", conexao

-> o correto é asim

Editado por jow
Link para o comentário
Compartilhar em outros sites

  • 0

altera aki ...

sql = "DELETE FROM mens WHERE "&sql_id&""
            
                        Set rs= conexao.execute(sql)
ou
set conexao=Server.CreateObject("ADODB.Connection")
    conexao.open "DBQ= "&server.MapPath("mens.mdb")&"; Driver={microsoft access driver (*.mdb)};"
set objlista=Server.CreateObject("ADODB.recordset")
    objlista.open "DELETE FROM mens WHERE "&sql_id&"", conexao

- > correto

Link para o comentário
Compartilhar em outros sites

  • 0
altera aki ...

sql = "DELETE FROM mens WHERE "&sql_id&""
            
                        Set rs= conexao.execute(sql)
ou
set conexao=Server.CreateObject("ADODB.Connection")
    conexao.open "DBQ= "&server.MapPath("mens.mdb")&"; Driver={microsoft access driver (*.mdb)};"
set objlista=Server.CreateObject("ADODB.recordset")
    objlista.open "DELETE FROM mens WHERE "&sql_id&"", conexao

- > correto

Nada ainda então eu compactei tudo e coloquei nesse link:

Arquivos.rar

Valeu pela ajuda

Editado por TSRDesign
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...