Ir para conteúdo

Arquivado

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

leocrj

Deletar múltiplos registros

Recommended Posts

Olá, alguém poderia me dar uma dica ou o código pronto de como deletar múltiplos registros usando checkboxes.Obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz assim:

Faça as checkboxes como esnte exemplo:

 

<input type="checkbox" name="ID" value="<%=rs("id")%>">

 

onde o value="<%=rs("id")%>" contém o número ID a ser deletado, caso selecionado.

 

Quando enviar:

 

For each record in request("ID")

con.execute"DELETE * FROM tabela WHERE id = "&record&""

 

next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa isso:

 For each EachCodigo in Request("id")    DBCon.Execute("DELETE FROM Tabela WHERE Codigo=" & CStr(EachCodigo))  Next

no formulario você coloca todos os checkbox com o mesmo 'name' igual a 'id'

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque o "for" na pagina q irá ser enviado o formulario! <_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

como deletar multiplos registro tenho este select:

<%
VAR_STATUS=("DEV")
vSql = "SELECT * FROM TAB_QUADRO_BRASFELS WHERE STATUS='"&VAR_STATUS&"' ORDER BY CT,DESCRICAO ASC"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Devolução Brasfels</title>
<style type="text/css">
body {
background-image: url();
font-size: 11px;
font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
}
.Subtitulo {
font-family: Tahoma, Geneva, sans-serif;
font-size: 12px;
font-weight: bold;
text-align: center;
}
.conteudo {
font-family: "Lucida Console", Monaco, monospace;
font-size: 11px;
}
</style>
</head>
<body>
<table width="100%" height="533" border="0" align="center">
<tr>
<td><table width="100%" border="1">
<tr>
<td width="800" height="122" align="center" valign="middle" class="Subtitulo"><img src="imagens/LOGOBR.jpg" width="288" height="126" /><br /></td>
</tr>
<tr>
<td height="52" align="center"><table width="100%" border="0">
<tr>
<th width="64" height="59" scope="col"><a href="menu.html"><img src="imagens/home.gif" width="30" height="30" longdesc="Devolucao_bf.html" /></a></th>
<th width="865" align="center" scope="col"><p><span class="Subtitulo"> <br />
Devolução Brasfels</span></p></th><hr><p class="conteudo">
<th width="81" scope="col"><a href="Devolucao_bf.html"><img src="imagens/seta-voltar.gif" width="30" height="30" longdesc="Devolucao_bf.html" /></a></th>
<table width="99%" border="1" cellpadding="0" cellspacing="0"><hr>
<tr>
<th width="4%" scope="col">CT</th>
<th width="6%" scope="col">DESCRIÇÃO</th>
<th width="15%" scope="col">NOTA FISCAL</th>
<th width="18%" scope="col">VALOR UNITÁRIO</th>
<th width="18%" scope="col">DATA</th>
<th width="5%" scope="col">Alterar</th>
<th width="5%" scope="col">Excluir Item</th>
<th width="5%" scope="col">Excluir Selecionados</th>
</tr>
<%
do while not myRst.EOF
var_codigo = myRst.fields("codigo")
var_CT = myRst.fields("CT")
var_DESCRICAO = myrst.fields("DESCRICAO")
var_NFISCAL = myrst.fields("NFISCAL")
var_VUNITARIO = myrst.fields("VALOR_UNI")
var_DATA = myrst.fields("DATA")
%>
<tr>
<td width="4%" align="center" valign="middle"><%=var_CT%></td>
<td width="6%" align="center" valign="middle"><%=var_DESCRICAO%></td>
<td width="15%" align="center" valign="middle"><%=var_NFISCAL%></td>
<td width="18%" align="center" valign="middle"><%=var_VUNITARIO%></td>
<td width="18%" align="center" valign="middle"><%=var_DATA%></td>
<td width="5%" align="center" valign="middle"><a href="Devolucao_bf_form_alterar.asp?codigo=<%=var_codigo%>"><img src="imagens/user_male_edit.png" name="atualizar" width="32" height="32" id="atualizar" /></a></td>
<td width="5%" align="center" valign="middle"><a href="Devolucao_bf_excluir.asp?codigo=<%=var_codigo%>"><img src="imagens/delete.png" name="deletar" width="35" height="35" id="deletar" /></a></td>
<td width="5%" align="center" valign="middle"><form id="multidelete" name="multidelete" method="post" action=""><input type="checkbox" name="id" name="id" value="<%=var_codigo%>"></td>
<td width="0%" align="center" valign="middle"></td>
</tr>
<% myRst.MoveNext
loop
%>
</table>
</tr>
</table>
</tr>
</table>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

if qtd_produtos = "" then
Response.write("erro..."
response.redirect("outra_pagina.asp")
else
qtd_produtos = split(Request.Form("qtd_produtos"),",")
if qtd_produtos = ""
produtos= Split(Request.Form("produtos"), ",")

For i = 1 To Request.Form("produtos").Count

Response.write request.form("produtos")(i)&"<BR>" & request.form("qtd_produtos")(i)&"<BR>"
SQL = "DELETE * FROM tabela WHERE id = "&request.form("qtd_produtos")(i)&""

 

ou

 

10626469_777358445641287_236103250966137

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faço assim e funciona:

 

var = "delete from tabela where sequencia IN ("& seq &")"
db.Execute(var)

 

O comando IN, ele deleta todos os itens do checkbox de uma vez, sem precisar de nenhum comando complexo.

 

Abraços - Fábio!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faço assim e funciona:

 

var = "delete from tabela where sequencia IN ("& seq &")"

db.Execute(var)

 

O comando IN, ele deleta todos os itens do checkbox de uma vez, sem precisar de nenhum comando complexo.

 

Abraços - Fábio!

 

Fabio esse comando IN é novo pra mim, agora no caso da minha pagina nao sei se você deu uma olhada eu criei o checkbox e por estar com do while ele criou a cx de seleção em cada linha da pesquisa até ae é oke eu quero eu consigo marcar todos mas como vou chamar esse comando IN? isso é feito em uma pagina separada? se for como faço para dar um submiter a esta nova pagina asp com esse comando.

 

Desculpe sou leigo to aprendendo mt coisa agora com o grupo de qualquer maneira agradeço desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa como eu postei na imagem

Compartilhar este post


Link para o post
Compartilhar em outros sites

if qtd_produtos = "" then

Response.write("erro..."

response.redirect("outra_pagina.asp")

else

qtd_produtos = split(Request.Form("qtd_produtos"),",")

if qtd_produtos = ""

produtos= Split(Request.Form("produtos"), ",")

 

For i = 1 To Request.Form("produtos").Count

 

Response.write request.form("produtos")(i)&"<BR>" & request.form("qtd_produtos")(i)&"<BR>"

SQL = "DELETE * FROM tabela WHERE id = "&request.form("qtd_produtos")(i)&""

 

ou

 

10626469_777358445641287_236103250966137

Xanburzum obrigado por me ajudar sem querer pedir mt mas vc poderia me explicar melhor e se possível em cima da pagina que postei a cima? consigo compreender melhor com exemplos praticos. sou leigo ae ja viu da trabalho pra aprender

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Se você for usar o comando IN não precisa de usar ( split ), só funciona para o DELETE o comando IN. Ele pega os valores do campo referencial, exemplo: codigo. Digamos que você tenha selecionado 5 CheckBox, a variável codigo fica assim: 1,3,4,5,10. O comando IN irá excluir todas as linhas da tabela onde tiver esses valores no campo codigo.

Se você tiver usando ASP puro, o comando deve ser inserido numa página que recupera as variáveis de POST de formulário. Todas as páginas de código puro eu costumo colocar um x no final para facilitar a localização do arquivo enquanto estiver fazendo as telas, exemplo: deletex.asp
Depois que você faz a exclusão, você precisa retornar para alguma tela, ou pode dar o resultado na mesma tela!

Exemplo de retorno em telas diferentes:

 

seq = request.form("sequencia")

var = "delete from tabela where sequencia IN ("& seq &")"
db.Execute(var)

mensagem2 = "Dados(os) Excluídos(os) com Sucesso"
response.redirect "tela_principal.asp?msg=" & mensagem2

 

Esse exemplo é simples e funcional, caso queira usar os demais exemplos citados pelos colegas acima, fique a vontade.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

só altere o nome do campo checkbox (que esta como letra) e a instrução SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Se você for usar o comando IN não precisa de usar ( split ), só funciona para o DELETE o comando IN. Ele pega os valores do campo referencial, exemplo: codigo. Digamos que você tenha selecionado 5 CheckBox, a variável codigo fica assim: 1,3,4,5,10. O comando IN irá excluir todas as linhas da tabela onde tiver esses valores no campo codigo.

 

Se você tiver usando ASP puro, o comando deve ser inserido numa página que recupera as variáveis de POST de formulário. Todas as páginas de código puro eu costumo colocar um x no final para facilitar a localização do arquivo enquanto estiver fazendo as telas, exemplo: deletex.asp

Depois que você faz a exclusão, você precisa retornar para alguma tela, ou pode dar o resultado na mesma tela!

 

Exemplo de retorno em telas diferentes:

 

seq = request.form("sequencia")

var = "delete from tabela where sequencia IN ("& seq &")"

db.Execute(var)

mensagem2 = "Dados(os) Excluídos(os) com Sucesso"

response.redirect "tela_principal.asp?msg=" & mensagem2

 

Esse exemplo é simples e funcional, caso queira usar os demais exemplos citados pelos colegas acima, fique a vontade.

 

Abraços!

 

 

Fabio em cima do seu raciocínio ve se esta certo o codigo abaixo:

<%
do while not myRst.EOF
var_codigo = myRst.fields("codigo")
var_CT = myRst.fields("CT")
var_DESCRICAO = myrst.fields("DESCRICAO")
var_NFISCAL = myrst.fields("NFISCAL")
var_VUNITARIO = myrst.fields("VALOR_UNI")
var_DATA = myrst.fields("DATA")
%>
<tr>
<td width="4%" align="center" valign="middle"><%=var_CT%></td>
<td width="6%" align="center" valign="middle"><%=var_DESCRICAO%></td>
<td width="15%" align="center" valign="middle"><%=var_NFISCAL%></td>
<td width="18%" align="center" valign="middle"><%=var_VUNITARIO%></td>
<td width="18%" align="center" valign="middle"><%=var_DATA%></td>
<td width="5%" align="center" valign="middle"><a href="Devolucao_bf_form_alterar.asp?codigo=<%=var_codigo%>"><img src="imagens/user_male_edit.png" name="atualizar" width="32" height="32" id="atualizar" /></a></td>
<td width="5%" align="center" valign="middle"><a href="Devolucao_bf_excluir.asp?codigo=<%=var_codigo%>"><img src="imagens/delete.png" name="deletar" width="35" height="35" id="deletar" /></a></td>
<td width="5%" align="center" valign="middle"><form id="multidelete" name="multidelete" method="post" action="multideletex.asp"><input type="checkbox" id="seq" name="seq" value="<%=var_codigo%>"></td>
<td width="0%" align="center" valign="middle"></td>
</tr>
<% myRst.MoveNext
loop
%>

ja na magina multideletex.asp

criei o seguinte codigo:

 

<%

vSql = "DELETE * FROM TAB_QUADRO_BRASFELS WHERE sequencia IN ("&seq&")"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3

%>

 

Tá certo o raciocinio?

Compartilhar este post


Link para o post
Compartilhar em outros sites

executando as alterações qual o resultado ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

recebi a seguinte msg de erro!
Microsoft JET Database Engine erro '80040e14'

Erro de sintaxe (operador faltando) na expressão de consulta 'codigo IN ()'.


mas tenho uma duvida o value recebendo do banco de dados o codigo do item que selecionei fica do lado do form ou do lado do checkbox?

veja o codigo:

<form id="sequencia" name="sequencia" method="post" action="multideletex.asp" "><input type="checkbox" value="<%=var_codigo%>"/></form></td>

na minha pagina multideletx.asp ta assim:

<!-- #include file="conn.asp" -->
<%
Var_seq = request.form("sequencia")
if var_seq = "" then
vSql = "DELETE * FROM TAB_QUADRO_BRASFELS WHERE codigo IN ("&Var_seq&")"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
else
response.write("erro")
end if
%>
Logo se estou recebendo o erro de codigo IN a variavel Var_seq nao ta recebendo campo nenhum do formulario sequencia. pow ajudem ae onde estou errando???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi. Tente isso:

 

Oi, não coloque o POST do formulário dentro de Loop, exemplo:

 

<form method="POST" action="multideletex.asp">

 

 

</table>

<%
while not myRst.EOF
var_codigo = myRst.fields("codigo")
var_CT = myRst.fields("CT")
var_DESCRICAO = myrst.fields("DESCRICAO")
var_NFISCAL = myrst.fields("NFISCAL")
var_VUNITARIO = myrst.fields("VALOR_UNI")
var_DATA = myrst.fields("DATA")
%>
<tr>
<td width="4%" align="center" valign="middle"><%=var_CT%></td>
<td width="6%" align="center" valign="middle"><%=var_DESCRICAO%></td>
<td width="15%" align="center" valign="middle"><%=var_NFISCAL%></td>
<td width="18%" align="center" valign="middle"><%=var_VUNITARIO%></td>
<td width="18%" align="center" valign="middle"><%=var_DATA%></td>
<td width="5%" align="center" valign="middle"><a href="Devolucao_bf_form_alterar.asp?codigo=<%=var_codigo%>"><img src="imagens/user_male_edit.png" name="atualizar" width="32" height="32" id="atualizar" /></a></td>
<td width="5%" align="center" valign="middle"><a href="Devolucao_bf_excluir.asp?codigo=<%=var_codigo%>"><img src="imagens/delete.png" name="deletar" width="35" height="35" id="deletar" /></a></td>
<td width="5%" align="center" valign="middle">
<input type="checkbox" id="seq" name="seq" value="<%=var_codigo%>"></td>
<td width="0%" align="center" valign="middle"></td>
</tr>
<% myRst.MoveNext
wend
%>

 

</table>

 

</form>

 

 

Outra coisa, para deletar não precisa setar variável, apenas isto basta.

 

<%

var03 = "delete * FROM TAB_QUADRO_BRASFELS WHERE sequencia IN ("&seq&")"
db.Execute(var03)

%>

 

 

Eu abro Banco de Dados para uso sem paginação assim:

 

<%

'Conectando ao Banco de Dados
set db = Server.CreateObject("ADODB.Connection")
'db.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=link.do.servidor;UID=usuario;pwd=senha;DATABASE=nome_banco_dados"
db.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=link.do.servidor;UID=usuario;pwd=senha;DATABASE=nome_banco_dados"
db.open
' Fim Conectando ao Banco de Dados
%>

 

 

No Caso o Select ficaria assim:

 

%

VAR_STATUS=("DEV")
vSql = "SELECT * FROM TAB_QUADRO_BRASFELS WHERE STATUS='"&VAR_STATUS&"' ORDER BY CT,DESCRICAO ASC"

Set myRst.fields = db.Execute(vSql)

%>
Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Oi. Tente isso:

 

Oi, não coloque o POST do formulário dentro de Loop, exemplo:

 

<form method="POST" action="multideletex.asp">

 

 

</table>

<%
while not myRst.EOF
var_codigo = myRst.fields("codigo")
var_CT = myRst.fields("CT")
var_DESCRICAO = myrst.fields("DESCRICAO")
var_NFISCAL = myrst.fields("NFISCAL")
var_VUNITARIO = myrst.fields("VALOR_UNI")
var_DATA = myrst.fields("DATA")
%>
<tr>
<td width="4%" align="center" valign="middle"><%=var_CT%></td>
<td width="6%" align="center" valign="middle"><%=var_DESCRICAO%></td>
<td width="15%" align="center" valign="middle"><%=var_NFISCAL%></td>
<td width="18%" align="center" valign="middle"><%=var_VUNITARIO%></td>
<td width="18%" align="center" valign="middle"><%=var_DATA%></td>
<td width="5%" align="center" valign="middle"><a href="Devolucao_bf_form_alterar.asp?codigo=<%=var_codigo%>"><img src="imagens/user_male_edit.png" name="atualizar" width="32" height="32" id="atualizar" /></a></td>
<td width="5%" align="center" valign="middle"><a href="Devolucao_bf_excluir.asp?codigo=<%=var_codigo%>"><img src="imagens/delete.png" name="deletar" width="35" height="35" id="deletar" /></a></td>
<td width="5%" align="center" valign="middle">
<input type="checkbox" id="seq" name="seq" value="<%=var_codigo%>"></td>
<td width="0%" align="center" valign="middle"></td>
</tr>
<% myRst.MoveNext
wend
%>

 

</table>

 

</form>

 

 

Outra coisa, para deletar não precisa setar variável, apenas isto basta.

 

<%

var03 = "delete * FROM TAB_QUADRO_BRASFELS WHERE sequencia IN ("&seq&")"

db.Execute(var03)

%>

 

 

Eu abro Banco de Dados para uso sem paginação assim:

 

<%

'Conectando ao Banco de Dados

set db = Server.CreateObject("ADODB.Connection")

'db.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=link.do.servidor;UID=usuario;pwd=senha;DATABASE=nome_banco_dados"

db.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=link.do.servidor;UID=usuario;pwd=senha;DATABASE=nome_banco_dados"

db.open

' Fim Conectando ao Banco de Dados

%>

 

 

No Caso o Select ficaria assim:

 

%

VAR_STATUS=("DEV")
vSql = "SELECT * FROM TAB_QUADRO_BRASFELS WHERE STATUS='"&VAR_STATUS&"' ORDER BY CT,DESCRICAO ASC"

Set myRst.fields = db.Execute(vSql)

%>
Abraços!

 

indo por partes Fabio fiz oque me pediu tirei o post de dentro do loop: na pagina multidelex.asp

com o codigo que vc passou me retorna o seguinte erro:

Erro de tempo de execução do Microsoft VBScript erro '800a01a8'

Objeto necessário: 'db'

Ae fiz o codigo como costumo fazer:

 

var03 = "delete * FROM TAB_QUADRO_BRASFELS WHERE sequencia IN ("&seq&")"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
retornou o seguinte erro:

ADODB.Recordset erro '800a0bb9'

Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.

 

Imaginei que seria por nao ter a coluna sequencia no meu banco de dados e como quero deletar a partir do codigo alterei o comando:

var03 = "delete * FROM TAB_QUADRO_BRASFELS WHERE codigo IN ("&seq&")"

Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
Manteve o erro:

ADODB.Recordset erro '800a0bb9'

Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.

Meu banco esta em access e o campo codigo esta como numeração automatica isso influencia em algo?

outra duvida que tenho na minha pagina tirei o form de dentro do loop mas coloquei um form com o botao chamando a pagina multideletex.asp, para ficar um botao só ta certo? ou tenho que mudar algo aqui tbm?

<th width="5%" align="center" valign="middle" scope="col"><form id="multidelete" name="multidelete" method="post" action="multideletex.asp">Selecionados<input type="submit" name="enviar" id="enviar" value="enviar"/></form></th>

Quero agradecer a paciencia que vem tendo e a ajuda quem vem me dando.Obrigado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi.

 

A sim, se vc usa Access é diferente a conexão.

 

<%

'Conectando ao banco de dados
set db = server.createobject("adodb.connection")
db.Open "DBQ=" & Server.MapPath("/pasta/nome_banco.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"

%>

 

Esse Erro do DB é por que a variável está com nome diferente né.

Erro de tempo de execução do Microsoft VBScript erro '800a01a8'

Objeto necessário: 'db'

Sobre o botão, ele deve estar fora do loop. Você vai fazer o loop apenas dos campos a selecionados e excluídos!

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fábio a pagina asp:

 

<th width="5%" align="center" valign="middle" scope="col"><form id="multidelete" name="multidelete" method="post" action="multideletex.asp" >Selecionados<input type="submit" name="enviar" id="enviar" value="enviar" /></form></th>
</tr>
<%
do while not myRst.EOF
var_codigo = myRst.fields("codigo")
var_CT = myRst.fields("CT")
var_DESCRICAO = myrst.fields("DESCRICAO")
var_NFISCAL = myrst.fields("NFISCAL")
var_VUNITARIO = myrst.fields("VALOR_UNI")
var_DATA = myrst.fields("DATA")
%>
<tr>
<td width="4%" align="center" valign="middle"><%=var_CT%></td>
<td width="6%" align="center" valign="middle"><%=var_DESCRICAO%></td>
<td width="15%" align="center" valign="middle"><%=var_NFISCAL%></td>
<td width="18%" align="center" valign="middle"><%=var_VUNITARIO%></td>
<td width="18%" align="center" valign="middle"><%=var_DATA%></td>
<td width="5%" align="center" valign="middle"><a href="Devolucao_bf_form_alterar.asp?codigo=<%=var_codigo%>"><img src="imagens/user_male_edit.png" name="atualizar" width="32" height="32" id="atualizar" /></a></td>
<td width="5%" align="center" valign="middle"><a href="Devolucao_bf_excluir.asp?codigo=<%=var_codigo%>"><img src="imagens/delete.png" name="deletar" width="35" height="35" id="deletar" /></a></td>
<td width="5%" align="center" valign="middle"><input type="checkbox" id="seq" name="seq" value="<%=var_codigo%>"></td>
<td width="0%" align="center" valign="middle"></td>
</tr>
<% myRst.MoveNext
loop
%>
a pagina multideletex.asp:
<!-- #include file="conn.asp" -->
<%
var03 = "delete * FROM TAB_QUADRO_BRASFELS WHERE codigo IN ("&seq&")"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
%>
e segue o mesmo erro!
o meu arquivo conn.asp faz a conexão direta acho ke o problema nao seja na conexao pq na propria pagina onde lista e carrega o loop ta usando essa conexao.

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.