Tutorial Window XP
  Programación: ASP: Programación
 
Declaración del lenguaje 

Como ocurre en otros lenguajes de programación, en ASP existe una sentencia de declaración opcional del lenguaje a utilizar. 

<%@ LANGUAGE="VBScript" %> 

Esta declaración se pone al principio del archivo, antes de cualquier otra expresión. 

Bloques de código y Comentarios 

En páginas ASP, para introducir bloques de sentencias hay que escribir los símbolos reservados: 

<% {sentencias} %> 

Donde sentencias pueden ser una o varias expresiones del lenguaje, como se muestra en el siguiente ejemplo: 

<% 
Request("param" 
Response.Write(Now) 
while not cond do 
rem do nothing 
loop 
%> 

En este punto queremos llamar la atención del lector sobre el hecho de que las sentencias en VBScript no se separan por punto y coma (

Los comentarios de código VBScript se especifican mediante la palabra reservada rem o con el carácter comilla simple (') y tienen un ámbito de una línea. Por ejemplo: 

<% 
rem Esto es un comentario 
' que ocupa varias 
rem líneas 
%> 
Y este es un comentario mal construído: 

<% 
rem Esto es un comentario 
pero esto ya no lo es, así que el procesador de ASP 
lo interpretará como código, y dará error 
%> 

Forma de una página ASP 

Para ir abriendo boca, vamos a ver a continuación, que aspecto tiene un archivo de texto que contiene código ASP y que genera como salida, un documento HTML, es decir, una página Web. 

<%@ LANGUAGE="VBScript" %> 
<% 
rem Declaración de variables y funciones a realizar antes de visualizar el documento 
rem como por ejemplo, inicializar drivers de bases de datos, o redireccionar a 
rem otros documentos 
%> 
<HTML> 
<HEAD> 
<TITLE>T&iacute;tulo...</TITLE> 
</HEAD> 
<BODY> 
<% 
rem Este texto se ve en el documento cuando lo abrimos 
Response.Write("Esto es texto simple<BR>" 
Response.Write("<B>En el que tambi&eacute;n puedo introducir etiquetas HTML</B><BR>" 
%> 
<I>Adem&acute;s es posible mezclar bloques ASP con etiquetas de HTML</I><BR> 
<% 
Response.Write("Aunque este es todav&iacute;a un ejemplo muy sencillo<BR>" 
Response.Write("y con ninguna interactividad..." 
%> 
</BODY> 
</HTML> 

Entrada y Salida 

Response 

Como su nombre indica, la sentencia Response sirve para enviar respuestas (información de salida) al documento HTML que se visualizará en el navegador, para redireccionar a otros recursos, etc. 

Response.Write 

Como sabemos para escribir texto en el documento que se pretende visualizar hay que escribir: 

<% 
Response.Write({cadena}) 
%> 
Una cadena es cualquier combinación de caracteres ASCII, quitando la comilla doble. Si queremos que aparezca este símbolo debemos introducirla dos veces ("". Veamos algunos ejemplos: 

<%@ LANGUAGE="VBScript" %> 
<HTML> 
<HEAD> 
<TITLE></TITLE> 
</HEAD> 
<BODY> 
<% 
Response.Write("Esta p&aacute;gina genera todas las etiquetas de un documento<BR>" 
Response.Write("HTML normal y corriente..." 
%> 
</BODY> 
<HTML> 

Si además queremos escribir el valor de alguna variable: 

<%@ LANGUAGE="VBScript" %> 
<% 
hoy = Date 
%> 
<HTML> 
<HEAD> 
<TITLE></TITLE> 
</HEAD> 
<BODY> 
<% 
Response.Write("Hoy es:" & hoy) 
%> 
</BODY> 
<HTML> 

Response.Redirect 

En ocasiones puede ser útil tener una página que tras un determinado tratamiento de algún dato obtenido del cliente, llame a otra página, o simplemente como método de actualización de enlaces antiguos. En cualquiera de estos casos se utiliza la sentencia Response.Redirect: 

<%@ LANGUAGE="VBScript" %> 
<% 
rem Este enlace ha quedado obsoleto, redireccionar a... 
Response.Redirect("http://www.w3.org/Style/" 
rem Todo lo que hay por debajo de este punto: etiquetas HTML, código ASP 
rem no llega a ser interpretado por el procesador de ASP jamás 
%> 

La utilidad del código queda patente si tenemos en cuenta que con la dinamicidad de la red, frecuentemente se dan modificaciones en las localizaciones de los recursos. Veamos ahora ejemplo de redireccionamiento para tratamiento de datos, y de paso anticipamos algo de lo que veremos en el siguiente punto: 

<%@ LANGUAGE="VBScript" %> 
<% 
opcion = Request("param_opcion" 
Select Case opcion 
Case 1: Response.Redirect("pag1.html" 
Case 2: Response.Redirect("pag2.html" 
Case 3: Response.Redirect("pag3.html" 
End Select 
%> 

Request 

La sentencia Request tiene como misión obtener los valores de los parámetros que pueden pasárseles a las páginas ASP. La forma de pasar pares atributo-valor (parámetro-valor) es la siguiente: 

<%@ LANGUAGE="VBScript" %> 
<HTML> 
<HEAD> 
<TITLE></TITLE> 
</HEAD> 
<BODY> 
<!-- A continuación hay un enlace a una página ASP con parámetros --> 
<A href="guardar.asp?nombre=Jose&apellidos=Garcia%20Perez&dni=12345678" mce_href="guardar.asp?nombre=Jose&apellidos=Garcia%20Perez&dni=12345678">Guardar Datos</A> 
</BODY> 
</HTML> 

Donde podemos apreciar que con los datos introducidos por el cliente (en un formulario, o por otros medios), llamamos a una página de tratamiento de esos datos. Los parámetros que se pasan son: 

Nombre: Parámetro Valor 
nombre: Jose 
apellidos: Garcia Perez 
dni: 12345678 

Los carácteres %20 que muestra el ejemplo entre los apellidos hacen referencia al caracter espacio en codificación UTP. 

También es posible pasar parámetros a otra página a partir de campos de un formulario. En este caso, los nombres de los parámetros vienen dados por los nombres que hay que asignar a dichos campos, y la página que los trata o recoge se especifica con el atributo ACTION de la etiqueta FORM. 

<%@ LANGUAGE="VBScript" %> 
<HTML> 
<HEAD> 
<TITLE><TITLE> 
</HEAD> 
<BODY> 

<FORM METHOD="POST" ACTION="guardar.asp"> 
<INPUT TYPE="TEXT" NAME="nombre"> 
<INPUT TYPE="TEXT" NAME="apellidos"> 
<INPUT TYPE="TEXT" NAME="dni"> 
<INPUT TYPE="SUBMIT"> 
</FORM> 

</BODY> 
</HTML> 

Con este código el procesador de ASP se encarga de construir internamente una llamada igual a la vista en el ejemplo anterior. La manera general de especificar la llamada a una página con parámetros, por lo tanto, es: 

{nombre_pagina}.asp?{nom_var1}={valor1}[&{nom_var2}={valor2}...] 

Lo que está encerrado entre llaves puede ser prácticamente, cualquier cadena válida de caracteres y lo que está escrito en negrita debe aparecer tal como está. 

Bases de datos 

Declarar el driver de base de datos 

Sin duda alguna, lo más importante que hay que saber respecto al manejo de bases de datos en ASP (presupuestos unos ligeros conocimientos en SQL y Access), es la inicialización del driver de base de datos. Existen dos maneras de hacerlo, a saber: 

La primera consiste en declarar un DSN de Sistema a través de ODBC. Para ello iremos al botón Inicio de nuestro sistema Windows, y desde allí a la opción Configuración y después a Panel de Control. En la ventana que aparece debemos dirigirnos a ODBC (o a ODBC de 32 bits, según el sistema), y se nos abrirá una nueva ventana con una serie de solapas. Nos vamos a DSN de sistema. 

En este punto vamos a añadir nuestro nuevo DSN para la base de datos que queremos tratar. Para ello seleccionamos en botón Agregar. Se abre una ventana que lleva por título Crear un nuevo origen de datos en el que se nos muestran los drivers de base de datos disponibles en nuestro sistema. Seleccionamos el deseado, en nuestro caso Microsoft Access Driver y pulsamos Finalizar. 

Hecho esto se abre una nueva ventana, de nombre ODBC Microsoft Access 97 Setup. En el campo Data Source Name debemos escribir el identificador que emplearemos para la base de datos (si por ejemplo se trata de una base de datos de libros cuyo archivo se llama biblio.mdb, podríamos llamarla libros). Luego presionamos el botón Select para seleccionar el archivo de base de datos dentro de la jerarquía de directorios del sistema, y tras esto pulsamos Ok. Y ya podremos hacer referencia a ese origen de datos desde nuestras páginas. 

Esta primera opción es muy rápida de configurara, sin embargo, es muy frecuente desarrollar las páginas en una máquina y ponerlas en otra (un servidor propiamente dicho), por lo que resulta lioso tener un DSN para cada base de datos del sistema. 

La segunda es un poco más pesada, por el hecho de que hay que incluir una serie de líneas de código en cada página que haga uso de la base de datos, pero es mucho más flexible, puesto que si cambiamos de sistema, no debemos crear un nuevo DSN. 

La declaración del driver debe hacerse antes de que se escriba algo en el documento HTML de salida, y es tan simple como esto: 

<%@ LANGUAGE="VBScript" %> 
<% 
' Declaramos el objeto de conexión a la base de datos 
Set ConexionBD = Server.CreateObject("ADOdb.Connection" 
' Abrimos el objeto con el driver específico 
ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & Server.Mappath("/ruta/bd.mdb" 
%> 
<HTML> 

Vemos que en la sentencia ConexionBD.Open, en la parte DBQ=" tenemos lo siguiente Server.Mappath(), que es una variable que devuelve la ruta local del directorio raíz del servidor Web, y el parámetro que le pasamos hace referencia a la situación de la base de datos dentro de la jerarquía del servidor. Veamos el siguiente ejemplo. 

Si tenemos nuestro servidor Web (http://127.0.0.1 ó localhost) en un directorio del sistema denominado C:Inetpub, y nuestra base de datos estará en C:Inetpubbibliotecalibros.mdb, en Server.Mappath deberemos indicar lo siguiente: 

ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & Server.Mappath("/biblioteca/libros.mdb" 

Atención, cuando nos referimos al sistema de directorios local utilizamos la barra () para separar los directorios, pero cuando hacemos referencia al servidor, se separan con el otro tipo de barra (/). 

Con esto hemos cumplido con el primer paso, definir el driver para utilizar la base de datos, pero todavía no podemos realizar ninguna consulta ni modificación. Para ello tenemos que definir lo que en Basic se conoce como RecordSet, que no es más que una agrupación lógica de registros (algo parecido a una variable de tabla lógica). 

Realizar operaciones con la base de datos 

Para ver qué es un RecordSet y para que sirve volvamos otra vez al ejemplo: 

<%@ LANGUAGE="VBScript" %> 
<% 
' Declaramos el objeto de conexión a la base de datos 
Set ConexionBD = Server.CreateObject("ADOdb.Connection" 
' Abrimos el objeto con el driver específico 
ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & Server.Mappath("/biblioteca/libros.mdb" 
Set RS = ConexionBD.Execute("select * from libros" 
%> 
<HTML> 

Con esto conseguimos que el objeto RS (RecordSet) esté enlazado con el resultado de una consulta de la tabla libros de la base de datos libros.mdb, es decir, que contenga los valores, de alguna manera. 

Pero todavía no tenemos resultados visibles de que la operación se haya completado con éxito. Si hemos fallado en algo, en cambio, es muy probable que tengamos una poco prometedora página en nuestro visualizador con algún tipo de error. Mas seamos optimistas, si ponemos el código de arriba con algunos aditamentos podremos observar los datos de esa base de datos, en el navegador y en tiempo real. 

<%@ LANGUAGE="VBScript" %> 
<% 
' Declaramos el objeto de conexión a la base de datos 
Set ConexionBD = Server.CreateObject("ADOdb.Connection" 
' Abrimos el objeto con el driver específico 
ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & Server.Mappath("/biblioteca/libros.mdb" 
Set RS = ConexionBD.Execute("select * from libros" 
%> 
<HTML> 
<HEAD> 
<TITLE>Consulta de Libros</TITLE> 
</HEAD> 
<BODY> 
<% 
' Como la bd no está vacía hacemos un tratamiento hasta que no queden registros... 
Do while not RS.EOF 
' Escribimos en la salida los datos que nos interesa 
Response.Write("<P>T&iacute;tulo: " & RS("titulo" & "<BR>" 
Response.Write("Autor: " & RS("autor" & "</P>" 
' nos movemos al siguiente registro 
RS.MoveNext 
Loop 
%> 
</BODY> 
</HTML>

 
   
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis