Edicin 1.0
Prohibida la reproduccin total o parcial Sin nuestro consentimiento Derechos de copia reservados www.LibrosDigitales.NET
Antecedentes
Peru Adventure Trips, es una empresa dedicada a la venta de paquetes turisticos con cede en la capital. En la actualidad elabora y vende paquetes turisticos en sociedad con empresas amigas (socios de negocio) en las principales ciudades del Pais. Sus principales clientes son extranjeros y una minoria nacionales. Sus contactos en otras ciudades del mundo se encargan de promocionar sus paquetes turisticos. Las operaciones de reserva, informacin y contactos lo realizan de forma convencioinal usando un telefono. El dueo de la empresa, don Guino Castillo, conocer de las ventajas del uso de las tecnologias, decide cambiar a su Gerente General: Edgard Campos y decide contratar a Cesar Suarez, un joven profesional desarrollador de Sites de Comercio Electronico, quien a su vez sugiere contratar a una Profesional en Marketing y Diseo Grafico: Tamara Fernandez. El dueo le manifiesta, que por la recesion economica del Pais, el presupuesto destinado a la promocion de los paquetes turisticos, asi como la cuenta por el uso de telefono se debe reducir. Asi mismo le comenta que las comisiones obtenidas por los contactos con sus socios en el extranjero es muy reducido y que tiene intensiones de ser el mismo quien establezca contacto directo con los turistas. Tamara sugiere cambiar los distintivos de la empresa, plantea elaborar una pagina en Internet que refleje el espiritu de la empresa, usando el nombre de la empresa como dominio (www.PeruAdventure.com) y asignar cuentas de correo con dicho dominio a todos los empleados (Tamara@PeruAdventure.com, Cesar@PeruAdventure.com), adems para aplicar el Marketing directo y el realizar las campaas de Mailing, seala que se requiere una conexin permanente a Internet.
El presupuesto
Cesar, indica que puede iniciarse comprando el dominio PeruAdventure.com y creando el Sitio en Internet y publicando en ella una Pagina Estatica presencial, mientras se elabore la solucion final. La inversion para la solucion en la parte tecnologica, asciende: Acceso a Internet, 128 Kb de ancho de banda, las 24 horas del dia Compra de Dominio en GrapPeru.com, incluye mantenimiento Servicio en Hosting en GrapPeru.com, 60 Mb soporte para ASP y Access o SQL Server 25 cuentas de correo POP3 US$ 65 mes US$ 20 ao US$ 180 ao
La inversion por todo el ao asciente a 980 dolares, lo que equivale a la mitad de uno de los recibos de telefono que suele llegar a la empresa (llamadas internacionales). Cesar, propone que se debe crear una pagina que no solamente muestre una lista de paquetes turisticos, sino un lugar inteligente que permita discretamente almacenar el perfil de cada visitante y asi preparar paquetes turisticos personalizados. Por ejemplo a muchos les agrada realizar canotaje, parapente, es decir les agrada la aventura, otros prefieren algo mas conservador como visitar los diversos centros arqueologicos y actividades culturales como el arte, la musica y las danzas autoctonas. EN cambio otros buscan la parte mistica. Cesar dice que tratar a todos los visitantes de la misma forma no seria conveniente, debemos buscar tratar a cada visitante de una forma muy personalizada y tener para ellos paquetes que vayan de acuerdo a sus gustos y preferencias (el pilar del CRM) El Sitio a disear deber cumplir con las condiciones sealadas, la informacin de cada visitante deber guardarse en una Base de Datos, en este caso usaremos Access, la dinamicidad de la pagina la conseguiremos mediante ASP.
Descripcin general
Peru Adventure & Trips
El Sitio a desarrollar debe ser capaz de: Registrar a cada visitante Se debe almacenar como minimo su nombre, apellido, correo electronico y pais, puede consignarse informacion adicional como fecha de nacimiento, y algunos datos de su preferencia. Catalogo de Paquetes turisticos Deber mostrarse un catalogo general de paquetes turisticos organizado por categorias, por ejemplo Turismo de aventura, Turismo ecologico, Turismo mistico, etc. Posteriormente de acuerdo a las preferencias del visitante, la pagina podria priorizar un catalogo de acuerdo a su perfil. Registrar una solicitud de reserva Se deber crear un modulo de reserva, por un determinado tiempo, con posibilidad de reconfirmar o anular una reserva. Disponer de una pasarela de pago Se dispondr de una pasarela de pago, de manera que el visitante usando su tarjeta de credito pueda cancelar el importe del paquete turistico. Disponer de un modulo de administracion del sitio Para la empresa ser necesario contar con un modulo de administracion del Sitio web, por ejemplo para dar de alta a nuevos paquetes turisticos, para remover reservas, etc.
La Base de Datos
Descripcion de las tablas
Tabla: DESTINO La tabla contiene la relacion de ciudades Llave primaria: IdDestino El Id del destino es un numero correlativo. IDDESTINO CIUDAD Entero Carcter 4 20
Tabla: PAQUETE La tabla paquete contiene la descripcion de un paquete turistico, su costo, el inicio y termino, la cantidad de cupos. Llave primaria: IdPaquete El Id del paquete tiene un prefijo P seguido de un numero correlativo, por ejemplo: P0001, P0002. Llave fornea: IdDestino IDPAQUETE Carcter IDDESTINO Entero TIPO Carcter NOMBRE Carcter PRECIOCOSTO Monetario PRECIOVENTA Monetario FECHAINICIO DateTime FECHATERMINO DateTime CATEGORIA Carcter FECHACONFIRMACION DateTime CUPOS Entero VIGENTE Entero 5 4 1 100 8 8 8 8 1 8 4 4
4 4
Tabla: ACTIVIDAD Contiene las actividades que compone un paquete turistico: recojo del aeropuerto, hospedaje, visitas guiadas, etc., para cada actividad habr un proveedor. Llave primaria: IdActividad El Id de la actividad es un numero correlativo Llaves fornea: IdProveedor, IdPaquete IDACTIVIDAD IDPROVEEDOR IDPAQUETE NOMBRE PRECIOCOSTO FECHA Entero Entero Carcter Carcter Monetario DateTime 4 4 5 100 8 8
Creando Sitios de Comercio Electrnico Tabla: PROVEEDOR Contiene la relacion de proveedores Llave primaria: IdProveedor El Id del proveedor es un numero correlativo IDPROVEEDOR NOMBRE CIUDAD TIPO EMAIL URL Entero Carcter Carcter Carcter Carcter Carcter 4 50 20 2 40 80
Tabla: CLIENTE Contiene la lista de clientes suscritos Llave primaria: IdCliente El Id del cliente consta de un prefijo C y un numero correlativo, por ejemplo: C0001, C0002 IDCLIENTE APELLIDO NOMBRE EMAIL CLAVE FECHANAC SEXO PAIS CIUDAD TIPOS Carcter Carcter Carcter Carcter Carcter DateTime Carcter Carcter Carcter Carcter 5 40 40 40 20 8 1 20 20 10
Tabla: RESERVA Contiene la reserva de paquete efectuado por un determinado cliente Llave primaria: IdReserva El Id de la reserva consta de un prefijo R y un numero correlativo, por ejemplo: R0001, R0002 IDRESERVA IDCLIENTE IDPAQUETE FECHA CANTIDAD TIPOPAGO TOTALVENTA DESCUENTO TOTALNETO CONFIRMADO ANULADO Carcter Carcter Carcter DateTime Entero Carcter Monetario Monetario Monetario Lgico Lgico 5 5 5 8 4 1 8 8 8 1 1
4 4 4
Creando Sitios de Comercio Electrnico Tabla: PARAMETRO Contiene el ultimo numero correlativo usado en los Ids de las tablas. El Campo CAMPO, contiene el nombre del campo y VALOR el ultimo numero usado CAMPO VALOR Carcter Carcter 20 20
J Por comodidad, podemos crear carpetas para separar los distintos archivos de la aplicacin
10
Sectorizacin
Antes de iniciar el proyecto, conviene definir los sectores que presentar nuestros Sitio. La pantalla la podemos dividir en:
Encabezado: En ella podemos situar el logotipo de la empresa, el nombre del site, una banda de menu Pie: En ella podemos situar los datos de la empresa, los derechos, y quizas algunos banners Izquierda: En ese sector podemos situar un menu de opciones, hipervinculos, y minibanners Derecha: Para mostrar informacion adicional o publicidad, mediante minibanners En nuestro caso ser:
11
H1 {font: 17pt Arial; Font-weight: bold; Color: Blue} H2 {font: 13pt Arial; Font-weight: bold; Color: Green} P {font: 17pt Arial; Color: Yellow}
<HEAD> <TITLE>Aqu no hay Hojas de Estilo</TITLE> </HEAD> <BODY> <H1>Este es un ejemplo</H1> <H2>del uso de hojas de estilo</H2> <P>Personaliza cada uno de los elementos que forma parte una pagina</P> </BODY>
12
Creando Sitios de Comercio Electrnico Una vez creada la hoja de estilo, agregue a la pagina el link en la seccion <HEAD>:
<HEAD> <TITLE>Aqu si se usa Hojas de Estilo</TITLE> <LINK Rel="stylesheet" TYPE="text/css" HREF= "colores.css"> </HEAD> <BODY> <H1>Este es un ejemplo</H1> <H2>del uso de hojas de estilo</H2> <P>Personaliza cada uno de los elementos que forma parte una pagina</P> </BODY>
Al colocar la referencia a la hoja de estilo y volver a ejecutar la pagina queda:
J En el presente libro no nos preocuparemos mucho por el aspecto de nuestra pgina, sino mas bien
incidiremos en la parte funcional, para la parte artistica dentro de muy poco estar disponible el libro para el WebMaster profesional
13
<HEAD> <TITLE>Ejecutando HTML en el Cliente</TITLE> </HEAD> <BODY> <H2>Usando HTML</H2> <P>El dia de hoy es 18/02/2002 </BODY>
14
Usando JavaScript:
<HEAD> <TITLE>Ejecutando un script JavaScript en el Cliente</TITLE> </HEAD> <BODY> <H2>Usando JavaScript</H2> <P>El dia de hoy es <SCRIPT LANGUAGE=JavaScript RUNAT=Client> <!-dHoy = new Date(); document.write (dHoy); //--> </SCRIPT> </BODY>
15
Usando VBScript:
<HEAD> <TITLE> Ejecutando un script VBScript en el Cliente </TITLE> </HEAD> <BODY> <H2>Usando VBScript</H2> <P>El dia de hoy es <SCRIPT LANGUAGE=VBScript RUNAT=Client> <!-Document.Write (Date) --> </SCRIPT> </BODY>
16
17
Basado en ASP:
<HEAD> <TITLE> Ejecutando un script VBScript en el Servidor </TITLE> </HEAD> <BODY> <H2>Usando VBScript </H2> <P> El dia de hoy es: <%Response.Write Date%> </BODY>
18
19
20
Ventajas
Las principales ventajas que ofrece ASP son: Permite acceder a bases de datos de una forma sencilla y rpida. Las pginas se generan dinmicamente. El cdigo de script se ejecuta en el servidor, y no depende del navegador que se use. Desde una pgina ASP se pueden ejecutar servidores OLE en el servidor de web y filtros ISAPI: acceso a base de datos, acceso a ficheros, log en el sistema, envo de correo, etc. La tecnologa ASP se emplea principalmente para crear aplicaciones interactivas
Cmo funciona?
Las pginas ASP comienzan a ejecutarse cuando un usuario solicita un archivo .asp al servidor Web a travs del explorador. El servidor web llama a ASP, que lee el archivo solicitado, ejecuta las secuencias de comandos que encuentre y enva los resultados al explorador del cliente. Puesto que las secuencias de comandos se ejecutan en el servidor, y NO en el cliente, es el servidor el que hace todo el trabajo necesario para generar las paginas que se envan al explorador. Las secuencias de comandos quedan ocultas a los usuarios, estos solo reciben el resultado de la ejecucin en formato HTML. Desaparece por tanto el problema de si el cliente puede o no ejecutar sentencias de comandos, el servidor Web solo enva el resultado en cdigo HTML standard el cual puede ser interpretado por cualquier explorador.
21
Ejemplo:
<HEAD> <TITLE> Ejecutando un script VBScript en el Servidor </TITLE> </HEAD> <BODY> <H2>Usando VBScript </H2> <P> El dia de hoy es: <SCRIPT LANGUAGE=VBScript RUNAT=Server> Response.Write Date </SCRIPT> </BODY>
Una forma mas practica es encerrar el codigo VBScript dentro <% y%>.
<HEAD> <TITLE> Ejecutando un script VBScript en el Servidor </TITLE> </HEAD> <BODY> <H2>Usando VBScript </H2> <P> El dia de hoy es: <%Response.Write Date%> </BODY>
22
Ejecucin: 1. Una vez instalado, ejecute el PWS desde: Botn Inicio Programas Microsoft Personal Web Server Administrador personal de Web Le mostrar el panel Principal, donde se muestra el nombre de la pagina principal, en el ejemplo: http://Grap Asi mismo indica el nombre del directorio local, que en este caso es c:/InetPub/wwwroot Si en esta carpeta situa los archivos de su proyecto, entonces bastar que en el navegador anote:
http://Grap
y se iniciar (el archivo que de inicio al proyecto debe llamarse Default.asp o Default.htm)
23
24
Creando Sitios de Comercio Electrnico 3. Luego haga click en Agregar. El dialogo Agregar directorio, asocie el directorio donde se encuentra su proyecto con un alias, en el ejemplo Capitulo3.
http://Grap/Capitulo3
Siempre que el proyecto empiece con Default.asp o Default.htm, en su caso debera anotar:
http://Grap/Capitulo3/ejemplo.asp
25
La ultima version de IIS 5.0 aparece formando parte de la nueva version de sistema operativo de Microsoft, Windows 2000, se encuentra completamente integrado con el sistema operativo y supone una mejora de IIS 4.0, no presenta un salto radical como de la version 3.0 a la 4.0.
J En conclusion:
Si vamos a rentar un servicio de hosting ser suficiente con Windows 98 (por razones de costo de licencia). Concluida la labor de desarrollo, podemos colocar la aplicacin en el espacio rentado en el servicio de hosting, via FTP o mediante la consola que el servicio de hosting nos provea. Si vamos a implementar un Servidor Web en nuestra oficina, conviene adquirir una licencia de Windows 2000 Advanced Server. A efectos de crear los programas ASP, ser suficiente un simple editor de textos como el Bloc de notas de Windows, o adquirir un Editor mas practico como el EditPlus (www.editplus.com), por unos 30 dolares.
26
Ahora si se puede adquiera MS-Visual InterDev (no crea que lo har todo, de todos modos hay que echarle mano al codigo). Si se quiere acceder a una base de datos, se puede usar una conexin ODBC, una conexin OLE-DB, o una ruta fsica. Como plataforma de bases de datos, una simple base de datos hecha en Microsoft Access puede ser suficiente. Hay diversos recursos en el web que son gratuitos y nos ayudarn a crear soluciones muy profesionales, a lo largo del texto se ir indicando.
27
El Objeto Response
Este objeto se usar para enviar informacin a mostrar en el navegador o para redireccionar a un URL diferente. Ejemplo:
<HEAD> <TITLE> Un saludo </TITLE> </HEAD> <BODY> <H2>Hola a todos</H2> <% Response.Write ("Esta cadena <BR> ha sido generada en el <B>Servidor. </B>") %> </BODY>
28
El Objeto Request
El Objeto Request se usar para obtener la informacin incluida en un formulario HTML o a partir de los datos enviados mediante la instruccin QueryString. Un ejemplo del uso del Objeto Request es recuperar un valor de un formulario html. El nombre de la variable viene del dispositivo de entrada de html.
<HEAD> <TITLE>Formulario entrada de datos </TITLE> </HEAD> <BODY> <FORM ACTION="VerDatos.asp" METHOD="POST"> <INPUT TYPE=Text NAME=txtNombre> <INPUT TYPE=Text NAME=txtDireccion> <INPUT TYPE="Submit" VALUE="Ver"> <INPUT TYPE="Reset" VALUE="Borrar"> </FORM> </BODY>
Ahora haremos que el valor de "txtNombre" sea asignado a una variable:
VerDatos.asp
<HEAD> <TITLE> Visualizando resultados </TITLE> </HEAD> <BODY> <% strNom strDir
Response.Write ("Nombres: " & strNom & <BR> ) Response.Write ("Direccion: " & strDir ) %> </BODY>
J Ahora podemos usar la variable, por ejemplo para almacenar el contenido en una Base de Datos,
realizar alguna calculo, imprimirla como parte de un mensaje, etc.
29
El Objeto Application
El Objeto Application se usa para guardar la informacin que deba ser compartido simultneamente por todos los usuarios de la aplicacin. Un ejemplo de esto podria la cadena de conexin a una Base de Datos, el nombre de los directorios comunes, etc.
Application("Impuesto") = 0.18
El Objeto Session
El Objeto Session se usa para conservar datos durante una sesion. Puede almacenarse en un Objeto Session, el Id del usuario, y asi poder verificar sus datos y filtrar la informacion.
Session("autorizado") = "s"
Cuando el usuario acceda a una pagina interior, para verificar si tiene permiso, solo tendriamos que acceder y verificar que el valor de la variable de sesion autorizado sea si.
J Hay un Objeto Application para todos los usuarios, y un Objeto Session para cada usuario
El Objeto Server
El Objeto Server se usa para definir la cantidad mxima de tiempo que se esperar para realizar una escritura, crear instancias a componentes COM y poder usarlas en nuestras paginas ASP, etc. Por ejemplo podemos usar este objeto para crear una instancia del objeto de ADODB.Connection y establecer una conexin a una Base de Datos.
Cn = Server.CreateObject ("ADODB.Connection")
En el cdigo anterior se define "Cn" como una instancia del objeto de ADODB.Connection. Luego se invocaria al mtodo Open de este objeto, para pasarle los parmetros apropiados (el nombre de fuente de datos, id del usuario, la contrasea, etc) y establecer una conexin a una Base de Datos.
30
Variables de Memoria
Objetivos
En este mdulo se desarrollaran los siguientes puntos: Que es una variable de memoria? Subtipos Cmo verificar los subtipos Funciones de conversin
31
Variables
En ASP (VBScript) hay slo un tipo de variable: Variant. Todas las variables son del tipo Variant. Cada variable puede tener un subtipo diferente. Hay 10 subtipos diferentes del tipo Variant (que se describe mas adelante).
Nombrando variables
Al dar un nombre a una variable debe tener en cuenta: Debe empezar con un caracter alfabtico No debe usarse nombres de comandos Debe ser nico dentro del mismo alcance La longitud del nombre debe ser menor a 255 carcteres o menos
Sugerencias para nombrar variables: Una convencion es usar un prefijo de 3 letras que indiquen el tipo de datos, como strNombre para las cadenas, intEdad para los enteros, etc. Puede usted definir un estilo propio usando prefijos que le guste y le sea practico. La idea de usar prefijos es facilitar la lectura de sus programas.
Usando variables
Simplemente asigne valores a las variables:
Num1 = 3.4142 Num2 = FormatNumber(Num1, 2) strFrase = "Bienvenido..." strNombre = Cesar strSaludo = strFrase + strNombre
K Una variable tiene por alcance el modulo donde fue definido. Es decir si define una variable en una
funcin, slo en esa funcin se podr usar dicha variable. Para que la variable est disponible a nivel de toda la pgina, debe definirla al principio y fuera de cualquier funcin o subprogramas.
32
Cuando se asigna un valor numerico a una variable y usted no le ha asignado un subtipo especifico, sera considerada como cadena al intentar sumar. As al realizar 2+2 y querer obtener 4, se conseguira 22 (cancatenacin), salvo sea una operacin de multiplicacin o divisin, donde automticamente el valor ser convertido a nmero. Suma.asp
<HEAD> <TITLE>Intentando sumar numeros </TITLE> </HEAD> <BODY> <FORM ACTION="Neto.asp" METHOD="POST"> <INPUT TYPE=Text NAME=txtSueldo> <BR> <INPUT TYPE=Text NAME=txtBoni> <BR> <INPUT TYPE="Submit" VALUE="Calcular Neto"> </FORM> </BODY>
Neto.asp
<HEAD> <TITLE>Deberia sumar, pero concatena </TITLE> </HEAD> <BODY> <% strSueldo = Request.Form ("txtSueldo") strBoni = Request.Form ("txtBoni") Response.Write ("Neto: " & strSueldo+strBoni ) %> </BODY>
Al ejecutar obtenemos:
33
34
Creando Sitios de Comercio Electrnico Veamos otro ejemplo, donde se calcula impuestos:
<HEAD> <TITLE>Declarando Variables</TITLE> </HEAD> <BODY> <% Dim intMonto, intIGV, intTotal intMonto = 900 intIGV = 18 intTotal = intMonto - ((intMonto/100)*intIGV) %> <P>Monto inicial <% = intMonto %> soles</P> <B><P>El total es <% = intTotal %> soles</B></P> </BODY>
35
Option Explicit
Las variables en ASP no necesitan ser declaradas, sin embargo es un buen hbito declarar las variables que usemos, una forma de forzar su definicin es mediante la orden Option Explicit, la cual debe insertarse al principio del cdigo ASP de cada pagina.
Documentando
Es bueno documentar las secciones de codigo con cierta complejidad, nos sera de ayuda a nosotros (en el futuro), como a los otros desarrolladores del equipo de trabajo. Para ubicar un comentario use En VBScript: el apstrofe, ( ' ) En JavaScript: la doble ( // ) En HTML: <!-- comentario --> Se puede comentar en cualquier lado. Arriba de la linea o al final.
<HEAD> <TITLE>Declarando Variables</TITLE> </HEAD> <BODY> <% Dim intMonto, intIGV, intTotal Declaramos variables intMonto = 900 Monto en soles intIGV = 18 Impuesto intTotal = intMonto - ((intMonto/100)*intIGV) %> <!Imprimimos los resultados <P>Monto inicial <% = intMonto %> soles</P> <B><P>El total es <% = intTotal %> soles</B></P> </BODY>
36
La funcion TypeName
Esta funcion devuelve el tipo de dato, de una variable o expresion.
<HEAD> <TITLE>Usando TypeName</TITLE> </HEAD> <BODY> <%Dim dblPi, TipoPi, datFNac, TipoFNac, strFrase, TipoFrase dblPi = 3.142 TipoPi = TypeName(dblPi) datFNac = #11/08/02# TipoFNac = TypeName(datFNac) strFrase = "Esta es una frase" TipoFrase = TypeName(strfrase) Dim emp emptyVar = TypeName(emp) %> <P>dblPi devuelve <%= TipoPi %></P> <P>datToday devuelve <%= TipoFNac %></P> <P>strText devuelve <%= TipoFrase %></P> <P>emp devuelve <%= emptyVar %></P> </BODY>
Al ejecutar obtenemos:
37
Los Subtipos
Veamos un resumen de los subtipos disponibles: Subtipo Byte Integer Long Single Double Rango 0-255 -32,768 a 32,767 -2,147,483,648 a 2,147,483,647 -3.402823E38 a-1.401298E-45 para valores negativos; 1.401298E-45 a 3.402823E38 para valores positivos -1.79769313486232E308 a -4.94065645841247E-324 para valores negativos; 4.94065645841247E-324 a 1.79769313486232E308 para valores positivos Currency Date String Boolean Objeto -922,337,203,685,477.5808 a 922,337,203,685,477.5807 1 de enero de 100 al 31 de diciembre de 9999 De 0 a 2 mil millones caracteres True o False Cualquier referencia del Objeto
38
Funciones de conversin
Las siguientes funciones se acostumbrar usar para convertir las variables a un subtipo especfico: Funcion Cbool Cbyte Ccur Cdate CDbl Cint CSng CStr Convierte un dato al tipo: Boolean Byte Currency Date Double Int Sigle String
Todas estas funciones toman como parmetro una variable, y devuelven el subtipo pedido que puede luego ser retenida en la misma variable, por ejemplo:
var1 = CStr(var1)
39
<HEAD> <TITLE>Definiendo SubTipos</TITLE> </HEAD> <BODY> <% Dim strPi, dblPi, intPi, strPi2 Dim TipoPi1, TipoPi2, TipoPi3, TipoPi4 strPi = "3.142" TipoPi1 = TypeName(strPi) dblPi = CDbl(strPi) TipoPi2 = TypeName(dblPi) intPi = CInt(dblPi) TipoPi3 = TypeName(intPi) strPi2 = CStr(intPi) TipoPi4 = TypeName(strPi2) %> <P>Pi <P>Pi <P>Pi <P>Pi </BODY> es es es es <%= <%= <%= <%= TipoPi1 TipoPi2 TipoPi3 TipoPi4 %> %> %> %> y y y y Pi Pi Pi Pi retorna retorna retorna retorna <%= <%= <%= <%= strPi %> </P> dblPi %> </P> intPi %> </P> strPi2 %> </P>
40
IsEmpty(var)
Esta funcin indica si una variable est vaca. Una variable est vaca cuando la variable se ha creado, pero no se ha asignado an un valor. Esto es distinto a una cadena vaca ("") o a un valor NULO.
IsNull(var)
Esta funcion determina si el contenido de una variable contiene un valor numol. Una variable es nula cuando se iguala a un valor nulo.
IsNumeric(var)
Devolver verdadero si la variable contiene un valor numerico. Ejemplo:
<HEAD> <TITLE>Averiguando si es un numero</TITLE> </HEAD> <BODY> <% miVar = "Hola" If IsNumeric(miVar) Then Response.Write ("la Variable es numrica".) Else Response.Write ("la Variable no es numrica".) End If %> </BODY>
41
La funcin VarType()
Otra manera de determinar el Subtipo es usando la funcion VarType () La sintaxis:
VarType(var)
La funcin anterior devolver un nmero que representa los distintos subtipos. Subtipo vbEmpty vbNull vbInteger vbLong vbSingle vbDouble vbCurrency vbDate vbString VbObject VbError VbBoolean vbVariant vbDataObject vbDecimal vbByte vbArray Valor 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 17 8192 Descripcion no asignaron un valor Contiene valor nulo Entero Largo Single Double Currency Date String Object Error Boolean Variant Acceso de los Datos Decimal Byte Arreglo
42
InStr(CadenaDondeBuscar, CadenaABuscar)
La funcion retorna: 0 si la CadenaDondeBuscar es de longitud cero 0 si la CadenaABuscar no se encuentra en la CadenaDondeBuscar Nulo, Si la CadenaABuscar y la CadenaDondeBuscar es nulo. Ejemplo:
str1 = "Hola" str2 = "ol" If InStr(str1,str2)> 0 Then Response.Write ("str1 contiene a str2") Else Response.Write ("str2 no est contenido en str1") End If
Se imprimir:
Left(Cadena,num)
Extrae caracteres por la izquierda
strProd = "Active Server Page" Response.Write ("Los primeros seis carcteres son" & Left(strProd,6))
Se mostrar:
43
Right(Cadena,num)
Extrae caracteres por la derecha
strProd = "Active Server Page" Response.Write ( Mid(strProd, 1, 1) & Mid(strProd, 8, 1) & Mid(strProd,15,1))
El resultado:
ASP
44
Len(cadena)
Devuelve la longitud de una cadena
Active Server
45
Cesar
Cesar Bustamante
46
47
Ejemplo:
dHoy = Now() Response.Write ("dHoy antes de estructurar: " & dHoy &" <BR>") Response.Write ("dHoy estructurado en 0 =" & FormatDateTime(dHoy,0) &" <BR>") Response.Write ("dHoy estructurado 1 =" & FormatDateTime(dHoy,1) &" <BR>") Response.Write ("dHoy estructurado 2 =" & FormatDateTime(dHoy,2) &" <BR>") Response.Write ("dHoy estructurado 3 =" & FormatDateTime(dHoy,3) &" <BR>") Response.Write ("dHoy estructurado 4 =" & FormatDateTime(dHoy,4) &" <BR>")
El resultado:
antes de estructurar: 26/02/2002 11:47:18 AM estructurado en 0 =26/02/2002 11:47:18 AM estructurado 1 =Martes 26 de Febrero de 2002 estructurado 2 =26/02/2002 estructurado 3 =11:47:18 AM estructurado 4 =11:47
48
El parmetro de Parte, puede tomar uno de los valores siguientes: yyyy - Ao q - Cuarto m - Mes y - Da del ao d - Da w - Da de la semana ww - Semana de ao h - Hora n - Minuto s - Segundo El argumento PrimerDiaAo, es una valor opcional, especifica la primera semana del ao, por defecto considera la primera semana del ao. Los argumentos que se puede pasar son: Constante VbUseSystem VbFirstJan VbFirstFourDays VbFirstFullWeek Valor 0 1 2 3 Descripcion Utiliza el soporte de Lenguaje Nacional (NLS), sealada en la API Inicia la semana el 1 de enero (por defecto) Comienza con la semana que tiene al menos, cuatro dias en la primera semana. Comienza con la primera semana completa del ao
J Por lo general, se obvian los parametros opcionales: PrimerDiaSemana y PrimerDiaAo, por tanto se
asume que el primer dia de la semana es domingo y el ao comienza con el 1ro de enero
49
dHoy = Now() Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write
("dHoy =" & dHoy &" <BR>") ("yyyy =" & DatePart ("yyyy", dHoy) &" <BR>") ("m =" & DatePart ("m", dHoy) &" <BR>") ("q =" & DatePart ("q", dHoy) &" <BR>") ("y =" & DatePart ("y", dHoy) &" <BR>") ("d =" & DatePart ("d", dHoy) &" <BR>") ("w =" & DatePart ("w", dHoy) &" <BR>") ("ww =" & DatePart ("ww", dHoy) &" <BR>") ("h =" & DatePart ("h", dHoy) &" <BR>") ("n =" & DatePart ("n", dHoy) &" <BR>") ("s =" & DatePart ("s", dHoy) &" <BR>")
Al ejecutar se mostraria:
dHoy =26/02/2002 11:42:43 AM yyyy =2002 m =2 q =1 y =57 d =26 w =3 ww =9 h =11 n =42 s =43
50
dHoy = Now() Response.Write ("dHoy Response.Write ("dHoy " <BR>") Response.Write ("dHoy dHoy) &" <BR>") Response.Write ("dHoy <BR>") Response.Write ("dHoy & " <BR>") Response.Write ("dHoy <BR>") Response.Write ("dHoy &" <BR>")
Al ejecutar se obtiene:
=" & dHoy &" <BR>") ms 10 das =" & DateAdd ("d", 10, dHoy) & menos 10 das =" & DateAdd ("d", -10, ms 3 meses =" & DateAdd ("m", 3, dHoy) &" menos 3 meses =" & DateAdd ("m", -3, dHoy) ms 2 horas =" & DateAdd ("h", 2, dHoy) &" menos 2 horas =" & DateAdd ("h", -2, dHoy)
=26/02/2002 11:44:59 AM ms 10 das =08/03/2002 11:44:59 AM menos 10 das =16/02/2002 11:44:59 AM ms 3 meses =26/05/2002 11:44:59 AM menos 3 meses =26/11/2001 11:44:59 AM ms 2 horas =26/02/2002 01:44:59 PM menos 2 horas =26/02/2002 09:44:59 AM
51
var1 = #30/08/1970# var2 = Date Response.Write ("var1 =" & var1 &" <BR>") Response.Write ("var2 =" & var2 &" <BR>") Response.Write ("var1 al var2 es" & DateDiff ("d", var1, var2) &" das <BR>") Response.Write ("var1 al var2 es" & DateDiff ("m", var1, var2) &" meses <BR>") Response.Write ("var1 al var2 es" & DateDiff ("yyyy", var1, var2) &" el ao(s) <BR>")
Los resultados:
=30/08/1970 =26/02/2002 al var2 es 11503 das al var2 es 378 meses al var2 es 32 el ao(s)
52
10/08/1970 03/03/2002
Dado que en el mes de enero del 2002 hay solo 28 dias, y se ha especificado 31, la funcion adaptara los dias restantes al mes siguiente, es decir 3 de marzo.
DateValue(Fecha)
Devuelve una fecha, pasada como argumento en formato de fecha larga. Ejemplo:
Response.Write ( DateValue(10,Setiembre,2002) )
Muestra como resultado:
10/09/2002
53
Day(Fecha)
Retorna el dia de una fecha, un nmero entre 1 y 31,
Month(Fecha)
Retorna el numero del mes de una fecha, un nmero entre 1 y 12,
Year(Fecha)
Retorna el numero del ao de una fecha, un nmero como 2002
Weekday(Fecha)
Retorna el numero del dia en la semana, un numero entre 1-7, dnde 1 es domingo
MonthName(mes, abreviado)
Devuelve el mes en forma abreviada o larga
var1 = "30/08/1970" Response.Write ("var1 =" & Response.Write ("Para var1 Response.Write ("Para var1 Response.Write ("Para var1 Response.Write ("Para var1 WeekDay(var1, 1) &" <BR>") Response.Write ("Para var1 WeekDayName(WeekDay(var1),
var1 &" <BR>") el da es" & Day(var1) &" <BR>") el mes es" & Month(var1) &" <BR>") el ao es" & Year(var1) &" <BR>") el da de la semana es" & el nombre del dia es" & falso, 1) &" <BR>")
54
Al ejecutar se obtiene:
55
Hour(Hora)
Devuelve la hora
Minute(Hora)
Devuelve los minutos
Second(Hora)
Retorna los segundos de la Hora especificada en el argumento.
Timer()
Devuelve el numero de segundos transcurridos desde las 12 horas (medianoche)
TimeValue(Hora)
Devuelve un dato tipo fecha
56
<% Dim hora hora = Hour(Time()) 'Empezamos la comprobaciones de tiempo. If hora > 6 and hora < 13 then Response.Write ("<B>Buenos Dias</B>, son las: " ElseIf hora > 12 and hora < 20 then Response.Write ("<B>Buenas Tardes</B>, son las: ElseIf hora > 19 and hora < 24 then Response.Write ("<B>Buenas Noches</B>, son las: ElseIf hora >= 0 and hora < 7 then Response.Write ("<B>Buenas Noches</B>, son las: End If %>
Al ejecutar obtenemos:
57
<% Dim aleatorio Randomize ' Generamos un numero entre 1 y 10. Aleatorio = Int (Rnd*10) + 1 response.write "Numero aleatorio "& numero_azar %>
58
var1 = 5443.354 var2 = -877743.2345 Response.Write ("var1 con formato=" & FormatNumber(var1, 2, -1, -1) &" <BR>") Response.Write ("var2 con formato =" & FormatNumber(var2, 1, -1, -1))
Al ejecutar se obtiene:
Valores monetarios
FormatCurrency(Numero[, Decimal, CeroInicial, Parentesis]) Agrega al valor numerico el simbolo $ al inicio, la descripcion de los parametros son los mismos de la funcion antes citada. Ejemplo:
var1 = 5443.354 var2 = -877743.2345 Response.Write ("var1 con formato =" & FormatCurrency(var1, 2, 1, -1) &" <BR>") Response.Write ("var2 con formato =" & FormatCurrency(var2, 1, 1, -1))
59
Porcentajes
FormatPercent(Numero[, Decimal, CeroInicial, Parentesis]) Agrega el simbolo % a una cantidad numerica. Ejemplo:
var1 = 5.4333 var2 = .823 Response.Write ("var1 con formato =" & FormatPercent(var1, 2, 1, -1) &" <BR>") Response.Write ("var2 con formato =" & FormatPercent(var2, 1, 1, -1))
Ejecutando se obtiene:
60
Arreglos
Un arreglo est compuesto por un conjunto de elementos, que tienen un nombre comun, pero un subindice distinto. Si es unidimensional, corresponde a la representacion de un vector y si es bidimensional a una matriz. El elemento inicial de un arreglo inicia en cero, es decir el primer elemento seria miArreglo(0). Los arreglos son dinmicos, es decir puede cambiarse el tamao luego de haberse creado el arreglo.
Dim miArray(1) miArray(0) = "Jose" miArray(1) = "Gustavo" ReDim Preserve miArray(2) miArray(2) = "Cesar"
Incialmente de crea el arreglo miArray con dos elementos, luego se redimensiona a 3 elementos. Para crear el arreglo use:
Dim miArray(20)
Para redimensionar el arreglo use:
61
<HEAD> <TITLE>Usando arreglos</TITLE> </HEAD> <BODY> <% Dim aLista() Redim aLista(4) aLista(0) = "Pilar" aLista(1) = "Karen" aLista(2) = "Tamara" aLista(3) = "Gabriela" Response.Write "<P>" For n = 0 to 3 Response.Write aLista(n) & "<BR>" Next Response.Write "<P>Falta Claudia... </P>" Redim Preserve aLista(4) aLista(5) = "Claudia" Response.Write "<P>" For n = 0 to 4 Response.Write aLista(n) & "<BR>" Next %> </BODY>
62
UBound(ArrayName [, ArrayDimension])
Esta funcin retorna el mayor valor contenido en uno de los elementos de un arreglo. Dimension (por defecto 1), es un parmetro opcional, especifica la dimensin del arreglo donde se quiere encontrar el ms alto valor.
63
Ejemplo:
Dim miArray(2,3) miArray(0,0) = "electrodomesticos" miArray(1,0) = "lustradora" miArray(2,0) = "10" miArray(0,1) = "electrodomesticos " miArray(1,1) = "tostador" miArray(2,1) = "12" miArray(0,2) = "perfumes" miArray(1,2) = "Carolina Herrera" miArray(2,2) = "40" miArray(0,3) = "perfumes" miArray(1,3) = "Aqua Brava" miArray(2,3) = "23" Response.Write (" <Table border=2 >") Response.Write (" <tr><td>Fila </td><td>linea</td>") Response.Write (" <td>Item</td><td>Cantidad</td></tr>") For i = 0 To UBound(miArray, 2) Response.Write (" <tr><td> #" & i &" </td>") Response.Write (" <td>" & miArray(0,i) &" </td>") Response.Write (" <td>" & miArray(1,i) &" </td>") Response.Write (" <td>" & miArray(2,i) &" </td></tr>") Next Response.Write (" </table>")
Al ejecutar se obtiene:
Fila 0 1 2 3
64
Instrucciones condicionales
Instruccin condicional simple
Esta instruccin presenta dos formas: La forma simple, indica que el Bloque de instrucciones se ha de ejecutar si la condicion es Verdadera
If (condicin) Then ' Bloque de instrucciones 1 Else ' Bloque de instrucciones 2 End If
Una tercera forma indica, el uso de ElseIf a fin de discriminar otras posibilidades:
If (condicin) Then ' Bloque de instrucciones ElseIf (condicin) Then ' Bloque de instrucciones ElseIf (condicin) Then ' Bloque de instrucciones ElseIf (condicin) Then ' Bloque de instrucciones End If
Ejemplo:
1 2 3 4
If Num1> Num2 Then Response.Write ("Num1 es mayor que num2...") Else Response.Write ("Num2 es mayor que num1...") End If
65
Creando Sitios de Comercio Electrnico Tambien puede anidarse instrucciones, una dentro de otra, por ejemplo:
If Num1> Num2 Then If num3> num1 Then Response.Write ("Num3 es mayor que num1 y num2...") Else Response.Write ("Num3 es menor que num1...") End If Else If num3> num2 Then Response.Write ("Num3 es mayor que num2 y num1...") Else Response.Write ("Num3 es menor que num2...") End If End If
J Se sugiere evitar ordenes If anidades, en su lugar procure usar la orden condicional Select Case.
En el caso de anidamiento, no olvide cerrar correctamente cada orden If.
Ejemplo: Mediante el ejemplo siguiente se toma como ingreso el nombre y contrasea de un usuario, en base a ello se realiza la validacin.
<HEAD> </HEAD> <BODY> <FORM ACTION="Verificar.asp" METHOD="post"> Ingrese su login:<BR> <INPUT TYPE="text" NAME="Login"><P> Ingrese su contrasea:<BR> <INPUT TYPE="text" NAME="Clave"> <BR> <BR> <INPUT TYPE="submit"> </FORM> </BODY>
66
<HEAD> <TITLE>Verificando la contrasea </TITLE> </HEAD> <BODY> <% strLogin = Request.Form("Login") strClave = Request.Form("Clave") Response.Write "<H1>Verificando al usuario </H1>" If strLogin = "Gustavo" and strClave = gato Then Response.Write "Bienvenido Gustavo" Else If strLogin = "Cesar" and strClave = coyote Then Response.Write "Bienvenido Cesar" Else Response.Write "Usted es un usuario normal" End If End If %> </BODY>
67
If miVar = "1" Then Response.Write ("miVar ElseIf miVar = "2" Then Response.Write ("miVar ElseIf miVar = "3" Then Response.Write ("miVar ElseIf miVar = "4" Then Response.Write ("miVar End If
Podria sustituirse por:
Select Case miVar Case "1" Response.Write Case "2" Response.Write Case "3" Response.Write Case "4" Response.Write Case Else Response.Write End Select
Ejemplo:
("miVar =1") ("miVar =2") ("miVar =3") ("miVar =4") ("es mas que cuatro...")
Veamos otra forma de envio de datos, al mismo que vemos la solucion usando la orden condicional multiple.
68
<HEAD> </HEAD> <BODY> <H1>Registro</H1> <FORM ACTION="DiaSeleccionado.asp" METHOD="post"> Elija un dia<BR> <SELECT NAME="Dia"> <OPTION VALUE="Lu">Lunes</OPTION> <OPTION VALUE="Ma">Martes</OPTION> <OPTION VALUE="Mi">Miercoles</OPTION> <OPTION VALUE="Ju">Jueves</OPTION> <OPTION VALUE="Vi">Viernes</OPTION> <OPTION VALUE="Sa">Sabado</OPTION> <OPTION VALUE="Do">Domingo</OPTION> </SELECT> <BR><BR> <INPUT TYPE="submit"> <INPUT TYPE="reset"> </FORM> </BODY>
DiaSeleccionado.asp
<HEAD> </HEAD> <BODY> <% varMes = Request.Form("Mes") Select Case varMes Case "Lu" Response.Write "Ha seleccionado Lunes" Case "Ma" Response.Write " Ha seleccionado Martes" Case "Mi" Response.Write " Ha seleccionado Miercoles" Case "Ju" Response.Write " Ha seleccionado Jueves" Case "Vi" Response.Write " Ha seleccionado Viernes" Case "Sa" Response.Write " Ha seleccionado Sabado" Case "Do" Response.Write " Ha seleccionado Domingo" End Select %> </BODY>
69
70
Creando Sitios de Comercio Electrnico Ejemplo: Un simple calculo de los dias transcurridos a la fecha:
<HEAD> </HEAD> <BODY> <% varInicio = 1 varDiaHoy = Day(Now()) varNum = 0 Do While varInicio <= varDiaHoy varNum = varNum + 1 Loop Response.Write "Total dias " & varNum & Transcurridos %> </BODY>
71
While not rs.EOF Response.Write ("Nombre =" & rs("NomCliente") &"," & rs("ApeCliente") &" <BR>") rs.MoveNext Wend
For each x in Request.ServerVariables Response.Write(x &" =" & Request.ServerVariables(x) &" <BR>") Next
Para ver por ejemplo el estado de las variables del servidor
72
<HEAD> </HEAD> <BODY> <FORM ACTION=Calculos.asp METHOD = post> <P>Fecha inicial: (mm/dd/yy) <BR> <INPUT TYPE=text NAME="FNac"> <P>Confirme la fecha actual<BR> <INPUT TYPE=text NAME="FHoy"><BR> <INPUT TYPE=submit> <INPUT TYPE=reset> </FORM> </BODY>
Calculos.asp
<HEAD> </HEAD> <BODY> <% varFNac=Request.Form("FNac") varFHoy=Request.Form("FHoy") varFNac = CDate(varFNac) varFHoy = CDate(varFHoy) varDias=(varFNac-varFHoy) varTotal = 0 For x = 0 to varDias varTotal = varTotal + 20 Next Response.Write "Total" & varTotal %> </BODY>
73
Edicin 1.1
Dentro de una semana
Prohibida la reproduccin total o parcial Sin nuestro consentimiento Derechos de copia reservados www.LibrosDigitales.NET
Prxima Entrega
74