viernes, 14 de septiembre de 2012

Formularios en Microsoft Access vía página web

Formularios en Microsoft Access vía página web


A continuación presentamos, de manera clara y didactica, todos los pasos a seguir para la creacion de un formulario web y su vinculación a una base de datos de MS Access. Esta herramienta es aplicable en múltiples situaciones, utilizada cuando necesitas que diversos usuarios completen una base de datos de manera remota. Especial para la incorporación a paginas Web de la empresa, o creadas excepcionalmente para este uso, como por ejemplo, formularios de concursos para la creación de Costumer Data Base, recopilación de comentarios, sugerencias, quejas, solicitudes de cotizaciones, solicitudes de compra (y delivery).

Para visualizar una abreviación  de la presentación, presionar el  siguiente link: 




Ver vídeo Tutorial formulario web:



 

La siguiente información que se  presentará, tiene  relación en ingresar datos a Microsoft Access vía formulario web.  Para ésto, primero se explicará lo que son los formularios, para luego mostrar como pueden ser manejados vía web.

¿Qué son los formularios?


Los formularios son objetos de base de  datos, que se pueden  utilizar para escribir, modificar o mostrar los datos de una tabla o consulta.


Estos formularios pueden realizarse en forma local (MS Access) u Online. Para este caso mostraremos como realizar un formulario de ingreso de  datos online a MS Access.

Ingresar datos a formulario vía página web


En los últimos tiempos han surgido herramientas online que  facilitan la conexión y manejo de  datos. Una  de  estas herramientas son los formularios web.

¿Qué es un formulario web?


Los formularios web son un tipo de formulario, que se  visualiza en un navegador, que por medio de Internet, se pueden rellenar los datos requeridos en el  formulario, los cuales son procesados en un servidor e ingresados en la base de datos correspondiente.

Los formularios web, tienen distintas opciones de lenguaje para gestionar la información del  formulario, los cuales se  ejecutan en el servidor web, permitiendo así,  ingresar la información a la  base de datos, asegurar el ingreso obligatorio de ciertos datos, utilizar los datos para  busqueda, etc. Estos lenguajes  pueden ser PHP, ASP, Java, Perl, entre otros.

A continuación mostraremos los pasos a seguir para poder ingresar datos a MS Access vía formulario web, ejemplificando en relación al ingreso de datos de clientes.

¿Qué se necesita para ingresar datos MS Access desde una página web?


1.- Base de datos: en el ejemplo será una base de datos que almacena información de clientes.
2.- Dos Páginas formato ASP: la primera página será para incorporar los datos relacionados con la  visualización del  formulario web la cual será llamada formulario.asp, y la  segunda página,la cual será llamada addcliente.asp,  contendrá los códigos que permitan gestionar la información ingresada en el formulario web, e ingresar en el ejemplo, la información de los clientes en la base de datos

Paso 1: Creación y configuración de la base de  datos Access


Se crea la base de datos la cual tendrá el nombre de miprimerabase.mdb, luego se genera la tabla Clientes, donde su primer atributo es de  tipo auto-numérico, y el resto, de  tipo texto. 


Paso 2: Creación página formulario web


Para el formulario web, utilizaremos la primera pagina con formato ASP (formulario.asp).  En este caso, creamos un documento en blanco con Bloc de Notas o Notepad++, y se genera el siguiente código:


<html>
<head>
<title>Formulario</title>

Encabezado y nombre de la página
<!--
p { margin-top: 0; margin-bottom: 0 }
input { font-family: Arial; font-size: 8pt; height:20; }
textarea { font-family: Arial; font-size: 8pt; }
-->
</style>
</head>
Definición de Estilos de la página, en este caso se especifica los valores de P (salto de línea en html), el tipo de letra y tamaño que se utilizaran al momento de ingresar los datos (input) y lo mismo para el área de texto libre (textarea) donde finalmente se recibirán los comentarios.
<body>
<p><font face="Arial" size="6">Formulario</font></p>

Definición del Título de la Página y sus estilos asociados
<%
if request.querystring("Mensaje")=2 then
%>
<p align="center"><b><font color="#FF0000" face="MS Sans Serif" size="1">
El mensaje no ha podido ser publicado debido a que uno o más campos obligatorios
se encontraban vacíos.<br>
Por favor, intenta nuevamente.</font></b></p>
<%
end if%>

Esta sentencia define que si Mensaje =2 la página mostrará el mensaje definido, este dato es enviado por la página que valida y guarda los registros en la base (addmensaje.asp)
<div align="center">
<center>
<form method="post" action="addmensaje.asp">
<table border="0" cellpadding="2" cellspacing="2" width="80%">
<tr>
<td width="21%" align="right">
<p align="right"><font face="Arial" size="2">Nombre:</font></td>
<td width="79%" align="left" height="18">
<input type="text" name="Nombre" size="20"><font face="Arial" size="2"><b>*</b></font></td>
</tr>
<tr>
<td width="21%" align="right">
<font face="Arial" size="2">País:</font></td>
<td width="79%" align="left">
<input type="text" name="Pais" size="20"></td>
</tr>
<tr>
<td width="21%" align="right">
<font face="Arial" size="2">E-mail:</font></td>
<td width="79%" align="left">
<input type="text" name="email" size="37"><font face="Arial" size="2"><b>*</b></font></td>
</tr>
<tr>
<td width="21%" align="right">
<font face="Arial" size="2">Sitio Web:</font></td>
<td width="79%" align="left">
<input type="text" name="url" size="37" value="http://"></td>
</tr>
<tr>
<td width="21%" align="right">
<font face="Arial" size="2">Asunto:</font></td>
<td width="79%" align="left" height="13">
<input type="text" name="Asunto" size="37"><font face="Arial" size="2"><b>*</b></font></td>
</tr>
<tr>
<td width="21%" align="right">
<font face="Arial" size="2">Mensaje:</font></td>
<td width="79%" align="left">
<textarea rows="4" name="Mensaje" cols="39"></textarea><font face="Arial" size="2"><b>*</b></font></td>
</tr>
<tr>
<td width="21%" align="right">
 </td>
<td width="79%" align="left">
<font face="MS Sans Serif" size="1" color="#FF0000"><b>*</b> campo obligatorio</font>
El siguiente segmento de código “dibuja” el formulario con los campos definidos (igual a los de la base de datos).
Todo lo que se encuentra dentro de la etiqueta
<form method="post" action="addmensaje.asp"> es parte del formulario y la acción del botón “GUARDAR”, la cuál en este caso enviará, mediante el método post, todos los registros ingresados a la página “addmensaje.asp”, la cuál guardará los registros en la base de datos.
<p><input type="submit" value="GUARDAR"></td>
</tr>
</table>
</center>
</div>
</body>
</html>
Crear el botón “Guardar” y le asigna la función submit, la cuál esta definida en la etiqueta form (envía los registros a “addmensaje.asp”.

El formulario web se  visualizará de la siguiente forma:

Paso 3: Creación página de registro


Para este paso, se creará la segunda página formato asp, que contiene códigos relacionados a la gestión y procesamiento de la información ingresada en el formulario. Esta página será encargada de procesar el formulario anterior y agregar los clientes a la base de datos. 
La página mencionada, debe ser creada copiando el siguiente código ( es importante mencionar que el código otorgado sirve como base, y es necesario cambiar ciertos nombres de atributos y bases de datos, para adaptarlas en otras situaciones):

<%
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4

En este segmento del código se definen las propiedades del objeto RecordSet (es el que permite la interacción de las páginas web con las bases de datos), para mas detalles ver:
http://www.asptutor.com/asp/vart.asp?id=5
Nombre = request.form("Nombre")
Pais = request.form("Pais")
email = request.form("email")
url = request.form("url")
Asunto = request.form("Asunto")
Mensaje = replace(request.form("Mensaje"),chr(10),"<br>")

if url="http://" then
url = ""
end if

Captura los registros de cada uno de los campos definidos en el formulario (formulario.asp).
En el campo de Mensaje adicionalmente se está realizando un remplazo de texto ingresado, por el mismo texto sin salto de líneas.
Por último se realiza la validación del dato ingresado en el campo URL, si es igual al sugerido http:// lo toma como vacío.
if Nombre="" or email="" or Asunto="" or Mensaje="" then
response.redirect "formulario.asp?Mensaje=2"

En estas líneas se valida que los campos no estén vacíos, en caso de que alguno no tenga datos, se realizará un redireccionamiento a la página formulario.asp, que desplegará el mensaje definido
else
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("libvis.mdb"))
set rs=createobject("ADODB.Recordset")
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic

rs.open "mensajes",conn
rs.addnew

Si todo esta OK, no hay campos vacíos, entonces se realiza la conexión con la base de datos y se abran los correspondientes recorset, que realizarán el registro de los datos en la base de datos.
rs("Nombre")=Nombre
rs("email")=email
rs("Pais")=Pais
rs("url")=url
rs("Asunto")=Asunto
rs("Mensaje")=Mensaje
rs("Fecha")=Date()
rs.update
rs.close

response.redirect "formulario.asp"
end if
%>

A cada campo se le asigna el dato del registro rescatado desde formulario.




En esta línea se especifica la acción UPDATE, que graba el registro en la base de datos, en la siguiente se cierra la conexión con la misma.
El response redirect permite que una vez realizada la acción se devuelva a la página anterior (o cualquiera)


¿Cómo funciona?


Se debe subir a una página de internet las 2 páginas web creadas, que están ligadas a la  base de  datos. Al recoger los valores del formulario en variables, se comprueba si los atributos están vacíos. Si lo están, se redirige al usuario a la página inicial para que lo complete nuevamente.

Limitantes


  • Es necesario configurar un servidor  de forma previa para poder realizar de forma efectiva la actualización de la base de  datos por medio del  formulario  web
  • La seguridad  de los datos se ve afectada, ya que  cualquiera que tenga acceso al formulario puede agregar  datos que no sean fidedignos.
  • Por otro lado,  es necesario limitar los campos de acceso, es decir, mantener  atributos obligatorios   enlazados con la BD, para evitar el ingreso de datos vacíos.
  • Por último, a pesar de que hemos mostrado un código base, se hace engorroso el proceso de adaptarlo  a otras bases de datos, ya que  hay que  tener cuidado   en  maximizar la congruencia entre los atributos.

Autores:

-Julio Acevedo Huerta
-Natalia Rivera Cañas
-Jethro Santis
-Luis Vergara 

1 comentario:

  1. mencionan un archivo llamado addmensaje.asp

    hay que crearlo también?

    ResponderEliminar