46
Fundamentacion Objetivos generales Requisitos Contenidos Unidad 1: Introducción a la programación de páginas dinámicas Introducción Características HTML Dinámico JavaScript Eventos Unidad 2: Programación de páginas en diferentes lenguajes Ejemplos en lenguajes (ASP, PHP, ColdFusion, Perl, XML, etc.) Unidad 3: Formularios Introducción Como funcionan Campos Mezclamos formularios con JavaScript Consejos para el armado de Formularios Unidad 4: Desarrollo de aplicaciones orientadas a paginas Web con ASP Fundamentos de VBScript Procesamiento de Datos Variables de Sesión Uso de Cookies Unidad 5: Acceso a datos con ASP ADO Objetos Acceso a datos con SQL Propuesta Metodológica Usted deberá leer los temas antes del encuentro presencial, anotando sus dudas para solicitar del profesor las explicaciones pertinentes. Realizaremos ejercicios que no forman parte de este módulo, o algún ejercicio de éste que presente dificultades en su resolución. Evaluación

Modulo Enproceso

Embed Size (px)

Citation preview

Page 1: Modulo Enproceso

Fundamentacion Objetivos generales Requisitos Contenidos Unidad 1: Introducción a la programación de páginas dinámicas

Introducción Características HTML Dinámico JavaScript Eventos

Unidad 2: Programación de páginas en diferentes lenguajes

Ejemplos en lenguajes (ASP, PHP, ColdFusion, Perl, XML, etc.)

Unidad 3: Formularios Introducción Como funcionan Campos Mezclamos formularios con JavaScript Consejos para el armado de Formularios

Unidad 4: Desarrollo de aplicaciones orientadas a paginas Web con ASP

Fundamentos de VBScript Procesamiento de Datos Variables de Sesión Uso de Cookies

Unidad 5: Acceso a datos con ASP

ADO Objetos Acceso a datos con SQL

Propuesta Metodológica Usted deberá leer los temas antes del encuentro presencial, anotando sus dudas para solicitar del profesor las explicaciones pertinentes. Realizaremos ejercicios que no forman parte de este módulo, o algún ejercicio de éste que presente dificultades en su resolución. Evaluación

Page 2: Modulo Enproceso

Deberá aprobarse el 60% del examen o práctico realizado Deberá tener 80% de asistencias. Se tomarán 2 parciales y 1 trabajo práctico. Bibliografía y Material de Consulta

Page 3: Modulo Enproceso

UNIDAD 1 Objetivos Generales Que el alumno se capaz de:

• Entender el significado y funcionamiento de las paginas dinámicas • Conocer las diferencias con página estáticas • Conocer como trabajan dentro del servidor

Introducción Muy probablemente, estés familiarizado con el lenguaje HTML y con toda seguridad hayas desarrollado algún sitio basado en esta herramienta. En realidad el HTML no es lenguaje de programación sino, más bien, se trata de un lenguaje descriptivo que tiene como objeto dar formato al texto y las imágenes que pretendemos visualizar en el navegador. A partir de este lenguaje somos capaces de introducir enlaces, seleccionar el tamaño de las fonts o intercalar imágenes, todo esto de una manera prefijada y en ningún caso inteligente. En efecto, el HTML no permite el realizar un simple cálculo matemático o crear una página de la nada a partir de una base de datos. A decir verdad, el HTML, aunque muy útil a pequeña escala, resulta bastante limitado a la hora de crear grandes sitios o portales. Las páginas creadas a partir de HTML las llamamos “Páginas Estáticas” Es esta deficiencia del HTML la que ha hecho necesario el empleo de otros lenguajes accesorios mucho más versátiles y de un aprendizaje relativamente más complicado, capaces de responder de manera inteligente a las demandas del navegador y que permiten la automatización de determinadas. Estos lenguajes capaces de recrear a partir de ciertos "scripts" un sinfín de páginas automatizadas son los protagonistas de este concepto de “Páginas Dinámicas”. Diferencias entre paginas Dinámicas y Estáticas Páginas Estáticas: se construyen con el lenguaje HTML, que no permite grandes funcionalidades para crear efectos más allá de los enlaces. Estas páginas son muy sencillas de crear, aunque ofrecen pocas ventajas tanto a los desarrolladores como a los visitantes, ya que sólo se pueden presentar textos planos acompañados de imágenes y a lo sumo contenidos multimedia como pueden ser videos o sonidos A una página estática se le puede incluir cualquier efecto especial o funcionalidad y para ello es necesario utilizar otros lenguajes de programación, aparte del simple HTML.

Page 4: Modulo Enproceso

Páginas Dinámicas: Las páginas dinámicas son páginas HTML generadas a partir de lenguajes de programación (scripts). Hay diferentes tipos de scripts, los que se ejecutan localmente y los que lo hacen en el servidor (Server Side Scripts). Los 'Server Side' scripts generan un código HTML desde el propio servidor web. Este código HTML puede ser modificado -por ejemplo- en función de una petición realizada por el usuario en una Base de Datos. Dependiendo de los resultados de la consulta en la Base de Datos, se generará un código HTML u otro, mostrando diferentes contenidos. HTML Dinámico (DHTML) HTML Dinamico es la conjunción de HTML, hojas de estilo (CSS), Capas (Layers) y javascript, el uso combinado de estas tres tecnologías permite introducir dinamismo en la paginas web. Permite el desarrollo de atractivas interfaces, animaciones, y multitud de efectos y capacidades que hacen a las paginas no solo mas vistosas sino mucho mas utiles para el usuario. El HTML dinámico integra varios elementos: * Las Hojas de Estilo, para controlar los atributos de presentación de cada elemento de una página. * El DOM (Document Object Model) es una especificación que permite describir la estructura y composición de una página, sin hacer referencia a su contenido. Permite alterar determinados aspectos de la presentación de una página, accediendo a una jerarquía de objetos que se crea a partir de los diferentes elementos HTML de la página. Puede ser utilizado desde otro lenguaje de macros, Java, plug-ins o ActiveX, por poner ejemplos ya conocidos. * Las Capas (Layers) permiten crear documentos HTML solapados; para ello, se define una sección rectangular, caracterizada en un sistema de coordenadas tridimensionales, y se añade código HTML a la misma. De esta forma, se dispone de la capacidad de colocar y mover elementos por la pantalla del browser. * Lenguajes de macros, como JavaScript o VisualBasic Script, que tienen capacidad de modificar el DOM, y con ello el contenido y presentación de la página. Solo nos vamos a enfocar en los aspectos que hacen a la programación y sus puntos mas importantes. La practica con Estilos la realizamos en el pasado cuatrimestre ya que hace mas al diseño y armado de los documentos HTML, ante cualquier duda refiéranse al anterior material. Hojas de Estilo en Cascada (CSS) Las hojas de estilo en cascada (Cascading Style Sheets, CSS) son un lenguaje formal usado para definir la presentación de un documento estructurado escrito en HTML o XML (y por extensión en XHTML). El W3C (World Wide Web Consortium) es el encargado de formular la especificación de las hojas de estilo que servirá de estándar para los agentes de usuario o navegadores. La idea que se encuentra detrás del desarrollo de CSS es separar la estructura de un documento de su presentación.

Page 5: Modulo Enproceso

Las ventajas de utilizar CSS (u otro lenguaje de estilo) son:

• Control centralizado de la presentación de un sitio web completo con lo que se agiliza de forma considerable la actualización del mismo.

• Los Navegadores permiten a los usuarios especificar su propia hoja de estilo local que será aplicada a un sitio web remoto, con lo que aumenta considerablemente la accesibilidad. Por ejemplo, personas con deficiencias visuales pueden configurar su propia hoja de estilo para aumentar el tamaño del texto o remarcar más los enlaces.

• Una página puede disponer de diferentes hojas de estilo según el dispositivo que la muestre o incluso a elección del usuario. Por ejemplo, para ser impresa, mostrada en un dispositivo móvil, o ser "leída" por un sintetizador de voz.

• El documento HTML en sí mismo es más claro de entender y se consigue reducir considerablemente su tamaño.

Hay varias versiones : CSS1 y CSS2, con CSS3 en desarrollo por el World Wide Web Consortium (W3C). Los navegadores modernos implementan CSS1 bastante bien, aunque existen pequeñas diferencias de implementación según marcas y versiones de los navegadores¹. CSS2, sin embargo, está solo parcialmente implentado en los más recientes. Ejemplo.html dentro del body <div id="capa1"><br> Aquí, va lo que nos venga en gana: imágenes, texto, etc.<br> </div> Estilo_Ejemplo.css #capa1 { //aquí definimos las propiedades de la capa background-color: #fff; margin: auto; color: #000; } El DOM de DHTML

Page 6: Modulo Enproceso

Actualmente, el DOM implementado en MSIE 4 es más completo que el propuesto por Netscape. El nuevo DOM de MS es accesible con JavaScript y VBScript e incluye el objeto "all", que representa el conjunto de todos los elementos de una página. En la versión puesta a punto por Netscape, los eventos quedan limitados a objetos específicos, mientras que Microsoft abre los elementos de una página a todos los eventos, lo que permite el acceso a todos los atributos de un elemento, incluidos color, fondo y fuente. Dentro del DOM, no todos los objetos se encuentran al mismo nivel, sino que cada uno de ellos existe por estar relacionado con conjuntos de otros objetos.

El objeto de primer nivel es "window", el cual, a su vez, contiene el objeto "document". El objeto "window" expone la información relativa al documento y al actual URL, así como a los URL visitados. Como los documentos HTML tradicionales, los FRAMESET se exponen mediante el elemento "document", pero a diferencia de los primeros subdividen la pantalla en varios marcos. Esta peculiaridad hace que cada FRAMESET sea expuesto como otro objeto "window". Es posible, gracias a las potencialidades de los estilos dinámicos, modificar automáticametne el aspecto de un documento a intervalos de tiempo. En el ejemplo que figura a continuación, los estilos adoptados para diversas partes de texto están asociados a un reloj que, en este caso particular, genera un texto elástico, que hasta ahora podía obtenerse sólo con applet Java o GIF animados: <HTML><HEAD> <TITLE>Texto elástico</TITLE> <STYLE TYPE="text/css"> H1 {color:red; font-weight:bold; font-size:95pt} H2 {color:black; font-weight:bold; font-size:45pt} H3 {color:gray; font-weight:bold; font-size:35pt} </STYLE> <SCRIPT LANGUAGE="JavaScript"> var sizes = new Array("0px", "4px", "8px", "16px", "32px");

Page 7: Modulo Enproceso

sizes.pos = 0; function rubberBand() { var el = document.all.elastic; if (null == el.direction) el.direction = 1; else if ((sizes.pos > sizes.length - 2) || (0 == sizes.pos)) el.direction *= -1; el.style.letterSpacing = sizes[sizes.pos += el.direction]; } </SCRIPT> </HEAD> <BODY ONLOAD="window.tm = setInterval('rubberBand()', 150);" ONUNLOAD="clearInterval(window.tm);"> <H2 ALIGN="center">Internet News</H2> <H1 ID="elastic" ALIGN="Center">DHTML</H1> <H3 ALIGN="Center">ejemplo de texto elástico</H3> </BODY> </HTML> Lenguajes de macros (scripts del lado del cliente) Para declarar un script de cliente se usan las etiquetas <SCRIPT> </SCRIPT>. El navegador interpreta cualquier texto escrito entre estas marcas como script, sujeto a las reglas del lenguaje script en el cual fue escrito. Actualmente los navegadores mas importantes soportan JavaScript. Internet Explorer ademas, soporta VBScript pero no JavaScript. Teniando presente esto, lo mejor seria que escribamos scripts en JavaScript. A continuación veremos un sencillo script de cliente escrito en JS. Este script permite al usuario hacer clic en un boton para mostrar un mensaje en un cuadro de dialogo. El código define un elemento HTML <FORM> con el nombre myform. En este ejemplo usamos el elemento <FORM> porque queremos que la página sea soportada por todos los navegadores. El código dentro de las marcas <SCRIPT></SCRIPT> se activará una vez que el cliente haga clic en el botón que mediante la directiva OnClick=MostrarMensaje() provoca que se ejecute el script. JavaScript Historia

Page 8: Modulo Enproceso

El lenguaje fue inventado por Brendan Eich en la empresa Netscape Communications, que es la que fabricó los primeros navegadores de Internet comerciales. Apareció por primera vez en el producto de Netscape llamado Netscape Navigator 2.0. Tradicionalmente, se venía utilizando en páginas web HTML, para realizar tareas y operaciones en el marco de la aplicación cliente servidor. Con la irrupción de Web 2.0, JavaScript se ha convertido en un verdadero lenguaje de programación que aporta la potencia de cálculo del navegador para aumentar la usabilidad de aplicaciones Web con técnicas avanzadas como AJAX o JCC. ¿Que es? Javascript es un lenguaje de programación utilizado para crear pequeños programitas encargados de realizar acciones dentro del ámbito de una página web. Con Javascript podemos crear efectos especiales en las páginas y definir interactividades con el usuario. El navegador del cliente es el encargado de interpretar las instrucciones Javascript y ejecutarlas para realizar estos efectos e interactividades, de modo que el mayor recurso, y tal vez el único, con que cuenta este lenguaje es el propio navegador. Javascript es el siguiente paso, después del HTML, que puede dar un programador de la web que decida mejorar sus páginas y la potencia de sus proyectos. Es un lenguaje de programación bastante sencillo y pensado para hacer las cosas con rapidez, a veces con ligereza. Incluso las personas que no tengan una experiencia previa en la programación podrán aprender este lenguaje con facilidad y utilizarlo en toda su potencia con sólo un poco de práctica. Versiones * Javascript 1: nació con el Netscape 2.0 y soportaba gran cantidad de instrucciones y funciones, casi todas las que existen ahora ya se introdujeron en el primer estandar. * Javascript 1.1: Es la versión de Javascript que se diseñó con la llegada de los navegadores 3.0. Implementaba poco más que su anterior versión, como por ejemplo el tratamiento de imágenes dinámicamente y la creación de arrays. * Javascript 1.2: La versión de los navegadores 4.0. Esta tiene como desventaja que es un poco distinta en plataformas Microsoft y Netscape, ya que ambos navegadores crecieron de distinto modo y estaban en plena lucha por el mercado. * Javascript 1.3: Versión que implementan los navegadores 5.0. En esta versión se han limado algunas diferencias y asperezas entre los dos navegadores. * Javascript 1.5: Versión actual, en el momento de escribir estas líneas, que implementa Netscape 6. * Por su parte, Microsoft también ha evolucionado hasta presentar su versión 5.5 de JScript (así llaman al javascript utilizado por los navegadores de Microsoft). ¿Como ejecuto JavaScript?

Page 9: Modulo Enproceso

Lo más importante que podemos destacar en este momento es que la programación de Javascript se realiza dentro del propio documento HTML. Esto quiere decir que en la página se mezclan los dos lenguajes, y para que estos dos lenguajes se puedan mezclar sin problemas se han de incluir unos delimitadores que separan las etiquetas HTML de las instrucciones Javascript. Estos delimitadores son las etiquetas <SCRIPT> y </SCRIPT>. Todo el código Javascript que pongamos en la página ha de ser introducido entre estas dos etiquetas. En una misma página podemos introducir varios scripts, cada uno que podría introducirse dentro de unas etiquetas <SCRIPT> distintas. La colocación de estos scripts es indiferente, en un principio nos da igual donde colocarlos, pero en determinados casos esta colocación si que será muy importante. Esto se llama “Ejecución Directa”.

Ejemplo <HTML> <HEAD> <TITLE>Mensaje Sencillo</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE=javascript> Function MostrarMensaje() { Alert(“Hola Mundo!”); } </SCRIPT> <Form name=myform> <INPUT name=boton type=button value=”Mostrar Mensaje” OnClick=MostrarMensaje()> </Form> </BODY> </HTML>

También se puede escribir Javascript dentro de determinados atributos de la página, como el atributo onclick. Estos atributos están relacionados con las acciones del usuario y se llaman manejadores de eventos. A esto lo llamamos “Respuesta a un evento”. Las acciones que queremos realizar como respuesta a un evento se han de indicar dentro del mismo código HTML, pero en este caso se indican en atributos HTML que se colocan dentro de la etiqueta que queremos que responda a las acciones del usuario. Ver EVENTOS. Sintaxis El lenguaje Javascript tiene una sintaxis muy parecida a la de Java por estar basado en él. También es muy parecida a la del lenguaje C. Comentarios Un comentario es una parte de código que no es interpretada por el navegador y cuya utilidad radica en facilitar la lectura al programador. El programador, a medida que desarrolla el script, va dejando frases o palabras sueltas, llamadas comentarios, que le ayudan a él o a cualquier otro a leer mas fácilmente el script a la hora de modificarlo o depurarlo. Existen dos tipos de comentarios en el lenguaje. Uno de ellos, la doble barra, sirve para comentar una línea de código. El otro comentario lo podemos utilizar para comentar varias líneas y se indica con los signos /* para empezar el comentario y */ para terminarlo. Veamos unos ejemplos.

Page 10: Modulo Enproceso

<SCRIPT> //Este es un comentario de una línea /*Este comentario se puede extender por varias líneas. Las que quieras*/ </SCRIPT> Mayúsculas y minúsculas En javascript se han de respetar las mayúsculas y las minúsculas. Si nos equivocamos al utilizarlas el navegador responderá con un mensaje de error de sintaxis. Por convención los nombres de las cosas se escriben en minúsculas, salvo que se utilice un nombre con más de una palabra, pues en ese caso se escribirán con mayúsculas las iniciales de las palabras siguientes a la primera. También se puede utilizar mayúsculas en las iniciales de las primeras palabras en algunos casos, como los nombres de las clases. Separación de instrucciones Las distintas instrucciones que contienen nuestros scripts se han de separar convenientemente para que el navegador no indique los correspondientes errores de sintaxis. Javascript tiene dos maneras de separar instrucciones. La primera es a través del carácter punto y coma (;) y la segunda es a través de un salto de línea. Por esta razón Las sentencias Javascript no necesitan acabar en punto y coma a no ser que coloquemos dos instrucciones en la misma línea. Eventos

Se llaman eventos a acciones que ocurren cuando un usuario ejecuta algún tipo de acción. Los manipuladores de eventos se incorporan en los documentos como atributos de etiquetas HTML. Por ejemplo:

<INPUT TYPE="button" VALUE="GO" onClick="makeitgo(this.form)">

Esta instrucción invoca la función makeitgo() cuando se pulsa el botón. La siguiente tabla muestra los nueve manipuladores de eventos de JavaScript.

Evento Se da cuando Manipulador de evento

blur El usuario retira el foco de entrada del elemento form onBlur

click El usuario pulsa el ratón sobre el elemento form o sobre un enlace onClick

change El usuario modifica el valor del texto, de un área del texto, o selecciona un elemento onChange

Page 11: Modulo Enproceso

focus El usuario sitúa el foco de entrada en el elemento form onFocus

load El usuario carga la página en el Navigator onLoad

mouseover El usuario mueve el puntero del ratón sobre un enlace onMouseOver

select El usuario selecciona elementos form como campo de entrada (input) onSelect

submit El usuario envia un formulario onSubmit

unload El usuario abandona la página onUnload

• El manipulador de eventos OnClick El evento click se produce cuando,en un formulario, un objeto susceptible de ser pulsado es pulsado por el usuario. El manipulador de eventos JavaScript puede llamar una función, que ha de existir en el documento actual, o ejecutar código JavaScript presente. Por ejemplo:

<input type="button" name="Pulsame" onClick="alert('Me has pulsado!');">

La instrucción anterior abrirá una ventana de aviso cuando el usuario pulse el botón.

• El manipulador de eventos onSubmit Se produce cuando el usuario envia un formulario. El manipulador de eventos OnSubmit puede llamar una función o ejecutar código JavaScript presente. Por ejemplo

<form name="miform" action="doit.cgi" onSubmit="confirmSubmission()">

La anterior instrucción llama a a la función confirmSubmission para comprobar los valores de los campos antes de llamar al URL designado en el atributo action.

• El manipulador de eventos onChange Se produce cuando un campo select, text o textarea deja de ser enfocado y se ha modificado su valor. EL elemento onChange puede llamar a una función o ejecutar código JavaScript presente. Ejemplo:

<input name="phone" onChange="checkPhone(this.form)">;

Esta instrucción llama a la función checkPhone cuando el usuario deja de enfocar el campo de entrada (input) de texto y se mueve a otro campo. Esto permite preprocesar instantáneamente la información y comprobar el valor del campo con anterioridad al envio del formulario.

Page 12: Modulo Enproceso

• El manipulador de eventos onLoad Se produce cuando acaba de cargar una ventana o todas las tramas de un <FRAMESET>.Puede llamar a una función o ejecutar código JavaScript presente.Ejemplo

<body onLoad="alert('Bienvenido a mi página')">

• El manipulador de eventos onUnload Se produce cuando el usuario abandona la página. Por ejemplo

<body onUnload="alert('Gracias por tu visita’)”

Mas Información El World Wide Web Consortium, abreviado W3C, es una organización que produce estándares para la World Wide Web, en su sitio encontraremos todas las definiciones originales de cada lenguaje. Pagina Oficial: http://www.w3.org/ Pagina en español: http://www.w3c.es/ También existe un sitio muy interesante y aconsejable para interiorizarse en estos estándares, es: http://www.w3schools.com/ aquí encontraran un tutoríal muy completo y gran cantidad de ejemplos.

Page 13: Modulo Enproceso

UNIDAD 2 Introducción Un lenguaje de programación es una técnica estándar de comunicación que permite expresar las instrucciones que han de ser ejecutadas en una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen un programa informático. Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML. Un lenguaje de programación permite a un programador especificar de manera precisa: sobre qué datos una computadora debe operar, cómo deben ser estos almacenados y transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con algunos lenguajes. Un programa escrito en un lenguaje de programación necesita pasar por un proceso de compilación, es decir, ser traducido al lenguaje de máquina, o ser interpretado para que pueda ser ejecutado por el ordenador. Lenguajes de Programación WEB o lenguajes Dinámicos Ahora vamos a repasar algunos lenguajes y tecnologías web dinámicas que han surgido: Del lado del servidor: ASP PERL PHP Cold Fusion JSP / JavaServlets Extenciones de FrontPage Del lado del cliente: JavaScript / Jscript (lo vimos en la unidad anterior con detenimiento) Java Applets VBScript (lo veremos en la siguiente unidad) ActiveX XML Con estos últimos tuvimos alguna practicas ya y en esta ocasión nos vamos a centrar en los lenguajes del lado del servidor. Hace unos años surgió una interfaz llamada CGI (Common Gateway Interface), cuya misión era servir de pasarela entre la WEB y otros lenguajes no preparados para ella, como C, C++, Pascal y Perl. El mas flexible y utilizado fue Perl, ya que tiene

Page 14: Modulo Enproceso

funcionalidades especiales para realizar un mejor manejo de nuestras aplicaciones en la web. Pero CGI, con el tiempo, comenzó a perder fuerza ante otros lenguajes de script como ASP o PHP. La principal diferencia entre un script y un programa ejecutable es que el primero se interpreta en el momento de ejecutarse, es decir, siempre esta el codigo fuente visible por el servidor y nunca existen los ejecutables compilados (los clasicos archivos .exe de DOS y Windows). A nosotros nos interesa el lenguaje de script ASP que es el que vamos a abordar, pero primero le daremos un repaso muy pequeño a otros lenguajes y tecnologías disponibles, recuerden que podemos hacer uso de todas las que pudiéramos necesitar en un proyecto. Perl Perl (Practical Extraction and Report Language) es un lenguaje de programación desarrollado por Larry Wall inspirado en otras herramientas de UNIX, para la administración de tareas propias de este sistema operativo. No establece ninguna filosofía de programación concreta. No se puede decir que sea orientado a objetos, modular o estructurado aunque soporta directamente todos estos paradigmas; su punto fuerte son las labores de procesamiento de textos y archivos. No es ni un compilador ni un intérprete, está en un punto intermedio, cuando mandamos a ejecutar un programa en Perl, se compila el código fuente a un código intermedio en memoria que se optimiza como si se fuera a elaborar un programa ejecutable pero es ejecutado por un motor, como si se tratase de un interprete. Lenguaje de programación basado en scripts portable a casi cualquier plataforma. Es muy utilizado para escribir CGIs. Uno de sus elementos más potentes son las expresiones regulares, que a partir de su versión en Perl han sido adoptadas por otros lenguajes y plataformas como .NET o Javascript. Lenguaje optimizado para el escaneo de texto arbitrario de ficheros. Es también un buen lenguaje para tareas de administración de sistemas. Es un lenguaje con intención de ser práctico en lugar de bonito PHP El lenguaje PHP es un lenguaje de programación de estilo clásico, con esto quiero decir que es un lenguaje de programación con variables, sentencias condicionales, bucles, funciones.... No es un lenguaje de marcas como podría ser HTML, XML o WML. PHP se ejecuta en el servidor, por eso nos permite acceder a los recursos que tenga el servidor como por ejemplo podría ser una base de datos. El programa PHP es ejecutado en el servidor y el resultado enviado al navegador. El resultado es normalmente una página HTML pero igualmente podría ser una pagina WML. Su interpretación y ejecución se da en el servidor, en el cual se encuentra almacenado el script, y el cliente sólo recibe el resultado de la ejecución. Cuando el cliente hace una petición al servidor para que le envíe una página web, generada por un script PHP, el servidor ejecuta el intérprete de PHP, el cual procesa el script solicitado que generará el

Page 15: Modulo Enproceso

contenido de manera dinámica, pudiendo modificar el contenido a enviar, y regresa el resultado al servidor, el cual se encarga de regresárselo al cliente. Permite la conexión a diferentes tipos de servidores de bases de datos tales como MySQL, Postgres, Oracle, ODBC, IBM DB2, Microsoft SQL Server y SQLite; lo cual permite la creación de Aplicaciones web muy robustas. PHP también tiene la capacidad de ser ejecutado en la mayoría de los sistemas operativos tales como UNIX (y de ese tipo, como Linux), Windows y Mac OS X, y puede interactuar con los servidores de web más populares ya que existe en versión CGI, módulo para Apache, e ISAPI. El modelo PHP puede ser visto como una alternativa al sistema de Microsoft que utiliza ASP.NET/C#/VB.NET, a ColdFusion de la compañía Macromedia, a JSP/Java de Sun Microsystems, y al famoso CGI/Perl. Aunque su creación y desarrollo se da en el ámbito de los sistemas libres, bajo la licencia GNU, existe además un compilador comercial llamado Zend Optimizer. Cold Fusion ColdFusion fue desarrollado por Allaire Corporation para ser una alternativa poderosa y simple de usar a Perl y otras tecnologías CGI. ColdFusion, según Macromedia, combina un lenguaje intuitivo, basado en tags, rico, con herramientas visuales y un servidor de aplicaciones web probadamente confiable, para entregar la manera más rápida de desarrollar poderosas aplicaciones web. ColdFusion es una herramienta que corre en forma concurrente con la mayoría de los servidores web de Windows, Linux y Solaris (también en servidores web personales en Windows 98 y puede ser usado para intranets). El servidor de aplicaciones web de ColdFusion trabaja con el servidor HTTP para procesar peticiones de páginas web. Cada vez que se solicita una página de ColdFusion, el servidor de aplicaciones ColdFusion ejecuta el script o programa contenido en la página. ColdFusion es un lenguaje de programación, puede crear y modificar variables igual que en otros lenguajes de programación que nos son familiares. Interactúa de manera simple con bases de datos (Sybase, Oracle, MySQL,SQL, o Access). Usando SQL estándar, las páginas y aplicaciones web pueden fácilmente recuperar, guardar, formatear y presentar información dinámicamente. JSP / JavaServlets JavaServer Pages (JSP) es la tecnología para generar páginas web de forma dinámica en el servidor, desarrollado por Sun Microsystems, basado en scripts que utilizan una variante del lenguaje java. La tecnología JSP, o de JavaServer Pages, es una tecnología Java que permite a los programadores generar dinámicamente HTML, XML o algún otro tipo de página web. Esta tecnología permite al código Java y a algunas acciones predefinidas ser embebidas

Page 16: Modulo Enproceso

en el contenido estático. En las jsp, se escribe el texto que va a ser devuelto en la salida (normalmente código HTML) incluyendo código java dentro de él para poder modificar o generar contenido dinámicamente. El código java se incluye dentro de las marcas de etiqueta <% y %>. En una posterior especificación, se incluyeron taglib; esto es, la posibilidad de definir etiquetas nuevas que ejecuten código de clases java. La asociación de las etiquetas con las clases java se declaran en archivos de configuración en XML. La principal ventaja de JSP frente a otros lenguajes es que permite integrarse con clases Java (.class) lo que permite separar en niveles las aplicaciones web, almacenando en clases java las partes que consumen más recursos así como las que requieren más seguridad, y dejando la parte encargada de formatear el documento html en el archivo jsp. Además Java se caracteriza por ser un lenguaje que puede ejecutarse en cualquier sistema, lo que sumado a jsp le da mucha versatilidad. Sin embargo JSP no se puede considerar un script al 100% ya que antes de ejecutarse el servidor web compila el script y genera un servlet, por lo tanto se puede decir que aunque este proceso sea transparente para el programador no deja de ser una aplicación compilada. La ventaja de esto es algo más de rapidez y disponer del API de Java en su totalidad. Debido a esto la tecnología JSP, así como Java está teniendo mucho peso en el desarrollo web profesional (sobre todo en intranets). Extenciones de FrontPage Las extensiones de Frontpage son pequeñas funcionalidades añadidas por dicho programa a las páginas web básicas. Frontpage las pone a disposición del diseñador de páginas para que las incluya en su sitio web, si así lo desea. Las extensiones de Frontpage son, por ejemplo, contadores, formularios que realizan pequeñas tareas automáticamente o ayudas para la publicación de la web. En definitiva, son pequeños scripts de servidor para hacernos la vida más sencilla o ampliar las funcionalidades de nuestras páginas. Las tareas de publicación de la web se refiere a una manera muy cómoda de trabajar directamente con el servidor de alojamiento por la que a medida que vamos construyendo la página esta se va actualizando directamente en el servidor web, de modo que no tendremos que realizar acción alguna para publicar nuestro trabajo una vez realizado sino que ya estará publicado en Internet y accesible a todos los usuarios. Java Applets Una Java applet es una applet escrita en el lenguaje de programación Java. Los applets de Java pueden correr en un navegador web utilizando la Java virtual machine (JVM), o en el AppletViewer de Sun.

Page 17: Modulo Enproceso

Entre sus características podemos mencionar un esquema de seguridad que permite que los applets que se ejecutan en el equipo no tengan acceso a partes sensibles (por ej. no pueden escribir archivos), a excepción de que uno mismo le dé los permisos necesarios en el sistema; la desventaja de este enfoque es que la entrega de permisos es engorrosa para el usuario común, lo cual juega en contra de uno de los objetivos del mismo: entregar una forma fácil de ejecutar aplicaciones ricas desde el navegador web. ActiveX Es una tecnología que esta basada en el Modelo de Componentes de Objetos (COM) de Microsoft. Los componentes ActiveX abarcan una amplia variedad de elementos, desde los vistosos controles deslizantes y giratorios hasta componentes no visuales que permiten acceder a datos o proporcionar funciones de correo electronico. Los ActiveX se añaden a las paginas Web utilizando la etiqueta <OBJECT> que permite que el navegador identifique el componente. Dentro de esta etiqueta se pueden ingresar todas las propiedades y caracteristicas necesarias para el funcionamiento del control. XML XML es la sigla del inglés eXtensible Markup Language (lenguaje de marcado ampliable o extensible) desarrollado por el World Wide Web Consortium (W3C). Es una versión simple de SGML. Su objetivo principal es conseguir una página web más semántica. Aunque una de las principales funciones con las que nace sería suceder al HTML, separando la estructura del contenido y permitiendo el desarrollo de vocabularios modulares, compatibles con cierta unidad y simplicidad del lenguaje (objetivo que se viene desarrollando a través de la especificación XHTML), tiene otras aplicaciones entre las que destaca su uso como estándar para el intercambio de datos entre diversas aplicaciones o software con lenguajes privados como en el caso del SOAP. Al igual que el HTML, se basa en documentos de texto plano en los que se utilizan etiquetas para delimitar los elementos de un documento. Sin embargo, XML define estas etiquetas en función del tipo de datos que está describiendo y no de la apariencia final que tendrán en pantalla o en la copia impresa, además de permitir definir nuevas etiquetas y ampliar las existentes. ASP Active Server Pages (ASP) es una tecnología del lado servidor de Microsoft para páginas web generadas dinámicamente, que ha sido comercializada como un anexo a Internet Information Server (IIS). ASP ha pasado por cuatro iteraciones mayores, ASP 1.0 (distribuido con IIS 3.0), ASP 2.0 (distribuido con IIS 4.0), ASP 3.0 (distribuido con IIS 5.0) y ASP.NET (parte de la plataforma .NET de Microsoft). Las versiones pre-.NET se denominan actualmente (desde 2002) como ASP clásico.

Page 18: Modulo Enproceso

En el último ASP clásico, ASP 3.0, hay seis objetos integrados disponibles para el programador, Application, ASPError, Request, Response, Server y Session. Cada objeto corresponde a un grupo de funcionalidades frecuentemente usadas y útiles para crear páginas web dinámicas. Las páginas pueden ser generadas mezclando código de scripts del lado del servidor (incluyendo acceso a base de datos) con HTML y código del lado del servidor.

Page 19: Modulo Enproceso

UNIDAD 3 Formularios Hasta ahora hemos visto la forma en la que el HTML gestiona y muestra la información, esencialmente mediante texto, imágenes y enlaces. Nos queda por ver de qué forma podemos intercambiar información con nuestro visitante. Desde luego, este nuevo aspecto resulta primordial para gran cantidad de acciones que se pueden llevar a cabo mediante el Web: Comprar un articulo, rellenar una encuesta, enviar un comentario al autor... Hemos visto anteriormente que podíamos, mediante los enlaces, contactar directamente con un correo electrónico. Sin embargo, esta opción puede resultar en algunos casos poco versátil si lo que deseamos es que el navegante nos envíe una información bien precisa. Es por ello que el HTML propone otra solución mucho más amplia: Los formularios. Los formularios son esas famosas cajas de texto y botones que podemos encontrar en muchas páginas web. Son muy utilizados para realizar búsquedas o bien para introducir datos personales por ejemplo en sitios de comercio electrónico. Los datos que el usuario introduce en estos campos son enviados al correo electrónico del administrador del formulario o bien a un programa que se encarga de procesarlo automáticamente. Ventajas Las ventajas de un formulario con respecto a una dirección de correo pueden ser:

• Ayudar al visitante a componer el mensaje, y así incentivar su comunicación. • Forzar a que el visitante introduzca cierta información que te pueda resultar

importante. • Ofrecer más mecanismos de comunicación, cada uno elegirá el que más le

convenga.

Como funcionan

Los formularios son definidos por medio de las etiquetas <form> y </form>. Entre estas dos etiquetas colocaremos todos los campos y botones que componen el formulario. Dentro de esta etiqueta <form> debemos especificar algunos atributos:

action

Define el tipo de acción a llevar a cabo con el formulario. Como ya hemos dicho, existen dos posibilidades:

• El formulario es enviado a una dirección de correo electrónico • El formulario es enviado a un programa o script que procesa su contenido

Page 20: Modulo Enproceso

En el primer caso, el contenido del formulario es enviado a la dirección de correo electrónico especificada por medio de una sintaxis de este tipo: <form action="mailto:[email protected]" ...>

Si lo que queremos es que el formulario sea procesado por un programa, hemos de especificar la dirección del archivo que contiene dicho programa. La etiqueta quedaría en este caso de la siguiente forma:

<form action="dirección del archivo" ...>

method

Este atributo se encarga de especificar la forma en la que el formulario es enviado. Los dos valores posibles que puede tomar esta atributo son post y get.

GET y POST son dos métodos empleados para enviar los datos de los formularios desde el navegador al servidor Web, especificados mediante la directiva METHOD. La principal diferencia entre POST y GET es que el CGI recibirá los datos enviados con POST leyendo la entrada estándar, mientras que los enviados con GET se recibirán por líneas de comandos y la variable de entorno QUERY_STRING. Desde un punto de vista puramente práctico, debido a que muchos sistemas operativos ponen límite a la longitud de la línea de comandos, suele ser mejor usar POST, reservando GET para formularios con pocos datos.

enctype

Se utiliza para indicar la forma en la que viajará la información que se mande por el formulario. En el caso más corriente, enviar el formulario por correo electrónico, el valor de este atributo debe de ser "text/plain". Así conseguimos que se envíe el contenido del formulario como texto plano dentro del email.

Si queremos que el formulario se procese automáticamente por un programa, generalmente no utilizaremos este atributo, de modo que tome su valor por defecto, es decir, no incluiremos enctype dentro de la etiqueta <form>

Ejemplo de etiqueta <form> completa

Así, para el caso más habitual -el envío del formulario por correo- la etiqueta de creación del formulario tendrá el siguiente aspecto:

Page 21: Modulo Enproceso

<form action="mailto:[email protected] (o nombre del archivo de proceso)" method="post" enctype="text/plain">

Entre esta etiqueta y su cierre colocaremos el resto de etiquetas que darán forma a nuestro formulario, las cuales serán vistas en capítulos siguientes.

Campos Campos de texto Se utiliza la etiqueta <INPUT> de esta manera: <INPUT TYPE="text" NAME="nombre_del_campo" SIZE=10> El atributo TYPE indica que es un campo de texto. NAME es el nombre del campo, tiene que describir lo que hay dentro. SIZE te permite ajustar el tamaño del campo. La etiqueta NO tiene cierre con </INPUT> Areas de texto Se utiliza la etiqueta <TEXTAREA> de esta manera: <TEXTAREA NAME="nombre_del_campo" COLS="20" ROWS="4> Texto inicial dentrodel textarea< BR></TEXTAREA> El atributo NAME es el nombre del campo. COLS indica el número de columnas del área de texto y ROWS en de filas. Botón de envío Se utiliza la etiqueta <INPUT> de esta manera: <INPUT TYPE="submit" VALUE="Envíalo YA!"> El atributo TYPE indica que es un botón submit (de envio). VALUE indica lo que va escrito dentro del botón. La etiqueta NO tiene cierre con </INPUT>, NO hace falta darle un nombre con NAME Listas de selección Se utiliza la etiqueta <SELECT>, veamos un ejemplo: <p>Su cantante favorito:</p> <select name="top5" size=3> <option> Julio Iglesias </option> <option> Michael Jackson </option> <option> Roberto Carlos </option> </select> En NAME definimos el nombre del campo, en SIZE su tamaño. Dentro de la etiqueta <OPTION> encerramos las opciones de la lista. Botones de opcion (Radio) Se utiliza la etiqueta <INPUT> pero le definimos otras propiedades, veamos un ejemplo:

Page 22: Modulo Enproceso

¿Cuál es su método de pago? <input type=radio name="metodo" value="Mastercard"> Mastercard <br> <input type=radio name="metodo" value="Visa"> Visa <br> <input type=radio name="metodo" value="AmericanExpress"> American Express EN TYPE le pusimos RADIO para definer las opciones, en VALUE el valor para cada opcion. Recuerde que siempre debemos poner un mismo nombre de NAME para que funcionen como botones de opcion de una misma selección, de lo contrario serán botones sueltos. Botones Ocultos Se utiliza la etiqueta <INPUT> pero le definimos otras propiedades, veamos un ejemplo: <input type=hidden name="prueba" value="5"> La unica diferencia con un campo de texto es que definimos TYPE como HIDDEN, este tipo de campos tiene multiples utilidades. Tabulando los campos Field 1: <input type=text size=40 maxlength=40 tabindex=4><br> Field 2: <input type=text size=40 maxlength=40 tabindex=1><br> Field 3: <input type=text size=40 maxlength=40 tabindex=3><br> <input type=button tabindex=2 value="Haz clic"><br> Mediante la propiedad TABINDEX (ubicandola en cualquier TAG de formulario) definimos el orden de tabulación de los campos, muy importante para la comodidad del visitante. Mezclamos Formularios con JavaScript Con JavaScript podemos hacer procesamiento de datos, comparar y comprobar información, etc… pero como hariamos para enviar información de un formulario y llamar a un script para que realice alguna función? Veamos unos ejemplos: Agregando JavaScript en el botón <INPUT type=button value=Clic Aquí OnClick=”javascript:Submit1()”> Lo que hicimos en este ejemplo fue definir el tipo de boton como BUTTON ya que si eligieramos la propiedad SUBMIT enviaria el forumario sin pasar por la comprobación de JavaScript. Utilizando un evento agregamos una pequeña porción de codigo JavaScript que le indica al boton que todo el contenido del formulario será comprobado primero por la función Submit1() y luego se enviara

Page 23: Modulo Enproceso

Agregando JavaScript en la acción del formulario <FORM name=form1 method=post OnSubmit=”javascript:Submit1()”> Aquí volvemos a invocar la función Submit1() pero el boton de envio quedaria asi: <INPUT type=submit value=Clic Aquí> Agregamos otro evento en la etiqueta FORM y le decimos que una vez que se envie el formulario pase por la función de JavaScript para ser comprobado. Con ambas formas logramos lo mismo, pero son dos buenos ejemplos de cómo existen varias formas de trabajar. Concejos en el armado de Formularios

1. Procura reducir al máximo el numero de campos. 2. Evita los combos. 3. Es mejor si la información no se fragmenta demasiado. 1. Reduce al máximo el numero de campos en los formularios Si en internet siempre estamos hablando de menos es mas, cuando hablamos de formularios, menos es mucho... debemos tender a cero. A. Procura reutilizar campos:

Por ejemplo: Correo electronico = nombre de usuario. DNI = password.

B. Evita formalidades Ejemplos de campos que no son realmente necesarios: Tratamiento (Don, Sr., Sra.,) Tipo de Via (Calle, Camino, ...) Fecha de nacimiento (es esto realmente necesario?, si lo es, indica para que lo estas pidiendo)

2. Evita el uso de los combos en los formularios. 1. Es mas rápido escribir que seleccionar la opción en el combo. 2. La pagina pesa menos. El usuario se la baja mas rápido y acaba antes el proceso. En la mayoria de los casos es mas rapido escribir el texto que buscarlo en un combo. Escribir la palabra "España" puede llevar entre 1 y 2 segundos mas o menos, elegirla en un combo donde podemos encontar todos los paises del mundo puede llevar un promedio de 4 y 6 segundos. Si usamos el truco de preseleccionar el pais en el combo, tambien podemos pre-escribir la palabra en el campo de texto.

Page 24: Modulo Enproceso

El unico caso en el que el uso de combos esta justificado es en aquellos en los que la respuesta esta predefinida tipo rangos, valoraciones subjetivas, marcas, etc... pero no lo uses para paises, provincias, números, etc... 3. Evitar fragmentar la información. El caso mas típico es el de la dirección donde por lo general se ve así:

Tipo de via:, Dirección:, Numero:, Codigo postal:... Este caso a su vez suele estar alimentado con varios combos, con lo que el usuario debe leer cada campo, entender lo que le están pidiendo y rellenarlo... Podemos simplificarlo usando una única línea donde el usuario escriba toda la dirección, como si se tratase de una carta.

Dirección completa: Calle Martinez Izquierdo N23, 7h. Código postal: 12002.

De esta forma solo tenemos una línea para el campo "dirección", y luego 3 mas para indicar código postal, población y provincia. El usuario se sentirá mas cómodo si puede poner lo que quiera y no le obligamos a rellenar cosas prefijadas que a lo mejor no entiende o no se ajusta a su caso particular. Luego quizás quede destacar el caso de algunos bancos donde el campo "profesión" obliga al usuario a elegir una opción de la lista que el banco dispone, haciendo uso de un buscador, códigos de profesión, etc, etc... Realmente no es recomendable. El beneficio que pueda dar esta información frente al fastidio que produce al usuario no tiene equivalencia.

Page 25: Modulo Enproceso

UNIDAD 4 ASP ASP son las siglas de Active Server Pages y es un entorno creado por Microsoft pensado para ejecutar aplicaciones dinámicas en servidores web. ¿Como trabaja en el servidor? Un ejemplo muy comun de aplicación dinamica en el acceso de una BD y mostrar los resultados de forma dinámica.

1. Desde un cliente (navegador) se llama al archivo .asp que se encuentra alojado en el servidor.

2. El servidor analiza la pagina ASP y genera una nueva pagina de codigo HTML cuyo contenido dependera de la información que se solicite y las funciones que se ejecuten en el servidor.

3. El servidor devuelve al cliente la pagina ya procesada en formato HTML .

¿Cómo se ecribe un ASP? El lenguaje se escribe intercalándolo con el lenguaje HTML dentro de las paginas, la ejecución es lineal por lo que cada vez que se llama a una pagina el servidor la lee de arriba hacia abajo encontrando HTML, scripts del lado del cliente, estilos, ASP, etc y una vez que termino la lectura y la ejecución de los scripts muestra el resultado en HTML puro. La forma de indicarle al servidor las instrucciones de ASP es colocándolas entre los símbolos <% %>, a esta forma de escribir codigo se la llama “embeber codigo” ya que

Page 26: Modulo Enproceso

estamos incrustando codigo ASP dentro de una pagina HTML, veamos un pequeño ejemplo <HTML> <HEAD> </HEAD> <BODY> Aquí hay un script: <% Response.Write (“soy un script”) Response.Write (now()) %> </BODY> </HTML>

En este caso tenemos dos lineas de codigo entre los simbolos <% %> que pertenecen a ASP. Utilizan el objeto Response para imprimir información en pantalla y la funcion now() de VBScript para mostrar la fecha y hora exacta del momento en que se cargo en memoria el script, noten que usamos el objeto Response nuevamente. Si probamos este script veremos el texto y a su lado la fecha y hora.

Intercalando Scripts Dentro de una pagina ASP se puede intercalar porciones de codigo sin problemas, recuerden que se ejecutara en forma lineal. Veamos el ejemplo anterior pero de forma intercalada. <HTML> <HEAD> </HEAD> <BODY> Aquí hay un script:<br> <% Response.Write (“soy un script”) %> <br> Fecha y Hora:<br> <% Response.Write (now()) %> </BODY> </HTML>

Ahora modificamos el ejemplo separando dos porciones de codigo y agregando la etiqueta de HTML <br> para espaciar el resultado de la ejecución.

Fundamentos de VBScript En unos de los ejemplos anteriores dijimos que estabamos utilizando una funcion de VBScript, este es uno de los lenguajes mas difundidos en el ambiente WEB junto con JavaScript y al igual que este se puede utilizar tanto para crear scripts del lado del servidor como del lado del cliente, en unidades anteriores habiamos aprendido que para

Page 27: Modulo Enproceso

los scripts del lado del cliente usaríamos JavaScript ya que tiene mayor soporte en la mayoria de los navegadores. Ahora vamos a trabajar con scripts del lado del servidor y nuestras prácticas en ASP las vamos a realizar utilizando VBScript. ¿Qué es? VBScript es un subconjunto de Visual Basic, esto quiere decir que comparte una gran cantidad de funciones con este lenguaje y su lógica es casi idéntica, pero hay algunas diferencias:

- VBScript soporta explícitamente un solo tipo de datos: Variant - VBScript es un lenguaje interpretado - Hay ciertas diferencias sintacticas en el uso de algunas funciones internas - No se pueden crear controles Actives con VBScript - VBScript no posee entorno grafico de programación

Variables Como ya vimos, VBSCript solo soporta un tipo de variable, el Variant, que es un tipo de dato especial y representa a todos y cada uno de los tipos de datos conocidos. De esta forma, podemos usar Variant para representar una cadena, enteros, objetos, etc. Aunque solo existe un tipo de datos, podemos hacer distinciones mas precisas acerca de la naturaleza de la información a travez de los subtipos incluidos en el tipo Variant, ademas vbscript nos provee de funciones para convertir los tipos de datos de un tipo a otro. Subtipo Descripción Empty Variable sin inicializar Null Variable intencionadamente vacia Boolean Dos valores posibles: True o False Byte Entero entre 0 y 255 Integer Entero entre -32.768 y 32.768 Currency Numero entre -922.337.203.685.477,5808

y 922.337.203.685.477,5807 Long Numero entre -2.147.483.648 y

2.147.483.647 Single Numero de precision simple Double Numero de precision doble Date Fecha String Cadena de longitud variable Object Contiene un objeto Error Contiene un numero de error Creación de una variable

Page 28: Modulo Enproceso

Existen dos formas de creación de variables, la declaración implícita y la declaración explicita, veamos ejemplos: Declaración implícita: <% v = 1 %> Aquí creamos una variable y le dimos un valor.

Declaración explicita: <% Dim v %> Aquí definimos una variable, luego le deberíamos asignar algun valor.

Para asignarle valor a una variable se utiliza el signo igual (=), por ejemplo: Dim v v = 1 (aqui declaramos un numero) V = ”hola, soy una cadena” (aquí declaramos una cadena de texto) Conversión de Tipos Todas las funciones tienen la misma sintaxis: Funcion(expresión), siendo expresión el dato que se desea convertir Cbool Convierte la expresion a un tipo booleano Cbyte Convierte la expresion a un tipo byte CInt Convierte la expresion a un tipo Integer Clng Convierte la expresion a un tipo Long Csng Convierte la expresion a un tipo Single Cdbl Convierte la expresion a un tipo Double Ccur Convierte la expresion a un tipo Currency Cdate Convierte la expresion a un tipo Date Cstr Convierte la expresion a un tipo String Entonces podriamos trasnformar una variable a Integer de esta forma: Var = 1 Cint(Var) Concatenacion de cadenas Podemos unir cadenas y agregar variables a estas utilizando el operador de concatenación de cadenas, el símbolo &: text = “Esto es ” & “una cadena” Podriamos pegar el texto de la variable i anterior, de este modo: text = “Mire: ” & i

Page 29: Modulo Enproceso

Veriamos: Mire hola, soy una cadena Comentarios VBScript acepta comentarios marcados con apostrofe. Estos se eliminan al procesarse la secuencia de comandos y no se envia al explorador. <% ‘ Esto es un comentario. i = i + 1 %> Sentencias Condicionales

Las sentencias condicionales nos permiten ejecutar o no unas ciertas instrucciones dependiendo del resultado de evaluar una condición. Las más frecuentes son la instrucción if y la instrucción select.

Sentencia if ... else Cuando queremos que el programa, llegado a un cierto punto, tome un camino determinado en determinados casos y otro diferente si las condiciones de ejecución difieren, nos servimos del conjunto de instrucciones If, Then y Else. La estructura de base de este tipo de instrucciones es la siguiente: IF condición THEN Instrucción 1 Instrucción 2 ... ELSE Instrucción A Instrucción B ... END IF Llegados a este punto, el programa verificará el cumplimiento o no de la condición. Si la condición es cierta las instrucciones 1 y 2 serán ejecutadas. De lo contrario (Else), las instrucciones A y B serán llevadas a cabo. Una vez finalizada la estructura, deberemos cerrar con un End If. Esta estructura de base puede complicarse un poco más si tenemos cuenta que no necesariamente todo es blanco o negro y que muchas posibilidades pueden darse. Es por ello que otras condiciones pueden plantearse dentro de la condición principal. Hablamos por lo tanto de condiciones anidadas que tendrían una estructura del siguiente tipo: IF condición THEN Instrucción 1 Instrucción 2 ...

Page 30: Modulo Enproceso

ELSE IF condición2 THEN Instrucción A Instrucción B ... ELSE Instrucción X ... END IF END IF De este modo podríamos introducir tantas condiciones como queramos dentro de una condición principal. En este tipo de estructuras es importante cerrar correctamente cada uno de los IF con sus END IF correspondientes. De gran ayuda es la instrucción ELSE IF que permite en una sola línea y sin necesidad de añadir un END IF introducir una condición anidada. Un ejemplo: <html> <head> <title>Ejemplo de ASP</title> </head> <body> <% Dim a,b a = 8 b = 3 if a < b then Response.Write("a es menor que b") else Response.Write("a no es menor que b") end if %> </body> </html> En este ejemplo la condición no es verdadera por lo que se ejecuta la parte de código correspondiente al else. Sentencia select ... case Con la sentencia select case podemos ejecutar unas u otras instrucciones dependiendo del valor de una variable, en el ejemplo anterior, dependiendo del valor de la variable posicion se ejecuta el bloque 1 cuando el valor es "arriba", el bloque 2 cuando el valor es "abajo" y el bloque 3 si no es ninguno de los valores anteriores. <html> <head> <title>Ejemplo de ASP</title>

Page 31: Modulo Enproceso

</head> <body> <% Dim posicion posicion = "arriba" select case posicion case "arriba" ' Bloque 1 Response.Write("La variable contiene") Response.Write(" el valor arriba") case "abajo" ' Bloque 2 Response.Write("La variable contiene") Response.Write(" el valor abajo") case else ' Bloque 3 Response.Write("La variable contiene otro valor") Response.Write(" distinto de arriba y abajo") end select %> </body> </html> Bucles Podemos usar los siguientes: For…Next En muchas ocasiones resulta necesario el ejecutar un conjunto de instrucciones un número definido de veces. Esto puede ser llevado a cabo a partir de la instrucción FOR/NEXT. La estructura clásica: FOR contador=número inicial TO número final STEP incremento Instrucción 1 Instrucción 2 ... NEXT A partir de este tipo de estructuras ejecutamos las instrucciones contenidas entre el FOR y el NEXT un cierto número de veces definido por el número inicial, final y el incremento. El incremento resulta de 1 por defecto. <html> <head> <title>Ejemplo de ASP</title> </head> <body>

Page 32: Modulo Enproceso

Inicio<BR> <% Dim i for i=0 to 9 Response.Write("El valor de i es " & i & "<br>") next %> Final<BR> </body> </html> While…Wend

Estos bucles son un vestigio de los primeros tiempos de BASIC. Hoy día han sido sustituidos por los bucles DO WHILE ... LOOP, cuyo funcionamiento es idéntico. Sin embargo, los intérpretes actuales todavía los soportan como complemento, por aquellos programadores acostumbrados al modelo antiguo. Su estructura general es la siguiente:

WHILE (condición) BLOQUE DE SENTENCIAS WEND <html> <head> <title>Ejemplo de ASP</title> </head> <body> Inicio<BR> <% Dim i i=0 while i<10 Response.Write("El valor de i es " & i & "<br>") i=i+1 wend %> Final<BR> </body> </html> Do While…Loop Otra forma de realizar este tipo de secuencias bucle es a partir de la instrucción DO WHILE. En este caso lo que especificamos para fijar la extensión del bucle no es el número de vueltas sino el que se cumpla o no una condición. La estructura de este tipo de bucles es análoga a la de los bucles FOR/NEXT: DO WHILE condición Instrucción 1 Instrucción 2

Page 33: Modulo Enproceso

... LOOP El bucle se dará mientras la condición propuesta siga siendo válida. Como se verá en ejemplos posteriores, este tipo de bucles resulta muy práctico para la lectura de bases de datos. Todo este tipo de controladores de flujo (condiciones y bucles) pueden ser matizados y optimizados a partir del uso de operadores lógicos. Así, podemos exigir que sean dos las condiciones que se den para llevar a cabo un conjunto de instrucciones: IF condición 1 AND condición 2 THEN ... También podemos requerir que sea una de las dos: IF condición 1 OR condición 2 THEN... Del mismo modo, es posible exigir que la condición de un bucle DO sea la inversa a la enunciada: DO WHILE NOT condición He aquí, en conclusión, un conjunto de recursos básicos para controlar el desarrollo de programas. Su utilidad resultará más que patente y su uso irá haciéndose intuitivo a medida que nos familiaricemos con el lenguaje. <HTML> <HEAD> <TITLE>Prueba de DO WHILE ... LOOP</TITLE> </HEAD> <BODY> <% i = 0 DO WHILE i = 5 ' Ejecuta mientras i no sea igual a 5 Response.Write i i = i + 1 LOOP %> </BODY> </HTML> Do Until…Loop

Este bucle funciona de manera muy similar al anterior, con la salvedad de que el BLOQUE DE INSTRUCCIONES se ejecuta hasta que (UNTIL) se cumple la condición. Cuando se cumple la condición deja de ejecutarse el bucle. La estructura general es la siguiente:

DO UNTIL (condición) BLOQUE DE INSTRUCCIONES LOOP

Page 34: Modulo Enproceso

Como siempre, la mejor manera de entender el funcionamiento es con un ejemplo.

<HTML> <HEAD> <TITLE>Prueba de DO UNTIL ... LOOP</TITLE> </HEAD> <BODY> <% i = 0 DO UNTIL i = 5 ' Ejecuta hasta que i sea igual a 5 Response.Write i i = i + 1 LOOP %> </BODY> </HTML> Rompiendo Bucles

En ocasiones es necesario interrumpir de manera forzada la ejecución de un bucle, por ejemplo si se produce una situación que aconseje la continuación del programa ignorando el resto del proceso del bucle. Para ello se emplea la instrucción EXIT. Esta instrucción presenta tres formatos distintos, según el tipo de bucle en que se implemente. Si queremos causar la ruptura de un bucle FOR... NEXT, utilizaremos EXIT FOR. Para romper un bucle DO WHILE ... LOOP o un bucle DO UNTIL ... LOOP utilizaremos la instrucción EXIT DO. Si lo que queremos es romper un bucle WHILE ... WEND usaremos EXIT WHILE.

Objetos

El ASP es un lenguaje diseñado para la creación de aplicaciones en internet. Esto quiere decir que existen toda una serie de tareas bastante corrientes a las cuales debe dar un tratamiento fácil y eficaz. Nos referimos por ejemplo al envío de e-mails, acceso a archivos, gestión de variables del cliente o servidor como pueden ser su IP o la lengua aceptada...

El lenguaje VB propiamente dicho no da una solución fácil y directa a estas tareas sino que invoca a los denominados objetos que no son más que unos módulos incorporados al lenguaje que permiten el desarrollo de tareas específicas. Estos objetos realizan de una manera sencilla toda una serie de acciones de una complejidad relevante. A partir de una llamada al objeto este realizará la tarea requerida. En cierta forma, estos objetos nos ahorran el tener que hacer largos programas para operaciones sencillas y habituales.

Algunos de estos objetos están incorporados en el propio ASP, otros deben de ser incorporados como si se tratase de componentes accesorios. Por supuesto, no podríamos ejecutar correctamente un script en el cual tuviésemos que llamar a un objeto que no estuviese integrado en el servidor. Este tipo de "plug-in" son generalmente comprados por el servidor a empresas que los desarrollan.

Como todo objeto del mundo real, los objetos del mundo informático tienen sus propiedades que los definen, realizan un cierto numero de funciones o métodos y son capaces de responder de una forma definible ante ciertos eventos.

Page 35: Modulo Enproceso

Dado el nivel de esta obra, la descripción de la totalidad de objetos con sus métodos y propiedades resulta ciertamente fuera de lugar. Nos contentaremos pues con ir describiendo los más frecuentemente utilizados y ejemplificarlos de la manera más práctica dejando la enumeración exhaustiva en forma de apéndice.

Objeto REQUEST

Este objeto encapsula la información que el cliente envia a un servidor dentro del ambito de un intercambio a travez de Internet. Si bien el objeto REQUEST es propio de IIS y ASP, la información que el navegador envia al servidor no lo es. El formato de esta información existe desde hace tiempo y responde a lo determinado por el W3C bajo la especificación CGI (lo vimos anteriormente).

El objeto Request nos devuelve informaciones del usuario que han sido enviadas por medio de formularios, por URL o a partir de cookies. También nos informa sobre el estado de ciertas variables del sistema como pueden ser la lengua utilizada por el navegador, el número IP del cliente...

Transferir variables por URL Para pasar las variables de una página a otra lo podemos hacer introduciendo dicha variable en la dirección URL de la página destino dentro del enlace hipertexto. La sintaxis sería la siguiente: <a href="destino.asp?variable1=valor1&variable2=valor2&..."></a> Para recoger la variable en la página destino lo hacemos por medio del objeto Request con el método Querystring: Request.querystring("variable1") Request.querystring("variable2")

Las dos páginas serían así:

<HTML> <HEAD> <TITLE>Página origen.asp</TITLE> </HEAD>

<BODY> <a href="destino.asp?saludo=hola&texto=Esto es una variable texto">Paso variables saludo y texto a la página destino.asp</a>

</BODY> </HTML>

<HTML> <HEAD> <TITLE>destino.asp</TITLE> </HEAD>

<BODY>

Variable saludo: <%Response.Write Request.Querystring("saludo")%><br>

Variable texto: <%Response.Write Request.Querystring("texto")%><br>

</BODY> </HTML>

Transferir variables por formulario

Page 36: Modulo Enproceso

El proceso es similar al explicado para las URLs. Primeramente, presentamos una primera página con el formulario a rellenar y las variables son recogidas en una segunda página que las procesa:

<HTML> <HEAD> <TITLE>formulario.asp</TITLE> </HEAD> <BODY> <FORM METHOD="POST" ACTION="destino2.asp"> Nombre<br> <INPUT TYPE="TEXT" NAME="nombre"><br> Apellidos<br> <INPUT TYPE="TEXT" NAME="apellidos"><br> <INPUT TYPE="SUBMIT"> </FORM> </BODY> </HTML> <HTML> <HEAD> <TITLE>destino2.asp</TITLE> </HEAD> <BODY> Variable nombre: <%=Request.Form("nombre")%><br> Variable apellidos: <%=Request.Form("apellidos")%> </BODY> </HTML>

Notemos que cambiando la propiedad del objeto obtenenos datos de diferentes formas. Vimos que con REQUEST.QueryString obtenemos datos de una URL y con REQUEST.Form de un formulario, pero podriamos utilizar el objeto sin propiedad y de ese modo tomaria los datos de la forma que vengan.

Propiedades, métodos y colecciones del objeto REQUEST

Nombre Elemento Descripción TotalBytes Propiedad Informa sobre el numero de bytes enviados

por el cliente en el cuerpo del mensaje. BinaryRead Metodo Lee el cuerpo de un mensaje http byte por

byte. ClientCertificate Colección Contiene información de seguridad Cookies Colección Contiene información de cookies Form Colección Contiene información enviada a travez de

un formulario. QueryString Colección Contiene los pares nombre=valor en una

cadena de consulta http. ServerVariables Colección Contiene el conjunto de variables de un

entorno de servidor.

Uso de ServerVariables

La coleccion ServerVariables nos da acceso a variables de entorno del servidor y del cliente.

Esta colección contiene una gran cantidad de datos, algunos de ellos tan interesantes como la dirección IP del visitante, del servidor, el nombre del servidor, etc

Page 37: Modulo Enproceso

ServerVariables forma parte del objeto Request, por lo cual para consultar estas variables recurriremos a el.

Un ejemplo:

<% Response.Write (Request.ServerVariables(“REMOTE_ADDR”)) %>

Con estas lineas imprimimos el IP del cliente que esta visitando la pagina.

Ejecutando el siguiente codigo obtendremos un listado de todos los valores de la colección.

servervar.asp <html><body> <table border=1> <%for each name in request.servervariables%> <tr><td> <%=name%> </td><td> <%=request.servervariables(name)%> </td></tr> <%next%> </table></body></html>

Objeto RESPONSE

Este objeto encapsula la informacion que el script envia al navegador. En la siguiente tabla vemos todas las propiedades, metodos y colecciones disponibles para este objeto.

Nombre Elemento Descripción Buffer Propiedad Le asignamos el valor TRUE si queremos

que el servidor procese todo el script antes de enviar la información al cliente

CacheControl Propiedad Se usa para trabajar con servidores Proxy. Charset Propiedad Permite saber al cliente que tipo de

alfabeto usa el servidor. ContentType Propiedad Permite saber el tipo/subtipo http de la

información que le envia el servidor. Expires Propiedad Es la cantidad de tiempo, en minutos, que

un cliente puede mantener una pagina en su cache.

ExpiresAbsolute Propiedad Es la fecha y la hora de expiracion de una pagina en la cache.

IsClientConnected Propiedad Es TRUE, si el cliente aun esta conectado con el servidor.

PICS Propiedad Es una cadena que indica el valor PICS. Status Propiedad Devuelve el numero de codigo de estado

http. AddHeader Metodo Agrega una variable al encabezado http. AppendLog Metodo Envia información al registro del servidor

web.

Page 38: Modulo Enproceso

BinaryWrite Metodo Envia bytes al cliente, en vez de caracteres.Clear Metodo Vacia el buffer End Metodo Termina el procesamiento del script Flush Metodo Envia la salida del script inmediatamente,

en vez de mantenerla en el buffer Redirect Metodo Envia la salida a otro sitio web Write Metodo Envia una cadena a la salida del navegador Cookies Colección Lee o escribe información en cookies en el

cliente.

Como podemos ver, el objeto RESPONSE tiene muchas propiedades y metodos, no vamos a hacer una descripción de todos y nos abocaremos a los mas importantes.

Uso del metodo WRITE

Este es el metodo mas utilizado del objeto RESPONSE, mediante este metodo enviamos cadenas al cliente que se imprimiran en la pantalla. Por ejemplo:

<% Response.Write (“Hola, estoy imprimiendo en pantalla”) %>

Tambien podemos enviar dentro de la cadena codigo HTML y sera representando por el navegador, por ejemplo:

<% Response.Write (“<b>Hola, estoy imprimiendo en pantalla</b>”) %>

Con lo cual estamos mostrando el texto en negrita.

Si vamos a imprimir solo una linea tenemos la posibilidad de usar un truquito para no tener que escribir el objeto y su propiedad completa, de este modo:

<%= (“<b>Hola, estoy imprimiendo en pantalla</b>”)%>

El signo “=” reemplaza a RESPONSE.Write, solo cuando se trata de una sola linea de codigo.

Imprimiendo valores de funciones de VBScript

Podemos usar valores devueltos por una funcion como parámetro de salida del metodo Write del objeto RESPONSE. Por ejemplo, para devolver la hora actual, podemos utilizar la funcion Time() de VBScript de este modo:

<% Response.Write Time() %>

Veremos la hora actual en la pantalla.

Page 39: Modulo Enproceso

Uso del metodo REDIRECT

El método Redirect permite al explorador que se conecte con una dirección URL diferente. (Nota: debemos usar este método antes de enviar cualquier resultado al navegador cliente, en caso contrario produce un error).

Ejemplo:

<%response.redirect "http://www.cervantes.edu.ar"%>

El navegador se dirigirá a la URL especificada.

Objeto Session

Este objeto permite almacenar la información necesaria para una sesion de usuario en nuestro sistema. Las variables almacenadas con este objeto no se pierden mientras el usuario se mantenga en el sitio y el servidor no vacie la varible pasado el tiempo definido para las varibles de session.

Sintaxis:

Session(“nombre_variable”) = valor

Ejemplo:

<% Session(“usuario”) = “Nombre” Response.Write Session(“usuario”) %>

Si en algun momento deseamos vaciar la variable de session deberiamos utilizar el metodo Abandon, de este modo:

<% Session.Abandon %>

Acceso a Datos

Uno de los aspectos mas poderosos de ASP es la capacidad de trabajar con información almacenada en bases de datos, para ello los servidores que ejecutan ASP utilizan una tecnología llamada ADO (ActiveX Data Objects). Esta nos hace muy sencillo el acceso a datos y nos permite trabajar con muchas diferentes bases de datos.

ADO

ADO es una colección de objetos que permite a las aplicaciones comunicarse con las bases de datos de una forma consistente. Cada objeto en el modelo ADO representa un elemento en particular que se usa cuando un programa trabaja con datos.

Page 40: Modulo Enproceso

Objeto Connection: representa el vinculo con la base de datos que estamos utilizando.

Objeto RecordSet: representa los datos que recuperamos de la base de datos.

Objeto Command: representa instrucciones que podemos utilizar para interactuar con la base de datos.

Cada objeto tiene sus propiedades y metodos.

Uso de ADO, ODBC y OLE DB

Antes de meternos en la programación, necesitamos entender la relacion que une a ADO y OLE DB. Entender OLE DB es importante porque cuando configuremos el objeto Connection para enlazarnos a una base de datos tendremos que declarar un proveedor del cual obtener la información

OLE DB es una tecnología que mejora ODBC (Open Database Connectivity) la cual permite que las bases de datos de diferentes fabricantes trabajen juntas. Es un interprete que hace que todas las bases de datos parezcan iguales entre si y nos permite trabajar en cada programa del mismo modo sin reparar en el funcionamiento interno de cada una.

En el siguiente cuadro lo podemos ver gráficamente:

La ventaja de trabajar con ODBC es que solo necesitamos aprender una metodología para trabajar con muchas bases de datos. Prácticamente todos los fabricantes de bases de datos proveen lo que se llaman “Drivers” que permiten instalarse para utilizar las bases con ODBC

Uso del administrador de origenes de datos ODBC de Windows

Para crear este vínculo, nos servimos de los conectores ODBC (Open DataBase Connectivity) los cuales establecen el enlace con la base de datos.

Oracle MS Access DB2

ODBCHago la consulta la BD

Page 41: Modulo Enproceso

El primer paso para crear esta conexión es ir al panel de configuración y abrir el icono ODBC 32bits. Dentro de él, deberemos crear un DSN (Data Source Name) de tipo sistema o usuario. Para ello nos colocamos en la solapa correspondiente (DSN sistema o DSN usuario) y seleccionamos "Añadir". A continuación se nos pedirá seleccionar los controladores de la aplicación que hemos utilizado para crear la base de datos, el nombre que le queremos asignar (aquel que empleemos en nuestros scripts) y el camino para encontrarla en el disco duro. Esta DSN permite en realidad definir la base de datos que será interrogada sin necesidad de pasar por la aplicación que hayamos utilizado para construirla, es decir, con simples llamadas y órdenes desde nuestros archivos ASP podremos obtener los datos que buscamos sin necesidad de ejecutar el Access o el MySQL los cuales, evidentemente, no tendrán por qué encontrarse en el servidor donde trabajemos.

Uso de proveedores OLE DB

OLE DB interactua con los datos a travez de una capa de software llamada proveedor OLE DB. Este se parece a un controlador ODBC, ya que provee un mecanismo para traducir estructuras de datos a algun estandar comun, ampliamente soportado. Los fabricantes de bases de datos publican proveedores OLE DB, asi como controladores ODBC. Veamos una lista de los mas comunes.

Base de Datos Cadena del proveedor ODBC Provider=MSDASQL Microsoft Index Server Provider=MSIDXS Microsoft Active Directory Provider=ADSDSOObject Microsoft Access Provider=Microsoft.Jet.OLEDB.4.0 Microsoft SQL Server Provider=SQLOLEDB Oracle Provider=MSDAORA

Cadenas de conexion

Para obtener un objeto debemos usar el metodo Open y asignarle un valor de cadena de conexión valido.

Page 42: Modulo Enproceso

Las cadenas de conexión proveen a un objeto Connection la información que necesitamos para vincularnos con una base de datos. Esta compuesta por una seria de pares Nombre=Valor, cada uno de estos pares esta separado por un punto y coma. Por ejemplo:

Str = “Provider=MSDASQL; Data Source=Prueba; User ID=;Password=” En esta cadena definimos el proveedor de base de datos con PROVIDER, la base de datos en DATA SOURCE (en este caso lo hacemos con un DSN llamado Prueba), el usuario de la base de datos y contraseña.

Cadenas de Conexión DSN-Less

Existe un tipo de conexión a bases de datos llamado DSN-Less, este tipo de conexión es más óptimo que las conexiones a través de DSN ya que conectan la capa OLE DB directamente con el Provider propio de la base de datos, y generalmente mejoran la concurrencia a las bases de datos (conexión simultánea de varios usuarios).

Puede utilizar todas las conexiones DSN-Less que desee desde sus scripts ASP. Además, de esta manera podrá probar y poner on-line sus aplicaciones más rápidamente, ya que no tendrá que pedirnos que configuremos los DSNs en los servidores.

En el siguiente ejemplo vemos una cadena de conexión DSN-Less para la base de datos Access.

Str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;User Id=admin;Password=;"

Con esta cadena podemos conectarnos directamente a la base de datos sin necesidad de crear un DSN en el servidor. Por lo tanto es muy práctico para quienes dispongan de sun servicio de Hosting compartido.

Uso de CreateObject() para crear objetos de ADO

Mediante CreateObject() creamos una instancia de un componente ActiveX en el servidor, su sintaxis seria:

Server.CreateObject (IdProg)

Donde IdProg es el identificativo del tipo de componente que queremos crear, nos viene suministrado por el fabricante del componente. Por ejemplo:

<% Set Mitabla = CreateObject("ADODB.Recordset") %>

Uso del objeto Connection

Nos proporciona una conexión a una base de datos ODBC desde una página ASP. Esta conexión nos permitirá efectuar las operaciones que deseemos sobre la base de datos.

Page 43: Modulo Enproceso

Es el objeto primario de ADO, ninguno de los otros objetos puede existir si este no es declarado de forma explicita o implícita (en algunos de los ejemplos veremos que no existe una declaración del objeto Connection, pero debemos de tener en cuenta que siempre existe, si es necesario ADO lo declarará por si mismo).

La conexión terminará cuando nosotros la cerremos explícitamente con el método close o bien cuando termine la ejecución de la página ASP.

Ejemplo:

Dim oConn Dim StrCon

oConn = CreateObject(“ADODB.Connection”)

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/prueba.mdb")

Aquí creamos un un objeto de connexion llamado oConn y lo abrimos con la función Open utilizando una cadena de conexión DSN-Less para bases de datos acces. Notemos que usamos Server.MapPath, esta sentencia le indica la posición física actual del archivo asp que estamos creando, de este modo podemos mover el sitio a cualquier carpeta sin tener que modificar la cadena de conexión.

Uso del Objeto RecordSet

Ya sabemos como crear una conexión y abrirla, ahora vamos a utilizar el objeto RecordSet para comenzar a trabajar con la base de datos propiamente dicha.

Un objeto RecordSet es una colección de registros provenientes de una base de datos, la forma de solicitar datos es ejecutando una sentencia SQL (VER ANEXO 1) la cual nos devolvera información para completar el recordset.

Ejemplo:

Set RS = CreateObject("ADODB.RecordSet")

ConSQL = "SELECT * FROM prueba"

RS.Open SQL, oConn

Aqui abrimos un recordset que recupera informacion de la tabla prueba que pertenece a la base de datos Prueba.mdb que habiamos abierto anteriormente con la conección oConn, por eso le indicamos al recordset RS mediante la sentencia Open que ejecute la consulta SQL que tipeamos en la variable ConSQL.

Acceso a los datos de un recordset

La información en un objeto RecordSet esta organizada en campos. Para acceder a un determinado campo en un registro dentro del recordset, se usa la siguiente sintaxis:

Page 44: Modulo Enproceso

RS(“NombreDelCampo”)

RS es el nombre del objeto RecordSet y NombreDelCampo es el campo dentro de la base de datos que queremos mostrar.

Si quisieramos acceder al campo “ID” de objeto RS y guardarlo en la variable Str escribiríamos:

Str = RS(“ID”)

Trabajando con las tablas

En el siguiente ejemplo veremos una síntesis de lo que hemos aprendido hasta el momento, abrimos una conexión, luego ejecutamos una consulta SQL en un recordset y finalmente mostramos los datos usando el bucle DO… LOOP.

<% Dim oConn Dim StrCon Dim RS Dim ConSQL

oConn = CreateObject(“ADODB.Connection”)

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/prueba.mdb")

Set RS = CreateObject("ADODB.RecordSet") ConSQL = "SELECT * FROM prueba" RS.Open SQL, oConn

Do While Not RS.EOF

Response.Write RS ("nombre")

RS.MoveNext Loop %>

En el ejemplo recorremos el objeto RS e imprimimos el campo “nombre” hasta el final del RecordSet (EOF – Final de Archivo) y utilizamos en metodo MoveNext para mover la pocision del registro actual al próximo.

Uso del Objeto Command

Para agragar datos a una base de datos se puede utilizar el objeto Command de ADO. Este objeto representan las instrucciones que queremos ejecutar sobre la base de datos, podemos agregar, editar o borrar información utilizando consultas SQL.

Page 45: Modulo Enproceso

El igual que con los objetos anteriores creamos el objeto Command utilizando Server.CreateObject, de la siguiente manera:

Server.CreateObject(“ADODB.Command”)

Para ingresar a datos a la base de datos utilizaríamos la cláusula INSERT de SQL, en el siguiente ejemplo podemos verlo:

<% Set cmd = CreateObject(“ADODB.Command”) SQL = “INSERT INTO prueba (nombre, apellido) VALUES (‘pedro’, ‘gomez’)” cmd.ActiveConnection = oConn cmd.Execute %>

Lo que hicimos fue crear nuestro objeto Command, luego llenamos una variable llamada SQL con la instruccion SQL para agregar datos en la tabla prueba. Utilizamos dos metodos del objeto Command. Con cmd.ActiveConnection definimos la conexión a base de datos existente, previemante deberiamos abrir la base de datos con el objeto Connection, y con cmd.Execute ejecutamos la consulta SQL y cargamos los datos.

Editando y Borrando

En el ejemplo anterior utilizamos el objeto Command para agregar datos en nuestra base de datos, ahora veremos dos ejemplos para editar y borrar datos.

<% Set cmd = CreateObject(“ADODB.Command”) SQL = “UPDATE prueba SET nombre = ‘pedro’, apellido = ‘gomez’” cmd.ActiveConnection = oConn cmd.Execute %>

<% Set cmd = CreateObject(“ADODB.Command”) SQL = “DELETE * FROM prueba WHERE nombre = ‘pedro’” cmd.ActiveConnection = oConn cmd.Execute %>

Como notaran solo cambiamos la consulta SQL para realizar diferentes tareas, por eso es muy importante conocer bien este lenguaje de consultas.

Ejecutando consultas sin usar el objeto Command

Anteriormente veiamos como el objeto Command nos permitia ejecutar consultas y realizar cambios en la base de datos. Pero existe una forma de hacer esta misma tarea sin crear un objeto Command y utilizando el objeto Connection que tengamos abierto, es totalmente identico usar ambas formas. Por ejemplo, veamos la direferencia de la

Page 46: Modulo Enproceso

carga de datos ejecutando una consulta SQL con el objeto Command y sin el, notemos que nuestro objeto Connetion se llama oConn y ya esta abierto con anterioridad.

<% Set cmd = CreateObject(“ADODB.Command”) SQL = “INSERT INTO prueba (nombre, apellido) VALUES (‘pedro’, ‘gomez’)” cmd.ActiveConnection = oConn cmd.Execute %>

<% SQL = “INSERT INTO prueba (nombre, apellido) VALUES (‘pedro’, ‘gomez’)” oConn.Execute (SQL) %>

La diferencia es bastante clara, no nesecitamos crear ningun objeto y podemos usar el metodo Execute directamente con el objeto Connection para ejecutar la consulta, es una forma de ahorrar tiempo.