• 0
Sign in to follow this  
py2tz

Inserir Caixa para deletar registros

Question

Tenho alguns BDs com insersão de dados, porem tenho sido visitado por pessoas com IPs da Inglaterra, e vários outros paises, gostaria de modificar a parte do admin para que eu pudesse ter akelas caixas iguais as dos email onde clicamos todas as que queremos deletar de uma só vez, pois são milhares delas.

O sistema esta apto a deletar uma a uma e isso enche o saco.

alguém poderia me ajudar?

O Link que apaga o registro é:

<A HREF="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>" target=_blank>DELETE</A>

E a pagina DELETING é

<%

if(Request.QueryString("id") <> "") then spDeleteLinks__id = Request.QueryString("id")

%>

<%

set spDeleteLinks = Server.CreateObject("ADODB.Command")

spDeleteLinks.ActiveConnection = MM_connDUdirectory_STRING

spDeleteLinks.CommandText = "DELETE FROM LINKS WHERE LINK_ID = " + Replace(spDeleteLinks__id, "'", "''") + ""

spDeleteLinks.CommandType = 1

spDeleteLinks.CommandTimeout = 0

spDeleteLinks.Prepared = true

spDeleteLinks.Execute()

%>

Inclusive deve ter jeito de inserir akela caixinha que marca todos de uma só vez

Obrigado por qualquer ajuda.

Fausto

Share this post


Link to post
Share on other sites

13 answers to this question

Recommended Posts

  • 0

py2tz,

O recurso que você implementou pode ficar basicamente o mesmo. Se eu entendi o que deseja, seria assim:

1) Mudar a instrução DELETE utilizando IN, por exemplo :

DELETE FROM LINKS WHERE LINK_ID IN (" + Replace(spDeleteLinks__id, "'", "''") + ")"

Isso permitirá que a instrução apague mais de um registro na tabela.

2) Na caixa que selecionará todas as outras, basta implementar uma função que altere o atributo "checked" das demais para "true" (marcando) ou "false" (demarcando) que será chamada no evento onclick da caixa. Dessa forma, quando postar vão todos os códigos que foram selecionados para formar a instrução SQL.

Qualquer dúvida, é só postar! Espero que te ajude

[]'s

Share this post


Link to post
Share on other sites
  • 0

Joia, Sabino

Bem eu alterei o deleting e acrescentei o IN, agora preciso mudar o link DELETE para um box, isso eu acho que deve ser individual né?

Seria isso:

<input type="box" value="true" name="B1">

Para cada linha do registro apareceria uma caixa para clicar ou não, certo? mas não é tipo RADIO conforme abaixo

<input type="radio" value="1" name="resposta" style="border: 1 solid #E8CFA3; font-size: 10px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;">

Se puder colocar um exemplo das caixas que teria de adicionar no codigo de onde ficam os milhares de registros a serem apagados. Obrigado pela força.

Edited by py2tz

Share this post


Link to post
Share on other sites
  • 0

Para substituir o

<A HREF="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">DELETE</A>

Seria este codigo?

<input type="checkbox" name="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">

Ai teria que usar um comando geral para apagar todos os que estiverem clicados, seria esse?

<input type="submit" value="Delete" name="B1">

Desculpe a ignorancia

Fausto

Share this post


Link to post
Share on other sites
  • 0
<%

Dim strAlert
Dim strLinks : strLinks = Request.Form("chkLink")

If Len(strLinks) > 0 Then
    strAlert = "alert('Itens selecionados: " & strLinks & "');" 
End If
%>
<html>
    <head>
        &lt;script language="javascript" type="text/javascript">
            <%=strAlert%>
            
            function critica(obj)
            {
                for (var i = 0; i < obj.chkLink.length; i ++)
                {
                    if (obj.chkLink[i].checked)
                    {
                        return true;
                    }
                }
                alert("Selecione pelo menos um item para exclusão");
                return false;
            }
            
            function selecionarTodos(check)
            {
                var objChk = document.getElementsByName("chkLink")
                for (var i = 0; i < objChk.length; i ++)
                {
                    objChk[i].checked = check;
                }
            }
            
            function deletarLink(id)
            {
                selecionarTodos(false);
                document.getElementById("chk" + id).checked = true;
                document.frmDeletar.submit();
            }
        </script>
    </head>
    <body>
        <form id="frmDeletar" name="frmDeletar" action="deletar.asp" onsubmit="critica(this)" method="post">
            <table>
                <tr>
                    <td>
                        <input type="checkbox" id="chkSelecionarTodos" onclick="selecionarTodos(this.checked)"/>
                    </td>
                    <td>
                        Selecione os liks para exclusão
                    </td>
                </tr>
                <%
                Dim i : For i = 0 To 9
                %>
                <tr>
                    <td>
                        <input type="checkbox" value="<%=i%>" id="chk<%=i%>" name="chkLink"/>
                    </td>
                    <td>
                        <a href="java script:deletarLink(<%=i%>); void(0);">Link<%=i%></a>
                    </td>
                </tr>
                <%
                Next
                %>
                <tr>
                    <td colspan="2" align="right">
                        <input type="submit" value="Excluir" />
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>

Edited by sabino

Share this post


Link to post
Share on other sites
  • 0

Cara tenta esse código ... Funciona perfeitamente para o q você quer ...

<form action="pagina.asp" method="get">
 <%


sql = "Select * from projetos tabela "
set tab = cnn.execute(sql)

if not tab.eof then%>
<table width="100%">
          <tr> 
             <td>Registro para deletar</center></td>          
            <td><input name="Submit" type="submit" value="Excluir"></center></td>
          </tr>
<td>Registro para deletar</td>
              <td><input name="checkbox" type="checkbox" value="<%=tab("campo")%>"></td>
            </tr>
Pagina deletar
'Dim objConn, stringSQL, strConnection, array_campo, i, sql_campo, campo,strDBPath
campo = 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 campo <> "" then
            array_campo = split(campo,",")
            For i=0 to ubound(array_campo)
                sql_campo = sql_campo & "tabela.campo = " & Trim(array_campo(i)) & " OR "
                                                         'campo texto, então" & Trim(array_campo(i)) & " OR "
                                                         'caso numerico '" & Trim(array_campo(i)) & "' OR "
            Next
            sql_campo = left(sql_campo,(len(sql_campo)-4))
            sql = "DELETE FROM tabela WHERE "&sql_campo&""
            
                        set rs = cnn.execute(sql)
            
                      
%>
          Seus dados foram exclu&iacute;dos com sucesso!  
          
            <%else%>
            Ocorreu algum erro. Nenhum dado foi excluido.<br>
            <br>
            <a href="java script:history.back(-1)" >Voltar</a>
               <%End if%>

Share this post


Link to post
Share on other sites
  • 0

Foi mal, postei sem querer rsrs :-)

já alterei o post para o codigo correto, ele não faz nada, so posta os valores dos itens para exlusao ou qualquer coisa que a pessoa queira fazer, so um esquema do funcionamento.

[]'s!

Share this post


Link to post
Share on other sites
  • 0

Quase foi,

Tá dando esse erro:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'LINK_ID ='.

/projetos/admin/deleting.asp, line 16

Veja se fiz certo, na pagina que mostra os registros

<form action="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>" method="get">

<input name="Submit" type="submit" value="Excluir">

<input name="checkbox" type="checkbox" value="<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">

<td align="center"><font class="txt8"><A HREF="editing.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">EDIT</A></font></td>

</tr>

<%

Repeat1__index=Repeat1__index+1

Repeat1__numRows=Repeat1__numRows-1

rsApprove.MoveNext()

Wend

%>

</form>

Edited by py2tz

Share this post


Link to post
Share on other sites
  • 0

py2tz,

Repare no código que eu postei que existe um função associada ao evento onsubmit do form, justamente para dificultar a postagem se não tiver nenhum item selecionado, isso é importante para prevenir o erro na instrução sql.

Deve ser isso que está causando o problema>: não está validando se em pelo menos um item selecionado.

Outre coisa: a associação do evento onsubmit deve ser onsubmit="return ...". Esqueci o return, mas aqui no Firefox funcionou mesmo assim quando testei antes de postar.

[]'s!

Share this post


Link to post
Share on other sites
  • 0

Mas não vi nenhum onsubmit no codigo, muito menos return.

Me parece que ele não esta achando o tal de LINK_ID, isso la na segunda pagina onde processa a coisa:

<%

if(Request.QueryString("id") <> "") then spDeleteLinks__id = Request.QueryString("id")

%>

<%

set spDeleteLinks = Server.CreateObject("ADODB.Command")

spDeleteLinks.ActiveConnection = MM_connDUdirectory_STRING

spDeleteLinks.CommandText = "DELETE FROM LINKS WHERE LINK_ID = " + Replace(spDeleteLinks__id, "'", "''") + ""

spDeleteLinks.CommandType = 1

spDeleteLinks.CommandTimeout = 0

spDeleteLinks.Prepared = true

spDeleteLinks.Execute()

%>

Sabino se você não sabe, imagina eu, montei um site que ficou enorme, são milhares de paginas sem entender da coisa, mas vo tentando ajustar aki e ali, cheio de bugs mas tá rolando.

Se quizer te passo as duas paginas via email e te dou acesso ao site pra ver isso, é um site de radioamadorismo, é hobby.

Abraço e obrigado pela ajuda.

Fausto

Share this post


Link to post
Share on other sites
  • 0

O trecho de código que tem onsubmit é esse:

<form id="frmDeletar" name="frmDeletar" action="deletar.asp" onsubmit="critica(this)" method="post">

Ao invés de onsubmit="critica(this)" o certo é onsubmit="return critica(this)"

Esta postando vazio, por isso esta dando o erro. Se o request vier vazio, vai ficar

LINK_ID =

na query sem valor nenhum, ai da erro mesmo.

Share this post


Link to post
Share on other sites
  • 0

Sabino, começou a funcionar, mas ainda tem alguma coisa ruim,

O sistema esta deletando somente um registro, mesmo marcando uns 2 ou tres, apaga so um., sempre o primeiro da lista.

Tá assim:

<form id="frmDeletar" name="frmDeletar" action="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>" onsubmit="return critica(this)" method="post">
        <tr align="left" valign="middle" bgcolor="#FFFFFF"> 
          <td><font class="txt8"><%=(rsApprove.Fields.Item("LINK_NAME").Value)%></font></td>
          <td><font class="txt8"><a href="<%=(rsApprove.Fields.Item("LINK_URL").Value)%>" target="_blank"><%=(rsApprove.Fields.Item("LINK_URL").Value)%></a></font></td>
          <td align="center"><font class="txt8"><%=(rsApprove.Fields.Item("LINK_DATE").Value)%></font></td>
          <td align="center"><font class="txt8"><A HREF="approving.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">APPROVE</A></font></td>
          <td align="center"><font class="txt8"><A HREF="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">DELETE</A>
<input name="checkbox" type="checkbox" value="<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">
<input name="Submit" type="submit" value="Excluir">   
          <td align="center"><font class="txt8"><A HREF="editing.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">EDIT</A></font></td>
        </tr>
        <% 
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  rsApprove.MoveNext()
Wend
%>
</form>

Edited by py2tz

Share this post


Link to post
Share on other sites
  • 0

Beleza, parou de dar erro. Os problemas agora são:

1) O arquivo deleting.asp está pegando request.querystring e por isso pega apenas o código que foi passado na URL no action do form (deleting.asp?id=...).

O correto é utilizar, nesse caso, request.form para pegar os valores postados no form e não na querystring;

2) No arquivo deleting.asp, a instrução SQL ainda está com LINK_ID = ... o correto é LINK_ID IN (...) para deletar mais de um.

Espero que ajude!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this