+ All Categories
Home > Education > Tutorial de ASP

Tutorial de ASP

Date post: 05-Jul-2015
Category:
Upload: leomini
View: 2,720 times
Download: 3 times
Share this document with a friend
48
Active Server Pages ASP: Active Page Server 1.- INTRODUCCIÓN ASP (Active Server Page, página activa en el servidor), es la propuesta de Microsoft para crear páginas Web dinámicas. Se puede combinar con páginas HTML, secuencias de comandos y componentes ActiveX, para crear páginas y aplicaciones web interactivas. El sentido de ASP, es liberar espacio en el servidor: Las páginas HTML son estáticas y si el servidor tuviese que tenerlas guardadas ocuparían un espacio inmenso. La solución es tener una fuente de datos y dependiendo de las peticiones del cliente generar las páginas en ese momento. Cuando el cliente desconecta desaparecen dichas páginas. ASP, se basa en la programación para las redes TC-IP que se conoce con el nombre de programación cliente- servidor que consiste en desdoblar un programa en dos partes, una se ejecutará en el cliente y otra parte en el servidor. La parte cliente se encarga del interfaz e interacción con el usuario y la parte servidor se encarga de obtener y manipular los datos. Hasta ahora nosotros hemos creado aplicaciones con código HTML y algunas con código ejecutable, a través de JavaScript, pero siempre en el cliente, con nuestro navegador. A partir de ahora crearemos programas que serán ejecutados por el servidor y cuya salida se envía al navegador del cliente. Página 1 de 48
Transcript
Page 1: Tutorial de ASP

Active Server Pages

ASP: Active Page Server

1.- INTRODUCCIÓN

ASP (Active Server Page, página activa en el servidor), es la propuesta de Microsoft para crear páginas Web dinámicas.

Se puede combinar con páginas HTML, secuencias de comandos y componentes ActiveX, para crear páginas y aplicaciones web interactivas.

El sentido de ASP, es liberar espacio en el servidor: Las páginas HTML son estáticas y si el servidor tuviese que tenerlas guardadas ocuparían un espacio inmenso. La solución es tener una fuente de datos y dependiendo de las peticiones del cliente generar las páginas en ese momento. Cuando el cliente desconecta desaparecen dichas páginas.

ASP, se basa en la programación para las redes TC-IP que se conoce con el nombre de programación cliente- servidor que consiste en desdoblar un programa en dos partes, una se ejecutará en el cliente y otra parte en el servidor.

La parte cliente se encarga del interfaz e interacción con el usuario y la parte servidor se encarga de obtener y manipular los datos.

Hasta ahora nosotros hemos creado aplicaciones con código HTML y algunas con código ejecutable, a través de JavaScript, pero siempre en el cliente, con nuestro navegador. A partir de ahora crearemos programas que serán ejecutados por el servidor y cuya salida se envía al navegador del cliente.

Página 1 de 48

Page 2: Tutorial de ASP

Active Server Pages

2.- Modelo de Páginas ASP

2.1 - Cliente -> Servidor

Las páginas ASP comienzan a ejecutarse, cuando un usuario solicita un archivo .ASP al servidor web a través del navegador. El servidor web llama al motor ASP, que lee el archivo solicitado, ejecuta la secuencia de comandos y envía los resultados al ordenador del cliente. Puesto que la secuencia de comandos se ejecuta en el servidor y no en el cliente, es el servidor el que hace todo el trabajo para generar las páginas que se envían al explorador.

Las secuencias de comandos quedan ocultas al usuario, estos solo reciben el resultado de la ejecución en formato HTML. El servidor solo envía el resultado en código HTML interpretable por cualquier navegador.

3.- Concepto de PG. ASP

Active Server Page (ASP), es un entorno para crear y ejecutar aplicaciones dinámicas e interactivas en la web.

Se caracteriza por tener en un mismo archivo de extensión .asp código script, que se ejecuta en el servidor, y código HTML, que se ejecuta en el cliente.

Así pues, la gran ventaja que presentan las páginas ASP, es que engloba tanto páginas web con HTML, como scripts CGI (Common Gateway Interface). Una página ASP, puede consistir solo en código HTML (sería una página web normal) o bien solo código ejecutable (sería como un CGI), o bien ambos, ejecutable en el servido y ejecutable en el cliente.

Para crear páginas ASP, se utiliza un procesador de texto normal, no es necesario ningún editor especial.

Página 2 de 48

Page 3: Tutorial de ASP

Active Server Pages

4.- Software Necesario.

Para ejecutar una página .asp necesitamos un servidor WEB, y para ello tenemos dos opciones o bien instalamos un servidor como APACHE, o bien utilizamos un simulador de un servidor web como es el Internet Information Server.

Para instalar el IIS:

1) Inicio/Panel de control/Agregar-Quitar programas /Programas de windows/ Seleccionamos IIS

2) Para acceder a él: Inicio/Panel de Contrl/Administrador de Herramientas/IIS

3) Una vez instalado el servidor web que vamos a utilizar en local, el siguiente paso es crear un directorio virtual en el que alojaremos nuestras páginas.

4) Para visualizar las páginas en el navegador debemos introducir:

a. http://localhost/nombre -directorio-virtual/archivo.asp

b. Pinchamos en nuestra máquina que aparece dentro de Servicios de Internet Information

c. Nos vamos a “sitio web predeterminado” con el botón derecho del ratón seleccionamos: Nuevo/Directorio Virtual

d. Seguimos el asistente /Siguiente….. nos pide el nombre del directorio virtual: asp (por ejemplo) / Siguiente…. Nos pide el nombre del directorio físico que contiene los archivos .asp para ello pinchamos en Examinar seleccionamos la carpeta y finalizamos.

e. Para ejecutar un archivo .asp en el IIS seleccionamos el archivo, botón derecho/Explorar.

5) Otra opción bastante más sencilla es utilizar el Babyweb, que simula un servidor web. Funciona sin grandes problemas.

Página 3 de 48

Page 4: Tutorial de ASP

Active Server Pages

5.-MARCAS DE CÓDIGO <%............%>

ASP viene de forma nativa con dos motores de comandos, Visual Basic Script y Microsoft JScript. Pero puede instalar y utilizar otros motores de lenguajes como ReXX y Perl.

Para establecer el lenguaje principal de secuencias de comandos, en todas las páginas de una aplicación, hay que agregar la directiva <%@LANGUAGE=VBscript%> o bien <%@LANGUAGE=Javascript%>.

Por defecto, si no especificamos nada, el lenguaje utilizado es Visual Basic Script (VBScript). Si utilizamos las marcas <%...........%> sin especificar lenguaje utilizará por defecto el VBScript.

Tenemos otra forma de marcar el código ASP sin utilizar las etiquetas <%........%>:

1. <script LANGUAGE=”VBscript “ RUNAT=SERVER>

</script>

2. <script LANGUAGE=”JAVASCRIPT” RUNAT=SERVER>

</script>

Con “Runat= Server” estamos indicando que el código se ejecute en la parte del servidor

COMENTARIOS

Para escribir un comentario en VBScript utilizaremos el apóstrofe:

<% ‘este es un comentario de VBScript %>

Página 4 de 48

Page 5: Tutorial de ASP

Active Server Pages

6.-VARIABLES

Una variable es una pequeña sección de memoria de una computadora a la que se le asigna un nombre.

Página 5 de 48

Ver ejemplos:

1-Escribe-Texto

• 1Escribe-Texto-BVS.asp nos muestra cómo escribir texto variables

• 2Escribe-Texto-BVS.asp muestra declaración de vbles de forma implícia

• Error2.asp muestra la ejecución del código pero no nos dice dónde está el error

• Error3.asp con Option Explict nos indica dónde nos hemos equivocado.

Page 6: Tutorial de ASP

Active Server Pages

6.1.- TIPOS DE DATOS

Existen muchos tipos de datos que se pueden almacenar dentro de una variable.

1) Enteras (Integer) , sin parte fraccionaria

2) Float (numero de puntos flotantes), pueden tener un decimal p.ejem 5.1

• Podemos diferenciar Single y Double, la diferencia entre os dos tiene que ver con la precisión utilizada para almacenar el número. El tipo de datos Double requiere el doble de memoria que el tipo Single, pero obviamente mantiene un rango de números mucho más grande y con mayor precisión .

3) String (cadena de caracteres), siempre debe ir escrita entre comillas

4) Bolean (true o false),muy utilizadas en estructuras de control

5) Date (fecha)

6) Currency (dato de tipo dinero), se podrí utilizar un tipo de dato Single, pero este tipo en conjunto con una serie de funciones especiales de VBScript permite una mejor representación.

6.2.- DECLARACIÓN DE VARIABLES

Muchos lenguajes de programación requieren que, antes de utilizar una variable se indique al sistema el tipo de datos que va a almacenar.

En VBScript podemos realizar la declaración de dos formas:

1.- Declaración Implícita: No es necesario indicar al sistema (declarar) el tipo de dato que va a contener la variable (NO ES LO MÁS ACONSEJABLE)

mi_variable=2 Sería una variable con datos enteros

mi_variable=”Hola” Sería una variable que contiene cadena de caracteres

2.- Declaración Explícita: De esta forma antes de introducir cualquier variable deberemos introducir la siguiente línea <% OPTION EXPLCIT%> y además declararlas previamente con DIM.

¿Por qué utilizar declaraciones Explícitas en VBScript ¿ Veamos un ejemplo :

Página 6 de 48

Page 7: Tutorial de ASP

Active Server Pages

Archivo: Código 3/Error2.asp

<%@ Language=VBScript %>

<% miprimeravariable = 2 %>

<HTML>

<BODY>

La variable llamada "miprimeravariable" tiene un valor de

<%

Response.Write(miprmeravariable)

%>

</BODY>

</HTML>

En este caso hemos hecho una declaración implícita, si ejecutamos el código no nos dará ningún error, simplemente no mostrará el valor de “miprimeravariable”. Sin embargo si realizamos una declaración Explícita, nos indicará que el error está en el nombre de la variable, lo que nos ahorrará bastantes quebraderos de cabeza.

Archivo: Código 3/Error3.asp

<%@ Language=VBScript %>

<% Option Explicit %>

<% Dim miprimeravariable

miprimeravariable = 2

%>

<HTML>

<BODY>

La variable llamada "miprimeravariable" tiene un valor de

<%

Response.Write(miprmeravariable)

%>

</BODY>

</HTML>

Página 7 de 48

Ver ejemplos:

Declara-Vables

• DemoAsignacion.asp nos muestra cómo asignar valores a variables

• Error1.asp muestra declaración de vbles de forma implícia

• Error2.asp muestra la ejecución del código pero no nos dice dónde está el error

• Error3.asp con Option Explict nos indica dónde nos hemos equivocado.

Page 8: Tutorial de ASP

Active Server Pages

Normas que se suelen utilizar en VBscript para declarar variables y así saber qué tipo de variable es sin lugar a equivocarnos.

i (entero)Str (string)Dt (fecha)Cur (currency)Arr(array)

Ejemplo: inota=7m, strnombre=”Sergio”…etc

6.3 -MATRICES:

Existe otro tipo de datos fundamental, la matriz. Una matriz de variables es una secuencia de variables, con el mismo nombre, pero diferenciadas por un índice.

En nuestro ejemplo el (6) indica el límite superior de la matriz, siendo el límite inferior el (0).

<%@ Language=VBScript %><% Option Explicit Dim ArrDias(6), iIndice %><HTML><BODY><% iIndice = 3

arrDias(0) = "Domingo"

arrDias(1) = "Lunes"

Página 8 de 48

Page 9: Tutorial de ASP

Active Server Pages

arrDias(2) = "Martes"

arrDias(3) = "Miércoles"

arrDias(4) = "Jueves"

arrDias(5) = "Viernes"

arrDias(6) = "Sábado"

Response.Write ("iIndice tiene un valor de ")

Response.Write(iIndice) %> <BR>

arrDias(1) tiene un valor de

<% Response.Write(arrDias(1)) %> <BR>

arrDias(iIndice) tiene un valor de

<% Response.Write(arrDias(iIndice)) %> <BR>

arrDias(2+3) tiene un valor de

<% Response.Write(arrDias(2+3)) %> <BR>

arrDias(iIndice+1) tiene un valor de <% Response.Write(arrDias(iIndice+1)) %></BODY> </HTML>

Otra forma de asignar valores rápidamente a cada elemento de una matriz es utilizando la Función Array

Nuestro ejemplo anterior quedaría:

arrDias = Array(“Domingo”,”Lunes”,“Martes”,“Miércoles”,“Jueves”, “Viernes”, “Sábado”)

6.4.- CÓMO DETERMINAR EL TIPO DE VARIABLE

Existen dos tipos de funciones para determinar el tipo de datos que será almacenado en una variable.

Página 9 de 48

Page 10: Tutorial de ASP

Active Server Pages

1.- La primera función es VartType, que se utiliza de la siguiente manera:

VarType(nombre_variable) devolviendo un código entero que corresponde al tipo de datos.

1=> Es un dato no valido2=>Entero 3=>Entero largo4=>Singer5=>double6=>currency7=>date8=>string

2.- La segunda función es TypeName, ésta devuelve una cadena con el nombre del tipo de datos en lugar de un código. Se utiliza de la misma forma que la anterior : TypeName(nombre_variable)

Ejemplo:

<%@ Language=VBScript %>

<% Option Explicit Dim strNombre, iEdad %>

<HTML>

<BODY>

<% Response.Write("Antes de asignar un valor, strNombre es de tipo ")

Response.Write(TypeName(strNombre))

Response.Write(", que es el número del tipo ")

Response.Write(VarType(strNombre))

%>

7.- OPERADORES

=

+

-

*

Página 10 de 48

Page 11: Tutorial de ASP

Active Server Pages

/

5 Mod 3 =>2

Exponención 3^ 3= 3*3*3

Concatenación &

Operadores Lógicos ------AND, OR

Ejemplo:

<%@ Language=VBScript %>

<% Option Explicit

Dim iTermino1, iTermino2, sngAritmetica, sngGeometrica, strSalida %>

<HTML>

<BODY>

<%

iTermino1 = 5

iTermino2 = 16

strSalida = "El programa calcula los promedios de " & iTermino1 & _

" y " & iTermino2 & "<BR>"

Response.Write(strSalida)

sngAritmetica = iTermino1 + iTermino2

sngAritmetica = sngAritmetica / 2

sngGeometrica = (iTermino1 * iTermino2)^0.5

Página 11 de 48

Page 12: Tutorial de ASP

Active Server Pages

strSalida = "Su media aritmética es " & sngAritmetica & _

" y su media geométrica es " & sngGeometrica

Response.Write(strSalida) %>

</BODY> </HTML>

8.- ESTRUCTURAS DE CONTROL

8.1 -CONDICION “ IF “

Formato:

If condición then

Bloque de código

End If

8.2.- IF ANIDADOS

Formato :

If condición1 Then

Primer bloque de código

If condición2 Then

Segundo bloque de código

Else

Tercer bloque de código

Página 12 de 48

Page 13: Tutorial de ASP

Active Server Pages

End if

Else

Cuarto bloque de código

End if

No se debe utilizar muchas instrucciones If anidadas ya que dificulta la revisión rápida

8.3 INSTRUCCIONES FOR…….NEXT

Esta instrucción ejecuta un bloque de código un número especificado de veces, mientras incrementa un contador.

Formato:

For variable-contador = valor-inicio to valor- final Step valor-incremental

Bloque de código

Next

8.4.- INSTRUCCIONES Do While………Loop

Formato:

Do While condición

Bloque de código

Loop

El bloque de código se ejecuta mientras que la condición sea verdadera

Página 13 de 48

Page 14: Tutorial de ASP

Active Server Pages

8.5.- INSTRUCCIONES Do Until………Loop

Es muy parecida a la anterior , la única diferencia es que el ciclo se ejecuta hasta que la condición es verdadera y no falsa. Ambos tipos de instrucciones oueden realizar las mismas funciones, la única diferencia es que la condición se escribe en forma positiva o negativa

Formato:

Do Until condición

Bloque de código

Loop

Ver Ejemplos

3Estructuras de Control

Página 14 de 48

Page 15: Tutorial de ASP

Active Server Pages

9.- SUBRUTINAS

Las subrutinas también llamados procedimientos realizan acciones

Formato:

Sub nombre

Bloque de código

End Sub

La llamada a una subrutina indica al sistema que ejecute la subrutina y después regrese a la ejecución normal de la secuencia de comandos.

Dentro de la subrutina se puede crear un bucle for por ejemplo. Los procedimientos no devuelven un valor, sino que realizan la ejecución de lo que haydentro de él. La función principal será la de poder llamar el resultado obtenido en alguna otra parte del código.ç

Ejemplo:

Sub subEncabezado

For iCounter = 1 to 3

Response.Write("Su Nombre<BR>") NextEnd Sub

10.- FUNCIONES

Las funciones calculan valores.

Página 15 de 48

Page 16: Tutorial de ASP

Active Server Pages

Diferencia entre un procedimiento y una función :

o Los procedimientos no generan ningún resultado

o La forma de llamar a un procedimiento es mediante una línea

Por otra parte las funciones devuelven valores, lo que significa que una llamada a función puede colocarse en una expresión, se le pueden agregar elementos, etc.

Formato:

Function nombre_funcion (parámetros)

……

End Function

Para llamar a una función : Nombrefunción (listaparámetros), si la función no tiene parámetros se puede llamr ya sea con los paréntesis vacíos o sin paréntesis.

11.- PÁGINAS SSI (Server Side Include)

De los comandos SSI (Server Side Include), las páginas ASP sólo soportan el #include, aunque ciertamente se trata del más importante. Este comando es útil si tenemos código (bien sea HTML o ejecutable) que se va a repetir en distintas páginas web.

Por ejemplo, tenemos un pie de página común para todas nuestras páginas web. En lugar de escribir el código en todas ellas, creamos un archivo con el pie de página y lo incluimos en todas las páginas de nuestra web. No sólo ahorraremos trabajo, sino que

Página 16 de 48

Page 17: Tutorial de ASP

Active Server Pages

si queremos modificar el pie de página, bastará con modificar un archivo y automáticamente se reflejará el cambio en toda la web.

En el caso del código de servidor, resulta muy útil crear bibliotecas de funciones que se puedan reutilizar más adelante. Una forma de reutilizar funciones es guardarlas en archivos e incluir éstos cuando sea necesario. Esto es mucho mejor que copiar y pegar la función. Ahorra trabajo y al igual que antes, si realizamos una mejora en la función se reflejará en todo el código que la llame.

El Visual Basic Script es un lenguaje que no tiene facilidades de inclusión de código. Esto se puede suplir mediante este comando. Sin embargo, si se programa en PerlScript, se pueden utilizar las facilidades del lenguaje para incluir código de otros scripts o de bibliotecas mediante las palabas clave require o use.

Formato:

La sintaxis del comando tiene dos variantes:

<!--#include file="archivo.asp"-->

En la variante file hay que escribir la ruta del archivo relativa al directorio en el que se encuentra el ASP que se está ejecutando. En nuestro ejemplo, archivo.asp está en el mismo directorio que el ASP que lo incluye.

<!--#include virtual="/dirweb/archivo.asp"-->

En este caso se escribe la dirección web comenzando desde el raíz del servidor web. En nuestro ejemplo, estamos incluyendo el archivo cuya dirección web completa es www.midominio.com/dirweb/archivo.asp. Es decir, en el primer caso nos referimos a archivos según la estructura de directorios, y en el segundo, según la estructura de la web.

El archivo a incluir no tiene por qué ser un ASP, puede tener cualquier extensión. Si se trata de archivos que sólo están pensados para ser incluídos, es una buena práctica de programación el colocarles la extensión .inc. El preprocesado de los #include es previo a la ejecución del script, por lo que no puede haber includes condicionados a sentencias if then. Hay que imaginarse que cada include es sustituido por el archivo completo y que entonces es cuando se procesa el código ASP.

Página 17 de 48

Page 18: Tutorial de ASP

Active Server Pages

Cada script ASP dispone desde el momento en que es ejecutado de una serie de objetos predefinidos. No es necesario crear estos objetos ya que vienen integrados en ASP. Se encuentran disponibles para cualquier script y permiten realizar funciones básicas como averiguar los parámetros pasados al script, enviar información al usuario, guardar variables persistentes, etcétera. Aquí exponemos un breve resumen de los más importantes, con sus propiedades y métodos más utilizados.

1.- OBJETO RESPONSE :

Se utiliza para enviar la salida del script, es decir, lo que verá el usuario en su navegador. Response también puede controlar la forma y el momento en que se envían los datos, y escribir cookies para almacenar información.

MÉTODOS MÁS IMPORTANTES

1.- Response.Write (“cadena de caracteres”): Envía la cadena de caracteres al cliente. También se utiliza para intercalar código HTML entre el ejecutable.

Ejemplo:

<% Response.Write ("<h1>Se ha pasado de rosca</h1>")%>

Página 18 de 48

OBJETOS ASP

Page 19: Tutorial de ASP

Active Server Pages

Esto nos sacará por pantalla el literal con formato de cabecera Se ha pasado de rosca. Ya que todo el código HTML que escribamos dentro de las comillas del Response.Write esté lo ejecutará sacando en el navegador su resultado.

2.- Response.Write(Server.HTMLEncode) :Utilizaremos esta sentencia si lo que pretendemos es enviar texto codificado para que el explorador no lo interprete como HTML.

Ejemplo:

<% Response.Write (Server.HTMLEncode(“<P align=right>"))%>

Ocasionará que se implima <P align=right> en la pantalla sin interpretarlo como HTML.

3.- Response.Redirect (Url) : Redirige la página ASP a la URL especificada. Por ejemplo, esto que sigue es una página ASP completa que simplemente redirige a la web www.arsys.es. Pg 190

<% Response.Redirect ("http://www.arsys.es") %>

La redirección se implementa mediante cabeceras HTTP que son distintas que las enviadas cuando se muestra una página web. Eso significa que si se utiliza Response.Write o se intercala cualquier código HTML, ya no funcionará un posterior Response.Redirect porque se habrán enviado las cabeceras de mostrar una página web, no las de redirección. Es decir sólo funcionará si no se le ha enviado algo al cliente. Esto significa que debemos colocar el Response.Redirect antes de enviar cualquier salida o de utilizar el almacenamiento en búfer.

Esto implica el uso de la propiedad Buffer y los métodos Flush y Clear, como se explica a continuación.

4 .- Response.Buffer . Si se establece en True, se utiliza un búffer para la salida de datos, en combinación con los métodos anteriormente descritos. A pesar de la insistencia en el buffer, es algo que prácticamente no se usa a no ser que sea realmente necesario, pues ralentiza el mostrado de la página web.

5 .- Response.Flush . Envía de inmediato los datos del buffer. Si se establece en True la propiedad Response.Buffer, la salida del script (enviada mediante comandos Response.Write o HTML intercalado) no se envía directamente al navegador, sino

Página 19 de 48

Page 20: Tutorial de ASP

Active Server Pages

que queda en un buffer (espacio intermedio de almacenamiento) del servidor. El método Response.Flush envía los datos del buffer al navegador. Otra forma de enviar los datos del buffer es simplemente dejar que termine el script o invocar el método End. Primero envía los datos y luego los elimina.

6 .- Response.Clear . Supongamos que tenemos activado el almacenamiento en búfer. A medida que su secuencia de comandos se ejecuta, la salida es enviada al búfer. Al llamar a Response.Clear el búfer será vaciado. ¿Por qué es deseable esto? Talvez tnemos una página que no queremos que sea vista bajo un conjunto de circunstancias especiales. Si la página no sabe que dichas circunstancias se han cumplido, hasta que la secuencia ya se haya ejecutado, Response.Clear podría ser la mejor opción.

7 .- Response.End . Finaliza la ejecución de la secuencia de comandos. Si el almacenamiento en búfer está activado y hay muchos datos almacenados, éstos son enviados. Cualquier instrucción que esté después de Response.End no es ejecutada . Ésta es una finalización más abrupta que simplemente permitir que la secuencia de comandos termine por sí misma y , por lo tanto, debe evitarse si es posible. No obstante, puede ser útil al detectar problemas (tales como datos erróneos), sobre todo para evitar que éstos empeoren.

8.- Response.Expires: se utiliza para especificar por cuanto tiempo, desde el momento actual debe almacenarse una página en cache.

<%Response.Expires= 4 %> le estamos indicando al explorador que la pagina que se guarda en caché, debe caducar a los 4 min.

9.- Response.ExpiresAbsolute. le indica al navegador que la página almacenada en caché debe caducar en una fecha indicada y a una hora determinada.

<%Response .Expires.Absolute=Now ()-1%>

Página 20 de 48

Ver ejemplos:

5-Objeto-Response

• Response.write.asp Muestra cómo escribir código HTML dentro del Response

• Response-buffer.asp nos muestra cómo se almacenan los datos en el búfer

• Response-flush.asp

• Response-clear.asp

• Response-end.asp

• Response.expires.asp Comprobamos que la página permanecerá almacenada en caché durante 3 minutos, si navegamos durante 4 minutos y volvemos a cargar la página comprobaremos que la hora se actualizó.

Page 21: Tutorial de ASP

Active Server Pages

2.-OBJETO REQUEST

Este objeto se utiliza para recuperar los valores de un campo de formulario. Este objeto tiene cuatro colecciones, de momento nos ocuparemos de dos : Form y QueryString

1.-Request.Form(Nombrevariable): Recupera los valores de un campo de formulario cuando éste tiene su propiedad METHOD establecida como POST.

1.1.-Reques.Form (“param”): nos da el valor del parámetro llamado “param” siempre y cuando exista un único valor para dicho parámetro.

1.2.-Reques.Form (numero): nos da el valor de la posición del elemento en el formulario.Por ejemplo; si primero es el nombre, segundo la contraseña y tercer mi edad; mi Request.Form (3), me cogerá la edad.

1.3.- Reques.Form.Count: recoge el número de parámetros que hay en un formulario..

1.4.- Request.Form(“param”).Count: nos devuelve el numero de selecciones que ha hecho el usuario, solo serviría para el caso en el que hubiera mas de una opción. Por ejemplo, si en nuestro formulario tenemos una lista de selección múltiple, cuyo nombre sea Lista, la expresión Request.Form ("Lista")[2] nos daría el segundo elemento seleccionado de la lista, y Request.Form("Lista").Count nos daría el número de elementos que ha

Página 21 de 48

Page 22: Tutorial de ASP

Active Server Pages

seleccionado el usuario. Su valor será 1 si se trata de un parámetro monovaluado y 0 si es un parámetro no definido en el formulario

También es posible iterar sobre las colecciones anteriores mediante bucles For each. El siguiente ejemplo nos muestra todos los parámetros pasados al script y sus valores:

<% For each param In Request.FormResponse.Write ("<p>")Response.Write("El parámetro " & param & " toma el valor " & Request.Form(param) )Response.Write("</p>")Next%>

2.- Request.QueryString(Nombrevariable): Recupera los valores de un campo de formulario cuando éste tiene su propiedad METHOD establecida como GET. En este caso se pasan los valores de los campos de formulario a través de la cadena de consulta.

Por ejemplo:

http://www.dominio.com/cgi-bin/miprog.asp?nombre=Pepe&apellido=Gotera

3.- Request.ServerVariables: Cada vez que visitamos una página Web, nuestro explorador envía gran cantidad de información al servidor Web. La colección ServerVariables puede acceder a esta información. Asimismo, el servidor Web tiene muchas variables de ambiente a las que podemos acceder con esta colección.

Cuando el cliente solicita una página Web al servidor, éste no solamente envía el URL de la página Web solicitada, sino también alguna información adicional que

Página 22 de 48

Page 23: Tutorial de ASP

Active Server Pages

consiste en datos del cliente que pueden resultar muy útiles. Por ejemplo, el tipo de explorador que se está utilizando, el sistema operativo que está ejecutando el cliente y el URL de donde proviene el usuario. Cada segmento de información adicional se conoce como : Encabezado de solicitud porque son enviados cuando el cliente solicita una página Web.

Cuando el servidor devuelve al cliente la página Web solicitada, también envía un conjunto de encabezados, conocidos como Encabezados de Respuesta. Los encabezados de respuesta son porciones adicionales de información acerca de la página Web que está siendo enviada al cliente. Tanto los encabezados de solicitud como los de respuesta se conocen comúnmente como encabezados HTTP.

¿Qué encabezados envía el explorador al servidor web? El explorador podría enviar cualquier encabezado que eligiera. Existe un conjunto estándar de encabezados que la gran mayorñia de exploradores envía al servidor Web. De estos encabezados uno de los más útiles es el User-Agent.

Este encabezado contiene la información sobre el explorador que se está utilizando y el sistema operativo del cliente. Una página ASP puede utilizar esta información para personalizar el contenido basándose en el tipo de explorador que el visitante utilice. Por ejemplo : Netscape Nvigator e Internet Explorer manejan en forma diferente las hojas de estilo, si quisiéramos utilizar hojas de estilo en nuestro sitio web podríamos utilizar ASP para determinar el tipo de explorador que hace la solicitud de la página ASP y después ajustar las definiciones de la hoja de estilo para que correspondan con el explorador específico.

Página 23 de 48

ENCABEZADOS HTTP ESTÁNDAR

NOMBRE DEL ENCABEZADO DESCRIPCIÓNHTTP_ACCEPT Una lista de los tipos MIME (siglas en

inglés de Extensiones Multipropósito de Correo en Internet) que el cliente aceptará

HTTP_ACCEPT_LANGUAGE Qué tipo de lenguajes espera el explorador. Éstos son leguajes humanos conocidos como idiomas

HTTP_CONNECTION El tipo de conexión establecida entre el cliente y el servidor Web.

HTTP_HOST El nombre de host de la computadora del cliente

HTTP_USER_AGENT El tipo y versión de explorador y la información del sistema operativo del cliente.

HTTP_REFERER El URL completo de la página Web que contiene el hipervínculo empleado para llegar a la página ASP que está siendo ejecutada en ese momento

HTTP_COOKIE Las cookies enviadas desde el explorador

Page 24: Tutorial de ASP

Active Server Pages

LECTURA DE ENCABEZADOS HTTP CON Request.ServerVariables

1.- Para desplegar una lista exacta de los encabezados enviados por el explorador al servidor Web.

<% =Request.ServerVariables(“ALL_RAW”) %>

2.- Para desplegar una lista de encabezados con formato utilizaremos la siguiente instrucción

<% =Request.ServerVariables(“ALL_HTTP”) %>

3.- Para desplegar un encabezado HTTP específico, utilizaremos el siguiente formato:

<% =Request.ServerVariables(“HTTP_NombreEmcabezado”) %>

ACCESO A LAS VARIABLES DE AMBIENTE CON Request.ServerVariables

Las variables de ambiente son segmentos de información que proporciona el servidor Web a cualquier programa que las solicita. Esta información la podemos obtener a través de Request.ServerVariables. Las variables de ambiente contienen información como el nombre del servidor Web, el Url de la página ASP procesada actualmente o el nombre del software que el servidor Web está utilizando

Página 24 de 48

Page 25: Tutorial de ASP

Active Server Pages

Ejemplo:

<h3> Usted está viendo el dominio

<%= Request.ServerVariables("SERVER_NAME") %>

</h3>

4.- Request.Cookies: Con el uso de las Cookies las páginas Web pueden almacenar pequeños segmentos de información en la computadora del cliente. Estos segmentos de información pueden utilizarse para identificar a un visitante anterior o para personalizar el contenido de sus páginas Web para cada visitante específico.

REALIZAR PRÁCTICAS

1. Realiza una página Web que nos pida por pantalla el nombre y el apellido de forma que al pulsar el botón de enviar nos lleve a otra página mostrando el nombre y el apellido. (en el action tenemos que poner comillas y el nombre de la pagina .asp donde vamos a almacenar la información)

Página 25 de 48

VARIABLES DE AMBIENTE ÚTILES

VARIABLE DE AMBIENTE DESCRIPCIÓNURL El URL de la página ASP que esta después de

http://www.suServidorweb.com/ hasta la cadena de consulta

PATH_TRANSLATED La ruta física completa de la página ASP en ejecución.

QUERY_STRING La cadena de consulta (equivalente al Request.QueryString)

SERVER_NAME El nombre de la computadora del servidor webSERVER_SOFTWARE El nombre del software del servidor web, por

ejemplo Microsoft-IIS/5.0

Page 26: Tutorial de ASP

Active Server Pages

2. Realiza una pagina que nos muestre un menú desplegable con varias direcciones de Internet, de forma que al seleccionar una y pulsar el botón de enviar nos lleve a ella.

3. Realiza una página que nos muestre un formulario con la opción de seleccionar los idiomas que conocemos de forma que al pulsar el botón de enviar, nos lleve a otra página donde nos de los BUENOS DÍAS en los idiomas seleccionados.

4. Realiza una página que muestre un formulario donde se recoja el precio de un producto cualquiera de forma que al pulsar el botón de envío nos devuelva el precio del producto incrementando el IVA (18%). Para ello utilizad funciones.

5. Realiza una página que nos muestre por pantalla todos los enacabezados HTTP.

6. Realiza una página que nos muestre por pantalla todas las variables de ambiente.

3.-OBJETO SERVER

El objeto Server sólo tiene un método importante, pero es el más importante de todo el esquema ASP, ya que es el que permite crear objetos componentes y extender la funcionalidad del ASP de forma ilimitada. Con el Visual Basic Script del ASP y sin utilizar objetos componentes, no se puede hacer prácticamente nada; ni siquiera leer un archivo del disco. Toda la funcionalidad reside en objetos componentes ActiveX.

El método Server.CreateObject: Crea una instancia del componente de servidor que se le pase como parámetro.

Su sintaxis es :Server.CreateObject(ProgID)

El parámetro ProgID es un identificador único del componente que suele darse en la forma Vendedor.Componente. Por ejemplo:

<% Set herram = Server.CreateObject ("MSWC. Tools")if herram.FileExists ("mipagina.html") Then%>

Página 26 de 48

Page 27: Tutorial de ASP

Active Server Pages

<p>Esta es <a href="mipagina.html">mi página</a> </p><% else %><p>Lo siento. Mi página ha desaparecido</p><% end if %>

MSWC.Tools es el ProgID del objeto Tools de Microsoft, que viene con la instalación de ASP. No es un objeto predefinido como Response o Request, sino que hay que crearlo como cualquier otro. En VisualBasic los objetos se asignan a variables utilizando Set. Después de creado, podemos acceder a sus métodos y propiedades. En este caso, utilizamos el método FileExists que nos dice si existe o no un archivo dada su URL relativa.

4.-OBJETO SESSION

Sólo para poder beneficiarse de este objeto predefinido en sus aplicaciones de la Web, hay proveedores que se pasan de Unix a Windows NT. ¿Cuáles son entonces sus maravillosos métodos, propiedades o colecciones? Respuesta: lo interesante del objeto Session son las variables que nosotros podemos guardar en él. Esas variables permanecen entre distintas páginas web y son únicas para cada usuario. Así, si guardamos el nombre del usuario en una variable del objeto Session, podremos incorporarlo a todas las demás páginas, ya que ese dato no se pierde al terminar el script. Además, aunque haya varios usuarios viendo simultáneamente las páginas no hay problema, ya que cada uno tiene un objeto sesión distinto. La sintaxis es:

Session("variable") = valor

Esto guarda el valor en la variable. Para recuperarlo más adelante en éste u otro script distinto, sólo tendríamos que escribir Session("variable").

$Session{variable} = valor

Ejemplo

Puede guardar este script con el nombre p2.asp. Se guarda el nombre del usuario en el objeto Session.

<html><head>

Página 27 de 48

Page 28: Tutorial de ASP

Active Server Pages

<title>Pequeña prueba del objeto Session</title></head><body><%nombre = Request.Form("nombre")if nombre = "" then %><p>Por favor, escriba su nombre </p><form method = "Post" action="p2.asp"><input type ="text" name = "nombre"><input type = "submit" value = " Enviar "><% else Response.Write ("Su nombre es " & nombre & ". No se preocupe que no se me va a olvidar.")Session("Nombre") = nombreend if%></body></html>

Para escribir el nombre del usuario en páginas ASP posteriores a ésta, basta con que intercale el código

<%= Session("Nombre") %>

en el HTML de la página.

Una vez definida, la variable Session, será almacenada en memoria y podrá ser empleada en cualquier script del sitio web.

La duración de una sesión viene definida por defecto en 20 minutos. Esto quiere decir que si en 20 minutos no realizamos ninguna acción, el servidor dará por finalizada la sesión y todas las variables Session serán abandonadas. Esta duración puede ser modificada con la propiedad Timeout:

Session.Timeout = n° de minutos que queramos que dure

Una forma de borrar las variables Session sin necesidad de esperar a que pase este plazo es a partir del método Abandon:

Session.Abandon De este modo todas las variables Session serán borradas y la sesión se dará por finalizada. Este método puede resultar practico cuando estemos haciendo pruebas con el script y necesitemos reinicializar las variables.

Página 28 de 48

Page 29: Tutorial de ASP

Active Server Pages

4.-OBJETO APPLICATION

Es prácticamente igual que el objeto Session y sirve para lo mismo (guardar variables), con la única diferencia de que las variables son únicas para la aplicación en su conjunto, no para cada sesión de usuario. Por tanto, en el objeto Application se deben guardar variables que vayan a ser comunes a todos los usuarios, no las específicas como su nombre. Esto implica también que si deseamos modificar el valor de una variable guardada en el objeto Application, es necesario bloquear el objeto para evitar que desde otra sesión se acceda simultáneamente a la misma variable. Para ello existen los métodos Lock y Unlock.

El método Application.Lock

Bloquea el objeto impidiendo que otros clientes modifiquen cualquier variable guardada.

El método Application.Unlock

Desbloquea el objeto permitiendo que otros clientes modifiquen las variables del objeto Application.

Ejemplo

Una variable típica para guardar en el objeto Application es el número de visitas a la web. La variable no debe estar asociada a un cliente en concreto, sino que debe ser general. En la página en cuestión pondríamos el siguiente código:

<% Application.LockApplication("NumVisitas") = Application("NumVisitas") + 1Application.Unlock%>

Cuando queramos mostrar el número de visitas recibidas, bastará con que insertemos

<%= Application("NumVisitas") %>

Los eventos de los objetos Session y Application y el archivo global.asa

Los objetos Application y Session tienen eventos al estilo de los formularios de Visual Basic, sólo que mucho más limitados. De hecho cada objeto sólo tiene dos eventos: uno que se lanza cuando es creado y otro cuando es destruido. Eso significa que podemos escribir código de inicialización que se ejecutará cada vez que un usuario acceda por primera vez a nuestras páginas (creación de un objeto Session) o

Página 29 de 48

Page 30: Tutorial de ASP

Active Server Pages

cuando acceda el primer usuario (creación del objeto Application). Asimismo, podemos escribir código de limpieza justo cuando se termine la sesión de un usuario o al terminar la aplicación en su conjunto.

El código de estos eventos ha de estar en un archivo de nombre global.asa que debe estar en el directorio raíz de la aplicación. El archivo global.asa es opcional y puede contener tres tipos de información:

Eventos de creación y destrucción de aplicación y sesiones.

Marcas <OBJECT> para crear objetos de servidor con alcance de sesión o aplicación (método alternativo al de Server.CreateObject).

Bibliotecas de tipos de objetos componentes.

Los eventos de Session y Application han de estar en marcas <SCRIPT> como se indica en el ejemplo de global.asa siguiente:

<SCRIPT LANGUAGE=VBScript RUNAT=Server>sub Application_onStart Application("NumSesionesActivas") = 0Application("NumSesionesTotales") = 0End subsub Session_onStartApplication.LockApplication("NumSesionesActivas") = Application("NumSesionesActivas") + 1Application("NumSesionesTotales") = Application("NumSesionesTotales") + 1Application.UnLockEnd subsub Session_onEndApplication.LockApplication("NumSesionesActivas") = Application("NumSesionesActivas") -1Application.UnLockEnd subsub Application_onEndEnd sub</SCRIPT>

Aquí se utilizan los eventos para guardar el número de sesiones activas y totales de nuestra aplicación, es decir, el número de clientes que nos está viendo en un momento dado, y el total que nos ha visitado. Como se trata de datos globales y no ligados a una sesión, hay que guardarlos en el objeto Application, y cuando se quieren modificar, es necesario bloquear primero dicho objeto.

Página 30 de 48

Page 31: Tutorial de ASP

Active Server Pages

¿Cuánto dura una sesión y cómo funciona?

Lógicamente el servidor web no puede saber si el usuario está todavía leyendo la última página que descargó de la web o se ha ido ya a dormir. De ahí que la duración de una sesión se mida por el tiempo de inactividad del usuario. Para medir éste el objeto Session dispone de una propiedad llamada Session.Timeout en la que el tiempo se mide en minutos. Cuando un usuario de Internet ve por primera vez cualquier página ASP de nuestra aplicación, el servidor web automáticamente le envía un cookie y crea para él un objeto Session con llamada al evento de creación que se encuentre en global.asa. Si pasan los minutos indicados en Session.Timeout sin que el usuario haya visto una nueva página, la sesión se da por concluida y el objeto Session del usuario es destruido.

El cookie es una pieza de información que el servidor web envía al cliente para que se guarde en su disco duro. Cuando el cliente vuelve al sitio web reenvía el cookie al servidor y de esa forma éste puede distinguir a los usuarios y hacerles un seguimiento individual.

Más sobre objetos componentes: alcance y creación

Los objetos que se crean mediante Server.CreateObject (ProgID) tienen un alcance a nivel de script, es decir, cuando termina el script los objetos son eliminados. Sin embargo, en ciertas ocasiones será conveniente que los objetos tengan duración de sesión o incluso de aplicación. Hay dos formas de dar alcance de sesión o de aplicación a un objeto:

Guardarlo en una variable del objeto Session o Application.

Crearlo en global.asa mediante una marca <OBJECT>.

Primer método, ejemplo

<%' Para crearlo con alcance de sesion lo guardamos en el objeto SessionSet Session("miobjeto") = Server.CreateObject("MPX.Tool")................' Para verlo después en otra página ASP Set miobjeto = Session("miobjeto")miobjeto.show%>

1. Realiza una página que recoja tu nombre y con un botón de envío te lleve a otra página donde te saldrá un mensaje de bienvenida con tu nombre. Además a parecerá un formulario donde deberás seleccionar distintas aficiones de forma que al pulsar el botón de envío te llevará a una página donde mostrará tu nombre con las aficiones seleccionadas.

Página 31 de 48

Page 32: Tutorial de ASP

Active Server Pages

OBJETOS DEL SERVIDOR

1.-COMPONENTES ACTIVEX

Los comoponentes ActiveX se han diseñado para que se ejecuten en el servidor Web como parte de las aplicaciones Web , proporcionan funcionalidad a las aplicaciones, como el acceso a ficheros, Bases de datos, etc. Existen componentes ActiveX para tareas muy diversas, por ejemplo:

• Adrotator: Inserción de publicidad rotatoria• FileSystemObject: Acceso a ficheros en el servidor• TextStream: Acceso a ficheros en el servidor• ActiveX Data Object: acceso a bases de datos

Su fundamento es tratar de hacer que estos componentes sean reutilizables. Para ello, utiliza un modelo orientado a objetos para definir una jerarquía de componentes, entre los que pueden existir relaciones de dependencia. Cada componente (objeto) se caracteriza por un comportamiento, que se puede alterar a través de sus métodos, propiedades o la interacción con otros objetos.

¿Qué son los controles ActiveX?

Se trata de pequeñas aplicaciones capaces de interactuar con el usuario, realizar cálculos o representar datos, y que se insertan en páginas web a través de las etiquetas

Página 32 de 48

Page 33: Tutorial de ASP

Active Server Pages

<OBJECT> y <PARAM>, que se corresponden a las operaciones de inserción del componente y paso de sus parámetros de ejecución.

¿Qué diferencia hay entre controles y componentes ActiveX?

Los elementos desarrollados con esta tecnología pueden aplicarse tanto en el lado cliente como en el lado servidor. Esta es la diferencia fundamental entre un control ActiveX, que se ejecuta localmente en nuestra aplicación, de un objeto ActiveX, que utiliza un "automation interface" (o interfaz automatizada) para que otras aplicaciones o herramientas de programación puedan utilizarlo.

Se denomina formalmente componente al objeto ActiveX y no al control. Un componente tiene la ventaja de que se trata de un estándar prácticamente universal, multiplataforma y, por tanto, independiente de las aplicaciones y sus lenguajes. En esta guía de referencia obviaremos los controles (en clara desventaja) frente a las posibilidades que nos ofrecen los objetos de servidor, al poder combinarse, a través de ASP, con scripts y páginas HTML para poder crear webs profesionales. Su funcionamiento precisa la instalación del objeto en la máquina sobre la que se ejecute, y suele encontrarse bajo archivos de extensión OCX o DLL.

¿Cómo utilizo un componente en mi web?

Para poder utilizar un objeto, deberá enlazarlo con su página web a través de programación en un lenguaje de script, directamente, o a través del uso de ASP (Active Server Pages). En cualquiera de los casos, deberá introducir cierto código para poder usar el objeto, una vez instalado en el servidor sobre el que vaya a ejecutarse. Se trata, principalmente de una línea en la que crea una "instancia" del objeto que va a usar, y el resto de código que utiliza los métodos y propiedades de la instancia que acaba de crear. Por ejemplo, si escribimos en una página ASP, el código debe quedar de la forma:

<%Set OBJETO = Server.CreateObject(IDENTIFICADOR)OBJETO.Metodo(Argumentos).......%>

El parámetro "IDENTIFICADOR" es un identificador único del componente que suele darse en la forma Vendedor.Componente.Los valores "OBJETO.Metodo(Argumentos)" referencian a las funciones, y parámetros que necesitan las mismas para su llamada, que incorpora el componente que estamos usando.

Por ejemplo, el componente Acceso a bases de datos utiliza objetos de datos de ActiveX (ADO) para proporcionar un fácil acceso a la información almacenada en una base de datos (o en otra estructura de datos en forma de tabla), que cumpla con el

Página 33 de 48

Page 34: Tutorial de ASP

Active Server Pages

estándar ODBC (Open DataBase Connectivity). A continuación se muestra el código que tendría que colocar en su página ASP para poder usar este objeto:

<%'Aquí creamos la instancia del objetoSet miconexion = Server.CreateObject("ADODB.Connection")'Ahora usamos la instancia y sus propiedades para nuestros fines'Indicamos al objeto la cadena de conexiónmiconexion.ConnectionString = "DSN=midsn" 'Se abre la base de datosmiconexion.Open ' ....... '........ 'Se cierra la base de datosmiconexion.Close%>

Así pues, una de las características más interesantes de ASP es su facilidad para el manejo de bases de Datos que residen en el servidor. Esto lo conseguimos mediante el uso de ADO (ActiveX Data Object), de forma fácil, rápida y con un mínimo consumo de rescursos del sistema.

Por otra parte ADO (ActiveX Data Object) para el acceso a una base de datos usa ODBC (Open Data Base Connectivity), es una utilidad de Windows que permite a las aplicaciones acceder a los datos usando SQL como lenguaje estándar.

Página 34 de 48

Page 35: Tutorial de ASP

Active Server Pages

2.-FUENTES DE DATOS ODBC

Como se ha escrito anteriormente Open Data Base Connectivity es una utilidad de Windows, concretamente la encontramos en Inicio/Panel de Control/Herramientas Administrativas

Se pueden configurar tres diferentes fuentes de datos ODBC, la forma más interesante es la DSN de Sistema, que presenta la ventaja de poder ser accedida por cualquier usuario, siendo el tipo usado en las aplicaciones ASP.

Página 35 de 48

Page 36: Tutorial de ASP

Active Server Pages

Para declarar una base de datos ODBC haremos doble clic en el icono Fuentes de Datos ODBC que encontraremos en Panel de Control/Herramientas Administrativas. Una vez abierto el programa nos situamos en la pestaña DSN de Sistema.

DSN: Data Source Name. Es un identificador único de la base de datos en el sistema. Al definir un DSN hay que especificar tanto la ruta completa del archivo de base de datos como el controlador adecuado a la misma (MSAccess, FoxPro, etc…). Una vez creado, es todo lo que necesitamos saber acerca de la base de datos para poder abrirla, consultarla, modificarla, etc.

Pulsaremos el botón AGREGAR para añadir una fuente de datos, lo que nos llevará a la pantalla de controladores.

Página 36 de 48

Page 37: Tutorial de ASP

Active Server Pages

En esta ventana elegiremos el driver adecuado para la tecnología de la base de datos que queremos tratar desde nuestras páginas ASP y pulsaremos finalizar. La siguiente pantalla que se nos muestra nos pedirá la ubicación física de nuestra base de datos y el nombre ODBC con el que queremos acceder a ella.

Página 37 de 48

Page 38: Tutorial de ASP

Active Server Pages

Nombre del origen de datos: es un nombre simbólico de nuestra base de datos, será el que utilicemos desde ASP para referirnos a ella, es decir será el DSN.

Descripción: Es una descripción de la base de datos

Base de datos: Es el camino físico de la base de datos, para establecerlo pulsaremos el botón SELECCIONAR y mediante un explorador elegiremos nuestra base de datos.

Una vez hecho esto pulsaremos el botón ACEPTAR y ya tendremos nuestra base de datos disponible para su uso desde nuestras aplicaciones WEB.

Ya sabemos conectar ASPADOODBC, nos queda conocer los objetos ADO para realizar todo esto

3.- OBJETOS ADO

Página 38 de 48

Page 39: Tutorial de ASP

Active Server Pages

ADO está formado por varios objetos organizados de forma jerárquica (cada uno de ellos con sus métodos y propiedades específicos) de los cuales vamos a estudiar los más interesantes.

3.1 CONNECTION

Este objeto lo podemos considerar como el más importante, estaría en la cúspide de la estructura jerárquica comentada anteriormente.

Representa una conexión a una base de datos desde una página ASP. Esta conexión nos permitirá efectuar las operaciones que deseemos sobre la base de datos.

Es el primer objeto que debemos crear para poder conectar con la base de datos. Tanto el objeto ADO que nos permite acceder a los datos (Recordset) como el que nos permite realizar consultas (Command) disponen de una propiedad llamada ActiveConnection que es una referencia al objeto Connection que enlaza con la base de datos a la que queremos atacar. De ahí que el primer paso sea crear la conexión.

Pues bien para crear la conexión, lo primero será crear el Objeto Connection por medio de la propiedad CreateObject del objeto Server.

<% Set conexion=Server.CreateObject(“ADODB.Connection”) %>

Una vez establecida la instancia del objeto pasamos a configurarlo mediante sus propiedades y métodos:

Página 39 de 48

Page 40: Tutorial de ASP

Active Server Pages

PROPIEDADES

1.- ConnectionString: Especifica la referencia a la base de datos con la que queremos conectar, conteniendo en una cadena de texto la información necesaria para efectuar la conexión mediante parejas de valores separadas por “;”. Hay hasta 7 argumentos distintos que se pueden suministrar en esta cadena pero los básicos son:

• Data Source Name (DSN) = Nombre ODBC de la base de datos

• Usuario: User = nombre de usuario

• Password: Password = Password del usuario para la base de datos.

Ejemplo:

<% conexion.ConnectionString=”DSN=Alumnos;User=Inma;Password=1234” %>

2.- Mode: Especifica los permisos de la conexión. Algunos de los valores más habituales que podemos asignar son:

1 Establece permiso sólo de Lectura

2 Establece permiso sólo de Escritura

3 Establece permiso de Lectura/Escritura

Ejemplo:

<% conexion.Mode=3 %>

MÉTODOS

1.- Open: Abre la conexión con la base de datos con los parámetros especificados en las propiedades

2.- Close: Cierra la conexión con la base de datos

Ejemplo:

Página 40 de 48

Page 41: Tutorial de ASP

Active Server Pages

<%Set conexion = Server.CreateObject("ADODB.Connection")conexion.ConnectionString = "DSN=Alumnos"conexion.Open' ....... '........ conexion.Close%>

3. 2 RECORDSET

Con este objeto accederemos directamente a los datos de las tablas, tanto para leerlos como para modificarlos.

Un objeto Recordset representa una tabla, que puede ser una tabla física de la base de datos o bien una obtenida mediante una operación como un filtrado o sentencia SQL. En cualquier caso, el objeto representa a la tabla con todos sus registros, aunque sólo uno de ellos es el activo. El registro activo es en el que podemos leer o modificar los valores de los campos. También se le llama cursor.

Entendemos como cursor el puntero que nos permite desplazarnos por los registros del Recordset. Dependiendo del tipo elegido determinaremos los desplazamientos y cambios realizables en los datos

1.- PROPIEDADES QUE HACEN REFERENCIA AL ORIGEN DE DATOS

Estas dos propiedades deben ser asignadas a todo Recordset, pues le dicen la base de datos y la tabla de la que obtener sus datos.

1.- ActiveConnection

Como se ha comentado antes a esta propiedad se le debe asignar un objeto connection que se haya creado previamente. Indicará al Recordset la base de datos en la que buscar su tabla.

2.- Source

Indica al objeto Recordset la tabla a la que representará. A la propiedad Source se le asigna normalmente una cadena de caracteres con el nombre de la tabla. Sin embargo, también es posible asignarle una sentencia SQL y entonces el objeto Recordset será el resultado de aplicar dicha sentencia.

Una vez que hemos determinado la base de datos y la tabla con la que vamos a trabajar debemos indicar, en este orden, cómo nos vamos a mover por la tabla (Tipo

Página 41 de 48

Page 42: Tutorial de ASP

Active Server Pages

de Cursor) y el tipo de bloqueo que realizaremos sobre la base de datos con el fin de evitar que dos o más usuarios accedan a modificar un mismo registro a la vez

Recordar¡¡¡¡¡ primero se especifica la propiedad del tipo de Cursor y luego el tipo de Cerrojo

3.- CursorType

Con esta propiedad especificamos el tipo de cursor que se utiliza para recorrer los registros de un recordset.

Los posibles valores son:

1.- adOpenForwardOnly (Valor 0): que como su nombre indica sólo permite moverse hacia adelante. (no se puede volver hacia atrás) no permite modificaciones en los registros. Por el contrario es el de menos consumo. No vemos los cambios realizados en las tablas por otro Recordset. Por defecto toma este valor.

2.- adOpenKeyset (Valor 1): Nos permite movernos en los dos sentidos, permite modificaciones en los registros y además podemos ver los cambios realizados en la tabla por otro Recordset a excepción de las nuevas entradas

3.- adOpenDynamic (Valor 2): Nos permite movernos en los dos sentidos, permite modificaciones en los registros y vemos todos los cambios realizados en la tabla por otro Recordset.

4.- adOpenStatic (Valor 3): Nos permite movernos en los dos sentidos, no permite modificaciones en los registros. No vemos los cambios realizados en la tabla por otro Recordset.

4.- LockType

Página 42 de 48

Page 43: Tutorial de ASP

Active Server Pages

Indica el tipo de bloqueo que se realiza sobre la base de datos cuando modificamos un Recordset, a fin de evitar que dos o más usuarios accedan a modificar un mismo registro a la vez.

Los posibles valores son:

Por defecto toma el valor adLockReadOnly que como su nombre indica sólo sirve para leer datos. Si deseamos editar o añadir registros, tendremos que cambiar esta propiedad por otro valor. El más usado es adLockOptimistic que permite editar la base de datos o añadir registros realizando un bloqueo optimista (sólo cuando sea estrictamente necesario)

Ejemplo:

Aquí creamos en primer lugar un objeto Connection y luego un Recordset al que se asigna dicho objeto. Este ejemplo es una especie de esqueleto para los demás que sigan: Se supone que debe hacerse algo parecido a esto para abrir el Recordset. Es decir, en los restantes ejemplos escribimos sólo el código que iría en el lugar de los puntos suspensivos de este script (NOTA: Recuerde que si hay que añadir registros es necesario cambiar el LockType antes de inicializar el recordset).

<%Set miconexion = Server.CreateObject("ADODB.Connection")miconexion.ConnectionString = "DSN=midsn"miconexion.OpenSet mirecordset = Server.CreateObject("ADODB.Recordset")mirecordset.ActiveConnection = miconexionmirecordset.Source = "Clientes"mirecordset.Open........ ' Operaciones con los datos........' de la tabla Clientes.mirecordset.Closemiconexion.Close%>

Definiendo nuestras Constantes: ADOVBS.INC o METADATA

Página 43 de 48

Page 44: Tutorial de ASP

Active Server Pages

Tanto los cursores, como los cerrojos utilizados por ADO deben encontrarse definidos como constantes en nuestras aplicaciones para poder ser usados en nuestro código.

Uno de los métodos existentes para definir estas constantes consiste en utilizar una biblioteca de tipos de componentes. Una biblioteca de tipos de componentes corresponde a un archivo que almacena todos los parámetros ADO. Para utilizar este tipo de archivos basta con agregar, al archivo .asp o al Global.asa, la siguiente línea de códigos:

<!-- METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib"

UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->

Otra alternativa, mucho más simple y por ello más utilizada es la de incluir el archivo ADOVBS.INC. Este archivo se incluye en la instalación del IIS y contiene todas las constantes ADO posibles de utilizar desde ASP. Para poder utilizar este archivo se debe agregar la siguiente línea en nuestro código:

<!-- #include virtual = "adovbs.inc" -->

Una vez que hemos incluido este archivo, podremos utilizar las constantes definidas en él, haciendo referencia a los valores declarados para cada uno de los parámetros ADO. Por ejemplo, si queremos definir un recordset que utilice un cursor de tipo adOpenKeySet escribiremos el siguiente código, haciendo referencia al valor 1 que corresponde a la constante adOpenKeySet:

rs.Open SQL, oConn, 1

Propiedades que hacen referencia al número de registros:

1.- RecordCount

Número de registros de la tabla a la que representa el objeto Recordset.

Ejemplo:

<h3>Tenemos <%= rstClientes.RecordCount%> clientes registrados en nuestra base de datos</h3>

2.- EOF

Página 44 de 48

Page 45: Tutorial de ASP

Active Server Pages

Acrónimo de End Of File. Vale TRUE si estamos en el último registro y FALSE si no. Se usa mucho como condición en bucles while, los cuales se ejecutan hasta llegar al último registro.

3.- BOF

Acrónimo de Begin Of File. Vale TRUE si estamos en el primer registro y FALSE si no.

Métodos para mover el cursor (registro activo):

Estos métodos pueden funcionar todos o no dependiendo del tipo de cursor creado. El tipo de cursor se asigna en la propiedad CursorType.Por ejemplo, para asignar un cursor adOpenKeySet que permita moverse hacia adelante o hacia atrás:

<%Set miconexion = Server.CreateObject("ADODB.Connection")miconexion.ConnectionString = "DSN=midsn"miconexion.OpenSet mirecordset = Server.CreateObject("ADODB.Recordset")mirecordset.ActiveConnection = miconexionmirecordset.Source = "Clientes"mirecordset.CursorType = adOpenKeySetmirecordset.Open........ ' Operaciones con los datos........' de la tabla Clientes.mirecordset.Closemiconexion.Close%>

Nótese que la asignación de propiedades al recordset debe hacerse antes de invocar el método open que es el que lo inicializa con registros.

1.- MoveFirst

Mueve el cursor al primer registro de la tabla

2.- MoveLast

Mueve el cursor al último registro de la tabla

3.- MoveNext

Página 45 de 48

Page 46: Tutorial de ASP

Active Server Pages

Mueve el cursor al siguiente registro

4.- MovePrevious

Mueve el cursor al registro anterior

Ejemplo de un bucle que recorre todos los registros de una tabla

<%mirecordset.MoveFirstdo while not mirecordset.EOF..... ' Tratamiento..... ' de datosmirecordset.MoveNextloop%>

Lectura y modificación de los campos del registro activo

La sintaxis para acceder a los datos de un campo del registro activo de un recordset es

mirecordset ("Domicilio")

Esto se usa tanto para leer como asignar valores. En nuestro ejemplo, el objeto mirecordset representa a una tabla uno de cuyos campos tiene el nombre "Domicilio". Así, con la expresión

dom = mirecordset("Domicilio")

Leemos el valor del campo domicilio del registro activo y se lo asignamos a la variable dom. Con la expresión

mirecordset("Domicilio") = "C/ Bretón de los Herreros 19, 1º M"mirecordset.Update

asignamos un valor al campo Domicilio del registro activo. Tras la edición del registro, es necesario llamar al método Update. El motivo es que los cambios en el registro activo se realizan sobre un buffer (espacio de almacenamiento intermedio) y no sobre el registro propiamente dicho.

Ejemplo:

Página 46 de 48

Page 47: Tutorial de ASP

Active Server Pages

El recordset rstClientes representa a nuestra tabla de clientes que, entre otros, tiene los campos Provincia e IVA . El siguiente bucle recorre todos los clientes, comprueba su provincia y le asigna el IVA correspondiente: 0 para Canarias y 16 para los demás

<%rstClientes.MoveFirstdo while not rstClientes.EOFif rstClientes("Provincia") = "Las Palmas" or rstClientes("Provincia") = "Tenerife" ThenrstClientes("IVA") = 0elserstClientes("IVA") = 16end ifrstClientes.UpdaterstClientes.MoveNextloop%>

Métodos para agregar o eliminar registros de la tabla

1.- Delete

Eliminar el registro activo es muy fácil. Basta con invocar este método. Por ejemplo, este bucle elimina todos los clientes morosos de nuestra base de datos:

<%rstClientes.MoveFirstdo while not rstClientes.EOFif rstClientes("Deuda") > 0 ThenrstClientes.Deleteend ifrstClientes.MoveNextloop%>

2.- AddNew y Update

Crear un nuevo registro involucra dos métodos: Primero AddNew crea un nuevo registro en blanco. Después asignamos valores a los distintos campos del registro. Por

Página 47 de 48

Page 48: Tutorial de ASP

Active Server Pages

último invocamos el método Update para que se haga efectiva la incorporación del nuevo registro con los valores asignados.

En este ejemplo incorporamos un nuevo cliente a nuestra base de datos

<%rstClientes.AddNewrstClientes("Nombre") = "Pepe Gotera"rstClientes("Direccion") = "Rue del Percebe, 13"rstClientes("Localidad") = "Sildavia"rstClientes("Profesion") = "Chapuzas a domicilio"rsClientes.Update%>

Recuerde que para que esto funcione hay que asignar un tipo de bloqueo que permita la edición de la base de datos. Esto se hace asignando a la propiedad LockType del recordset uno de estos valores: adLockOptimistic, adLockPessimistic o adLockBatchOptimistic

Página 48 de 48


Recommended