ASP Básico - Excluindo dados em suas tabelas

Neste artigo vou abordar como excluir dados de uma tabela Access . Vou Aproveitar o código do arquivo altera.asp , mudando somente as mensagens ao usuário. (Leia o artigo em : ASP Básico - Alterando os dados em suas tabelas – Usando SQL )
 
Nosso exemplo para excluir registros usa a instrução SQL DELETE FROM e possui os seguinte arquivos:
 
1-) exclui.asp - Abre a tabela Authors e exibe os registros disponíveis para a exclusão.

2-) excluir.asp – exibe o registro selecionado solicitando a confirmação para exclusão do registro.

3-) excluir_2.asp – executa a instrução DELETE FROM e remove o registro da tabela exibindo informações ao usuário.
Tela gerada pelo script exclui.asp – exibe os registros disponíveis para exclusão

Código do arquivo de script exclui.asp

<html><head>
<TITLE>mostrar.asp</TITLE>
</head>
<body bgcolor="#00FFFF">
<%
 
'Para acesso sem um DSN fariamos
set conntemp=server.createobject("adodb.connection")
conntemp.open "DBQ=C:\asp_db\biblio.mdb;DRIVER={Microsoft Access Driver  (*.mdb)}"
 
'Vamos selecionar somente os primeiros registros da tabela
'Para isto criaremos uma instrução SQL que selecione somente os autores com 'Au_id menor que 12
aspSQL="select * from authors where Au_id <12 "
 
set rstemp=conntemp.execute(aspSQL)
 
' verifica se há dados no recordset
If rstemp.eof then
   response.write "Não há dados a exibir<br>"
   response.write aspSQL & "<br>Não retorna informação alguma..."
   connection.close
   set connection=nothing
   response.end
end if
' Vamos usar código HTML para criar uma tabela e exibir nossos dados
%>
<p><font color="#004080" size="5"><strong>Excluindo dados da tabela - Authors </strong></font></p>
<hr>
<table border=2 bgcolor="#FFFFFF">
<%
' Vamos dar nome aos cabeçalhos dos campos
response.write "<tr>"
'Percorremos os campos
for each item in rstemp.fields
     response.write "<td><B>" & item.name & "</B></TD>"
next
response.write "</tr>"
 
' Agora iremos exibir os dados do Recordset gerado pela consulta SQL
' Vamos percorrer o recordset até chegar no final do arquivo
 
DO UNTIL rstemp.eof
   'atribuindo os valores dos campos as variáveis
   Codigo=rstemp("Au_ID")
   Nome=rstemp("Author")
   Nascimento=rstemp("Year born")
 
   ' escrevendo os campos em uma tabela para exibição via um Browser
   response.write "<tr>"
   response.write "<td>" & Codigo & "</td>"
   response.write "<td><A HREF=" & "excluir.asp?id=" & codigo & ">" & Nome &    "</a></td>"
   response.write "<td>" & Nascimento & "</td>"
   response.write "</tr>"
   'move-se para próximo registro do recordset
   rstemp.movenext
 
LOOP
%>
</table>
<p><font color="#004080" size="5"><strong>Clique no autor que deseja Excluir</strong></font></p>
<hr>
<%
' Fechamos o recordset e liberamos a memória usada
rstemp.close
set rstemp=nothing
conntemp.close
set conntemp=nothing
%>
</body>
</html>
Ao clicar em um autor para excluí-lo o arquivo excluir.asp é acionado e recebe como parâmero o código do autor selecionado (Estamos usando o método GET). A ASP processa a informação , seleciona os dados do autor da tabela e exibe os dados para usuário confirmar a exclusão.
Tela gerada pelo script excluir.asp – exibindo o registro selecionado em exclui.asp
A única diferença é que os dados que são exibidos não estão acessíveis ao usuário.
 
Usamos a tag hidden . Ex: <input type="hidden" name="codigo" value="<%=form_auid%>">
Usamos o seguinte código para este arquivo:
<form name="myauthor" action="excluir_2.asp" method="POST">
<input type="hidden" name="codigo" value="<%=form_auid%>">
<p>Código do Autor : <%=form_auid%></p>
<input type="hidden" name="nome" value="<%=form_author%>">
<p> Nome do Autor : <%=form_author%></p>
<input type="hidden" name="ano" value="<%=form_year_born%>">
<p> Data de nascimento :<%=form_year_born%></p>
<p> <input type="SUBMIT" Value="Excluir este Autor"> </p>
<hr>
<a href="exclui.asp">Voltar</a>
</form>
 
Através do uso do elemento hidden no formulário desabilitamos as caixas de texto e mostramos somente os dados selecionados , impedindo assim que o usuário altere os dados exibidos.
 
Obs: Para poder excluir registros da tabela Authors temos que excluir os relacionamentos existentes entre ela e as outras tabelas. Para fazer isto abra a base de dados no Access e no menu Ferramentas selecione a opção Relacionamentos. A seguir clique com o botão direito do mouse sobre as linhas de relacionamento e selecione Excluir.
 
Agora ao clicar no botão ‘Excluir este Autor’ chegamos ao seguinte resultado:
Novamente usamos uma instrução SQL para excluir o registro da tabela, a instrução : DELETE FROM <tabela> WHERE <condição>
 
O código do arquivo excluir_2.asp é idêntico ao do arquivo altera_2.asp , alteramos apenas os dizeres e a consulta SQL para:
 
SQL = "DELETE FROM authors WHERE AU_ID=" & codigo
<HTML><HEAD>
<TITLE>excluir_2.asp</TITLE>
<body bgcolor="aqua"></HEAD>
<%
'ativa tratamento de erros
on error resume next
 
'atribui os valores do formulario as variaveis
nome=request.form("nome")
ano=request.form("ano")
codigo=request.form("codigo")
 
Set Conn = Server.CreateObject("ADODB.Connection")
 
'O DSN utilizado para a base de dados Bibio.mdb é : asp_db
conn.open "asp_db"
 
'monta consulta para atualiza os registros
 
       SQL = "DELETE FROM authors WHERE AU_ID=" & codigo
 
Set RS = Conn.Execute(SQL)
 
'se houve algum erro: detalha
If err.number>0 then
   response.write "Ocorreram os seguintes erros no Script: " & "<P>"
   response.write "Erro Numero=" & err.number & "<P>"
   response.write "Descricao=" & err.description & "<P>"
   response.write "Contexto de Ajuda=" & err.helpcontext & "<P>"
   response.write "Caminho de Ajuda=" & err.helppath & "<P>"
   response.write "Erro Nativo=" & err.nativeerror & "<P>"
   response.write "Fonte=" & err.source & "<P>"
   response.write "SQLState=" & err.sqlstate & "<P>"
end if
 
IF conn.errors.count> 0 then
   response.write "Ocorreu um erro no Banco de Dados " & "<P>"
   response.write SQLstmt & "<P>"
   for counter= 0 to conn.errors.count
     response.write "Error #" & conn.errors(counter).number & "<P>"
     response.write "Error desc. -> " & conn.errors(counter).description & "<P>"
   next
else
   response.write "<B>Alterações gravadas com sucesso !!!</b>"
   response.write "<hr>"
   response.write "<br>" & "A consulta utilizada foi a seguinte: "
   response.write "<br>" & SQL
   response.write "<br>"
   response.write "<br>" & "Os novos dados são : "
   response.write "<br>"
   response.write "<br>" & "Codigo - " & codigo
   response.write "<br>" & "Nome - " & nome
   response.write "<br>" & "Data de Nascimento - " & ano
end if
 
rs.close
set rs=nothing
Conn.Close
set conn=nothing
%>
<hr>
<a href="exclui.asp">Voltar</a>
</BODY>
</HTML>

Nota : Para ver como criar um DSN leia o artigo : Banco de dados – Criando um Data Source Name - DSN

Aguarde mais artigos na série ASP Básico . Tchau !!!


José Carlos Macoratti