Académique Documents
Professionnel Documents
Culture Documents
La programacin en ASP (Active Server Pages o Paginas Activas en Servidor) se utiliza para hacer
ms dinmico la relacin entre el cliente y el servidor. Hay que saber que el cdigo ASP que
escribimos primero se ejecuta en el servidor y luego se envan sus resultados en HTML al usuario
que los pidi. Es una herramienta de mucho poder si se la explota al mximo. Sirve para
interactuar con el navegante y hasta poder sorprenderlo.
Las pginas ASP se las guarda con la extencion .asp . Pueden o no, contener fragmentos de
cdigo HTML pero siempre se guardan como .asp . El lenguaje que se utiliza por defecto
es VBScript (Visual Basic Script) pero se puede utilizar tambien JScript (Ojo, hay que declararlo).
El cdigo ASP siempre debe escribirse dentro de los TAGS <% %>, lo cual empiezan y terminan el
cdigo.
La tecnologa ASP fue desarrollada por Microsoft, y por lo tanto solo se puede ejecutar en
servidores con Windows. Mejor dicho hay que usarlo con el IIS (Internet Information Server) o el
PWS (Personal Web Server). El IIS est en el Windows 2000 o NT, en cambio, para los que tiene
Windows 95/98 deberan limitarse a usar el PWS. Estoy aclarando esto, porque si tratan de
programar en ASP sin un servidor que lo soporte, el ASP no funcionar, ya que no sera procesado
por nadie. Entonces para empezar la programacin deben instalar un servidor.
El PWS se puede bajar de la web de Microsoft gratuitamente o tambien lo encuentran en algunas
versiones del CD de Windows 98 en el directorio /ADD-ONS/PWS
Cualquier duda que tengan sobre la instalacion del Personal Web Server, dirijanse a la
seccin Contactanos y completen el formulario pidiendo ayuda en la instalacion del PWS. Les
enviare un archivo que explica detalladamente como usar el PWS.
Instalacion y uso de Personal Web Server bajo Windows 95 / 98 - [Por CoRSA]
A continuacion les explicar algunas cosas muy importantes al momento de instalar el PWS (Personal Web
Server) bajo un Windows 95.
Para usar el Personal Web Server en Windows 95, deben hacerle una actualizacin al Windows. Esta
actualizacion sali con el Service Pack 1. El nombre de la actualizacion a la cual me refiero es Windows
Socket 2.
Pueden bajar el WinSock2 directamente presionando este link y luego instalarlo en su maquina con Windows
95. (NO HACERLO CON WINDOWS 98).
Luego de hacerlo, resolveran problemas con el protocolo TCP/IP existentes en Windows 95, y nos permitir
usar el PWS correctamente. El download es de 986 kb. Para leer mas sobre el WinSock2 pueden entrar al
sitio de Microsoft por este enlace.
Para los que no tiene el PWS (Personal Web Server), pueden bajarlo presionando este link. [22 Mb
aproximadamente...]
Descarga de archivos...
Estas son las pantallas que deberian haber visto durante todo el proceso de instalacion.
Option Explicit es una sentencia optativa pero recomendada que se ingresa al principio del
cdigo ASP de cada pagina. Las variables en ASP no necesitan ser declaradas para usarlas,
pero es una buena costumbre hacerlo. Option Explicit sirve para que las variables deban ser
declaradas si o si.
Veamos como se usa. Es muy facil y solo sirve para obligar al programador (uds.) a declarar
las variables.
<%
Option Explicit
...
%>
Como ven es algo corto y simple. Sirve para acostumbrarse bien. Utilzenlo, que para algo
existe.
Coment tu cdigo!
Muchas veces nos sentamos a escribir un script, en el cual ponemos toda nuestra atencin y sabemos
perfectamente que hace cada linea del cdigo. Pero eso lo tenemos muy claro en el momento. Que les
quiero decir con esto? Que si otro da debemos retocar el cdigo para que se adapte a nuestros nuevos
objetivos, seguramente no recordaremos que significa cada variable, ni cmo trabaja nuestro programa.
Otra cosa que se puede decir es que si pasamos nuestro script a otra persona, tendr que perder
valioso tiempo en entender como trabaja el cdigo escrito
Toda esta introduccin es para aconsejarles que siempre comentemos nuestro cdigo.
Es simple, muy fcil y no perderemos tiempo al momento de entender los cdigos viejos o que no
conocemos.
Para comentar se utiliza el apstrofe, ( ' ) en VBScript y la doble ( // ) en JavaScript. En HTML es asi: <!-comentario -->. El servidor que lee nuestro script al encontrar un "'" deja de leer sabiendo que es un
comentario que debe saltear.
Se puede comentar en cualquier lado. Arriba de la linea o al final. Comentemos algunas lineas.
<%
dim contar 'Definimos una variable.
'Hacemos un bucle en el cual la variable se incrementar hasta 10.
FOR contar = 1 to 10
1 2 3 4 5 6 7 8 9 10
Pero notemos que un cdigo comentado hace ms fcil la lectura de l.
Comenten su cdigo!! y ganarn tiempo y evitarn confusiones.
Recuerden tambien declarar el lenguaje que utilizarn para sus scripts al principio de todo.
<% @ Language=VBScript % >
<% @ Language=JScript %>
En ASP como en casi todos los idiomas de programacion existen las variables. En ellas se
pueden almacenar datos que pueden modificarse durante el transcurso del programa. Para
declararlas usamos la instruccion Dim. No es obligatorio declarar una variable, pero es
conveniente. Recuerden que si usamos Option Explicit si es obligatorio la declaracin de la
variable.
<%
'con el apostrofe se escriben comentarios que no seran captados por el servidor.
'ahora explicar el cdigo.
'declaramos la variable nombre.
Dim nombre
Dim n1, n2
%>
Asi de simple es la declaracin de una variable. Con la sentencia Dim. Ahora asignaremos valores a
esas variables y las modificaremos. Veamos como se hace.
<%
Dim nombre
Dim n1, n2
'ahora le asignamos valores a cada una de ellas.
nombre="CoRSA"
n1=10
'n1 vale 10.
n2=4
'n2 vale 4.
'distingan entre la variable nombre, la cual tiene su valor entre comillas, porque es.
'una cadena de caracteres, y n1 y n2, las cuales valen 10 y 4 respectivamente.
'Ahora modificamos n1.
n1 = n1 + n2
'n1 ahora vale 14. Como es eso? Simple. n1 ahora es igual a n1 + n2 lo que es igual
a n1 = 10 + 4.
n2 = n2 + 1
%>
Como ven es muy facil declarar y modificar variables. Ahora debemos aprender a utilizarlas
para cosas tiles.
Primero que nada podemos imprimirlas por el explorador. Para eso necesitamos utilizar el
Objeto Response.
En los siguientes capitulo se explicar precisamente este mtodo.
Mi primer pgina ASP
Explicaremos a continuacin una pgina ASP muy simple para que empiecen a familiarizarse con
la sintaxis. La llamaremos prueba.asp. Describiremos cada una de sus lineas indicando que hace y
cmo se usa.
<%
Option Explicit
dim nombre
'le damos un valor. ste est entre "" porque es una cadena de texto.
nombre="CoRSA"
'Declaramos otra variable, de nombre num1.
dim num1
num1= 10
Response.Write nombre
'Se pueden usar Tags de HTML en medio de ASP. Siempre entre "".
Response.Write "<BR>"
Response.Write num1
%>
haras esto?
haras esto?
haras esto?
haras esto?
En ASP
<%var = 1
Do While var < 7
Response.Write "<FONT SIZE=
"&var&">Cmo haras esto?<BR>"
var = var + 1
Loop%>
haras esto?
haras esto?
Tal vez esto no te sorprende, pero ASP es muy potente y est es lo escencial.
Esto fue solo un ejemplo, que tal vez no se entienda. Solo intento mostrar la diferencia que existe.
Para entenderlo y escribirlo, puedes seguir leyendo otros articulos de esta misma web, donde se explicar.
Adems el cdigo en ASP es ms variado, ms dinmico y menos aburrido como lo podes observar.
Tratamiento de Fechas
En ASP existen las funciones Date() y Time() las cuales piden la fecha y la hora del servidor donde son
ejecutadas. Existen varios maneras de manejarlas a nuestro gusto para obtener exactamente lo que
necesitamos. Podemos extraer el dia, el mes o el ao. O podemos jugar con la funcin Now() para calcular
cuanto tardo un usuario en presionar un enlace. Como veran no slo se utilizan para imprimir el dia y la hora.
Veamos:
<%
Dim tiempo
tiempo = Time()
Response.Write ("Esta es la hora que tiene mi servidor: " & tiempo)
fecha = Date()
Response.Write ("<BR> Hoy es el dia " & Day(fecha) & " del mes " & Month(fecha) &
" del ao " & Year(fecha))
%>
Veamos esto en accion!!!!!!!!
Hagan pruebas con las diferentes sentencias para entenderlas mejor y apareceran nuevas ideas
para su uso.
Objeto Response
El objeto Response se utiliza praa enviar informacin. Puede ser para mandar a imprimir texto o variables al
explorador. Primero veamos la impresin de texto simple con el mtodoResponse.Write
Si ven en otros ejemplos ven una sintaxis similar a esta:
<%= "algo aqui" %> es lo mismo que escribir <% Response.Write "algo aqui"%>.
O sea que el = reemplaza al Response.Write
<%
'con el apostrofe se escriben comentarios que no seran captados por el servidor.
'ahora explicar el cdigo.
dim numero
numero = 12
'los parentesis no son necesarios aqui, solo hacen mas comprensible el cdigo.
'el signo & es necesario para ingresar el TAG de HTML. Ver que los tags siempre van entre "".
'la modificamos y la imprimimos nuevamente.
numero = numero + 3
Response.Write numero
%>
<%
Response.Redirect "http://www.soloasp.com.ar/index.asp"
%>
Hay mas mtodos para aplicar al objeto Response, por ejemplo Response.Cookies que lo veremos en el
captulo sobre Cookies
Tambien existen Response.Buffer, Response.Flush, Response.End, que los explicare en el
captulo Usando el buffer de la pgina
Objeto Request
Mtodo Request.Form: se utiliza para pedirle (Request) a un formulario (Form), la informacin que
fue ingresada en los diferentes campos. Luego los datos pueden ser almacenados en variables
para trabajar ms fcilmente con ellos.
Veamos un simple formulario. Puro HTML. Pero fijen la atencion en el METHOD y ACTION del
FORM:
Archivo: prueba.asp
<FORM METHOD="Post" ACTION="prueba2.asp">
Archivo: prueba2.asp
<%
Dim nom
'declaramos nom y guardamos la info asi.
nom = Request.Form("nombre")
Response.Write nom
%>
Como ven no es algo complicado pasar datos por un formulario y recogerlos en otra pgina. Mas adelante
podremos saber como guardar ese dato ingresado en una BD (Base de Datos) y almanear la informacin.
Como veras Request pide informacin enviada anteriormente.
Mtodo Request.ServerVariables: se utiliza para pedirle a nuestro servidor algunas variables. Para que
entiendan lo que quiero decir, podemos pedirle al servidor la direccion IP de un usuario, el nombre del
dominio, la contrasea del cliente y muchas cosas mas.
La forma de utilizarlo es como veniamos haciendolo antes. De la siguiente manera:
Quin no ha oido hablar sobre las cookies? Sabes que tienes un directorio en tu rigido que
tiene todas las cookies que te crean las pginas? Bueno, supongo que escuchaste de ellas...
pero tal vez no sabes qu son, ni usarlas. No te preocupes, para eso estas aqu.
Primero les dire que son las Cookies. Una cookie es un archivo txt que se graba usualmente
en el directorio \Windows\Cookies/. Si quieren hechar un vistazo, haganlo ahora mismo, y
veras que tienen unos archivos en ese directorio. Pero las cookies (archivos en tu rgido),
guardan informacin, que el servidor pide al usuario al cargar determinada pgina. La
informacin que guardan es variada. Cada sitio puede crear cookies con informacion
diferente. Por ejemplo pueden guardar tu nombre, o las veces que ingresaste a la pgina.
Veamos como hacer una cookie, luego como pedirla al usuario y por ltimo imprimirla.
Veamos un ejemplo simple que sirva para identificar a cada usuario.
<%
'Primero que nada nos fijamos si ya lleno el formulario.
Response.Cookies("Nombre").Expires = "1/1/2000"
End If
%>
'Empieza la pgina.
<HTML>
<BODY>
<%
<%
dim mes, fecha
fecha = Date()
mes = Month(fecha)
IF mes = 5 Then
Response.Write "Estamos en el mes de Mayo"
ElseIf mes < 5 Then
8
El mes de Mayo ya paso
Los Bucles Do While... Loop funcionan de manera similar aunque hay diferencias. Do While significa hacer
mientras... o sea que mientras se este cumpliendo una condicin continuar con el bucle. Cuando deje de
cumplirse, saltar el bucle.
Un ejemplo.
<%
conta = 1
'Ahora... mientras que conta sea menor que 6... hacer.
Loop
%>
Me llamo Corsa
Me llamo Corsa
Me llamo Corsa
Me llamo Corsa
Bucle For... Next - [Por CoRSA]
Otra manera de crear un bucle (repeticin), es con la sentencia For... Next. Con esto podemos
crear un bucle repitiendo varias operaciones. Para hacer esto, se elige una variable que actur
como contador de las vueltas del bucle. Cuando alcanze un valor determinado, finalizar el bucle.
Primero se iguala la variable que cuenta las vueltas al nmero que deseamos comenzar (For i=0).
Por defecto, la variable que cuenta las vueltas del bucle se incrementa en 1, pero se puede asiganr
otro valor de incremento. Este valor se pone despues de la palabra Step.
Escrib un ejemplo de bucle For... Next, donde me calcula el cuadrado de la variable que est
contando las vueltas. Es as:
<%
'Definimos la variable contador.
dim cuen
'Le decimos al bucle que la variable cuen empieza en 0, y que debe finalizar el bucle cuando
sea igual a 10.
'Con Step indicamos que se debe sumar solo 1 por ciclo.
if (cuen=10) then
response.write "Ha terminado el bucle..."
end if
Next
%>
A continuacin se muestra el bucle trabajando. Notar que el Step es de 1... se puede elegir
cualquier incremento.
0 es el cuadrado de 0
1 es el cuadrado de 1
4 es el cuadrado de 2
9 es el cuadrado de 3
16 es el cuadrado de 4
25 es el cuadrado de 5
36 es el cuadrado de 6
49 es el cuadrado de 7
64 es el cuadrado de 8
81 es el cuadrado de 9
100 es el cuadrado de 10
Ha terminado el bucle...
Include - [Por CoRSA]
Con Include podemos llamar a otro archivo e insertarlo en el cdigo donde estamos trabajando. Esto es muy
util cuando tenemos que repetir en todas las pginas lo mismo. Qu quiero decir? Simple. Uds crean y
disean, por ejemplo, un menu el cual debe aparecer en todas las pginas de su sitio. Lo crean en un archivo
que se llama menu.asp, y luego desde cada pgina llaman a ese archivo e insertan su contenido en donde lo
necesitamos. Mostremos un ejemplo para ir entendiendo como funciona, y luego seguimos con la explicacin.
Creamos el archivo menu.asp con el menu. En nuestro ejemplo un "menu" horizontal para el comienzo de
una pgina cualquiera.
Archivo: general.asp
<%
'Abrimos un Sub.
Sub menu
%>
<TD>Home Page</TD>
<TD>Ejemplos</TD>
<TD>Historia>/TD>
<TD>Contactate</TD>
</TR>
</TABLE>
<%
'Cerramos el Sub.
End Sub
%>
Archivo: homepage.asp
<!-- #include file="general.asp" -->
<%
'Llamamos al Sub.
Call Menu
%>
Resto de la pgina general.asp
Archivo: ejemplos.asp
<!-- #include file="general.asp" -->
<%
'Llamamos al Sub.
Call Menu
%>
Resto de la pgina de ejemplos.
Objeto Session
El objeto Session se utiliza en ASP para abrir una sesion, que tiene por defecto un tiempo de
20 minutos. Durante esta sesin un usuario , por ejemplo, puede estar logueado en un sitio y
permanecer hasta que pase el tiempo de la sesin. Y si no estubo activo durante X minutos,
deber loguearse nuevamente.
Pero este no es su unico uso. Por supuesto que se lo puede utilizar para muchas cosas. Yo en
mi sitio, lo uso para que un usuario no pueda votar en la encuesta mas de 1 vez por hora.
Cmo hago esto? Simple. Cuando detecto que un usuario realiza la votacin, creo uns
sesin que dura 1 hora, y siempre que intente votar dentro de ese lapso de tiempo, se lo
impedir chequeando la variable de sesin. Si esta en valor True significa que no han
trancurrido an los 60 minutos.
Espero no haberlos maredo. Igual recueden que cualquier duda, me la pueden enviar por mail
o llenando un formulario en la seccin Contactanos.
Bueno, veamos un pequeo ejemplo para ver su sintaxis y funcionamiento.
<%
Else
Response.Write "Hola... la variable de Session no exista, pero se acaba de
crear"
'Aqui creo la session. Asi la proxima vez se cumple el IF y se muestra el texto anterior.
'Esta es la sintxis para crear una Session.
Session("yaestube") = True
End If
%>
Para cerrarle una sesin al usuario se utiliza el metodo Abandon. La sitxis es: <%
Session.Abandon %>
Con esto se finaliza la sesin aunque quede tiempo restante.
Para asignar el tiempo de duracin de una sesion usamos esa linea: <% Session.TimeOut =
8 %>
Es obvio que el tiempo para cerrar la sesion en nuestro ejemplo es de 8 minutos.
Objeto Server
El objeto server es el que utilizamos cuando hacemos la Conexion a una BD o cuando creamos un
RecordSet. Pero adems, tiene otros mtodos y propiedades que podemos usar al programar
nuestra pgina ASP. A continuacin veremos algunos de esos mtodos y los describiremos para
que conoscan como funcionan y que accin tienen.
Mtodo CreateObject("Id"): Sirve para crear objetos en nuestro servidor. Objectos que sirven para
mandar mails ("CDONS.NewMail"), para conectar a base de datos ("ADODB.Connection") y para
obtener registros de las BD ("ADODB.RecordSet"). Se vera su uso en capitulos posteriore. Los
Mtodo Execute("URL"): Solo con el IIS 5.0 se puede utilizar este mtodo, por el cual podriamos
correr otra pgina desde la que estamos. La pgina elegida se ejecuta dentro de la nuestra, y al
finalizar la segunda pgina, se contina con el resto de la nuestra. Usamos <%
Server.Execute("http://www.algo.com") %>
Mtodo MapPath("URL"): Devuelve la ruta donde nos encontramos. Usamos <%
Server.MapPath("archivo.asp") %>
Una propiedad de el Objeto Server es ScriptTimeout. Esta propiedad es la que indica el tiempo
que debe trancurrir para que se deje de cargar un script. El tiempo por defecto es de 90. Nosotros
lo podemos modificar si tenemos que cargar un script demasiado largo que necesita de mas
tiempo.
Para usarlo es simple: <% Server.ScriptTimeOut = 90 %>
Usando el Buffer de la pgina
Las pginas ASP se procesan en el servidor web, quien devuelve al cliente puro cdigo HTML. Este
procesamiento se contruye en el Buffer. Si estamos usando el IIS 5 (Internet Information Server 5) que viene
en Windows 2000, el mtodo Buffer del objeto Response viene por defecto en valor True. Quiero decir que
viene Response.Buffer = True. En el IIS 4 o PWS esta en False. Pero la podemos poner a True cuando
queramos.
Se estarn preguntando que es lo que cambia... Bueno, si el Buffer esta en True, el servidor procesar toda la
pagina ASP, crear la pgina para el cliente en HTML y cuando finalize todo ese trabajo, enviar todo junto.
Con el Buffer en False, el servidor va enviando la informacin que ya proceso, mientras continua trabajando
con el resto.
Seguramente notaron que en algunos sitios, nos baja toda la informacin de un solo golpe (texto, imagenes,
sonido), en cambio lo ms comun hoy en da es que baje a medida que se carga. Esto se puede manejar a
nuestro gusto.
Veamos a continuacin como podemos trabajar con el Buffer y como se usa correctamente:
Propiedad Buffer: ya lo he explicado en la introduccin. Puede estar True o False. Si est en True el servidor
procesa todo y luego lo envia. Si est en False va enviando a medida que procesa.
Mtodo Flush: Se puede utilizar solamente cuando el Buffer est en True. Para que sirve? Dijimos que
cuando el Buffer est en true, toda la informacin se envia cuando es procesada completamente. Con
Response.Flush pediremos todo lo que est procesado hasta ese momento.
Es til para usarlo despus de fragentos "pesados" (imagenes, menues), porque de esta manera ser enviado
el menu y luego seguir con el resto de la pgina.
<%
Response.Buffer = True
....
Response.Flush
'Continuamos con la pgina.
...
%>
Mtodo Clear: Se utiliza para borrar todo el Buffer. Su sintaxis es simple <% Response.Clear %>
Mtodo End: Se utiliza para terminar la ejecucin de un Script. Su uso ms comun es para detener cualquier
pgina si detectamos que el usuario no est ms. Eso lo hacemos de este modo:
<%
...
Dim Conex
Set Conex = Server.CreateObject ("ADODB.Connection")
'y ya estamos conectados a nuestra base de datos.
<%
Dim Conex
'Creamos el objeto de conexion ahora...
<%
Dim Conex
'Creamos el objeto de conexion ahora...
<%
Dim Conex
'Creamos el objeto de conexion ahora...
<%
Dim Conex
'Creamos el objeto de conexion ahora...
Importante: En los 3 primeros ejemplos, referidos todos a conexiones con bases de datos Access, use un
path fijo. Lo puse asi, para el mejor entendimiento, pero generalmente se hace uso de la
funcionServer.MapPath() la cual devuelve el path donde ejecutamos el script
Les intentar explicar el uso de esa funcin mediante un ejemplo que no tiene que ver con conexion a base de
datos, pero intentar que se relacione.
<%
Dim path
'guardamos en la variable path lo que devuelve la funcin
path = Server.MapPath("./")
Response.Write path
%>
C:\InetPub\WWWRoot\directorio_actual
Como ven la variable path contiene el directorio donde se ejecuta el script.
Entonces esto se podra usar para indicar el path a la base de datos (que en los ejemplo anteriores lo
escribiamos a mano)
Si quedan dudas sobre esto, ya que es un tema que comunmente trae confusiones, pueden preguntar en
el Foro de discusion
Mostrar tablas de Access
Obviamente antes de mostrar una informacin en una tabla debemos conectarnos a ella. En el
artculo anterior, como conectarnos a una BD, vimos como se haca la conexin. Ahora, despus
de conectarnos a la BD, abriremos una tabla de la BD y mostraremos su informacin por la
pantalla.
Veamos como mostrar nuestros datos!...
<%
Dim oConn, RS
'conectamos a la tabla.
'entre " " va el nombre de la tabla, y luego de la "," se indica la BD que contiene esa tabla.
'El nmero que le sigue, el "1", es la forma de abrir la tabla.
RS.MoveNext
Loop
'primero cerramos los objetos y luego los limpiamos.
RS.Close
oConn.Close
Set RS = nothing
Set oConn = nothing
%>
Nota: El asterisco (*) es un comodin, que selecciona todas las columnas dentro de los lmites que
pongamos.
'Esta sentencia seleccionaria todos, absolutamente todos los registros dentro de la tabla datos.
'Modificamos solo los registros que tenian 16 aos. Ahora todos los usuario de 16 aos se
llaman "Mario".
'ahora abrimos nuetro RecordSet con los parmetros del sql que pusimos antes.
RS.Close
oConn.Close
Set RS = Nothing
Set oConn = Nothing
%>
Procedimientos:
Los procedimientos contienen una serie de comandos o instrucciones en VBScript, encerrados entre las
instrucciones Sub y End Sub.
Estas instrucciones dentro del procediemintos, realizan acciones, pero a (diferencia de las
funciones) no devuelven ningun valor.
Los procedimientos pueden aceptar argumentos. Los argumentos son variables que se pueden enviar al
procedimiento y utilizarlas para realizar las acciones.
Veamos un ejemplo corto de procedimientos sin pasar argumentos
<%
'Iniciamos un procedimiento...
Sub algo()
Response.Write "Hola en este momentos son las: "& Time()&"<BR>"
End Sub
%>
<%
algo
algo
algo
%>
El codigo este ejecutado produciria...
<%
'Comienzo un procedimiento, que tiene un argumento
'a lo que se meta en el argumento, lo pongo en letras mayusculas con la funcion UCase()
'y lo imprimo en negrita...
Sub negrita_mayuscula(argumento1)
argumento1 = UCase(argumento1)
Response.Write "<B>"&argumento1&"</B>"
End Sub
%>
<%
'declaro una variable cualquiera...
nombre = "Corsa"
negrita_mayuscula(nombre)
%>
CORSA
Notar que la variable nombre era una cadena de caracteres asi: "Corsa", sin negrita y con una sola
mayscula. Luego de pasarla por el procedimiento, salio pintada de negrita y toda en letras mayusculas.
El funcionamiento de los argumentos es mas o menos asi... Uds notan en el ejemplo que la variable nombre
pasa al procedimiento como argumento... ya que va entre parntesis. Esa variable toma el nombre (en
nuestro ejemplo) de argumento1
A esta nueva variable argumento1 que contiene la informacion que tenia nombre en ese momento, se le
hacen las acciones.
Algo muy importante: En los procedimientos no estamos modificando las variables que pasan como
argumentos reales en ningun momento (en nuestro ejemplo la variable a la cual llamo real es nombre). Si
hacemos un Response.Write de la variable nombre veremos que se imprime tal cual como fue definida.
Procedimientos y Funciones en VBScript - [Por CoRSA]
Ahora veremos como usar funciones y sus diferencias con los procedimientos.
Las funciones se escriben entre Function y End Function. Al igual que los procedimientos, aceptan
argumentos y tambien se encierran entre parntesis al declarar la funcin.
La importante diferencia entre los procedimientos y las funciones, es que estas ltimas, devuelven un valor.
Veremos a continuacion en ejemplo mas simple de funcion y veremos a lo que me refiero.
<%
Function may(argumento1)
argumento1 = UCase(argumento1)
'la siguiente linea produce la devolucion del valor...
may = argumento1
End Function
nombre = "lala"
response.Write may(nombre)
%>
El cdigo ejecutado produce...
LALA
Bueno, como vern hay algunas diferencias entre las funciones y los procedimientos, aunque pueden parecer
similares.
Pero noten que en la linea may = argumento1 se est diciendo que la funcion devolver el contenido de
argumento1. Luego, fuera de la funcin se llama a la funcion por su nombre pasando el argumento
correspondiente...
Como las funciones devuelven valores, uno puede guardarlos, en cambio los procedimientos no devuelven
nada. Recordar que para mostrar el procedimento que se hacan, se pona un response.Write dentro del Sub
Hay mucho por hablar sobre las funciones... por ejemplo son usadas generalmente para agrupar mini (o no
tan mini) procesos que deben afectar a ciertas variables. Entonces se usan para organizar el cdigo y no
tener problemas a la hora de entender o depurar errores...
Se podran decir mas cosas... pero para una introduccion creo que est bien.
Tipos de datos en VBScript.
En VBScript existe un slo tipo de datos llamado habitualmente Variant. Que quiere decir esto? Simplemente
que cuando creamos una variable no estamos indicando que tipo de datos va a contener (cadenas de texto,
numeros, fechas, etc).Pero lo que si existen son Subtipos, y es especialmente a lo que se dedica este texto.
Si a una variable le queremos asignar un texto, lo indicamos entre comillas " ", en cambio si queremos llenarla
con un numero, lo hacemos sin comillas. En el momento de asignacion del valor, VBScript los trata y los
"convierte" al subtipo adecuado. En el cuadro de abajo se describen todos los subtipos de variables que hay.
El cuadro que est a continuacin fue extrado del documento "Referencia del lenguaje VBScript". En l, se
muestran todos los tipos de Subtipos
Subtipo
Descrip
Empty
La Varian
Null
La Varian
Boolean
Contiene
Byte
Contiene
Integer
Contiene
Currency
De -922.3
Long
Contiene
Single
Contiene
Double
Contiene
Date (Time)
Contiene
String
Contiene
Object
Contiene
Error
Contiene
<%
...
Case 2:
'Sentencias
...
Case 3:
'Sentencias
...
Case else:
'Sentencias
...
End Select
%>
Ahora que supuestamente ya sabemos como escribir un condificional Select Case, veremos un ejemplo para
que se den una idea de como se aplica. Aqui lo tienen.
<%
dim nombre
nombre = "CoRSA"
'Usamos Select Case para avaluar diferentes casos
supuestamente nos resulve el problema automaticamente. Y de aqui vienen todos nuestros problemas con las
fechas, ya que si al Access local (en espaol) le pasamos 20/4/2002 es igual que pasarle4/20/2002.
Esto mismo pasa en el Access que est en ingles, slo que al revez claro...
Cual es el problema de todo esto. Simple. Si trabajamos con fechas en espaol, funcionara simpre bien abajo,
pero NO SIEMPRE bien arriba... pero a veces si! Depende justamente de la fecha. Entonces se hace como
imposible hacer un sistema que trabaje correctamente tanto en espaol como en ingles.
La posible solucion: Usar el formato cannico de fecha expresado como YYYY/MM/DD lo que quiere decir
expresar la fecha como Ao/Mes/Dia. Entonces la fecha 6 de Enero de 2002 se escribe como: 2002/01/06
Access, reconoce correctamente ese formato, asumiendo SIEMPRE que lo primero es el ao, lo segundo el
mes y lo tercero el dia. Y luego, lo transforma a su formato, pero nos quedamos trankilos que es correcta la
fecha!
Atencion! Que pase si pasamos esta fecha: 2002/20/8 ? .... tira error!! y eso por mas malo que paresca es
lo mejor que nos puede pasar. Eso SI sera un error nuestro, y es por eso que est bien recibir error de parte
del Access
Bueno... entonces concordamos que lo mejor es usar la fecha canonica. A continuacin les paso una funcin a
la cual se le pasa como argumento una fecha, y devuelve la fecha en formato cannico. Pero tengan cuidado
con la fecha que le pasan!!! Porque puede que le pasen mal el formato de fecha, y la funcin devolver una
respuesta que no es la que buscamos.
Si con la funcin se hacen lios, no la usen, y pasen siempre las fechas en fomatto YYYY/MM/DD
<%
Function FechaGenerica(fecha)
If IsDate(fecha) = True Then
DIM dteDay, dteMonth, dteYear
dia = Day(fecha)
mes = Month(fecha)
ano = Year(fecha)
FechaGenerica = ano & "/" & Right(Cstr(mes + 100),2) & "/" & Right(Cstr(dia +
100),2)
Else
FechaGenerica = Null
End If
End Function
%>
Una ltima cosa. En sentencias SQL que actualizan bases Access, las fechas se pasan entre # #.
Por ejemplo: INSERT INTO tabla(fecha) VALUE(#"& var_fecha &"#)
Objetos ASP. Resumen
Aqui abajo simplemente les presento los objetos de ASP, con sus propiedades, mtodos y colecciones. Nada
ms. Es como un resumen para tener en cuenta.
Objeto Application
Coleccin
StaticObjects
Coleccin
Contents
Mtodo
Lock
Mtodo
UnLock
Mtodo
Contents.Remove
Mtodo
Contents.RemoveAll()
Objeto Session
Coleccin
StaticObjects
Coleccin
Contents
Propiedad
TimeOut
Propiedad
SessionId
Propiedad
CodePage
Propiedad
LCID
Mtodo
Abandon
Mtodo
Contents.Remove
Mtodo
Contents.RemoveAll()
Objeto Response
Coleccinn
Cookies
Propiedad
Expires
Propiedad
ExpiresAbsolte
Propiedad
Status
Propiedad
Buffer
Propiedad
ContentType
Propiedad
Charset
Propiedad
Pics
Propiedad
CacheControl
Propiedad
IsClientConnected
Mtodo
AddHeader
Mtodo
AppendToLog
Mtodo
Redirect
Mtodo
Flush
Mtodo
End
Mtodo
Clear
Mtodo
Write
Mtodo
BinaryWrite
Objeto Request
Coleccin
Cookies
Coleccin
Form
Coleccin
QueryString
Coleccin
ServerVariables
Coleccin
ClientCertificate
Mtodo
BinaryRead
Propiedad
TotalBytes
Objeto Server
Propiedad
ScriptTimeOut
Mtodo
CreateObject
Mtodo
HTMLEncode
Mtodo
URLEncode
Mtodo
MapPath
Mtodo
GetLastError()
Mtodo
Execute
Mtodo
Transfer
Objeto Error
Propiedad
ASPCode
Propiedad
ASPDescription
Propiedad
Category
Propiedad
Column
Propiedad
Description
Propiedad
File
Propiedad
Line
Propiedad
Number
Propiedad
Source
MiLoadVars.nombre = 'CoRSA';
MiLoadVars.edad = 23;
Por ultimo hacemos el envio de esa informacion llamando al metodo send() de nuestro objeto LoadVars,
con este cdigo:
MiLoadVars.send("flash1.asp","_blank","POST");
Todo esto es cdigo ActionScript y va en el Flash. Que nadie escriba esto en una pagina ASP porque no
tiene nada que ver.
Finalmente les escribo todo el cdigo junto:
<%
nombre = request("nombre")
edad = request("edad")
%>
Y partir de ahi podemos usar las variables. Enviarlas a una base de datos, hacer consultas especificas, o lo
que se nos ocurra! =)
<%
response.write "pais=Argentina"
%>
Para finalizar repaso todo de nuevo haciendo unas aclaraciones.
La pgina ASP tiene que tener una salida por pantalla (response.write) y la salida tiene que ser con el formato
de envio entre pginas.
El formato es asi:
variable1=valor1&variable2=valor2&variableN=valorN
(contiene valor1)
(contiene valor2)
(contiene valorN)
Si les llama la atencion la parte del cdigo que dice _root.recibir.text es porque no tienen nada de
experiencia en flash. Ese cdigo se refiere a un campo de texto (como un INPUT de HTML) que est dentro
del flash. El nombre del campo es "recibir". y lo que hace la funcion es escribir en el campo de texto lo que
contiene la variable pais. =)
Performance del Response.Write. 3 Mtodos y sus diferencias
Lo que haremos a continuacin es comparar la velocidad del Response.Write. Probablemente "todos" o al
menos una gran parte de uds. se sorprendern con esta nota. Tal vez los que conocen ASP desde hace
tiempo sean a los que mas le llame la atencin
Yo mismo he leido en muchos sitios que alternar el ASP con el HTML era algo que "no se debia hacer". El
motivo de esto era una propiedad oculta llamada Response.WriteBlock. Y cada vez que se cerraba el ASP,
internamente habia una llamada a WriteBlock y es por este motivo por el cual no era conveniente abrir y cerrar
ASP.
A partir de la ltima version de ASP (que fue hace tiempo por cierto), las cosas cambiaron con respecto a este
tema en particular. Veremos que lo mejor de todo es abrir y cerrar el ASP para escribir por pantalla.
A continuacin est el codigo para hacer la prueba y que cada uno de uds se convenza de que lo que estoy
diciendo aqui es ahora de este modo. Pueden copiarlo, pegarlo y ejecutarlo y ver como se comporta en su
mquina.
Definitivamente es mas rpido abrir y cerrar ASP que hacer un Response.Write
<%
'MODO 1
tiempoinicio = Timer
For i = 1 To 800000
%>*<%
Next
tiempototal = FormatNumber(Timer - tiempoinicio, 3, True)
Response.Write "<br>MODO 1: " & tiempototal & "<br>"
'MODO 2
tiempoinicio = Timer
For i = 1 To 800000
Response.Write "*"
Next
tiempototal = FormatNumber(Timer - tiempoinicio, 3, True)
Response.Write "<br>MODO 2: " & tiempototal & "<br>"
'MODO 3
tiempoinicio = Timer
With Response
For i = 1 To 800000
.Write "*"
Next
End With
tiempototal = FormatNumber(Timer - tiempoinicio, 3, True)
Response.Write "<br>MODO 3: " & tiempototal & "<br>"
%>
Resultados (en mi mquina):
MODO 1: 0,266
MODO 2: 0,391
MODO 3: 1,875
Como se puede ver en el cdigo...
- MODO 1: es el que abre y cierra ASP para escribir en pantalla (de este modo no se llama a Response.Write)
mirar el cdigo detalladamente y vern que se hace %> * <% para imprimir el caracter.
- MODO 2 usa Response.Write
- MODO 3 usa With para "apuntar al objeto" y luego llama a Write (debera ser el ms rpido de los 3)