Está en la página 1de 208

1 - Qu es ASP?

ASP (acrnimo de Active Server Page) es una tecnologa desarrollada por Microsoft
para ejecutar cdigo en un servidor web y generar pginas en forma dinmica.
Hay que entender primero como funciona la solicitud de pginas en un navegador para
comenzar a utilizar ASP.
Comunicacin entre el cliente y el servidor sin ASP:
1 - Tipeamos en la barra del navegador la direccin y el archivo a solicitar.
2 - El web browser (navegador) enva el mensaje a travs de Internet a la computadora,
por ejemplo www.lanacion.com/pagina1.htm solicitando la pgina (archivo)
pagina1.htm
3 - El web server (servidor web, que puede ser el Apache, IIS, etc.) que es un programa
que se ejecuta en la mquina www.lanacion.com, recibe el mensaje y lee el archivo
solicitado desde el disco duro.
4 - El servidor web enva el archivo solicitado por el navegador tal cual est en el disco
duro.
5 - El navegador muestra en pantalla el archivo que envi el servidor web.
Este proceso siempre es el mismo cuando hablamos de pginas estticas (pginas que
no cambian), cualquiera sea el cliente que solicita la pgina el contenido siempre ser el
mismo. La nica forma que el contenido del archivo cambie es que el administrador de
ese sitio web edite el contenido del archivo pagina1.htm y haga modificaciones.
Comunicacin entre el cliente y el servidor con ASP:
1 - Tipeamos en la barra del navegador la direccin y el archivo a solicitar.
2 - El web browser (navegador) enva el mensaje a travs de Internet a la computadora
llamada www.lanacion.com solicitando la pgina (archivo) pagina1.asp
3 - El web server (servidor web IIS, veremos luego que este servidor tambin es
propiedad de Microsoft), recibe el mensaje y al ver que la extension es "asp" solicita al
mdulo de ASP (que es otro programa que se ejecuta en el servidor web) que le enve el
archivo.
4 - El mdulo ASP lee desde el disco el archivo pagina1.asp
5 - El mdulo ASP ejecuta los comandos contenidos en el archivo y eventualmente se
comunica con un gestor de base de datos (ejemplos de ellos pueden ser SQL Server,
Access etc.)
6 - Luego de ejecutar el programa contenido en el archivo enva ste al servidor web.
7 - El servidor web enva la pgina al cliente que la haba solicitado.
8 - El navegador muestra en pantalla el archivo que envi el servidor web.
Para aquellas personas que conocen otros lenguajes de programacin (C - Java - C# -
Pascal etc.) la salida de los resultados normalmente es la pantalla, en ASP la salida es la
pgina HTML (luego sta viaja por internet y llega al cliente que la solicit)
2 - Programa "Hola Mundo" con ASP
Decamos que ASP es la primer tecnologa desarrollada por Microsoft para la
generacin de pginas dinmicas de servidor. En realidad ASP no es un lenguaje de
programacin sino el nombre de la tecnologa. El lenguaje ms utilizado para
implementar las pginas dinmicas ASP es el VBScript. Este lenguaje utilizaremos en
este curso para la codificacin de las pginas dinmicas. Tambin se puede emplear el
lenguaje JScript.
Para agregar un programa dentro de una pgina HTML debemos por un lado al crear el
archivo definirlo con extensin asp (a diferencia de las pginas estticas que tienen
extensin htm o html) y dentro del contenido de la pgina, encerrar el programa entre
los smbolos <% %>
ASP cuenta con una serie de objetos que nos permiten trabajar en el servidor. El objeto
response cuenta con un mtodo llamado write que nos permite generar html en el
servidor.Nuestro programa "Hola Mundo" ser entonces:
pagina1.asp
<html>
<head>
<title>problema</title>
</head>
<body>

<%
response.write("Hola Mundo")
%>

</body>
</html>
El servidor IIS (Internet Information Server) identifica que la extensin del archivo
solicitado es asp por lo que pasa al mdulo ASP para procesar el programa contenido en
su interior.
En este caso el programa contenido es muy sencillo, solo le pedimos que imprima
dentro de la pgina la cadena "Hola Mundo".
Es verdad que para este tipo de problemas conviene emplear una pgina esttica HTML
ya que el contenido que genera el programa siempre es el mismo.
Otra cosa que hay que tener bien en claro, cual es el contenido del archivo que recibe el
navegador:
pagina1.asp
<html>
<head>
<title>problema</title>
</head>
<body>

Hola Mundo

</body>
</html>
Como podemos observar desaparece el programa codificado en VBScript y contiene el
resultado de la ejecucin del mismo.
Los programas que se encuentran en el servidor nunca sern visto por el visitante, ya
que estos reciben el resultado de la ejecucin de los mismos.
Para aquellas personas que no han utilizado otra tecnologa de pginas dinmicas puede
ser inicialmente un poco complejo entender la programacin en el servidor. Si ya de
antemano conocen otro lenguaje de escritorio (C - C++ - Java) el mtodo write del
objeto response (response.write) remplaza al comando de impresin por pantalla. Como
el programa se ejecuta en un servidor de Internet que se puede encontrar a miles de
kilometros poco sentido tendra imprimir en el monitor de dicho servidor. Entonces la
solucin es "imprimir" dentro del archivo html que se enviar al navegador que solicit
dicha pgina.
2 - Programa "Hola Mundo" con ASP
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina que muestre en su contenido la leyenda "Hola Mundo".
Emplear el mtodo write del objeto response para la impresin dentro de la pgina.

pagina1.asp
<html>
<head>
<title>problema</title>
</head>
<body>
<%
response.write("Hola Mundo")
%>
</body>
</html>


2 - Programa "Hola Mundo" con ASP
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccione un programa que muestre su nombre y apellido en la pgina empleando el
mtodo write del objeto response. Tener en cuenta que hay que encerrar entre comillas
dobles la cadena a imprimir.
<html>
<head>
<title>problema</title>
</head>
<body>

<%
response.write("Pablo Rodriguez")
%>

</body>
</html>
Confeccione un programa que muestre su nombre y apellido en la pgina empleando el
mtodo write del objeto response. Tener en cuenta que hay que encerrar entre comillas
dobles la cadena a imprimir.



pagina1.asp

3 - Un programita ms til que "Hola
Mundo"
Tal vez el ejemplo del concepto anterior no sea el ms adecuado para ver las ventajas de
la ejecucin de un programa en el servidor.
Un problema sencillo que se nos puede presentar y que no se puede resolver empleando
solo HTML es que una pgina est disponible slo los 10 primeros das del mes.
Mostraremos un cartel que diga que el sitio se encuentra disponible si la fecha es menor
o igual a 10, en caso contrario mostraremos un mensaje de sitio fuera de servicio.
Si no conocemos una tecnologa para generar paginas dinmicas no nos queda otra
solucin que nosotros manualmente modifiquemos la pgina HTML cada vez que
llegamos al da 11.
La solucin con ASP es obtener la fecha actual y mediante una condicin verificar si el
da es menor o igual a 10 y mostrar el mensaje correspondiente.
pagina1.asp
<html>
<head>
<title>problema</title>
</head>
<body>
<%
fecha=date()
dia=day(fecha)
if dia<=10 then
response.write("sitio activo")
else
response.write("sitio fuera de servicio")
end if
%>
</body>
</html>
Lo ms importante de este problema es entender la lgica y no la sintaxis completa.
Lo primero que hacemos es obtener la fecha actual mediante la llamada a la funcin
date():
fecha=date()
Luego de esto tenemos almacenado en esta variable la fecha (tener en cuenta que este
programa se est ejecutando en el servidor y la fecha corresponde a esta computadora y
no a la del navegador que solicit la pgina).
Como solo necesitamos el nmero de da mediante la funcin day extraemos este valor:
dia=day(fecha)
Seguidamente con la instruccin if verificamos si el nmero almacenado en la variable
dia es menor o igual a 10:
if dia<=10 then
Si la condicin dispuesta en el if se verifica verdadera procede a ejecutar:
response.write("sitio activo")
En caso contrario procede a ejecutar las instrucciones posteriores al else:
response.write("sitio fuera de servicio")
No se preocupe si no entiende los conceptos de variables, estructura condicional etc. a
lo largo de este curso veremos con detenimiento cada uno de ellos.
Lo que s debe quedar en claro que lo que llega al navegador es el resultado de la
ejecucin del programa contenido en la pgina ASP. En este caso las pginas posibles
son:
<html>
<head>
<title>problema</title>
</head>
<body>

sitio activo

</body>
</html>
o esta otra pgina:
<html>
<head>
<title>problema</title>
</head>
<body>

sitio fuera de servicio

</body>
</html>
Recordemos siempre que el navegador recibe siempre solo HTML. Dicho HTML puede
ser el resultado de la ejecucin de un programa en el servidor.
3 - Un programita ms til que "Hola
Mundo"
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina que muestre un mensaje de "sitio activo" slo los 10 primeros
das del mes.
En caso contrario mostrar un mensaje de sitio fuera de servicio.

pagina1.asp
<html>
<head>
<title>problema</title>
</head>
<body>
<%
f echa=date()
dia=day(f echa)
if dia<=10 then
response.write("sitio activo")
else
response.write("sitio f uera de servicio")
end if
%>



3 - Un programita ms til que "Hola
Mundo"
<html>
<head>
<title>problema</title>
</head>
<body>

<%
fecha=date()
response.write(fecha)
%>

</body>
</html>
Obtener la fecha y luego imprimirla dentro de la pgina.
4 - Lenguaje VBScript
Si todava no conoce ningn lenguaje de programacin ser mejor que desarrolle el
curso de JavaScriptYa, este comienza desde cero.
Partimos de que conoce los conceptos de variable, estructuras condicionales y
repetitivas.
El lenguaje VBScript es un dialecto del Visual Basic. Es un lenguaje interpretado.
El VBScript no es sensible a maysculas o minsculas, es decir podemos escribir sus
palabras claves con minsculas o maysculas en forma indistinta.
Las variables se inicializan y definen su tipo en el momento de asignarle el valor.
Podemos codificar los programas en las pginas utilizando programacin lineal,
estructurada o planteando clases.

5 - Variables y sus tipos
En VBScript podemos no definir la variable y hacer que se cree inmediatamente
despus de asignarle un valor.
Veamos los tipos de variables segn el valor que le asignamos:
<html>
<head>
<title>problema</title>
</head>
<body>

<%
edad=22
pi=3.1416
nombre="juan"
fechahoy=#12/25/2008#
existe=true
response.write("variable entera:")
response.write(edad)
response.write("<br>")
response.write("variable real:")
response.write(pi)
response.write("<br>")
response.write("variable cadena:")
response.write(nombre)
response.write("<br>")
response.write("variable fecha:")
response.write(fechahoy)
response.write("<br>")
response.write("variable logica:")
response.write(existe)
%>

</body>
</html>
Una variable entera se define cuando le asignamos un valor entero:
edad=22
Luego para imprimir dicha variable hacemos:
response.write("variable entera:")
response.write(edad)
response.write("<br>")
Primero mostramos un mensaje para saber que tipo de variable estamos imprimiendo,
seguidamente en la segunda llamada al mtodo write imprimimos la variable y por
ltimo procedemos a imprimir el elemento HTML <br> para que se efecte un salto de
lnea en el navegador y cada variable aparezca en una lnea distinta.
Para definir una variable real debemos utilizar el caracter .:
pi=3.1416
Las variables de tipo string se inicializan asignndole una cadena encerrada entre dobles
comillas:
nombre="juan"
Una variable de tipo fecha debe estar encerrada entre los caracteres # y el orden de
inicializacin es mes/da/ao:
fechahoy=#12/25/2008#
Por ltimo una variable lgica solo puede almacenar alguno de estos dos valores (true o
false):
existe=true

Lo operadores matemticos para las variables enteras y reales son:
+
-
*
/
\ (retorna la parte entera de la divisin)
mod (retorna el resto de una divisin)
^ (eleva un nmero a un determinado exponente)
Para concatenar variables de tipo string debemos utilizar el operador &

5 - Variables y sus tipos
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Definir las siguientes tipos de variables: entera, real, string, fecha y lgica. Luego
imprimir sus contenidos una por lnea.

pagina1.asp
<html>
<head>
<title>problema</title>
</head>
<body>
<%
edad=22
pi=3.1416
nombre="juan"
f echahoy=#12/25/2008#
existe=true
response.write("variable entera:")
response.write(edad)
response.write("<br>")



5 - Variables y sus tipos
primero de la lista mostrando en una pgina el resultado)
Problema:
Definir tres variables enteras e inicializarlas con distintos valores. Guardar la suma de
las tres en una cuarta variable. Luego mostrar las tres variables y la variable que
almacena la suma.
Problema:
<html>
<head>
<title>problema</title>
</head>
<body>

<%
valor1=120
valor2=50
valor3=30
suma=valor1+valor2+valor3
response.write("Primer valor:")
response.write(valor1)
response.write("<br>")
response.write("Segundo valor:")
response.write(valor2)
response.write("<br>")
response.write("Tercer valor:")
response.write(valor3)
response.write("<br>")
response.write("La suma de los tres valores es:")
response.write(suma)
%>

</body>
</html>
Definir tres variables enteras e inicializarlas con distintos valores. Guardar la suma de
las tres en una cuarta variable. Luego mostrar las tres variables y la variable que
almacena la suma.

6 - Forzar definicin de variables
Habamos visto en el concepto anterior que las variables se creaban cuando le
asignbamos un valor. Esto puede ser muy peligroso ya que podemos caer fcilmente en
este error:
edad=22
...
...
response.write(ed)
Este programa no provoca error ya que cuando queremos imprimir la variable ed y el
VBScript no la encuentra entre las definidas procede a crear una nueva variable.
El lenguaje VBScript nos permite indicarle que nos obligue a definir todas las variables
que utilizamos en el programa. Esto se logra indicando en la primer lnea el comando:
option explicit
Luego utilizamos la palabra dim seguida de las variables a definir.
Veamos un ejemplo donde definimos tres variables con los nombres de personas:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nom1,nom2,nom3
nom1="ana"
nom2="carlos"
nom3="luis"
response.write(nom1)
response.write("<br>")
response.write(nom2)
response.write("<br>")
response.write(nom3)
%>
</body>
</html>
Como podemos observar la primera lnea del archivo es:
<%option explicit%>
Luego todas las variables que utilizaremos debemos definirlas seguidas de la palabra
clave dim:
dim nom1,nom2,nom3
La asignacin de variables no sufre cambios con respecto a lo visto:
nom1="ana"
Ahora bien si en alguna parte del programa nos equivocamos y tratamos de asignarle un
valor a una variable inexistente (no definida) el programa se detiene y nos informa del
error:
n1="ana"
Provoca un error similar a esto:
Microsoft VBScript runtime error '800a01f4'

Variable is undefined: 'n1'

/aspya/usuarios/190.30.94.164/pagina1.asp, line 9
Es muy conveniente la definicin de variables, nos evitan muchos problemas cuando un
programa es ms grande y tenemos una gran cantidad de variables. Las nuevas
tecnologas de Microsoft ASP.Net obligan por defecto la definicin de variables.

6 - Forzar definicin de variables
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Definir tres variables de tipo string con los nombres de personas. Forzar la definicin
obligatoria de variables. Imprimir sus contenidos. Luego imprimir una variable que no
exista, podemos modificar lvemente el nombre de alguna de esas tres variables
definidas previamente (ver el mensaje de error). Luego elimine el comando option
explicit y ejecute nuevamente el programa.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nom1,nom2,nom3
nom1="ana"
nom2="carlos"
nom3="luis"
response.write(nom1)
response.write("<br>")
response.write(nom2)




6 - Forzar definicin de variables
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Definir tres variables de tipo string con los nombres de personas. Forzar la definicin
obligatoria de variables. Imprimir sus contenidos. Luego imprimir una variable que no
exista, podemos modificar lvemente el nombre de alguna de esas tres variables
definidas previamente (ver el mensaje de error). Luego elimine el comando option
explicit y ejecute nuevamente el programa.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nom1,nom2,nom3
nom1="ana"
nom2="carlos"
nom3="luis"
response.write(nom1)
response.write("<br>")
response.write(nom2)



7 - Estructura condicional if
Cuando se pretende que el programa, una vez llegado a un cierto punto, tome un camino
concreto en determinados casos y otro diferente si las condiciones de ejecucin difieren,
se utiliza la instruccin if:
if Condicin
Instruccin A1
Instruccin A2
else
Instruccin B1
Instruccin B2
end if
Si la condicin genera un valor verdadero se ejecutan luego todas las instrucciones
seguidas al if:
Instruccin A1
Instruccin A2
En caso que la condicin genere un valor falso se ejecutan las instrucciones seguidas al
else hasta encontrar el comando end if:
Instruccin B1
Instruccin B2
El bloque del else es opcional, es decir podemos hacer que ciertas instrucciones se
ejecuten y en caso de ser falso la condicin del if no se ejecute nada:
if Condicin
Instruccin A1
Instruccin A2
else
Instruccin B1
Instruccin B2
end if
Confeccionaremos una pgina que muestre un mensaje distinto si el da actual tiene un
dgito o dos:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim fecha,dia
fecha=date()
dia=day(fecha)
response.write("Hoy es")
response.write(dia)
response.write("<br>")
if dia<10 then
response.write("El nmero de da tiene un dgito")
else
response.write("El nmero de da tiene dos dgitos")
end if
%>
</body>
</html>
Recordemos que lo primero que hacemos es indicar que verifique que todas las
variables sean definidas:
<%option explicit%>
Definimos las dos variables que requiere el problema:
dim fecha,dia
Obtenemos la fecha y le extraemos el nmero de da:
fecha=date()
dia=day(fecha)
Imprimimos el da actual:
response.write("Hoy es")
response.write(dia)
response.write("<br>")
Mediante un if verificamos si el da es menor a 10:
if dia<10 then
En caso de que la condicin se verifique verdadera procedemos a imprimir en la pgina
HTML el siguiente mensaje:
response.write("El nmero de da tiene un dgito")
En caso que la condicin genere un valor falso procede a ejecutar las instrucciones
indicadas despus del else:
response.write("El nmero de da tiene dos dgitos")
Para las condiciones tener en cuenta que disponemos de los siguientes operadores
relacionales:
= para ver si una variable es igual a otra.
<> distinto.
>= mayor o igual.
> mayor.
<= menor o igual.
< menor.
7 - Estructura condicional if
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)


pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim f echa,dia
f echa=date()
dia=day(f echa)
response.write("Hoy es")
response.write(dia)
response.write("<br>")
if dia<10 then



7 - Estructura condicional if
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Obtener el mes actual y luego mostrar un mensaje indicando si corresponde al mes de
diciembre.
Para obtener el nmero de mes procedemos de la siguiente manera:
fecha=date()
mes=month(fecha)
Modificar el programa para preguntar por el mes actual.

Ver solucin

pagina1.asp



8 - Formulario HTML (control text)
Una de los objetivos fundamentales de las pginas dinmicas es rescatar los datos de un
formulario HTML y registrarlos en un archivo o base de datos.
Los siguientes conceptos tratan como rescatar cada uno de los controles de un
formulario HTML en el servidor.
El primer control que rescataremos el dato es el de tipo "text". Recordemos que este tipo
de control permite ingresar una cadena en una lnea (por ejemplo cargar un nombre, una
direccin, un nmero etc.)
Implementaremos un problema muy sencillo para utilizar este control.
Desarrollaremos un formulario HTML que solicite la carga de dos enteros y
seguidamente al presionar el botn de envo de datos rescataremos los datos en el
servidor y procederemos a sumarlos y generar una nueva pgina HTML que se enviar
al navegador con el resultado.
El archivo HTML es muy sencillo y lo podemos ver:
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese el primer valor:
<input type="text" name="valor1"><br>
Ingrese el segundo valor:
<input type="text" name="valor2"><br>
<input type="submit" value="sumar"><br>
</form>
</body>
</html>
Recordemos del curso de HTML Ya que un control de tipo "text" se define:
<input type="text" name="valor1">
Lo ms importante es subrayar el valor que le asignamos al atributo name. Este
identificador es el que utilizaremos en la pgina ASP para rescatar el valor.
En el elemento form indicamos la pgina ASP que recibir los datos:
<form action="pagina1.asp" method="post">
La propiedad action indica la pgina ASP que recibir y procesar los datos en el
servidor (es importante hacer notar que si bien los dos archivos tiene el mismo nombre
difieren en las extensiones: pagina1.html y pagina1.asp)
El control de tipo "submit" tiene por objetivo enviar los datos del formulario al servidor
para que sean procesados:
<input type="submit" value="sumar">
Ahora veamos la pgina que contiene el cdigo VBScript que se ejecuta en el servidor y
rescata los valores del formulario.
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v1,v2,suma
v1=request.form("valor1")
v2=request.form("valor2")
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")
response.write(suma)
%>
</body>
</html>
Definimos 3 variables donde almacenaremos los dos valores rescatados del formulario y
un tercer donde guardaremos la suma de los mismos:
dim v1,v2,suma
Para rescatar el contenido de un control HTML debemos utilizar el objeto request y su
mtodo form cumple dicho objetivo. Debemos pasar como parmetro al mtodo el
nombre asignado al control en el formulario HTML, en nuestro caso valor1:
v1=request.form("valor1")
Luego de ejecutar esta lnea tenemos almacenado el valor en la variable v1. El mtodo
form recupera el dato en formato string.
Para sumar los dos valores enteros debemos convertirlos mediante la funcin cint:
suma=cint(v1)+cint(v2)
Imprimimos un mensaje y la suma de los dos valores dentro de la pgina:
response.write("la suma de los dos valores es:")
response.write(suma)
Es muy importante tener presente que el archivo que llega al navegador es semejante a
este:
<html>
<head>
<title>problema</title>
</head>
<body>
la suma de los dos valores es:17
</body>
</html>
Es decir al navegador llega HTML puro y no llega el programa codificado en VBScript,
no importa que la extensin que llega al navegador sea asp.
8 - Formulario HTML (control text)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un formulario que solicite la carga de dos valores enteros por teclado.
Luego mostrar en otra pgina su suma. Utilizar controles HTML de tipo text para la
entrada de datos.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese el primer valor:
<input type="text" name="valor1"><br>
Ingrese el segundo valor:
<input type="text" name="valor2"><br>
<input type="submit" value="sumar"><br>
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v1,v2,suma
v1=request.f orm("valor1")
v2=request.f orm("valor2")
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")
response.write(suma)
%>

8 - Formulario HTML (control text)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego
mostrar la superficie del mismo (lado*lado)

Ver solucin

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese la medida del lado del cuadrado:
<input type="text" name="lado"><br>
<input type="submit" value="Calcular superficie"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim lado,superficie

lado=request.form("lado")
superficie=lado*lado
response.write("la superficie del cuadrodo es : ")
response.write(superficie)
%>
</body>
</html>
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego
mostrar la superficie del mismo (lado*lado)



pagina1.html
9 - Formulario HTML (control radio)
El segundo control que podemos utilizar en un formulario HTML son los de tipo radio.
La caracterstica de estos controles es que normalmente agrupamos un conjunto de
radios para la seleccin de uno de ellos.
El navegador permite seleccionar solo un control de tipo radio a la vez. Cuando
seleccionamos otro automticamente deselecciona el actual.
Para ver la sintaxis y uso de este control implementaremos la carga de dos nmeros y
posteriormente mediante dos controles de tipo radio pediremos que seleccione si quiere
sumarlos o restarlos (solo una de estas operaciones se puede seleccionar)
pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese primer valor:
<input type="text" name="valor1">
<br>
Ingrese segundo valor:
<input type="text" name="valor2">
<br>
<input type="radio" name="radio1" value="suma">sumar
<br>
<input type="radio" name="radio1" value="resta">restar
<br>
<input type="submit" value="operar">
</form>
</body>
</html>
Si observamos la sintaxis para la definicin de cada radio:
<input type="radio" name="radio1" value="suma">sumar
<br>
<input type="radio" name="radio1" value="resta">restar
<br>
vemos que los dos tienen el mismo valor para la propiedad name (en nuestro caso el
valor radio1) de esta forma el navegador puede identificar que los dos controles de tipo
radio estn relacionados.
La propiedad type la inicializamos con el valor radio. La propiedad value almacena el
valor que se rescatar en la pgina ASP.
Veamos ahora la pgina que rescata los valores de los controles text y verifica que
elemento radio se encuentra seleccionado:
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v1,v2,suma,operacion,resta
v1=request.form("valor1")
v2=request.form("valor2")
operacion=request.form("radio1")
if (operacion="suma") then
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")
response.write(suma)
end if
if (operacion="resta") then
resta=cint(v1)-cint(v2)
response.write("la diferencia de los dos valores es:")
response.write(resta)
end if
%>
</body>
</html>
Definimos las variables que necesitaremos para resolver el algoritmo:
dim v1,v2,suma,operacion,resta
Rescatamos el valor contenido en cada control de tipo "text" como ya conocemos:
v1=request.form("valor1")
v2=request.form("valor2")
Para rescatar el valor del control radio seleccionado procedemos de la siguiente manera:
operacion=request.form("radio1")
Luego de esto tenemos almacenado en la variable operacion el atributo value del control
radio seleccionado.
Verificamos con un if si se encuentra seleccionado el primer radio:
if (operacion="suma") then
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")
response.write(suma)
end if
Procedemos de la misma manera para verificar si el valor rescatado del control radio
almacena el valor resta:
if (operacion="resta") then
resta=cint(v1)-cint(v2)
response.write("la diferencia de los dos valores es:")
response.write(resta)
end if
Podemos comentar tambin que pueden no estar seleccionado ningn control de tipo
radio, por lo que las dos condiciones del if seran falsas y no mostrara valor alguno.
Si queremos que uno de los controles de tipo radio aparezca seleccionado por defecto
debemos agregarle la propiedad checked:
<input type="radio" name="radio1" value="suma" checked>sumar
9 - Formulario HTML (control radio)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un formulario que solicite la carga de dos valores enteros por teclado.
Luego mediante dos controles HTML de tipo radio solicitar que indique el operador si
quiere sumarlos o restarlos. Mostrar el resultado en una pgina ASP.

pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese primer valor:
<input type="text" name="valor1">
<br>
Ingrese segundo valor:
<input type="text" name="valor2">
<br>
<input type="radio" name="radio1" value="suma">sumar
<br>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v1,v2,suma,operacion,resta
v1=request.f orm("valor1")
v2=request.f orm("valor2")
operacion=request.f orm("radio1")
if (operacion="suma") then
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")


9 - Formulario HTML (control radio)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese la medida del lado del cuadrado:
<input type="text" name="lado"><br>
<input type="radio" name="radio1" value="perimetro">Permetro<br>
<input type="radio" name="radio1" value="superficie">Superficie<br>
<input type="submit" value="Calcular"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim lado,operacion,superficie,perimetro

lado=request.form("lado")
operacion=request.form("radio1")
if operacion="perimetro" then
perimetro=lado*4
response.write("el permetro del cuadrodo es : ")
response.write(perimetro)
end if
if operacion="superficie" then
superficie=lado*lado
response.write("la superficie del cuadrodo es : ")
response.write(superficie)
end if
%>
</body>
</html>
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego
disponer dos controles de tipo radio que permita seleccionar entre calcular la superficie
y el permetro del cuadrado.



pagina1.html







pagina1.asp
9 - Formulario HTML (control radio)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego
disponer dos controles de tipo radio que permita seleccionar entre calcular la superficie
y el permetro del cuadrado.

Ver solucin

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese la medida del lado del cuadrado:
<input type="text" name="lado"><br>
<input type="radio" name="radio1" value="perimetro">Permetro<br>
<input type="radio" name="radio1" value="superficie">Superficie<br>
<input type="submit" value="Calcular"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim lado,operacion,superficie,perimetro

lado=request.form("lado")
operacion=request.form("radio1")
if operacion="perimetro" then
perimetro=lado*4
response.write("el permetro del cuadrodo es : ")
response.write(perimetro)
end if
if operacion="superficie" then
superficie=lado*lado
response.write("la superficie del cuadrodo es : ")
response.write(superficie)
end if
%>
</body>
</html>
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego
disponer dos controles de tipo radio que permita seleccionar entre calcular la superficie
y el permetro del cuadrado.



pagina1.html









pagina1.asp

10 - Formulario HTML (control select)
Veamos el control HTML de tipo select. Este tipo de control el funcionamiento es
similar al funcionamiento de un conjunto de controles de tipo radio.
Confeccionaremos el mismo problemas del concepto anterior es decir cargar dos
nmeros y posteriormente mediante un control de tipo select seleccionar si queremos
sumarlos o restarlos (solo una de estas operaciones se puede seleccionar)
La pgina HTML es la siguiente:
pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese primer valor:
<input type="text" name="valor1">
<br>
Ingrese segundo valor:
<input type="text" name="valor2">
<br>
<select name="operacion">
<option value="suma">Sumar</option>
<option value="resta">Restar</option>
</select>
<br>
<input type="submit" value="operar">
</form>
</body>
</html>
La sintaxis del control de tipo select es:
<select name="operacion">
<option value="suma">Sumar</option>
<option value="resta">Restar</option>
</select>
Es importante notar que la sintaxis es bastante distinta a los controles de tipo text y
radio.
El elemento select tiene definido la propiedad name mediante la cual rescataremos el
valor seleccionado en el servidor.
El elemento select contiene un conjunto de elementos option. Cada elemento option
tiene definido la propiedad value. El que quede seleccionado el control select rescata su
propiedad value.
Ahora el algoritmo en la pgina ASP es igual al planteado para los controles radio:
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v1,v2,suma,operacion,resta
v1=request.form("valor1")
v2=request.form("valor2")
operacion=request.form("operacion")
if (operacion="suma") then
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")
response.write(suma)
end if
if (operacion="resta") then
resta=cint(v1)-cint(v2)
response.write("la diferencia de los dos valores es:")
response.write(resta)
end if
%>
</body>
</html>
Definimos las variables y rescatamos los tres valores del formulario:
dim v1,v2,suma,operacion,resta
v1=request.form("valor1")
v2=request.form("valor2")
operacion=request.form("operacion")
Ahora en la variable operacin tenemos el valor seleccionado en el control select.
Mediante dos if detectamos la operacin seleccionada y procedemos a calcular e
imprimir su resultado:
if (operacion="suma") then
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")
response.write(suma)
end if
if (operacion="resta") then
resta=cint(v1)-cint(v2)
response.write("la diferencia de los dos valores es:")
response.write(resta)
end if

10 - Formulario HTML (control select)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un formulario que solicite la carga de dos valores enteros por teclado.
Luego mediante un control HTML de tipo select solicitar que indique el operador si
quiere sumarlos o restarlos.
Mostrar el resultado en una pgina ASP.

pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese primer valor:
<input type="text" name="valor1">
<br>
Ingrese segundo valor:
<input type="text" name="valor2">
<br>
<select name="operacion">
<option value="suma">Sumar</option>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v1,v2,suma,operacion,resta
v1=request.f orm("valor1")
v2=request.f orm("valor2")
operacion=request.f orm("operacion")
if (operacion="suma") then
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")



10 - Formulario HTML (control select)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego
disponer un control de tipo select con dos opciones que permita seleccionar entre
calcular la superficie o el permetro del cuadrado.

Ver solucin

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese la medida del lado del cuadrado:
<input type="text" name="lado"><br>
<select name="operacion">
<option value="perimetro">Permetro</option>
<option value="superficie">Superficie</option>
</select>
<br>
<input type="submit" value="Calcular"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim lado,operacion,superficie,perimetro
lado=request.form("lado")
operacion=request.form("operacion")
if operacion="perimetro" then
perimetro=lado*4
response.write("el permetro del cuadrado es : ")
response.write(perimetro)
end if
if operacion="superficie" then
superficie=lado*lado
response.write("la superficie del cuadrado es : ")
response.write(superficie)
end if
%>
</body>
</html>
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego
disponer un control de tipo select con dos opciones que permita seleccionar entre
calcular la superficie o el permetro del cuadrado.



pagina1.html







pagina1.asp




11 - Formulario HTML (control select -
con seleccin mltiple)

Veamos una variante del control select la cual permite seleccionar varias opciones de su
contenido. Para esto debemos agregar la propiedad multiple cuando lo definimos:
<select name="operacion" multiple>
Con este simple cambio podemos seleccionar ms de un elemento del interior del
control select.
Confeccionaremos el mismo problema anterior, solo que ahora podremos seleccionar
las dos operaciones en forma simultanea
El archivo HTML ahora queda codificado de la siguiente manera:
pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese primer valor:
<input type="text" name="valor1">
<br>
Ingrese segundo valor:
<input type="text" name="valor2">
<br>
<select name="operacion" multiple>
<option value="suma">Sumar</option>
<option value="resta">Restar</option>
</select>
<br>
<input type="submit" value="operar">
</form>
</body>
</html>
El nico cambio es el agregado de la propiedad multiple al elemento select. Esta
propiedad no requiere que se le asigne un valor.
Cuando ejecutamos la pgina para la seleccin mltiple debemos presionar la tecla Ctrl
y con el mouse seleccionar la opcin, esto lo repetimos por cada elemento del select que
queremos que quede seleccionada.
En cuanto al programa ASP que procesa los datos del formulario es:
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v1,v2,suma,operaciones,resta
v1=request.form("valor1")
v2=request.form("valor2")
operaciones=request.form("operacion")
if (instr(operaciones,"suma")<>0) then
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")
response.write(suma)
response.write("<br>")
end if
if (instr(operaciones,"resta")<>0) then
resta=cint(v1)-cint(v2)
response.write("la diferencia de los dos valores es:")
response.write(resta)
end if
%>
</body>
</html>
Ahora cuando rescatamos el contenido del control select:
operaciones=request.form("operacion")
se almacena en la variable operacin todos los contenidos de las propiedades value de
las opciones seleccionadas. Cada valor est separado por una coma.
Esta forma de retornar todos los valores nos complica en el momento de verificar cual
de las opciones est seleccionada.
Una forma de verificar si una de las opciones est seleccionada es empleando la funcin
intstr.
Esta funcin tiene dos parmetros, el primero recibe la cadena completa a analizar y el
segundo la cadena a buscar. Si esta funcin retorna un valor distinto a cero significa que
se encuentra la cadena a buscar.
Entonces tenemos:
if (instr(operaciones,"suma")<>0) then
Si el string "suma" se encuentra almacenada en alguna parte de la variable operacin la
funcin instr retorna un valor distinto a cero por lo que la condicin del if se verifica
verdadera y procedemos a efectuar la suma de los dos valores.

11 - Formulario HTML (control select -
con seleccin mltiple)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un formulario que solicite la carga de dos valores enteros por teclado.
Luego mediante un control HTML de tipo select (de seleccin mltiple) solicitar que
indique el usuario si quiere sumarlos,restarlos o ambos.
Mostrar el resultado en una pgina ASP.

pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese primer valor:
<input type="text" name="valor1">
<br>
Ingrese segundo valor:
<input type="text" name="valor2">
<br>
<select name="operacion" multiple>
<option value="suma">Sumar</option>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v1,v2,suma,operaciones,resta
v1=request.f orm("valor1")
v2=request.f orm("valor2")
operaciones=request.f orm("operacion")
if (instr(operaciones,"suma")<>0) then
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")

11 - Formulario HTML (control select -
con seleccin mltiple)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego
disponer un control de tipo select con dos opciones (permetro, superficie) que permita
selecciones mltiples.

Ver solucin

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese la medida del lado del cuadrado:
<input type="text" name="lado"><br>
<select name="operaciones" multiple>
<option value="perimetro">Permetro</option>
<option value="superficie">Superficie</option>
</select>
<br>
<input type="submit" value="Calcular"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim lado,operaciones,superficie,perimetro
lado=request.form("lado")
operaciones=request.form("operaciones")
if (instr(operaciones,"perimetro")<>0) then
perimetro=lado*4
response.write("el permetro del cuadrado es : ")
response.write(perimetro)
response.write("<br>")
end if
if (instr(operaciones,"superficie")<>0) then
superficie=lado*lado
response.write("la superficie del cuadrado es : ")
response.write(superficie)
end if
%>
</body>
</html>
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego
disponer un control de tipo select con dos opciones (permetro, superficie) que permita
selecciones mltiples.



pagina1.html







pagina1.asp
12 - Formulario HTML (control
checkbox)
Otra forma de hacer selecciones mltiples es utilizar un conjunto de controles de tipo
checkbox. Cada control de tipo checkbox es independiente.
Resolvamos el problema del concepto anterior empleando dos controles de tipo
checkbox.
pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese primer valor:
<input type="text" name="valor1">
<br>
Ingrese segundo valor:
<input type="text" name="valor2">
<br>
<input type="checkbox" name="check1" value="suma">sumar
<br>
<input type="checkbox" name="check2" value="resta">restar
<br>
<input type="submit" value="operar">
</form>
</body>
</html>
Como podemos observar:
<input type="checkbox" name="check1" value="suma">sumar
<br>
<input type="checkbox" name="check2" value="resta">restar
<br>
cada control de tipo checkbox define en la propiedad name un nombre distinto (check1
y check2)
Es importante notar que definimos la propiedad value para cada checkbox, este valor se
rescatar en caso que el checkbox est seleccionado.
Veamos ahora el archivo que contiene el programa ASP.
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v1,v2,suma,operacion,resta
v1=request.form("valor1")
v2=request.form("valor2")
operacion=request.form("check1")
if (operacion="suma") then
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")
response.write(suma)
response.write("<br>")
end if
operacion=request.form("check2")
if (operacion="resta") then
resta=cint(v1)-cint(v2)
response.write("la diferencia de los dos valores es:")
response.write(resta)
end if
%>
</body>
</html>
Rescatamos el contenido del primer checkbox:
operacion=request.form("check1")
Si el primer checkbox est seleccionado la variable opcin almacena el contenido de la
propiedad value, en caso de no estar seleccionado la variable operacin almacena una
cadena vaca que es el valor retornado por la llamada al mtodo form del objeto request
pasando como parmetro el name del primer checkbox.
Con una estructura if verificamos si el valor devuelto corresponde al string "suma":
if (operacion="suma") then
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")
response.write(suma)
response.write("<br>")
end if
Luego hacemos la misma actividad para rescatar el valor del segundo checkbox y
almacenamos el valor devuelto en la misma variable operacion (se pierde el valor
anterior):
operacion=request.form("check2")
if (operacion="resta") then
resta=cint(v1)-cint(v2)
response.write("la diferencia de los dos valores es:")
response.write(resta)
end if
Los parntesis en la condicin de un if son opcionales.

12 - Formulario HTML (control
checkbox)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un formulario que solicite la carga de dos valores enteros por teclado.
Luego mediante dos controles HTML de tipo checkbox solicitar que indique el usuario
si quiere sumarlos,restarlos o ambos.
Mostrar el resultado en una pgina ASP.

pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese primer valor:
<input type="text" name="valor1">
<br>
Ingrese segundo valor:
<input type="text" name="valor2">
<br>
<input type="checkbox" name="check1" value="suma">sumar
<br>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v1,v2,suma,operacion,resta
v1=request.f orm("valor1")
v2=request.f orm("valor2")
operacion=request.f orm("check1")
if (operacion="suma") then
suma=cint(v1)+cint(v2)
response.write("la suma de los dos valores es:")

12 - Formulario HTML (control
checkbox)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego
disponer dos controles de tipo checkbox que nos permitan si queremos calcular el
permetro y superficie del cuadrado.

Ver solucin

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese la medida del lado del cuadrado:
<input type="text" name="lado"><br>
<input type="checkbox" name="check1" value="perimetro">Permetro<br>
<input type="checkbox" name="check2" value="superficie">Superficie<br>
<input type="submit" value="Calcular"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim lado,operacion,perimetro,superficie
lado=request.form("lado")
operacion=request.form("check1")
if operacion="perimetro" then
perimetro=lado*4
response.write("el permetro del cuadrado es : ")
response.write(perimetro)
response.write("<br>")
end if
operacion=request.form("check2")
if operacion="superficie" then
superficie=lado*lado
response.write("la superficie del cuadrado es : ")
response.write(superficie)
end if
%>
</body>
</html>
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego
disponer dos controles de tipo checkbox que nos permitan si queremos calcular el
permetro y superficie del cuadrado.
13 - Formulario HTML (control
textarea)


Otro control de uso comn es el textarea, a diferencia de un control de tipo "text" nos
permite ingresar muchas lneas de texto.
Confeccionaremos una pgina que solicite el ingreso de una persona y en un control de
tipo textarea permitir ingresar un comentario. En la pagina ASP mostraremos los datos
cargados en los dos controles.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese su nombre:
<input type="text" name="nombre"><br>
Comentarios<br>
<textarea name="comentarios" rows="10" cols="40"></textarea><br>
<input type="submit" value="enviar"><br>
</form>
</body>
</html>
Recordemos la sintaxis en HTML para la definicin de un control de tipo textarea:
<textarea name="comentarios"rows="10"cols="40"></textarea>
Mediante el valor de la propiedad name rescataremos el contenido del cuadro de texto.
Luego el programa ASP que rescata los datos ingresados (pagina1.asp):
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nombre,comentarios
nombre=request.form("nombre")
comentarios=request.form("comentarios")
response.write("Nombre ingresado:" & nombre)
response.write("<br>")
response.write("Comentarios:" & comentarios)
%>
</body>
</html>
Definimos las dos variables donde almacenaremos los datos rescatados del formulario:
dim nombre,comentarios
Ahora rescatamos los valores de los controles:
nombre=request.form("nombre")
comentarios=request.form("comentarios")
Por ltimo imprimimos los valores rescatados:
response.write("Nombre ingresado:" & nombre)
response.write("<br>")
response.write("Comentarios:" & comentarios)
El operador & nos permite concatenar una cadena con una variable y resolver la
impresin con una sola llamada al mtodo write.
13 - Formulario HTML (control
textarea)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un formulario que solicite el ingreso del nombre de una persona y en un
control de tipo textarea pedir el ingreso de un comentario. En la pagina ASP imprimir
los datos cargados en los dos controles.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese su nombre:
<input type="text" name="nombre"><br>
Comentarios<br>
<textarea name="comentarios" rows="10" cols="40"></textarea><br>
<input type="submit" value="enviar"><br>
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nombre,comentarios
nombre=request.f orm("nombre")
comentarios=request.f orm("comentarios")
response.write("Nombre ingresado:" & nombre)
response.write("<br>")
response.write("Comentarios:" & comentarios)
%>

13 - Formulario HTML (control textarea)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)

Problema:
Confeccionar un formulario que permita ingresa en una serie de controles de tipo text el
nombre y apellido de una persona, su edad, su direccin, su mail y en un control de tipo
textarea su curriculum. Imprimir los datos cargados en la pgina ASP.

Ver solucin

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Nombre y Apellido:
<input type="text" name="nombre" size="30"><br>
Edad:
<input type="text" name="edad" size="3"><br>
Direccin:
<input type="text" name="direccion" size="30"><br>
Mail:
<input type="text" name="mail" size="50"><br>
Curriculum<br>
<textarea name="curriculum" rows="10" cols="40"></textarea><br>
<input type="submit" value="enviar"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nombre,edad,direccion,mail,curriculum

nombre=request.form("nombre")
edad=request.form("edad")
direccion=request.form("direccion")
mail=request.form("mail")
curriculum=request.form("curriculum")
response.write("Nombre: " & nombre)
response.write("<br>")
response.write("Edad: " & edad)
response.write("<br>")
response.write("Direccin: " & direccion)
response.write("<br>")
response.write("Mail: " & mail)
response.write("<br>")
response.write("Curriculum: " & curriculum)
response.write("<br>")
%>
</body>
</html>
Confeccionar un formulario que permita ingresa en una serie de controles de tipo text el
nombre y apellido de una persona, su edad, su direccin, su mail y en un control de tipo
textarea su curriculum. Imprimir los datos cargados en la pgina ASP.



pagina1.html







pagina1.asp


14 - Formulario HTML (control
password)


Otro control muy empleado es el de tipo password. Su funcionamiento y mecnica para
rescatar su valor es semejante al control de tipo "text", la nica diferencia es que cuando
tipeamos caracteres dentro del control nos muestra asterscos en lugar de los caracteres.
Para ver su funcionamiento implementaremos un formulario para el ingreso del nombre
de usuario y su clave. En la pgina ASP imprimiremos los dos datos ingresados.
pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Nombre de usuario:
<input type="text" name="nombre">
<br>
Clave:
<input type="password" name="clave">
<br>
<input type="submit" value="Ingresar">
</form>
</body>
</html>
Como podemos observar para definir un control de tipo password en HTML debemos
inicializar la propiedad type con el valor "password":
<input type="password" name="clave">
La pgina ASP que rescata los valores ingresados y los imprime (pagina1.asp)
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nombre,clave
nombre=request.form("nombre")
clave=request.form("clave")
response.write("Nombre ingresado:" & nombre)
response.write("<br>")
response.write("Clave ingresada:" & clave)
%>
</body>
</html>
Recordemos que en la primera lnea del archivo siempre ejecutamos el comando option
explicit para obligar la definicin de variables:
<%option explicit%>
Definimos las variables y rescatamos los valores de los dos controles:

dim nombre,clave
nombre=request.form("nombre")
clave=request.form("clave")
Imprimimos los valores cargados:
response.write("Nombre ingresado:" & nombre)
response.write("<br>")
response.write("Clave ingresada:" & clave)
14 - Formulario HTML (control
password)


Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un formulario para el ingreso del nombre de usuario y su clave. Emplear
el control de tipo password para el ingreso de la clave. En la pgina ASP imprimir los
dos datos ingresados.

pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Nombre de usuario:
<input type="text" name="nombre">
<br>
Clave:
<input type="password" name="clave">
<br>
<input type="submit" value="Ingresar">
</f orm>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nombre,clave
nombre=request.f orm("nombre")
clave=request.f orm("clave")
response.write("Nombre ingresado:" & nombre)
response.write("<br>")
response.write("Clave ingresada:" & clave)
%>

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Solicitar el ingreso de una clave dos veces (es decir disponer dos controles de tipo
password), luego en el servidor verificar si las claves ingresadas son iguales, mostrar un
mensaje informando si se cargaron valores iguales o distintos.

Ver solucin

pagina1.html
Problema:
<html>
<head>
<title>Problema</title>
</head>
<body>

<form action="pagina1.asp" method="post">
Ingrese Clave:<p>
<input type="password" name="clave1">
<br>
Repita el ingrese de la Clave:<p>
<input type="password" name="clave2">
<br>
<input type="submit" value="Ingresar">
</form>

</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim clave1,clave2

clave1=request.form("clave1")
clave2=request.form("clave2")
if clave1=clave2 then
response.write("<h2>Las claves ingresadas son iguales.</h2>")
else
response.write("<h2>Las claves ingresadas no son iguales.</h2>")
end if
%>
</body>
</html>
Solicitar el ingreso de una clave dos veces (es decir disponer dos controles de tipo
password), luego en el servidor verificar si las claves ingresadas son iguales, mostrar un
mensaje informando si se cargaron valores iguales o distintos.



pagina1.html







pagina1.asp


15 - Estructuras condicionales anidadas
Habamos visto la estructura condicional if
if condicion then
instrucciones
else
instrucciones
end if
Hay situaciones donde por la rama del else podemos disponer otra estructura
condicional y as sucesivamente.
Para ver la sintaxis desarrollaremos un formulario donde ingresaremos un valor por
teclado comprendido entre 1 y 1000. Luego mostraremos cuantos dgitos tiene.
Emplearemos una serie de if anidados para ver la cantidad de dgitos.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingresar un valor entre 1 y 1000:
<input type="text" name="valor"><br>
<input type="submit" value="calcular">
</form>
</body>
</html>
La pgina que contiene el programa ASP es
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v
v=cint(request.form("valor"))
if v<10 Then
response.write("Tiene un dgito")
else
if v<100 Then
response.write("Tiene dos dgitos")
else
if v<1000 Then
response.write("Tiene tres dgitos")
else
if v<10000 Then
response.write("Tiene cuatro dgitos")
end if
end if
end if
end if
%>
</body>
</html>
Definimos una variable y guardamos el contenido del control text en esta, previa
conversin a tipo de dato entero:
dim v
v=cint(request.form("valor"))
La parte del verdadero del primer if es similar a lo ya visto:
if v<10 Then
response.write("Tiene un dgito")
else
La rama del else contiene otra estructura condicional:
if v<100 Then
response.write("Tiene dos dgitos")
Nuevamente esta estructura condicional interna por la rama del else tiene otra estructura
condicionas:
if v<1000 Then
response.write("Tiene tres dgitos")
Finalmente por el else de esta estructura condicional tenemos una nueva estructura
condicional:
if v<10000 Then
response.write("Tiene cuatro dgitos")
end if
Es importante notar que debemos cerrar con end if cada estructura condicional:
end if
end if
end if
La tcnica mas adecuada para no confundirse como cerrar cada estructura condicional
es escribir inicialmente esto:
if v<10 Then
response.write("Tiene un dgito")
else
end if
Es decir disponemos todo el cdigo que hay por la rama del verdadero, luego la palabra
else y procedemos a cerrar el if.
Como segundo paso procedemos a escribir la actividad del else:
if v<10 Then
response.write("Tiene un dgito")
else
if v<100 Then
response.write("Tiene dos dgitos")
else
end if
end if
Nuevamente planteamos la estructura condicional sin indicar la actividad del else, pero
cerramos correctamente con el end if.
Repetimos el mismo proceso para la rama del else:
if v<10 Then
response.write("Tiene un dgito")
else
if v<100 Then
response.write("Tiene dos dgitos")
else
if v<1000 Then
response.write("Tiene tres dgitos")
else
end if
end if
end if
Por ltimo disponemos el cdigo del else de la estructura if ms anidada, quedando el
cdigo:
if v<10 Then
response.write("Tiene un dgito")
else
if v<100 Then
response.write("Tiene dos dgitos")
else
if v<1000 Then
response.write("Tiene tres dgitos")
else
if v<10000 Then
response.write("Tiene cuatro dgitos")
end if
end if
end if
end if
15 - Estructuras condicionales anidadas
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un formulario que permita ingresar un valor por teclado comprendido
entre 1 y 1000. Luego mostrar cuantos dgitos tiene. Emplear una serie de if anidados
para ver la cantidad de dgitos.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingresar un valor entre 1 y 1000:
<input type="text" name="valor"><br>
<input type="submit" value="calcular">
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v
v=cint(request.f orm("valor"))
if v<10 Then
response.write("Tiene un dgito")
else
if v<100 Then
response.write("Tiene dos dgitos")


15 - Estructuras condicionales anidadas
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Ingresar por teclado el sueldo bruto de un operario y la cantidad de aos de servicio en
la empresa. Calcular el sueldo total sabiendo que si tiene menos de cinco aos en la
empresa se le hace un incremento del 10% al sueldo bruto, si tiene entre 5 y 10 ao de
antiguedad el incremento es del 15%, finalmente si tiene ms de 10 aos el aumento es
del 20%. Mostrar en la pgina el sueldo bruto y el sueldo final.

Ver solucin

pagina1.html
Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese sueldo bruto:
<input type="text" name="sueldobruto"><br>
Ingrese ao de trabajo en la empresa:
<input type="text" name="antiguedad"><br>
<input type="submit" value="calcular"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim sueldobruto,antiguedad,sueldototal,aumento
'cdbl convierte un valor a tipo double (con valores decimales)
sueldobruto=cdbl(request.form("sueldobruto"))
antiguedad=cint(request.form("antiguedad"))
if antiguedad<5 then
aumento=sueldobruto*0.10
else
if antiguedad<10 then
aumento=sueldobruto*0.15
else
aumento=sueldobruto*0.20
end if
end if
sueldototal=sueldobruto+aumento
response.write("Sueldo bruto : " & sueldobruto & "<br>")
response.write("Sueldo total : " & sueldototal)
%>
</body>
</html>
Ingresar por teclado el sueldo bruto de un operario y la cantidad de aos de servicio en
la empresa. Calcular el sueldo total sabiendo que si tiene menos de cinco aos en la
empresa se le hace un incremento del 10% al sueldo bruto, si tiene entre 5 y 10 ao de
antiguedad el incremento es del 15%, finalmente si tiene ms de 10 aos el aumento es
del 20%. Mostrar en la pgina el sueldo bruto y el sueldo final.



pagina1.html







pagina1.asp

16 - Estructura repetitiva for/next
La primer estructura repetitiva que veremos que tiene el VBScript es el for/next.
Esta estructura tiene la siguiente sintaxis:
for contador=valor-inicial to valor-final step avance
instrucciones
next
Esta estructura repetitiva inicializa un contador con el valor-inicial y hasta que no llegue
al valor-final inclusive no detiene la ejecucin de las instrucciones contenidas. Cada vez
que ejecuta las instrucciones incrementa en uno el contador, salvo que se encuentre
definida la seccin del step que indica cual es el incremento del contador.
Para ver su funcionamiento implementaremos una pgina que muestre los nmeros del
1 al 10 con un ciclo repetitivo for.
Luego en la misma pgina mostraremos los valores del 1 al 10 pero avanzando de a dos
(es decir 1,3,5 etc.)
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim x
for x=1 to 10
response.write(x & "-")
next
response.write("<br>")
for x=1 to 10 step 2
response.write(x & "-")
next
%>
</body>
</html>
Como no se requiere un formulario solo tenemos la pgina ASP.
Definimos una variable llamada x (puede tener cualquier nombre)
dim x
Para mostrar los nmeros del 1 al 10 inicializamos la variable x con el valor 1 e
indicamos luego de la palabra to el valor final al que debe llegar la variable x (como no
tiene la seccin del step el incremento es de uno):
for x=1 to 10
response.write(x & "-")
next
Como podemos ver dentro del for imprimimos el contenido de la variable x y
concatenamos un guin para que los nmeros no salgan pegados.
Insertamos el elemento HTML br (break) para que cada lista de valores aparezca en una
lnea separada.
response.write("<br>")
La segunda estructura repetitiva inicializar a x con uno pero en la seccin del step
indicamos que los incrementos sean de a dos:
for x=1 to 10 step 2
response.write(x & "-")
next
16 - Estructura repetitiva for/next
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Ingresar por teclado un valor entero. Luego mostrar 10 trminos de su tabla de
multiplicar (ej. si ingresamos el 5 debemos mostrar 5-10-15 ... hasta el 50)
Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese un valor entero para generar la tabla de multiplicar:
<input type="text" name="numero"><br>
<input type="submit" value="Mostrar tabla"><br>
</form>

</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim x,numero,tabla

numero=cint(request.form("numero"))
response.write("<h1>Tabla de multiplicar del nro " & numero & "</h1>")
tabla=numero
for x=1 to 10
response.write(tabla & "-")
tabla=tabla+numero
next
%>
</body>
</html>
Ingresar por teclado un valor entero. Luego mostrar 10 trminos de su tabla de
multiplicar (ej. si ingresamos el 5 debemos mostrar 5-10-15 ... hasta el 50)



pagina1.html

17 - Estructura repetitiva do/while/loop
Otra estructura repetitiva disponible en VBScript es esta:
do while condicion
instrucciones
loop
Este tipo de estructura repetitiva la tienen casi todos los lenguajes de programacin. Las
instrucciones se repiten mientras la condicin se verifique verdadera.
La condicin se encuentra previo a las instrucciones, es decir que si la primera vez la
condicin se verifica falsa el bloque de instrucciones no se ejecuta nunca.
Finaliza con la palabra clave loop.
Para probar esta estructura repetitiva confeccionaremos un formulario donde
ingresaremos un valor y luego mostraremos todos los valores pares hasta el valor
ingresado.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese un valor entero:
<input type="text" name="valor"><br>
<input type="submit" value="sumar">
</form>
</body>
</html>
Luego la pgina que contiene el programa:
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim valor,par
valor=cint(request.form("valor"))
response.write("<h1>valores pares hasta el nro " & valor &
"</h1>")
par=2
do while par<=valor
response.write(par & " - ")
par=par+2
loop
%>
</body>
</html>
Inicializamos un contador en 2:
par=2
La condicin del do while se verifica verdadera mientras el contador par sea menor o
igual al valor ingresado en el formulario:
do while par<=valor
Dentro del while imprimimos la variable par y la incrementamos en 2:
response.write(par & " - ")
par=par+2
Cerramos finalmente el ciclo repetitivo:
loop
17 - Estructura repetitiva do/while/loop
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionaremos un formulario donde ingresar un valor y luego mostrar todos los
valores pares hasta el valor ingresado.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese un valor entero:
<input type="text" name="valor"><br>
<input type="submit" value="sumar">
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim valor,par
valor=cint(request.f orm("valor"))
response.write("<h1>valores pares hasta el nro " & valor & "</h1>")
par=2
do while par<=valor
response.write(par & " - ")
par=par+2

17 - Estructura repetitiva do/while/loop
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un programa que sume todos los nmeros enteros desde 1 mientras la
suma no supere a 1000. Mostrar los nmeros sumados y al finalizar el proceso indicar
cuantos nmeros se sumaron.

Ver solucin

pagina1.asp
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nro,suma,cantidad

nro=1
suma=0
do while suma<=1000
response.write(nro & " - ")
suma=suma+nro
nro=nro+1
loop
response.write("<br>")
response.write("Se sumaron " & (nro-1) & " nmeros")
%>
</body>
</html>
Confeccionar un programa que sume todos los nmeros enteros desde 1 mientras la
suma no supere a 1000. Mostrar los nmeros sumados y al finalizar el proceso indicar
cuantos nmeros se sumaron.



pagina1.asp





18 - Estructura repetitiva do/loop/while
Una variante de la estructura repetitiva vista en el concepto anterior es:
do
instrucciones
loop while condicion
La condicin se encuentra al final de la estructura repetitiva. Con este tipo de estructura
repetitiva las instrucciones que contiene se ejecutan por lo menos una vez.
Dependiendo de la situacin no puede resultar ms sencillo disponer la condicin al
final que al principio.
Para ver su funcionamiento ingresaremos por teclado un valor entero positivo y
mostraremos dicho valor, luego lo decrementaremos en uno y lo mostraremos, esto
mientras el valor sea mayor a cero.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese un valor entero positivo:
<input type="text" name="valor"><br>
<input type="submit" value="sumar">
</form>
</body>
</html>
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim valor
valor=cint(request.form("valor"))
do
response.write(valor & " - ")
valor=valor-1
loop while valor>0
%>
</body>
</html>
El ciclo repetitivo:
do
response.write(valor & " - ")
valor=valor-1
loop while valor>0
Como podemos ver por lo menos se imprime el primer valor, luego de restarle uno
verificamos si todava es mayor a cero, en caso afirmativo procede nuevamente a
ejecutar las dos instrucciones del do.

18 - Estructura repetitiva do/loop/while

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Ingresar por teclado un valor entero positivo y mostrar dicho valor, luego decrementarlo
en uno y lo mostrarlo, esto mientras el valor sea mayor a cero.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese un valor entero positivo:
<input type="text" name="valor"><br>
<input type="submit" value="sumar">
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim valor
valor=cint(request.f orm("valor"))
do
response.write(valor & " - ")
valor=valor-1
loop while valor>0
%>
</body>

18 - Estructura repetitiva do/loop/while
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un formulario que solicite el ingreso de dos valores enteros. Luego
imprimir de uno en uno desde el menor hasta el mayor inclusive.

Ver solucin

pagina1.html
Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese primer valor:
<input type="text" name="valor1"><br>
Ingrese segundo valor:
<input type="text" name="valor2"><br>
<input type="submit" value="ver">
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim valor1,valor2,menor,mayor

valor1=cint(request.form("valor1"))
valor2=cint(request.form("valor2"))
if valor1<valor2 then
menor=valor1
mayor=valor2
else
menor=valor2
mayor=valor1
end if
do
response.write(menor & " - ")
menor = menor + 1
loop while menor<=mayor
%>
</body>
</html>
Confeccionar un formulario que solicite el ingreso de dos valores enteros. Luego
imprimir de uno en uno desde el menor hasta el mayor inclusive.



pagina1.html


19 - Parmetros en un hipervnculo
Habamos visto que podemos enviar datos al servidor mediante un formulario. En
muchas situaciones necesitamos enviar datos al servidor al ser presionado un
hipervnculo.
Vamos a resolver un problema muy sencillo donde llamaremos a otra pgina envindole
como parmetro un nmero. La pgina que lo recibe imprime la tabla de multiplicar de
dicho valor.
pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<a href="pagina1.asp?tabla=2">Tabla del 2</a> <br>
<a href="pagina1.asp?tabla=3">Tabla del 3</a> <br>
<a href="pagina1.asp?tabla=4">Tabla del 4</a>
</body>
</html>
Como podemos observar un parmetro en un hipervnculo se lo aade en la propiedad
href y seguido al nombre de la pgina a llamar mediante el caracter de "?" interrogacin.
Todo parmetro tiene un nombre y luego del caracter igual el valor del mismo.
<a href="pagina1.asp?tabla=2">Tabla del 2</a> <br>
Ahora la pgina asp que rescata el valor del parmetro es:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim num,f
num=request.querystring("tabla")
response.write("<h1>Tabla de multiplicar del " & num &"</h1>")
for f=num to num*10 step num
response.write(f & "-")
next
%>
</body>
</html>
Recordemos que para extraer el valor cargado en un control de un formulario HTML
utilizamos el objeto request y el mtodo form. En cambio para recuperar el dato enviado
en el hipervnculo empleamos el mtodo querystring del mismo objeto request:
num=request.querystring("tabla")
Una vez rescatado el valor procedemos a mostrar los primeros diez trminos de la tabla
de multiplicar respectiva:
for f=num to num*10 step num
response.write(f & "-")
next
Es decir inicializamos el contador f con el valor rescatado del parmetro. En cada paso
del for incrementamos el contador f en num. Por ltimo indicamos que el ciclo finalice
cuando f llegue al valor num*10.
Si queremos pasar ms de un parmetro en un hipervnculo debemos separarlos
empleando el caracter &.
Por ejemplo:
<a href="pagina1.asp?inicio=5&fin=10">Mostrar los nmeros
comprendidos entre 5 y 10</a>
19 - Parmetros en un hipervnculo
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina HTML que contenga 3 hipervnculos a otra pgina que
muestre la tabla de multiplicar del 2,3 o 4. Enviar a la otra pgina el nmero que
queremos que muestre la tabla mediante parmetro en el hipervnculo.

pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<a href ="pagina1.asp?tabla=2">Tabla del 2</a> <br>
<a href ="pagina1.asp?tabla=3">Tabla del 3</a> <br>
<a href ="pagina1.asp?tabla=4">Tabla del 4</a>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim num,f
num=request.querystring("tabla")
response.write("<h1>Tabla de multiplicar del " & num &"</h1>")
f or f =num to num*10 step num
response.write(f & "-")
next
%>
</body>



19 - Parmetros en un hipervnculo

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Modificar el ejercicio resuelto de tal manera que pase como parmetro el nmero que
queremos que muestre la tabla y la cantidad de valores a mostrar.

Ver solucin

pagina1.html
Problema:
<html>
<head>
<title>Problema</title>
</head>
<body>
<a href="pagina1.asp?tabla=2&ter=10">Tabla del 2 (primeros 10
trminos)</a> <br>
<a href="pagina1.asp?tabla=3&ter=15">Tabla del 3 (primeros 15
trminos)</a> <br>
<a href="pagina1.asp?tabla=4&ter=20">Tabla del 4 (primeros 20
trminos)</a>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim num,f,terminos
num=request.querystring("tabla")
terminos=request.querystring("ter")
response.write("<h1>Los primeros " & terminos & " trminos de la tabla
de multiplicar del " & num &"</h1>")
for f=num to num*terminos step num
response.write(f & "-")
next
%>
</body>
</html>
Modificar el ejercicio resuelto de tal manera que pase como parmetro el nmero que
queremos que muestre la tabla y la cantidad de valores a mostrar.



pagina1.html







pagina1.asp

20 - Escritura y lectura de un archivo de
texto
Veremos ahora una actividad fundamental para el empleo de pginas dinmicas que es
la registracin de datos en el servidor empleando un archivo de texto.
Debe quedar bien en claro que el archivo de texto se encuentra en el servidor web y no
en la mquina donde se encuentra el navegador.
Desarrollaremos un problema que requiera la creacin, carga y lectura de una archivo de
texto:
Confeccionar un programa que permita cargar comentarios en un sitio web y
almacenarlos en un archivo de texto. Implementar dos hipervnculos, uno que permita
cargar datos en el archivo de texto y otra pgina que permita realizar la lectura del
archivo de texto.
La primer pgina tiene por objetivo mostrar los dos hipervnculos:
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<a href="pagina2.html">Cargar comentarios</a><br>
<a href="pagina3.asp">Leer comentarios</a>
</body>
</html>
Ahora presentaremos los dos archivos necesarios para efectuar la carga y registracin de
datos en el servidor:
pagina2.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina2.asp" method="post">
Ingrese su nombre:
<input type="text" name="nombre"><br>
Comentarios<br>
<textarea name="comentarios" rows="10" cols="40"></textarea><br>
<input type="submit" value="enviar"><br>
</form>
</body>
</html>
Ahora el archivo que presenta los conceptos nuevos es:
pagina2.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nombre,comentarios,archivo,ref
nombre=request.form("nombre")
comentarios=request.form("comentarios")
set archivo = CreateObject("Scripting.FileSystemObject")
set ref = archivo.OpenTextFile(server.mappath("comentarios.txt"), 8,
True)
ref.writeline("_____Comentario________________________________________
___________")
ref.writeline(now())
ref.writeline("")
ref.writeline("Nombre: " & nombre)
ref.writeline("")
ref.writeline("Comentarios: " & comentarios)
ref.close()
%>
<h2>Los comentarios fueron registrados</h2>
<a href="pagina1.html">Retornar</p>
</body>
</html>
Primero definimos cuatro variables e inicializamos dos de estas con los contenidos de
los controles del formulario (text y textarea):
dim nombre,comentarios,archivo,ref
nombre=request.form("nombre")
comentarios=request.form("comentarios")
Creamos ahora un objeto de la clase FileSystemObject que nos permite acceder al
sistema de archivos del servidor:
set archivo = CreateObject("Scripting.FileSystemObject")
Abrimos un archivo de texto para agregar datos:
set ref = archivo.OpenTextFile(server.mappath("comentarios.txt"), 8,
True)
El primer parmetro indica el nombre del archivo que se abrir para agregar, si no existe
se crea ya que esto lo indica el tercer parmetro (True). El mtodo mappath del objeto
server retorna el path donde se encuentra nuestra pgina ASP, que sera el mismo
directorio donde se guardar el archivo de texto. Debemos utilizar siempre
server.mappath ya que no sabemos la unidad y directorio donde se almacena nuestro
sitio en el hosting contratado.
El segundo parmetro indica cual es la forma de abrir el archivo (1-lectura 2-crea el
archivo y lo abre para aadir (se borra si ya existe), 8-para aadir) en nuestro caso es 8
ya que grabaremos informacin en el archivo.
Por ltimo el tercer parmetro si le pasamos el valor true crea el archivo si no existe.
Para grabar datos en el archivo de texto el objeto devuelto por el mtodo opentextfile
dispone de writeline. Este mtodo graba una cadena en el archivo de texto y aade un
salto de lnea
ref.writeline("_____Comentario________________________________________
___________")
ref.writeline(now())
ref.writeline("")
ref.writeline("Nombre: " & nombre)
ref.writeline("")
ref.writeline("Comentarios: " & comentarios)
Cuando finalizamos la grabacin de datos en el archivo de texto procedemos a cerrar el
archivo con el objetivo de permitir que otro proceso del servidor leer o modificar el
archivo:
ref.close()

Ahora procederemos a la lectura del archivo de texto:
pagina3.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim linea,archivo,ref
set archivo = CreateObject("Scripting.FileSystemObject")
set ref = archivo.OpenTextFile(server.mappath("comentarios.txt"), 1,
True)
do while not ref.atendofstream
linea=ref.readline()
response.write(linea & "<br>")
Loop
ref.close()
%>
<br>
<a href="pagina1.html">Retornar</p>
</body>
</html>
Creamos ahora un objeto de la clase FileSystemObject que nos permite acceder al
sistema de archivos del servidor como vimos en la pgina anterior:
set archivo = CreateObject("Scripting.FileSystemObject")
Abrimos un archivo de texto para leer:
set ref = archivo.OpenTextFile(server.mappath("comentarios.txt"), 1,
True)
Ahora indicamos en el segundo parmetro el valor 1 ya que de esta forma se abre el
archivo para lectura. Como pasamos True en el tercer parmetro si el archivo no existe
se crea en forma automtica.
Para proceder a la lectura de cada lnea del archivo de texto:
do while not ref.atendofstream
linea=ref.readline()
response.write(linea & "<br>")
Loop
El mtodo atendofstream retorna true si lleg al fin de archivo, por eso mediante el
operador lgico not invertimos el valor devuelto por esta funcin. Normalmente
atendofstream retorna false ya que no se ha llegado al fin de archivo.
Este while se repite mientras no se llegue al fin de archivo. En cada vuelta leemos una
lnea del archivo de texto con el mtodo readline, procediendo a imprimirla en la
pgina. Agregamos un br al final de cada lnea.
Cuando finalizamos la lectura de datos del archivo de texto procedemos a cerrarlo:
ref.close()

20 - Escritura y lectura de un archivo de
texto
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un programa que permita cargar comentarios en un sitio web y
almacenarlos en un archivo de texto.
Implementar dos hipervnculos, uno que permita cargar datos en el archivo de texto y
otra pgina que permita realizar la lectura del archivo de texto.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<a href ="pagina2.html">Cargar comentarios</a><br>
<a href ="pagina3.asp">Leer comentarios</a>
</body>
</html>







pagina2.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina2.asp" method="post">
Ingrese su nombre:
<input type="text" name="nombre"><br>
Comentarios<br>
<textarea name="comentarios" rows="10" cols="40"></textarea><br>
<input type="submit" value="enviar"><br>
</f orm>
</body>
</html>




pagina2.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nombre,comentarios,archivo,ref
nombre=request.f orm("nombre")
comentarios=request.f orm("comentarios")
set archivo = CreateObject("Scripting.FileSystemObject")
set ref = archivo.OpenTextFile(server.mappath("comentarios.txt"), 8, True)
ref .writeline("_____Comentario__________________________________________
ref .writeline(now())




pagina3.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim linea,archivo,ref
set archivo = CreateObject("Scripting.FileSystemObject")
set ref = archivo.OpenTextFile(server.mappath("comentarios.txt"), 1, True)
do while not ref .atendof stream
linea=ref .readline()
response.write(linea & "<br>")
Loop




20 - Escritura y lectura de un archivo de
texto
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un programa en ASP que permita hacer pedido de pizzas via internet.
El formulario debe ser:
Nombre:[..............]
Direccion:[...................]

Jamon y queso:[x]
Cantidad[...]

Napolitana:[x]
Cantidad[...]

Muzzarella;[x]
Cantidad[...]

[Confirmar]
La primer pgina debe tener dos hipervnculos:
1 - Pedido de pizzas.
2 - Listado de pedidos.
Para el ingreso del nombre, direccin y cantidad de pizzas de cada tipo disponer
elementos HTML de tipo "text". Disponer tres objetos de tipo "check" para seleccionar
los tipos de pizzas. Por ltimo disponer un botn para el envo de datos: "submit".

Ver solucin

pagina1.html







pagina2.html




pagina2.asp


21 - INSERT (en una tabla de Microsoft
SQL Server)
Ahora veremos como almacenar datos en una tabla de SQL Server. En el servidor de
ASPYA.com.ar he creado una base de datos llamada "wi630629_aspya" y la misma
contiene una tabla con la siguiente estructura:
create table articulos(
codigo int identity,
descripcion varchar(30) not null,
precio float
)

Confeccionaremos un formulario que solicite la carga de la descripcin de un artculo y
seguidamente su precio:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Descripcion del articulo:
<input type="text" name="descripcion" size="30"><br>
Precio:
<input type="text" name="precio" size="10"><br>
<input type="submit" value="Confirmar"><br>
</form>
</body>
</html>
Veamos ahora lo nuevo que es la conexin a la base de datos de SQL Server y la
ejecucin del comando insert en la tabla artculos:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
conexion.execute("insert into articulos(descripcion,precio)" & _
"values ('" & request.form("descripcion") & _
"'," & request.form("precio") & ")")
conexion.close
%>
</body>
</html>
Veamos paso a paso como nos conectamos a la base de datos de SQL Server. Primero
creamos un objeto "ADODB.Connection":
set conexion = Server.CreateObject("ADODB.Connection")
Seguidamente inicializamos la propiedad ConnectionString con la cadena de conexin a
la base de datos respectiva:
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
Las propiedades que debemos inicializar en la cadena de conexin se separan por punto
y coma y significan:
Provider: Proveedor
Data Source: con un punto indicamos que se ubica en localhost
Integrated Security=SSPI: Seguridad integrada de windows
Initial Catalog: Nombre de la base de datos a acceder, en nuestro caso
"wi630629_aspya"
Una vez que inicializamos la cadena de conexin procedemos a llamar al mtodo open
para abrirla:
conexion.Open
Podemos ahora pasarle un comando SQL al SQL Server mediante el mtodo execute del
objeto conexin:
conexion.execute("insert into articulos(descripcion,precio)" & _
"values ('" & request.form("descripcion") & _
"'," & request.form("precio") & ")")
Lo ms importante es poder generar una cadena con el comando insert correctamente
formado para evitar que el SQL Server nos retorne un error, esto puede ser por algn
error sintctico en la cadena del comando SQL.
Hay que tener en cuenta que en VB Script cuando queremos seguir en la lnea siguiente
debemos disponer al final de lnea el caracter _ (debe haber un espacio de separacin)
Con el operador & concatenamos las cadenas con informacin fija y los datos que
rescatamos del formulario de carga.
Finalmente cerramos la conexin:
conexion.close
21 - INSERT (en una tabla de Microsoft
SQL Server)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Se cuenta con una tabla llamada articulos con la siguiente estructura:
create table articulos(
codigo int identity,
descripcion varchar(30) not null,
precio float
)
Confeccionar el alta de un registro en la misma.
La descripcin y el precio solicitarlos por teclado mediante un formulario.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Descripcion del articulo:
<input type="text" name="descripcion" size="30"><br>
Precio:
<input type="text" name="precio" size="10"><br>
<input type="submit" value="Conf irmar"><br>
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
conexion.execute("insert into articulos(descripcion,precio)" & _


21 - INSERT (en una tabla de Microsoft
SQL Server)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un formulario que permita ingresar los datos de hasta tres artculos en
forma simultnea.
Recordar que la estructura de la tabla es:
create table articulos(
codigo int identity,
descripcion varchar(30) not null,
precio float
)
Tener en cuenta que solo debemos cargar el dato del artculo si en el formulario se carg
algn caracter, para esto utilizar la funcin len que retorna la cantidad de caracteres de
una cadena:
if len(request.form("descripcion1"))>0 then

Ver solucin
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Descripcion del articulo:
<input type="text" name="descripcion1" size="30">
Precio:
<input type="text" name="precio1" size="10"><br>
Descripcion del articulo:
<input type="text" name="descripcion2" size="30">
Precio:
<input type="text" name="precio2" size="10"><br>
Descripcion del articulo:
<input type="text" name="descripcion3" size="30">
Precio:
<input type="text" name="precio3" size="10"><br>
<input type="submit" value="Confirmar"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
if len(request.form("descripcion1"))>0 and
len(request.form("precio1")>0) then
conexion.execute("insert into articulos(descripcion,precio)" & _
"values ('" & request.form("descripcion1") & _
"'," & request.form("precio1") & ")")
end if
if len(request.form("descripcion2"))>0 and
len(request.form("precio2")>0) then
conexion.execute("insert into articulos(descripcion,precio)" & _
"values ('" & request.form("descripcion2") & _
"'," & request.form("precio2") & ")")
end if
if len(request.form("descripcion3"))>0 and
len(request.form("precio3")>0) then
conexion.execute("insert into articulos(descripcion,precio)" & _
"values ('" & request.form("descripcion3") & _
"'," & request.form("precio3") & ")")
end if
response.write("Datos registrados")
conexion.close
%>
</body>
</html>

Confeccionar un formulario que permita ingresar los datos de hasta tres artculos en
forma simultnea.
Recordar que la estructura de la tabla es:
create table articulos(
codigo int identity,
descripcion varchar(30) not null,
precio float
)
Tener en cuenta que solo debemos cargar el dato del artculo si en el formulario se carg
algn caracter, para esto utilizar la funcin len que retorna la cantidad de caracteres de
una cadena:
if len(request.form("descripcion1"))>0 then



pagina1.html

22 - SELECT (listado de una tabla de
Microsoft SQL Server)


Aprendimos el concepto anterior a efectuar una insercin (insert) en una tabla de SQL
Server. Ahora veamos como rescatar los datos almacenados previamente.
La siguiente pgina recupera todos los datos de la tabla articulos:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion,precio from
articulos",conexion
do while not registros.eof
response.write("Cdigo:" & registros("codigo"))
response.write("<br>")
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
response.write("----------------------------------------------------
--------")
response.write("<br>")
registros.movenext
loop
conexion.close
%>
</body>
</html>
Primero creamos un objeto "ADODB.Connection" y luego inicializamos la propiedad
ConnectionString con la cadena de conexin como lo vimos en el concepto anterior.
Lo nuevo comienza con la creacin de un objeto "ADODB.RecordSet"
set registros = Server.CreateObject("ADODB.RecordSet")
Un RecordSet representa un conjunto de registros que se recuperan a partir de la
ejecucin del comando SQL Select.
Al mtodo open le pasamos como parmetro el comando SQL y la referencia del objeto
que estableci la conexin con la base de datos:
registros.open "select codigo,descripcion,precio from
articulos",conexion
El resultado de este select puede generar 0,1,2,3 etc. filas de la tabla articulos, para
recuperarlos debemos disponer una estructura repetitiva para recorrer todas las filas
almacenadas en nuestro RecordSet:
do while not registros.eof
response.write("Cdigo:" & registros("codigo"))
response.write("<br>")
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
response.write("----------------------------------------------------
--------")
response.write("<br>")
registros.movenext
loop
El RecordSet tiene una propiedad llamada eof que almacena un valor boolean que
indica si llegamos al ltimo registro almacenado. Es por ello que el while se repite
mientras no (not) lleguemos al final.
Si el comando Select retorna cero filas (por ejemplos esto ocurre si la tabla articulos se
encuentra sin registros) la propiedad eof almacena un true y como le antecedemos el
operador lgico not la condicin se valida como false y por lo tanto no ejecuta el
contendio del while.
En caso de haber por lo menos un registro en el RecordSet se ejecutar el bloque
contenido en el while. El RecordSet tiene un puntero que inicialmente apunta al primer
registro recuperado. Si queremos luego recuperar los datos de cada campo procedemos
de la siguiente forma:
response.write("Cdigo:" & registros("codigo"))
Es decir mediante el objeto RecordSet (en nuestro caso se llama registros) le indicamos
entre parntesis y doble comillas el nombre del campo a recuperar. El nombre del
campo debe coincidir con el nombre indicado en el comando SQL Select
Para avanzar el puntero del RecordSet llamamos al mtodo MoveNext:
registros.movenext
Cuando salimos de la estructura repetitiva procedemos a cerrar la conexin:
conexion.close
22 - SELECT (listado de una tabla de
Microsoft SQL Server)


Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Efectuar el listado completo de la tabla articulos.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Inf o=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open




22 - SELECT (listado de una tabla de
Microsoft SQL Server)



Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Mostrar los campos descripcion y precio mediante una tabla HTML. En la primer fila de
la tabla indicar el ttulo respectivo.

Ver solucin

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select descripcion,precio from articulos",conexion
response.write("<table border=""1"">")
response.write("<tr><th>Descripcin</th><th>Precio</th></tr>")
do while not registros.eof
response.write("<tr>")
response.write("<td>")
response.write(registros("descripcion"))
response.write("</td>")
response.write("<td>")
response.write(registros("precio"))
response.write("</td>")
response.write("</tr>")
registros.movenext
loop
response.write("</table>")
conexion.close
%>
</body>
</html>

Mostrar los campos descripcion y precio mediante una tabla HTML. En la primer fila de
la tabla indicar el ttulo respectivo.



pagina1.asp




23 - SELECT (Consulta de uno o varios
registros de una tabla - SQL Server)

Ahora veremos como recuperar algunos registros de una tabla.
Habamos visto que para recuperar todos los registros de una tabla utilizamos el
comando SQL select . Para recuperar uno o varios registros especficos debemos
agregar la clusula where con la condicin respectiva.
Para ver este concepto implementaremos un formulario que nos permita cargar el
cdigo de artculo a consultar. Si el cdigo ingresado existe en la tabla articulos
procedemos a mostrar su descripcin y precio, en caso de no existir mostramos un
mensaje de cdigo inexistente.
El formulario HTML es:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese el cdigo del artculo a consultar:
<input type="text" name="codigo"><br>
<input type="submit" value="Buscar"><br>
</form>
</body>
</html>
La pgina dinmica es:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion,precio from articulos where
codigo=" _
& request.form("codigo") ,conexion
if not registros.eof then
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
else
response.write("No existe ningn artculo con dicho cdigo")
end if
conexion.close
%>
</body>
</html>
El primer cambio que podemos observar con respecto al listado completo de la tabla es
la clusula where en el select:
registros.open "select codigo,descripcion,precio from articulos where
codigo=" _
& request.form("codigo") ,conexion
Es decir rescatamos el registro que coincide con el cdigo de artculo ingresado en el
formulario.
Como puede haber solo un registro con dicho cdigo disponemos un if para verificar si
la propiedad eof del RecordSet almacena un false (en caso de almacenar un false
significa que a rescatado un registro con dicho select, recordemos que eof almacena
false si el puntero no a llegado al final de los registros recuperados):
if not registros.eof then
Procedemos a mostrar el registro si la condicin del if se verifica verdadera, de forma
similar al listado completo del concepto anterior:
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
En caso que la condicin del if se verifique falsa procedemos a mostrar el mensaje de
cdigo inexistente:
else
response.write("No existe ningn artculo con dicho cdigo")
end if
23 - SELECT (Consulta de uno o varios
registros de una tabla - SQL Server)


Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado.)

Implementar un formulario que permita cargar el cdigo de artculo a consultar. Si el
cdigo ingresado existe en la tabla articulos proceder a mostrar su descripcin y precio,
en caso de no existir mostrar un mensaje de cdigo inexistente.

pagina1.html
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Implementar un formulario que permita cargar el cdigo de artculo a consultar. Si el
cdigo ingresado existe en la tabla articulos proceder a mostrar su descripcin y precio,
en caso de no existir mostrar un mensaje de cdigo inexistente.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese el cdigo del artculo a consultar:
<input type="text" name="codigo"><br>
<input type="submit" value="Buscar"><br>
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Inf o=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open



23 - SELECT (Consulta de uno o varios
registros de una tabla - SQL Server)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un formulario que solicite el ingreso de dos precios y luego muestre todos
los artculos que tienen un precio comprendidos entre los mismos.

Ver solucin
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
<h2>Consulta de artculos en un rango de valores</h2>
Precio inferior:
<input type="text" name="precio1" size="6"><br>
Precio superior:
<input type="text" name="precio2" size="6"><br>
<input type="submit" value="Buscar"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion,precio from articulos where
" _
& "precio>=" & request.form("precio1") & " and precio<=" _
& request.form("precio2") ,conexion
do while not registros.eof
response.write("Cdigo:" & registros("codigo"))
response.write("<br>")
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
response.write("----------------------------------------------------
--------")
response.write("<br>")
registros.movenext
loop
conexion.close
%>
</body>
</html>

Confeccionar un formulario que solicite el ingreso de dos precios y luego muestre todos
los artculos que tienen un precio comprendidos entre los mismos.



pagina1.html


pagina1.html







pagina1.asp

24 - DELETE (Borrado de registros de

una tabla - SQL Server)
Para borrar registros de una tabla debemos utilizar el comando SQL Delete. Si
queremos borrar solo los registros que cumplen determinada condicin lo indicamos en
la clusula where.
Para ver el algoritmo de borrado confeccionaremos una pgina que solicite el cdigo del
artculo que queremos borrar y en otra pgina procedemos primero a consultar si existe
dicho cdigo, borrndolo en caso afirmativo.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese el cdigo del artculo a borrar:
<input type="text" name="codigo"><br>
<input type="submit" value="Buscar"><br>
</form>
</body>
</html>
Luego el archivo que procesa el dato cargado en el formulario es:
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion,precio from articulos where
codigo=" _
& request.form("codigo") ,conexion
if not registros.eof then
conexion.execute("delete from articulos where codigo=" &
request.form("codigo"))
response.write("Los datos del artculo borrado son:<br>")
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
else
response.write("No existe un artculo con dicho cdigo")
end if
conexion.close
%>
</body>
</html>
Primero procedemos a consultar si existe el cdigo de artculo ingresado en el
formulario:
registros.open "select codigo,descripcion,precio from articulos where
codigo=" _
& request.form("codigo") ,conexion
En caso que la propiedad eof tenga almacenado un falso procedemos a ejecutar el
comando SQL Delete e informamos los datos del registro borrado:
if not registros.eof then
conexion.execute("delete from articulos where codigo=" &
request.form("codigo"))
response.write("Los datos del artculo borrado son:<br>")
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
Sino mostramos un mensaje que no existe el cdigo ingresado:
else
response.write("No existe un artculo con dicho cdigo")
end if



24 - DELETE (Borrado de registros de
una tabla - SQL Server)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina que permita ingresar el cdigo de un artculo y procesa a
borrarlo de la tabla. Si no existe dicho cdigo de artculo debe mostrar un mensaje.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese el cdigo del artculo a borrar:
<input type="text" name="codigo"><br>
<input type="submit" value="Buscar"><br>
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Inf o=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open


24 - DELETE (Borrado de registros de
una tabla - SQL Server)


Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar el borrado de un artculo pero ingresando el nombre del mismo para su
bsqueda.

Ver solucin

pagina1.html
Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese el nombre del artculo a borrar:
<input type="text" name="nombre"><br>
<input type="submit" value="Buscar"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion,precio from articulos where
descripcion='" _
& request.form("nombre") & "'" ,conexion
if not registros.eof then
conexion.execute("delete from articulos where descripcion='" &
request.form("nombre") & "'")
response.write("Los datos del artculo borrado son:<br>")
response.write("Cdigo:" & registros("codigo"))
response.write("<br>")
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
else
response.write("No existe un artculo con dicho nombre")
end if
conexion.close
%>
</body>
</html>

Confeccionar el borrado de un artculo pero ingresando el nombre del mismo para su
bsqueda.



pagina1.html
25 - UPDATE (Modificacin de un
registro de una tabla - SQL Server)



Otra actividad habitual es la modificacin de datos almacenados en una tabla.
El lenguaje SQL tiene un comando llamado Update que permite modificar algunos
campos de una tabla.
Para ver su funcionamiento procederemos a modificar la descripcin y precio de un
artculo. Ingresaremos el cdigo del artculo para su bsqueda.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese el cdigo del artculo a modificar:
<input type="text" name="codigo"><br>
<input type="submit" value="Buscar"><br>
</form>
</body>
</html>
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion,precio from articulos where
codigo=" _
& request.form("codigo") ,conexion
if not registros.eof then
%>
<form action="pagina2.asp" method="post">
Descripcion del articulo:
<input type="text" name="descripcion" size="30"
value="<%response.write(registros("descripcion"))%>"><br>
Precio:
<input type="text" name="precio" size="10"
value="<%response.write(registros("precio"))%>"><br>
<input type="hidden" name="codigo"
value="<%response.write(registros("codigo"))%>">
<input type="submit" value="Confirmar"><br>
</form>
<%
else
response.write("No existe ningn artculo con dicho cdigo")
end if
conexion.close
%>
</body>
</html>
Esta pgina tiene varios conceptos nuevos. Como podemos ver podemos disponer
distintos bloques de asp dentro de la misma pgina.
Lo primero que hacemos en forma similar a conceptos anteriores es verificar si existe el
cdigo de artculo ingresado por el operador:
registros.open "select codigo,descripcion,precio from articulos where
codigo=" _
& request.form("codigo") ,conexion
if not registros.eof then
En caso que la condicin if se verifique verdadera debemos disponer en la pgina un
formulario HTML que muestre los datos actuales de dicho artculo. Lo ms adecuado es
escribir el formulario en un bloque HTML clsico y agregarle a la propiedad value de
cada control el dato rescatado de la base de datos:
<input type="text" name="descripcion" size="30"
value="<%response.write(registros("descripcion"))%>">
Como podemos ver agregamos un trozo de cdigo ASP dentro del HTML.
De igual forma procedemos a cargar la propiedad value para el precio:
<input type="text" name="precio" size="10"
value="<%response.write(registros("precio"))%>">
Como el cdigo no se modifica procedemos a cargarlo en un control oculto, es decir de
tipo hidden. Esto nos permite rescatarlo en la siguiente pgina donde procederemos a
modificar la tabla de la base de datos propiamente dicha:
<input type="hidden" name="codigo"
value="<%response.write(registros("codigo"))%>">
Tengamos en cuenta que este formulario llama a una tercer pgina llamada pagina2.asp.
pagina2.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
conexion.execute("update articulos set descripcion='" & _
request.form("descripcion") & "'," & _
"precio=" & request.form("precio") & _
" where codigo=" & request.form("codigo"))
conexion.close
response.write("Los datos fueron modificados")
%>
</body>
</html>
En esta pgina procedemos a rescatar los tres datos almacenados en el formulario (los
dos que se ingresan por teclado y el del control oculto) y ejecutamos el comando
Update:
conexion.execute("update articulos set descripcion='" & _
request.form("descripcion") & "'," & _
"precio=" & request.form("precio") & _
" where codigo=" & request.form("codigo"))

25 - UPDATE (Modificacin de un
registro de una tabla - SQL Server)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una serie de pginas que permitan modificar la descripcin y precio de un
artculo. Mostrar en un formulario los datos actuales del artculo que queremos
modificar.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese el cdigo del artculo a modif icar:
<input type="text" name="codigo"><br>
<input type="submit" value="Buscar"><br>
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Inf o=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open




pagina2.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
conexion.execute("update articulos set descripcion='" & _





25 - UPDATE (Modificacin de un
registro de una tabla - SQL Server)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar una serie de pginas que nos permitan modificar la descripcin y el precio
de un artculo, para su bsqueda ingresar su descripcin.

Ver solucin
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese el nombre del artculo a modificar:
<input type="text" name="nombre"><br>
<input type="submit" value="Buscar"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion,precio from articulos where
descripcion='" _
& request.form("nombre") & "'" ,conexion
if not registros.eof then
%>
<form action="pagina2.asp" method="post">
Descripcion del articulo:
<input type="text" name="descripcion" size="30"
value="<%response.write(registros("descripcion"))%>"><br>
Precio:
<input type="text" name="precio" size="10"
value="<%response.write(registros("precio"))%>"><br>
<input type="hidden" name="codigo"
value="<%response.write(registros("codigo"))%>">
<input type="submit" value="Confirmar"><br>
</form>
<%
else
response.write("No existe ningn artculo con dicho nombre")
end if
conexion.close
%>
</body>
</html>

<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
conexion.execute("update articulos set descripcion='" & _
request.form("descripcion") & "'," & _
"precio=" & request.form("precio") & _
" where codigo=" & request.form("codigo"))
conexion.close
response.write("Los datos fueron modificados")
%>
</body>
</html>

Confeccionar una serie de pginas que nos permitan modificar la descripcin y el precio
de un artculo, para su bsqueda ingresar su descripcin.

pagina1.html
26 - Order by (Ordenamiento de los
registros por un campo)

Para ordenar el resultado de un SELECT debemos utilizar la clusula "order by"
seguida por el nombre de campo.
Por defecto, si no aclaramos en la sentencia, los ordena de manera ascendente (de menor
a mayor). Podemos ordenarlos de mayor a menor, para ello agregamos la palabra clave
"desc" seguida al nombre del campo.
Para probar esta caracterstica del select y como puede ayudarnos en el desarrollo de
una pgina confeccionaremos el listado de la tabla artculos disponiendo dos
hipervnculos en los ttulos del precio y descripcin del artculo. Al ser presionado
llamaremos a la misma pgina y le pasaremos como parmetro por que campo
queremos ordenar los registros en la consulta.
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim ordenado
if request.querystring("ord") is nothing Then
ordenado=""
elseif request.querystring("ord")="descripcion" Then
ordenado=" order by descripcion"
elseif request.querystring("ord")="precio" Then
ordenado=" order by precio"
end if
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select descripcion,precio from articulos" &
ordenado,conexion
response.write("<table border=""1"">")
response.write("<tr><th><a
href=""pagina1.asp?ord=descripcion"">Descripcin</a></th><th><a
href=""pagina1.asp?ord=precio"">Precio</a></th></tr>")
do while not registros.eof
response.write("<tr>")
response.write("<td>")
response.write(registros("descripcion"))
response.write("</td>")
response.write("<td>")
response.write(registros("precio"))
response.write("</td>")
response.write("</tr>")
registros.movenext
loop
response.write("</table>")
conexion.close
%>
</body>
</html>
Veamos las partes ms importantes de este algoritmo. Primero verificamos si llega
algn parmetro en la llamada a la pgina:
dim ordenado
if request.querystring("ord") is nothing Then
ordenado=""
elseif request.querystring("ord")="descripcion" Then
ordenado=" order by descripcion"
elseif request.querystring("ord")="precio" Then
ordenado=" order by precio"
end if
Es decir si llamamos a esta pgina sin pasar el parmetro ord el primer if se verifica
verdadero y la variable ordenado se inicializa con una cadena vaca:
ordenado=""
En caso que llegue el parmetro ord debemos verificar si hay que ordenar por el campo
precio o descripcin:
elseif request.querystring("ord")="descripcion" Then
ordenado=" order by descripcion"
Si llega el valor descripcion en el parmetro ord procedemos a inicializar la variable
ordenado con la cadena "order by descripcin".
Al comando select se le aade al final el contenido de la variable ordenado:
registros.open "select descripcion,precio from articulos" &
ordenado,conexion
Recordemos que la cadena ordenado puede tener alguno de los tres valores que se
asignan al comienzo de este algoritmo.
Otra parte importante de este algoritmo son los hipervnculos a la misma pgina
pasando como parmetro la variable ord con el valor respectivo:
response.write("<tr><th><a
href=""pagina1.asp?ord=descripcion"">Descripcin</a></th><th><a
href=""pagina1.asp?ord=precio"">Precio</a></th></tr>")
El resto de la pgina es similar a un listado visto en conceptos anteriores.

26 - Order by (Ordenamiento de los
registros por un campo)



Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina que muestre una tabla con todos los artculos. Disponer un
hipervnculo en los ttulos de precio y descripcin, al ser presionados ordenarlos por el
campo respectivo.

pagina1.asp
<%option
explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim ordenado
if request.querystring("ord") is nothing Then
ordenado=""
elseif request.querystring("ord")="descripcion" Then
ordenado=" order by descripcion"
elseif request.querystring("ord")="precio" Then
ordenado=" order by precio"






Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un listado completo de la tabla articulos. Disponer dos hipervnculos de la
columna precio que nos permitan ordenarlos de "menor a mayor" o de "mayor a menor".

Ver solucin

pagina1.asp
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim ordenado
if request.querystring("ord") is nothing Then
ordenado=""
elseif request.querystring("ord")="a" Then
ordenado=" order by precio"
elseif request.querystring("ord")="d" Then
ordenado=" order by precio desc"
end if
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select descripcion,precio from articulos" &
ordenado,conexion
response.write("<table border=""1"">")
response.write("<tr><th>Descripcin</th><th>Precio" _
& "<a href=""pagina1.asp?ord=a"">ASC</a>-<a
href=""pagina1.asp?ord=d"">DESC</a></th></tr>")
do while not registros.eof
response.write("<tr>")
response.write("<td>")
response.write(registros("descripcion"))
response.write("</td>")
response.write("<td>")
response.write(registros("precio"))
response.write("</td>")
response.write("</tr>")
registros.movenext
loop
response.write("</table>")
conexion.close
%>
</body>
</html>
Confeccionar un listado completo de la tabla articulos. Disponer dos hipervnculos de la
columna precio que nos permitan ordenarlos de "menor a mayor" o de "mayor a menor".



pagina1.asp


27 - INSERT (y consulta de otra tabla)

La realidad nos presenta que muchas veces se requieren varias tablas donde se
almacenan los datos. Consideremos el problema de la tabla artculos, si necesitamos
almacenar el rubro al que pertenece el artculo lo mas conveniente es definir una
segunda tabla "rubros" y codificar todos ellos. En la tabla artculos debemos definir un
campo ms para almacenar el cdigo de rubro al que pertenece dicho artculo.
Nuestro formulario para la carga de los artculos deber ser una pgina dinmica asp, ya
que debemos cargar en un control HTML todos los rubros existentes.
Nuestras dos tablas tienen la siguiente estructura:
create table articulos(
codigo int identity,
descripcion varchar(30) not null,
precio float,
codigorubro int
)

create table rubros(
codigo int identity,
descripcion varchar(30) not null,
)
Veremos ahora el algoritmo completo para dar de alta un registro en una tabla y rescatar
un dato consultando otra tabla.
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina2.asp" method="post">
Descripcion del articulo:
<input type="text" name="descripcion" size="30"><br>
Precio:
<input type="text" name="precio" size="10"><br>
Rubro:<select name="codigorubro">
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion from rubros",conexion
do while not registros.eof
response.write("<option value=""" & registros("codigo") & """>" &
_
registros("descripcion") & "</option>")
registros.movenext
loop
conexion.close
%>
</select><br>
<input type="submit" value="Confirmar"><br>
</form>
</body>
</html>
Recordemos bien que como se requiere consultar la tabla rubros debemos hacer un
archivo asp.
Debemos disponer un control HTML de tipo select con todos los rubros con sus
respectivos cdigos. Esta tarea la llevamos a cabo dentro de una estructura repetitiva:
do while not registros.eof
response.write("<option value=""" & registros("codigo") & """>" &
_
registros("descripcion") & "</option>")
registros.movenext
loop
Es decir que nuestro control HTML select tendr tantos elementos HTML option como
registros tenga la tabla rubros. Recordemos que un control HTML option retorna el
valor almacenado en la propiedad value y muestra dentro del control el texto que
dispongamos entre las marcas de comienzo y fin de option.
Como podemos ver lo engorroso es generar el control HTML select con las
descripciones y cdigos de todos los rubros.
Ahora veamos el archivo que procede a efectuar el alta en la tabla articulos
(pagina2.asp):
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
conexion.execute("insert into
articulos(descripcion,precio,codigorubro)" & _
"values ('" & request.form("descripcion") & _
"'," & request.form("precio") & ",'" & _
request.form("codigorubro") & "')")
conexion.close
response.write("Datos cargados")
%>
</body>
</html>
Lo nico que vari con respecto al comando SQL insert que habamos visto es que
debemos agregar el campo codigorubro que lo rescatamos del control HTML select:
conexion.execute("insert into
articulos(descripcion,precio,codigorubro)" & _
"values ('" & request.form("descripcion") & _
"'," & request.form("precio") & ",'" & _
request.form("codigorubro") & "')")

27 - INSERT (y consulta de otra tabla)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina que permita efectuar el alta de un artculo (descripcion, precio
y rubro), disponer los rubros en un control HTML de tipo select.
Rescatar los rubros de una tabla.

pagina1.asp
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina que permita efectuar el alta de un artculo (descripcion, precio
y rubro), disponer los rubros en un control HTML de tipo select.
Rescatar los rubros de una tabla.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina2.asp" method="post">
Descripcion del articulo:
<input type="text" name="descripcion" size="30"><br>
Precio:
<input type="text" name="precio" size="10"><br>
Rubro:<select name="codigorubro">
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")







pagina2.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
conexion.execute("insert into articulos(descripcion,precio,codigorubro)" & _


27 - INSERT (y consulta de otra tabla)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar una pgina que permita efectuar el alta de un artculo (descripcion, precio
y rubro), disponer los rubros en controles HTML de tipo radio.

Ver solucin

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina2.asp" method="post">
Descripcion del articulo:
<input type="text" name="descripcion" size="30"><br>
Precio:
<input type="text" name="precio" size="10"><br>
Rubros<br>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion from rubros",conexion
do while not registros.eof
response.write("<input type=""radio"" name=""codigorubro"" value="""
& registros("codigo") & """>")
response.write(registros("descripcion") & "<br>")
registros.movenext
loop
conexion.close
%>
<br>
<input type="submit" value="Confirmar"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
conexion.execute("insert into
articulos(descripcion,precio,codigorubro)" & _
"values ('" & request.form("descripcion") & _
"'," & request.form("precio") & ",'" &
request.form("codigorubro") & "')")
conexion.close
response.write("Datos cargados")
%>
</body>
</html>
Confeccionar una pgina que permita efectuar el alta de un artculo (descripcion, precio
y rubro), disponer los rubros en controles HTML de tipo radio.



pagina1.asp







pagina2.asp
28 - SELECT (Acceso a datos de varias
tablas)
Para relacionar dos tablas debemos utilizar la sentencia join en el select; las tablas
participantes se combinan segn los campos comunes a ambas tablas.
Se emplea para obtener informacin de dos tablas y combinar dicha informacin en una
salida.
Para ver su implementacin resolveremos la consulta de un artculo por su cdigo y
mostraremos su descripcin, precio y finalmente la descripcin del rubro al que
pertenece, este ltimo dato lo rescatamos de la tabla rubros.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese el cdigo del artculo a consultar:
<input type="text" name="codigo"><br>
<input type="submit" value="Buscar"><br>
</form>
</body>
</html>
Ahora veamos el archivo asp que hace la bsqueda en la base de datos (pagina1.asp)
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select ar.descripcion as descriarticulo, " & _
"precio,ru.descripcion as descrirubro " & _
"from articulos as ar " & _
"join rubros as ru on ru.codigo=ar.codigorubro " & _
"where ar.codigo=" & request.form("codigo") ,conexion
if not registros.eof then
response.write("Descripcin:" & registros("descriarticulo"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
response.write("Rubro:" & registros("descrirubro"))
response.write("<br>")
else
response.write("No existe ningn artculo con dicho cdigo")
end if
conexion.close
%>
</body>
</html>
Veamos la sintaxis para hacer la combinacin de las dos tablas:
registros.open "select ar.descripcion as descriarticulo, " & _
"precio,ru.descripcion as descrirubro " & _
"from articulos as ar " & _
"join rubros as ru on ru.codigo=ar.codigorubro " & _
"where ar.codigo=" & request.form("codigo") ,conexion
La sintaxis bsica es:
select CAMPOS
from TABLA1
join TABLA2 on CONDICIONdeCOMBINACION;
Analicemos la consulta de la pgina asp:
- especificamos los campos que aparecern en el resultado en la lista de seleccin;
- indicamos el nombre de la tabla luego del "from" ("articulos") y su alias;
- combinamos esa tabla con "join" y el nombre de la otra tabla ("rubros"); se especifica
qu tablas se van a combinar y cmo;
- cuando se combina informacin de varias tablas, es necesario especificar qu registro
de una tabla se combinar con qu registro de la otra tabla, con "on". Se debe
especificar la condicin para enlazarlas, es decir, el campo por el cual se combinarn,
que tienen en comn.
"on" hace coincidir registros de ambas tablas basndose en el valor de tal campo, en el
ejemplo, el campo "codigorubro" de "articulos" y el campo "codigo" de "rubros" son los
que enlazarn ambas tablas. Se emplean campos comunes, que deben tener tipos de
datos iguales.
Cuando rescatamos los datos de la consulta es importante notar que hacemos referencia
a los alias creados para los campos:
if not registros.eof then
response.write("Descripcin:" & registros("descriarticulo"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
response.write("Rubro:" & registros("descrirubro"))
response.write("<br>")
else
Tengamos en cuenta que creamos alias para los campos que se llaman iguales en ambas
tablas y que generan conflictos en el gestor de base de datos, al no saber que campo
debe rescatar.



28 - SELECT (Acceso a datos de varias
tablas)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Implementar un formulario que permita cargar el cdigo de artculo a consultar. Si el
cdigo ingresado existe en la tabla articulos proceder a mostrar su descripcin, precio y
rubro al que pertenece, en caso de no existir mostrar un mensaje de cdigo inexistente.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese el cdigo del artculo a consultar: Simulador (Cuando presiona el botn "ejecutar el
programa" se graban todos los cuadros de texto y se ejecuta el primero de la lista
mostrando en una pgina el resultado.)

Implementar un formulario que permita cargar el cdigo de artculo a consultar. Si el
cdigo ingresado existe en la tabla articulos proceder a mostrar su descripcin, precio y
rubro al que pertenece, en caso de no existir mostrar un mensaje de cdigo inexistente.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese el cdigo del artculo a consultar:
<input type="text" name="codigo"><br>
<input type="submit" value="Buscar"><br>
</f orm>
</body>
</html>







pagina1.asp
response.write("Descripcin:" & registros("descriarticulo"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
response.write("Rubro:" & registros("descrirubro"))
response.write("<br>")
else
response.write("No existe ningn artculo con dicho cdigo")
end if
conexion.close
%>
</body>
</html>



<input type="text" name="codigo"><br>
<input type="submit" value="Buscar"><br>
</form>
</body>
</html>


28 - SELECT (Acceso a datos de varias
tablas)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un formulario que solicite el ingreso de un precio y luego muestre todos
los artculos que tienen un precio inferior a dicho importe (mostrar el nombre del
artculo, su precio y descripcin del rubro al que pertenece)

Ver solucin
Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
<h2>Consulta de artculos con un precio inferior al valor
ingresado.</h2>
Ingrese importe:
<input type="text" name="precio" size="6"><br>
<input type="submit" value="Buscar"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select ar.codigo as codigoarticulo, " & _
"ar.descripcion as descriarticulo, " & _
"precio,ru.descripcion as descrirubro " & _
"from articulos as ar " & _
"join rubros as ru on ru.codigo=ar.codigorubro " & _
"where precio<" & request.form("precio") ,conexion
do while not registros.eof
response.write("Cdigo:" & registros("codigoarticulo"))
response.write("<br>")
response.write("Descripcin:" & registros("descriarticulo"))
response.write("<br>")
response.write("Rubro:" & registros("descrirubro"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
response.write("----------------------------------------------------
--------")
response.write("<br>")
registros.movenext
loop
conexion.close
%>
</body>
</html>
Confeccionar un formulario que solicite el ingreso de un precio y luego muestre todos
los artculos que tienen un precio inferior a dicho importe (mostrar el nombre del
artculo, su precio y descripcin del rubro al que pertenece)



pagina1.html

pagina1.html
29 - UPDATE (Modificacin de un
registro trabajando con dos tablas)
Ya habamos visto que para modificar datos de una tabla debemos utilizar el comando
SQL UPDATE.
Veremos ahora como generar un formulario con los datos actuales de un registro de una
tabla rescatando informacin de otra tabla.
Confeccionararemos una serie de pginas que permitan modificar la descripcin, precio
y rubro de un artculo. Mostraremos en un control select los rubros y dispondremos
como seleccionado el que corresponde.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese el cdigo del artculo a modificar:
<input type="text" name="codigo"><br>
<input type="submit" value="Buscar"><br>
</form>
</body>
</html>
Ahora veamos el cdigo de la pagina1.asp donde se encuentran los conceptos nuevos:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion,precio,codigorubro from
articulos
where codigo=" _
& request.form("codigo") ,conexion
if not registros.eof then
%>
<form action="pagina2.asp" method="post">
Descripcion del articulo:
<input type="text" name="descripcion" size="30"
value="<%response.write(registros("descripcion"))%>"><br>
Precio:
<input type="text" name="precio" size="10"
value="<%response.write(registros("precio"))%>"><br>
Rubro:
<select name="codigorubro">
<%
dim registrosru
set registrosru = Server.CreateObject("ADODB.RecordSet")
registrosru.open "select codigo,descripcion from rubros" ,conexion
do while not registrosru.eof
if registrosru("codigo")=registros("codigorubro") then
response.write("<option value=""" &registrosru("codigo")& _
""" selected>" & registrosru("descripcion")& "</option>")
else
response.write("<option value=""" & registrosru("codigo")& _
""">" &registrosru("descripcion")&"</option>")
end if
registrosru.movenext
loop
%>
</select><br>
<input type="hidden" name="codigo"
value="<%response.write(registros("codigo"))%>">
<input type="submit" value="Confirmar"><br>
</form>
<%
else
response.write("No existe ningn artculo con dicho cdigo")
end if
conexion.close
%>
</body>
</html>
Disponer distintos bloques de asp dentro de la misma pgina. Lo primero que hacemos
en forma similar a conceptos anteriores es verificar si existe el cdigo de artculo
ingresado por el operador:
registros.open "select codigo,descripcion,precio from articulos where
codigo=" _
& request.form("codigo") ,conexion
if not registros.eof then
En caso que la condicin if se verifique verdadera debemos disponer en la pgina un
formulario HTML que muestre los datos actuales de dicho artculo. Lo ms adecuado es
escribir el formulario en un bloque HTML clsico y agregarle a la propiedad value de
cada control el dato rescatado de la base de datos:
Descripcion del articulo:
<input type="text" name="descripcion" size="30"
value="<%response.write(registros("descripcion"))%>"><br>
Ahora debemos disponer en un select todos los rubros con sus respectivos cdigos y
adems debemos mostrar seleccionado el rubro que pertenece el artculo a modificar.
Para esto rescatamos todos los rubros de la tabla "rubros" y dentro de un while
verificamos uno a uno si el cdigo de rubro rescatado coincide con el del artculo
seleccionado.
El if dentro del while permite disponer la propiedad selected al elemento option
respectivo:
if registrosru("codigo")=registros("codigorubro") then
response.write("<option value=""" &registrosru("codigo")& _
""" selected>" & registrosru("descripcion")& "</option>")
else
response.write("<option value=""" & registrosru("codigo")& _
""">" &registrosru("descripcion")&"</option>")
end if
Tengamos en cuenta que el contenido del control HTML debemos cargarlos con todos
los rubros de la tabla "rubros", pero adems debemos dejar seleccionado el que
corresponde al artculo que estamos modificando.
Por ltimo recordemos que almacenamos en un control oculto, es decir de tipo hidden,
el cdigo de artculo. Esto nos permite rescatarlo en la siguiente pgina donde
procederemos a modificar la tabla de la base de datos propiamente dicha.
La ltima pgina (pagina2.asp) procede a la modificacin propiamente dicha de la tabla:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
conexion.execute("update articulos set descripcion='" & _
request.form("descripcion") & "'," & _
"codigorubro=" & request.form("codigorubro") & "," & _
"precio=" & request.form("precio") & _
" where codigo=" & request.form("codigo"))
conexion.close
response.write("Los datos fueron modificados")
%>
</body>
</html>
29 - UPDATE (Modificacin de un
registro trabajando con dos tablas)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una serie de pginas que permitan modificar la descripcin, precio y rubro
de un artculo. Mostrar en un formulario los datos actuales del artculo que queremos
modificar.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese el cdigo del artculo a modif icar:
<input type="text" name="codigo"><br>
<input type="submit" value="Buscar"><br>
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Inf o=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open




pagina2.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
conexion.execute("update articulos set descripcion='" & _




30 - Count (Contar registros)
En SQL Server existe una funcin que nos permiten contar la cantidad de registros de
una tabla, la misma se llama count.
Imaginemos que nuestra tabla "articulos" contiene muchos registros. Para averiguar la
cantidad sin necesidad de contarlos manualmente usamos la funcin "count()":
select count(*)
from articulos
La funcin "count()" cuenta la cantidad de registros de una tabla.
Tambin podemos utilizar esta funcin junto con la clusula "where" para una consulta
ms especfica.
La siguiente pgina muestra la cantidad de registros que contiene la tabla articulos
(pagina1.asp):
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select count(*) as cantidad from articulos",conexion
response.write("Cantidad de artculos existentes:" &
registros("cantidad"))
conexion.close
%>
</body>
</html>
Cuando imprimimos:
response.write("Cantidad de artculos existentes:" &
registros("cantidad"))
no disponemos un if previo ya que siempre nos retornar un registro (aunque la tabla
articulos no tenga registros)
Es indispensable crear un alias para recuperar la cantidad de registros.

30 - Count (Contar registros)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Imprimir la cantidad de artculos almacenados en la tabla "articulos".

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Inf o=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open




30 - Count (Contar registros)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select count(*) as cantidad from rubros",conexion
response.write("<strong>Cantidad de rubros existentes:</strong>" &
registros("cantidad"))
response.write("<br>")
dim registrosru
set registrosru = Server.CreateObject("ADODB.RecordSet")
registrosru.open "select codigo,descripcion from rubros",conexion
do while not registrosru.eof
response.write("Cdigo:" & registrosru("codigo"))
response.write("<br>")
response.write("Descripcin:" & registrosru("descripcion"))
response.write("<br>")
response.write("----------------------------------------------------
--------")
response.write("<br>")
registrosru.movenext
loop
conexion.close
%>
</body>
</html>
Mostrar la cantidad de registros almacenados en la tabla rubros y seguidamente los
nombres de los mismos con su cdigo.



pagina1.asp

31 - Group by (Agrupar registros)

La funcin count solo cuenta para todos los registros. Podemos generar valores de
resumen para un solo campo, combinando la funcin count con la clusula "group by",
que agrupa registros para consultas detalladas.
Por ejemplo queremos saber la cantidad de artculos que hay por rubro, luego debemos
implementar la siguiente algoritmo (pagina1.asp):
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select count(*) as cantidad,ru.descripcion as
descrirubro " & _
" from articulos as ar " & _
"join rubros as ru on ru.codigo=ar.codigorubro " & _
" group by ru.descripcion",conexion
do while not registros.eof
response.write("Rubro:" & registros("descrirubro"))
response.write("<br>")
response.write("Cantidad de artculos de dicho rubro:" &
registros("cantidad"))
response.write("<br>")
response.write("----------------------------------------------------
--------")
response.write("<br>")
registros.movenext
loop
conexion.close
%>
</body>
</html>
Como podemos ver la sintaxis SQL para agrupar por rubro es:
registros.open "select count(*) as cantidad,ru.descripcion as
descrirubro " & _
" from articulos as ar " & _
"join rubros as ru on ru.codigo=ar.codigorubro " & _
" group by ru.descripcion",conexion
La instruccin anterior solicita que recupere el nombre del rubro y cuente la cantidad de
registros que coinciden por el campo "descripcion" de la tabla "rubros". Como resultado
aparecen los nombres de los rubros y la cantidad de registros para dicho rubro.

31 - Group by (Agrupar registros)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Imprimir el nombre del rubro y seguidamente la cantidad de artculos pertenecientes al
mismo

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Inf o=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open



31 - Group by (Agrupar registros)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un algoritmo que muestre el nombre del rubro, la cantidad de artculos
que pertenecen a dicho rubro y seguidamente la descripcin de todos los artculos de
dicho rubro.

Ver solucin

pagina1.asp
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select count(*) as cantidad,ru.descripcion as
descrirubro, " & _
"ru.codigo as codigorubro " & _
" from articulos as ar " & _
"join rubros as ru on ru.codigo=ar.codigorubro " & _
" group by ru.descripcion,ru.codigo",conexion
do while not registros.eof
response.write("Rubro:" & registros("descrirubro"))
response.write("<br>")
response.write("Cantidad de artculos de dicho rubro:" &
registros("cantidad"))
response.write("<br>")
dim registrosar
set registrosar = Server.CreateObject("ADODB.RecordSet")
registrosar.open "select descripcion from articulos " & _
" where codigorubro=" & registros("codigorubro"),conexion
do while not registrosar.eof
response.write("Artculo:" & registrosar("descripcion"))
response.write("<br>")
registrosar.movenext
loop
response.write("----------------------------------------------------
--------")
response.write("<br>")
registros.movenext
loop
conexion.close
%>
</body>
</html>
Confeccionar un algoritmo que muestre el nombre del rubro, la cantidad de artculos
que pertenecen a dicho rubro y seguidamente la descripcin de todos los artculos de
dicho rubro.



pagina1.asp

32 - sum, min, max, avg (Otras
funciones de agrupamiento)

Hemos visto que SQL tiene una funcin que nos permiten contar registros (count),
existen otras funciones de agrupamiento muy tiles que nos permiten calcular sumas,
promedios, obtener valores mximos y mnimos.
Se pueden usar en una instruccin "select" y combinarlas con la clusula "group by".
Todas estas funciones retornan "null" si ningn registro cumple con la condicin del
"where", excepto "count" que en tal caso retorna cero.
El tipo de dato del campo determina las funciones que se pueden emplear con ellas.
Las relaciones entre las funciones de agrupamiento y los tipos de datos es la siguiente:
count: se puede emplear con cualquier tipo de dato.
min y max: con cualquier tipo de dato.
sum y avg: slo en campos de tipo numrico.
Para probar alguna de estas funciones implementaremos un algoritmo que muestre el
precio mayor almacenado en la tabla articulos (pagina1.asp):
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select max(precio) as preciomay from
articulos",conexion
if not registros.eof then
response.write("Precio mayor de la tabla artculos:"
&registros("preciomay"))
else
response.write("La tabla artculos est vaca")
end if
conexion.close
%>
</body>
</html>
Cuando utilizamos alguna de las cuatro funciones presentadas en este concepto
debemos necesariamente disponer el if para verificar que retorn un registro (no retorna
si la tabla se encuentra vaca)
registros.open "select max(precio) as preciomay from
articulos",conexion
Como podemos observar le indicamos a la funcin max el campo a analizar.

32 - sum, min, max, avg (Otras
funciones de agrupamiento)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Imprimir el precio mayor de la tabla articulos.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Inf o=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open





32 - sum, min, max, avg (Otras
funciones de agrupamiento)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Imprimir el precio promedio de los artculos agrupado por rubro.

Ver solucin
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select avg(precio) as preciopromedio, " & _
" ru.descripcion as descrirubro " & _
" from articulos as ar " & _
"join rubros as ru on ru.codigo=ar.codigorubro " & _
" group by ru.descripcion",conexion
do while not registros.eof
response.write("Rubro:" & registros("descrirubro"))
response.write("<br>")
response.write("Precio promedio:" &
round(registros("preciopromedio"),2))
response.write("<br>")
response.write("----------------------------------------------------
--------")
response.write("<br>")
registros.movenext
loop
conexion.close
%>
</body>
</html>
Imprimir el precio promedio de los artculos agrupado por rubro.


pagina1.asp
33 - Conexin a una base de dato
ACCESS
Con el programa Microsoft ACCESS se crea la base de datos. En nuestro caso
crearemos una base de datos llamada: "administracion" y crearemos las dos tablas
articulos y rubros como en los ejemplos vistos con SQL Server.
A diferencia de SQL Server en ACCESS subimos a nuestro servidor el archivo
"administracion.mdb". En este servidor lo almacen en la carpeta usuarios que es una
subcarpeta de aspya.
Implementaremos el algoritmo para imprimir el contenido de la tabla "rubros".
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & _
Server.MapPath(
"/aspya/usuarios/administracion.mdb")
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion from rubros",conexion
do while not registros.eof
response.write("Cdigo:" & registros("codigo"))
response.write("<br>")
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("----------------------------------------------------
--------")
response.write("<br>")
registros.movenext
loop
conexion.close
%>
</body>
</html>
Lo nico que tenemos de diferencia con SQL Server es la cadena de conexin:
conexion.ConnectionString = "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & _
Server.MapPath(
"/aspya/usuarios/administracion.mdb")
Inicializamos las dos variables de entorno DRIVER y DBQ. La forma ms conveniente
de inicializar la variable DBQ es utilizando la ruta relativa donde se encuentra la base
de datos "administracion.mdb". En este servidor todos los visitantes acceden a la misma
base de datos que se encuentra en la carpeta aspya/usuarios/.
El mtodo MapPath del objeto Server nos retorna la ruta absoluta de la base de datos
(por ejemplo c:\inetpub\aspya\usuarios\administracion.mdb)
En este problema como accedemos a caractersticas comunes a SQL Server y ACCESS
el resto del algoritmo es idntico.
Tengamos en cuenta que si almacenamos la base de datos de ACCESS en la misma
carpeta donde guardamos nuestras pginas asp y html luego la cadena de conexin
puede ser :
conexion.ConnectionString = "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & _
Server.MapPath( "administracion.mdb")
Es decir al mtodo MapPath solo le indicamos el nombre de la base de datos.

33 - Conexin a una base de dato
ACCESS
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Imprimir el contendido de la tabla rubros de la base de datos "administracion.mdb".

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "DRIVER={Microsof t Access Driver (*.mdb)};DBQ=" & _
Server.MapPath( "/aspya/usuarios/administracion.mdb")
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion f rom rubros",conexion




33 - Conexin a una base de dato
ACCESS
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un algoritmo que imprima la ruta absoluta donde se almacena la base de
datos "administracion.mdb"

Ver solucin

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
response.write("Ruta absoluta de la base de datos administracion.mdb")
response.write("<br>")
response.write(Server.MapPath( "/aspya/usuarios/administracion.mdb"))
%>
</body>
</html>
Confeccionar un algoritmo que imprima la ruta absoluta donde se almacena la base de
datos "administracion.mdb"



pagina1.asp

33 - Conexin a una base de dato
ACCESS
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un algoritmo que imprima la ruta absoluta donde se almacena la base de
datos "administracion.mdb"

Ver solucin
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
response.write("Ruta absoluta de la base de datos administracion.mdb")
response.write("<br>")
response.write(Server.MapPath( "/aspya/usuarios/administracion.mdb"))
%>
</body>
</html>
Confeccionar un algoritmo que imprima la ruta absoluta donde se almacena la base de
datos "administracion.mdb"



pagina1.asp




pagina1.asp
34 - INSERT (en una tabla de ACCESS)
Como veremos nuevamente el algoritmo para insertar datos en una tabla de una base de
dato ACCESS es idntica a trabajar con una tabla de SQL Server. Solo debemos tener
en cuenta que la cadena de conexin a ACCESS es diferente.
Confeccionaremos un formulario que solicite la carga de la descripcin de un artculo y
seguidamente su precio, y luego en la pgina ASP procederemos a insertarlo en la tabla
de ACCESS.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Descripcion del articulo:
<input type="text" name="descripcion" size="30"><br>
Precio:
<input type="text" name="precio" size="10"><br>
<input type="submit" value="Confirmar"><br>
</form>
</body>
</html>
Veamos ahora la pgina donde procedemos a insertar el registro (pagina1.asp)
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & _
Server.MapPath(
"/aspya/usuarios/administracion.mdb")
conexion.Open
conexion.execute("insert into articulos(descripcion,precio)" & _
"values ('" & request.form("descripcion") & _
"'," & request.form("precio") & ")")
conexion.close
response.write("El artculo se carg")
%>
</body>
</html>
Entonces la cadena de conexin con ACCESS es:
conexion.ConnectionString = "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & _
Server.MapPath(
"/aspya/usuarios/administracion.mdb")
Ahora si comparamos el comando SQL de ACCESS con el de SQL Server es igual:
conexion.execute("insert into articulos(descripcion,precio)" & _
"values ('" & request.form("descripcion") & _
"'," & request.form("precio") & ")")
Por supuesto que hay que decir si utilizamos caractersticas propias de SQL Server no
disponibles en el SQL de ACCESS se producir un error en tiempo de ejecucin. Es
bueno conocer las caractersticas propias del SQL Server (SQL Server Ya) y ACCESS
antes de comenzar a utilizar en profundidad el acceso a bases de datos mediante ASP.

34 - INSERT (en una tabla de ACCESS)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Se cuenta con una tabla llamada articulos, que pertenece a la base de datos:
administracion.
tabla articulos
codigo int (autoincremento)
descripcion varchar(30)
precio float
Confeccionar el alta de un registro en la misma.
La descripcin y el precio solicitarlos por teclado mediante un formulario.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Descripcion del articulo:
<input type="text" name="descripcion" size="30"><br>
Precio:
<input type="text" name="precio" size="10"><br>
<input type="submit" value="Conf irmar"><br>
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "DRIVER={Microsof t Access Driver (*.mdb)};DBQ=" & _
Server.MapPath( "/aspya/usuarios/administracion.mdb")
conexion.Open
conexion.execute("insert into articulos(descripcion,precio)" & _
"values ('" & request.f orm("descripcion") & _
"'," & request.f orm("precio") & ")")



35 - SELECT (listado de una tabla de
ACCESS)

Para probar el comando SELECT de SQL con una tabla de ACCESS procederemos a
mostrar todos los registros almacenados en la tabla "articulos"
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & _
Server.MapPath(
"/aspya/usuarios/administracion.mdb")
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion,precio from
articulos",conexion
do while not registros.eof
response.write("Cdigo:" & registros("codigo"))
response.write("<br>")
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
response.write("----------------------------------------------------
--------")
response.write("<br>")
registros.movenext
loop
conexion.close
%>
</body>
</html>
Primero creamos un objeto "ADODB.Connection" y luego inicializamos la propiedad
ConnectionString con la cadena de conexin, teniendo en cuenta que se trata de una
base de dato tipo ACCESS:
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & _
Server.MapPath(
"/aspya/usuarios/administracion.mdb")
El resto del algoritmo es idntico al concepto del SELECT accediendo a una base de
datos de tipo SQL Server.

35 - SELECT (listado de una tabla de
ACCESS)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Efectuar el listado completo de la tabla articulos.

pagina1.asp
do while not registros.eof
response.write("Cdigo:" & registros("codigo"))
response.write("<br>")
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
response.write("------------------------------------------------------------")
response.write("<br>")
registros.movenext
loop
conexion.close
%>
</body>
</html>




36 - Redireccionamiento
(response.redirect)
Empleando ASP se puede implementar un pequeo programa que permita que cuando
un usuario (navegador) solicita una pgina, la misma redireccione o otra pgina.
Para probar el algoritmo implementaremos un formulario que solicite el ingreso por
teclado de una direccin de internet.La segunda pgina redireccionar al sitio web
cargado en el formulario. Es decir la segunda pgina nunca llega al cliente, sino que
redirecciona a otra pgina.
pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese direccin de sitio web (ej www.google.com):
<input type="text" name="direccion" size="30"><br>
<input type="submit" value="Redireccionar">
</form>
</body>
</html>
Luego el archivo ASP que redirecciona al sitio indicado en el formulario es:
pagina1.asp
<%
response.redirect("http://" & request.form("direccion"))
%>
Como vemos ni si quiera tiene la estructura de una pgina HTML ya que la misma no se
enviar al navegador.
El objeto response tiene un mtodo llamado redirect que nos permite indicar otra pgina
a cargar, pudiendo como vemos redireccionar a un sitio distinto a nuestro servidor.

36 - Redireccionamiento
(response.redirect)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un formulario que solicite ingresar una direccin de internet. Luego en la
pgina que procesa el formulario redireccionar al sitio ingresado.

pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese direccin de sitio web (ej www.google.com):
<input type="text" name="direccion" size="30"><br>
<input type="submit" value="Redireccionar">
</f orm>
</body>
</html>







pagina1.asp
<%
response.redirect("http://" & request.f orm("direccion"))
%>



36 - Redireccionamiento
(response.redirect)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un programa que solicite el ingreso del nombre de usuario y de una clave
en un formulario. La segunda pgina debe verificar si ingres el string "xyz" y mostrar
un mensaje de bienvenida, en caso contrario, esta pgina debe redireccionar a la primera
pgina nuevamente.
Cuando queremos redireccionar a una pgina que se encuentra en el mismo sitio
disponemos en el mtodo redirect solo el nombre de la pgina:
response.redirect("pagina1.html")

Ver solucin
Problema:
<html>
<head>
<title>Problema</title>
</head>
<body>

<form action="pagina1.asp" method="post">
Ingrese nombre de usuario:<p>
<input type="text" name="nombre">
<br>
Ingrese Clave:<p>
<input type="password" name="clave">
<br>
<input type="submit" value="Ingresar">
</form>

</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nombre
dim clave
nombre=request.form("nombre")
clave=request.form("clave")
if clave<>"xyz" then
response.redirect("pagina1.html")
else
response.write("<h1>Bienvenido</h1>")
end if
%>
</body>
</html>
Confeccionar un programa que solicite el ingreso del nombre de usuario y de una clave
en un formulario. La segunda pgina debe verificar si ingres el string "xyz" y mostrar
un mensaje de bienvenida, en caso contrario, esta pgina debe redireccionar a la primera
pgina nuevamente.
Cuando queremos redireccionar a una pgina que se encuentra en el mismo sitio
disponemos en el mtodo redirect solo el nombre de la pgina:
response.redirect("pagina1.html")


pagina1.html
37 - Creacin y lectura de una cookie

El protocolo HTTP es desconectado. Esto significa que cada vez que solicitamos una
pgina a un servidor representa una conexin distinta.
Una cookie es una pequea cantidad de datos almacenada por el navegador del usuario
cuando solicita una pgina a un servidor. El que enva que se genere la cookie es el
servidor.
Una cookie consta de un nombre, un valor, una fecha de expiracin y un servidor. Una
cookie est limitada a 4KB.
Luego que una cookie es creada slo el sitio que la cre puede leerla. Luego de creada
una cookie, cada vez que el navegador del usuario visita el sitio, se enva dicha cookie.
Otra cosa importante que hay que tener en cuenta es que el usuario del browser puede
configurar el mismo para no permitir la creacin de cookies, lo que significa que el uso
de cookies debe hacerse con moderacin y cuando la situacin lo requiera. De todos
modos, el 95% de los navegadores estn configurados para permitir la creacin de
cookies.
Supongamos que queremos que los usuarios que entran a nuestro sitio puedan
configurar con qu color de fondo de pgina quiere que aparezca cada vez que ingresa
al sitio. Al color seleccionado por el visitante lo almacenaremos en una cookie. En caso
que no exista el color, por defecto es blanco.
La primera pgina mostrar un formulario con tres controles de tipo radio para la
seleccin del color. Tambin esta pgina verificar si existe la cookie creada, en caso
afirmativo fijar el fondo de la pgina con el valor de la cookie. Tengamos en cuenta
que la primera vez que ejecutemos este programa la pgina es de color blanco, luego
variar segn el color seleccionado en el formulario.
pagina1.asp
<html>
<head>
<title>Problema</title>
</head>
<body
<%
if request.cookies("color")<>"" then
response.write(" style=""background-color:" & request.cookies("color")
& """ ")
end if
%>
>
<form action="pagina2.asp" method="post">
Seleccione de que color desea que sea la pgina de ahora en ms:<br>
<input type="radio" value="rojo" name="radio">Rojo<br>
<input type="radio" value="verde" name="radio">Verde<br>
<input type="radio" value="azul" name="radio">Azul<br>
<input type="submit" value="Crear cookie">
</form>
</body>
</html>
Lo primero que tenemos que tener en cuenta que esta pgina es de tipo ASP ya que
debemos verificar si la cookie existe para fijar el color de fondo.
El objeto request tiene una propiedad llamada cookies que le pasamos como parmetro
el nombre de la cookie que debe rescatar. Si la cookie no existe retorna una cadena
vaca, en caso que exista retorna el valor de la cookie.
<body
<%
if request.cookies("color")<>"" then
response.write(" style=""background-color:"
&request.cookies("color")
& """ ")
end if
%>
>
En caso que exista la cookie procedemos a inicializar la propiedad de la hoja de estilo
background-color con el color almacenado en la cookie.
La primera vez que solicitamos esta pgina al servidor seguro que la cookie no existe
por lo que el color de la pgina es blanca, que es el color por defecto para el fondo de
una pgina HTML.
El resto de la pgina contiene un formulario que nos permite seleccionar de un grupo de
radios el color que queremos para el fondo de la pgina.

Ahora analicemos la pagina2.asp que contiene el cdigo donde se crea la cookie
(recordemos que la cookie se almacena en la computadora que solicita la pgina.
pagina2.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim col
col=request.form("radio")
if col="rojo" then
response.cookies("color")="#ff0000"
response.cookies("color").expires = Date + 365
else
if col="verde" then
response.cookies("color")="#00ff00"
response.cookies("color").expires = Date + 365
else
if col="azul" then
response.cookies("color")="#0000ff"
response.cookies("color").expires = Date + 365
end if
end if
end if
%>
<a href="pagina1.asp">Ir a la otra pgina</a>
</body>
</html>
Definimos una variable y rescatamos la propiedad value del control radio seleccionado
en el formulario de la pagina1.asp:
dim col
col=request.form("radio")
El primer if es para verificar si el valor del radio seleccionado es la cadena "rojo":
if col="rojo" then
response.cookies("color")="#ff0000"
response.cookies("color").expires = Date + 365
else
En caso que sea verdadera creamos la cookie asignndo el valor respectivo:
response.cookies("color")="#ff0000"
Otra cosa importante es definir por cuanto tiempo la computadora que solicit la pgina
debe almacenar la cookie, una forma sencilla es asignando a la propiedad expires de la
cookie respectiva la fecha actual ms un valor entero que representa la cantidad de das:

response.cookies("color").expires = Date + 365
Los otros if solo tiene el objetivo de guardar otros valores a la cookie.
Luego cuando retornemos a la pgina primera veremos como el color de fondo se
modifica por el seleccionado.
Podemos ver que si cerramos el navegador y ejecutamos nuevamente la pagina1.asp el
color de fondo de la pgina toma el color que habamos seleccionado previamente.

37 - Creacin y lectura de una cookie
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un programa que el visitante del sitio puedan configurar con qu color de
fondo de pgina quiere que aparezca cada vez que ingresa al sitio. Al color seleccionado
por el visitante lo almacenaremos en una cookie. En caso que no exista el color, por
defecto es blanco.
La primera pgina mostrar un formulario con tres controles de tipo radio para la
seleccin del color. Tambin esta pgina verificar si existe la cookie creada, en caso
afirmativo fijar el fondo de la pgina con el valor de la cookie. Tengamos en cuenta
que la primera vez que ejecutemos este programa la pgina es de color blanco, ya que
no existe la cookie.

pagina1.asp
<html>
<head>
<title>Problema</title>
</head>
<body
<%
if request.cookies("color")<>"" then
response.write(" style=""background-color:" & request.cookies("color") & """ ")
end if
%>
>
<f orm action="pagina2.asp" method="post">
Seleccione de que color desea que sea la pgina de ahora en ms:<br>
<input type="radio" value="rojo" name="radio">Rojo<br>
<input type="radio" value="verde" name="radio">Verde<br>







pagina2.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim col
col=request.f orm("radio")
if col="rojo" then
response.cookies("color")="#f f 0000"
response.cookies("color").expires = Date + 365
else
if col="verde" then
response.cookies("color")="#00f f 00"

37 - Creacin y lectura de una cookie
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar una pgina que solicite el ingreso del mail. Guardar en una cookie el mail
cargado. Cada vez que se ingresa a la pgina que pide el ingreso del mail mostrarlo por
defecto dentro del control text si existe la cookie.

Ver solucin

pagina1.asp
Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina2.asp" method="post">
Ingrese el mail:
<input type="text" name="mail" size="50" value=
"
<%
if request.cookies("mail")<>"" then
response.write(request.cookies("mail"))
end if
%>
">
<br>
<input type="submit" value="Entrar"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim mail
mail=request.form("mail")
response.cookies("mail")=mail
response.cookies("mail").expires = Date + 365
%>
<a href="pagina1.asp">Ir a la otra pgina</a>
</body>
</html>
Confeccionar una pgina que solicite el ingreso del mail. Guardar en una cookie el mail
cargado. Cada vez que se ingresa a la pgina que pide el ingreso del mail mostrarlo por
defecto dentro del control text si existe la cookie.



pagina1.asp



Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina2.asp" method="post">
Ingrese el mail:
<input type="text" name="mail" size="50" value=
"
<%
if request.cookies("mail")<>"" then
response.write(request.cookies("mail"))
end if
%>
">
<br>
<input type="submit" value="Entrar"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim mail
mail=request.form("mail")
response.cookies("mail")=mail
response.cookies("mail").expires = Date + 365
%>
<a href="pagina1.asp">Ir a la otra pgina</a>
</body>
</html>
Confeccionar una pgina que solicite el ingreso del mail. Guardar en una cookie el mail
cargado. Cada vez que se ingresa a la pgina que pide el ingreso del mail mostrarlo por
defecto dentro del control text si existe la cookie.



pagina1.asp

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar una pgina que solicite el ingreso del mail. Guardar en una cookie el mail
cargado. Cada vez que se ingresa a la pgina que pide el ingreso del mail mostrarlo por
defecto dentro del control text si existe la cookie.

Ver solucin

pagina1.asp
Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina2.asp" method="post">
Ingrese el mail:
<input type="text" name="mail" size="50" value=
"
<%
if request.cookies("mail")<>"" then
response.write(request.cookies("mail"))
end if
%>
">
<br>
<input type="submit" value="Entrar"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim mail
mail=request.form("mail")
response.cookies("mail")=mail
response.cookies("mail").expires = Date + 365
%>
<a href="pagina1.asp">Ir a la otra pgina</a>
</body>
</html>
Confeccionar una pgina que solicite el ingreso del mail. Guardar en una cookie el mail
cargado. Cada vez que se ingresa a la pgina que pide el ingreso del mail mostrarlo por
defecto dentro del control text si existe la cookie.



pagina1.asp

38 - Borrado de una cookie

Para borrar una cookie se debe inicializar la propiedad expires con una fecha anterior a
la actual.
Haremos un algoritmo muy comn a muchos sitios que administran webmail. Daremos
la opcin de recordar o no el mail ingresado, el cdigo fuente de la primera pgina es la
siguiente:
pagina1.asp
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina2.asp" method="post">
Ingrese el mail:
<input type="text" name="mail" size="50" value=
"
<%
if request.cookies("mail")<>"" then
response.write(request.cookies("mail"))
end if
%>
">
<br>
<input type="radio" name="opcion" value="recordar">
Recordar en esta computadora el mail ingresado.
<br>
<input type="radio" name="opcion" value="norecordar">
No recordar.
<br>
<input type="submit" value="Entrar"><br>
</form>
</body>
</html>
Lo ms significativo de esta pgina se encuentra en la inicializacin de la propiedad
value del control text:
<input type="text" name="mail" size="50" value=
"
<%
if request.cookies("mail")<>"" then
response.write(request.cookies("mail"))
end if
%>
">
Como podemos observar si existe la cookie procedemos a extraer su contenido e
imprimirlo dentro de la propiedad value del control text (es decir imprimimos el mail
que est almacenado en la cookie del navegador que accedi al sitio)
La segunda pgina tiene por objetivo crear la cookie o en su defecto borrarla (realmente
lo que hacemos es fijar una fecha de caducidad menor a la actual)
pagina2.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim mail,opcion
mail=request.form("mail")
opcion=request.form("opcion")
if opcion="recordar" Then
response.cookies("mail")=mail
response.cookies("mail").expires = Date + 365
else
response.cookies("mail").expires = Date - 1
end if
%>
<a href="pagina1.asp">Ir a la otra pgina</a>
</body>
</html>
Definimos dos variables y rescatamos los contenidos de los controles (text y el control
radio seleccionado)
dim mail,opcion
mail=request.form("mail")
opcion=request.form("opcion")
Mediante un if verificamos que control radio est seleccionado:
if opcion="recordar" Then
response.cookies("mail")=mail
response.cookies("mail").expires = Date + 365
else
response.cookies("mail").expires = Date - 1
end if
Si est seleccionado "recordar" procedemos a crear la cookie e inicializarla con el mail
ingresado. En caso que no est seleccionado "recordar" procedemos a borrar la cookie
asignando una fecha menor a la actual a la propiedad expires.

38 - Borrado de una cookie


Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina que solicite el ingreso del mail en un control de tipo text.
Luego mediante dos controles de tipo radio permitir que el operador decida si quiere
que el sitio recuerde su mail para que en ingresos futuros no tenga que tipearlo.

pagina1.asp
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina2.asp" method="post">
Ingrese el mail:
<input type="text" name="mail" size="50" value=
"
<%
if request.cookies("mail")<>"" then
response.write(request.cookies("mail"))
end if
%>
">







pagina2.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim mail,opcion
mail=request.f orm("mail")
opcion=request.f orm("opcion")
if opcion="recordar" Then
response.cookies("mail")=mail
response.cookies("mail").expires = Date + 365
else
response.cookies("mail").expires = Date - 1


39 - Variables de sesin

Es un mtodo para hacer que variables estn disponibles en mltiples pginas sin tener
que pasarlas como parmetro. A diferencia de las cookies, las variables de sesin se
almacenan en el servidor y tienen un tiempo limitado de existencia (por defecto 20
minutos)
Para identificar al usuario que gener las variables de sesin, el servidor genera una
clave nica que es enviada al navegador y almacenada en una cookie. Luego, cada vez
que el navegador solicita otra pgina al mismo sitio, enva esta cookie (clave nica) con
la cual el servidor identifica de qu navegador proviene la peticin y puede rescatar las
variables de sesin que se han creado. Cuando han pasado 20 minutos sin peticiones por
parte de un cliente (navegador) las variables de sesin son eliminadas automticamente
(se puede configurar para variar este tiempo)
Una variable de sesin es ms segura que una cookie ya que se almacena en el servidor.
Otra ventaja es que no tiene que estar envindose continuamente como sucede con las
cookies.
Como desventaja podemos decir que ocupa espacio en el servidor y el procesamiento de
la pgina es ms lento.
Haremos un problema muy sencillo, cargaremos en un formulario el nombre de usuario
y clave de un cliente, en la segunda pgina crearemos dos variables de sesin y en una
tercera pgina recuperaremos los valores almacenados en las variables de sesin.
pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese nombre de usuario:
<input type="text" name="usuario"><br>
Ingrese clave:
<input type="password" name="clave"><br>
<input type="submit" value="confirmar">
</form>
</body>
</html>
Ahora veamos la pgina donde se crean las dos variables de sesin.
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
session.contents("usuario")=request.form("usuario")
session.contents("clave")=request.form("clave")
%>
<a href="pagina2.asp">Ir a la tercer pgina</a>
</body>
</html>
Para crear las variables de sesin el objeto session tiene una propiedad llamada contents,
la cual le indicamos como parmetro el nombre de variable a crear:
session.contents("usuario")=request.form("usuario")
session.contents("clave")=request.form("clave")
Como vemos le asignamos a cada variable de sesin el valor extraido del formulario.
Por ltimo la tercer pgina solo tiene por objetivo rescatar las variables de sesin e
imprimir sus contenidos:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
response.write("Nombre de usuario cargado:" &
session.contents("usuario")
& <br>")
response.write("Clave cargada:" & session.contents("clave")
& "<br>")
%>
</body>
</html>
Vemos que nuevamente accedemos mediante el objeto session a la propiedad contents:
response.write("Nombre de usuario cargado:" &
session.contents("usuario") & <br>")
Un caso tpico donde se emplean variables de sesin es cuando un sitio necesita que el
visitante se registre e ingrese por medio de su nombre de usuario y clave. Todas las
pginas que requieran que el visitante est registrado procede antes de mostrar la pgina
a ver si las variables de sesin existen, en caso negativo no muestra el contenido de
dichas pginas.
Si queremos que las variables de sesin existan ms de 20 minutos o menos, debemos
inicializar la propiedad timeout del objeto session.
Imaginemos que desarrollamos una pgina que el usuario tiene hasta 30 minutos para
completarla. Si el usuario cre una variable de sesin est se perder, salvo que
dispongamos en la pgina:
session.timeout=30
Por ltimo si queremos cerrar una sesin debemos llamar al mtodo abandom del objeto
session:
session.abandom

39 - Variables de sesin
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Cargar en un formulario el nombre de usuario y clave, en la segunda pgina crear dos
variables de sesin y en una tercera pgina recuperar los valores almacenados en las
variables de sesin y mostrarlos.

pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese nombre de usuario:
<input type="text" name="usuario"><br>
Ingrese clave:
<input type="password" name="clave"><br>
<input type="submit" value="conf irmar">
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
session.contents("usuario")=request.f orm("usuario")
session.contents("clave")=request.f orm("clave")
%>
<a href ="pagina2.asp">Ir a la tercer pgina</a>
</body>
</html>




pagina2.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
response.write("Nombre de usuario cargado:" & session.contents("usuario") & "<br
response.write("Clave cargada:" & session.contents("clave") & "<br>")
%>
</body>
</html>






39 - Variables de sesin
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar una serie de pginas:
La primera debe tener tres hipervnculos. El primero llama a una pgina que solicita el
ingreso de un mail y luego se guarda este en una variable de sesin.
El segundo hipervnculo nos enva a una pgina que muestra el mail ingresado. En caso
que anteriormente no hayamos cargado el mail nos muestra un error.
El ltimo hipervnculo abandona la sesin borrando dicho mail.

Ver solucin


pagina1.html




Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<a href="pagina2.html">Ingreso de mail.</a><br>
<a href="pagina3.asp">Visualizacin del mail ingresado.</a><br>
<a href="pagina4.asp">Abandonar sesin.</a><br>
</body>
</html>
<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina2.asp" method="post">
Ingrese su mail:
<input type="text" name="mail"><br>
<input type="submit" value="confirmar">
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
session.contents("mail")=request.form("mail")
%>
<a href="pagina1.html">Ir al men</a>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
if session.contents("mail")<>"" Then
response.write("Mail :" & session.contents("mail"))
else
response.write("No ingres el mail todava")
end if
%>
<br>
<a href="pagina1.html">Ir al men</a>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
session.abandon
%>
<a href="pagina1.html">Ir al men</a>
</body>
</html>
Confeccionar una serie de pginas:
La primera debe tener tres hipervnculos. El primero llama a una pgina que solicita el
ingreso de un mail y luego se guarda este en una variable de sesin.
El segundo hipervnculo nos enva a una pgina que muestra el mail ingresado. En caso
que anteriormente no hayamos cargado el mail nos muestra un error.
El ltimo hipervnculo abandona la sesin borrando dicho mail.



pagina1.html







pagina2.html

39 - Variables de sesin


Es un mtodo para hacer que variables estn disponibles en mltiples pginas sin tener
que pasarlas como parmetro. A diferencia de las cookies, las variables de sesin se
almacenan en el servidor y tienen un tiempo limitado de existencia (por defecto 20
minutos)
Para identificar al usuario que gener las variables de sesin, el servidor genera una
clave nica que es enviada al navegador y almacenada en una cookie. Luego, cada vez
que el navegador solicita otra pgina al mismo sitio, enva esta cookie (clave nica) con
la cual el servidor identifica de qu navegador proviene la peticin y puede rescatar las
variables de sesin que se han creado. Cuando han pasado 20 minutos sin peticiones por
parte de un cliente (navegador) las variables de sesin son eliminadas automticamente
(se puede configurar para variar este tiempo)
Una variable de sesin es ms segura que una cookie ya que se almacena en el servidor.
Otra ventaja es que no tiene que estar envindose continuamente como sucede con las
cookies.
Como desventaja podemos decir que ocupa espacio en el servidor y el procesamiento de
la pgina es ms lento.
Haremos un problema muy sencillo, cargaremos en un formulario el nombre de usuario
y clave de un cliente, en la segunda pgina crearemos dos variables de sesin y en una
tercera pgina recuperaremos los valores almacenados en las variables de sesin.
pagina1.html
<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese nombre de usuario:
<input type="text" name="usuario"><br>
Ingrese clave:
<input type="password" name="clave"><br>
<input type="submit" value="confirmar">
</form>
</body>
</html>
Ahora veamos la pgina donde se crean las dos variables de sesin.
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
session.contents("usuario")=request.form("usuario")
session.contents("clave")=request.form("clave")
%>
<a href="pagina2.asp">Ir a la tercer pgina</a>
</body>
</html>
Para crear las variables de sesin el objeto session tiene una propiedad llamada contents,
la cual le indicamos como parmetro el nombre de variable a crear:
session.contents("usuario")=request.form("usuario")
session.contents("clave")=request.form("clave")
Como vemos le asignamos a cada variable de sesin el valor extraido del formulario.
Por ltimo la tercer pgina solo tiene por objetivo rescatar las variables de sesin e
imprimir sus contenidos:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
response.write("Nombre de usuario cargado:" &
session.contents("usuario")
& <br>")
response.write("Clave cargada:" & session.contents("clave")
& "<br>")
%>
</body>
</html>
Vemos que nuevamente accedemos mediante el objeto session a la propiedad contents:
response.write("Nombre de usuario cargado:" &
session.contents("usuario") & <br>")
Un caso tpico donde se emplean variables de sesin es cuando un sitio necesita que el
visitante se registre e ingrese por medio de su nombre de usuario y clave. Todas las
pginas que requieran que el visitante est registrado procede antes de mostrar la pgina
a ver si las variables de sesin existen, en caso negativo no muestra el contenido de
dichas pginas.
Si queremos que las variables de sesin existan ms de 20 minutos o menos, debemos
inicializar la propiedad timeout del objeto session.
Imaginemos que desarrollamos una pgina que el usuario tiene hasta 30 minutos para
completarla. Si el usuario cre una variable de sesin est se perder, salvo que
dispongamos en la pgina:
session.timeout=30
Por ltimo si queremos cerrar una sesin debemos llamar al mtodo abandom del objeto
session:
session.abandom
40 - Procedimientos en ASP (sub)
Si tenemos que implementar pginas que tienen mucha lgica de negocios es
conveniente dividirlo en pequeos algoritmos que tengan cada uno un objetivo
especfico.
Esta divisin nos facilita la codificacin y mantenimiento futuro del cdigo de la
pgina. Adems facilita la reutilizacin de cdigo.
Para dividir un algoritmo complejo en algoritmos ms pequeos el VBScript nos
permite la implementacin de procedimientos.
Un procedimiento encapsula un algoritmo especfico.
La sintaxis de un procedimiento es la siguiente:
sub [nombre del procedimiento]
[cuerpo del procedimiento]
end sub
Luego para ejecutar el procedimiento debemos llamarlo por su nombre:
[nombre del procedimiento]
Para comenzar a entender esta nueva forma de organizar un algoritmo debemos ver
ejemplos resueltos.
Confeccionaremos una pgina que contenga tres procedimientos. El primero debe
mostrar un ttulo en la cabecera de la pgina, el segundo debe mostrar el cuerpo de la
pgina y finalmente un tercer procedimiento que muestre el pie de pgina.
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%

sub CabeceraPagina()
response.write("<div " & _
"style=""background:#c3d9ff;text-align:center;font-size:40px"">")
response.write("Cabecera de la pgina")
response.write("</div>")
end sub

sub CuerpoPagina()
response.write("<div " & _
"style=""background:#eeeeee;font-size:18px"">")
dim f
for f=1 to 50
response.write("Cuerpo de la pgina.<br>")
next
response.write("</div>")
end sub

sub PiePagina()
response.write("<div " & _
"style=""background:#cdeb8b;text-align:center;font-size:13px"">")
response.write("Pie de la pgina")
response.write("</div>")
end sub

CabeceraPagina()
CuerpoPagina()
PiePagina()

%>
</body>
</html>
Veamos ahora en un ejemplo la sintaxis de un procedimiento:

sub CabeceraPagina()
response.write("<div " & _
"style=""background:#c3d9ff;text-align:center;font-size:40px"">")
response.write("Cabecera de la pgina")
response.write("</div>")
end sub
Luego de la palabra clave sub indicamos el nombre del procedimiento, en nuestro caso
lo llamamos CabeceraPagina, un nombre de procedimiento no puede tener caracteres en
blanco, comenzar con un nmero o utilizar caracteres especiales. Siempre conviene
utilizar un nombre que nos indique que cual es su objetivo.
Todo lo que est encerrado entre el bloque sub y end sub es el cuerpo del algoritmo.
Dentro del cuerpo del algoritmo podemos definir variables locales a dicho
procedimiento y utilizar todas los comandos propios de VBScript.
Un procedimiento no se ejecuta en forma automtica. Para su ejecucin debemos
llamarlo desde fuera del procedimiento por su nombre.
En este ejemplo llamamos a los procedimientos :
CabeceraPagina()
CuerpoPagina()
PiePagina()
Es muy importante el orden de llamado a los procedimientos, de esto depende cual se
ejecuta primero.

40 - Procedimientos en ASP (sub)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina que contenga tres procedimientos. El primero debe mostrar un
ttulo en la cabecera de la pgina, el segundo debe mostrar el cuerpo de la pgina y
finalmente un tercer procedimiento que muestre el pie de pgina.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
sub CabeceraPagina()
response.write("<div " & _
"style=""background:#c3d9f f ;text-align:center;f ont-size:40px"">")
response.write("Cabecera de la pgina")
response.write("</div>")
end sub
sub CuerpoPagina()




40 - Procedimientos en ASP (sub)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un procedimiento que muestre la fecha en la parte derecha de la cabecera
de la pgina.
Para obtener la fecha del servidor, ASP dispone de la funcin date():
dim fecha
fecha=date()

Ver solucin
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
sub CabeceraPagina()
response.write("<div " & _
"style=""background:#c3d9ff;text-align:right;font-size:40px"">")
dim fecha
fecha=date()
response.write(fecha)
response.write("</div>")
end sub

CabeceraPagina()

%>
</body>
</html>
Confeccionar un procedimiento que muestre la fecha en la parte derecha de la cabecera
de la pgina.
Para obtener la fecha del servidor, ASP dispone de la funcin date():
dim fecha
fecha=date()



pagina1.asp

pagina1.asp
40 - Procedimientos en ASP (sub)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un procedimiento que muestre la fecha en la parte derecha de la cabecera
de la pgina.
Para obtener la fecha del servidor, ASP dispone de la funcin date():
dim fecha
fecha=date()

Ver solucin
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
sub CabeceraPagina()
response.write("<div " & _
"style=""background:#c3d9ff;text-align:right;font-size:40px"">")
dim fecha
fecha=date()
response.write(fecha)
response.write("</div>")
end sub

CabeceraPagina()

%>
</body>
</html>
Confeccionar un procedimiento que muestre la fecha en la parte derecha de la cabecera
de la pgina.
Para obtener la fecha del servidor, ASP dispone de la funcin date():
dim fecha
fecha=date()



pagina1.asp




pagina1.asp

41 - Procedimientos en ASP (parmetros)
Otra caracterstica muy importante de un procedimiento es que puede recibir datos
desde donde lo llamamos. Por ejemplo cuando llambamos al procedimiento
CabeceraPagina podramos pasarle como dato el texto a mostrar.
Los procedimientos con parmetros permiten hacer algoritmos ms flexibles que pueden
ser utilizados en ms situaciones.
La sintaxis de un procedimiento con parmetros es:
sub [nombre del procedimiento]([parmetros])
[cuerpo del procedimiento]
end sub
Luego cuando llamamos a dicho procedimiento debemos enviarle los datos que
recibirn los parmetros:
[nombre del procedimiento] [datos]
Es importante notar que luego del nombre del procedimiento dejamos un espacio en
blanco y seguidamente indicamos cada dato separado por una coma.
Confeccionaremos un procedimiento que reciba dos valores enteros, luego mostraremos
desde el primer valor hasta el segundo valor, de uno en uno.
Por ejemplo si recibe un 5 y un 12, luego debe mostrar 5,6,7,8,9,10,11,12.
<head>
<title>problema</title>
</head>
<body>
<%
sub MostrarSerie(inicio,fin)
dim f
for f=inicio to fin
response.write(f & "<br>")
next
end sub

MostrarSerie 5,12
%>
</body>
</html>
Tenemos por un lado la codificacin del procedimiento que recibe los dos parmetros y
muestra la serie de valores:
sub MostrarSerie(inicio,fin)
dim f
for f=inicio to fin
response.write(f & "<br>")
next
end sub
Por otro lado tenemos la llamada al procedimiento que le enva los datos:
MostrarSerie 5,12
Hay que tener bien presente que si no llamamos al procedimiento nunca se ejecutar.
Pruebe de borrar la lnea que llama al procedimiento y ver que no aparece nada en la
pgina.
Otra caracterstica importante de un procedimiento es que podemos llamarlo tantas
veces como lo necesitemos con valores distintos en cada llamada, por ejemplo si
queremos podemos llamarlo 3 veces:
MostrarSerie 1,10
MostrarSerie 100,110
MostrarSerie 1000,1010

41 - Procedimientos en ASP
(parmetros)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un procedimiento que reciba dos valores enteros, luego mostrar desde el
primer valor hasta el segundo valor, de uno en uno.
Por ejemplo si recibe un 5 y un 12, luego debe mostrar 5,6,7,8,9,10,11,12.

pagina1.asp
<head>
<title>problema</title>
</head>
<body>
<%
sub MostrarSerie(inicio,f in)
dim f
f or f =inicio to f in
response.write(f & "<br>")
next
end sub
MostrarSerie 5,12
%>
</body>





41 - Procedimientos en ASP (parmetros)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un procedimiento que muestre la fecha en la cabecera de la pgina. El
procedimiento debe recibir un parmetro que indique si la queremos a izquierda,derecha o
centro.

Ver solucin
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
sub MostrarFecha(alineado)
response.write("<div " & _
"style=""background:#c3d9ff;text-align:" & alineado & ";font-
size:40px"">")
dim fecha
fecha=date()
response.write(fecha)
response.write("</div>")
end sub

MostrarFecha "center"

%>
</body>
</html>
Confeccionar un procedimiento que muestre la fecha en la cabecera de la pgina. El
procedimiento debe recibir un parmetro que indique si la queremos a izquierda,derecha o
centro.



pagina1.asp

pagina1.asp
41 - Procedimientos en ASP (parmetros)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
sub MostrarFecha(alineado)
response.write("<div " & _
"style=""background:#c3d9ff;text-align:" & alineado & ";font-
size:40px"">")
dim fecha
fecha=date()
response.write(fecha)
response.write("</div>")
end sub

MostrarFecha "center"

%>
</body>
</html>
Confeccionar un procedimiento que muestre la fecha en la cabecera de la pgina. El
procedimiento debe recibir un parmetro que indique si la queremos a izquierda,derecha o
centro.



pagina1.asp

42 - Funciones en ASP (function)
Una funcin a diferencia de un procedimiento debe retornar un valor.
La sintaxis de una funcin es:
function [nombre de la funcin]
[algoritmo]
[nombre de la funcin]=[valor que retorna]
end function
Confeccionaremos un algoritmo que nos permita ingresar por teclado dos valores
numricos. La carga se realiza en un formulario. Haremos una funcin que retorne true
si los dos valores ingresados son numricos. Debemos mostrar los dos valores
ingresados o un mensaje solicitando que se ingresen valores numricos.
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese el primer valor:
<input type="text" name="valor1"><br>
Ingrese el segundo valor:
<input type="text" name="valor2"><br>
<input type="submit" value="ok"><br>
</form>
</body>
</html>
Ahora el archivo ASP es (pagina1.asp):
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
function ValidarDatos()
if isnumeric(request.form("valor1")) and
isnumeric(request.form("valor2")) then
ValidarDatos=true
else
ValidarDatos=false
end if
end function

if ValidarDatos() Then
response.write("Primer valor:" & request.form("valor1") & "<br>")
response.write("Segundo valor:" & request.form("valor2") & "<br>")
else
response.write("Deben ingresarse dos valores numricos")
end if
%>
</body>
</html>
La funcin ValidarDatos:
function ValidarDatos()
if isnumeric(request.form("valor1")) and
isnumeric(request.form("valor2")) then
ValidarDatos=true
else
ValidarDatos=false
end if
end function
Recupera el contenido de los dos controles HTML y mediante una funcin propia de
VBScript (isnumeric) verifica si los dos valores ingresados son numricos. En caso que
las dos condiciones simples del if se verifiquen verdadera procedemos a asignarle al
nombre de la funcin el valor que retornar (en dicho caso true).
La llamada a la funcin se hace en este caso directamente desde la condicin de un if ya
que dicha funcin retorna true o false:
if ValidarDatos() Then
response.write("Primer valor:" & request.form("valor1") & "<br>")
response.write("Segundo valor:" & request.form("valor2") & "<br>")
else
response.write("Deben ingresarse dos valores numricos")
end if

42 - Funciones en ASP (function)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un algoritmo que nos permita ingresar por teclado dos valores numricos
en un formulario. Hacer una funcin que retorne true si los dos valores ingresados son
numricos. Debemos mostrar los dos valores ingresados o un mensaje solicitando que se
ingresen valores numricos.

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese el primer valor:
<input type="text" name="valor1"><br>
Ingrese el segundo valor:
<input type="text" name="valor2"><br>
<input type="submit" value="ok"><br>
</f orm>
</body>
</html>







pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
f unction ValidarDatos()
if isnumeric(request.f orm("valor1")) and isnumeric(request.f orm("valor2")) then
ValidarDatos=true
else
ValidarDatos=f alse
end if
end f unction



42 - Funciones en ASP (function)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar una funcin que me retorne un string con la fecha en formato dia/mes/ao.
Para obtener la fecha y extraer el da, mes y ao debemos hacer:
dim fecha,dia,mes,anio
fecha=date()
dia=day(fecha)
mes=month(fecha)
anio=year(fecha)
Es decir la funcin day retorna el da de la fecha, month el mes y year el ao.

Ver solucin
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
function RetornarFechaddmmaa()
dim fecha,dia,mes,anio
fecha=date()
dia=day(fecha)
mes=month(fecha)
anio=year(fecha)
RetornarFechaddmmaa=dia & "/" & mes & "/" & anio
end function

response.write(RetornarFechaddmmaa())
%>
</body>
</html>
Confeccionar una funcin que me retorne un string con la fecha en formato dia/mes/ao.
Para obtener la fecha y extraer el da, mes y ao debemos hacer:
dim fecha,dia,mes,anio
fecha=date()
dia=day(fecha)
mes=month(fecha)
anio=year(fecha)
Es decir la funcin day retorna el da de la fecha, month el mes y year el ao.



pagina1.asp

pagina1.asp
43 - Funciones en ASP (parmetros)
Igual que los procedimientos las funciones pueden recibir parmetros. Como dijimos
anteriormente los parmetros permiten hacer algoritmos ms flexibles que pueden ser
utilizados en ms situaciones.
La sintaxis de una funcin con parmetros es:
function [nombre de la funcin]([parmetros])
[algoritmo]
[nombre de la funcin]=[valor que retorna]
end function
Implementaremos una funcin que le enviamos un valor entero y nos retorna todos los
valores mltiplos de 3 hasta el valor que le enviamos.
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
function MultiplosTres(valor)
dim numeros,f
numeros=""
for f=3 To valor step 3
numeros=numeros & f & " - "
next
MultiplosTres=numeros
end function

response.write("Multiplos de 3 hasta el valor 100</br>")
response.write(MultiplosTres(100))
%>
</body>
</html>
La funcin MultiplosTres recibe como parmetro un valor entero. El algoritmo de la
funcin propiamente dicha inicializa una variable de tipo string con cadena vaca y cada
repeticin del for se le concatena el nuevo mltiplo de tres, ms un guin.
El contador del for se inicializa en 3 y se lo incrementa en cada vuelta en 3 (step 3)
Previo a finalizar la funcin se le asigna al nombre de la funcin el string que retornar.
Como la funcin retorna un string podemos llamarla directamente desde el mtodo
write del objeto response, con esto el resultado se imprime directamente en la pgina y
no se almacena en otra variable:
response.write(MultiplosTres(100))

43 - Funciones en ASP (parmetros)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Implementar una funcin que le enviemos un valor entero y nos retorne todos los
valores mltiplos de 3 hasta el valor que le enviamos.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
f unction MultiplosTres(valor)
dim numeros,f
numeros=""
f or f =3 To valor step 3
numeros=numeros & f & " - "
next
MultiplosTres=numeros
end f unction





43 - Funciones en ASP (parmetros)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar una funcin que reciba dos valores numricos y nos retorne el mayor de
los mismos. Hacer un formulario donde se ingresen dichos valores.
Tener en cuenta que siempre que rescatamos un valor de un control HTML lo trata
como un string, luego si queremos convertirlo a entero podemos hacer:
dim val1
val1=cint(request.form("valor1"))
Con esto nos aseguramos que cuando le enviemos val1 a la funcin la comparacin
tendr en cuenta enteros y no string.

Ver solucin

pagina1.html


Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese el primer valor:
<input type="text" name="valor1"><br>
Ingrese el segundo valor:
<input type="text" name="valor2"><br>
<input type="submit" value="ok"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
function RetornarMayor(v1,v2)
if v1>v2 then
RetornarMayor=v1
else
RetornarMayor=v2
end if
end function

response.write("El valor mayor de los dos es:")
dim val1
val1=cint(request.form("valor1"))
dim val2
val2=cint(request.form("valor2"))
response.write(RetornarMayor(val1,val2))
%>
</body>
</html>
Confeccionar una funcin que reciba dos valores numricos y nos retorne el mayor de
los mismos. Hacer un formulario donde se ingresen dichos valores.
Tener en cuenta que siempre que rescatamos un valor de un control HTML lo trata
como un string, luego si queremos convertirlo a entero podemos hacer:
dim val1
val1=cint(request.form("valor1"))
Con esto nos aseguramos que cuando le enviemos val1 a la funcin la comparacin
tendr en cuenta enteros y no string.



pagina1.html

44 - Estructura de datos tipo vector.
La estructura de datos tipo vector nos facilita trabajar con datos en la memoria. Las
variables vistas hasta ahora solo pueden almacenar un solo elemento (entero, real, string
etc.) con un vector podemos almacenar un conjunto de datos.
Un vector es una coleccin de datos que los accedemos por medio de un subndice.
Veamos un ejemplo y expliquemos diferentes posibilidades de un vector:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim vec1(3)
vec1(0)=10
vec1(1)=20
vec1(2)=30
vec1(3)=40
dim f
response.write("Creacin de un vector de 4 elementos ")
response.write("con todos los elementos del mismo tipo<br>")
for f=0 to 3
response.write("Elemento de la posicion " & f & " es " & vec1(f))
response.write("<br>")
next
dim vec2(2)
vec2(0)="Rodriguez Pablo"
vec2(1)=38
vec2(2)=1500.50
response.write("Creacin de un vector de 3 elementos ")
response.write("con los elementos de distinto tipo<br>")
for f=0 to 2
response.write("Elemento de la posicion " & f & " es " & vec2(f))
response.write("<br>")
next
dim vec3()
redim vec3(2)
vec3(0)=10
vec3(1)=20
vec3(2)=30
response.write("Creacin de un vector en forma dinmica (redim)<br>")
for f=0 to 2
response.write("Elemento de la posicion " & f & " es " & vec3(f))
response.write("<br>")
next
redim preserve vec3(4)
vec3(3)=40
vec3(4)=50
response.write("Impresin del vector anterior redimensionado<br>")
for f=0 to 4
response.write("Elemento de la posicion " & f & " es " & vec3(f))
response.write("<br>")
next
redim vec3(4)
vec3(3)=40
vec3(4)=50
response.write("Impresin del vector anterior redimensionado ")
response.write(" (sin preserve)<br>")
for f=0 to 4
response.write("Elemento de la posicion " & f & " es " & vec3(f))
response.write("<br>")
next
%>
</body>
</html>
Para crear un vector utilizamos la siguiente sintaxis:
dim vec1(3)
Estamos definiendo el vector llamado vec1 y le indicamos que tiene 4 elementos (4
porque las componentes se numeran desde cero)
Para acceder a los elementos debemos indicar entre parntesis a cual de ellos queremos
acceder:
vec1(0)=10
vec1(1)=20
vec1(2)=30
vec1(3)=40
Como podemos comprobar hay un solo nombre de variable (vec1) que almacena 4
elementos de tipo entero.
Si queremos imprimir los cuatro elementos podemos disponer un for que se repita
cuatro veces:
for f=0 to 3
response.write("Elemento de la posicion " & f & " es " & vec1(f))
response.write("<br>")
next
En VBScript podemos definir vectores que almacenen datos de distinto tipo:
dim vec2(2)
vec2(0)="Rodriguez Pablo"
vec2(1)=38
vec2(2)=1500.50
Es decir la primer componente almacena un string, la segunda un entero y la tercera un
valor real.
Para imprimirlo en forma completo lo recorremos con un for:
for f=0 to 2
response.write("Elemento de la posicion " & f & " es " & vec2(f))
response.write("<br>")
next
Otra posibilidad es la creacin de vectores dinmicos, es decir que puedan crecer o
decrecer durante la ejecucin del algoritmo. Para definir este tipo de vectores tenemos
que implementar la siguiente sintaxis:
dim vec3()
Es decir no indicamos ningn valor entre parntesis. Luego mediante el comando redim
le indicamos dicho valor:
redim vec3(2)
vec3(0)=10
vec3(1)=20
vec3(2)=30
En cualquier momento podemos redimensionar dicho vector con la siguiente sintaxis:
redim preserve vec3(4)
vec3(3)=40
vec3(4)=50
Ahora nuestro vector puede almacenar 5 elementos. Adems si utilizamos la palabra
clave preserve los elementos que ya existen en el vector se conservan.
Si no queremos conservar los elementos originarios cuando redimensionamos un vector:
redim vec3(4)
vec3(3)=40
vec3(4)=50
Ahora las componentes vec3(0),vec3(1) y vec3(2) no estn inicializadas.

44 - Estructura de datos tipo vector.
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina ASP que defina una serie de vectores. Los cargue por
asignacin y muestre su contenido.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim vec1(3)
vec1(0)=10
vec1(1)=20
vec1(2)=30
vec1(3)=40
dim f
response.write("Creacin de un vector de 4 elementos ")
response.write("con todos los elementos del mismo tipo<br>")



44 - Estructura de datos tipo vector.
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar una funcin que le enviemos un vector de 5 elementos enteros y nos
retorne el mayor del mismo. Al vector cargarlo con valores aleatorios entre 1 y 50

Ver solucin

pagina1.asp
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
function RetornarMayor(vec)
dim f
may=vec(0)
for f=1 to 4
if vec(f)>may then
may=vec(f)
end if
next
RetornarMayor=may
end function

dim vector(4)
dim f
randomize()
for f=0 to 4
vector(f)=1 + int(rnd()*50)
response.write(vector(f) & "-")
next
response.write("<br><br>")
response.write("El mayor es:")
response.write(RetornarMayor(vector))
%>
</body>
</html>
Confeccionar una funcin que le enviemos un vector de 5 elementos enteros y nos
retorne el mayor del mismo. Al vector cargarlo con valores aleatorios entre 1 y 50



pagina1.asp






45 - Funciones que se aplican a vectores

El VBScript tiene un conjunto de funciones que nos facilitan trabajar con los vectores.
Veamos una aplicacin que hace uso de ellos.
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim vector
vector=array(10,20,30)
dim f
response.write("Creacin de un vector de 3 elementos con ")
response.write("la funcin array<br>")
for f=0 to 2
response.write("Elemento de la posicion " & f & " es " & vector(f))
response.write("<br>")
next
response.write("Impresin del vector utilizando la funcin ")
response.write("ubound<br>")
for f=0 to ubound(vector)
response.write("Elemento de la posicion " & f & " es " & vector(f))
response.write("<br>")
next
redim preserve vector(4)
vector(3)=40
vector(4)=50
response.write("Impresin del vector luego de redimensionarlo ")
response.write("utilizando ubound<br>")
for f=0 to ubound(vector)
response.write("Elemento de la posicion " & f & " es " & vector(f))
response.write("<br>")
next
%>
</body>
</html>
Hay una funcin llamada array que le pasamos una lista de valores y nos retorna un
vector con dichos elementos:
dim vector
vector=array(10,20,30)
Es importante notar que cuando definimos la variable vector no disponemos los
parntesis de apertura y cerrado.
La funcin array retorna un vector dinmico.
Otra funcin de gran utilidad cuando trabajamos con vectores es ubound, esta nos
retorna el valor del ndice final del vector.
Si queremos imprimir un vector luego con la funcin ubound tenemos:
for f=0 to ubound(vector)
response.write("Elemento de la posicion " & f & " es " & vector(f))
response.write("<br>")
next
Luego si cambiamos el tamao del vector no hay que modificar el for, ya que siempre
mediante la funcin ubound obtendremos la posicin del ltimo elemento del vector.


45 - Funciones que se aplican a vectores
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina que utilice funciones orientadas a vectores.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim vector
vector=array(10,20,30)
dim f
response.write("Creacin de un vector de 3 elementos con ")
response.write("la f uncin array<br>")
f or f =0 to 2
response.write("Elemento de la posicion " & f & " es " & vector(f ))
response.write("<br>")




45 - Funciones que se aplican a vectores
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un procedimiento genrico que imprima un vector de cualquier tamao.
Llamarlo dos veces con vectores de distinto tamao.

Ver solucin

pagina1.asp
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
sub ImprimirVector(vec)
dim f
for f=0 to ubound(vec)
response.write(vec(f) & "-")
next
response.write("<br>")
end sub

dim vector1
vector1=array(10,20,30)
ImprimirVector vector1
dim vector2
vector2=array("juan",30)
ImprimirVector vector2
%>
</body>
</html>
Confeccionar un procedimiento genrico que imprima un vector de cualquier tamao.
Llamarlo dos veces con vectores de distinto tamao.



pagina1.asp





46 - Estructura de datos tipo matriz.
Algunas situaciones utilizar un solo subndice para acceder a un elemento de un vector
puede ser inconveniente. El lenguaje VBScript nos permite definir estructuras de datos
con dos dimensiones. De esta forma debemos acceder a cada elemento por medio de dos
subndices.
Veamos la sintaxis para definir y acceder a una matriz mediante un ejemplo:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim matriz1(2,2)
matriz1(0,0)=1
matriz1(0,1)=1
matriz1(0,2)=1
matriz1(1,0)=2
matriz1(1,1)=2
matriz1(1,2)=2
matriz1(2,0)=3
matriz1(2,1)=3
matriz1(2,2)=3
response.write("Creacin de una matriz de dos filas ")
response.write("y dos columnas<br>")
dim f,c
for f=0 to 2
for c=0 to 2
response.write(matriz1(f,c) & "-")
next
response.write("<br>")
next
response.write("Utilizacin de ubound en una matriz<br>")
for f=0 to ubound(matriz1,1)
for c=0 to ubound(matriz1,2)
response.write(matriz1(f,c) & "-")
next
response.write("<br>")
next
dim matriz2
redim matriz2(2,3)
matriz2(0,0)=1
matriz2(0,1)=1
matriz2(0,2)=1
matriz2(0,3)=1
matriz2(1,0)=2
matriz2(1,1)=2
matriz2(1,2)=2
matriz2(1,3)=2
matriz2(2,0)=3
matriz2(2,1)=3
matriz2(2,2)=3
matriz2(2,3)=3
response.write("Matriz creada dinmicamente<br>")
for f=0 to ubound(matriz2,1)
for c=0 to ubound(matriz2,2)
response.write(matriz2(f,c) & "-")
next
response.write("<br>")
next
redim preserve matriz2(2,2)
response.write("Matriz despus de redimensionarla<br>")
for f=0 to ubound(matriz2,1)
for c=0 to ubound(matriz2,2)
response.write(matriz2(f,c) & "-")
next
response.write("<br>")
next
%>
</body>
</html>
Para definir una matriz utilizamos la sintaxis:
dim matriz1(2,2)
El primer subndice indica las filas (es decir tiene tres filas 0,1 y 2) y el segundo
subndice indica las columnas.
Para inicializar cada componente por asignacin:
matriz1(0,0)=1
matriz1(0,1)=1
matriz1(0,2)=1
matriz1(1,0)=2
matriz1(1,1)=2
matriz1(1,2)=2
matriz1(2,0)=3
matriz1(2,1)=3
matriz1(2,2)=3
Primero indicamos la fila y luego la columna.
Podemos imprimir la matriz disponiendo un for dentro de otro:
for f=0 to 2
for c=0 to 2
response.write(matriz1(f,c) & "-")
next
response.write("<br>")
next
La variable f nos indica la fila y la variable c indica la columna de la componente que
queremos acceder.
En forma ms genrica podemos preguntarle a la matriz mediante la funcin ubount el
valor de la dimensin:
for f=0 to ubound(matriz2,1)
for c=0 to ubound(matriz2,2)
response.write(matriz2(f,c) & "-")
next
response.write("<br>")
next
ubound(matriz2,1) retorna la cantidad de fila de la matriz y ubound(matriz2,2) retorna la
cantidad de columnas.
Podemos crear una matriz en forma dinmica:
dim matriz2
redim matriz2(2,3)
y por lo tanto en algn momento podemos redimensionarla:
redim preserve matriz2(2,2)




46 - Estructura de datos tipo matriz.

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Crear una matriz de 2x2. Luego crear otra matriz en forma dinmica de 2x3 y
finalmente redimensionarla en una matriz de 2x2 preservando su contenido.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim matriz1(2,2)
matriz1(0,0)=1
matriz1(0,1)=1
matriz1(0,2)=1
matriz1(1,0)=2
matriz1(1,1)=2
matriz1(1,2)=2
matriz1(2,0)=3




46 - Estructura de datos tipo matriz.



Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar una funcin que le enviemos una matriz que almacena valores numricos
y nos retorne la suma de todos sus elementos.
Hacer un procedimiento para la impresin de la matriz.

Ver solucin
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
function SumarElementos(mat)
dim f,c,suma
suma=0
for f=0 to ubound(mat,1)
for c=0 to ubound(mat,2)
suma=suma+mat(f,c)
next
next
SumarElementos=suma
end function

sub ImprimirMatriz(mat)
dim f,c
for f=0 to ubound(mat,1)
for c=0 to ubound(mat,2)
response.write(mat(f,c) & "-")
next
response.write("<br>")
next
end sub


dim matriz1(2,2)
matriz1(0,0)=1
matriz1(0,1)=1
matriz1(0,2)=1
matriz1(1,0)=2
matriz1(1,1)=2
matriz1(1,2)=2
matriz1(2,0)=3
matriz1(2,1)=3
matriz1(2,2)=3
ImprimirMatriz matriz1
response.write("La suma de todos sus componentes es:")
response.write(SumarElementos(matriz1))
%>
</body>
</html>
Confeccionar una funcin que le enviemos una matriz que almacena valores numricos
y nos retorne la suma de todos sus elementos.
Hacer un procedimiento para la impresin de la matriz.



pagina1.asp







pagina1.asp

47 - Estructura repetitiva for each (con
vectores)



Existe en VBScript una estructura repetitiva que nos permite recorrer un vector.
La sintaxis de esta estructura repetitiva es:
for each [variable] in [vector]
[algoritmo]
next
Este estructura repetitiva almacena en la [variable] los elementos del [vector], esto lo
hace en forma ordenada desde el primero hasta el ltimo elemento del vector.
Es decir dentro del ciclo for each tenemos acceso a todos los elementos del vector a
travs de la variable que indicamos al principio del for.
Confeccionemos una pgina que defina un vector dinmico y luego lo muestre
utilizando la estructura repetitiva for each:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim vec
vec=array(10,20,30)
dim valor
for each valor in vec
response.write(valor & "-")
next
%>
</body>
</html>
Primero definimos una variable y llamamos a la funcin array que retorna un vector
dinmico:
dim vec
vec=array(10,20,30)
Ahora disponemos la estructura for each para recorrer e imprimir el contenido de todas
las componentes del vector previamente creado:
dim valor
for each valor in vec
response.write(valor & "-")
next
Debemos definir una variable (valor) donde se almacenarn en cada ciclo del for el
contenido de un elemento del vector. Tengamos en cuenta que la variable (valor)
almacenar en forma sucesiva cada elemento del vector, (valor) almacena un nmero
por vez.
47 - Estructura repetitiva for each (con
vectores)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina que defina y cargue un vector dinmico. Luego imprimir el
contenido de todas sus componentes mediante la estructura repetitiva for each.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim vec
vec=array(10,20,30)
dim valor
f or each valor in vec
response.write(valor & "-")
next
%>
</body>





47 - Estructura repetitiva for each (con
vectores)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar una funcin que reciba un vector y retorne la suma de todas sus
componentes (utilizar la estructura repetitiva for each para su recorrido)

Ver solucin

pagina1.asp
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
function RetornarSuma(vec)
dim valor
dim suma
suma=0
for each valor in vec
suma=suma+valor
next
RetornarSuma=suma
end function

dim vector(5)
vector(0)=10
vector(1)=10
vector(2)=10
vector(3)=10
vector(4)=10
vector(5)=10
response.write("La suma de todas las componentes del vector es:")
response.write(RetornarSuma(vector))
%>
</body>
</html>
Confeccionar una funcin que reciba un vector y retorne la suma de todas sus
componentes (utilizar la estructura repetitiva for each para su recorrido)



pagina1.asp






48 - Inclusin de archivos (#include)

Cuando tenemos funciones y procedimientos que son utilizados habitualmente en
muchas pginas es conveniente separarlos en un archivo aparte e incluirlos en los
archivos que los necesitan.
Pensemos en tareas habituales como la conexin a la base de datos, menes, pie de
pginas etc. todos estos algoritmos son susceptibles a implementarse en archivos
independientes.
Veamos un ejemplo y comprendamos la sintaxis de los archivos de inclusin:
libreria.asp
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
%>
Como podemos observar nuestro archivo de inclusin tiene un bloque de cdigo ASP
puro. Desde el navegador no tiene sentido llamar a la pgina: libreria.asp.
El objetivo de este archivo es que forme parte de otro. para ver como lo aadimos a otro
debemos ver el archivo (pagina1.asp):
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<!--#include file="libreria.asp"-->
<%
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion,precio from
articulos",conexion
do while not registros.eof
response.write("Cdigo:" & registros("codigo"))
response.write("<br>")
response.write("Descripcin:" & registros("descripcion"))
response.write("<br>")
response.write("Precio:" & registros("precio"))
response.write("<br>")
response.write("----------------------------------------------------
--------")
response.write("<br>")
registros.movenext
loop
conexion.close
%>
</body>
</html>
En la pagina1.asp necesitamos crear un objeto para la conexin a la base de datos,
podemos como hasta ahora escribir todo el cdigo para la conexin o incluir el archivo
que contiene dicho cdigo:
<body>
<!--#include file="libreria.asp"-->
<%
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
Como podemos ver utilizamos el comando #include y en la propiedad file le asignamos
el nombre del archivo que debe incluirse. Luego previo a que se ejecute la pgina el
contenido del archivo libreria.asp es aadido en este lugar.
Podemos enunciar como ventajas:
Cuando hay que hacer modificaciones, solo se hacen en un archivo y se
propagan a todos los archivos que lo incluyen.
El cdigo queda mucho mas organizado.
Facilita el mantenimiento de programas grandes.
Si el archivo se encuentra en otro directorio debemos indicar el path completo desde la
raiz de nuestro sitio.

48 - Inclusin de archivos (#include)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un archivo de inclusin donde dispongamos la cadena de conexin con la
base de datos. En el archivo principal incluir el archivo creado e imprimir todos los
datos de la tabla articulos.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<!--#include f ile="libreria.asp"-->
<%
dim registros
set registros = Server.CreateObject("ADODB.RecordSet")
registros.open "select codigo,descripcion,precio f rom articulos",conexion
do while not registros.eof
response.write("Cdigo:" & registros("codigo"))
response.write("<br>")
response.write("Descripcin:" & registros("descripcion"))







libreria.asp
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Inf o=False;" & _
"Initial Catalog=wi630629_aspya"
conexion.Open
%>

48 - Inclusin de archivos (#include)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un procedimiento que reciba dos vectores, uno representa los ttulos de los
hipervnculos y otro las direcciones de dichos hipervnculos. Almacenar este
procedimiento en un archivo llamado "libreria.asp".
Hacer adems una pgina (pagina1.asp) que incluya y llame a dicha procedimiento.

Ver solucin

pagina1.asp
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<!--#include file="libreria.asp"-->
<%
dim sitios
dim direc
sitios=array("Google","Yahoo","MSN")
direc=array("http://www.google.com","http://www.yahoo.com","http://www
.msn.com")
MostrarHipervinculos sitios,direc
%>
</body>
</html>
<%

sub MostrarHipervinculos(sitios,direc)
dim f
for f=0 to ubound(sitios)
response.write("<a href=""" & direc(f) & """>" & sitios(f) &
"</a>" & "-")
next
end sub

%>
Confeccionar un procedimiento que reciba dos vectores, uno representa los ttulos de los
hipervnculos y otro las direcciones de dichos hipervnculos. Almacenar este
procedimiento en un archivo llamado "libreria.asp".
Hacer adems una pgina (pagina1.asp) que incluya y llame a dicha procedimiento.



pagina1.asp


49 - Funciones para administrar string
(cadenas)

VBScript cuenta con un conjunto de funciones que nos permiten procesar cadenas de
caracteres, veremos un ejemplo y posterior explicacin de estas funciones:
Solicitar el ingreso de un nombre y apellido. Aplicar las funciones de string sobre el
mismo.
pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese su nombre y apellido:
<input type="text" name="nom"><br>
<input type="submit" value="cargar"><br>
</form>
</body>
</html>
y el archivo que procesa el string cargado por teclado.
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nom
dim temp,cant
nom=request.form("nom")
response.write("string original:<strong>" & nom&"</strong><br>")
cant=len(nom)
response.write("cantidad de caracteres:<strong>" &
cant&"</strong><br>")
temp=ucase(nom)
response.write("convertido a maysculas:<strong>" & temp &
"</strong><br>")
temp=lcase(nom)
response.write("convertido a minsculas:<strong>" & temp
&"</strong><br>")
temp=left(nom,3)
response.write("Los primeros tres caracteres:<strong>" & temp
&"</strong><br>")
temp=right(nom,3)
response.write("Los ltimos tres caracteres:<strong>" & temp
&"</strong><br>")
temp=mid(nom,2,3)
response.write("A partir del segundo caracter tres
caracteres:<strong>" & temp& "</strong><br>")
temp=strreverse(nom)
response.write("cadena invertida:<strong>" & temp&"</strong><br>")
temp=trim(nom)
response.write("cadena original suprimiendo los espacios blanco del
principio
y el final:<strong>" & temp &"</strong><br>")
temp=ltrim(nom)
response.write("cadena original suprimiendo los espacios blanco del
principio:
<strong>" & temp & "</strong><br>")
temp=rtrim(nom)
response.write("cadena original suprimiendo los espacios blanco del
final:<strong>"
& temp & "</strong><br>")
temp=replace(nom," ","-")
response.write("cadena remplazando los espacios en blanco por
guin:<strong>"
& temp & "</strong><br>")
response.write("cadena dividida por los espacios en blanco<br>")
dim vec,f
vec=split(nom," ")
for f=0 to ubound(vec)
response.write("<strong>" & vec(f) &"</strong><br>")
next
if instr(nom,"juan")=0 then
response.write("No se encuentra el nombre juan en la cadena<br>")
else
response.write("Si se encuentra el nombre juan en la cadena<br>")
end if
%>
</body>
</html>
1. entero=len(string) Retorna la cantidad de caracteres del string (tiene en cuenta
los espacios en blanco ingresados al principio y al final)
2. string=ucase(string) Retorna un string con todos los caracteres convertidos a
maysculas.
3. string=lcase(string) Retorna un string con todos los caracteres convertidos a
minsculas
4. string=left(string,entero) Retorna un substring y los extrae del principio.
Tantos caracteres como indica el segundo parmetro.
5. string=right(string,entero) Similar a la funcin left pero empieza a contar
desde la derecha del string.
6. string=mid(string,entero,entero) Extrae un substring a partir de una
determinada posicin indicada en el segundo parmetro y tantos caracteres como
indica el tercero.
7. string=strreverse(string) Retorna el string invertido.
8. string=trim(string) Retorna un string eliminando los espacios en blanco del
principio y el final.
9. string=ltrim(string) Retorna un string eliminando los espacios en blanco de la
izquierda de la cadena.
10. string=rtrim(string) Retorna un string eliminando los espacios en blanco de la
derecha de la cadena.
11. string=replace(string,string,string) Genera un string remplazando las
coincidencias del segundo parmetro con respecto al primero. Se remplaza con
el string del tercer parmetro.
12. vector=split(string,string) Genera un vector dividiendo los datos del primer
parmetro segn el string indicado en el siguiente parmetro. El vector que se
genera comienza a numerarse en cero.
13. integer=instr(string,string) Retorna la posicin del segundo parmetro dentro
del string del primer parmetro. Si no lo encuentra retorna 0.
49 - Funciones para administrar string
(cadenas)

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Solicitar el ingreso de un nombre y apellido. Aplicar las funciones de string sobre el
mismo

pagina1.html
<html>
<head>
<title>problema</title>
</head>
<body>
<f orm action="pagina1.asp" method="post">
Ingrese su nombre y apellido:
<input type="text" name="nom"><br>
<input type="submit" value="cargar"><br>
</f orm>
</body>
</html>







pagina1.asp
<%option
explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nom
dim temp,cant
nom=request.f orm("nom")
response.write("string original:<strong>" & nom &
"</strong><br>")
cant=len(nom)
response.write("cantidad de caracteres:<strong>" & cant &

49 - Funciones para administrar string
(cadenas)
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Solicitar que se ingrese el nombre de usuario y la clave dos veces.
Mostrar los siguientes mensajes de error:
El nombre de usuario debe tener entre 5 y 20 caracteres.
La clave debe tener entre 8 y 20 caracteres.
El nombre de usuario no puede tener espacios en blanco al principio o al final.
Las dos claves deben ser iguales

Ver solucin

pagina1.html





Problema:
<html>
<head>
<title>Problema</title>
</head>
<body>

<form action="pagina1.asp" method="post">
Ingrese nombre de usuario:<p>
<input type="text" name="nombre">
<br>
Ingrese Clave:<p>
<input type="password" name="clave1">
<br>
Repita el ingrese de la Clave:<p>
<input type="password" name="clave2">
<br>
<input type="submit" value="Ingresar">
</form>

</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim nombre
dim clave1,clave2
nombre=request.form("nombre")
clave1=request.form("clave1")
clave2=request.form("clave2")
if len(nombre)<5 or len(nombre)>20 then
response.write("El nombre de usuario debe tener entre 5 y 20
caracteres.<br>")
end if
if len(clave1)<8 or len(clave1)>20 then
response.write("La clave de usuario debe tener entre 8 y 20
caracteres.<br>")
end if
if trim(nombre)<>nombre then
response.write("El nombre de usuario no puede tener espacios en
blanco al principio.<br>")
end if
if clave1<>clave2 then
response.write("Las claves ingresadas deben ser iguales.<br>")
end if
%>
</body>
</html>
Solicitar que se ingrese el nombre de usuario y la clave dos veces.
Mostrar los siguientes mensajes de error:
El nombre de usuario debe tener entre 5 y 20 caracteres.
La clave debe tener entre 8 y 20 caracteres.
El nombre de usuario no puede tener espacios en blanco al principio o al final.
Las dos claves deben ser iguales



pagina1.html

50 - Funciones para administrar fechas

Se disponen de un conjunto de funciones orientadas a la administracin de fechas.
Confeccionaremos una pgina que haga uso de dichas funciones y luego pasaremos a
explicarlas a cada una.
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim fecha1,fecha2
fecha1=#07/25/2007#
fecha2=#12/25/2007#
response.write("Primer fecha:" & fecha1 & "<br>")
response.write("Segunda fecha:" & fecha2 & "<br>")
dim dia
dia=day(fecha1)
response.write("Da de la primer fecha:" & dia & "<br>")
dim mes
mes=month(fecha1)
response.write("Mes de la primer fecha:" & mes & "<br>")
dim anio
anio=year(fecha1)
response.write("Ao de la primer fecha:" & anio & "<br>")
dim diasemana
diasemana=weekday(fecha1)
response.write("Da de la semana de la primer fecha:" & diasemana &
"<br>")
response.write("Cantidad de das de diferencia entre la primer fecha "
& _
" y la segunda fecha:" & datediff("d",fecha1,fecha2) &"<br>")
dim fechaactual
fechaactual=date()
response.write("Fecha actual:" & fechaactual & "<br>")
dim horaactual
horaactual=time()
response.write("Hora completa actual:" & horaactual & "<br>")
dim hora
hora=hour(horaactual)
response.write("Hora actual:" & hora & "<br>")
dim minuto
minuto=minute(horaactual)
response.write("Minuto actual:" & minuto & "<br>")
dim segundo
segundo=second(horaactual)
response.write("Segundo actual:" & segundo & "<br>")
dim diamas7
diamas7=dateadd("d",7,fechaactual)
response.write("Fecha actual ms 7 das:" & diamas7 & "<br>")
%>
</body>
</html>
1. day Retorna el nmero de da de una variable de tipo fecha.
2. month Retorna el mes de una fecha.
3. year Retorna el ao de una fecha.
4. weekday Retorna el da de la semana de una variable de tipo fecha. 1 si es
domingo, 2 si es lunes y as sucesivamente.
5. datediff Retorna la diferencia entre dos fechas que le pasamos como parmetro
(el primer parmetro es un string que indicamos en que formato queremos esa
diferencia: "d" das, "m" meses, "yyyy" aos)
6. date Retorna la fecha actual del servidor.
7. time Retorna la hora actual.
8. hour Retorna la parte de la hora.
9. minute Retorna la parte del minuto de una variable de tipo hora.
10. second Retorna la parte del segundo de una variable de tipo hora.
11. dateadd Retorna una fecha a partir de otra que le podemos sumar o restar una
determinada cantidad de das, meses o aos (nuevamente el primer parmetro es
un string que indica el formato que queremos esa suma: "d" das, "m" meses,
"yyyy" aos)
Si se quiere sumar variables de tipo hora u obtener la diferencia entre dos variables se
pueden utilizar las funciones dateadd y datediff (indicando en el primer parmetro
alguno de los tres siguientes string "h" horas, "n" minutos o "s" segundos)
50 - Funciones para administrar fechas

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar un algoritmo que haga uso de las funciones orientadas a fechas.

pagina1.asp
pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim f echa1,f echa2
f echa1=#07/25/2007#
f echa2=#12/25/2007#
response.write("Primer f echa:" & f echa1 & "<br>")
response.write("Segunda f echa:" & f echa2 & "<br>")
dim dia
dia=day(f echa1)
response.write("Da de la primer f echa:" & dia & "<br>")



50 - Funciones para administrar fechas

Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar una pgina que muestre la cantidad de das que un sitio a estado activo (se
sabe que el sitio se inagur el 13 de marzo de 2005

Ver solucin
Problema:
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim fechainicio
fechainicio=#03/13/2005#
dim fechaactual
fechaactual=date()
dim totaldias
totaldias=datediff("d",fechainicio,fechaactual)
response.write("Este sitio est activo desde hace :" & totaldias & "
das.")
%>
</body>
</html>
Confeccionar una pgina que muestre la cantidad de das que un sitio a estado activo (se
sabe que el sitio se inagur el 13 de marzo de 2005



pagina1.asp

pagina1.asp
51 - Funciones matemticas
VBScript dispone de un conjunto de funciones matemticas que las veremos en
funcionamiento la siguiente pgina (pagina1.asp)
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim valor1
valor1=-5
response.write("El valor absoluto de -5 es " & abs(valor1) & "<br>")
valor1=2.7
response.write("La parte entera de 2.7 es " & int(valor1) &
quot;<br>")
valor1=2.51
response.write("El redondeado de 2.51 es " & round(valor1) &
"<br>")
valor1=2.50
response.write("El redondeado de 2.50 es " & round(valor1) & "<br>")
valor1=3
response.write("El resultado de la funcin sgn de 3 es " &sgn(valor1)
& "<br>")
valor1=-3
response.write("El resultado de la funcin sgn de -3 es " &sgn(valor1)
& "<br>")
valor1=0
response.write("El resultado de la funcin sgn de 0 es " &sgn(valor1)
& "<br>")
valor1=25
response.write("La raiz cuadrada de 25 es " & sqr(valor1) & "<br>")
response.write("El valor aleatorio devuelto por rnd es " & rnd() &
"<br>")
randomize()
response.write("El valor aleatorio devuelto por rnd, previo llamar " &
_
"randomize es " & rnd() & "<br>")
valor1=10
response.write("El valor hexadecimal de 10 es " & hex(valor1) &
"<br>")
valor1=9
response.write("El valor octal de 9 es " & oct(valor1) & "<br>")
response.write("El seno de 0 es " & sin(0) & "<br>")
response.write("El cos de 0 es " & cos(0) & "<br>")
response.write("La tangente de 0 es " & tan(0) & "<br>")
response.write("El arco tangente de 0 es " & atn(0) & "<br>")
response.write("El logaritmo natural de 2 es " & log(2) & "<br>")
response.write("El resultado de exp de 2 es " & exp(2) & "<br>")
%>
</body>
</html>
1. abs Retorna el valor absoluto de una variable o valor numrico.
2. int Retorna la parte entera de una variable numrica (no redondea)
3. round Retorna un valor entero redondeando (si el valor el mayor a 0.50
redondea hacia arriba, en caso contrario redondea hacia abajo.
4. sgn Retorna 1,0 o -1 (1 si el valor es positivo, -1 si es negativo, 0 en caso que la
variable almacene el valor cero.
5. sqr Retorna la raiz cuadrada de un valor numrico.
6. rnd Retorna un valor aleatorio comprendido entre 0 y 1 (sin incluir estos). Si
llamamos previamente al procedimiento randomize la semilla de valores
aleatorios ser distinta.
7. hex Retorna el valor hexadecimal del valor que le enviamos.
8. oct Retorna el valor octal del valor que le enviamos.
9. sin Retorna el seno de un valor numrico que le enviamos (debemos indicar el
valor en radianes)
10. cos Retorna el coseno.
11. tan Retorna la tangente.
12. atn Retorna el arco tangente.
13. log Retorna el logaritmo natural de un nmero.
14. exp Retorna el resultado de elevar "e" al valor que le pasamos como parmetro.

51 - Funciones matemticas



Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los
cuadros de texto y se ejecuta el primero de la lista mostrando en una pgina el
resultado.)

Confeccionar una pgina que utilice las funciones matemticas que dispone el
VBScript.

pagina1.asp
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim valor1
valor1=-5
response.write("El valor absoluto de -5 es " & abs(valor1) & "<br>")
valor1=2.7
response.write("La parte entera de 2.7 es " & int(valor1) & "<br>")
valor1=2.51
response.write("El redondeado de 2.51 es " & round(valor1) & "<br>")
valor1=2.50





51 - Funciones matemticas
Simulador (Cuando presiona el botn "ejecutar el programa" se graban todos los cuadros de
texto y se ejecuta el primero de la lista mostrando en una pgina el resultado)
Problema:
Confeccionar un formulario que solicite el ingreso de un valor entre 1 y 10. Luego
generar un valor aleatorio comprendido entre 1 y 10. Mostrar un mensaje si el operador
adivin el valor generado.

Ver solucin

pagina1.html
Problema:
<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingrese un valor comprendido entre 1 y 10:
<input type="text" name="valor"><br>
<input type="submit" value="Ok"><br>
</form>
</body>
</html>
<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
randomize()
dim aleatorio
aleatorio=1 + int(rnd()*10)
dim v
v=cint(request.form("valor"))
response.write("El nmero ingresado es " & v & "<br>")
if v=aleatorio then
response.write("Usted adivin el nmero generado aleatoriamente")
else
response.write("El nmero generado es " & aleatorio)
end if
%>
</body>
</html>
Confeccionar un formulario que solicite el ingreso de un valor entre 1 y 10. Luego
generar un valor aleatorio comprendido entre 1 y 10. Mostrar un mensaje si el operador
adivin el valor generado.



pagina1.html