jueves, 19 de agosto de 2010

cursos de programación( introducción a asp)


http://www.cybercursos.net

Introducción a Active Server Pages
Introducción a la Introducción

Active Server Pages (ASP), es una tecnología propietaria de Microsoft. Se trata
básicamente de un lenguaje de tratamiento de textos (scripts), basado en Basic, y que
se denomina VBScript (Visual Basic Script). Se utiliza casi exclusivamente en los
servidores Web de Microsoft (Internet Information Server y Personal Web Server). Los
scripts ASP se ejecutan, por lo tanto, en el servidor y puede utilizarse conjuntamente
con HTML y Javascript para realizar tareas interactivas y en tiempo real con el cliente.

Con ASP se pueden realizar fácilmente páginas de consulta de bases de datos,
funciones sencillas como obtener la fecha y la hora actual del sistema servidor,
cálculos matemáticos simples, etc.

Predisposición

Desde que accedí por la red a una página con un tutorial on-line, pensé que afrontar el
reto de aprender algo a través de aquel sistema era una tarea de titanes. Estaba en
inglés, se le cansa a un@ la vista tanto rato delante de la pantalla, no había un archivo
con los fuentes comprimidos que pudiera bajarme (para poder mejorar la dinamicidad
y minimizar la cuantía de la factura de la compañía telefónica), tardaba mucho, tenía
publicidad por todas partes,... un rollo. Lo que me hizo desistir en pocos minutos de mi
intento por culminar aquella gesta.

Ahora que yo sé algo que algunos otros todavía no saben, me llaman personas que
quieren saber lo que yo sé, y aunque me esfuerzo en advertirles que es muy poco,
todos quieren saber, aunque sea, ese poco. Con ese afán surgió este trabajo.

Si no sabes nada de ASP y te gustaría aprender un poco, mi recomendación es que
sigas leyendo estas páginas (para que este trabajo tenga algún sentido), sino, mejor te
diriges al cuadrito esa de arriba que pondrá algo así como dirección, address o url, y
escribes otro conjunto de símbolos, que a poder ser, sean caracteres ASCII y que
especifiquen una localización de recurso válida en Internet.

Si estás leyendo este párrafo es que o bien no haces caso a las advertencias, o sufres
un repentino ataque de interés inusitado, en un área cuasi mono-plataforma y mono-
sistema, o tienes otras razones personales que no soy quien para juzgar. En cualquier
caso estás aquí y ahora, y pretendes pasar algo de tiempo ampliando conocimientos o
criticando este trabajo (tan loable la primera como la segunda).

Requisitos Previos

Para no hacer de este tutorial un trabajo largo y pesado, supondremos que el/la
hábid@ lector/a tiene conocimientos las áreas más comunes relacionadas con las

Página 1


http://www.cybercursos.net

tecnologías para la Web: HTML y Javascript; algo de lenguajes de programación,
sobre todo Basic (MS Basic), y otro poco de SQL, para las consultas de base de
datos.

Además 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 páginas se explicarán las bases de datos Access, aunque la
dinámica es muy similar en otras.

Interfaz

Para hacer que todo vaya rápido y fácil, en estas páginas no hay demasiadas
imágenes, ni applets, ni videos,... lo que redunda en que si a alguien le interesa
imprirlo, sólo tendrá que hacer pequeños retoques aquí y allá.

El código ASP que contienen los archivos que veremos está puesto en azul. Los

comentarios dentro del código, para que aparezcan más 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 páginas 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 programación comunes, luego su sintaxis
es implementada en código ASCII, por lo que para poder crear, editar y modificar
dicho código, sólo es necesario utilizar un simple y común editor de textos, como
puede ser el "edit" del DOS, el "Notepad" o el "Wordpad" de los entornos Windows, o
cualquiera de los múltiples 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 aplicación específica para administración y creación de proyectos Web,
denominada Visual InterDev, que en el momento de realizarse este documento estaba
en su versión 6.0.

Sin embargo, en este documento no nos basaremos en dicho software, ya que nos
limitaremos a dar unas pinceladas sobre los conceptos básicos del lenguaje, sin afán
de introducirnos en áreas más profundas, como la administración de proyectos, y
demás.

Página 2


http://www.cybercursos.net

Introducción a Active Server Pages
1. Conceptos iniciales
1.1. Declaración del lenguaje
1.2. Bloques de código y Comentarios
1.3. Carácterísticas del lenguaje
1.4. Forma de una página ASP
1.1. Declaración del lenguaje
Como ocurre en otros lenguajes de programación, en ASP existe una sentencia de
declaración opcional del lenguaje a utilizar.

<%@ LANGUAGE="VBScript" %>


Esta declaración se pone al principio del archivo, antes de cualquier otra expresión.

1.2. Bloques de código y Comentarios
En páginas ASP, para introducir bloques de sentencias hay que escribir los símbolos
reservados:

<% {sentencias} %>


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 atención del lector sobre el hecho de que las
sentencias en VBScript no se separan por punto y coma (;).

Los comentarios de código VBScript se especifican mediante la palabra reservada rem

o con el carácter comilla simple (') y tienen un ámbito de una línea. Por ejemplo:
<%


rem Esto es un comentario
' que ocupa varias


Página 3


http://www.cybercursos.net

rem líneas


%>


Y este es un comentario mal construído:

<%


rem Esto es un comentario
pero es ya no lo es así que el procesador de ASP
lo interpretará como código, y dará error


%>


1.3. Carácterísticas del lenguaje
Aquí voy a hablar de la declaración de variables, los tipos de las variables, de las
sentencias... muy someramente, porque tengo que preparar otra página con
información precisa sobre todo esto. Será la última...

Para más información, véase el capítulo 5. Breve referencia del lenguaje, o la ayuda
sobre ASP que ofrece Microsoft (ASP Roadmap).

1.4. Forma de una página ASP
Para ir abriendo boca, vamos a ver a continuación, que aspecto tiene un archivo de
texto que contiene código ASP y que genera como salida, un documento HTML, es
decir, una página Web.

<%@ LANGUAGE="VBScript" %>
<%


 rem Declaración de variables y funciones a realizar antes de
visualizar el documento
rem como por ejemplo, inicializar drivers de bases de datos, o
redireccionar a
rem otros documentos


%>




Título...




<%


 rem Este texto se ve en el documento cuando lo abrimos


 Response.Write("Esto es texto simple
")


 Response.Write("En el que también puedo introducir 
etiquetas HTML
")
%>


Adem´s es posible mezclar bloques ASP con etiquetas de 
HTML



<%
Response.Write("Aunque este es todavía un ejemplo muy
sencillo
")
Response.Write("y con ninguna interactividad...")
%>





Página 4


http://www.cybercursos.net




Que se vería de la siguiente manera:

Esto es texto simple

En el que también puedo introducir etiquetas HTML

Además es posible mezclar bloques ASP con etiquetas de HTML

Aunque este es todavía un ejemplo muy sencillo
y con ninguna interactividad...

Página 5


http://www.cybercursos.net

Introducción a Active Server Pages
2. Entrada y Salida
2.1. Response
2.1.1. Response.Write
2.1.2. Response.Redirect
2.2. Request
2.1. Response
Como su nombre indica, la sentencia Response sirve para enviar respuestas (información 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 combinación de caracteres ASCII, quitando la comilla doble. Si
queremos que aparezca este símbolo debemos introducirla dos veces (""). Veamos algunos
ejemplos:

<%@ LANGUAGE="VBScript" %>


<%


 Response.Write("")


 Response.Write("")


 Response.Write("")


 Response.Write("")


 Response.Write("")


Response.Write("Esta página genera todas las etiquetas


de un documento
")


 Response.Write("HTML normal y corriente...")


Response.Write("")


Página 6


http://www.cybercursos.net

Response.Write("")


%>


<%@ LANGUAGE="VBScript" %>









<%
Response.Write("Esta página genera todas las etiquetas
de un documento
")
Response.Write("HTML normal y corriente...")
%>






Los dos ejemplos anteriores son equivalentes. Si además queremos escribir el valor de alguna
variable:

<%@ LANGUAGE="VBScript" %>
<%
hoy = Date
%>


Página 7


http://www.cybercursos.net

Response.Write("Hoy es:" & hoy & ")


%>






Aunque como es de suponer existe una manera algo más ágil y abreviada para indicar lo anterior,
con menos caracteres:

<%@ LANGUAGE="VBScript" %>





Página 8


http://www.cybercursos.net





2.1.2. Response.Redirect
En ocasiones puede ser útil tener una página que tras un determinado tratamiento de algún dato
obtenido del cliente, llame a otra página, o simplemente como método de actualización 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,
código ASP


 rem no llega a ser interpretado por el procesador de ASP jamás


%>


La utilidad del código 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")


Página 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 misión obtener los valores de los parámetros que pueden
pasárseles a las páginas ASP. La forma de pasar pares atributo-valor (parámetro-valor) es la
siguiente:


Donde podemos apreciar que con los datos introducidos por el cliente (en un formulario, o por
otros medios), llamamos a una página de tratamiento de esos datos. Los parámetros que se
pasan son:

Página 10


dni 12345678
http://www.cybercursos.net

Los carácteres %20 que muestra el ejemplo entre los apellidos hacen referencia al caracter
espacio en codificación UTP.

También es posible pasar parámetros a otra página a partir de campos de un formulario. En este
caso, los nombres de los parámetros vienen dados por los nombres que hay que asignar a dichos
campos, y la página que los trata o recoge se especifica con el atributo ACTION de la etiqueta

FORM.

<%@ LANGUAGE="VBScript" %>




<TITLE> </p><p></HEAD> </p><p><BODY> </p><p><br></p><p><br></p><p><FORM METHOD="POST" ACTION="guardar.asp"> </p><p><INPUT TYPE="TEXT" NAME="nombre"> </p><p><INPUT TYPE="TEXT" NAME="apellidos"> </p><p><INPUT TYPE="TEXT" NAME="dni"> </p><p><INPUT TYPE="SUBMIT"> </p><p><br></p><p><br></p><p></FORM> </p><p><br></p><p><br></p><p></BODY> </p><p></HTML> </p><p><br></p><p><br></p><p>Con este código el procesador de ASP se encarga de construir internamente una llamada igual a </p><p>la vista en el ejemplo anterior. La manera general de especificar la llamada a una página con </p><p>parámetros, por lo tanto, es: </p><p><br></p><p>{nombre_pagina}.asp?{nom_var1}={valor1}[&{nom_var2}={valor2}...] </p><p><br></p><p>Lo que está encerrado entre llaves puede ser prácticamente, cualquier cadena válida de </p><p>caracteres y lo que está escrito en negrita debe aparecer tal como está. </p><p><br></p><p>Página 11 </p><p><br></p><p> </p><p>http://www.cybercursos.net </p><p><br></p><p>Introducción a Active Server Pages </p><p>3. Algunas funciones básicas </p><p>3.1. Fecha y hora </p><p>3.1.1. Fecha </p><p>3.1.2. Hora </p><p>3.2. Tratamiento de cadenas </p><p>3.3. Numéricas </p><p>3.1. Fecha y hora </p><p>3.1.1. Fecha (Date, Day, WeekDay, WeekDayName, Month, MonthName, Year) </p><p>Función Descripción </p><p>Date Devuelve la fecha del sistema, generalmente en </p><p>formato anglosajón. </p><p>Day(fecha) Devuelve el día del mes. </p><p>Weekday(date, </p><p>[firstdayofweek]) </p><p>WeekDayName(weekday, </p><p>abbreviate, </p><p>firstdayofweek) </p><p>Month </p><p>MonthName </p><p>Year </p><p><br></p><p>3.1.2. Hora (Now, Time, Hour, Minute, Second) </p><p>Los datos devueltos por estas funciones se extraen de la fecha y hora del sistema </p><p>(servidor) donde se ejecutan las mismas. </p><p><br></p><p>Función Descripción </p><p>Now </p><p>Time </p><p>Hour </p><p>Minute </p><p>Second </p><p><br></p><p>3.2. Tratamiento de cadenas </p><p>Página 12 </p><p><br></p><p> </p><p>http://www.cybercursos.net </p><p><br></p><p>InStr([start, ]string1, string2[, compare]) </p><p>InstrRev(string1, string2[, start[, compare]]) </p><p>Mid(string, start[, length]) </p><p>Trim, LTrim, RTrim </p><p>Replace(expression, find, replacewith[, start[, count[, compare]]]) - Returns a string in </p><p><br></p><p><br></p><p>which a specified substring has been replaced with another substring a specified </p><p><br></p><p><br></p><p>number of times. </p><p>Right(string, length) - Returns a specified number of characters from the right side of a </p><p>string. </p><p><br></p><p><br></p><p>Space(number) - Returns a string consisting of the specified number of spaces. </p><p><br></p><p><br></p><p>StrComp(string1, string2[, compare]) - Returns a value indicating the result of a string </p><p>comparison. </p><p>StrReverse(string1) - Returns a string in which the character order of a specified string </p><p><br></p><p><br></p><p>is reversed. </p><p>UCase(string) </p><p>LCase(string) </p><p><br></p><p><br></p><p>3.3. Numéricas </p><p>Abs - Valor absoluto - Abs(numero) </p><p>Atn - Arcotangente - Atn(numero)->radianes </p><p>Cos(numero)->radianes - coseno </p><p>Exp(numero) - e elevado a numero </p><p>Fix(numero)->numero - devuelve la parte entera de un real </p><p>Hex(numero)->string - Valor hexadecimal del numero </p><p>Log(numero)->numero - logaritmo </p><p>result=number1 Mod number2 - Used to divide two numbers and return only the </p><p><br></p><p>remainder. </p><p>Oct(numero)->string - Valor octal del numero </p><p>Randomize </p><p>Rnd[(number)] - Returns a random number. </p><p>Round(expression[, numdecimalplaces]) -Returns a number rounded to a specified </p><p><br></p><p>Página 13 </p><p><br></p><p> </p><p>http://www.cybercursos.net </p><p><br></p><p>number of decimal places. </p><p>Sgn(number) - Returns an integer indicating the sign of a number. </p><p>Sin(number) - Returns the sine of an angle. </p><p>Sqr(number) - Returns the square root of a number. </p><p>Tan(number) - Returns the tangent of an angle. </p><p><br></p><p><br></p><p>Página 14 </p><p><br></p><p> </p><p>http://www.cybercursos.net </p><p><br></p><p>Introducción a Active Server Pages </p><p>4. Bases de datos </p><p>4.1. Declarar el driver de base de datos </p><p>4.2. Realizar operaciones con la base de datos </p><p>4.3. Utilizando SQL </p><p>4.4. Utilizando Access </p><p>4.1. Declarar el driver de base de datos </p><p>Sin duda alguna, lo más importante que hay que saber respecto al manejo de bases </p><p>de datos en ASP (presupuestos unos ligeros conocimientos en SQL y Access), es la </p><p>inicialización del driver de base de datos. Existen dos maneras de hacerlo, a saber: </p><p><br></p><p>La primera consiste en declarar un DSN de Sistema a través de ODBC. Para ello </p><p>iremos al botón Inicio de nuestro sistema Windows, y desde allí a la opción </p><p>Configuración y después a Panel de Control. En la ventana que aparece debemos </p><p>dirigirnos a ODBC (o a ODBC de 32 bits, según el sistema), y se nos abrirá una nueva </p><p>ventana con una serie de solapas. Nos vamos a DSN de sistema. </p><p><br></p><p>En este punto vamos a añadir nuestro nuevo DSN para la base de datos que </p><p>queremos tratar. Para ello seleccionamos en botón Agregar. Se abre una ventana que </p><p>lleva por título Crear un nuevo origen de datos en el que se nos muestran los drivers </p><p>de base de datos disponibles en nuestro sistema. Seleccionamos el deseado, en </p><p>nuestro caso Microsoft Access Driver y pulsamos Finalizar. </p><p><br></p><p>Hecho esto se abre una nueva ventana, de nombre ODBC Microsoft Access 97 Setup. </p><p>En el campo Data Source Name debemos escribir el identificador que emplearemos </p><p>para la base de datos (si por ejemplo se trata de una base de datos de libros cuyo </p><p>archivo se llama biblio.mdb, podríamos llamarla libros). Luego presionamos el botón </p><p>Select para seleccionar el archivo de base de datos dentro de la jerarquía de </p><p>directorios del sistema, y tras esto pulsamos Ok. Y ya podremos hacer referencia a </p><p>ese origen de datos desde nuestras páginas. </p><p><br></p><p>Esta primera opción es muy rápida de configurara, sin embargo, es muy frecuente </p><p>desarrollar las páginas en una máquina y ponerlas en otra (un servidor propiamente </p><p>dicho), por lo que resulta lioso tener un DSN para cada base de datos del sistema. </p><p><br></p><p>La segunda es un poco más pesada, por el hecho de que hay que incluir una serie de </p><p>líneas de código en cada página que haga uso de la base de datos, pero es mucho </p><p>más flexible, puesto que si cambiamos de sistema, no debemos crear un nuevo DSN. </p><p><br></p><p>La declaración del driver debe hacerse antes de que se escriba algo en el documento </p><p><br></p><p>Página 15 </p><p><br></p><p> </p><p>http://www.cybercursos.net </p><p><br></p><p>HTML de salida, y es tan simple como esto: </p><p><br></p><p><%@ LANGUAGE="VBScript" %> </p><p><% </p><p><br></p><p><br></p><p>' Declaramos el objeto de conexión a la base de datos </p><p><br></p><p><br></p><p>Set ConexionBD = </p><p>Server.CreateObject("ADOdb.Connection") </p><p><br></p><p><br></p><p>' Abrimos el objeto con el driver específico </p><p><br></p><p><br></p><p>ConexionBD.Open "DRIVER={Microsoft Access Driver </p><p>(*.mdb)}; " & "DBQ=" & Server.Mappath("/ruta/bd.mdb") </p><p>%> </p><p><HTML> </p><p>... </p><p><br></p><p><br></p><p>Vemos que en la sentencia ConexionBD.Open, en la parte DBQ=" tenemos lo siguiente </p><p>Server.Mappath(), que es una variable que devuelve la ruta local del directorio raíz </p><p>del servidor Web, y el parámetro que le pasamos hace referencia a la situación de la </p><p>base de datos dentro de la jerarquía del servidor. Veamos el siguiente ejemplo. </p><p><br></p><p>Si tenemos nuestro servidor Web (http://127.0.0.1 ó localhost) en un directorio del </p><p>sistema denominado C:\Inetpub, y nuestra base de datos estará en </p><p>C:\Inetpub\biblioteca\libros.mdb, en Server.Mappath deberemos indicar lo siguiente: </p><p><br></p><p>...</p><p><br></p><p><br></p><p> ConexionBD.Open "DRIVER={Microsoft Access Driver </p><p>(*.mdb)}; " & "DBQ=" & </p><p>Server.Mappath("/biblioteca/libros.mdb") </p><p><br></p><p><br></p><p>... </p><p><br></p><p><br></p><p>Atención, cuando nos referimos al sistema de directorios local utilizamos la barra (\) </p><p>para separar los directorios, pero cuando hacemos referencia al servidor, se separan </p><p>con el otro tipo de barra (/). </p><p><br></p><p>Con esto hemos cumplido con el primer paso, definir el driver para utilizar la base de </p><p>datos, pero todavía no podemos realizar ninguna consulta ni modificación. Para ello </p><p>tenemos que definir lo que en Basic se conoce como RecordSet, que no es más que </p><p>una agrupación lógica de registros (algo parecido a una variable de tabla lógica). </p><p><br></p><p>4.2. Realizar operaciones con la base de datos </p><p>Para ver qué es un RecordSet y para que sirve Volvamos otra vez al ejemplo: </p><p><br></p><p>Página 16 </p><p><br></p><p> </p><p>http://www.cybercursos.net </p><p><br></p><p><%@ LANGUAGE="VBScript" %> </p><p><% </p><p><br></p><p><br></p><p>' Declaramos el objeto de conexión a la base de datos </p><p><br></p><p><br></p><p>Set ConexionBD = </p><p>Server.CreateObject("ADOdb.Connection") </p><p><br></p><p><br></p><p>' Abrimos el objeto con el driver específico </p><p><br></p><p><br></p><p>ConexionBD.Open "DRIVER={Microsoft Access Driver </p><p>(*.mdb)}; " & "DBQ=" & </p><p>Server.Mappath("/biblioteca/libros.mdb")</p><p><br></p><p><br></p><p> Set RS = ConexionBD.Execute("select * from libros") </p><p>%> </p><p><HTML> </p><p>... </p><p><br></p><p><br></p><p>Con esto conseguimos que se el objeto RS (RecordSet) esté enlazado con el </p><p>resultado de una consulta de la tabla libros de la base de datos libros.mdb, es decir, </p><p>que contenga los valores, de alguna manera. </p><p><br></p><p>Pero todavía no tenemos resultados visibles de que la operación se haya completado </p><p>con éxito. Si hemos fallado en algo, en cambio, es muy probable que tengamos una </p><p>poco prometedora página en nuestro visualizador con algún tipo de error. Mas seamos </p><p>optimistas, si ponemos el código de arriba con algunos aditamentos podremos </p><p>observar los datos de esa base de datos, en el navegador y en tiempo real. </p><p><br></p><p><%@ LANGUAGE="VBScript" %> </p><p><% </p><p><br></p><p><br></p><p>' Declaramos el objeto de conexión a la base de datos </p><p><br></p><p><br></p><p>Set ConexionBD = </p><p>Server.CreateObject("ADOdb.Connection") </p><p><br></p><p><br></p><p>' Abrimos el objeto con el driver específico </p><p><br></p><p><br></p><p>ConexionBD.Open "DRIVER={Microsoft Access Driver </p><p>(*.mdb)}; " & "DBQ=" & </p><p>Server.Mappath("/biblioteca/libros.mdb")</p><p><br></p><p><br></p><p> Set RS = ConexionBD.Execute("select * from libros") </p><p>%> </p><p><HTML> </p><p><br></p><p><br></p><p>Página 17 </p><p><br></p><p> </p><p>http://www.cybercursos.net </p><p><br></p><p><HEAD> </p><p><TITLE>Consulta de Libros


<%


 ' Como la bd no está vacía hacemos un tratamiento
hasta que no queden registros...


Do while not RS.EOF


' Escribimos en la salida los datos que nos interesa


 Response.Write("
Título: " & RS("titulo") &
"
")


 Response.Write("Autor: " & RS("autor") & "
")


' nos movemos al siguiente registro


RS.MoveNext


 Loop
%>






Quien sepa algo de HTML, SQL y Basic sabrá interpretar este código sin verlo
ejecutado por el procesador ASP, y verá que

Página 18


Crear una pagina asp


___________________________________________________________
Crear una página ASP
Un archivo de páginas Active Server (ASP) es un archivo de texto con la extensión .asp que contiene
cualquier combinación de lo siguiente:
• Texto
• Etiquetas HTML
• Secuencias de comandos del servidor
Un método rápido para crear un archivo .asp consiste en cambiar la extensión de los archivos HTML
(.html o .htm) por la extensión .asp. Si el archivo no contiene funciones ASP, el servidor prescinde del
proceso de secuencias de comandos ASP y envía el archivo al cliente. Como desarrollador Web, esta
opción proporciona una gran flexibilidad, ya que puede asignar a los archivos la extensión .asp incluso si
no piensa agregar funciones ASP hasta más adelante.
Para publicar el archivo .asp en Web, guarde el nuevo archivo en un directorio virtual de su sitio Web
(asegúrese de que el directorio tenga los permisos Secuencia de comandos o Ejecución). A
continuación, escriba en el explorador la dirección URL del archivo para pedirlo. (Recuerde, las páginas
ASP debe enviarlas el servidor, por lo que no puede pedirlas mediante su ruta física.) Cuando el archivo
se cargue en el explorador, observará que el servidor envió una página HTML. Al principio puede
parecer extraño, pero recuerde que el servidor analiza y ejecuta todas las secuencias de comandos ASP
del servidor antes de enviar el archivo. El usuario siempre recibe código HTML estándar.
Para crear archivos .asp, se puede utilizar cualquier editor de textos. A medida que avance, puede que
encuentre más productivo utilizar un editor más orientado a ASP, como Microsoft(r) Visual InterDev™.
(Para obtener más información, visite el sitio Web de Microsoft Visual InterDev en la dirección
http://msdn.microsoft.com/vinterdev/.)
Agregar secuencias de comandos del servidor
Una secuencia de comandos del servidor es una serie de instrucciones que se utiliza para enviar al
servidor Web comandos de forma secuencial. (Si ya desarrolló antes sitios Web, probablemente
conozca las secuencias de comandos del cliente, que se ejecutan en el explorador Web.) En los
archivos .asp, las secuencias de comandos se separan del texto y de las etiquetas HTML mediante
delimitadores. Un delimitador es un carácter o una secuencia de caracteres que marca el principio o el
final de una unidad. En el caso de HTML, dichos delimitadores son los símbolos menor que (<) y mayor
que (>), que enmarcan las etiquetas HTML.
ASP utiliza los delimitadores <% y %> para enmarcar los comandos. Dentro de los delimitadores puede
incluir cualquier comando válido dentro del lenguaje de secuencia de comandos que esté utilizando. El
ejemplo siguiente muestra una página HTML sencilla que contiene un comando de secuencia de
comandos:
Esta página se actualizó por última vez el <%= Now ()%>.
La función Now() de VBScript devuelve la fecha y la hora actuales. Cuando el servidor Web procesa
esta página, reemplaza <%= Now ()%> con la fecha y la hora actuales, y devuelve la página al
explorador con el siguiente resultado:
Esta página se actualizó el 1/29/99 2:20:00 p.m.
A los comandos enmarcados por delimitadores se les llama comandos principales de secuencias de
comandos, que se procesan mediante el lenguaje principal de secuencia de comandos. Todos los
comandos utilizados dentro de los delimitadores de secuencias de comandos deben ser válidos en el
lenguaje principal de secuencia de comandos. De forma predeterminada, el lenguaje principal de
secuencia de comandos es VBScript, pero también puede establecer un lenguaje diferente. Consulte
Trabajar con lenguajes de secuencias de comandos.
Si ya conoce las secuencias de comandos del cliente, ya sabrá que la etiqueta HTML
Al incorporar estas funciones es posible crear algunas aplicaciones útiles e interesantes. Por ejemplo,
ésta es una sencilla secuencia de comandos del servidor (escrita en VBScript) que manipula una
secuencia de comandos del cliente (escrita en JScript):
<%
Dim dtmTime, strServerName, strServerSoftware, intGreeting
dtmTime = Time()
strServerName = Request.ServerVariables("SERVER_NAME")
strServerSoftware = Request.ServerVariables("SERVER_SOFTWARE")
'Genera un número aleatorio.
Randomize
GreetCondition = int(rnd * 3)
%>
Escribir procedimientos
Un procedimiento es un grupo de comandos de secuencia de comandos que realizan una tarea
específica y puede devolver un valor. Puede definir sus propios procedimientos e invocarlos
repetidamente desde sus secuencias de comandos.
Puede poner las definiciones de los procedimientos en el mismo archivo .asp que llama a los
procedimientos o bien puede poner los procedimientos utilizados con más frecuencia en un archivo .asp
compartido y utilizar la directiva #include para incluirlo en otros archivos .asp que llamen a los
procedimientos. Como alternativa, puede encapsular dicha funcionalidad en un componente COM.
Definir procedimientos
Las definiciones de los procedimientos pueden encontrarse dentro de etiquetas
y deben seguir las reglas del lenguaje de secuencias de comandos. Utilice el elemento
El atributo RUNAT=SERVER indica al servidor Web que procese la secuencia de comandos en el
servidor. Si no establece este atributo, la secuencia de comandos la procesará el explorador del cliente.
El atributo LANGUAGE determina el lenguaje de secuencia de comandos utilizado en este bloque.
Puede especificar cualquier lenguaje para el que haya instalado un motor de secuencias de comandos
en el servidor. Para especificar VBScript, use el valor VBScript. Para especificar JScript, use el valor
JScript. Si no asigna el atributo LANGUAGE, el bloque de la secuencia de comandos se interpretará en
el lenguaje principal de secuencia de comandos.
Los comandos del bloque de la secuencia de comandos deben componer uno o varios procedimientos
completos en el lenguaje de secuencia de comandos elegido. Por ejemplo, los comandos siguientes
definen el procedimiento JScript MiFuncion.
Importante No incluya en las etiquetas
Nota Las llamadas de VBScript a las funciones JScript no distinguen entre mayúsculas y minúsculas.
Pasar matrices a procedimientos
Para pasar una matriz entera a un procedimiento en VBScript, utilice el nombre de la matriz seguido de
paréntesis vacíos; en JScript, utilice corchetes vacíos.
Procesar los datos proporcionados por el usuario
Mediante el objeto Request de ASP puede crear sencillas y eficaces secuencias de comandos para
recopilar y procesar datos obtenidos de formularios HTML. En este tema no sólo aprenderá a crear
secuencias de comandos básicas para procesar formularios, sino que también conocerá técnicas útiles
para validar los datos de los formularios, tanto en su servidor Web como en el explorador de Web del
usuario.
Acerca de los formularios HTML
Los formularios HTML, el método más común para recopilar información desde el Web, consiste en un
conjunto de etiquetas HTML especiales que presentan elementos de interfaz de usuario en una página
Web. Los cuadros de texto, los botones y las casillas de verificación son ejemplos de elementos que
permiten que los usuarios intercalen con una página Web y envíen información a un servidor Web.
Por ejemplo, las siguientes etiquetas HTML generan un formulario en el que un usuario puede escribir su
nombre, apellido y edad, e incluye un botón para enviar la información a un servidor Web. El formulario
también contiene una etiqueta de entrada oculta (no presentada por el explorador Web) que puede
utilizar para pasar información adicional al servidor Web.

Presentar con detalle el conjunto completo de etiquetas HTML para formularios se sale del ámbito de
este tema, sin embargo, hay numerosas fuentes de información que puede utilizar para aprender a crear
y utilizar formularios HTML. Por ejemplo, puede utilizar la posibilidad que ofrece su explorador para ver
el código fuente con el fin de examinar cómo se crean los formularios HTML en otros sitios Web.
También puede visitar el sitio Web de MSDN de Microsoft en la dirección http://msdn.microsoft.com/
para conocer las técnicas más recientes para utilizar los formularios HTML con otras tecnologías de
Internet.
Procesar datos de formularios con ASP
Después de crear el formulario HTML tendrá que procesar los datos proporcionados por el usuario, lo
que implica enviar la información a un archivo .asp para que la analice y manipule. De nuevo, examine el
código HTML del ejemplo anterior. Observe que el atributo ACTION de la etiqueta
hace
referencia a un archivo llamado Profile.asp. Cuando el usuario envía información HMTL, el explorador
utiliza el método POST para enviarla a un archivo .asp del servidor, en este caso Profile.asp. Este
archivo .asp puede contener archivos de comandos que procesen la información e interactúen con otras
secuencias de comandos, componentes COM o recursos, como una base de datos.
Existen tres formas básicas de recopilar información de un formulario HTML mediante ASP:
• Un archivo .htm estático puede contener un formulario que envíe sus valores a un archivo .asp.
• Un archivo .asp puede crear un formulario que envíe información a otro archivo .asp.
• Un archivo .asp puede crear un formulario que se envíe información a sí mismo; es decir, al
archivo .asp que contiene el formulario.
Los dos primeros métodos funcionan igual que los formularios que interactúan con otros programas de
servidor Web, con la única diferencia de que con ASP se simplifica mucho la tarea de recuperar y
procesar la información. El tercer método es especialmente útil y se muestra en la sección Validar los
datos de los formularios.
Obtener datos de los formularios
El objeto Request de ASP proporciona dos colecciones que facilitan la tarea de recuperar información
de los formularios enviados con las peticiones URL.
La colección QueryString
La colección QueryString recupera los valores del formulario pasados al servidor Web como texto a
continuación del signo de interrogación de la dirección URL de la petición. Los valores del formulario se
pueden anexar a la dirección URL de la petición mediante el método GET de HTTP o, manualmente, si
se agregan los valores del formulario a la dirección URL.
Si el ejemplo del formulario anterior utilizara el método GET (METHOD = "GET") y el usuario escribiera
Juan, Soto y 30, se enviaría la siguiente petición URL al servidor:
http://Workshop1/Painting/Profile.asp?Nombre=Juan&Apellido=Soto&Edad=30&EstadoUsuario=Nuevo
El archivo Profile.asp podría contener la siguiente secuencia de comandos para procesar formularios:
Hola, <%= Request.QueryString("nombre") %> <%= Request.QueryString("apellido") %>.
Tiene <%= Request.QueryString("edad") %> años.
<%
If Request.QueryString("EstadoUsuario") = "Nuevo" Then
Response.Write"Ésta es su primera visita a este sitio Web"
End if
%>
En este caso, el servidor Web devolvería el texto siguiente al explorador Web del usuario:
Hola Juan Soto. Tiene 30 años. Ésta es su primera visita a este sitio Web
La colección QueryString también tiene un parámetro opcional que puede utilizar para tener acceso a
uno de los múltiples valores que se encuentran en el cuerpo de la petición URL (con el método GET).
También puede utilizar la propiedad Count para contar el número de veces que aparece un determinado
tipo de valor.
Por ejemplo, un formulario que contenga un cuadro de lista con varios elementos puede generar la
siguiente petición:
http://OrganicFoods/list.asp?Comida=Manzanas&Comida=Aceitunas&Comida=Pan
Podría utilizar el siguiente comando para contar los diferentes valores:
Request.QueryString("Comida").Count
Para presentar los tipos de valores, Lista.asp podría contener la secuencia de comandos siguiente:
<%
lngTotal = Request.QueryString("Comida").Count
For i = 1 To lngTotal
Response.Write Request.QueryString("Comida")(i) & "
"
Next
%>
La secuencia de comandos anterior mostraría:
Manzanas
Aceitunas
Pan
También puede mostrar la lista completa de valores como una cadena delimitada por comas, del modo
siguiente:
<% Response.Write Request.QueryString("Item") %>
Aparecería la cadena siguiente:
Manzanas, Aceitunas, Pan
Colección Form
Cuando utiliza el método GET de HTTP para pasar a un servidor Web valores de un formulario grande y
complejo, corre el riesgo de perder información. Algunos servidores Web tienden a restringir el tamaño
de la cadena de petición de URL, por lo que los valores de los formularios grandes pasados con el
método GET podrían quedar truncados. Si necesita enviar una gran cantidad de información desde un
formulario a un servidor Web, debe utilizar el método POST de HTTP. El método POST, que envía los
datos de los formularios en el cuerpo de la petición HTTP, puede enviar un número casi ilimitado de
caracteres a un servidor. Puede utilizar la colección Form del objeto Request de ASP para recuperar los
valores enviados mediante el método POST.
La colección Form almacena valores de manera similar a la colección QueryString. Por ejemplo, si un
usuario completa un formulario escribiendo una larga lista de nombres, se podrían leer los nombres con
la secuencia de comandos siguiente:
<%
lngTotal = Request.Form("Comida").Count
For i = 1 To lngTotal
Response.Write Request.Form("Comida")(i) & "
"
Next
%>
Validar los datos de los formularios
Un formulario Web bien diseñado suele incluir una secuencia de comandos del cliente que valida los
datos proporcionados por el usuario antes de enviar la información al servidor. Las secuencias de
comandos de validación pueden comprobar si el usuario escribió un número válido o si un cuadro de
texto está en blanco. Imagine que su sitio Web incluye un formulario que permite calcular la tasa de
retorno de una inversión. Probablemente querrá comprobar si un usuario realmente escribió texto o
números en los campos apropiados del formulario, antes de enviar al servidor información que podría no
ser válida.
En general, lo mejor es realizar en el cliente tantas comprobaciones como sea posible. Además, de
poder preguntar antes al usuario por los errores, la validación en el cliente mejora el tiempo de
respuesta, reduce la carga del servidor y libera ancho de banda para otras aplicaciones.
La siguiente secuencia de comandos del cliente valida los datos escritos por el usuario (en este caso, la
secuencia de comandos determina si el número de cuenta que escribió el usuario es realmente un
número) antes de enviarlos al servidor:
CheckNumber()">
Sin embargo, si la validación de un formulario requiere el acceso a una base de datos debe considerar la
utilización de la validación del formulario en el servidor. Una forma muy útil de realizar la validación en el
servidor es crear formularios que se envíen la información a sí mismos. Es decir, el archivo .asp contiene
en realidad el formulario HTML que recibe los datos del usuario. (Recuerde, puede utilizar ASP para
interactuar con secuencias de comandos del cliente y código HTML. Para obtener más información,
consulte Interactuar con secuencias de comandos del cliente.) Los datos escritos vuelven al mismo
archivo, que se encarga de validar la información y avisa al usuario si éstos no son correctos.
Mediante este método se pueden mejorar las características de uso y la respuesta de los formularios
basados en Web. Por ejemplo, si se incluye información del error junto al campo del formulario en el que
se escribió la información incorrecta, será más fácil para el usuario descubrir el origen del error.
(Normalmente, los formularios basados en Web reenvían las peticiones a una página Web
independiente que contiene información del error. Los usuarios que no comprendan esta información
podrían sentirse frustrados.)
Por ejemplo, la secuencia de comandos siguiente determina si un usuario escribió un número de cuenta
válido, para lo que se envía la información a sí misma (Verify.asp) y llama a una función definida por el
usuario que realiza una consulta a una base de datos:
<%
strAcct = Request.Form("Cuenta")
If Not AccountValid(strAcct) Then
ErrMsg = "El número de cuenta que ha escrito no es válido."
Else
Procesa los datos del usuario
.
.
.
Server.Transfer("Complete.asp")
End If
Function AccountValid(strAcct)
Aquí se incluirá una secuencia de comandos o una llamada a un método de un componente de
conexión con una base de datos.
End Function
%>

Número de cuenta: <%= ErrMsg %>
En este ejemplo, la secuencia de comandos se encuentra en un archivo llamado Verify.asp, el mismo
archivo que contiene el formulario HTML y, para enviarse la información a sí mismo, especifica
Verify.asp en el atributo ACTION.
Importante Si utiliza JScript para la validación en el servidor, asegúrese de colocar un par de
paréntesis vacíos detrás del elemento de la colección Request (QueryString o Form) al asignar la
colección a una variable local. Sin el paréntesis la colección devolverá un objeto en lugar de una
cadena. La secuencia de comandos siguiente muestra el método correcto para asignar variables con
JScript:
<%
var Nombre = Request.Form("Nombre")();
var Contraseña = Request.Form("Contraseña")();
if(Nombre > "")
{
if(Nombre == Contraseña)
Response.Write("El nombre y la contraseña son iguales".)
else
Response.Write("El nombre y la contraseña son diferentes".);
}
%>
VBScript presenta el mismo comportamiento si la colección contiene varios valores separados por
comas o con los que se pueda crear un índice. Esto significa que tanto para VBScript como para JScript,
además de colocar un par de paréntesis detrás del elemento de la colección Request, necesitará
especificar el índice del valor deseado. Por ejemplo, la siguiente línea en JScript devuelve sólo el
primero de los varios valores de un elemento de un formulario:
var Nombre = Request.Form("Nombre")(1);
Acceso al origen de datos
ActiveX Data Objects (ADO) es una tecnología ampliable y de fácil uso para agregar a sus páginas Web
acceso a bases de datos. Puede utilizar ADO para escribir secuencias de comandos compactas y
escalables que le permitan conectarse a orígenes de datos compatibles con OLE DB, como bases de
datos, hojas de cálculo, archivos de datos secuenciales o directorios de correo electrónico. OLE DB es
una interfaz de programación de nivel de sistema que proporciona un conjunto estándar de interfaces
COM para que permitan exponer las funciones del sistema de administración de bases de datos. Con el
modelo de objetos ADO es fácil tener acceso a estas interfaces (mediante lenguajes de secuencias de
comandos, como VBScript o JScript) para agregar funciones de bases de datos a las aplicaciones Web.
Además, también puede utilizar ADO para tener acceso a bases de datos compatibles con la
Conectividad abierta de bases de datos (ODBC, Open Database Connectivity).
Si no tiene mucha experiencia en conectividad con bases de datos, encontrará que la sintaxis de ADO
es sencilla y fácil de utilizar. Si es un programador experimentado, agradecerá el acceso escalable de
alto rendimiento que proporciona ADO para una gran variedad de orígenes de datos.
Crear una cadena de conexión
El primer paso en la creación de una aplicación de datos en Web consiste en proporcionar un método
para que ADO encuentre e identifique el origen de datos. Para ello se utiliza una cadena de conexión,
una serie de argumentos separados mediante un punto y coma que definen parámetros como el
proveedor del origen de datos y la ubicación del mismo. ADO utiliza la cadena de conexión para
identificar el proveedor OLE DB y para dirigir al proveedor al origen de datos. El proveedor es un
componente que representa el origen de datos y que expone la información en la aplicación en forma de
conjuntos de filas.
En la tabla siguiente se enumeran las cadenas de conexión de OLE DB para varios orígenes de datos
habituales:
Origen de datos Cadena de conexión OLE DB
Microsoft(r) Access Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ruta física de
acceso al archivo .mdb
Microsoft SQL Server Provider=SQLOLEDB.1;Data Source=ruta de acceso a la base
de datos del servidor
Oracle Provider=MSDAORA.1;Data Source=ruta de acceso a la base
de datos del servidor
Microsoft Indexing Service Provider=MSIDXS.1;Data Source=ruta de acceso al archivo
Para proporcionar compatibilidad con versiones anteriores, el proveedor OLE DB para ODBC admite la
sintaxis de las cadenas de conexión ODBC. En la tabla siguiente se enumeran las cadenas de conexión
ODBC que se utilizan habitualmente:
Controlador del origen
de datos
Cadena de conexión ODBC
Microsoft Access Driver={Microsoft Access Driver (*.mdb)};DBQ=ruta física de
acceso al archivo .mdb
SQL Server DRIVER={SQL Server};SERVER=ruta de acceso al servidor
Oracle DRIVER={Microsoft ODBC for Oracle};SERVER=ruta de
acceso al servidor
Microsoft Excel Driver={Microsoft Excel Driver (*.xls)};DBQ=ruta física de
acceso al archivo .xls; DriverID=278
Microsoft Excel 97 Driver={Microsoft Excel Driver (*.xls)};DBQ=ruta física de
acceso al archivo .xls;DriverID=790
Paradox Driver={Microsoft Paradox Driver (*.db)};DBQ=ruta física de
acceso al archivo .db;DriverID=26
Texto Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir=ruta física
de acceso al archivo .txt
Microsoft Visual
FoxPro(r) (con un
contenedor de bases de
datos)
Driver={Microsoft Visual FoxPro
Driver};SourceType=DBC;SourceDb=ruta física de acceso al
archivo .dbc
Microsoft Visual FoxPro
(sin un contenedor de
bases de datos)
Driver={Microsoft Visual FoxPro
Driver};SourceType=DBF;SourceDb=ruta física de acceso al
archivo .dbf
Conectarse al origen de datos
ADO proporciona el objeto Connection para establecer y administrar las conexiones entre las
aplicaciones y los orígenes de datos compatibles con OLE DB o las bases de datos compatibles con
ODBC. El objeto Connection incorpora propiedades y métodos que se pueden utilizar para abrir y cerrar
conexiones con bases de datos, y para enviar consultas de actualización de la información.
Para establecer una conexión con una base de datos, cree primero una instancia del objeto
Connection. Por ejemplo, la secuencia de comandos siguiente crea una instancia del objeto
Connection y procede a abrir una conexión:
<%
'Crea un objeto Connection.
Set cn = Server.CreateObject("ADODB.Connection")
'Abre una conexión mediante la cadena de conexión OLE DB.
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DatosMercado\VentasPrevistas.mdb"
%>
Nota La cadena de conexión no contiene espacios en blanco ni antes ni después del signo igual (=).
En este caso, el método Open del objeto Connection se refiere a la cadena de conexión.
Ejecutar consultas SQL con el objeto Connection
Con el método Execute del objeto Connection puede emitir comandos al origen de datos, como
consultas de SQL (Lenguaje de consulta estructurado). (SQL, lenguaje estándar para comunicarse con
bases de datos, define comandos para recuperar y actualizar información.) El método Execute acepta
parámetros que especifiquen el comando (o la consulta), el número de registros de datos a los que
afecta y el tipo de comando que se utiliza.
La siguiente secuencia de comandos utiliza el método Execute para enviar una consulta con un
comando INSERT de SQL, que inserta datos en una tabla concreta de la base de datos. En este
caso, el bloque de la secuencia de comandos inserta el nombre José Lugo en una tabla de la
base de datos llamada Customers.
<%
'Define la cadena de conexión OLE DB.
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Datos\Empleados.mdb"
'Crea la instancia del objeto Connection y abre una conexión con la base de datos.
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString
'Define la instrucción SELECT de SQL.
strSQL = "INSERT INTO Customers (FirstName, LastName) VALUES ('José','Lugo')"
'Utiliza el método Execute para enviar una consulta SQL a la base de datos.
cnn.Execute strSQL,,adCmdText + adExecuteNoRecords
%>
Observe que se especifican dos parámetros en la instrucción que se utiliza para ejecutar la consulta:
adCmdText y adExecuteNoRecords. El parámetro opcional adCmdText especifica el tipo de comando e
indica que el proveedor debe evaluar la instrucción de consulta (en este caso, una consulta SQL) como
una definición textual de un comando. El parámetro adExecuteNoRecords indica a ADO que no debe
crear un conjunto de registros de datos si no se devuelven resultados a la aplicación. Este parámetro
sólo funciona con los tipos de comandos definidos como texto, como las consultas SQL, o con
procedimientos almacenados de bases de datos. Aunque los parámetros adCmdText y
adExecuteNoRecords son opcionales, debe especificarlos al utilizar el método Execute para mejorar así
el rendimiento de la aplicación de datos.
Importante Los parámetros ADO, como adCmdText, deben estar definidos para poder utilizarlos en una
secuencia de comandos. Un método cómodo para definir los parámetros consiste en utilizar una
biblioteca de tipos de componentes, que es un archivo que contiene definiciones para todos los
parámetros ADO. Para implementar una biblioteca de tipos de componentes debe declararla antes.
Agregue la etiqueta siguiente al archivo .asp o a Global.asa para declarar la biblioteca de
tipos ADO:
Si desea obtener más detalles acerca de cómo implementar las bibliotecas de tipos de componentes,
consulte la sección Utilizar constantes del tema Utilizar variables y constantes.
Además del comando INSERT de SQL, puede utilizar los comandos UPDATE y DELETE de SQL para
modificar y quitar información de la base de datos.
Con el comando UPDATE de SQL puede modificar los valores de los elementos de una tabla de la base
de datos. La siguiente secuencia de comandos usa el comando UPDATE para cambiar todos los
campos FirstName de la tabla Customers a Juan en todas las filas cuyo campo LastName contenga el
apellido Soto.
<%
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Datos\Empleados.mdb"
cn.Execute "UPDATE Customers SET FirstName = 'Juan' WHERE LastName = 'Soto' ",,adCmdText +
adExecuteNoRecords
%>
Para quitar determinados registros de una tabla de la base de datos, utilice el comando DELETE de
SQL. La siguiente secuencia de comandos quita todas las filas de la tabla Customers cuyo apellido sea
Soto:
<%
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Datos\Empleados.mdb"
cn.Execute "DELETE FROM Customers WHERE LastName = 'Soto'",,adCmdText +
adExecuteNoRecords
%>
Nota Debe tener mucho cuidado al utilizar el comando DELETE de SQL. Un comando DELETE que no
vaya acompañado de una cláusula WHERE eliminará todas las filas de la tabla. Asegúrese de incluir la
cláusula WHERE de SQL, que especifica las filas exactas que se van a eliminar.
Utilizar el objeto Recordset para manipular los resultados
Para recuperar datos, examinar resultados y modificar su base de datos, ADO proporciona el objeto
Recordset. El objeto Recordset tiene las funciones necesarias para, dependiendo de las restricciones de
las consultas, recuperar y presentar un conjunto de filas, o registros, de una base de datos. El objeto
Recordset mantiene la posición de cada registro devuelto por la consulta, lo que permite recorrer los
resultados de uno en uno.
Recuperar un conjunto de registros
Las buenas aplicaciones de datos Web emplean el objeto Connection para establecer un vínculo, y el
objeto Recordset para manipular los datos devueltos. Al combinar las funciones especializadas de
ambos objetos puede desarrollar aplicaciones de bases de datos que realicen casi cualquier tarea de
tratamiento de datos. Por ejemplo, la siguiente secuencia de comandos del servidor utiliza el objeto
Recordset para ejecutar un comando SELECT de SQL. El comando SELECT recupera un conjunto
específico de información basándose en las restricciones de la consulta. La consulta también contiene
una cláusula WHERE de SQL, que se utiliza para establecer el criterio de selección de la consulta. En
este ejemplo, la cláusula WHERE limita la consulta a todos los registros que contengan el apellido Soto
en la tabla Customers de la base de datos.
<%
'Establece una conexión con un origen de datos.
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Datos\Empleados.mdb"
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString
'Crea una instancia de un objeto Recordset.
Set rsCustomers = Server.CreateObject("ADODB.Recordset")
'Abre un objeto Recordset con el método Open
'y utiliza la conexión establecida por el objeto Connection.
strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Soto' "
rstCustomers.Open strSQL, cnn
'Recorre el conjunto de los registros y presenta los resultados
'e incrementa la posición del registro con el método MoveNext.
Set objFirstName = rstCustomers("Nombre")
Set objLastName = rstCustomers("Apellido")
Do Until rstCustomers.EOF
Response.Write objFirstName & " " & objLastName & "
"
rstCustomers.MoveNext
Loop
%>
Observe que en el ejemplo anterior, el objeto Connection estableció la conexión con la base de datos y
que el objeto Recordset utilizó la misma conexión para recuperar resultados de la base de datos. Este
método es útil cuando tenga que configurar con precisión la forma en que se establece el vínculo con la
base de datos. Por ejemplo, si necesitara especificar el tiempo de espera antes de anular un intento de
conexión, tendría que utilizar el objeto Connection para establecer dicha propiedad. Sin embargo, si sólo
desea establecer una conexión con las propiedades de conexión predeterminadas de ADO, podría
utilizar el método Open del objeto Recordset para establecer el vínculo:
<%
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Datos\Empleados.mdb"
strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Soto' "
Set rsCustomers = Server.CreateObject("ADODB.Recordset")
'Abre una conexión con el método Open
'y utiliza la conexión establecida por el objeto Connection.
rstCustomers.Open strSQL, strConnectionString
'Recorre el conjunto de registros, presenta los resultados
'e incrementa la posición del registro con el método MoveNext.
Set objFirstName = rstCustomers("Nombre")
Set objLastName = rstCustomers("Apellido")
Do Until rstCustomers.EOF
Response.Write objFirstName & " " & objLastName & "
"
rstCustomers.MoveNext
Loop
%>
Cuando establece una conexión con el método Open del objeto Recordset, está utilizando
implícitamente el objeto Connection para proteger el vínculo. Para obtener más información, consulte la
documentación acerca de Microsoft ActiveX Data Objects (ADO), disponible en el sitio Web de Microsoft
Universal Data Access en la dirección http://www.microsoft.com/data/.
Nota Para mejorar de forma significativa el rendimiento de las aplicaciones ASP de base de datos,
piense en la posibilidad de cambiar el estado del conjunto de registros a Application. Para obtener más
información, consulte Guardar datos en la memoria caché.
A menudo resulta útil contar el número de registros que se devuelven en un conjunto de registros. El
método Open del objeto Recordset permite especificar un parámetro opcional, cursor, que determina
cómo recupera y recorre el conjunto de registros el proveedor subyacente. Al agregar el parámetro de
cursor adOpenKeyset a la instrucción que se utiliza para ejecutar la consulta, permite que la aplicación
cliente recorra todo el conjunto de registros. Como resultado, la aplicación puede utilizar la propiedad
RecordCount para calcular con precisión el número de registros del conjunto. Vea el siguiente ejemplo:
<%
Set rsCustomers = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM NewOrders", "Provider=Microsoft.Jet.OLEDB.3.51;Data
Source='C:\PedidosClientes\Pedidos.mdb'", adOpenKeyset, adLockOptimistic, adCmdText
'Utiliza la propiedad RecordCount del objeto Recordset para realizar la cuenta.
If rs.RecordCount >= 5 then
Response.Write "Recibimos estos " & rs.RecordCount & " nuevos pedidos
"
Do Until rs.EOF
Response.Write rs("NombreCliente") & " " & rs("ApellidoCliente") & "
"
Response.Write rs("NumeroCuenta") & "
"
Response.Write rs("Cantidad") & "
"
Response.Write rs("FechaEntrega") & "

"
rs.MoveNext
Loop
Else
Response.Write "Hay menos de " & rs.RecordCount & " nuevos pedidos."
End If
rs.Close
%>
Combinar formularios HTML y el acceso a bases de datos
Las páginas Web que contienen formularios HTML pueden permitir que los usuarios consulten de forma
remota una base de datos y recuperen información concreta. Con ADO puede crear secuencias de
comandos sorprendentemente sencillas que recopilen información del formulario del usuario, creen una
consulta personalizada para la base de datos y devuelvan información al usuario. Mediante el objeto
Request de ASP puede recuperar la información escrita en los formularios HTML e incorporar dicha
información a sus instrucciones SQL. Por ejemplo, el siguiente bloque de secuencia de comandos
inserta en una tabla la información suministrada por un formulario HTML. La secuencia de comandos
recopila información del usuario con la colección Form del objeto Request.
<%
'Abre una conexión mediante el objeto Connection. El objeto Command
'no tiene un método Open para establecer la conexión.
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Catálogo\Semillas.mdb"
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString
'Crea una instancia del objeto Command
'y utiliza la propiedad ActiveConnection para adjuntar
'la conexión al objeto Command.
Set cm= Server.CreateObject("ADODB.Command")
Set cmn.ActiveConnection = cnn
'Define la consulta SQL.
cmn.CommandText = "INSERT INTO MySeedsTable (Type) VALUES (?)"
'Define la información de configuración de los parámetros de la consulta.
cmn.Parameters.Append cmn.CreateParameter("type",adVarChar, ,255)
'Asigna el valor de la entrada y ejecuta la actualización.
cmn("type") = Request.Form("SeedType")
cmn.Execute ,,adCmdText + adExecuteNoRecords
%>
Para obtener más información acerca de los formularios y el uso del objeto Request de ASP, consulte
Procesar los datos introducidos por el usuario.
Transferencia entre archivos .ASP
Para utilizar Response.Redirect para redirigir un explorador se necesita un viaje de ida y vuelta, lo que
significa que el servidor envía al explorador una respuesta HTTP en la que indica la ubicación de la
nueva dirección URL. El explorador abandona automáticamente la cola de la petición del servidor y
envía una nueva petición HTTP para la dirección URL. Después, el servidor agrega esta petición a la
cola de peticiones, junto con las peticiones que mientras tanto llegan desde otros clientes. En un sitio
Web con mucha carga, este sistema puede desperdiciar ancho de banda y reducir el rendimiento del
servidor, especialmente si se redirige el explorador a un archivo que se encuentre en el mismo servidor.
Puede utilizar el método Server.Transfer para realizar la transferencia de un archivo .asp a otro que se
encuentre en el mismo servidor, en lugar del método Response.Redirect. Con Server.Transfer puede
transferir directamente las peticiones de archivos .asp sin necesidad de abandonar la cola de peticiones,
lo que elimina viajes de ida y vuelta.
Por ejemplo, la secuencia de comandos siguiente muestra cómo podría utilizar Server.Transfer para
saltar entre las páginas de una aplicación según la información de estado:
<%
If Session("blnSaleCompleted") Then
Server.Transfer("/Pedido/Gracias.asp")
Else
Server.Transfer("/Pedido/MasInfo.asp")
End if
%>
Server.Transfer envía peticiones desde un archivo .asp en ejecución a otro archivo. Durante la
transferencia, el archivo .asp que se pidió inicialmente finaliza inmediatamente la ejecución sin vaciar el
búfer de salir (para obtener más información, consulte la sección Almacenamiento en búfer del
contenido). La petición de información se pone a disposición del archivo de destino cuando éste
comienza la ejecución. Durante la ejecución, el archivo tiene acceso al mismo conjunto de objetos
intrínsecos (Request, Response, Server, Session y Application) que el archivo que se pidió
inicialmente.
También se puede utilizar Server.Transfer para realizar una transferencia entre archivos .asp que se
encuentren en diferentes aplicaciones. Sin embargo, al hacerlo el archivo se comportará como si
formara parte de la aplicación que inició la transferencia (es decir, el archivo sólo tendrá acceso a las
variables con alcance en la aplicación inicial, no en la aplicación en la que realmente reside el archivo).
Por ejemplo, si realiza una transferencia desde un archivo que se encuentra en la aplicación Ventas a
otro que se encuentra en Personal, la aplicación Ventas tomará prestado el archivo de la aplicación
Personal y lo ejecutará como si fuera parte de ella.
ASP proporciona también el comando Server.Execute que permite transferir un archivo, ejecutar el
contenido y volver al archivo que inició la transferencia. Si tiene conocimientos de VBScript, le ayudará
pensar en Server.Execute como análogo a una llamada a un procedimiento, con la diferencia de que en
lugar de ejecutar un procedimiento se ejecuta un archivo .asp completo.
Por ejemplo, la secuencia de comandos siguiente muestra cómo podría utilizar Server.Execute para
incluir archivos .asp de forma dinámica:
<%
.
.
If blnUseDHTML Then
Server.Execute("DHTML.asp")
Else
Server.Execute("HTML.asp")
End If
.
.
%>
Mientras el archivo de destino pertenezca a una aplicación del mismo servidor, la aplicación inicial se
transferirá a este archivo, ejecutará su contenido y continuará con la ejecución del archivo que inició la
transferencia. Igual que sucede con Server.Transfer, al ejecutar un archivo .asp éste se comporta como
si formara parte de la aplicación inicial. Sin embargo, Server.Execute, no funciona cuando los servidores
son distintos. Para obtener más información, consulte Server.Execute.
Enviar contenido al explorador
A medida que se procesa una secuencia de comandos ASP, el texto y los gráficos que no se encuentren
entre delimitadores ASP o etiquetas
Functions
Server Side Functions

The function "PrintOutMsg" prints out a specific message a set number of times.

<%
'Store number of times function printed message.
Dim intTimes
'Call function.
intTimes = PrintOutMsg("This is a function test!", 4)
'Output the function return value.
Response.Write("
The function printed out the message " & intTimes & "
times.")
%>
Datos introducidos por el usuario en un formulario con POST
Introducción
Probablemente, la forma más básica de interactividad Web es el formulario HTML. Es importante tener
en cuenta que ASP no sustituye a los formularios, sino que los mejora y hace que sea más fácil
implementarlos y administrarlos.
La etiqueta HTML
especifica qué método utilizará el formulario para comunicar la información
a la secuencia de comandos que la procesará. El atributo del método POST indica que la información
del formulario pasará a través de una conexión HTTP independiente a la secuencia de comandos o al
programa que la procesará. La secuencia de comandos o el programa pueden analizar la información y
realizar cualquier tarea que sea necesaria, y devolver el resultado al explorador cliente.
Paseo por el código
Este ejemplo muestra cómo implementar un formulario sencillo mediante el atributo del método POST de
HTTP, así como una de las principales ventajas de la creación de formularios mediante ASP: la
posibilidad de combinar el formulario y el código de proceso real en un mismo archivo. Este ejemplo crea
un pequeño formulario con dos cuadros de entrada de texto, uno para el nombre del usuario (fname) y
otro para el apellido (lname). Para obtener el valor de las variables fname y lname en la petición se tiene
acceso a la colección Request.Forms y después se muestran los resultados en la parte inferior de la
página.
La primera vez que se ejecuta la secuencia de comandos no aparece ningún texto debajo de la línea
horizontal. Esto se debe a que no había información disponible para pasarla a la secuencia de
comandos cuando se inició y ASP pasa por alto las búsquedas de Request.Forms si no existe
información. Sin embargo, si hace clic en el botón Enviar, se cargará de nuevo la página y la secuencia
de comandos ya dispondrá de la información que escribió en los cuadros de texto.
<%@ Language = VBScript %>
<% Option Explicit %>
Form Posting
Form Posting


This page will take the information entered in the form fields, and use the POST
method to send the data to an ASP page.
First Name:

Last Name:



<% Response.Write Request.form("fname")%>
<% Response.Write Request.form("lname")%>
Llenar los campos
Introducción
Puede utilizar formularios para recopilar datos de los usuarios, pero también puede utilizarlos para
mostrar información. Por ejemplo, si un explorador cliente tiene acceso al motor de búsqueda de su
directorio de teléfonos, querrá mostrar los resultados de la búsqueda. La secuencia de comandos de
búsqueda (que también puede implementar mediante ASP) acepta los datos introducidos por el usuario,
tiene acceso a la base de datos y envía el resultado al formulario de presentación en una cadena de
consulta. Este ejemplo es una demostración sencilla de cuál sería la apariencia del formulario.
Paseo por el código
Para este ejemplo, los datos se incluyen en el código de la secuencia de comandos pero, obviamente, la
información podría provenir de un formulario interactivo, de una base de datos o de un archivo de texto.
Al iniciarse el ejemplo se inicializan las variables. Después, crea un formulario con las etiquetas HTML
y define cuatro cuadros de texto. Por último, con los delimitadores de secuencias de comandos
del servidor <%= ... %>, la secuencia de comandos llena los cuadros de texto con los valores
establecidos en la inicialización.
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<%
'Create and set variables that will be used in populating 'the form. In a typical application, these
values would come from a database or text file.
Dim strFirstName
Dim strLastName
Dim strAddress1
Dim strAddress2
Dim blnInfo
strFirstName = "John"
strLastName = "Doe"
strAddress1 = "1 Main Street"
strAddress2 = "Nowhere ZA, 12345"
%>
PopulateForm Sample
PopulateForm Sample


First Name: %>">

Last Name: %>">

Street:

City State, Zip: %>">

Conectividad con bases de datos
Si va a crear una aplicación basada en Web, lo más probable es que tenga formularios. Posiblemente,
también tendrá que conectarla de alguna forma con una base de datos. ActiveX® Data Objects (ADO)
proporciona un conjunto de eficaces herramientas que le permitirán tener acceso a orígenes de datos y
manipularlos.
Los ejemplos de esta sección ilustran las técnicas necesarias para utilizar ADO de forma efectiva y cómo
puede utilizar mejor estas funciones en una aplicación basada en Web.
• Consulta sencilla: Muestra cómo utilizar ADO y ASP para realizar consultas sencillas en una
base de datos.
• Limitar los resultados de una consulta: Muestra cómo es posible utilizar ASP y ADO en las
secuencias de comandos para limitar el número de filas devueltas en un conjunto de registros.
• Consulta desplazable: Muestra cómo realizar con ADO una consulta desplazable
multidireccional.
• Agregar o eliminar registros: Presenta las técnicas necesarias para agregar y eliminar registros
de un origen de datos mediante ASP y ADO.
• Actualizar registros: Muestra cómo utilizar ADO en una aplicación para actualizar los registros
existentes.
• Ejecutar procedimientos almacenados: Muestra cómo utilizar ADO con las secuencias de
comandos ASP para ejecutar procedimientos almacenados de la base de datos.
Para obtener más información acerca de ADO y de las herramientas de acceso a datos de Microsoft en
general, consulte la documentación de Microsoft Data Access.
Consulta sencilla
Introducción
Aunque una base de datos puede ser un sistema muy complicado y las herramientas de acceso a datos
deben ser eficaces y sensibles, es igualmente importante que las tareas sencillas de acceso a bases de
datos sean fáciles de realizar. Este ejemplo demuestra cómo ADO proporciona un método sencillo para
realizar este tipo de tareas.
Paseo por el código
El objetivo de esta aplicación de ejemplo es obtener un pequeño conjunto de registros de una base de
datos de Microsoft® Access e imprimir el resultado. El primer paso consiste en crear una instancia del
objeto Connection mediante el método Server.CreateObject. El ejemplo utiliza la instancia del objeto
Connection para abrir el proveedor de datos OLE DB y, después, para ejecutar un comando SELECT
de SQL y así obtener todos los registros de la tabla Autores. Para terminar, la secuencia de comandos
recorre la colección del conjunto de registros obtenido y muestra los resultados. Después se cierran el
conjunto de registros y la conexión con el origen de datos OLE DB.
Importante OLE DB debe estar correctamente configurado en el servidor para que este ejemplo
funcione correctamente.
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
Simple ADO Query
Simple ADO Query with ASP


Contacts within the Authors Database:

<%
Dim oConn
Dim oRs
Dim filePath
Dim Index
' Map authors database to physical path
filePath = Server.MapPath("authors.mdb")
' Create ADO Connection Component to connect
' with sample database
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath
' Execute a SQL query and store the results
' within recordset
Set oRs = oConn.Execute("SELECT * From Authors")
%>

<%
Do while (Not oRs.eof) %>

<% For Index=0 to (oRs.fields.count-1) %>

<% Next %>

<% oRs.MoveNext
Loop
%>
<% = oRs(Index)%>

<%
oRs.close
oConn.close
%>
Agregar o eliminar registros
Introducción
Este ejemplo muestra las técnicas que necesita conocer para utilizar ASP y ADO con el fin de agregar y
eliminar registros de una base de datos.
Paseo por el código
Primero se utiliza CreateObject para crear una instancia del objeto Connection, que a su vez se utiliza
para abrir una conexión con el proveedor de datos OLE DB. Se utiliza de nuevo CreateObject para
crear un objeto Recordset vacío. Se configura la propiedad ActiveConnection para hacer referencia al
nuevo objeto Connection.
Aunque el objeto Recordset de ADO proporciona el método AddNew para agregar nuevos registros a
una base de datos, puede que la escalabilidad mejore si envía comandos INSERT de SQL directamente
al motor de base de datos. Este ejemplo utiliza el comando Recordset.Execute, junto con la cadena de
comandos apropiada de SQL, para insertar información acerca de un nuevo autor.
En este momento se crea otra instancia del objeto Recordset y se abre con otro comando SQL. Se
selecciona el registro recién agregado y se elimina, para lo cual se pasa el comando DELETE de SQL
directamente al motor de base de datos. Por último, finaliza la secuencia de comandos.
Importante OLE DB debe estar correctamente configurado en el servidor para que este ejemplo
funcione correctamente.
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<% Response.Expires= -1 %>
Add/Delete Database Sample
Add/Delete Database Sample


<%
Dim oConn
Dim oRs
Dim filePath
' Map authors database to physical path
filePath = Server.MapPath("authors.mdb")
' Create ADO Connection Component to connect with sample database
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath
' To add, delete and update recordset, it is recommended to use
' direct SQL statement instead of ADO methods.
oConn.Execute "insert into authors (author, YearBorn) values ('Paul Enfield', 1967)"
' Output Result
Set oRs = oConn.Execute (" select * from authors where Author= 'Paul Enfield'
and YearBorn =1967 " )
Response.Write("
Inserted Author: " & oRs("Author") & "," & oRs("YearBorn"))
' Close Recordset
oRs.Close
Set oRs= Nothing
' Delete the inserted record
oConn.Execute "Delete From authors where author='Paul Enfield' and YearBorn
= 1967 "
' Output Status Result
Response.Write("
Deleted Author: Paul Enfield, 1967")
%>
Actualizar registros
Introducción
Este ejemplo muestra cómo utilizar ADO en una aplicación para actualizar los registros existentes.
Paseo por el código
Primero se utiliza CreateObject para crear una instancia del objeto Connection, que a su vez se utiliza
para abrir una conexión con el proveedor de datos OLE DB. Se utiliza de nuevo CreateObject para
crear un objeto Recordset vacío. Se configura la propiedad ActiveConnection para hacer referencia al
nuevo objeto Connection.
Después se configura el nuevo conjunto de registros. El método Recordset.Execute utiliza como
parámetro una cadena de comandos SQL. Este ejemplo utiliza una cadena de comandos UPDATE de
SQL para realizar la actualización en los registros adecuados de la base de datos.
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
Update Database
Update Database


<%
Dim oConn ' object for ADODB.Connection obj
Dim oRs ' object for output recordset object
Dim filePath ' Directory of authors.mdb file
' Map authors database to physical path
filePath = Server.MapPath("authors.mdb")
' Create ADO Connection Component to connect with sample database
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath
' To add, delete and update recordset, it is recommended to use
' direct SQL statement instead of ADO methods.
oConn.Execute "Update Authors Set Author ='Scott Clinton'" _
& "where Author='Scott Guthrie' "
Set oRs = oConn.Execute ( "select * from Authors where author" _
& "= 'Scott Clinton'" )
%>
Changed Author: <%= oRs("Author") %>, <%= oRs("Yearborn") %>

<%
oConn.Execute "Update Authors Set Author ='Scott Guthrie'" _
& "where Author='Scott Clinton' "
Set oRs = oConn.Execute ( "select * from Authors where author" _
& "= 'Scott Guthrie'" )
%>
Changed Author: <%= oRs("Author") %>, <%= oRs("Yearborn") %>
MapPath
El método MapPath asigna al directorio físico correspondiente del servidor la ruta virtual o relativa
especificada.
Sintaxis
Server.MapPath( Ruta )
Parámetros
Ruta
Especifica la ruta virtual o relativa que se asignará a un directorio físico. Si Ruta comienza con una barra
diagonal (/) o con una barra diagonal inversa (\), el método MapPath devuelve la ruta como si Ruta fuera
una ruta virtual completa. Si Ruta no comienza con una barra diagonal, el método MapPath devuelve
una ruta relativa al directorio del archivo .asp que se procesa.
Observaciones
El método MapPath no comprueba si la ruta que devuelve existe en el servidor o si es válida.
Como el método MapPath asigna la ruta independientemente de si los directorios especificados existen
o no, puede utilizarlo para asignar una ruta a una estructura física de directorios y, después, pasarla a un
componente que cree en el servidor el directorio o el archivo especificado.
Puede utilizar la sintaxis de ruta relativa para el parámetro Ruta si el valor de la propiedad
AspEnableParentPaths es TRUE (que es el valor predeterminado). Si le preocupa permitir que las
secuencias de comandos tengan acceso a la estructura física de directorios, puede deshabilitar esta
característica si asigna el valor FALSE a la propiedad AspEnableParentPaths. Para ello puede utilizar
el complemento Servicios de Internet Information Server o una secuencia de comandos.
Ejemplo
Para los siguientes ejemplos, el archivo data.txt se encuentra en el directorio C:\Inetpub\Wwwroot\Script,
al igual que el archivo test.asp, que contiene las siguientes secuencias de comandos. El directorio
C:\Inetpub\Wwwroot se establece como directorio particular del servidor.
El siguiente ejemplo utiliza la variable de servidor PATH_INFO para asignar la ruta física al archivo
actual. La siguiente secuencia de comandos
<%= server.mappath(Request.ServerVariables("PATH_INFO"))%>
produce el resultado
c:\inetpub\wwwroot\script\test.asp
Como los parámetros de la ruta de los siguientes ejemplos no empiezan con un carácter de barra
diagonal, se asignan de forma relativa al directorio actual, en este caso C:\Inetpub\Wwwroot\Script. Las
siguientes secuencias de comandos
<%= server.mappath("data.txt")%>
<%= server.mappath("script/data.txt")%>
producen el siguiente resultado
c:\inetpub\wwwroot\script\data.txt
c:\inetpub\wwwroot\script\script\data.txt
Los dos ejemplos siguientes utilizan el carácter de barra diagonal para especificar que la ruta que se
obtiene debe buscarse como ruta virtual completa del servidor. Las siguientes secuencias de comandos
<%= server.mappath("/script/data.txt")%>
<%= server.mappath("\script")%>
producen el siguiente resultado
c:\inetpub\wwwroot\script\data.txt
c:\inetpub\wwwroot\script
Los siguientes ejemplos muestran cómo puede utilizar una barra diagonal (/) o una barra diagonal
inversa (\) para obtener la ruta física al directorio particular. Las siguientes secuencias de comandos
<%= server.mappath("/")%>
<%= server.mappath("\")%>
producen el siguiente resultado
c:\inetpub\wwwroot
c:\inetpub\wwwroot
El siguiente documento es un manual de ASP, trata los principales comandos de ASP, desde lo mas
sencillo o lo intermedio, comandos y utilidades basicas para el desarrollo de paginas Web interactivas,
haciendo uso del Microsoft Internet Information Service.
Dicho manual fue tomado de los principales puntos de la ayuda de Windows 2000 Professional. P.P/p.p.
Autora : Valeria Socolovsky
Para Softdownload Argentina
http://www.softdownload.com.ar

No hay comentarios:

Publicar un comentario