Modificar Registros

vmayerlin
01 de Diciembre del 2003
Hola Necesito Ayuda, estoy comenzando en esto de la programacin y necesito saber como modificar los campos despus de realizar la consulta de la base de datos. Gracias

javikas
01 de Diciembre del 2003
Tu pregunta es un poco genrica, "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 conexin 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 cdigo (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 ms precisin cuando te interese hacerlo (cuando ests buscando un registro en concreto), para insertar uno sin ms, 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 conexin 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 modificacin 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, fjate 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 asignacin.

Ah tienes lo bsico para moverte por una base de datos, pero te recomiendo que te mires tutoriales y cdigos de ejemplo, tienes muchos por las pginas de asp.

javikas
01 de Diciembre del 2003
Al insertar el cdigo 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 deba 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 explicacin de que lo haga as no es por nada en especial, pero cuando ests trabajando con varias bases de datos (con varias conexiones, punteros y archivos de paginacin); con datos concatenados en variables; texto literal etc... te acostumbras a almacenar todo en variables y luego ejecutarlas, en esos casos resulta mucho ms prctico, adems, si vas a usar varias veces una sentencia, almacenarla en una variable resulta mucho ms cmodo.

Pero efectivamente, en este ejemplo sera ms rpido 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