Documentos de Académico
Documentos de Profesional
Documentos de Cultura
net
tecnologas para la Web: HTML y Javascript; algo de lenguajes de programacin, sobre todo Basic (MS Basic), y otro poco de SQL, para las consultas de base de datos. Adems es totalmente necesario tener algo de tiempo para leer el manual y entender los ejemplos. Para llevar a cabo pruebas de programas es necesario tener acceso a un servidor con soporte para ASP, como pueden ser los anteriormente mencionados Internet Information Server o Personal Web Server. Para el manejo de bases de datos, dado que estamos en un entorno cuasi totalmente Microsoft, en estas pginas se explicarn las bases de datos Access, aunque la dinmica es muy similar en otras.
Interfaz
Para hacer que todo vaya rpido y fcil, en estas pginas no hay demasiadas imgenes, ni applets, ni videos,... lo que redunda en que si a alguien le interesa imprirlo, slo tendr que hacer pequeos retoques aqu y all. El cdigo ASP que contienen los archivos que veremos est puesto en azul. Los comentarios dentro del cdigo, para que aparezcan ms significativos los he puesto en verde, y los enlaces en rojo. En algunos casos, las etiquetas de HTML no relevantes para el ejemplos se muestran en gris. En todas las pginas hay, bien al principio, bien al final, o puede que en ambos lugares, unas barras de color gris con enlaces a las secciones inmediatamente anteriores y posteriores.
Herramientas
ASP, VBScript y Javascript son lenguajes de programacin comunes, luego su sintaxis es implementada en cdigo ASCII, por lo que para poder crear, editar y modificar dicho cdigo, slo es necesario utilizar un simple y comn editor de textos, como puede ser el "edit" del DOS, el "Notepad" o el "Wordpad" de los entornos Windows, o cualquiera de los mltiples editores de texto que existen en los entornos *IX (Emacs, vi, joe, jed,...), as como en los Mac. Microsoft ha tenido la deferencia de crear, dentro de su suite de desarrollo DevStudio, una aplicacin especfica para administracin y creacin de proyectos Web, denominada Visual InterDev, que en el momento de realizarse este documento estaba en su versin 6.0. Sin embargo, en este documento no nos basaremos en dicho software, ya que nos limitaremos a dar unas pinceladas sobre los conceptos bsicos del lenguaje, sin afn de introducirnos en reas ms profundas, como la administracin de proyectos, y dems.
Pgina 2
http://www.cybercursos.net
1. Conceptos iniciales
1.1. Declaracin del lenguaje 1.2. Bloques de cdigo y Comentarios 1.3. Carctersticas del lenguaje 1.4. Forma de una pgina ASP
Esta declaracin se pone al principio del archivo, antes de cualquier otra expresin.
donde sentencias pueden ser una o varias expresiones del lenguaje, como se muestra en el siguiente ejemplo:
... <% Request("param") Response.Write(Now) while not cond do rem do nothing loop %> ...
En este punto queremos llamar la atencin del lector sobre el hecho de que las sentencias en VBScript no se separan por punto y coma (;). Los comentarios de cdigo VBScript se especifican mediante la palabra reservada rem o con el carcter comilla simple (') y tienen un mbito de una lnea. Por ejemplo:
<% rem Esto es un comentario ' que ocupa varias
Pgina 3
http://www.cybercursos.net
Pgina 4
http://www.cybercursos.net
</HTML>
Que se vera de la siguiente manera: Esto es texto simple En el que tambin puedo introducir etiquetas HTML Adems es posible mezclar bloques ASP con etiquetas de HTML Aunque este es todava un ejemplo muy sencillo y con ninguna interactividad...
Pgina 5
http://www.cybercursos.net
2.1. Response
Como su nombre indica, la sentencia Response sirve para enviar respuestas (informacin de salida) al documento HTML que se visualizar en el navegador, para redireccionar a otros recursos, etc. 2.1.1. Response.Write Como sabemos para escribir texto en el documento que se pretende visualizar hay que escribir:
<% Response.Write({cadena}) %>
Una cadena es cualquier combinacin de caracteres ASCII, quitando la comilla doble. Si queremos que aparezca este smbolo debemos introducirla dos veces (""). Veamos algunos ejemplos:
<%@ LANGUAGE="VBScript" %> <% Response.Write("<HTML>") Response.Write("<HEAD>") Response.Write("<TITLE></TITLE>") Response.Write("</HEAD>") Response.Write("<BODY>") Response.Write("Esta página genera todas las etiquetas de un documento<BR>") Response.Write("HTML normal y corriente...") Response.Write("</BODY>")
Pgina 6
http://www.cybercursos.net
Response.Write("<HTML>") %>
<%@ LANGUAGE="VBScript" %> <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <% Response.Write("Esta página genera todas las etiquetas de un documento<BR>") Response.Write("HTML normal y corriente...") %> </BODY> <HTML>
Los dos ejemplos anteriores son equivalentes. Si adems queremos escribir el valor de alguna variable:
<%@ LANGUAGE="VBScript" %> <% hoy = Date %>
Pgina 7
http://www.cybercursos.net
Aunque como es de suponer existe una manera algo ms gil y abreviada para indicar lo anterior, con menos caracteres:
<%@ LANGUAGE="VBScript" %> <HTML>
Pgina 8
http://www.cybercursos.net
</BODY> <HTML>
2.1.2. Response.Redirect En ocasiones puede ser til tener una pgina que tras un determinado tratamiento de algn dato obtenido del cliente, llame a otra pgina, o simplemente como mtodo de actualizacin de enlaces antiguos. En cualquiera de estos casos se utiliza la sentencia Response.Redirect:
<%@ LANGUAGE="VBScript" %> <% rem Este enlace ha quedado obsoleto, redireccionar a... Response.Redirect("http://www.w3.org/Style/") rem Todo lo que hay por debajo de este punto: etiquetas HTML, cdigo ASP rem no llega a ser interpretado por el procesador de ASP jams %>
La utilidad del cdigo queda patente si tenemos en cuenta que con la dinamicidad de la red, frecuentemente se dan modificaciones en las localizaciones de los recursos. Veamos ahora ejemplo de redireccionamiento para tratamiento de datos, y de paso anticipamos algo de lo que veremos en el siguiente punto:
<%@ LANGUAGE="VBScript" %> <% opcion = Request("param_opcion") Select Case opcion Case 1: Response.Redirect("pag1.html") Case 2: Response.Redirect("pag2.html") Case 3: Response.Redirect("pag3.html")
Pgina 9
http://www.cybercursos.net
<% Select Case Request("param_opcion") Case 1: Response.Redirect("pag1.html") Case 2: Response.Redirect("pag2.html") Case 3: Response.Redirect("pag3.html") End Select %>
2.2. Request
La sentencia Request tiene como misin obtener los valores de los parmetros que pueden pasrseles a las pginas ASP. La forma de pasar pares atributo-valor (parmetro-valor) es la siguiente:
<%@ LANGUAGE="VBScript" %>
Donde podemos apreciar que con los datos introducidos por el cliente (en un formulario, o por otros medios), llamamos a una pgina de tratamiento de esos datos. Los parmetros que se pasan son:
Pgina 10
http://www.cybercursos.net
dni
12345678
Los carcteres %20 que muestra el ejemplo entre los apellidos hacen referencia al caracter espacio en codificacin UTP. Tambin es posible pasar parmetros a otra pgina a partir de campos de un formulario. En este caso, los nombres de los parmetros vienen dados por los nombres que hay que asignar a dichos campos, y la pgina que los trata o recoge se especifica con el atributo ACTION de la etiqueta FORM.
<%@ LANGUAGE="VBScript" %> <HTML> <HEAD> <TITLE><TITLE> </HEAD> <BODY>
<FORM METHOD="POST" ACTION="guardar.asp"> <INPUT TYPE="TEXT" NAME="nombre"> <INPUT TYPE="TEXT" NAME="apellidos"> <INPUT TYPE="TEXT" NAME="dni"> <INPUT TYPE="SUBMIT"> </FORM>
</BODY> </HTML>
Con este cdigo el procesador de ASP se encarga de construir internamente una llamada igual a la vista en el ejemplo anterior. La manera general de especificar la llamada a una pgina con parmetros, por lo tanto, es: {nombre_pagina}.asp?{nom_var1}={valor1}[&{nom_var2}={valor2}...] Lo que est encerrado entre llaves puede ser prcticamente, cualquier cadena vlida de caracteres y lo que est escrito en negrita debe aparecer tal como est.
Pgina 11
http://www.cybercursos.net
Descripcin
Devuelve la fecha del sistema, generalmente en formato anglosajn. Devuelve el da del mes.
3.1.2. Hora (Now, Time, Hour, Minute, Second) Los datos devueltos por estas funciones se extraen de la fecha y hora del sistema (servidor) donde se ejecutan las mismas. Funcin
Now Time Hour Minute Second
Descripcin
Pgina 12
http://www.cybercursos.net
InStr([start, ]string1, string2[, compare]) InstrRev(string1, string2[, start[, compare]]) Mid(string, start[, length]) Trim, LTrim, RTrim Replace(expression, find, replacewith[, start[, count[, compare]]]) - Returns a string in which a specified substring has been replaced with another substring a specified number of times. Right(string, length) - Returns a specified number of characters from the right side of a string. Space(number) - Returns a string consisting of the specified number of spaces. StrComp(string1, string2[, compare]) - Returns a value indicating the result of a string comparison. StrReverse(string1) - Returns a string in which the character order of a specified string is reversed. UCase(string) LCase(string)
3.3. Numricas
Abs - Valor absoluto - Abs(numero) Atn - Arcotangente - Atn(numero)->radianes Cos(numero)->radianes - coseno Exp(numero) - e elevado a numero Fix(numero)->numero - devuelve la parte entera de un real Hex(numero)->string - Valor hexadecimal del numero Log(numero)->numero - logaritmo result=number1 Mod number2 - Used to divide two numbers and return only the remainder. Oct(numero)->string - Valor octal del numero Randomize Rnd[(number)] - Returns a random number. Round(expression[, numdecimalplaces]) - Returns a number rounded to a specified
Pgina 13
http://www.cybercursos.net
number of decimal places. Sgn(number) - Returns an integer indicating the sign of a number. Sin(number) - Returns the sine of an angle. Sqr(number) - Returns the square root of a number. Tan(number) - Returns the tangent of an angle.
Pgina 14
http://www.cybercursos.net
4. Bases de datos
4.1. Declarar el driver de base de datos 4.2. Realizar operaciones con la base de datos 4.3. Utilizando SQL 4.4. Utilizando Access
Pgina 15
http://www.cybercursos.net
Vemos que en la sentencia ConexionBD.Open, en la parte DBQ=" tenemos lo siguiente Server.Mappath(), que es una variable que devuelve la ruta local del directorio raz del servidor Web, y el parmetro que le pasamos hace referencia a la situacin de la base de datos dentro de la jerarqua del servidor. Veamos el siguiente ejemplo. Si tenemos nuestro servidor Web (http://127.0.0.1 localhost) en un directorio del sistema denominado C:\Inetpub, y nuestra base de datos estar en C:\Inetpub\biblioteca\libros.mdb, en Server.Mappath deberemos indicar lo siguiente:
... ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & Server.Mappath("/biblioteca/libros.mdb") ...
Atencin, cuando nos referimos al sistema de directorios local utilizamos la barra (\) para separar los directorios, pero cuando hacemos referencia al servidor, se separan con el otro tipo de barra (/). Con esto hemos cumplido con el primer paso, definir el driver para utilizar la base de datos, pero todava no podemos realizar ninguna consulta ni modificacin. Para ello tenemos que definir lo que en Basic se conoce como RecordSet, que no es ms que una agrupacin lgica de registros (algo parecido a una variable de tabla lgica).
Pgina 16
http://www.cybercursos.net
<%@ LANGUAGE="VBScript" %> <% ' Declaramos el objeto de conexin a la base de datos Set ConexionBD = Server.CreateObject("ADOdb.Connection") ' Abrimos el objeto con el driver especfico ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & Server.Mappath("/biblioteca/libros.mdb") Set RS = ConexionBD.Execute("select * from libros") %> <HTML> ...
Con esto conseguimos que se el objeto RS (RecordSet) est enlazado con el resultado de una consulta de la tabla libros de la base de datos libros.mdb, es decir, que contenga los valores, de alguna manera. Pero todava no tenemos resultados visibles de que la operacin se haya completado con xito. Si hemos fallado en algo, en cambio, es muy probable que tengamos una poco prometedora pgina en nuestro visualizador con algn tipo de error. Mas seamos optimistas, si ponemos el cdigo de arriba con algunos aditamentos podremos observar los datos de esa base de datos, en el navegador y en tiempo real.
<%@ LANGUAGE="VBScript" %> <% ' Declaramos el objeto de conexin a la base de datos Set ConexionBD = Server.CreateObject("ADOdb.Connection") ' Abrimos el objeto con el driver especfico ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & Server.Mappath("/biblioteca/libros.mdb") Set RS = ConexionBD.Execute("select * from libros") %> <HTML>
Pgina 17
http://www.cybercursos.net
<HEAD> <TITLE>Consulta de Libros</TITLE> </HEAD> <BODY> <% ' Como la bd no est vaca hacemos un tratamiento hasta que no queden registros... Do while not RS.EOF ' Escribimos en la salida los datos que nos interesa Response.Write("<P>Título: " & RS("titulo") & "<BR>") Response.Write("Autor: " & RS("autor") & "</P>") ' nos movemos al siguiente registro RS.MoveNext Loop %> </BODY> </HTML>
Quien sepa algo de HTML, SQL y Basic sabr interpretar este cdigo sin verlo ejecutado por el procesador ASP, y ver que
Pgina 18