ASP Básico -  Alterando os dados em suas tabelas – Usando SQL

 
Este exemplo mostra como podemos alterar dados de uma tabela usando instruções SQL. Usaremos a tabela Authors da base de dados biblio.mdb. Nosso exemplo é composto pelos seguintes arquivos:
 
1-)Altera.asp – Exibe os registros da tabela Authors , com um hiperlink no mome de cada autor. O usuário deverá clicar no nome do autor que desejar alterar.
 
2-)Altera_1.asp - Exibe em um formulário os dados do autor selecionado no arquivo altera.asp .
 
3-)Altera_2.asp - Efetua a gravação das alterações na tabela e exibe mensagem final ao usuário.
 
Vamos mostrar agora como podemos alterar um registro de nossa tabela Authors. O arquivo altera.asp inicia com a tela a seguir :
Tela gerada pelo arquivo altera.asp - exibe os registros da tabela Authors
O código de altera.asp é idêntico ao arquivo inclui.asp , a única diferença são os hiperlinks que criamos no nome dos autores; mostraremos portanto somente esta parte do código que é dada a seguir:
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=" & "altera_1.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
 
Observe que cada link irá chamar o arquivo altera_1.asp passando como parâmetro o código do autor.(altera_1.asp?id= )
 
O arquivo altera_1.asp mostra na tela os dados a serem alterados, veja a seguir
Página gerada pelo arquivo altera_1.asp exibe os dados do registro selecionado para alteração
O código do arquivo altera_1.asp é o seguinte:
<html><head>
<title>altera_1.asp</title>
</head><body bgcolor="aqua">
<%
'O DSN utilizado para a base de dados Bibio.mdb é : asp_db
‘Criando um objeto connection e ligando-o ao nosso DSN
set conntemp=server.createobject("adodb.connection")
conntemp.open "asp_db"
‘convertendo o código em para inteiro
codigo=clng(request.querystring("id"))
‘Montando a instrução SQL para selecionar o autor com o código passado como referência
sqltemp="Select * From authors Where Au_ID=" & codigo
‘criando um recordset com a instrução SQL
set rstemp=conntemp.execute(sqltemp)
‘atribuindo os dados do registro a alterar para variáveis
form_auID=rstemp("Au_ID")
form_author=rstemp("Author")
form_year_born=rstemp("Year Born")
 
‘fechando recordset e limpando a memória
rstemp.close
set rstemp=nothing
conntemp.close
set conntemp=nothing
%>
<body>
<p><B><font size=4>Formulário com os dados selecionados para alteração </font></b></P>
<hr>
<form name="altera_autor" action="altera_2.asp" method="POST">
<input type="hidden" name="codigo" value="<%=form_auid%>">
<p>Código do Autor: <%=form_auid%>
</p>
<p> Nome do Autor :
<input type="TEXT" name="nome" value="<%=form_author%>"></p>
<p> Data de nascimento :
<input type="TEXT" name="ano" value="<%=form_year_born%>"></p>
<p> <input type="SUBMIT" Value="Gravar as Alterações"> </p>
<hr>
<a href="altera.asp">Voltar</a>
</form>
</body>
</html>
 
Este formulário é preenchido com os dados do autor selecionado para alteração.

O usuário pode a seguir fazer as alterações e gravá-las ou voltar a página inicial.

Ao clicar no botão Gravar as Alterações o arquivo altera_2.asp é processado exibindo o nome da instrução SQL usada e os novos dados do registro. Veja abaixo
Tela gerada pelo script altera_2.asp exibindo a instrução SQL efetuada e os dados alterados

Para atualizar registros usando uma instrução a SQL usamos a instrução UPDATE/SET com a seguinte sintaxe:

UPDATE <tabela> SET <dados a alterar> <condição para alteração>

Ex: UPDATE Authors SET [Year Born] = 1945 WHERE [Year Born] = 1955

Atualiza na tabela Authors o campo [Year Born] atribuindo ao mesmo o valor 1945, quando o campo [Year Born] for igual a 1955
 
O código do arquivo altera_2.asp é :
<HTML><HEAD>
<TITLE>altera_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 = "UPDATE authors SET "
SQL = SQL & "Author='" & nome & "',"
SQL = SQL & "[year born]=" & ano
SQL = SQL & " 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="altera.asp">Voltar</a>
</BODY>
</HTML>
A instrução sql usada foi a seguinte:
 
SQL = "UPDATE authors SET "
SQL = SQL & "Author='" & nome & "',"
SQL = SQL & "[year born]=" & ano
SQL = SQL & " WHERE AU_ID=" & codigo
 
SQL é uma variável string onde armazenamos a instrução , isto facilita o seu entendimento e depuração.
 
1-) SQL = "UPDATE authors SET " atualiza a tabela Authors nos seguintes campos:
2-) SQL = SQL & "Author='" & nome & "',"
SQL = SQL & "[year born]=" & ano
 
Observe que a variável nome representa um string e deve estar entre aspas simples (‘); já a variávei ano é um valor numérico.
 
3-) SQL = SQL & " WHERE AU_ID=" & codigo – determina a condição para alteração; Serão alterados os campos cujos códigos (Au_Id) forem iguais a variável codigo.
 
A execução da consulta é feita com a seguinte linha de código;

Set RS = Conn.Execute(SQL)

O método execute do objeto Connection executa a instrução SQL e retorna o resultado para a variável Recorset.

È isso ai... até o próximo capítulo...


 José Carlos Macoratti