ASP

74
1

Transcript of ASP

Creando Sitios de Comercio Electrónico

1

Creando Sitios de Comercio Electrónico

2

Edición 1.0

Prohibida la reproducción total o parcial Sin nuestro consentimiento

Derechos de copia reservados www.LibrosDigitales.NET

Creando Sitios de Comercio Electrónico

3

Presentación del Caso a Desarrollar

Objetivos En este primer módulo se desarrollaran los siguientes puntos: ü Presentación del escenario de trabajo. ü El modelo de la base de datos. ü Tipos de archivo que compone el Proyecto. ü Sectorizando ü Hojas de Estilo ü Tecnologías disponibles ü ASP vs. PHP

Creando Sitios de Comercio Electrónico

4

Presentación del escenario de trabajo

Peru Adventure & Trips

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, información y contactos lo realizan de forma convencioinal usando un telefono. El dueño 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 Diseño Grafico: Tamara Fernandez. El dueño 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 ([email protected], [email protected]), además para aplicar el Marketing directo y el realizar las campañas de Mailing, señala que se requiere una conexión permanente a Internet.

Creando Sitios de Comercio Electrónico

5

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 US$ 65 mes Compra de Dominio en GrapPeru.com, incluye mantenimiento US$ 20 año Servicio en Hosting en GrapPeru.com, 60 Mb US$ 180 año soporte para ASP y Access o SQL Server 25 cuentas de correo POP3 La inversion por todo el año 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 diseñar deberá cumplir con las condiciones señaladas, la información de cada visitante deberá guardarse en una Base de Datos, en este caso usaremos Access, la dinamicidad de la pagina la conseguiremos mediante ASP.

Creando Sitios de Comercio Electrónico

6

Descripción 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.

Creando Sitios de Comercio Electrónico

7

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 Entero 4 CIUDAD Carácter 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 foránea: IdDestino IDPAQUETE Carácter 5 IDDESTINO Entero 4 TIPO Carácter 1 NOMBRE Carácter 100 PRECIOCOSTO Monetario 8 4 PRECIOVENTA Monetario 8 4 FECHAINICIO DateTime 8 FECHATERMINO DateTime 8 CATEGORIA Carácter 1 FECHACONFIRMACION DateTime 8 CUPOS Entero 4 VIGENTE Entero 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 foránea: IdProveedor, IdPaquete IDACTIVIDAD Entero 4 IDPROVEEDOR Entero 4 IDPAQUETE Carácter 5 NOMBRE Carácter 100 PRECIOCOSTO Monetario 8 4 FECHA DateTime 8

Creando Sitios de Comercio Electrónico

8

Tabla: PROVEEDOR Contiene la relacion de proveedores Llave primaria: IdProveedor El Id del proveedor es un numero correlativo IDPROVEEDOR Entero 4 NOMBRE Carácter 50 CIUDAD Carácter 20 TIPO Carácter 2 EMAIL Carácter 40 URL Carácter 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 Carácter 5 APELLIDO Carácter 40 NOMBRE Carácter 40 EMAIL Carácter 40 CLAVE Carácter 20 FECHANAC DateTime 8 SEXO Carácter 1 PAIS Carácter 20 CIUDAD Carácter 20 TIPOS Carácter 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 Carácter 5 IDCLIENTE Carácter 5 IDPAQUETE Carácter 5 FECHA DateTime 8 CANTIDAD Entero 4 TIPOPAGO Carácter 1 TOTALVENTA Monetario 8 4 DESCUENTO Monetario 8 4 TOTALNETO Monetario 8 4 CONFIRMADO Lógico 1 ANULADO Lógico 1

Creando Sitios de Comercio Electrónico

9

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 Carácter 20 VALOR Carácter 20

☺ La BD en Access se adjunta al libro, en la siguiente edición se ampliará el tema de Base de Datos. La aplicación PeruAdventure, lo hallará en:

www.LibrosDigitales.NET/PeruAdventure

Creando Sitios de Comercio Electrónico

10

Tipos de archivos que compone un proyecto Una aplicación web está compuesta por distintos tipos de archivos, los que pueden ser: .htm o .html Paginas HTML, pueden contener formularios y controles, texto

estatico, referencias a graficos e hipervinculos

.asp Archivo de tipo Active Server Page, contiene instrucciones HTML dentro de los cuales se encuentran instrucciones VBScript que se ejecutan en el servidor, los que interactuan con una Base de Datos

.css Hojas de Estilo, contienen informacion sobre como optimizar los elementos de una pagina

.gif, .jpg Graficos que se mostrarán en la pagina

Global.asa Cada proyecto puede contener un archivo Global.asa, este archivo contiene la definicion de variables globales, conecciones a bases de datos, asi como el codigo de inicializacion y cierre

☺ Por comodidad, podemos crear carpetas para separar los distintos archivos de la aplicación

Creando Sitios de Comercio Electrónico

11

Sectorización 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á:

☺ Sugerimos no usar Marcos (Frames), en su lugar usaremos Tablas

Creando Sitios de Comercio Electrónico

12

Definiendo Hojas de Estilo Durante el desarrollo aun no estableceremos atributos de fuente o color, lo dejaremos para el final, esto puede solucionarse facilmente, mediante el uso de hojas de estilo, asi podemos definir: Colores.css H1 {font: 17pt “Arial”; Font-weight: bold; Color: Blue} H2 {font: 13pt “Arial”; Font-weight: bold; Color: Green} P {font: 17pt “Arial”; Color: Yellow} Asi el archivo Colores.HTM, será: <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>

Creando Sitios de Comercio Electrónico

13

Una vez creada la hoja de estilo, agregue a la pagina el link en la seccion <HEAD>: <LINK Rel=”stylesheet” TYPE=“text/css” HREF= “”colores.css> La pagina debe quedar asi: <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:

☺ En el presente libro no nos preocuparemos mucho por el aspecto de nuestra página, sino mas bien incidiremos en la parte funcional, para la parte artistica dentro de muy poco estará disponible el libro “para el WebMaster profesional”

Creando Sitios de Comercio Electrónico

14

Tecnologias para el diseño de Páginas Las paginas en Internet las podemos dividir en grupos:

Tecnologías del lado del cliente: Paginas estáticas Corresponde a las instrucciones que se ejecutarán en el Navegador, el codigo HTML, scripts basadas en JavaScript o VBScript. Representan la primera generacion de paginas en el web, por lo general de tipo presencial, a manera de un anuncio en un periodico. Caracteristicas: • Estan basadas en HTML, JavaScript, VBScript, CSS. • Son sencillas de crear, las podemos hacer incluso desde MS-Word, simplemente

grabando el documento como HTML. • Para su construccion, como minimo necesitamos un editor de texto, claro que

existen productos que nos permiten diseñar paginas muy vistosas y nos ahorran tiempo en diseño, tales como MS-FrontPage, Flash y DreamWeaver de Macromedia.

• A pesar de utilizar tales programas es necesario tener conocimiento de las instrucciones HTML y de JavaScript, para optimizar el codigo generado (en muchos casos se inserta codigo innecesario que debe removerse a fin de obtener un archivo ligero)

• Estas paginas no realizan gestion con Base de Datos.

Ejemplos: Basado en solo HTML: <HEAD> <TITLE>Ejecutando HTML en el Cliente</TITLE> </HEAD> <BODY> <H2>Usando HTML</H2> <P>El dia de hoy es 18/02/2002 </BODY>

Creando Sitios de Comercio Electrónico

15

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>

Creando Sitios de Comercio Electrónico

16

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>

Creando Sitios de Comercio Electrónico

17

Creando Sitios de Comercio Electrónico

18

Tecnologias del lado del Servidor: Páginas dinámicas Son paginas mas inteligentes, actualmente la mayoria de sites son de este tipo. El codigo, se almacena en un Servidor Internet. Cuando se accede desde un navegador, el Servidor interpreta el código, lo ejecuta, y envía al navegador el resultado en formato HTML. Esto hace un navegador independiente a la solución. Caracteristicas: • Estan basadas en ASP o en PHP • Para su construccion solo se requiere un sencillo editor de texto, aunque existen

productos que alivian dicho trabajo como MS-Visual InterDev para ASP o EditPlus (www.editplus.com) un pequeño pero gran editor de codigo ASP.

• Permite la creacion de paginas con contenido dinamico, por ejemplo podemos crear sites que permitan realizar reservas de hoteles, controlar ventas en linea, etc.

• Estas paginas hacen uso de una Base de Datos. 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>

Creando Sitios de Comercio Electrónico

19

Que debo usar ASP o PHP? Para empezar ambos son gratuitos, es decir no necesita comprar licencia de uso a ninguna empresa, claro Microsoft es quien a explorado mas y muchos de sus productos estan basados en ASP, mientras que es la corriente Linux quien apuesta por PHP. Como entornos de trabajo, ambos son muy buenos y tienen mucho en comun. Lo que los difieren es el sistema operativo sobre el que operan, Windows para ASP y Linux para PHP. EN cuanto a la gestion de Base de Datos, para el sistema operativo Windows, podemos usar Access, SQL Server, Visual FoxPro, Oracle, que son gestores de bases de uso comercial muy conocidos. En cambio por el lado de Linux podemos usar MySQL, SQLPostgree que a diferencia de los productos Microsoft, son Bases de Datos gratuitas. Hay que señalar que MySQL y SQLPostgree presentan ciertas limitaciones para quienes estamos acostumbrados a las cosas faciles, por ejemplo no permiten Procedimientos Almacenados ni Desencadentes , no siempre será asi, la corriente Linux avanza rapidamente, quiza mas adelante contemos con un gestor de Base de Datos mas potente, sin embargo hay que señalar que muchas soluciones profesionales estan basadas en el uso de esta tecnologia, por tanto su construccion ya es, ingenio del desarrollador.

Creando Sitios de Comercio Electrónico

20

Conceptos generales de ASP

Objetivos En este segundo módulo se desarrollaran los siguientes puntos: ü ASP ü Que necesito para ejecutar ASP ü El modelo de objetos

Creando Sitios de Comercio Electrónico

21

Active Server Pages ü Active Server Pages (ASP) es el aporte de Microsoft, al desarrollo de páginas

dinámicas. ü CGI y Perl, son tecnologias predecesoras a ASP. ü Otras tecnologías que compiten con ASP son ColdFusion (Allaire), JavaServer

Pages (Sun Microsystems) y PHP (de libre distribución bajo Open System). ü ASP no es un lenguaje de programación, sino un marco de trabajo, donde se

puede construir la aplicación web. ü Con ASP podemos construir aplicaciones que accedan a Base de Datos como

Access, SQL Server u Oracle. Ventajas Las principales ventajas que ofrece ASP son:

ü Permite acceder a bases de datos de una forma sencilla y rápida. ü Las páginas se generan dinámicamente. ü El código de script se ejecuta en el servidor, y no depende del navegador que se

use. ü Desde una página 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, envío de correo, etc.

ü La tecnología ASP se emplea principalmente para crear aplicaciones interactivas Cómo funciona? ü Las páginas ASP comienzan a ejecutarse cuando un usuario solicita un archivo

.asp al servidor Web a través del explorador. ü El servidor web llama a ASP, que lee el archivo solicitado, ejecuta las secuencias

de comandos que encuentre y envía 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 envían al explorador. Las secuencias de comandos quedan ocultas a los usuarios, estos solo reciben el resultado de la ejecución en formato HTML.

ü Desaparece por tanto el problema de si el cliente puede o no ejecutar sentencias de comandos, el servidor Web solo envía el resultado en código HTML standard el cual puede ser interpretado por cualquier explorador.

Creando Sitios de Comercio Electrónico

22

Como se usa ASP? Existen dos formas de incluir scripts en una página web: 1. Escribiéndolo entre las etiquetas <SCRIPT> y </SCRIPT>. En el atributo

LANGUAGE podemos indicar en que lenguaje se está programando. Para distinguir el código de script que se ejecuta en el servidor del que se ejecuta en el cliente, se emplea el atributo RUNAT=”Server”:

<SCRIPT LANGUAGE=”VBScript” RUNAT=”Server”> ‘instrucciones </SCRIPT> 2. Escribiéndolo entre los delimitadores <% y %>. <% instrucciones %>

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>

Creando Sitios de Comercio Electrónico

23

Que necesito para ejecutar un programas en ASP? Para el desarrollo de nuestras paginas podemos usar el PWS de Windows 95/98, para la publicacion debemos usar el IIS en un Servidor Windows NT o 2000. Veamos ambas opciones en detalle:

Personal Web Server (PWS) Instalacion • Windows 95: Primero debe actualizar Windows. Esta actualizacion está con el

Service Pack 1. Esta actualizacion se llama Windows Socket 2 (WinSock2), el cual, puede bajar el WinSock2 de:

http://www.microsoft.com/windows/downloads/bin/w95ws2setup.exe Esta actualizacion corrige los problemas con el protocolo TCP/IP de Windows 95. Luego se podrá instalar el PWS correctamente.

• Windows 98: el PWS lo encontrará en el CD de instalacion de Windows 98 en

la carpeta PWS que se encuentra dentro de la carpeta Add-Ons, de no hallarse puede obtener una copia de forma gratuita del sitio de descarga de www.Microsoft.com.

Ejecución: 1. Una vez instalado, ejecute el PWS desde: Botón 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)

Creando Sitios de Comercio Electrónico

24

2. Para registrar una carpeta distinta, vaya a a la opcion Avanzada

Creando Sitios de Comercio Electrónico

25

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.

4. Para ejecutar el proyecto deberá anotar: http://Grap/Capitulo3

Siempre que el proyecto empiece con Default.asp o Default.htm, en su caso debera anotar:

http://Grap/Capitulo3/ejemplo.asp

Creando Sitios de Comercio Electrónico

26

Internet Information Server (IIS) ü Presente en las versiones 3.0/4.0/5.0 para Windows NT 4.0 o Windows 2000 ü IIS es el entorno de desarrollo y ejecución de las páginas ASP para servidores

web de Microsoft. ü En Windows NT, IIS significaba Internet Information Server, en Windows 2000,

IIS opera como un servicio, recibiendo el nombre de Internet Information Services.

ü La ultima version de Internet Information Server fue 4.0, la reciente version 5.0 aparece como parte de la plataforma Windows 2000, la version 4.0 se sigue utilizando debido a su gran estabilidad y tiempo que se lleva funcionando y es utilizada en servidores NT.

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.

☺ 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 aplicación 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.

Creando Sitios de Comercio Electrónico

27

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 conexión ODBC, una conexión OLE-DB, o una ruta física. 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 ayudarán a crear soluciones muy profesionales, a lo largo del texto se irá indicando.

Creando Sitios de Comercio Electrónico

28

Modelo de Objetos en ASP ASP consta de seis objetos, entre estos no existe una relacion jerarquica, sino una relacion logica, a continuacion se hace una descripcion general de cada una de ellas:

El Objeto Response Este objeto se usará para enviar información a mostrar en el navegador o para redireccionar a un URL diferente. Ejemplo: Response.Write "Hola a todos” Esto imprimirá en el navegador "Hola a todos". También puede incluirse instrucciones HTML como para indicar el salto de linea. <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>

Creando Sitios de Comercio Electrónico

29

El Objeto Request El Objeto Request se usará para obtener la información incluida en un formulario HTML o a partir de los datos enviados mediante la instrucción 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 = Request.Form ("txtNombre") strDir = Request.Form ("txtDireccion") Response.Write ("Nombres: " & strNom & “<BR>” ) Response.Write ("Direccion: " & strDir ) %> </BODY>

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

Creando Sitios de Comercio Electrónico

30

El Objeto Application El Objeto Application se usa para guardar la información que deba ser compartido simultáneamente por todos los usuarios de la aplicación. Un ejemplo de esto podria la cadena de conexión 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”.

☺ 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 máxima 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 conexión a una Base de Datos. Cn = Server.CreateObject ("ADODB.Connection") En el código anterior se define "Cn" como una instancia del objeto de ADODB.Connection. Luego se invocaria al método Open de este objeto, para pasarle los parámetros apropiados (el nombre de fuente de datos, id del usuario, la contraseña, etc) y establecer una conexión a una Base de Datos.

Creando Sitios de Comercio Electrónico

31

Variables de Memoria Objetivos En este módulo se desarrollaran los siguientes puntos: ü Que es una variable de memoria? ü Subtipos ü Cómo verificar los subtipos ü Funciones de conversión

Creando Sitios de Comercio Electrónico

32

Variables ü En ASP (VBScript) hay sólo 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).

Cómo declarar las variables: Dim miVar ü Cuando se declara una variable no es necesario especificar el subtipo. ü Se puede convertir una variable a un subtipo especifico.

Nombrando variables Al dar un nombre a una variable debe tener en cuenta: ü Debe empezar con un caracter alfabético ü No debe usarse nombres de comandos ü Debe ser único dentro del mismo alcance ü La longitud del nombre debe ser menor a 255 carácteres 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 función, sólo en esa función se podrá usar dicha variable. Para que la variable esté disponible a nivel de toda la página, debe definirla al principio y fuera de cualquier función o subprogramas.

Creando Sitios de Comercio Electrónico

33

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 conseguiría 22 (cancatenación), salvo sea una operación de multiplicación o división, donde automáticamente el valor será convertido a número. 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:

Creando Sitios de Comercio Electrónico

34

Creando Sitios de Comercio Electrónico

35

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>

Creando Sitios de Comercio Electrónico

36

Option Explicit Las variables en ASP no necesitan ser declaradas, sin embargo es un buen hábito declarar las variables que usemos, una forma de forzar su definición es mediante la orden Option Explicit, la cual debe insertarse al principio del código ASP de cada pagina. <%Option Explicit Dim a,b,c .. %>

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 apóstrofe, ( ' ) 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>

Creando Sitios de Comercio Electrónico

37

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:

Creando Sitios de Comercio Electrónico

38

Los Subtipos Veamos un resumen de los subtipos disponibles: Subtipo Rango Byte 0-255

Integer -32,768 a 32,767

Long -2,147,483,648 a 2,147,483,647

Single -3.402823E38 a-1.401298E-45 para valores negativos;

1.401298E-45 a 3.402823E38 para valores positivos

Double

-1.79769313486232E308 a -4.94065645841247E-324 para valores negativos; 4.94065645841247E-324 a 1.79769313486232E308 para valores positivos

Currency -922,337,203,685,477.5808 a 922,337,203,685,477.5807

Date 1 de enero de 100 al 31 de diciembre de 9999

String De 0 a 2 mil millones caracteres

Boolean True o False

Objeto Cualquier referencia del Objeto

Los subtipos mas usados son String, Integer, y Boolean.

Creando Sitios de Comercio Electrónico

39

Funciones de conversión Las siguientes funciones se acostumbrar usar para convertir las variables a un subtipo específico: Funcion Convierte un dato al tipo: Cbool Boolean Cbyte Byte Ccur Currency Cdate Date CDbl Double Cint Int CSng Sigle CStr String Todas estas funciones toman como parámetro una variable, y devuelven el subtipo pedido que puede luego ser retenida en la misma variable, por ejemplo: var1 = CStr(var1)

Creando Sitios de Comercio Electrónico

40

<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 es <%= TipoPi1 %> y Pi retorna <%= strPi %> </P> <P>Pi es <%= TipoPi2 %> y Pi retorna <%= dblPi %> </P> <P>Pi es <%= TipoPi3 %> y Pi retorna <%= intPi %> </P> <P>Pi es <%= TipoPi4 %> y Pi retorna <%= strPi2 %> </P> </BODY>

Creando Sitios de Comercio Electrónico

41

Verificando los Subtipos Hay seis funciones diferentes que ayudarán a determinar si una variable corresponde a un Subtipo específico. IsArray(var) IsDate(var) IsEmpty(var) IsNull(var) IsNumeric(var) IsObject(var) Estas funciones retornan un valor lógico (verdadero o falso). Veamos el uso de cada uno de ellos:

IsEmpty(var) Esta función indica si una variable está vacía. Una variable está vacía cuando la variable se ha creado, pero no se ha asignado aún un valor. Esto es distinto a una cadena vacía ("") 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 numérica".) Else Response.Write ("la Variable no es numérica".) End If %> </BODY>

Creando Sitios de Comercio Electrónico

42

La función VarType() Otra manera de determinar el Subtipo es usando la funcion VarType () La sintaxis: VarType(var) La función anterior devolverá un número que representa los distintos subtipos. Subtipo Valor Descripcion vbEmpty 0 no asignaron un valor vbNull 1 Contiene valor nulo vbInteger 2 Entero vbLong 3 Largo vbSingle 4 Single vbDouble 5 Double vbCurrency 6 Currency vbDate 7 Date vbString 8 String VbObject 9 Object VbError 10 Error VbBoolean 11 Boolean vbVariant 12 Variant vbDataObject 13 Acceso de los Datos vbDecimal 14 Decimal vbByte 17 Byte vbArray 8192 Arreglo

Creando Sitios de Comercio Electrónico

43

Analizando las cadenas Hay 7 funciones disponibles en ASP que le ayudara a analizar las cadenas:

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á: str1 contiene a str2"

Left(Cadena,num) Extrae caracteres por la izquierda strProd = "Active Server Page" Response.Write ("Los primeros seis carácteres son" & Left(strProd,6)) Se mostrará: Los primeros seis carácteres son Active

Creando Sitios de Comercio Electrónico

44

Right(Cadena,num) Extrae caracteres por la derecha strProd = "Active Server Page" Response.Write("Las 4 últimas letras son"&Right(strProd,4)) Se mostrará: Las 4 últimas letras son Page

Mid(Cadena, NumInicio[, NumCantidad]) Extrae cierta cantidad de caracteres (NumCantidad) de una cadena, a partir de la posicion NumInicio. Si se omite NumCantidad, extrae los caracteres desde la posicion NumInicio hasta el final de la cadena Ejemplo: strProd = "Active Server Page" Response.Write ( Mid(strProd, 1, 1) & Mid(strProd, 8, 1) & Mid(strProd,15,1)) El resultado: ASP

Replace(Cadena, BuscarEsto, ReemplazaCon [, Inicio]) Reemplaza los caracteres (ReemplazaCon) buscados (BuscarEsto), dentro de una cadena desde la posicion indicada en Inicio. Si omite Inicio, la busqueda comienza desde el carácter inicial Ejemplo: str1 = "Cesar-Augusto-Bustamante-Gutierrez" Response.Write ("con espacios :" & Replace(str1," -","")) Se imprimirá:

Creando Sitios de Comercio Electrónico

45

Con espacios: Cesar Augusto Bustamante Gutierrez

Len(cadena) Devuelve la longitud de una cadena strProd = "Active Server Page" Response.Write (Left(strProd, Len(strProd)-5)) El resultado: Active Server

Creando Sitios de Comercio Electrónico

46

Convirtiendo a mayúsculas y minúscula Las funciones: LCase() y UCase(), convierte una cadena a masyúsculas y minúsculas respectivamente. Ejemplo: miNomr= "CESAR" Response.Write(LCase(miNom)) Se imprimirá: Cesar miApe = "bustamante" Response.Write(UCase(Left(miNom,1)) & LCase(Mid(miNom,2))) Response.Write(UCase(Left(miApe,1)) & LCase(Mid(miApe,2))) Se imprimirá: Cesar Bustamante

Creando Sitios de Comercio Electrónico

47

Buscando dentro de una cadena

Instr(Comienzo, Cadena1, Cadena2, Comparacion) Devuelve la posicion de la ocurrencia de una cadena dentro de otra. El argumento Comienzo indica la posicion a partir de la cual se iniciará la búsqueda (por defecto desde el primer carácter). Cadena2 es el argumento que se va a buscar en la Cadena1. Comparacion, es opcional indica si la comparacion será: 0 vbBinaryCompare (por defecto) 1 vbTextCompare, realiza comparacion textual Por ejemplo: Response.Write( InStr(7, “Cesar Bustamante”, “m”) ) Se imprimirá: 12

InstrRev(Comienzo, Cadena1, Cadena2, Comparacion) Hace lo mismo que la funcion anterior, solo que en lugar de contar la ocurrencia por la izquierda lo efectuara contando por la derecha.

Creando Sitios de Comercio Electrónico

48

Manipulando Fechas y Horas

Definiendo el formato de Fecha y Hora Para establecer el formato de fecha y hora utilice la función: FormatDateTime (). FormatDateTime(Fecha[,Formato]) El parámetro del formato puede tener uno de los valores siguientes: 0 vbGeneralDate Formato normal. 1 vbLongDate Formato de fecha largo 2 vbShortDate Formato de fecha corta 3 vbLongTime Hora en formato largo 4 vbShortTime Hora en formato de 24 horas(el hh:mm) 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: dHoy antes de estructurar: 26/02/2002 11:47:18 AM dHoy estructurado en 0 =26/02/2002 11:47:18 AM dHoy estructurado 1 =Martes 26 de Febrero de 2002 dHoy estructurado 2 =26/02/2002 dHoy estructurado 3 =11:47:18 AM dHoy estructurado 4 =11:47

☺ En los servidores con Windows en ingles, la funcion: <%=FormatDateTime(Now, vbLongDate)%> la fecha en inglés. Puede solucionar el problema, colocando antes: <% @LCID = 1034 %>

Creando Sitios de Comercio Electrónico

49

Extrayendo partes de una fecha DatePart(Parte, Fecha [, PrimerDiaSemana, PrimerDiaAño]) Esta funcion devuelve una parte de una fecha PrimerDiaSemana, es un parámetro opcional devuelve uno de los valores siguientes: 1 - domingo (valor predefinido) 2 - lunes 3 - martes 4 - miércoles 5 - jueves 6 - viernes 7 - sábado El parámetro de Parte, puede tomar uno de los valores siguientes: yyyy - Año q - Cuarto m - Mes y - Día del año d - Día w - Día de la semana ww - Semana de año h - Hora n - Minuto s - Segundo El argumento PrimerDiaAño, es una valor opcional, especifica la primera semana del año, por defecto considera la primera semana del año. Los argumentos que se puede pasar son: Constante Valor Descripcion VbUseSystem 0 Utiliza el soporte de Lenguaje Nacional (NLS), señalada

en la API VbFirstJan 1 Inicia la semana el 1 de enero (por defecto) VbFirstFourDays 2 Comienza con la semana que tiene al menos, cuatro dias

en la primera semana. VbFirstFullWeek 3 Comienza con la primera semana completa del año

☺ Por lo general, se obvian los parametros opcionales: PrimerDiaSemana y PrimerDiaAño, por tanto se asume que el primer dia de la semana es domingo y el año comienza con el 1ro de enero

Creando Sitios de Comercio Electrónico

50

Ejemplo: dHoy = Now() Response.Write ("dHoy =" & dHoy &" <BR>") Response.Write ("yyyy =" & DatePart ("yyyy", dHoy) &" <BR>") Response.Write ("m =" & DatePart ("m", dHoy) &" <BR>") Response.Write ("q =" & DatePart ("q", dHoy) &" <BR>") Response.Write ("y =" & DatePart ("y", dHoy) &" <BR>") Response.Write ("d =" & DatePart ("d", dHoy) &" <BR>") Response.Write ("w =" & DatePart ("w", dHoy) &" <BR>") Response.Write ("ww =" & DatePart ("ww", dHoy) &" <BR>") Response.Write ("h =" & DatePart ("h", dHoy) &" <BR>") Response.Write ("n =" & DatePart ("n", dHoy) &" <BR>") Response.Write ("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

Creando Sitios de Comercio Electrónico

51

Agregando valores a una Fecha u Hora DateAdd(Parte, Cantidad, Fecha) Con esta función puede agregar o substraer una cantidad a una fecha o tiempo. Cantidad, es el número que se quiere añadir o restar a una fecha (1, -4, 10, etc). Ejemplo: dHoy = Now() Response.Write ("dHoy =" & dHoy &" <BR>") Response.Write ("dHoy más 10 días =" & DateAdd ("d", 10, dHoy) & " <BR>") Response.Write ("dHoy menos 10 días =" & DateAdd ("d", -10, dHoy) &" <BR>") Response.Write ("dHoy más 3 meses =" & DateAdd ("m", 3, dHoy) &" <BR>") Response.Write ("dHoy menos 3 meses =" & DateAdd ("m", -3, dHoy) & " <BR>") Response.Write ("dHoy más 2 horas =" & DateAdd ("h", 2, dHoy) &" <BR>") Response.Write ("dHoy menos 2 horas =" & DateAdd ("h", -2, dHoy) &" <BR>") Al ejecutar se obtiene: dHoy =26/02/2002 11:44:59 AM dHoy más 10 días =08/03/2002 11:44:59 AM dHoy menos 10 días =16/02/2002 11:44:59 AM dHoy más 3 meses =26/05/2002 11:44:59 AM dHoy menos 3 meses =26/11/2001 11:44:59 AM dHoy más 2 horas =26/02/2002 01:44:59 PM dHoy menos 2 horas =26/02/2002 09:44:59 AM

Creando Sitios de Comercio Electrónico

52

Calculando la cantidad de tiempo entre dos fechas DateDiff(Parte, Fecha1, Fecha 2 [, PrimerDiaSemana, PrimerDiaAño]) Esta función es útil para encontrar la cantidad de tiempo entre una fecha y otra. Parte es la cantidad de tiempo entre las dos fechas Ejemplo: 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) &" días <BR>") Response.Write ("var1 al var2 es" & DateDiff ("m", var1, var2) &" meses <BR>") Response.Write ("var1 al var2 es" & DateDiff ("yyyy", var1, var2) &" el año(s) <BR>") Los resultados:

var1 =30/08/1970 var2 =26/02/2002 var1 al var2 es 11503 días var1 al var2 es 378 meses var1 al var2 es 32 el año(s)

Creando Sitios de Comercio Electrónico

53

Generando fechas validas

DateSerial(año, mes, dia) Devuelve una fecha, a partir del año, mes y dia especificado. El Año puede ser un numero de 100 a 9999 El mes un numero de 1 a 12 El dia un numero de 1 a 31 Response.Write ( DateSerial(1970,08,10) ) Response.Write ( DateSerial(2002,02,31) ) Muestra como resultado: 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

Creando Sitios de Comercio Electrónico

54

Obteniendo las partes de una fecha Hay cinco funciones que le permitirá obtener una determinada parte de una fecha:

Day(Fecha) Retorna el dia de una fecha, un número entre 1 y 31,

Month(Fecha) Retorna el numero del mes de una fecha, un número entre 1 y 12,

Year(Fecha) Retorna el numero del año de una fecha, un número como 2002

Weekday(Fecha) Retorna el numero del dia en la semana, un numero entre 1-7, dónde 1 es domingo

MonthName(mes, abreviado) Devuelve el mes en forma abreviada o larga

WeekDayName(DiaSemana, Abrevie, PrimerDia) DiaSemana, es un número que representa el día de la semana (1-7) Abrevie es un valor logico que indica si la función retornará el nombre abreviado o no PrimerDia, si es 1 corresponde a domingo Ejemplo: var1 = "30/08/1970" Response.Write ("var1 =" & var1 &" <BR>") Response.Write ("Para var1 el día es" & Day(var1) &" <BR>") Response.Write ("Para var1 el mes es" & Month(var1) &" <BR>") Response.Write ("Para var1 el año es" & Year(var1) &" <BR>") Response.Write ("Para var1 el día de la semana es" & WeekDay(var1, 1) &" <BR>") Response.Write ("Para var1 el nombre del dia es" & WeekDayName(WeekDay(var1), falso, 1) &" <BR>")

Creando Sitios de Comercio Electrónico

55

Al ejecutar se obtiene: var1 =30/08/1970 Para var1 el día es 30 Para var1 el mes es 8 Para var1 el año es 1970 Para var1 el día de la semana es 1 Para var1 el nombre del dia es Domingo

Creando Sitios de Comercio Electrónico

56

Obteniendo la hora, minuto, segundos

Time() Devuelve la hora del sistema

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)

TimeSerial(Horas, Minutos, Segundos) Genera un dato Hora, con las Horas, Minutos y Segundos especificados

TimeValue(Hora) Devuelve un dato tipo fecha

Creando Sitios de Comercio Electrónico

57

Ejemplo: <% 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: " & Time()) ElseIf hora > 12 and hora < 20 then Response.Write ("<B>Buenas Tardes</B>, son las: "& Time()) ElseIf hora > 19 and hora < 24 then Response.Write ("<B>Buenas Noches</B>, son las: "& Time()) ElseIf hora >= 0 and hora < 7 then Response.Write ("<B>Buenas Noches</B>, son las: "& Time()) End If %> Al ejecutar obtenemos: Buenos Dias, son las: 12:00:11 PM

Creando Sitios de Comercio Electrónico

58

Generando números aleatorios

Rnd() La funcion Rnd(), genera un número aleatorio entre 0 y 1. Requiere que en nuestro código pongamos la instrucción Randomize. <% Dim aleatorio Randomize ' Generamos un numero entre 1 y 10. Aleatorio = Int (Rnd*10) + 1 response.write "Numero aleatorio "& numero_azar %>

Creando Sitios de Comercio Electrónico

59

Dando formato a un numero

Numeros enteros FormatNumber(Numero[, Decimal, CeroInicial, Parentesis]) El primer parámetro es el único que se requiere, a menos que sea necesario indicar el numero de cifras decimales mediante el segundo parámetro. Con CeroInicial, puede indicar si se incluira cero, si el valor es fraccionario menor a uno. Mediante Parentesis, puede indicar si se encerrará con parentesis si el valor numerico es negativo Ejemplo: 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: var1 con formato = 5,443.35 var2 con formato = (877,743.2)

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

Creando Sitios de Comercio Electrónico

60

El resultado: var1 con formato = $5,443.35 var2 con formato = ($877,743.2)

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: var1 con formato = 543.33% var2 con formato = 82.3%

Creando Sitios de Comercio Electrónico

61

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 dinámicos, es decir puede cambiarse el tamaño 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: ReDim Preserve miArray(3)

Creando Sitios de Comercio Electrónico

62

Ejemplo: <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> NOTA: Si es un arreglo pequeño, puede crealo de la forma siguiente: Dim aColores aColores = Array("Azul", "Verde", "Rojo")

Creando Sitios de Comercio Electrónico

63

Funciones para el tratamiento de arreglos

LBound(Arreglo [,Dimension]) Esta función retorna el menor valor contenido en uno de los elementos de un arreglo. Dimension (por defecto 1), es un parámetro opcional, especifica la dimensión del arreglo donde se quiere encontrar el más bajo valor.

UBound(ArrayName [, ArrayDimension]) Esta función retorna el mayor valor contenido en uno de los elementos de un arreglo. Dimension (por defecto 1), es un parámetro opcional, especifica la dimensión del arreglo donde se quiere encontrar el más alto valor.

Split(CadenaElementos[, Delimitador, Cantidad]) CadenaElementos, es una cadena que contiene una lista de elementos Delimitador, es el carácter usado para separar los elementos en CadenaElementos. Cantidad, es el número de elementos que sea convertir a arreglo. Ejemplo: Dim miString, miArray, miString = "naranjas,manzanas,platanos" miArray = Split(miString,",") Al ejecutar se obtiene, un arreglo con 3 elementos.

Creando Sitios de Comercio Electrónico

64

Los arreglos multi-dimensionales Para crear un arreglo multi-dimensional simplemente especifique el número de columnas y filas. miArray(2,3) tendría 2 columnas y 3 filas, esto generaria un arreglo con 3 filas (de 0 a 2) con 4 columnas (de 0 a 3), es decir con 12 elemntos (3x4) 0,0 1,0 2,0 0,1 1,1 2,1 0,2 1,2 2,2 0,3 1,3 2,3 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 Linea Item Cantidad 0 electrodomesticos lustradora 10 1 electrodomesticos tostador 12 2 electrodomesticos Carolina Herrera40 3 electrodomesticos Aqua Brava 23

Creando Sitios de Comercio Electrónico

65

Instrucciones condicionales

Instrucción condicional simple Esta instrucción presenta dos formas: La forma simple, indica que el Bloque de instrucciones se ha de ejecutar si la condicion es Verdadera If (condición) Then ' Bloque de instrucciones End If La otra forma, indica que uno de los Bloques de instrucciones se ha de ejecutar dependiendo de la validez de la condicion. If (condición) 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 (condición) Then ' Bloque de instrucciones 1 ElseIf (condición) Then ' Bloque de instrucciones 2 ElseIf (condición) Then ' Bloque de instrucciones 3 ElseIf (condición) Then ' Bloque de instrucciones 4 End If Ejemplo: If Num1> Num2 Then Response.Write ("Num1 es mayor que num2...") Else Response.Write ("Num2 es mayor que num1...") End If

Creando Sitios de Comercio Electrónico

66

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

☺ 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 contraseña de un usuario, en base a ello se realiza la validación. <HEAD> </HEAD> <BODY> <FORM ACTION="Verificar.asp" METHOD="post"> Ingrese su login:<BR> <INPUT TYPE="text" NAME="Login"><P> Ingrese su contraseña:<BR> <INPUT TYPE="text" NAME="Clave"> <BR> <BR> <INPUT TYPE="submit"> </FORM> </BODY>

Creando Sitios de Comercio Electrónico

67

El contenido de Verificar.asp, sería: <HEAD> <TITLE>Verificando la contraseña </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>

Creando Sitios de Comercio Electrónico

68

Instrucción condicional múltiple Esta orden resulta util, cuando se presenta mas de dos alternativas, para una determinada condicion. Es la solucion cuando se presenta ordenes If anidadas. Por ejemplo la secuencia: If miVar = "1" Then Response.Write ("miVar =1") ElseIf miVar = "2" Then Response.Write ("miVar =2") ElseIf miVar = "3" Then Response.Write ("miVar =3") ElseIf miVar = "4" Then Response.Write ("miVar =4") End If Podria sustituirse por: Select Case miVar Case "1" Response.Write ("miVar =1") Case "2" Response.Write ("miVar =2") Case "3" Response.Write ("miVar =3") Case "4" Response.Write ("miVar =4") Case Else Response.Write ("es mas que cuatro...") End Select Ejemplo: Veamos otra forma de envio de datos, al mismo que vemos la solucion usando la orden condicional multiple.

Creando Sitios de Comercio Electrónico

69

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

Creando Sitios de Comercio Electrónico

70

Instrucción repetitiva Do… Loop Esta orden repite un bloque de instrucciones cierta cantidad de veces dependiendo de la validez de una condicion. La orden puede presentar dos formas: La primera forma, evalua primero la condicion, de ser valida procedera a ejecutar el bloque de instrucciones, en su caso continuara con las instrucciones siguientes a dicha orden. Do {While <Condición> | Until <Condición>} ' Bloque de instrucciones Loop La otra forma ejecuta el bloque de instrucciones al menos una vez, su posterior ejecucion dependera de la validez de la condicion: Do ' Bloque de instrucciones Loop {While <Condición> | Until <Condición>} Ejemplo: i = 0 Do While i <5 Response.Write ("i =" & i &" <BR>") i = i + 1 Loop El resultado sería: i=0 i=1 i=2 i=3 i=4

Creando Sitios de Comercio Electrónico

71

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>

Creando Sitios de Comercio Electrónico

72

Instrucción repetitiva While… Wend Muy similar a la instrucción repetitiva DO. Ejecuta un grupo de instruccioes mientras la condición sea verdadera. While { Condición} ' Bloque de instrucciones Wend Esta instrucción resulta muy practica cuando se desea recorrer el contenido de una tabla: While not rs.EOF Response.Write ("Nombre =" & rs("NomCliente") &"," & rs("ApeCliente") &" <BR>") rs.MoveNext Wend La instrucción repetitiva For… Next Esta orden repite un bloque de instrucciones una cantidad especifica de veces For var = Inicio To Fin Bloque de instrucciones Next Ejemplo: For i = 1 To 7 Response.Write(i = & i &" <BR>") Next Tambien podemos usar la forma: 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

Creando Sitios de Comercio Electrónico

73

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

☺ En siguiente edición todo lo referido al manejo de tablas, te agradeceremos remitirnos tus inquietudes, aportarnos con ideas y por que no soluciones. De ti depende que este libro mejore en contenido.

www.LibrosDigitales.NET

Creando Sitios de Comercio Electrónico

74

Próxima Entrega

Edición 1.1 Dentro de una semana

Prohibida la reproducción total o parcial

Sin nuestro consentimiento Derechos de copia reservados

www.LibrosDigitales.NET