Foros del Web » Programando para Internet » ASP Clásico »

Insertar nuevos registros con asp y sql.

Estas en el tema de Insertar nuevos registros con asp y sql. en el foro de ASP Clásico en Foros del Web. Saludos. Soy novato en todo esto (asp, sql, ado, manejo de bases de datos access etc) y estoy tratando de insertar nuevos registros en una ...
  #1 (permalink)  
Antiguo 25/12/2007, 15:20
Avatar de DOnthewildside  
Fecha de Ingreso: diciembre-2007
Mensajes: 6
Antigüedad: 16 años, 5 meses
Puntos: 0
Insertar nuevos registros con asp y sql.

Saludos. Soy novato en todo esto (asp, sql, ado, manejo de bases de datos access etc) y estoy tratando de insertar nuevos registros en una tabla de la base de datos (usando INSERT TO) desde una rutina en asp, pero no hay manera. Yo he escrito todo el código tal cual está en los tutoriales de W3Schools y sólo me funciona lo de recuperar datos en recordsets y mostrarlos en tablas, pero, aunque el servidor no me da ningún error (uso BabyWebServer en mi portátil porque no tengo disponible asp en el servidor), no hay manera de insertar nuevos registros en la tabla. He tratado de ver las propiedades de la base de datos, cambiar permisos etc pero no hay manera. ¿Alguna sugerencia? Muchas gracias.
  #2 (permalink)  
Antiguo 26/12/2007, 16:03
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Insertar nuevos registros con asp y sql.

Ok, siento mucho que tengas que usar el baby web server je jeje, pon tu código y con gusto le damos una revisada, trabajas con SQL?

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 26/12/2007, 16:37
Avatar de DOnthewildside  
Fecha de Ingreso: diciembre-2007
Mensajes: 6
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Insertar nuevos registros con asp y sql.

Vale, muchas gracias por responder. Aquí va el código de comentarios.asp. Verás que hay varias sentencias puestas como comentario porque estuve tratando de hacerlo de varias formas. Disculpa si no hay demasiada claridad en el código, es que lo mandé a paseo y no me dediqué a ponerlo en limpio.
Se trata simplemente de implementar una especie de libro de visitas en el que los usuarios pueden ir entrando sus comentarios. Estos comentarios se van guardando en una base de datos (Microsoft Office Access Database).
Al cargar la página se ejecuta check_database() para comprobar si existen entradas previas en la base y mostrarlas en una tabla. Como ya sabes, al hacer click en el submit 'Ok' la acción del formulario vuelve a llamar a comentarios.asp y esta vez se presentan las entradas previas más la nueva entrada. Inmediatamente (y esto es un suponer) se guarda la nueva entrada mediante save_entry(new_name,new_comment)




Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<% 
sub check_database()
dim conn,rs,sql
sql="select * from comentarios_hayapaz"
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
'conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/Boletín Informativo.mdb")) 
conn.open "D:/1&1WebHosting/pruebas/BabyWebServer/Boletín Informativo.mdb"
set rs=conn.execute(sql)

rs.MoveFirst
do until rs.EOF

response.write("<tr><td><font color='maroon'>" & rs("nombre") &"</font><font color='#6699CC'> dijo:</font></td></tr>")
response.write("<tr><td>" & rs("comentario") & "</td></tr>")

'for each i in rs.fields
'if i.name="Id_entrada" then  next
'Response.Write("<tr><td>" & i.name & "</td></tr> ")
'Response.Write("<tr><td>" & i.value & "</td></tr> ")
'next
'Response.Write("<br />")'

rs.movenext
loop
rs.close
set re=nothing
conn.close
set conn=nothing
end sub

sub save_entry(name,coment)
dim db_conn,sql_str,rs

set db_conn=Server.CreateObject("ADODB.Connection")
db_conn.Provider="Microsoft.Jet.OLEDB.4.0"
'db_conn.Mode=adModeReadWrite
db_conn.open "D:\1&1WebHosting\pruebas\BabyWebServer\Boletín Informativo.mdb"

sql_str="insert into comentarios_hayapaz (nombre,comentario) values (" & name & "," & coment & ");"
'sql_str=sql_str & "values ('" & request.form("name") & "',"
'sql_str=sql_str & "'" & request.form("coment") & "')"

on error resume next
set rs=db_conn.Execute(sql_str)
if error<>0 then response.write("No update permissions!!")

db_conn.close
set db_conn=nothing
end sub
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<h4><font color="#6699CC">Comentarios</font></h4>
<form action="comentarios.asp" method="post">
Nombre del miembro, fake o cosa...<br />
<input type="text" name="name" size="20"/><br />
Escriba aquí su comentario...<br />
<textarea name="coment" cols="60" rows="10"></textarea><br />
<input type="submit" value="Ok!"/>
</form>
<hr/>
<table border="0">
<!-- PRIMERO HAY QUE CHECKEAR LA BASE DE DATOS PARA VER SI HAY ENTRADAS Y PUBLICARLAS AL CARGAR LA PÁGINA-->
<!-- LUEGO HAY QUE IR INTRODUCIENDO CADA NUEVA ENTRADA EN LA BASE DE DATOS-->
<!-- LUEGO HAY QUE PUBLICAR EL COMENTARIO YA SEA EN PRIMER O EN ÚLTIMO LUGAR-->

<%
call check_database()
dim new_name,new_comment
new_name=request.form("name")
new_comment=request.form("coment")
if new_comment<>"" then
if new_name="" then new_name="anónimo"
response.write("<tr><td><font color='maroon'>" & new_name &"</font><font color='#6699CC'> dijo:</font></td></tr>")
response.write("<tr><td>" & new_comment & "</td></tr>")
call save_entry(new_name,new_comment)
else 
response.write("escriba algo")
end if
%>
</table>
</body>
</html>

Vale, pues aquí tienes el código tal cual quedó después de múltimples intentos de guardar nuevas entradas en la tabla comentarios_hayapaz Te vuelvo a pedir disculpas por el lío que hay en el código, pero es que ya ni me esperaba respuestas por parte de nadie y me has pillado desprevenido y cansado después de ciertos excesos navideños como para ponerme a revisar todo ese maldito código.

Te agradezco mucho el interés y la amabilidad.

PD: ¿por qué lamentas lo del BabyWebServer si se pueden hacer todas las pruebas del mundo hasta estar seguro de que todo está ok antes de cargarlo en un servidor real? Es por curiosidad, no sea que esté haciendo el primo y no me entere.

Gracias.
  #4 (permalink)  
Antiguo 26/12/2007, 16:58
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Insertar nuevos registros con asp y sql.

A verm así rápidamente, aquí hay un error:
Código:
sql_str="insert into comentarios_hayapaz (nombre,comentario) values (" & name & "," & coment & ");"
Deberias utilizar comillas simples para los strings a insertar:
Código:
sql_str="insert into comentarios_hayapaz (nombre,comentario) values ('" & name & "','" & coment & "')" 
Si no resulta, comenta la linea de "on error resume next" pues es la que está previniendo a tu aplicación de mostrar el error.

Lo del baby web server es solo una opinión muy personal, hace un tiempo me ví forzado a utilizarlo y la verdad quedé loco, pero si a tí te funciona, que mejor

Salud
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 26/12/2007, 17:05
Avatar de DOnthewildside  
Fecha de Ingreso: diciembre-2007
Mensajes: 6
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Insertar nuevos registros con asp y sql.

Muchas gracias u_goldman por tu respuesta. Seguiré tus consejos ( en cuanto haya dormido algo ) y si eso ya te comentaré algo (si no es molestia).
  #6 (permalink)  
Antiguo 26/12/2007, 17:05
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Insertar nuevos registros con asp y sql.

Buenas noches pues
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:17.