Actualizar registro ADO

Podemos usar SQL UPDATE para actualizar un registro en la tabla de base de datos.

Actualizar registro de tabla de base de datos

Esperamos actualizar un registro de la tabla Customers en la base de datos Northwind. Primero, necesitamos crear una tabla para listar todos los registros de Customers.

<html>
<body>
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs = Server.CreateObject("ADODB.Recordset")
rs.open "SELECT * FROM customers",conn
%>
<h2>List Database</h2>
<table border="1" width="100%">
<tr>
<%
for each x in rs.Fields
  response.write("<th>" & ucase(x.name) & "</th>")
next
%>
</tr>
<% do until rs.EOF %>
<tr>
<form method="post" action="demo_update.asp">
<%
for each x in rs.Fields
  if lcase(x.name)="customerid" then>
    <td>
    <input type="submit" name="customerID" value="<%=x.value%>">
    </td>
  <%else%>
    <td><%Response.Write(x.value)%></td>
  <%end if>
next
%>
</form>
<%rs.MoveNext%>
</tr>
<%
loop
conn.close
%>
</table>
</body>
</html>

Si el usuario hace clic en el botón de la columna "customerID", se abrirá un nuevo archivo "demo_update.asp". Este archivo contiene el código fuente de los campos de entrada creados basados en los campos de la base de datos, y también contiene un "botón Actualizar" para guardar los cambios:

<html>
<body>
<h2>Actualizar Registro</h2>
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
cid = Request.Form("customerID")
if Request.form("companyname")="" then
  set rs = Server.CreateObject("ADODB.Recordset")
  rs.open "SELECT * FROM customers WHERE customerID='" & cid & "'",conn
  %>
  <form method="post" action="demo_update.asp">
  <table>
  <%for each x in rs.Fields%>
  <tr>
  <td><%=x.name%></td>
  <td><input name="<%=x.name%>" value="<%=x.value%>"></td>
  <%next%>
  </tr>
  </table>
  <br /><br />
  <input type="submit" value="Actualizar registro">
  </form>
<%
else
  sql = "UPDATE customers SET "
  sql = sql & "companyname='" & Request.Form("companyname") & "',"
  sql = sql & "contactname='" & Request.Form("contactname") & "',"
  sql = sql & "address='" & Request.Form("address") & "',"
  sql=sql & "city='" & Request.Form("city") & "',"
  sql=sql & "postalcode='" & Request.Form("postalcode") & "',"
  sql=sql & "country='" & Request.Form("country") & "'"
  sql=sql & " WHERE customerID='" & cid & "'"
  on error resume next
  conn.Execute sql
  if err<>0 then
    response.write("¡No hay permisos de actualización!")
  else 
    response.write("Registro " & cid & " fue actualizado!")
  end if 
end if
conn.close
%>
</body>
</html>