Creación de un nuevo registro

Forma sencilla de introducir nuevos elementos en la tabla. Ejemplos prácticos.
En este caso lo que buscamos es crear, a partir de los datos recibidos de un formulario, un nuevo registro en nuestra tabla clientes. Tendremos pues dos archivos diferentes, uno que podría ser un HTML puro en el que introducimos el formulario a rellenar y que nos envía al segundo, un script muy parecido al previamente visto para realizar una selección. He aquí los dos scripts:

<HTML>
<HEAD>
<TITLE>Insertar.html</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Insertar un registro</h1>
<br>
<FORM METHOD="POST" ACTION="insertar.asp">
Nombre<br>
<INPUT TYPE="TEXT" NAME="nombre"><br>
Teléfono<br>
<INPUT TYPE="TEXT" NAME="telefono"><br>
<INPUT TYPE="SUBMIT" value="Insertar">
</FORM>
</div>
</BODY>
</HTML>


<HTML>
<HEAD>
<TITLE>Insertar.asp</TITLE>
</HEAD>
<BODY>

<%
'Recogemos los valores del formulario
nombre=Request.Form("nombre")
telefono= Request.Form("telefono")

'Instanciamos y abrimos nuestro objeto conexion
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Mibase"

'Ahora creamos la sentencia SQL
sSQL="Insert Into Clientes (nombre,telefono) values ('" & nombre & "','" & telefono & "')"

'Ejecutamos la orden
set RS = Conn.Execute(sSQL)
%>

<h1><div align="center">Registro Insertado</div></h1>
<div align="center"><a href="lectura.asp">Visualizar el contenido de la base</a></div>

<%
'Cerramos el sistema de conexion
Conn.Close
%>

</BODY>
</HTML>


Como puede verse, la forma de operar es idéntica a la vista anteriormente para el display de una tabla. En este caso hemos introducido un enlace a este primer script de lectura para ver cómo los cambios se han hecho efectivos.

La construcción de la sentencia SQL se hace por fusión de los distintos elementos constitutivos. La forma de fusionarlos mediante el símbolo &. Todo lo que sea texto tiene que ir entre comillas. Sería interesante introducir una línea suplementaria en vuestro código para imprimir la sSQL formada. La línea sería del siguiente tipo:

Response.Write sSQL

Esta línea iría situada evidentemente después de haber construido la sentencia.

Para ver funcionar el script pincha aquí

Autor

Rubén Alvarez

Redactor de DesarrolloWeb.com

Compartir

Comentarios

Everardo Garcia

05/8/2002
La creación de un nuevo registro es muy sencilla pero, como se puede controlar el error de duplicar registros (por contener campos llave en la BD).

RESPUESTA

Antes de insertar un registro debes comprobar que no está repetido y si no lo está lo insertas como de costumbre.

Imagina que quieres insertar un nuevo usuario en una base de datos y todos los usuarios deben tener nombres de usuario distintos. Primero haces una búsqueda en la base de datos de usuarios que tengan como nombre de usuario el nuevo nombre de usuario que pretendes insertar.

Si la búsqueda arroja algún registro quiere decir que ese nombre de usuario está utilizado ya, entonces no debemos insertarlo otra vez. Si la búsqueda anterior no arrojó ningún resultado quería decir que ese nombre de usuario no está utilizado y entonces podemos insertarlo sin problemas.

Federico

25/9/2002
Excelente el curso! Realmente muy bueno..tengo una consulta, me gustaria saber como hacer para "llamar" desde la pagina .asp a los valores predeterminados que tengo habilitados para cada campo de la base de datos cuando el usuario ingresa un nuevo registro...... Gracias

RESPUESTA

Tu pregunta no es de ASP, más bien es del lenguaje SQL. Puedes contestarla tu mismo al leer el artículo de Insertar un nuevo registro, en el manual de SQL.

Salva

10/10/2002
Efectivamente esta forma es muy sencilla, pero q pasaria si por ejemplo en el nombre ponemos el caracter comilla ", pues esto haria q la sentencia SQL creada fuese erronea y nos daria un error. Por ello creo q no es el mejor metodo para crear un registro. Gracias.

RESPUESTA

Tienes razón, si ponemos el caracter comilla se jode la sentencia, pero entonces lo único que tienes que hacer es buscar comillas en el texto antes de crear la sentencia y sustituirlas por otro caracter o por su correspondiente código de caracter especial de HTML.

Carlos Bolivar

13/3/2003
Q TAL!, me parece demaciado excelente este tutorial de ASP, pero tengo un problema la conexion de la base de datos se hace por medio de un DSN, cuando trabajo en mi equipo remoto me funciona a la perfeccion pero como hago para crear ese DSN en el servidor en el cual publico la pag. web ASP...

RESPUESTA

Cada proveedor de alojamiento pone a disposición del usuario un modo para crear los DSN, que no tiene porque ser igual en unos y otros. lo mejor es que te pongas en contacto con tu proveedor o leas sus páginas de ayuda para ver cómo debes crearlo. También es posible que no hayan implementado ningún mecanismo para crear los DSN por tu cuenta y te lo tengan que crear ellos mismos cuando se lo solicites.

Vicen

29/9/2003
Me ha parecido un curso excelente
Explica todo con mucha claridad.
Estoy de practicas para una empresa y cuando empece no tenia ni idea de ASP (si de html)
Y ahora ya estoy nadando como pez en el agua de la pagina web de la empresa Gracias

Marlon

02/10/2003
Excelente curso!! como aporte quisiera mencionar que en mi caso solo me funcionó con DSN de sistema.

Por otro lado me gustaría aclarar por que se produce el error "La operación debe usar una consulta actualizable.", esto me sucede para actualizar, insertar y borrar mas no para leer los registros de la BD... Gracias

eduardo

01/12/2003
Falla. No es posible eliminar el primer registro. No es una solución fiable, y tampoco deja generar registros partiendo de una bd vacía.

moises

03/8/2004
el origen de datos puede ser el mismo que el de la base de datos

juanito

04/5/2006
Habría que mejorar a la hora de insertar registros.
Fallla: si pones esto
<table border='1'><tr><td>desarrolloweb</td></tr></table>

JMARCOSGB

15/6/2006
PRIMERO QUE NADA ALOS QUE TIENEN EL TIPO DE PROBLEMA

<BR>

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query.
/bddpack/insertar.asp, line 20

<BR>

ESO SE DEBE A QUE LA CARPETA EN LA QUE GUARDAN LA BASE DE DATOS NO TIENE PERMISOS DE ESCRITURA, SOLO TIENEN QUE DARLE ESOS PERMISOS ESO ES TODO

Alexis

29/11/2007
Me ha parecido un curso excelente.
Pero me da un error al tratar de insertar, eliminar o modificar un registro.
El error es el siguiente:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][Controlador ODBC Microsoft Access] La operación debe usar una consulta actualizable.

/prueba/insertarrev.asp, línea 42

Jorge174

28/4/2010
Sobre DSN utilizado
También en mi caso solo me funcionó con DSN de sistema.

Jefcomputer

25/11/2010
id de registro
quisiera colocar una ID's automaticas por cada registro soy un principiante en asp y quiciera saber como podria hacerlo

irma

14/3/2011
Felicitaciones!!
Muchisisisisimas gracias por tu articuloo...
m salvast la vidaaa!!...

tarde Diaaaaass keriendo hacer la conexion a la base de datoooss... y por logicaa no podia insertar....
pero tu articulooo m aiudoo muchooo!!....

Gracias!!!....

un abrazoo...

CESAR

17/6/2014
no inserta los datos
hello hize todo lo que venia lo copie igual pero no inserta nada en la base de datos no me da error si hago un select me muestra los datos que habia creado manualmente en la base de datos pero no los que creo nuevos y de echo no se crean los datos solo les quita el valor null que les habia setteado por defecto