Modificar Registros

vmayerlin
01 de Diciembre del 2003
Hola Necesito Ayuda, estoy comenzando en esto de la programación y necesito saber como modificar los campos después de realizar la consulta de la base de datos. Gracias

javikas
01 de Diciembre del 2003
Tu pregunta es un poco genérica, "modificar" es un concepto un tanto ambiguo, te pueder referir al hecho de actualizar el valor de un campo o al de modificar la tabla creando o borrando registros.

Yo te explico todas las posibilidades y ahorramos malentendidos:

Una vez que tienes realizada la conexión a tu base de datos:
--------------------------------------------------------------------------
<%
Set Conn = Server.CreateObject "ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("../db/tu_base_de_datos.mdb")

%>
-----------------------------------------------------------------------
...puedes hacer varias cosas:

a) crear un nuevo registro:
-----------------------------------------------------------------------
<%
'creamos la sentencia:
Conn.Execute "INSERT INTO tu_tabla (nombre, apellidos, correo) VALUES ('"&variable_nombre&"', '"&variable_apellidos&"', '"&variable_correo&"'')"
'y la ejecutamos:
Set RS = Conn.Execute(sentenciaSQL)
%>
-----------------------------------------------------------------------
tal cual te lo pongo ahí es como debes ponerlo en tu código (me refiero a respetar las comillas dobles y simples (" y ' respectivamente).

b) actualizar un registro existente:
-------------------------------------------------------------------------
<%
'creamos la sentencia
sentenciaSQL = "UPDATE tu_tabla SET correo='" &variable1 &"' WHERE nombre='" &variable_nombre &"'"

'y la ejecutamos:
Set RS = Conn.Execute(sentenciaSQL)
%>
-----------------------------------------------------------------------
(nota: el comando WHERE lo puedes usar en cualquier orden SQL y lo puedes omitir, simplemente es una forma de seleccionar con más precisión cuando te interese hacerlo (cuando estás buscando un registro en concreto), para insertar uno sin más, no tienes por qué usarlo

c) borrar un registro:
-----------------------------------------------------------------------
<%
'creamos la senencia:
sentenciaSQL="DELETE FORM tu_tabla WHERE nombre='" &variable_nombre &"'"
'y la ejecutamos:
set RS = Conn.Execute(sentenciaSQL)
%>
-----------------------------------------------------
y, por supuesto, una vez finalizada la conexión a la base de datos, la cerramos, y limpiamos las variables almacenadas en la memoria del servidor:
------------------------------------------------------------------------
<%
Conn.Close
Set Conn = nothing
%>
--------------------------------------------------------------------------

Todo lo que te he puesto ahí está orientado a la modificación de registros con variables (que seguramente será lo que a ti te interesa), pero si lo que quieres es insertar un valor literal, evidentemente basta con poner el texto que quieres introducir en lugar de la variable. ejemplo:

<%
sentenciaSQL = "UPDATE tu_tabla SET nombre='Juan' WHERE apellido='Sanchez'"
%>

Eso sí, fíjate siempre en las comillas cuando haces las asignaciones, recuerda que cuando entrecomillas algo que a su vez tiene comillas en su interior debes usar la comilla simple (Shift + ?), = ' para no cerrar la asignación.

Ahí tienes lo básico para moverte por una base de datos, pero te recomiendo que te mires tutoriales y códigos de ejemplo, tienes muchos por las páginas de asp.

javikas
01 de Diciembre del 2003
Al insertar el código me he dado cuenta de que he cometido un error al escribir una palabrilla, es en el apartado c) borrar un registro, he puesto FORM y debía ser FROM, osea:

<%
'creamos la senencia:
sentenciaSQL="DELETE FROM tu_tabla WHERE nombre='" &variable_nombre &"'"
'y la ejecutamos:
set RS = Conn.Execute(sentenciaSQL)
%>


Carmen
01 de Diciembre del 2003
Una pregunta, por qué al utilizar el metodo execute del objeto connection no lo haces directamente en lugar de
Set RS = Conn.Execute(sentenciaSQL)

Es decir directamente:
conn.execute(SQL)

javikas
01 de Diciembre del 2003
La explicación de que lo haga así no es por nada en especial, pero cuando estás trabajando con varias bases de datos (con varias conexiones, punteros y archivos de paginación); con datos concatenados en variables; texto literal etc... te acostumbras a almacenar todo en variables y luego ejecutarlas, en esos casos resulta mucho más práctico, además, si vas a usar varias veces una sentencia, almacenarla en una variable resulta mucho más cómodo.

Pero efectivamente, en este ejemplo sería más rápido haberlo puesto directamente.

es la inercia...

perrogrun
01 de Diciembre del 2003
yo lo haho de la siguiente manera:

''hago la seleccion del registro:
cadena ="select * from table"

''habro la conexion y meto los datos en el recordset
recordset.open cadena,conexion,2,2

''si existe el registro
if recorset = false then

''introduzco el dato nuevo
recordset("nombredeldato") = "datoactualizado"

''actualizo el registro
recordset.update
end if

''cierro el recordset
recordset.close



Bueno es otra manera de hacerlo, yo te aconsejo que elijas una y siempre lo hagas igual para no liarte, aunque conozco a otros programadores que les gusta hacerlo de muchas formas diferentes. Cada uno como guste.

Espero haberte ayudado algo