Grabar campos en BD Access

German
04 de Diciembre del 2003
Hola,

Estoy armando un libro de visitas. Como esta planteado, utiliza un formulario el cual pide 3 campos (nombre, mail y mensaje). El formulario esta en html. Hay un default.asp que es el que muestra los registros almacenados en la base. La base se llama ejemplo.mdb, esta hecha en access97 y tiene una tabla (Tabla1) que contiene 3 campos de texto llamados campo1, campo2 y campo3.
Hay otro archivo que es el add.asp y se encarga de chequear que no haya campos vacios en el formulario y si esta todo bien, los graba en la base.
Lo que no esta funcionando es justamente la rutina del almacenamiento.

Si suprimo la linea " my_conn.Execute (StrSql) " no obtengo mensajes de error. Estando esa linea tengo el clasico "No se puede mostrar la pagina" HTTP 500 - Error interno del servidor.

Les agradecere cualquier ayuda que me puedan brindar.

Saludos...!

German

A continuacion esta el codigo del add.asp:

<%
'Este codigo sirve para que esta pagina no se guarde en el cache del
'explorador, por ejemplo en la carpeta de archivos temporales de internet.
Response.AddHeader "Pragma", "no-cache"
Response.AddHeader "cache-control", "no-store"
%>
<%
'Conector
Dim nombre
'Receptor del campo nombre rellenado en el formulario
nombre=CStr( Trim( Request.Form("nombre") ) )

Dim basedatos
'Escribimos la direccion de la base de datos,
'por ejemplo dbejemplo.mdb, nunca escribas c:...ejemplo.mdb, porque no es
'necesario, eso lo sustituye el comando Server.MapPath("").
basedatos = Server.MapPath("dbejemplo.mdb")
'Creamos la conexion
Conn_String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & basedatos & ";"
%>
<%
Sub SubNADA
%>
<%
End Sub
Sub SubDoIt
'Aqui le decimos a este script en asp, cuales son los campos reuqridos por el formulario,
'En este momento estan el campo NOMBRE, EMAIL Y MENSAJE.
if Request.Form("nombre") = "" or Request.Form("email") = "" or Request.Form("mensaje") = "" then
'Aqui abajo va el mensaje de error cuando se dejan los campos vacios
%>
<P align="center"><font face="Verdana, Arial, Helvetica" color=#ff0000 size=4>
Faltan datos</p></font>
<P><font face="Verdana, Arial, Helvetica" size=2 color=#ff0000>
Antes de enviar los datos del formulario,
debe completar los datos requeridos por el formulario.!
<br><br><a href="javascript:history.back()">Volver a completar el formulario.</a></font>
<%
Else
set my_conn= Server.CreateObject("ADODB.Connection")
my_conn.Open (conn_string)

'Acá recuperamos los datos del formulario y los agregamos a la base de datos
strSql = "insert into Tabla1 (campo1, campo2, campo3 ) values ('"
strSql = StrSql & Request.Form("nombre") & "', '"
strSql = StrSql & Request.Form("email") & "', '"
strSql = StrSql & Request.Form("mensaje") & "')"

'Ejecutamos la conexion y despues la cerramos.

my_conn.Execute (StrSql)
my_conn.Close
set my_conn = nothing
%>
<br><br>
<center><font face="helveltica, verdana" size="2" color="#065098">
<b>...<%Response.Write(""&nombre&""&VbCrLf)%>,
su información a sido procesada exitosamente,
pronto nos pondremos en contacto con usted...
</b></font></center><br>

<%
End If
End Sub
%>


<html>
<head>
<title>Felicitaciones, su mensaje a sido agregado exitosamente...</title>
</head>
<body>

<%
'Esto es para mostrar el mensaje de error del formulario
'O mostrar el mensaje de felicitaciones de haber guardado satisfactoriamente los datos
'en la base de datos.
select case Request.QueryString("mode")
case "nada"
Call SubNADA
case "doit"
Call SubDoIt
End Select
%>

<!-- y ahora le creamos un targeta meta y lo mandamos
a la lagina inicial para mostrar altiro su mensaje -->
<meta http-equiv="refresh" content="1; url=default.asp">

</body>
</html>