Guest TSRDesign Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 <_< 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 6Tipo de navegador: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) Página: POST 29 bytes to /teste/mensagens/act_apaga.aspPOST Data:button2=Excluir&cod=42&cod=43 Se alguém souber onde tah o erro, posta é. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Spilki Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest TSRDesign Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 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 SpilkiVem de um formulario.Eu pego a variavel <% =objlista ("cod") %>Eu to utilizando CheckBox com o nome = cod Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jow Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 (editado) 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 Novembro 7, 2008 por jow Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Spilki Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 É exatamente assim como o jow explicou... esse exemplo tem aqui no fórum disponível pra download inclusive... Ali na seção de códigos livres... Adapte as suas necessidades![]'s Rafael Spilki Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 TSRDesign Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 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 certoele aparece uma tela em branco, e quando abro o BD os dados ainda estavam lá :D Valeu pela ajuda. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jow Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 Ok ... então vamos lá ...Posta como está agora o seu formulário e o seu script em asp ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 TSRDesign Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 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 ife ficou assimteste.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 %> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jow Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 ok .. altere essa linhasql_id = sql_id & "papeis.id = " & Trim(array_id(i)) & " OR " por sql_id = sql_id & "mens.id = " & Trim(array_id(i)) & " OR "na página de excluire posta o resultado ... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 TSRDesign Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 ok .. altere essa linhasql_id = sql_id & "papeis.id = " & Trim(array_id(i)) & " OR " por sql_id = sql_id & "mens.id = " & Trim(array_id(i)) & " OR "na página de excluire posta o resultado ... :( Nada aindaContinua sem apagar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jow Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 (editado) 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 Novembro 7, 2008 por jow Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 TSRDesign Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 sua conexão tá ok ???Taheu to testando atravez do localhostno arquido teste.asp ele carrega todos os dados certos, envia as variaveis, mas na hora de excuir, nada.Postei na netArquivo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jow Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 TSRDesign Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 (editado) 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 - > corretoNada ainda então eu compactei tudo e coloquei nesse link:Arquivos.rarValeu pela ajuda Editado Novembro 7, 2008 por TSRDesign Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jow Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 o bd também tá aki né ?? vou ver testar e já te posto o resultado ... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jow Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 Só alterar aki ...sql_id = sql_id & "mens.id = " & Trim(array_id(i)) & " OR " para sql_id = sql_id & "mens.cod = " & Trim(array_id(i)) & " OR "olha o teste q eu fiz ::: http://www.thatto.com.br/thatto/script/teste.asp Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 TSRDesign Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 (editado) Valeu mesmo jow.Obrigrado pela sua atenção Editado Novembro 7, 2008 por TSRDesign Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jow Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 Opá bacana fera ahauhuahau .... abraçosss :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
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:
: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
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.