Professional Documents
Culture Documents
Veremos algunas de las caracteristicas mas importantes de esta tecnologia, las otras las
descubriremos a medida que se avanza en este tutorial.
Como Funciona
Aqui estan pasa a paso como funciona una pagina ASP.
1.
2.
3.
4.
Noten que para el usuario no existe diferencia en ASP y HTML por que a su navegador siempre llega
codigo HTML puro, el unico que requiere un trabajo extra es el servidor el cual tiene que procesar el
codigo ASP y tranformarlo en HTML para su posterior envio al cliente.
Como utilizarlo
Para utilizarlo nesecitamos un servidor que procese nuestras paginas ASP, para ello existe el Internet
Information Sever bajo Windows NT o 2000 y bajo Windows 95/98 esta el Personal Web Server que
viene el CD de Instalacion de Windows 98 o en el CD del Visual Studio.
A la hora de instalar el PWS hay que seguir los pasos de una instalacion tipica de un programa, pero
hay que prestar atencion en el momento que nos pide el directorio de publicacion web, es decir el
directorio en donde se guardaran nuestras paginas web se puede dejar el que nos ofrese el PWS por
defecto o lo podemos modificar, si lo modificamos, por ejemplo ponemos que el directorio de
publicacion web es "C:\Paginas Webs" tenemos que guardar nuestras pagina dentro de este directo.
Una ves instalado reiniciamos la PC y al volver tendremos un icono en la barra de notificacion de
Windows desde este icono podemos iniciar el PWS, aclaremos que el PWS tiene dos estados Iniciado y
Detenido, obiamente nuestro sitio solo funcionara cuando este el PWS iniciado.
Bueno una ves abierto el PWS nos vamos al sector llamado "Avanzada" desde aca configuramos las
opciones avanzadas del servidor, lo mas importante es la configuracion del directorio, seleccionamos
"Home" y hacemos click en "Modificar Propiedades", aqui seleccionamos el directorio que habiamos
elejido como publicacion web, apretamos "Aceptar" y volvemos a las opciones avanzadas. Ahora
destildamos "Habitar Documento Predeterminado" y habilitamos "Permitir Exploracion de directorios",
volvemos a la seccion "Principal" y hacemos click en el link para abrir nuestro site.
VBScript - Introduccion
Por medio de VBScript podemos crear nuestras paginas ASP, debemos tener en cuenta que antes de
escribir cualquier codigo ASP debemos abrir nuestro codigo con el simbolo '<%' y al finalizar cerrarlo
con '%>'
<%
'este es un comentario
Response.Write ("Mi Primer Pagina ASP")
%>
Podemos abrir archivo nuevo agregarle el codigo anterior guardarlo como "hola.asp" dentro de nuestro
directorio de publicacion web abrir el PWS y ver el resultado en el navegador.
VBScript es un lenguaje script derivado de Visual Basic asi que tambien hereda sus funciones basicas
a continuacion veremos algunas de las mas utilizadas.
Variables
La forma de declaran variables es por medio de la palabra 'Dim', aclaremos que la declaracion de
variables no es necesaria, salvo que al inicio de nuestra pagina ASP pongamos la palabra clave 'Option
Explicit' que hace que la declaracion de variables sea necesaria si no nos daria un error.
<%
Option Explicit
Dim I 'declaramos la variable
I= 14 ' le asignamos un valor
Response.Write (I) 'mostramos su valor en el navegador
%>
Condicionales
El condicional mas utilizado en cualquier lenguaje es el famoso IF, VBScript no podia quedarse afuera,
el modo de uso es poner la palabra clave 'If' despues la condicion a evaluar, luego 'Then' y el codigo a
ejecutar si se cumple la condicion dada, al finalizar se cierra el bloque 'If' con la palabra clave 'End If'
<%
Dim I
I = 14
If I = 14 Then
Response.Write ("La variable I es igual a 14")
End If
%>
Tambien extiste la alternativa 'Else' (sino), es decir sino se cumple la condicion hacer lo siguiente,
veamos un ejemplo
<%
Dim I
I = 14
If I = 14 Then
Response.Write ("La variable I es igual a 14")
Else
Response.Write ("La variable I es distinta a 14")
End If
%>
Fijense que pusimos 'I = 14' tambien podemos hacer otro tipo de condicion como puede ser distinto 'I
<> 14', mayor 'I > 14', menor 'I < 14', mayor o igual 'I >= 14', menor o igual 'I <= 14'
Bucles
VBScript posee un bucle llamador 'For' que repite una accion la cantidad de veces indicada
<%
Dim I
For I = 1 to 5
Response.Write ("Esto se repite 5 veces")
Next
%>
Podemos modificar el numero 5 y poner un 10 y lo repetira 10 veces, tambien podemos modificar el
numero 1 por el 3 y el 5 por el 6, esto hara que el bucle se repita 3 veces, '3 to 6' (desde 3 hasta 6),
tambien podemos indicar el incremento que tendra por medio de la palabra clave 'step'
<%
Dim I
For I = 1 to 10 step 2
Response.Write ("Esto se repite de dos en dos, i = " & i)
Next
%>
Gracias a esto podemos hacer un bucle inverso por ejemplo de 10 a 1
<%
Dim I
For I = 10 to 1 step -1
Response.Write ("i = " & i)
Next
%>
La palabra clave 'Next' indica el final del bucle, es decir se repite todo lo que esta entre el 'For' y 'Next'
While..Wend
Este bucle a diferencia del 'For' repite una accion siempre que se cumpla una condicion, veamos un
ejemplo
<%
Dim I
I = 0 'inicializa i igual a 0
While I <> 10 'repita mientras i sea distinto a 10
Response.Write ("i = " & i) 'muestra por pantalla el valor de i
I = I + 1 'incrementa i en uno
Wend
%>
Cuando agregamos la palabra clave 'Wend' estamos diciendo que repita todo el codigo incluido entre
While y Wend
Objeto Response
Este objeto ASP es del tipo integrado, es decir no tenemos que crear una instancia del mismo para
poder utilizarlo, su funcion es enviar informacion al cliente (navegador).
<%
Dim dtmHour
dtmHour = Hour(Now())
If dtmHour < 12 Then
Response.Write "Buenos das"
Else
Response.Write "Hola"
End If
%>
PROPIEDADES
Buffer
Esta propiedad es del tipo boolean (true/false) e indica si la pagina se alamacena en el buffer del
servidor antes de ser enviada, es decir si esta true envia la pagina al cliente recien cuando este toda
cargada y si esta false la envia a medida que la procesa. Se debe utilizar antes de haver enviado algun
resultado al cliente. Si el servidor utilizado tiene la version de ASP 2.0 el valor predeterminado de esta
propiedad es false y en cambio la version es la 3.0 (Windows 2000) el valor predeterminado es true.
Ejemplo
<%Response.Buffer = TRUE%>
Expires
Esta propiedad indica el tiempo, en minutos, que la pagina se guarda el el cache del navegador, si este
valor se pone a 0 no se utiliza el cache del navegador
Ejemplo
ExpiresAbsolute
Esta propiedad indica hasta que dia y hora la pagina se guarda en el cache del navegador.
Ejemplo
Cookies
Crea una cookie en la maquina del usuario. Una cookies es un archivo con formato de texto en el cual
el se puede guardar informacion. Las cookies por lo general se utilizan para controles de acceso,
personalizacion de paginas y estadisticas. El siguiente ejemplo crea una cookie llamada 'fecha' la cual
contiene el valor devuelto por la funcion 'date' que nos devuelve la fecha actual
Ejemplo
<% Response.cookies("fecha").expires="2/12/2001"%>
Esto hace que la cookie se borre en la fecha indicada, si creamos otra cookie llamada 'fecha' esta
sobreescribira a la otra, si queres ver la forma de recuperar el valor de una cookie hace click aqui.
METODOS
End
Este metodo detiene el proceso de la pagina ASP y envia lo ya procesado al navegador
Ejemplo
<%Response.End%>
Flush
Este metodo envia el contenido del buffer al navegador siempre y cuando la propiedad Buffer se true,
si la propiedad Buffer es igual a false se producira un error
Ejemplo
<%Response.Flush%>
Redirect (cadena_url)
Este metodo redirecciona la pagina actual a la pasada como parametro.
Ejemplo
<%Response.Redirect "otra_pagina.asp"%>
Write (cadena)
Este metodo escribe en el navegador la cadena padada como parametro, tengan en cuenta que
tambien se pueden enviar etiquetas HTML y concatenar variable con el operador & (VBScript).
Ejemplo
<%Response.Write ("<b>hola!!!</b>%>
Objeto Request
Este objeto ASP es del tipo integrado, es decir no tenemos que crear una instancia del mismo para
poder utilizarlo, por medio de este objeto podes tener acceso a la informacion que el navegador pasa
al servidor.
PROPIEDADES (COLECCIONES)
Form
Esta propiedad es una coleccion que contiene todos los elementos de un formulario (<form>) pasado
al archivo ASP con el metodo POST (<form method='post'>), la forma de acceder a el valor de un
elemento del formulario es la siguiente...
<%=Request.Form("nombre_elemento")%>
Ejemplo
--------------formulario.htm---------------<HTML>
<HEAD>
</HEAD>
<BODY>
<form action="procesa_formulario.asp" method="POST">
Nombre:<input type="Text" name="nombre" maxlength="20"><br>
Apellido:<input type="Text" name="apellido" maxlength="30"><br>
<input type="Submit" name="Submit" value="Enviar">
</form>
</BODY>
</HTML>
--------------procesa_formulario.asp-------<HTML>
<HEAD>
</HEAD>
<BODY>
<% Response.Write ("nombre:" & Request.Form("nombre"))%>
<% Response.Write ("apellido:" & Request.Form("apellido")) %>
</BODY>
</HTML>
Cookies
Recupera una cookie almacenada en la maquina del usuario. Una cookies es un archivo con formato de
texto en el cual el se puede guardar informacion. Las cookies por lo general se utilizan para controles
de acceso, personalizacion de paginas y estadisticas. El siguiente ejemplo recupera la cookie llamada
'fecha' que creamos anteriormente.
Ejemplo
QueryString
Esta coleccion contiene todos los valores pasados como parametros a una pagina ASP. La formas de
pasar parametros a una pagina ASP son varias una es por medio de formularios utilizando el metodo
'GET' y la otra es generandolo 'manualmente'...
http://www.servidor_xxx.com/pagina_asp.asp?nombre=jose&apellido=perez
Esa es la manera de pasar parametros a una pagina ASP, luegop del la direccion URL se pone el signo
'?' y a continuacion todos los parametros con sus respectivos valores separados por el simbolo '&'.
Ejemplo
-----------------------pasa_parametros.asp------------------<HTML>
<HEAD>
</HEAD>
<BODY>
<A HREF="lee_parametros.asp?nombre=jose">click aca! </A>
</BODY>
</HTML>
-----------------------lee_parametros.asp---------------------<%
Response.Write (Request.QueryString("nombre") & "<br>")
%>
ServerVariables
Esta coleccion nos da acceso a todas las variables de entorno del servidor.
Ejemplo
<%
Response.Write (Request.ServerVariables("REMOTE_ADDR"))
Response.Write (Request.ServerVariables("SERVER_SOFTWARE"))
%>
Objeto Server
Este objeto ASP es del tipo integrado, es decir no tenemos que crear una instancia del mismo para
poder utilizarlo, por medio de este objeto podes tener acceso a funciones utiles del servidor.
PROPIEDADES
ScriptTimeout
Esta propiedad determina el tiempo maximo en segundos que se espera para ejecutar la pagina ASP. Si
la pagina tarda mas segundos en ser procesada se produce un error. El valor predeterminado es 90
segundos.
Ejemplo
METODOS
CreateObject (id_objeto)
Este es uno de los metodos mas importantes y nos permite crear objetos a partir de los cuales vamos a
trabajar. Como unico parametro se especifica el nombre del objeto a crear. Al crear el objeto este se le
asigna a la variable establecida por medio de la palabra clave SET, esta variable hereda todos los
metodos, propiedades y eventos del objeto creado.
Ejemplo
Execute (path)
Este metodo ejecuta una pagina ASP dentro de otra, su unico parametro es la ruta de la pagina a
ejecutar. Este metodo solo esta disponible en la version 3.0 de ASP.
Ejemplo
----------pagina_llama.asp------<HTML>
<BODY>
Hola <%Server.Execute("respuesta.asp")%> !
</BODY>
</HTML>
----------respuesta.asp---------<%
Response.Write "Pedro"
%>
HTMLEncode (cadena)
Este metodo evita que la cadena pasada como parametro sea interpretada como lenguaje HTML.
Ejemplo
MapPath (path)
Devuelve la ruta completa del archivo pasado como parametro.
Ejemplo
Objeto Session
Este objeto ASP es del tipo integrado, es decir no tenemos que crear una instancia del mismo para
poder utilizarlo, el mismo sireve para compartir informacion de un usuario entre las paginas del sitio.
Por defecto el objeto session se crea al ingresar el usuario a nuestro sitio y se destruye cuando lo
abandona o cuando pasan 20 minutos sin actividad del usuario.
PROPIEDADES
SessionID
Esta propiedad devuelve un ID que identifica a un usuario. Este ID es unico, no se puede modificar y lo
crea automaticamente el servidor.
Ejemplo
Timeout
Esta propiedad determina el tiempo en minutos que durara la sesion del usuario antes de ser
destruida, por defecto su valos es de 20 minitos.
Ejemplo
METODOS
Abandon
Este metodo proboca el abandono forzado de la session, destruye todas la variables de sesion .
Ejemplo
<%Session.Abandon %>
VARIABLES DE SESION
Una utilidad muy buena que nos permite el objeto session es crear variables y poder compartirlas en
todas la paginas de nuestro sitio algo asi como una variable global pero con una diferencia bastante
grande dado que cada usuario que ingrese a nuestra pagina tendra un valor distinto en cada variable.
En el ejemplo que sigue a continuacion se muestra la forma de uso.
Ejemplo
----------pagina_1.asp------<HTML>
<BODY>
<%Session("Dia") = "Lunes"%>
</BODY>
</HTML>
----------pagina_2.asp---------<%
Response.Write Session("Dia")
%>
TIPOS DE DATOS
Id
Autonumerico
Titulo
Texto
Genero
Texto
Ingresale algunos datos para poder utilizarla. Bueno ya tenemos la base de datos con informacion
adentro, lo que vamos a hacer ahora es desde ASP ver todo el contenido de la tabla que hemos
creado. Para ello creamos un archivo ASP con el nombre 'muestra_temas.asp' y en su interior
agregamos el siguiente codigo...
<%
Dim BDD ' variable que se encargara de la base de datos
Dim TABLA ' variable que se encarga de la tabla
'creamos los objetos que manejan la base de datos y la tabla
Set BDD = Server.CreateObject("ADODB.Connection")
Set TABLA = Server.CreateObject("ADODB.Recordset")
'abrimos la base de datos
BDD.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" +
Server.MapPath("temas.mdb"))
'abrimos la tabla
TABLA.Open "TemasMusicales", BDD ' indicamos el nombre de la tabla y la
base de datos
'ahora recorremos toda la tabla y mostramoslos datos
While NOT TABLA.EOF 'recorre la tabla hasta que EOF sea verdadero
Response.Write "titulo:" & TABLA("Titulo") & "<br>"
Response.Write "genero:" & TABLA("Genero") & "<br>"
Wend
TIPOS DE DATOS
Id
Autonumerico
Marca
Texto
Color
Texto
Esta tabla llevara el nombre de 'Autos' y en su interior contendra la informacion de una cantidad X de
autos, te recomiendo que llenes la tabla con datos, podes repetir las marcas y los colores.
<%
Dim BDD ' variable que se encargara de la base de datos
Dim TABLA ' variable que se encarga de la tabla
Dim SQL 'variable que contendra la consulta SQL
'creamos los objetos que manejan la base de datos y la tabla
Set BDD = Server.CreateObject("ADODB.Connection")
Set TABLA = Server.CreateObject("ADODB.Recordset")
'abrimos la base de datos
BDD.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" +
Server.MapPath("autos.mdb"))
%>
Noten que declaramos una variable llamada 'SQL' en la cual vamos a poner la cadena que forme la
consulta a la tabla 'Autos', asi que entre el codigo anterior y el que esta a continuacion deben
asignarle a la variable 'SQL' la consulta a realizar.
<%
TABLA.Open SQL, BDD ' hacemos la consulta
'ahora recorremos toda la tabla y mostramoslos datos
While NOT TABLA.EOF 'recorre la tabla hasta que EOF sea verdadero
Response.Write "marca:" & TABLA("Titulo") & "<br>"
Response.Write "color:" & TABLA("Genero") & "<br><br>"
Wend
'cerramos todo y liberamos los objetos
TABLA.Close
BDD.Close
Set BDD = Nothing
Set TABLA = Nothing
%>
Bueno, realizaremos nuestra primer consulta, seleccionaremos todos los autos de color rojo, para esto
tenemos que armar la consulta, recuerden que el codigo que hay a continuacion va entre medio de los
2 anteriores
SQL = "SELECT * FROM Autos WHERE Color = 'Rojo' AND Marca = 'BMW'"
Noten que agregamos el operador AND (Y) es decir, Color igual a rojo Y con la marca BMW, ahora
veamos lo contrario, buscaremos todos los BMW pero que no sean de color rojo
SQL = "SELECT * FROM Autos WHERE Marca = 'BMW' AND NOT Color = 'Rojo'"
Y si queremos que todo esto aparesca ordenado debemos agregar la palabra 'ORDER BY' y especificar
el campo por el cual queremos ordenar
SQL = "SELECT * FROM Autos WHERE Marca = 'BMW' AND NOT Color = 'Rojo'
ORDER BY Marca"
Podemos especificar mas de un campo para ordenar, para esto debemos separarlos por comas
SQL = "SELECT * FROM Autos WHERE Marca = 'BMW' AND NOT Color = 'Rojo'
ORDER BY Marca, Color"
Y la forma de mostrarlos, ascendente o descendente
SQL = "SELECT * FROM Autos WHERE Marca = 'BMW' AND NOT Color = 'Rojo'
ORDER BY Marca, Color DESC"
Tambin puede crear instancias de objetos con alcance de sesin o de aplicacin. Para obtener ms
informacin, consulte Establecer el alcance de los objetos.
Alcance de sesin
Para asignar alcance de sesin a una variable, almacnela en el objeto Session asignando un valor a una
entrada con nombre del objeto. Por ejemplo, los siguientes comandos almacenan dos nuevas variables en el
objeto Session:
<%
Session("Nombre") = "Juan"
Session("Apellido") = "Soto"
%>
Para recuperar la informacin del objeto Session, tenga acceso a la entrada con nombre mediante la directiva
de resultado (<%=) o Response.Write. En el ejemplo siguiente se utiliza la directiva de resultado para
presentar el valor actual de Session("Nombre"):
Reciba nuestra bienvenida,<%= Session("Nombre") %>
Puede almacenar las preferencias del usuario en el objeto Session y despus tener acceso a dichas
preferencias para determinar qu pgina hay que devolver al usuario. Por ejemplo, puede permitir que los
usuarios especifiquen la versin en texto del contenido de la primera pgina de la aplicacin y aplicar esta
opcin a las siguientes pginas de la aplicacin que el usuario visite.
<%
strScreenResolution = Session("ScreenResolution")
If strScreenResolution = "Low" Then
%>
sta es la versin de texto de la pgina.
<% Else %>
sta es la versin multimedia de la pgina.
<%End If %>
Nota Si hace referencia a una variable con alcance de sesin ms de una vez en una secuencia de
comandos, piense en asignarle una variable local, como en el ejemplo anterior, para mejorar el rendimiento.
Alcance de aplicacin
Para asignar alcance de aplicacin a una variable, almacnela en el objeto Application asignando un valor a
una entrada con nombre del objeto. Por ejemplo, el comando siguiente almacena en el objeto Application un
saludo especfico de una aplicacin:
<% Application("Saludo") = "Reciba nuestra bienvenida al Departamento de ventas!" %>
Para recuperar la informacin del objeto Application, utilice la directiva de resultado de ASP (<%=) o
Response.Write para tener acceso a la entrada con nombre desde cualquier pgina posterior de la
aplicacin. En el ejemplo siguiente se utiliza la directiva de resultado para presentar el valor de
Application("Saludo"):
<%= Application("Saludo") %>
De nuevo, si hace referencia a una variable con alcance de aplicacin en su secuencia de comandos
repetidamente, debe de asignarle una variable local para mejorar el rendimiento.
Utilizar constantes
Una constante es un nombre que representa un nmero o una cadena. Algunos de los componentes de base
que se proporcionan con ASP, como ActiveX Data Objects (ADO), definen constantes que se pueden utilizar
en las secuencias de comandos. Un componente puede declarar constantes en la biblioteca de tipos del
componente, un archivo que contiene informacin acerca de los objetos y los tipos aceptados por un
componente COM. Despus de haber declarado una biblioteca de tipos en su archivo .asp puede usar las
constantes definidas en cualquier secuencia de comandos en el mismo archivo .asp. Igualmente, puede
declarar una biblioteca de tipos en el archivo Global.asa para usar las constantes definidas en cualquier
archivo .asp de la aplicacin.
Para declarar una biblioteca de tipos, utilice la etiqueta <METADATA> en su archivo .asp o Global.asa. Por
ejemplo, para declarar la biblioteca de tipos de ADO, utilice las siguientes instrucciones:
<!--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib" UUID="{00000205-00000010-8000-00AA006D2EA4}"-->
O bien, en lugar de hacer referencia al identificador nico universal (UUID) de la biblioteca de tipos, puede
hacer referencia a la biblioteca de tipos mediante la ruta del archivo:
<!-- METADATA TYPE="typelib" FILE="c:\program files\common files\system\ado\msado15.dll"-->
Entonces puede usar las constantes ADO en el archivo .asp donde declar la biblioteca de tipos o en un
archivo que reside en una aplicacin que contiene un archivo Global.asa con la declaracin de biblioteca de
tipos ADO. En el ejemplo siguiente, adOpenKeyset y adLockOptimistic son constantes ADO:
<%
'Crea y abre el objeto Recordset.
Set rsCustomersList = Server.CreateObject("ADODB.Recordset")
rstCustomerList.ActiveConnection = cnnPubs
rstCustomerList.CursorType = adOpenKeyset
rstCustomerList.LockType = adLockOptimistic
%>
En la siguiente tabla se enumeran las bibliotecas de tipos y los identificadores UUID que se utilizan con ms
frecuencia:
Biblioteca de tipos
UUID
{00000205-0000-0010-8000-00AA006D2EA4}
{0E064ADD-9D99-11D0-ABE5-00AA0064D470}
{090ACFA1-1580-11D1-8AC0-00C0F00910F9}
{B758F2F9-A3D6-11D1-8B9C-080009DCC2FA}
break
case 1:
msg = "Reciba nuestra bienvenida al servidor Web <%= strServerName%>. La hora local es <%= dtmTime
%>."
break
case 2:
msg = "Este servidor utiliza <%= strServerSoftware %>."
break
}
document.write(msg)
}
-->
</SCRIPT>
Escribir procedimientos
Un procedimiento es un grupo de comandos de secuencia de comandos que realizan una tarea especfica y
puede devolver un valor. Puede definir sus propios procedimientos e invocarlos repetidamente desde sus
secuencias de comandos.
Puede poner las definiciones de los procedimientos en el mismo archivo .asp que llama a los procedimientos
o bien puede poner los procedimientos utilizados con ms frecuencia en un archivo .asp compartido y utilizar
la directiva #include para incluirlo en otros archivos .asp que llamen a los procedimientos. Como alternativa,
puede encapsular dicha funcionalidad en un componente COM.
Definir procedimientos
Las definiciones de los procedimientos pueden encontrarse dentro de etiquetas <SCRIPT> y </SCRIPT> y
deben seguir las reglas del lenguaje de secuencias de comandos. Utilice el elemento <SCRIPT> para los
procedimientos escritos en lenguajes distintos del lenguaje principal para secuencias de comandos. Sin
embargo, utilice los delimitadores de las secuencias de comandos (<% y %>) en los procedimientos escritos
en el lenguaje principal de secuencias de comandos.
Cuando utilice la etiqueta HTML <SCRIPT>, debe emplear dos atributos para asegurar el proceso de la
secuencia de comandos por parte del servidor. La sintaxis de la etiqueta <SCRIPT> es la siguiente:
<SCRIPT LANGUAGE=JScript RUNAT=SERVER>
<BODY>
<% Echo %>
<BR>
<% printDate() %>
</BODY>
</HTML>
<%
Sub Echo
Response.Write "<TABLE>" & _
"Response.Write "<TR><TH>Nombre</TH><TH>Valor</TH></TR>"
Set objQueryString = Request.QueryString
For Each strSelection In objQueryString
Response.Write "<TR><TD>" & p & "</TD><TD>" & _
FormValues(strSelection) & "</TD></TR>"
Next
Response.Write "</TABLE>"
End Sub
%>
<SCRIPT LANGUAGE=JScript RUNAT=SERVER>
function PrintDate()
{
var x
x = new Date()
Response.Write(x.toString())
}
</SCRIPT>
Nota Las llamadas de VBScript a las funciones JScript no distinguen entre maysculas y minsculas.
Existen tres formas bsicas de recopilar informacin de un formulario HTML mediante ASP:
Un archivo .htm esttico puede contener un formulario que enve sus valores a un archivo .asp.
Un archivo .asp puede crear un formulario que enve informacin a otro archivo .asp.
Un archivo .asp puede crear un formulario que se enve informacin a s mismo; es decir, al
archivo .asp que contiene el formulario.
Los dos primeros mtodos funcionan igual que los formularios que interactan con otros programas de
servidor Web, con la nica diferencia de que con ASP se simplifica mucho la tarea de recuperar y procesar la
informacin. El tercer mtodo es especialmente til y se muestra en la seccin Validar los datos de los
formularios.
Obtener datos de los formularios
El objeto Request de ASP proporciona dos colecciones que facilitan la tarea de recuperar informacin de los
formularios enviados con las peticiones URL.
La coleccin QueryString
La coleccin QueryString recupera los valores del formulario pasados al servidor Web como texto a
continuacin del signo de interrogacin de la direccin URL de la peticin. Los valores del formulario se
pueden anexar a la direccin URL de la peticin mediante el mtodo GET de HTTP o, manualmente, si se
agregan los valores del formulario a la direccin URL.
Si el ejemplo del formulario anterior utilizara el mtodo GET (METHOD = "GET") y el usuario escribiera Juan,
Soto y 30, se enviara la siguiente peticin URL al servidor:
http://Workshop1/Painting/Profile.asp?Nombre=Juan&Apellido=Soto&Edad=30&EstadoUsuario=Nuevo
El archivo Profile.asp podra contener la siguiente secuencia de comandos para procesar formularios:
Hola, <%= Request.QueryString("nombre") %> <%= Request.QueryString("apellido") %>.
Tiene <%= Request.QueryString("edad") %> aos.
<%
If Request.QueryString("EstadoUsuario") = "Nuevo" Then
Response.Write"sta es su primera visita a este sitio Web"
End if
%>
En este caso, el servidor Web devolvera el texto siguiente al explorador Web del usuario:
Hola Juan Soto. Tiene 30 aos. sta es su primera visita a este sitio Web
La coleccin QueryString tambin tiene un parmetro opcional que puede utilizar para tener acceso a uno de
los mltiples valores que se encuentran en el cuerpo de la peticin URL (con el mtodo GET). Tambin puede
utilizar la propiedad Count para contar el nmero de veces que aparece un determinado tipo de valor.
Por ejemplo, un formulario que contenga un cuadro de lista con varios elementos puede generar la siguiente
peticin:
http://OrganicFoods/list.asp?Comida=Manzanas&Comida=Aceitunas&Comida=Pan
Podra utilizar el siguiente comando para contar los diferentes valores:
Request.QueryString("Comida").Count
Para presentar los tipos de valores, Lista.asp podra contener la secuencia de comandos siguiente:
<%
lngTotal = Request.QueryString("Comida").Count
For i = 1 To lngTotal
Response.Write Request.QueryString("Comida")(i) & "<BR>"
Next
%>
La secuencia de comandos anterior mostrara:
Manzanas
Aceitunas
Pan
Tambin puede mostrar la lista completa de valores como una cadena delimitada por comas, del modo
siguiente:
<% Response.Write Request.QueryString("Item") %>
Aparecera la cadena siguiente:
Manzanas, Aceitunas, Pan
Coleccin Form
Cuando utiliza el mtodo GET de HTTP para pasar a un servidor Web valores de un formulario grande y
complejo, corre el riesgo de perder informacin. Algunos servidores Web tienden a restringir el tamao de la
cadena de peticin de URL, por lo que los valores de los formularios grandes pasados con el mtodo GET
podran quedar truncados. Si necesita enviar una gran cantidad de informacin desde un formulario a un
servidor Web, debe utilizar el mtodo POST de HTTP. El mtodo POST, que enva los datos de los formularios
en el cuerpo de la peticin HTTP, puede enviar un nmero casi ilimitado de caracteres a un servidor. Puede
utilizar la coleccin Form del objeto Request de ASP para recuperar los valores enviados mediante el mtodo
POST.
La coleccin Form almacena valores de manera similar a la coleccin QueryString. Por ejemplo, si un
usuario completa un formulario escribiendo una larga lista de nombres, se podran leer los nombres con la
secuencia de comandos siguiente:
<%
lngTotal = Request.Form("Comida").Count
For i = 1 To lngTotal
Response.Write Request.Form("Comida")(i) & "<BR>"
Next
%>
Validar los datos de los formularios
Un formulario Web bien diseado suele incluir una secuencia de comandos del cliente que valida los datos
proporcionados por el usuario antes de enviar la informacin al servidor. Las secuencias de comandos de
validacin pueden comprobar si el usuario escribi un nmero vlido o si un cuadro de texto est en blanco.
Imagine que su sitio Web incluye un formulario que permite calcular la tasa de retorno de una inversin.
Probablemente querr comprobar si un usuario realmente escribi texto o nmeros en los campos apropiados
del formulario, antes de enviar al servidor informacin que podra no ser vlida.
En general, lo mejor es realizar en el cliente tantas comprobaciones como sea posible. Adems, de poder
preguntar antes al usuario por los errores, la validacin en el cliente mejora el tiempo de respuesta, reduce la
carga del servidor y libera ancho de banda para otras aplicaciones.
La siguiente secuencia de comandos del cliente valida los datos escritos por el usuario (en este caso, la
secuencia de comandos determina si el nmero de cuenta que escribi el usuario es realmente un nmero)
antes de enviarlos al servidor:
<SCRIPT LANGUAGE="JScript">
function ComprobarNumero()
{
if (isNumeric(document.UserForm.AcctNo.value))
return true
else
{
alert("Escriba un nmero de cuenta vlido.")
return false
}
}
//Funcin para determinar si el valor del formulario es un nmero.
//Nota: El mtodo isNaN JScript es un mtodo ms elegante para determinar si
//un valor no es un nmero. Sin embargo, algunos exploradores no admiten este mtodo.
function isNumeric(str)
{
for (var i=0; i < str.length; i++)
{
var ch = str.substring(i, i+1)
if( ch < "0" || ch>"9" || str.length == null)
{
return false
}
}
return true
}
</SCRIPT>
<FORM METHOD="Get" ACTION="balance.asp" NAME="FormularioUsuario" ONSUBMIT="return
CheckNumber()">
<INPUT TYPE="Text" NAME="NumCuen">
<INPUT TYPE="Submit" VALUE="Enviar">
</FORM>
Sin embargo, si la validacin de un formulario requiere el acceso a una base de datos debe considerar la
utilizacin de la validacin del formulario en el servidor. Una forma muy til de realizar la validacin en el
servidor es crear formularios que se enven la informacin a s mismos. Es decir, el archivo .asp contiene en
realidad el formulario HTML que recibe los datos del usuario. (Recuerde, puede utilizar ASP para interactuar
con secuencias de comandos del cliente y cdigo HTML. Para obtener ms informacin, consulte Interactuar
con secuencias de comandos del cliente.) Los datos escritos vuelven al mismo archivo, que se encarga de
validar la informacin y avisa al usuario si stos no son correctos.
Mediante este mtodo se pueden mejorar las caractersticas de uso y la respuesta de los formularios basados
en Web. Por ejemplo, si se incluye informacin del error junto al campo del formulario en el que se escribi la
informacin incorrecta, ser ms fcil para el usuario descubrir el origen del error. (Normalmente, los
formularios basados en Web reenvan las peticiones a una pgina Web independiente que contiene
informacin del error. Los usuarios que no comprendan esta informacin podran sentirse frustrados.)
Por ejemplo, la secuencia de comandos siguiente determina si un usuario escribi un nmero de cuenta
vlido, para lo que se enva la informacin a s misma (Verify.asp) y llama a una funcin definida por el usuario
que realiza una consulta a una base de datos:
<%
strAcct = Request.Form("Cuenta")
If Not AccountValid(strAcct) Then
ErrMsg = "<FONT COLOR=Red>El nmero de cuenta que ha escrito no es vlido.</FONT>"
Else
Procesa los datos del usuario
.
.
.
Server.Transfer("Complete.asp")
End If
Function AccountValid(strAcct)
Aqu se incluir una secuencia de comandos o una llamada a un mtodo de un componente de conexin con
una base de datos.
End Function
%>
<FORM METHOD="Post" ACTION="Verify.asp">
Nmero de cuenta: <INPUT TYPE="Text" NAME="Cuenta"> <%= ErrMsg %> <BR>
<INPUT TYPE="Submit">
</FORM>
En este ejemplo, la secuencia de comandos se encuentra en un archivo llamado Verify.asp, el mismo archivo
que contiene el formulario HTML y, para enviarse la informacin a s mismo, especifica Verify.asp en el atributo
ACTION.
Importante Si utiliza JScript para la validacin en el servidor, asegrese de colocar un par de parntesis
vacos detrs del elemento de la coleccin Request (QueryString o Form) al asignar la coleccin a una
variable local. Sin el parntesis la coleccin devolver un objeto en lugar de una cadena. La secuencia de
comandos siguiente muestra el mtodo correcto para asignar variables con JScript:
<%
var Nombre = Request.Form("Nombre")();
var Contrasea = Request.Form("Contrasea")();
if(Nombre > "")
{
if(Nombre == Contrasea)
Response.Write("El nombre y la contrasea son iguales".)
else
Response.Write("El nombre y la contrasea son diferentes".);
}
%>
VBScript presenta el mismo comportamiento si la coleccin contiene varios valores separados por comas o
con los que se pueda crear un ndice. Esto significa que tanto para VBScript como para JScript, adems de
colocar un par de parntesis detrs del elemento de la coleccin Request, necesitar especificar el ndice del
valor deseado. Por ejemplo, la siguiente lnea en JScript devuelve slo el primero de los varios valores de un
elemento de un formulario:
var Nombre = Request.Form("Nombre")(1);
El primer paso en la creacin de una aplicacin de datos en Web consiste en proporcionar un mtodo para
que ADO encuentre e identifique el origen de datos. Para ello se utiliza una cadena de conexin, una serie de
argumentos separados mediante un punto y coma que definen parmetros como el proveedor del origen de
datos y la ubicacin del mismo. ADO utiliza la cadena de conexin para identificar el proveedor OLE DB y para
dirigir al proveedor al origen de datos. El proveedor es un componente que representa el origen de datos y
que expone la informacin en la aplicacin en forma de conjuntos de filas.
En la tabla siguiente se enumeran las cadenas de conexin de OLE DB para varios orgenes de datos
habituales:
Origen de datos
Microsoft(r) Access
Oracle
Para proporcionar compatibilidad con versiones anteriores, el proveedor OLE DB para ODBC admite la
sintaxis de las cadenas de conexin ODBC. En la tabla siguiente se enumeran las cadenas de conexin
ODBC que se utilizan habitualmente:
Microsoft Access
SQL Server
Oracle
Microsoft Excel
Microsoft Excel 97
Paradox
Texto
La cadena de conexin no contiene espacios en blanco ni antes ni despus del signo igual (=).
En este caso, el mtodo Open del objeto Connection se refiere a la cadena de conexin.
Ejecutar consultas SQL con el objeto Connection
Con el mtodo Execute del objeto Connection puede emitir comandos al origen de datos, como consultas de
SQL (Lenguaje de consulta estructurado). (SQL, lenguaje estndar para comunicarse con bases de datos,
define comandos para recuperar y actualizar informacin.) El mtodo Execute acepta parmetros que
especifiquen el comando (o la consulta), el nmero de registros de datos a los que afecta y el tipo de
comando que se utiliza.
La siguiente secuencia de comandos utiliza el mtodo Execute para enviar una consulta con un comando
INSERT de SQL, que inserta datos en una tabla concreta de la base de datos. En este caso, el bloque
de la secuencia de comandos inserta el nombre Jos Lugo en una tabla de la base de datos llamada
Customers.
<%
'Define la cadena de conexin OLE DB.
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Datos\Empleados.mdb"
'Crea la instancia del objeto Connection y abre una conexin con la base de datos.
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString
'Define la instruccin SELECT de SQL.
strSQL = "INSERT INTO Customers (FirstName, LastName) VALUES ('Jos','Lugo')"
'Utiliza el mtodo Execute para enviar una consulta SQL a la base de datos.
cnn.Execute strSQL,,adCmdText + adExecuteNoRecords
%>
Observe que se especifican dos parmetros en la instruccin que se utiliza para ejecutar la consulta:
adCmdText y adExecuteNoRecords. El parmetro opcional adCmdText especifica el tipo de comando e
indica que el proveedor debe evaluar la instruccin de consulta (en este caso, una consulta SQL) como una
definicin textual de un comando. El parmetro adExecuteNoRecords indica a ADO que no debe crear un
conjunto de registros de datos si no se devuelven resultados a la aplicacin. Este parmetro slo funciona con
los tipos de comandos definidos como texto, como las consultas SQL, o con procedimientos almacenados de
bases de datos. Aunque los parmetros adCmdText y adExecuteNoRecords son opcionales, debe
especificarlos al utilizar el mtodo Execute para mejorar as el rendimiento de la aplicacin de datos.
Importante Los parmetros ADO, como adCmdText, deben estar definidos para poder utilizarlos en una
secuencia de comandos. Un mtodo cmodo para definir los parmetros consiste en utilizar una biblioteca de
tipos de componentes, que es un archivo que contiene definiciones para todos los parmetros ADO. Para
implementar una biblioteca de tipos de componentes debe declararla antes. Agregue la etiqueta siguiente
<METADATA> al archivo .asp o a Global.asa para declarar la biblioteca de tipos ADO:
<!--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib" UUID="{00000205-00000010-8000-00AA006D2EA4}"-->
Si desea obtener ms detalles acerca de cmo implementar las bibliotecas de tipos de componentes, consulte
la seccin Utilizar constantes del tema Utilizar variables y constantes.
Adems del comando INSERT de SQL, puede utilizar los comandos UPDATE y DELETE de SQL para
modificar y quitar informacin de la base de datos.
Con el comando UPDATE de SQL puede modificar los valores de los elementos de una tabla de la base de
datos. La siguiente secuencia de comandos usa el comando UPDATE para cambiar todos los campos
FirstName de la tabla Customers a Juan en todas las filas cuyo campo LastName contenga el apellido Soto.
<%
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Datos\Empleados.mdb"
cn.Execute "UPDATE Customers SET FirstName = 'Juan' WHERE LastName = 'Soto' ",,adCmdText +
adExecuteNoRecords
%>
Para quitar determinados registros de una tabla de la base de datos, utilice el comando DELETE de SQL. La
siguiente secuencia de comandos quita todas las filas de la tabla Customers cuyo apellido sea Soto:
<%
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Datos\Empleados.mdb"
cn.Execute "DELETE FROM Customers WHERE LastName = 'Soto'",,adCmdText + adExecuteNoRecords
%>
Nota Debe tener mucho cuidado al utilizar el comando DELETE de SQL. Un comando DELETE que no
vaya acompaado de una clusula WHERE eliminar todas las filas de la tabla. Asegrese de incluir la
clusula WHERE de SQL, que especifica las filas exactas que se van a eliminar.
Utilizar el objeto Recordset para manipular los resultados
Para recuperar datos, examinar resultados y modificar su base de datos, ADO proporciona el objeto
Recordset. El objeto Recordset tiene las funciones necesarias para, dependiendo de las restricciones de las
consultas, recuperar y presentar un conjunto de filas, o registros, de una base de datos. El objeto Recordset
mantiene la posicin de cada registro devuelto por la consulta, lo que permite recorrer los resultados de uno
en uno.
Recuperar un conjunto de registros
Las buenas aplicaciones de datos Web emplean el objeto Connection para establecer un vnculo, y el objeto
Recordset para manipular los datos devueltos. Al combinar las funciones especializadas de ambos objetos
puede desarrollar aplicaciones de bases de datos que realicen casi cualquier tarea de tratamiento de datos.
Por ejemplo, la siguiente secuencia de comandos del servidor utiliza el objeto Recordset para ejecutar un
comando SELECT de SQL. El comando SELECT recupera un conjunto especfico de informacin basndose
en las restricciones de la consulta. La consulta tambin contiene una clusula WHERE de SQL, que se utiliza
para establecer el criterio de seleccin de la consulta. En este ejemplo, la clusula WHERE limita la consulta a
todos los registros que contengan el apellido Soto en la tabla Customers de la base de datos.
<%
'Establece una conexin con un origen de datos.
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Datos\Empleados.mdb"
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString
rs.MoveNext
Loop
Else
Response.Write "Hay menos de " & rs.RecordCount & " nuevos pedidos."
End If
rs.Close
%>
Combinar formularios HTML y el acceso a bases de datos
Las pginas Web que contienen formularios HTML pueden permitir que los usuarios consulten de forma
remota una base de datos y recuperen informacin concreta. Con ADO puede crear secuencias de comandos
sorprendentemente sencillas que recopilen informacin del formulario del usuario, creen una consulta
personalizada para la base de datos y devuelvan informacin al usuario. Mediante el objeto Request de ASP
puede recuperar la informacin escrita en los formularios HTML e incorporar dicha informacin a sus
instrucciones SQL. Por ejemplo, el siguiente bloque de secuencia de comandos inserta en una tabla la
informacin suministrada por un formulario HTML. La secuencia de comandos recopila informacin del
usuario con la coleccin Form del objeto Request.
<%
'Abre una conexin mediante el objeto Connection. El objeto Command
'no tiene un mtodo Open para establecer la conexin.
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Catlogo\Semillas.mdb"
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString
'Crea una instancia del objeto Command
'y utiliza la propiedad ActiveConnection para adjuntar
'la conexin al objeto Command.
Set cm= Server.CreateObject("ADODB.Command")
Set cmn.ActiveConnection = cnn
'Define la consulta SQL.
cmn.CommandText = "INSERT INTO MySeedsTable (Type) VALUES (?)"
'Define la informacin de configuracin de los parmetros de la consulta.
cmn.Parameters.Append cmn.CreateParameter("type",adVarChar, ,255)
en Personal, la aplicacin Ventas tomar prestado el archivo de la aplicacin Personal y lo ejecutar como si
fuera parte de ella.
ASP proporciona tambin el comando Server.Execute que permite transferir un archivo, ejecutar el contenido
y volver al archivo que inici la transferencia. Si tiene conocimientos de VBScript, le ayudar pensar en
Server.Execute como anlogo a una llamada a un procedimiento, con la diferencia de que en lugar de
ejecutar un procedimiento se ejecuta un archivo .asp completo.
Por ejemplo, la secuencia de comandos siguiente muestra cmo podra utilizar Server.Execute para incluir
archivos .asp de forma dinmica:
<%
.
.
If blnUseDHTML Then
Server.Execute("DHTML.asp")
Else
Server.Execute("HTML.asp")
End If
.
.
%>
Mientras el archivo de destino pertenezca a una aplicacin del mismo servidor, la aplicacin inicial se
transferir a este archivo, ejecutar su contenido y continuar con la ejecucin del archivo que inici la
transferencia. Igual que sucede con Server.Transfer, al ejecutar un archivo .asp ste se comporta como si
formara parte de la aplicacin inicial. Sin embargo, Server.Execute, no funciona cuando los servidores son
distintos. Para obtener ms informacin, consulte Server.Execute.
Enviar contenido al explorador
A medida que se procesa una secuencia de comandos ASP, el texto y los grficos que no se encuentren entre
delimitadores ASP o etiquetas <SCRIPT> se devuelve directamente al explorador. Tambin puede enviar
explcitamente contenido al explorador mediante el objeto Response.
Enviar contenido
Para enviar contenido al explorador desde delimitadores ASP o desde un procedimiento, utilice el mtodo
Write del objeto Response. Por ejemplo, la instruccin siguiente enva un saludo diferente al usuario
dependiendo de si el usuario ha visitado la pgina con anterioridad o no:
<%
If blnFirstTime Then
Response.Write "<H3 ALIGN=CENTER>Reciba nuestra bienvenida a la pgina de introduccin</H3>"
Else
Response.Write "<H3 ALIGN=CENTER>Gracias por volver a la pgina de introduccin</H3>"
End If
%>
Fuera de un procedimiento, no tiene que utilizar Response.Write para devolver contenido al usuario. El
contenido que no se encuentra dentro de delimitadores de secuencia de comandos se enva directamente al
explorador, que da formato y presenta este contenido. Por ejemplo, la secuencia de comandos siguiente
produce el mismo resultado que la secuencia de comandos anterior:
<H3 ALIGN=CENTER>
<% If blnFirstTime Then %>
Reciba nuestra bienvenida a la pgina de introduccin.
<% Else %>
Gracias por volver a la pgina de introduccin.
<%End If %>
</H3>
Intercale secuencias de comandos y cdigo HTML cuando tenga que devolver el resultado una vez o cuando
sea ms cmodo agregar instrucciones a texto HTML existente. Utilice Response.Write cuando no desee
dividir una instruccin con delimitadores o cuando desee generar la cadena de texto que vaya a devolver al
explorador. Por ejemplo, podra generar una cadena de texto que creara una fila de una tabla con los valores
enviados por un formulario HTML:
Response.Write "<TR><TD>" & Request.Form("Nombre") _
& "</TD><TD>" & Request.Form("Apellido") & "</TD></TR>"
Request.Form devuelve los valores enviados por un formulario HTML (consulte Procesar los datos
introducidos por el usuario).
Nota El carcter & es el carcter de continuacin de cadenas de VBScript. El carcter de subrayado (_) es el
carcter de continuacin de lnea de VBScript.
Variables: Muestra cmo crear y manipular variables en una secuencia de comandos ASP.
Bucles: Proporciona un ejemplo de las tres construcciones ms comunes para crear bucles, For ...
Next, Do ... Loop y While ... Wend.
Operadores condicionales: Ilustra el uso de los operadores condicionales, como If ... Then, en las
secuencias de comandos ASP.
Matrices: Muestra cmo crear, administrar y tener acceso a matrices.
Archivos de inclusin del servidor: Muestra el uso de los archivos de inclusin del servidor.
Funciones y procedimientos: Muestra cmo crear y utilizar funciones y procedimientos en una
secuencia de comandos ASP.
Variables
Introduccin
Todas las aplicaciones escritas a lo largo de la historia, independientemente del lenguaje de programacin
empleado, han utilizado variables de algn tipo y las secuencias de comandos ASP no son una excepcin.
Tanto VBScript como JScript permiten crear y administrar variables de forma fcil y sencilla.
Cada lenguaje realiza de forma diferente la declaracin de variables. JScript y VBScript son bastante flexibles
en lo que respecta a las variables y su declaracin. En VBScript, cualquier variable se considera
automticamente de tipo Variant si se declara inicialmente con la instruccin Dim. A cada variable se le
asigna un subtipo, como Numeric y Array. JScript es parecido; la variable se declara inicialmente con la
instruccin var. En general, ambos lenguajes tienden a realizar automticamente gran parte de la
administracin de tipos de datos, incluida la conversin de tipos. De hecho, ni siquiera es necesario emplear
las instrucciones Dim o var para utilizar una nueva variable; en sus respectivos lenguajes son opcionales.
Paseo por el cdigo
Este ejemplo declara varios tipos diferentes de variables, realiza algunas operaciones sencillas en ellas y las
muestra al explorador cliente con los delimitadores especiales de secuencias de comandos <% = ...%>. Se
asigna un entero a la variable intVariable, se suma a s mismo y se enva el resultado al explorador cliente. A
la variable StrVariable se le asigna el nombre, se agrega a Soto y se enva al explorador cliente. Del mismo
modo se declaran o crean, inicializan, manipulan y muestran los valores booleanos y las fechas.
Observaciones
El ltimo paso de la demostracin de la variable de fecha es especialmente interesante. En VBScript, primero
se asigna la variable a una cadena de fecha literal y despus se muestra. Despus se restablece y se asigna
el valor devuelto por la funcin Now de VBScript, que devuelve la hora actual del sistema. El ejemplo de
JScript utiliza la funcin Date de JScript para establecer el literal inicial, para lo que pasa parmetros a la
funcin, y establecer despus la fecha actual del sistema en la variable, sin pasar parmetros a la funcin.
<TITLE>Variable Sample</TITLE>
</HEAD>
<BODY BGCOLOR="White" TOPMARGIN="10" LEFTMARGIN="10">
<!-- Display header. -->
<FONT SIZE="4" FACE="ARIAL, HELVETICA">
<B>Variable Sample</B></FONT><BR>
<HR>
<H3>Integer Manipulation</H3>
<%
'Declare variable.
Dim intVar
'Assign the variable an integer value.
intVar = 5
%>
<P><%= intVar %> + <%= intVar %> = <%= intVar + intVar %></P>
<HR>
<H3>String Manipulation</H3>
<%
'Declare variable.
Dim strVar
'Assign the variable a string value.
strVar = "Jemearl"
%>
<P>This example was done by <%= strVar + " Smith" %></P>
<HR>
<H3>Boolean Manipulation</H3>
<%
'Declare variable.
Dim blnVar
'Assign the variable a Boolean value.
blnVar = true
'Output message based on value.
If (blnVar) Then
Response.Write "<P>The Boolean value is True.</P>"
Else
Response.Write "<P>The Boolean value is False.</P>"
End If
%>
<HR>
<H3>Date and Time</H3>
<%
'Declare variable.
Dim dtmVar
'Assign the variable a value.
dtmVar = #08 / 27 / 97 5:11:42pm#
%>
<P>The date and time is <%= dtmVar %>
<%
'Set the variable to the web server date and time.
dtmVar = Now()
%>
<P>The <STRONG>system</strong> date and time is <%= dtmVar %></P>
</BODY>
</HTML>
Bucles
Introduccin
Los bucles representan uno de los mecanismos ms importantes de control de flujo en un lenguaje de
programacin. Las construcciones en bucle proporcionan la base de cualquier aplicacin que deba realizar
una tarea de forma repetitiva, como sumar 1 a una variable, leer un archivo de texto o procesar y enviar un
mensaje de correo electrnico.
Paseo por el cdigo
VBScript y JScript proporcionan varios mecanismos para realizar bucles. Este ejemplo demuestra las tres
instrucciones ms comunes para realizar bucles, For ... Next, Do ... Loop y While ... Wend. Estas tres
instrucciones son ligeramente diferentes y la situacin indicar cul de las tres es la ms indicada. Sin
embargo, para este ejemplo, cada tipo de instruccin de bucle se utiliza para realizar la misma tarea: imprimir
un saludo cinco veces, cada una de ellas con una fuente mayor. En cada instruccin de bucle se inicializa la
variable i y se define la condicin de prueba, de forma que i nunca sea mayor que 5. La variable se
incrementa en 1 unidad en cada iteracin del bucle.
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>Looping</TITLE>
</HEAD>
<BODY BGCOLOR="White" TOPMARGIN="10" LEFTMARGIN="10">
<!-- Display header. -->
<FONT SIZE="4" FACE="ARIAL, HELVETICA">
<B>Looping with ASP</B></FONT><BR>
<HR SIZE="1" COLOR="#000000">
<!-- Looping with a For loop. -->
<%
Dim intCounter
For intCounter = 1 to 5 %>
<FONT SIZE=<% = intCounter %>>
Hello World with a For Loop!<BR>
</FONT>
Funciones y procedimientos
Introduccin
Las funciones y los procedimientos proporcionan un mtodo para evitar tener que escribir varias veces un
mismo bloque de cdigo cada vez que desee realizar una tarea determinada. Tanto VBScript como JScript
permiten llamar a una funcin o a un procedimiento desde cualquier lugar de una secuencia de comandos.
Este ejemplo demuestra cmo puede crear y utilizar estas herramientas en secuencias de comandos ASP.
Si no tiene ninguna funcin en la pgina ASP, el motor ASP se limita a procesar el archivo completo, de
principio a fin, cada vez que lo pide un explorador cliente. Sin embargo, las funciones y los procedimientos se
ejecutan slo cuando se les llama, no con el resto del cdigo.
En VBScript o JScript las funciones y los procedimientos se indican mediante la instruccin Function.
Adems, VBScript establece una diferencia entre una funcin que devuelve un valor y otra que no lo hace; la
primera de ellas se indica con la instruccin Sub, que la identifica como una subrutina.
Paseo por el cdigo
Este ejemplo define una funcin, PrintOutMsg, que toma como parmetros un mensaje y un nmero que
especifica cuntas veces se escribir el mensaje en el explorador cliente mediante el mtodo
Response.Write. Para este ejemplo, la funcin se limita a devolver al explorador cliente el nmero de veces
que se imprimi el mensaje.
Observaciones
Es importante tener en cuenta el atributo RUNAT de la etiqueta <SCRIPT>. SI no se incluye, ASP asumir que
se trata de una secuencia de comandos del cliente y devolver el cdigo al explorador para que lo procese.
Esto hara que ASP no reconociera la llamada a la funcin PrintOutMsg, devolviera un error y anulara la
ejecucin.
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
'Define Server Side Script Function.
Function PrintOutMsg(strMsg, intCount)
Dim i
'Output Message count times.
For i = 1 to intCount
Response.Write(strMsg & "<BR>")
Next
'Return number of iterations.
PrintOutMsg = intCount
End Function
</SCRIPT>
<HTML>
<HEAD>
<TITLE>Functions</TITLE>
</HEAD>
<BODY BGCOLOR="White" TOPMARGIN="10" LEFTMARGIN="10">
<!-- Display header. -->
<FONT SIZE="4" FACE="ARIAL, HELVETICA">
<B>Server Side Functions</B></FONT><BR>
<P>
The function "PrintOutMsg" prints out a specific message a set number of times.<P>
<%
'Store number of times function printed message.
Dim intTimes
'Call function.
intTimes = PrintOutMsg("This is a function test!", 4)
'Output the function return value.
Response.Write("<p>The function printed out the message " & intTimes & " times.")
%>
</BODY>
</HTML>
Introduccin
Puede utilizar formularios para recopilar datos de los usuarios, pero tambin puede utilizarlos para mostrar
informacin. Por ejemplo, si un explorador cliente tiene acceso al motor de bsqueda de su directorio de
telfonos, querr mostrar los resultados de la bsqueda. La secuencia de comandos de bsqueda (que
tambin puede implementar mediante ASP) acepta los datos introducidos por el usuario, tiene acceso a la
base de datos y enva el resultado al formulario de presentacin en una cadena de consulta. Este ejemplo es
una demostracin sencilla de cul sera la apariencia del formulario.
Paseo por el cdigo
Para este ejemplo, los datos se incluyen en el cdigo de la secuencia de comandos pero, obviamente, la
informacin podra provenir de un formulario interactivo, de una base de datos o de un archivo de texto. Al
iniciarse el ejemplo se inicializan las variables. Despus, crea un formulario con las etiquetas HTML <FORM>
y define cuatro cuadros de texto. Por ltimo, con los delimitadores de secuencias de comandos del servidor <
%= ... %>, la secuencia de comandos llena los cuadros de texto con los valores establecidos en la
inicializacin.
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<%
'Create and set variables that will be used in populating 'the form. In a typical application,
these values would come from a database or text file.
Dim strFirstName
Dim strLastName
Dim strAddress1
Dim strAddress2
Dim blnInfo
strFirstName = "John"
strLastName = "Doe"
strAddress1 = "1 Main Street"
strAddress2 = "Nowhere ZA, 12345"
%>
<HTML>
<HEAD>
<TITLE>PopulateForm Sample</TITLE>
</HEAD>
Consulta sencilla: Muestra cmo utilizar ADO y ASP para realizar consultas sencillas en una base de
datos.
Limitar los resultados de una consulta: Muestra cmo es posible utilizar ASP y ADO en las
secuencias de comandos para limitar el nmero de filas devueltas en un conjunto de registros.
Consulta desplazable: Muestra cmo realizar con ADO una consulta desplazable multidireccional.
Agregar o eliminar registros: Presenta las tcnicas necesarias para agregar y eliminar registros de un
origen de datos mediante ASP y ADO.
Actualizar registros: Muestra cmo utilizar ADO en una aplicacin para actualizar los registros
existentes.
Ejecutar procedimientos almacenados: Muestra cmo utilizar ADO con las secuencias de comandos
ASP para ejecutar procedimientos almacenados de la base de datos.
Para obtener ms informacin acerca de ADO y de las herramientas de acceso a datos de Microsoft en
general, consulte la documentacin de Microsoft Data Access.
Consulta sencilla
Introduccin
Aunque una base de datos puede ser un sistema muy complicado y las herramientas de acceso a datos
deben ser eficaces y sensibles, es igualmente importante que las tareas sencillas de acceso a bases de datos
sean fciles de realizar. Este ejemplo demuestra cmo ADO proporciona un mtodo sencillo para realizar este
tipo de tareas.
Paseo por el cdigo
El objetivo de esta aplicacin de ejemplo es obtener un pequeo conjunto de registros de una base de datos
de Microsoft Access e imprimir el resultado. El primer paso consiste en crear una instancia del objeto
Connection mediante el mtodo Server.CreateObject. El ejemplo utiliza la instancia del objeto Connection
para abrir el proveedor de datos OLE DB y, despus, para ejecutar un comando SELECT de SQL y as
obtener todos los registros de la tabla Autores. Para terminar, la secuencia de comandos recorre la coleccin
del conjunto de registros obtenido y muestra los resultados. Despus se cierran el conjunto de registros y la
conexin con el origen de datos OLE DB.
Importante OLE DB debe estar correctamente configurado en el servidor para que este ejemplo funcione
correctamente.
Dim filePath
Dim Index
' Map authors database to physical path
filePath = Server.MapPath("authors.mdb")
' Create ADO Connection Component to connect
' with sample database
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath
' Execute a SQL query and store the results
' within recordset
Set oRs = oConn.Execute("SELECT * From Authors")
%>
oConn.close
%>
</BODY>
</HTML>
oConn.Execute "Delete From authors where author='Paul Enfield' and YearBorn = 1967 "
' Output Status Result
Response.Write("<p>Deleted Author: Paul Enfield, 1967")
%>
</BODY>
</HTML>
Actualizar registros
Introduccin
Este ejemplo muestra cmo utilizar ADO en una aplicacin para actualizar los registros existentes.
Paseo por el cdigo
Primero se utiliza CreateObject para crear una instancia del objeto Connection, que a su vez se utiliza para
abrir una conexin con el proveedor de datos OLE DB. Se utiliza de nuevo CreateObject para crear un objeto
Recordset vaco. Se configura la propiedad ActiveConnection para hacer referencia al nuevo objeto
Connection.
Despus se configura el nuevo conjunto de registros. El mtodo Recordset.Execute utiliza como parmetro
una cadena de comandos SQL. Este ejemplo utiliza una cadena de comandos UPDATE de SQL para realizar
la actualizacin en los registros adecuados de la base de datos.
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<!--METADATA TYPE="typelib"
uuid="00000205-0000-0010-8000-00AA006D2EA4" -->
<HTML>
<HEAD>
<TITLE>Update Database</TITLE>
</HEAD>
<BODY BGCOLOR="White" topmargin="10" leftmargin="10">
<!-- Display Header -->
<font size="4" face="Arial, Helvetica">
<b>Update Database</b></font><br>
MapPath
El mtodo MapPath asigna al directorio fsico correspondiente del servidor la ruta virtual o relativa
especificada.
Sintaxis
Server.MapPath( Ruta )
Parmetros
Ruta
Especifica la ruta virtual o relativa que se asignar a un directorio fsico. Si Ruta comienza con una barra
diagonal (/) o con una barra diagonal inversa (\), el mtodo MapPath devuelve la ruta como si Ruta fuera una
ruta virtual completa. Si Ruta no comienza con una barra diagonal, el mtodo MapPath devuelve una ruta
relativa al directorio del archivo .asp que se procesa.
Observaciones
El mtodo MapPath no comprueba si la ruta que devuelve existe en el servidor o si es vlida.
Como el mtodo MapPath asigna la ruta independientemente de si los directorios especificados existen o no,
puede utilizarlo para asignar una ruta a una estructura fsica de directorios y, despus, pasarla a un
componente que cree en el servidor el directorio o el archivo especificado.
Puede utilizar la sintaxis de ruta relativa para el parmetro Ruta si el valor de la propiedad
AspEnableParentPaths es TRUE (que es el valor predeterminado). Si le preocupa permitir que las secuencias
de comandos tengan acceso a la estructura fsica de directorios, puede deshabilitar esta caracterstica si
asigna el valor FALSE a la propiedad AspEnableParentPaths. Para ello puede utilizar el complemento
Servicios de Internet Information Server o una secuencia de comandos.
Ejemplo
Para los siguientes ejemplos, el archivo data.txt se encuentra en el directorio C:\Inetpub\Wwwroot\Script, al
igual que el archivo test.asp, que contiene las siguientes secuencias de comandos. El directorio
C:\Inetpub\Wwwroot se establece como directorio particular del servidor.
El siguiente ejemplo utiliza la variable de servidor PATH_INFO para asignar la ruta fsica al archivo actual. La
siguiente secuencia de comandos
<%= server.mappath(Request.ServerVariables("PATH_INFO"))%><BR>
produce el resultado
c:\inetpub\wwwroot\script\test.asp<BR>
Como los parmetros de la ruta de los siguientes ejemplos no empiezan con un carcter de barra diagonal, se
asignan de forma relativa al directorio actual, en este caso C:\Inetpub\Wwwroot\Script. Las siguientes
secuencias de comandos
<%= server.mappath("data.txt")%><BR>
<%= server.mappath("script/data.txt")%><BR>
Los dos ejemplos siguientes utilizan el carcter de barra diagonal para especificar que la ruta que se obtiene
debe buscarse como ruta virtual completa del servidor. Las siguientes secuencias de comandos
<%= server.mappath("/script/data.txt")%><BR>
<%= server.mappath("\script")%><BR>
producen el siguiente resultado
c:\inetpub\wwwroot\script\data.txt<BR>
c:\inetpub\wwwroot\script<BR>
Los siguientes ejemplos muestran cmo puede utilizar una barra diagonal (/) o una barra diagonal inversa (\)
para obtener la ruta fsica al directorio particular. Las siguientes secuencias de comandos
<%= server.mappath("/")%><BR>
<%= server.mappath("\")%><BR>
producen el siguiente resultado
c:\inetpub\wwwroot<BR>
c:\inetpub\wwwroot<BR>
El lenguaje ASP (Active Server Pages) o Pginas Activas de Servidor es una nueva
tecnologa desarrollada por Microsoft Corporation de reciente implantacin y uso a
nivel global en Internet. Quizs una de las funciones principales sea el acceso a Bases
de Datos de forma sencilla e intuitiva, cosa que antes con los cgi's se converta en una
accin ms que dificultosa para ms de un programador.
Para ello debemos tener en cuenta que:
- Se trata de una Estructura Cliente-Servidor. Esto es: el usuario de Internet (CLIENTE)
pide un recurso (SERVIDOR) y este le devuelve una pgina html con las
especificaciones elegidas por el usuario (desde colores de pantalla, registros de
usuarios, consultas....).
- Diseado para el funcionamiento bajo Windows NT Server e Internet Information
Server 3.0, aunque ya hay clientes para Linux y Unix, el funcionamiento no es tan
eficaz como se esperaba.
- Soporta multitud de Fuentes de Datos ODBC (Bases de Datos) como Access, SQL,
DBASE, FoxPro...
Para ello se define un objeto con SET, llamado oConexion (podramos haber
puesto el nombre que deseemos).
Le asignamos un objeto de servidor (server.createobject).
Si nos fijamos veremos que asignamos a una conexin ADODB (Active X Data
Object Data Base) el cual le indica al servidor que queremos establecer una
conexin con una base de datos. ADO, nos permite desarrollar aplicaciones ASP
Ahora debemos indicar donde est la base de datos para que el servidor la
encuentre. Existen 2 formas:
a.
Utilizando una ruta fsica:
server.mappath("../cgi-bin/datos.mdb")
A mi entender y por experiencia propia es la ms comoda y precisa.
Pues tan solo deberemos indicar el directorio donde se encuentra la base
de datos.
b.
oConexion.open "DSN=FuenteDatos;UID=Pepe;PWD=xxx"
DSN: Son orgenes de datos basados en archivos que pueden ser
compartidos entre todos los usuarios que tengan instalados los mismos
controladores y, por tanto, tienen acceso a la base de datos. Estos
orgenes de datos no necesitan estar dedicados a un usuario ni ser
locales en un equipo.
UID: Indica el "alias" que hemos especificado para la conexin.
PWD: Contrasea para el acceso a la conexin.
* Utilizaremos para crearla la "Fuente de Datos ODBC (Open Data Base
Connectivity) de 32 bits" del Panel de Control de Windows.
sqlstr="select * from tbusuario where usuario='"&Request.Form("usuario")&"' and
clave='"&Request.Form("clave")&"
Microsoft Access, localiza los datos de forma secuencial, teniendo en cuenta que
estamos a travs de Internet, el tiempo de ejecucin es muy importante. Para ello
utilizamos sentencias SQL y localizar a travs de los filtros que indiquemos el registro
buscado en un tiempo mnimo.
Seleccionamos todos los campos de la tabla.
Seleccionamos aquellos cuyo usuario y clave sean los que hemos escrito en el
formulario de la pgina anterior.
set oRsGeneric=oConexion.execute(sqlstr)
Creamos un RecorSet (tabla que contendr en mbito de sesin los datos que cumplan
una determinada caracterstica, en nuestro caso usuario y clave).
if orsgeneric.eof then
En caso de que el recordset est vaco significar que no hay datos para que
concuerden con ese usuario y clave y mostraremos por ejemplo un mensaje de error.
else
En caso contrario podremos manipular el registro. El usuario SI EXISTE!!
oRsGeneric.movefirst
Mueve el puntero del recordset al primer registro.
while not oRsGeneric.eof
Permite leer los registros que contenga el Recordset por filas.
for each item in orsGeneric.fields
Permite desplazarnos por los campos que tenga cada registro.
(item.name)
Hace referencia al nombre del campo (usuario, clave, nombre, email...)
(item.value)
Hace referencia al contenido del campo donde el puntero est situado.
oRsGeneric.movenext
Desplaza el puntero al registro siguiente.
oConexion.close()
Cierra la conexin con la base de datos.