Está en la página 1de 71

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 - Se escribe 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 ej emplo 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 - Se escribe 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 extensin 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 primera 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 VBScri t. Este lenguaje utilizaremos en este curso p 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 cue con un nta 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 s 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 (CC++ - 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 kilmetros 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.

Problema:
Confeccione un programa que muestre su nombre y apellido en la pgina empleando el mtodowrite 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>

3 - Un programita ms til que "Hola Mundo"


Tal vez el ejemplo del concepto anterior no sea el ms adecuado para ver las ventajas dela 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 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") completa.

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.

Problema:
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. <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>

Problema:
Obtener la fecha y luego imprimirla dentro de la pgina. <html> <head> <title>problema</title> </head> <body> <% fecha=date() response.write(fecha) %> </body> </html>

4 - Lenguaje VBScript
Si todava no conoce ningn lenguaje de programacin ser mejor que desarrolle el curso deJavaScriptYa, 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 unvalor. 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 &. 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" 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>

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. <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>

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 n la encuentra o 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 primera lnea el comando: option ex plicit 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 asig narle 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 pordefecto la definicin de variables. 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 levemente el nombre de alguna de esas tres variables definidas previamente (ver el mensaje de error). Luego elimine el comandooption 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) response.write("<br>") response.write(nom3) %> </body> </html>

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 Instruccin else Instruccin Instruccin end if

A1 A2 B1 B2

Si la condicin genera un valor verdadero se ejecutan luego todas las instrucciones seguidas al if: Instruccin A1 Instruccin A2 Si genera 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 Instruccin else Instruccin Instruccin end if

A1 A2 B1 B2

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.

pagina1.asp <%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>

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. <%option explicit%> <html> <head> <title>problema</title> </head> <body> <% dim fecha,mes fecha=date() mes=month(fecha) if mes=12 then response.write("Estamos en el mes de Diciembre") end if %> </body> </html>

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 b otn 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 lo datos en el servidor (es importante hacer s 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.

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> <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>

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>

Problema:
Confeccionar un formulario que solicite la medida del lado de un cuadrado. Luego mostrar la superficie del mismo (lado*lado). 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> pagina1.asp <%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>

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 e valor radio1) de esta forma l 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 operacin 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 Ejercicio:

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> <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> 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>

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. 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> pagina1.asp <%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>

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

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> <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> 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>

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 d control select. el 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,"su ma")<>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.

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> <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> 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>

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 casoque 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 parm etro 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.

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> <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> 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>

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. 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> pagina1.asp <%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>

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. 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> <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> 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>

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. 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>

pagina1.asp <%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>

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)

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 ingresado s.

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> 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>

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.

pagina1.html <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>

pagina1.asp <%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>

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 <%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 ms 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.wr ite("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 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> <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>

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>

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. pagina1.html <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>

pagina1.asp <%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>

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 Mostrar los nmeros del 1 al 10 con un ciclo repetitivo for. Luego en la misma pgina mostrar 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>

Resultado por la pgina Web

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) pagina1.html <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>

pagina1.asp <%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>

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

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 .

Ejercicio:
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> <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>

Resultado:

Ejercicio:
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> <form action="pagina1.asp" method="post"> Ingrese un valor entero: <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,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>

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. 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="submit" value="ver"> </form>

</body> </html>

pagina1.asp <%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>

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 segui o al nombre d 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 . 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>.

Ejercicio:
Confeccionar una pgina HTML que contenga 3 hipervnculos a otra pgina que muestre la tabla de m ultiplicar 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>") for f=num to num*10 step num response.write(f & "-") next %> </body> </html>

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. pagina1.html <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>

pagina1.asp <%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>

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 primera 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() Ejercicio: 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> <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>

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>

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>

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". Pagina1.html <html> <head> <title>problema</title> </head> <body> <a href="pagina2.html">Pedido de pizzas.</a><br> <a href="pagina3.asp">Listado de pedidos.</a> </body> </html>

pagina2.html <html> <head> <title>problema</title> </head> <body> <form action="pagina2.asp" method="post"> Ingrese su nombre: <input type="text" name="nombre"><br> Ingrese su direccion: <input type="text" name="direccion"><br> Jamon y Queso <input type="checkbox" name="check1" value="jamon"> <input type="text" name="text1" size="2" value="0"><br> Napolitana <input type="checkbox" name="check2" value="napolitana"> <input type="text" name="text2" size="2" value="0"><br> Muzzarella <input type="checkbox" name="check3" value="muzzarella"> <input type="text" name="text3" size="2" value="0"><br> <input type="submit" value="Pedir"><br> </form> </body> </html> pagina2.asp <%option explicit%> <html> <head> <title>problema</title> </head> <body> <% dim archivo,ref dim nombre,direccion dim check1,check2,check3 dim cant1,cant2,cant3 nombre=request.form("nombre") direccion=request.form("direccion") set archivo = CreateObject("Scripting.FileSystemObject") set ref = archivo.OpenTextFile(server.mappath("pedidos.txt"), 8, True) ref.writeline("_____Pedido____________________________________ _______________") ref.writeline(now()) ref.writeline("") ref.writeline("Nombre: " & nombre) ref.writeline("") ref.writeline("Direccion: " & direccion) ref.writeline("") check1=request.form("check1") cant1=request.form("text1") if check1="jamon" then ref.writeline("Jamon y Queso: " & cant1) end if check2=request.form("check2") cant2=request.form("text2") if check2="napolitana" then ref.writeline("Napolitana: " & cant2) end if check3=request.form("check3") cant3=request.form("text3")

if check3="muzzarella" then ref.writeline("Muzzarella: " & cant3) end if ref.close() %> <h2>El pedido ha sido registrado.</h2> <a href="pagina1.html">Retornar</p> </body> </html> 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("pedidos.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>

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=SS PI;" & _ "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 localho st 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.Op en 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") & _ "'," & re quest.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 fo rmulario de carga. Finalmente cerramos la conexin: conexion.close

Ejercicio: 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 <%option explicit%> <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> 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)" & _ "values ('" & request.form("descripcion") & _ "'," & request.form("precio") & ")") conexion.close %> </body> </html>

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

pagina1.html <%option explicit%> <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>

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 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>

También podría gustarte