Está en la página 1de 37

www.monografias.

com

MANUAL ASP

Crear una pgina ASP Un archivo de pginas Active Server (ASP) es un archivo de texto con la extensin .asp que contiene cualquier com inacin de lo siguiente! "exto #tiquetas $"%& Secuencias de comandos del servidor Un m'todo rpido para crear un archivo .asp consiste en cam iar la extensin de los archivos $"%& (.html o .htm) por la extensin .asp. Si el archivo no contiene funciones ASP( el servidor prescinde del proceso de secuencias de comandos ASP ) env*a el archivo al cliente. +omo desarrollador ,e ( esta opcin proporciona una gran flexi ilidad( )a que puede asignar a los archivos la extensin .asp incluso si no piensa agregar funciones ASP hasta ms adelante. Para pu licar el archivo .asp en ,e ( guarde el nuevo archivo en un directorio virtual de su sitio ,e (aseg-rese de que el directorio tenga los permisos Secuencia de comandos o #.ecucin). A continuacin( escri a en el explorador la direccin U/& del archivo para pedirlo. (/ecuerde( las pginas ASP de e enviarlas el servidor( por lo que no puede pedirlas mediante su ruta f*sica.) +uando el archivo se cargue en el explorador( o servar que el servidor envi una pgina $"%&. Al principio puede parecer extra0o( pero recuerde que el servidor anali1a ) e.ecuta todas las secuencias de comandos ASP del servidor antes de enviar el archivo. #l usuario siempre reci e cdigo $"%& estndar. Para crear archivos .asp( se puede utili1ar cualquier editor de textos. A medida que avance( puede que encuentre ms productivo utili1ar un editor ms orientado a ASP( como %icrosoft(r) 2isual 3nter4ev5. (Para o tener ms informacin( visite el sitio ,e de %icrosoft 2isual 3nter4ev en la direccin http!66msdn.microsoft.com6vinterdev6.)

Agregar secuencias de comandos del servidor Una secuencia de comandos del servidor es una serie de instrucciones que se utili1a para enviar al servidor ,e comandos de forma secuencial. (Si )a desarroll antes sitios ,e ( pro a lemente cono1ca las secuencias de comandos del cliente( que se e.ecutan en el explorador ,e .) #n los archivos .asp( las secuencias de comandos se separan del texto ) de las etiquetas $"%& mediante delimitadores. Un delimitador es un carcter o una secuencia de caracteres que marca el principio o el final de una unidad. #n el caso de $"%&( dichos delimitadores son los s*m olos menor que (7) ) ma)or que (8)( que enmarcan las etiquetas $"%&. ASP utili1a los delimitadores 79 ) 98 para enmarcar los comandos. 4entro de los delimitadores puede incluir cualquier comando vlido dentro del lengua.e de secuencia de comandos que est' utili1ando. #l e.emplo siguiente muestra una pgina $"%& sencilla que contiene un comando de secuencia de comandos! 7$"%&8 7:;4<8 #sta pgina se actuali1 por -ltima ve1 el 79= >ow ()98. 76:;4<8 76$"%&8

&a funcin Now() de 2:Script devuelve la fecha ) la hora actuales. +uando el servidor ,e procesa esta pgina( reempla1a 79= >ow ()98 con la fecha ) la hora actuales( ) devuelve la pgina al explorador con el siguiente resultado! #sta pgina se actuali1 el ?6@A6AA @!@B!BB p.m.

A los comandos enmarcados por delimitadores se les llama comandos principales de secuencias de comandos( que se procesan mediante el lengua.e principal de secuencia de comandos. "odos los comandos utili1ados dentro de los delimitadores de secuencias de comandos de en ser vlidos en el lengua.e principal de secuencia de comandos. 4e forma predeterminada( el lengua.e principal de secuencia de comandos es 2:Script( pero tam i'n puede esta lecer un lengua.e diferente. +onsulte "ra a.ar con lengua.es de secuencias de comandos. Si )a conoce las secuencias de comandos del cliente( )a sa r que la etiqueta $"%& 7S+/3P"8 se utili1a para delimitar las secuencias de comandos ) las expresiones. "am i'n puede utili1ar la etiqueta 7S+/3P"8 para las secuencias de comandos del cliente( siempre que necesite definir procedimientos en m-ltiples lengua.es en un archivo .asp. Para o tener ms informacin( consulte "ra a.ar con lengua.es de secuencias de comandos.

Combinar HTML

comandos de secuencias de comandos

4entro de los delimitadores de ASP puede incluir cualquier instruccin( expresin( procedimiento u operador que sea vlido en el lengua.e principal para secuencia de comandos. Una instruccin( en 2:Script ) en otros lengua.es( es una unidad sintcticamente completa que expresa un tipo de accin( declaracin o definicin. &a instruccin condicional !"###T$en###%lse que aparece a continuacin es una instruccin de 2:Script mu) com-n! 79 4im dtm$our dtm$our = $our(>ow()) 3f dtm$our 7 ?@ "hen Saludos = C:uenos d*asC #lse strDreeting = C$olaC #nd 3f 98 79= strDreeting 98 Seg-n la hora( la secuencia de comandos asigna el valor C:uenos d*asC o el valor C$olaC a la varia le de cadena strDreeting. &a instruccin 79= strDreeting 98 env*a al explorador el valor actual de la varia le. 4e esta forma( los usuarios que vean esta secuencia de comandos antes de las ?@!BB de la ma0ana (seg-n la 1ona horaria del servidor ,e ) ver*an la siguiente l*nea de texto! :uenos d*as &os usuarios que vean esta secuencia de comandos despu's de las ?@!BB de la ma0ana ver*an la siguiente l*nea de texto! $ola Puede incluir texto $"%& entre las secciones de una instruccin. Por e.emplo( la secuencia de comandos siguiente( que com ina $"%& dentro de una instruccin !"###T$en###%lse( produce el mismo resultado que la del e.emplo anterior! 79 4im dtm$our dtm$our = $our(>ow()) 3f dtm$our 7 ?@ "hen

98 :uenos d*as 79 #lse 98 $ola 79#nd 3f 98 Si la condicin es verdadera( es decir( si es antes del mediod*a( el servidor ,e env*a al explorador el cdigo $"%& que sigue a la condicin (E:uenos d*asF)G de lo contrario( env*a el cdigo $"%& que sigue a %lse (E$olaF). #sta forma de com inar $"%& ) comandos de secuencia de comandos es cmoda para continuar la instruccin !"###T$en###%lse en varias l*neas de texto $"%&. #l e.emplo anterior es ms -til si desea presentar un saludo en varias partes de una pgina ,e . Puede asignar el valor de la varia le una -nica ve1 ) despu's presentarla varias veces. #n lugar de me1clar texto $"%& con comandos de secuencia de comandos( puede devolver texto $"%& al explorador desde dentro de los comandos de secuencia de comandos. Para devolver texto al explorador( utilice el o .eto integrado &esponse de ASP. #l e.emplo siguiente produce el mismo resultado que las secuencias de comandos anteriores! 79 4im dtm$our dtm$our = $our(>ow()) 3f dtm$our 7 ?@ "hen /esponse.,rite C:uenos d*asC #lse /esponse.,rite C$olaC #nd 3f 98 &esponse#'ri(e env*a al explorador el texto que le sigue. Utilice &esponse#'ri(e desde una instruccin cuando desee generar de forma dinmica el texto devuelto al explorador. Por e.emplo( puede generar una cadena de texto que contenga los valores de varias varia les. Aprender ms acerca del o .eto &esponse( ) de los o .etos en general( en Utili1ar componentes ) o .etos ) #nviar contenido al explorador. Por ahora( o serve simplemente que dispone de varias maneras de insertar comandos de secuencias de comandos en las pginas $"%&. Puede incluir procedimientos escritos en su lengua.e predeterminado de secuencias de comandos dentro de delimitadores ASP. Para o tener ms informacin( consulte "ra a.ar con lengua.es de secuencias de comandos. Si va a tra a.ar con comandos HScript( puede insertar las llaves que indican un loque de instrucciones directamente en sus comandos ASP( incluso aunque est'n entreme1clados con etiquetas ) texto $"%&. Por e.emplo! 79 if (screenresolution == ClowC) I 98 Jsta es la versin de texto de la pgina. 79 K else I 98 Jsta es la versin multimedia de la pgina. 79 K 98 L; ienL

79 if (screenresolution == ClowC) I /esponse.,rite(CJsta es la versin de texto de la pgina.C) K else I /esponse.,rite(CJsta es la versin multimedia de la pgina.C) K 98 U(ili)ar direc(ivas ASP ASP proporciona directivas que no forman parte de los lengua.es de secuencias de comandos! 4ichas directivas son la directiva de resultado ) la directiva de proceso. &a directiva de resultado de ASP 79= expresin 98 presenta el valor de una expresin. 4icha directiva es equivalente al uso de &esponse#'ri(e para presentar informacin. Por e.emplo( la expresin 79= ciudad 98 env*a al explorador la pala ra :arcelona (el valor actual de la varia le). &a directiva de proceso de ASP 79M palabra clave 98 ofrece a ASP la informacin que necesita para procesar un archivo .asp. Por e.emplo( la siguiente directiva esta lece 2:Script como lengua.e principal de secuencia de comandos de la pgina! 79M &A>DUAD#=2:Script 98

&as directivas de proceso de en estar en la primera l*nea de los archivos .asp. Para agregar ms de una directiva a una pgina( de en incluirse en el mismo delimitador. >o ponga las directivas de proceso en los archivos incluidos con la instruccin *include. 4e e incluir un espacio en lanco entre el signo M ) la pala ra clave. &a directiva de proceso tiene las siguientes pala ras clave! &a pala ra clave &A>DUAD# esta lece el lengua.e principal de secuencia de comandos de la pgina. &a pala ra clave #>A:&#S#SS3;>S"A"# especifica si un archivo ASP utili1a el estado de la sesin. +onsulte Administrar sesiones. &a pala ra clave +;4#PAD# esta lece la pgina de cdigos (la codificacin de caracteres) del archivo .asp. &a pala ra clave &+34 esta lece el identificador de configuracin regional del archivo. &a pala ra clave "/A>SA+"3;> especifica que el archivo .asp se e.ecutar dentro del contexto de una transaccin. +onsulte 4escripcin de las transacciones !mpor(an(e Puede incluir ms de una pala ra clave en una -nica directiva. &os pares de pala ra clave ) valor de en estar separados por un espacio. >o ponga espacios ni antes ni despu's del signo igual (=). #l e.emplo siguiente esta lece el lengua.e de secuencia de comandos ) la pgina de cdigos! 79M &A>DUAD#=CHscriptC +;4#PAD#=CAN@C 98

%spacio en blanco en las secuencias de comandos Si su lengua.e principal de secuencias de comandos es 2:Script o HScript( ASP quita el espacio en lanco de los comandos. #n otros lengua.es( ASP conserva el espacio en lanco para que los lengua.es que interpreten la posicin o la sangr*a puedan interpretarlo correctamente. #l espacio en lanco inclu)e espacios( ta uladores( retornos ) saltos de l*nea. #n 2:Script ) HScript puede utili1ar el espacio en lanco que sigue al delimitador de apertura ) que precede al de cierre para facilitar la lectura de los comandos. "odas las instrucciones siguientes son vlidas! 79 +olor = CDreenC 98 79+olor=CDreenC98 79 +olor = CDreenC 98 ASP quita el espacio en lanco que se encuentre entre los delimitadores de cierre de las instrucciones ) los delimitadores de apertura de las instrucciones siguientes. Sin em argo( se recomienda utili1ar espacios para me.orar la legi ilidad. Si tiene que conservar el espacio en lanco entre dos instrucciones( como cuando va)a a presentar los valores de las varia les en una frase( utilice el carcter de espacio de no separacin de $"%& (On spG). Por e.emplo! 79 'Define dos variables con valores de cadena. strPirst>ame = CHuanC str&ast>ame = CDarc*aC 98 7P8#sta pgina ,e est personali1ada para C79= strPirst>ame 98On spG79= str&ast>ame 98.C 76P8

U(ili)ar variables

cons(an(es

Una variable es una u icacin de almacenamiento con nom re dentro de la memoria del equipo que contiene datos( como un n-mero o una cadena de texto. A los datos contenidos en una varia le se les llama valor de la varia le. &as varia les ofrecen una manera de almacenar( recuperar ) manipular valores mediante nom res que a)uden a entender lo que hace la secuencia de comandos.

+eclarar

asignar nombre a variables

Siga las reglas ) recomendaciones de su lengua.e de secuencias de comandos a la hora de declarar varia les ) asignarles nom res. 3ncluso aunque no necesita declarar una varia le para poder utili1arla( es conveniente hacerlo porque a)uda a prevenir errores. Declarar una varia le significa indicar al motor de secuencias de comandos que existe una varia le con un nom re concreto( de forma que pueda hacer referencia a la varia le a lo largo de una secuencia de comandos. ,-Scrip( 2:Script no necesita declaraciones de varia les( pero es conveniente declarar todas las varia les antes de utili1arlas. Para declarar una varia le en 2:Script( utilice la instruccin +im( Public o Priva(e. Por e.emplo! 79 4im >om reUsuario 98

Puede utili1ar la instruccin .p(ion %/plici( de 2:Script en los archivos .asp para hacer o ligatoria la declaracin de varia les con las instrucciones +im( Priva(e( Public ) &e+im. &a instruccin .p(ion %/plici( de e aparecer despu's de las directivas ASP ) antes del texto $"%& o de los comandos de la secuencia de comandos. #sta instruccin slo afecta a los comandos ASP escritos en 2:ScriptG no afecta a los comandos escritos en HScript. 79 ;ption #xplicit 98 7$"%&8 79 4im str>om reUsuario Pu lic lng>umero+uenta 98

Alcance de las variables #l alcance( o vida( de una varia le determina qu' comandos de secuencia de comandos pueden tener acceso a dicha varia le. Una varia le declarada dentro de un procedimiento tiene alcance localG la varia le se crea ) se destru)e cada ve1 que se e.ecuta el procedimiento. >o se puede tener acceso a ella desde fuera del procedimiento. Una varia le declarada fuera de un procedimiento tiene alcance globalG su valor es accesi le ) modifica le desde cualquier comando de secuencia de comandos de una pgina ASP. No(a Al limitar el alcance de la varia le a un procedimiento me.orar el rendimiento. Si declara varia les( una varia le local ) una varia le glo al pueden tener el mismo nom re. &a modificacin del valor de una de ellas no afecta al valor de la otra. Sin em argo( si no declara las varia les( podr*a modificar inadvertidamente el valor de una varia le glo al. Por e.emplo( los siguientes comandos de secuencia de comandos devuelven el valor ? incluso aunque ha)a dos varia les llamadas <! 79 ;ption #xplicit 4im < <=? Set&ocal2aria le /esponse.,rite < Su Set&ocal2aria le 4im < <=@ #nd Su 98 Por el contrario( los comandos siguientes devuelven el valor @ porque las varia les no se han declarado de forma expl*cita. +uando la llamada al procedimiento asigna a < el valor @( el motor de secuencias de comandos da por supuesto que el procedimiento pretende modificar la varia le glo al! 79 ;ption #xplicit 4im < = ? Set&ocal2aria le /esponse.,rite < Su Set&ocal2aria le <=@ #nd Su 98 Para evitar pro lemas( adquiera el h ito de declarar expl*citamente todas las varia les. &o cual es especialmente importante si utili1a la instruccin *include para incluir archivos en su archivo ASP. &a secuencia de comandos incluida est contenida en un archivo aparte( pero se trata como si formara parte del archivo contenedor. #s mu) fcil olvidarse de que ha) que utili1ar nom res de varia les

diferentes en la secuencia de comandos principal ) en la secuencia de comandos incluida( a menos que declare las varia les.

Asignar a las variables alcance de sesi0n o de aplicaci0n &as varia les glo ales slo son accesi les en un mismo archivo ASP. Para hacer que una varia le sea accesi le en varias pginas( asigne a la varia le alcance de sesin o de aplicacin. &as varia les con alcance de sesin estn disponi les en todas las pginas de una aplicacin ASP que pida un mismo usuario. &as varia les con alcance de aplicacin estn disponi les en todas las pginas de una aplicacin ASP que pida cualquier usuario. &as varia les de sesin son una uena manera de almacenar informacin para un -nico usuario( como sus preferencias o el nom re o la identificacin del usuario. &as varia les de aplicacin son una uena manera de almacenar informacin para todos los usuarios de una determinada aplicacin( como los saludos espec*ficos o los valores generales necesarios en la aplicacin. ASP proporciona dos o .etos integrados en los que puede almacenar varia les! el o .eto Session ) el o .eto Applica(ion. "am i'n puede crear instancias de o .etos con alcance de sesin o de aplicacin. Para o tener ms informacin( consulte #sta lecer el alcance de los o .etos. Alcance de sesi0n Para asignar alcance de sesin a una varia le( almac'nela en el o .eto Session asignando un valor a una entrada con nom re del o .eto. Por e.emplo( los siguientes comandos almacenan dos nuevas varia les en el o .eto Session! 79 Session(C>om reC) = CHuanC Session(CApellidoC) = CSotoC 98 Para recuperar la informacin del o .eto Session( tenga acceso a la entrada con nom re mediante la directiva de resultado (79=) o &esponse#'ri(e. #n el e.emplo siguiente se utili1a la directiva de resultado para presentar el valor actual de Session(C>om reC)! /eci a nuestra ienvenida(79= Session(C>om reC) 98 Puede almacenar las preferencias del usuario en el o .eto Session ) despu's tener acceso a dichas preferencias para determinar qu' pgina ha) que devolver al usuario. Por e.emplo( puede permitir que los usuarios especifiquen la versin en texto del contenido de la primera pgina de la aplicacin ) aplicar esta opcin a las siguientes pginas de la aplicacin que el usuario visite. 79 strScreen/esolution = Session(CScreen/esolutionC) 3f strScreen/esolution = C&owC "hen 98 Jsta es la versin de texto de la pgina. 79 #lse 98 Jsta es la versin multimedia de la pgina. 79#nd 3f 98 No(a Si hace referencia a una varia le con alcance de sesin ms de una ve1 en una secuencia de comandos( piense en asignarle una varia le local( como en el e.emplo anterior( para me.orar el rendimiento.

Alcance de aplicaci0n Para asignar alcance de aplicacin a una varia le( almac'nela en el o .eto Applica(ion asignando un valor a una entrada con nom re del o .eto. Por e.emplo( el comando siguiente almacena en el o .eto Applica(ion un saludo espec*fico de una aplicacin! 79 Application(CSaludoC) = CQ/eci a nuestra ienvenida al 4epartamento de ventasRC 98 Para recuperar la informacin del o .eto Applica(ion( utilice la directiva de resultado de ASP (79=) o &esponse#'ri(e para tener acceso a la entrada con nom re desde cualquier pgina posterior de la aplicacin. #n el e.emplo siguiente se utili1a la directiva de resultado para presentar el valor de Application(CSaludoC)! 79= Application(CSaludoC) 98 4e nuevo( si hace referencia a una varia le con alcance de aplicacin en su secuencia de comandos repetidamente( de e de asignarle una varia le local para me.orar el rendimiento.

U(ili)ar cons(an(es Una constante es un nom re que representa un n-mero o una cadena. Algunos de los componentes de ase que se proporcionan con ASP( como ActiveS 4ata ; .ects (A4;)( definen constantes que se pueden utili1ar en las secuencias de comandos. Un componente puede declarar constantes en la biblioteca de tipos del componente( un archivo que contiene informacin acerca de los o .etos ) los tipos aceptados por un componente +;%. 4espu's de ha er declarado una i lioteca de tipos en su archivo .asp puede usar las constantes definidas en cualquier secuencia de comandos en el mismo archivo .asp. 3gualmente( puede declarar una i lioteca de tipos en el archivo Dlo al.asa para usar las constantes definidas en cualquier archivo .asp de la aplicacin. Para declarar una i lioteca de tipos( utilice la etiqueta 7%#"A4A"A8 en su archivo .asp o Dlo al.asa. Por e.emplo( para declarar la i lioteca de tipos de A4;( utilice las siguientes instrucciones! 7RLL%#"A4A"A >A%#=C%icrosoft ActiveS 4ata ; .ects @.T &i rar)C "<P#=C")pe&i C UU34=CIBBBBB@BTLBBBBLBB?BLUBBBLBBAABBV4@#AWKCLL8 ; ien( en lugar de hacer referencia al identificador -nico universal (UU34) de la i lioteca de tipos( puede hacer referencia a la i lioteca de tipos mediante la ruta del archivo! 7RLL %#"A4A"A "<P#=Ct)peli C P3&#=Cc!Xprogram filesXcommon filesXs)stemXadoXmsado?T.dllCLL8 #ntonces puede usar las constantes A4; en el archivo .asp donde declar la i lioteca de tipos o en un archivo que reside en una aplicacin que contiene un archivo Dlo al.asa con la declaracin de i lioteca de tipos A4;. #n el e.emplo siguiente( adOpenKeyset ) adLockOptimistic son constantes A4;! 79 'Crea y abre el objeto Recordset. Set rs+ustomers&ist = Server.+reate; .ect(CA4;4:./ecordsetC) rst+ustomer&ist.Active+onnection = cnnPu s rst+ustomer&ist.+ursor")pe = ad;penYe)set rst+ustomer&ist.&ocZ")pe = ad&ocZ;ptimistic 98 #n la siguiente ta la se enumeran las i liotecas de tipos ) los identificadores UU34 que se utili1an con ms frecuencia! -iblio(eca de (ipos UU!+

:i lioteca de %icrosoft ActiveS 4ata

IBBBBB@BTLBBBBLBB?BLUBBBLBBAABBV4@#AWK

; .ects @.T

:i lioteca de %icrosoft +4; ?.@ para ,indows @BBB Server

IB#BVWA44LA4AAL??4BLA:#TLBBAABBVW4W[BK

:i lioteca %S,+ de o .etos Advertisement /otator

IBABA+PA?L?TUBL??4?LUA+BLBB+BPBBA?BPAK

:i lioteca %S,+ de o .etos de registro de 33S

I:[TUP@PALAN4VL??4?LU:A+LBUBBBA4++@PAK

!n(erac(uar con secuencias de comandos del clien(e #s posi le aumentar la eficacia de ASP si se utili1a para generar o manipular secuencias de comandos del cliente. Por e.emplo( puede escri ir secuencias de comandos del servidor que constru)an secuencias de comandos del cliente asadas en varia les espec*ficas del servidor( el tipo del explorador o los parmetros de la peticin $""P. Si intercala instrucciones de secuencias de comandos del servidor en las secuencias de comandos del cliente (delimitadas mediante etiquetas $"%& 7S+/3P"8)( como se muestra en la plantilla del e.emplo siguiente( puede iniciali1ar de forma dinmica ) alterar las secuencias de comandos del cliente en el momento de reali1ar la peticin! 7S+/3P" &A>DUAD#=C2:ScriptC8 7RLL varia le = 79=valor definido por el servidor 98 . . . secuencia de comandos del cliente 79 secuencia de comandos del servidor que se utili1a para generar una instruccin del cliente 98 secuencia de comandos del cliente . . . LL8 76S+/3P"8 Al incorporar estas funciones es posi le crear algunas aplicaciones -tiles e interesantes. Por e.emplo( 'sta es una sencilla secuencia de comandos del servidor (escrita en 2:Script) que manipula una secuencia de comandos del cliente (escrita en HScript)! 79 4im dtm"ime( strServer>ame( strServerSoftware( intDreeting dtm"ime = "ime() strServer>ame = /equest.Server2aria les(CS#/2#/\>A%#C) strServerSoftware = /equest.Server2aria les(CS#/2#/\S;P",A/#C) 'Genera un nmero aleatorio. /andomi1e Dreet+ondition = int(rnd ] N) 98 7S+/3P" &A>DUAD#=CHScriptC8 7RLL

// lama a la funcin para mostrar el saludo show3ntro%sg() function show3ntro%sg() I switch(79= intDreeting 98) I case B! msg = C#ste es el servidor ,e 79= strServer>ame98 con 79= strServerSoftware 98.C reaZ

case ?! msg = C/eci a nuestra ienvenida al servidor ,e 79= strServer>ame98. &a hora local es 79= dtm"ime 98.C reaZ case @! msg = C#ste servidor utili1a 79= strServerSoftware 98.C reaZ K document.write(msg) K LL8 76S+/3P"8

%scribir procedimien(os Un procedimiento es un grupo de comandos de secuencia de comandos que reali1an una tarea espec*fica ) 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 ien puede poner los procedimientos utili1ados con ms frecuencia en un archivo .asp compartido ) utili1ar la directiva ^include para incluirlo en otros archivos .asp que llamen a los procedimientos. +omo alternativa( puede encapsular dicha funcionalidad en un componente +;%.

+e"inir procedimien(os &as definiciones de los procedimientos pueden encontrarse dentro de etiquetas 7S+/3P"8 ) 76S+/3P"8 ) de en seguir las reglas del lengua.e de secuencias de comandos. Utilice el elemento 7S+/3P"8 para los procedimientos escritos en lengua.es distintos del lengua.e principal para secuencias de comandos. Sin em argo( utilice los delimitadores de las secuencias de comandos (79 ) 98) en los procedimientos escritos en el lengua.e principal de secuencias de comandos. +uando utilice la etiqueta $"%& 7S+/3P"8( de e emplear dos atri utos para asegurar el proceso de la secuencia de comandos por parte del servidor. &a sintaxis de la etiqueta 7S+/3P"8 es la siguiente! 7S+/3P" &A>DUAD#=HScript /U>A"=S#/2#/8 definicin del procedimiento 76S+/3P"8 #l atri uto /U>A"=S#/2#/ indica al servidor ,e que procese la secuencia de comandos en el servidor. Si no esta lece este atri uto( la secuencia de comandos la procesar el explorador del cliente. #l atri uto &A>DUAD# determina el lengua.e de secuencia de comandos utili1ado en este loque. Puede especificar cualquier lengua.e para el que ha)a instalado un motor de secuencias de comandos en el servidor. Para especificar 2:Script( use el valor 2:Script. Para especificar HScript( use el valor

HScript. Si no asigna el atri uto &A>DUAD#( el loque de la secuencia de comandos se interpretar en el lengua.e principal de secuencia de comandos. &os comandos del loque de la secuencia de comandos de en componer uno o varios procedimientos completos en el lengua.e de secuencia de comandos elegido. Por e.emplo( los comandos siguientes definen el procedimiento HScript Mi1uncion. 7$"%&8 7S+/3P" &A>DUAD#=HScript /U>A"=S#/2#/ 8 function %iPuncion() I /esponse.,rite(C&lam a %iPuncion().C) K 76S+/3P"8 !mpor(an(e >o inclu)a en las etiquetas 7S+/3P"8 del servidor comandos de secuencias de comandos que no formen parte de procedimientos completos. &os comandos que no formen parte de un procedimiento pueden provocar resultados impredeci les puesto que de en e.ecutarse en un orden determinado. Adems( no puede utili1ar la directiva de resultado de ASP 79=98 dentro de los procedimientos. #n su lugar( utilice &esponse#'ri(e para enviar contenido al explorador.

Llamar a procedimien(os Para llamar a procedimientos( inclu)a el nom re de los procedimientos en un comando. Si va a llamar a procedimientos HScript desde 2:Script( de e utili1ar par'ntesis despu's del nom re del procedimientoG si el procedimiento no tiene argumentos( utilice par'ntesis vac*os. Si va a llamar a procedimientos 2:Script o HScript desde HScript( utilice siempre par'ntesis despu's del nom re del procedimiento. #n 2:Script tam i'n puede utili1ar la pala ra clave Call para llamar a un procedimiento. Sin em argo( si el procedimiento al que llama requiere argumentos( la lista de argumentos de e aparecer entre par'ntesis. Si omite la pala ra clave Call( tam i'n de e omitir los par'ntesis en los que se inclu)e la lista de argumentos. Si utili1a la sintaxis Call para llamar a una funcin integrada o definida por el usuario( se descartar el valor devuelto por la funcin. #l e.emplo siguiente ilustra la creacin ) la llamada a procedimientos en dos lengua.es para secuencias de comandos diferentes (2:Script ) HScript). 79M &A>DUAD#=2:Script 98 7$"%&8 7:;4<8 79 #cho 98 7:/8 79 print4ate() 98 76:;4<8 76$"%&8 79 Su #cho /esponse.,rite C7"A:&#8C O \ C/esponse.,rite C7"/87"$8>om re76"$87"$82alor76"$876"/8C Set o ._uer)String = /equest._uer)String Por #ach strSelection 3n o ._uer)String /esponse.,rite C7"/87"48C O p O C76"487"48C O \ Porm2alues(strSelection) O C76"4876"/8C >ext /esponse.,rite C76"A:&#8C #nd Su 98 7S+/3P" &A>DUAD#=HScript /U>A"=S#/2#/8

function Print4ate() I var x x = new 4ate() /esponse.,rite(x.toString()) K 76S+/3P"8 No(a &as llamadas de 2:Script a las funciones HScript no distinguen entre ma)-sculas ) min-sculas.

Pasar ma(rices a procedimien(os Para pasar una matri1 entera a un procedimiento en 2:Script( utilice el nom re de la matri1 seguido de par'ntesis vac*osG en HScript( utilice corchetes vac*os. Procesar los da(os proporcionados por el usuario %ediante el o .eto &e2ues( de ASP puede crear sencillas ) eficaces secuencias de comandos para recopilar ) procesar datos o tenidos de formularios $"%&. #n este tema no slo aprender a crear secuencias de comandos sicas para procesar formularios( sino que tam i'n conocer t'cnicas -tiles para validar los datos de los formularios( tanto en su servidor ,e como en el explorador de ,e del usuario.

Acerca de los "ormularios HTML &os formularios $"%&( el m'todo ms com-n para recopilar informacin desde el ,e ( consiste en un con.unto de etiquetas $"%& especiales que presentan elementos de interfa1 de usuario en una pgina ,e . &os cuadros de texto( los otones ) las casillas de verificacin son e.emplos de elementos que permiten que los usuarios intercalen con una pgina ,e ) env*en informacin a un servidor ,e . Por e.emplo( las siguientes etiquetas $"%& generan un formulario en el que un usuario puede escri ir su nom re( apellido ) edad( e inclu)e un otn para enviar la informacin a un servidor ,e . #l formulario tam i'n contiene una etiqueta de entrada oculta (no presentada por el explorador ,e ) que puede utili1ar para pasar informacin adicional al servidor ,e . 7P;/% %#"$;4=CPostC A+"3;>=CProfile.aspC8 73>PU" "<P#=CtextC >A%#=C>om reC8 73>PU" "<P#=CtextC >A%#=CApellidoC8 73>PU" "<P#=CtextC >A%#=C#dadC8 73>PU" "<P#=C$iddenC >A%#=C#stadoUsuarioC 2A&U#=C>uevoC8 73>PU" "<P#=CSu mitC 2A&U#=C#ntrarC8 76P;/%8 Presentar con detalle el con.unto completo de etiquetas $"%& para formularios se sale del m ito de este tema( sin em argo( ha) numerosas fuentes de informacin que puede utili1ar para aprender a crear ) utili1ar formularios $"%&. Por e.emplo( puede utili1ar la posi ilidad que ofrece su explorador para ver el cdigo fuente con el fin de examinar cmo se crean los formularios $"%& en otros sitios ,e . "am i'n puede visitar el sitio ,e de %S4> de %icrosoft en la direccin http!66msdn.microsoft.com6 para conocer las t'cnicas ms recientes para utili1ar los formularios $"%& con otras tecnolog*as de 3nternet. Procesar da(os de "ormularios con ASP 4espu's de crear el formulario $"%& tendr que procesar los datos proporcionados por el usuario( lo que implica enviar la informacin a un archivo .asp para que la analice ) manipule. 4e nuevo( examine el cdigo $"%& del e.emplo anterior. ; serve que el atri uto A+"3;> de la etiqueta 7P;/%8 hace referencia a un archivo llamado Profile.asp. +uando el usuario env*a informacin $%"&( el explorador

utili1a el m'todo P;S" para enviarla a un archivo .asp del servidor( en este caso Profile.asp. #ste archivo .asp puede contener archivos de comandos que procesen la informacin e interact-en con otras secuencias de comandos( componentes +;% o recursos( como una ase de datos. #xisten tres formas sicas de recopilar informacin de un formulario $"%& mediante ASP! Un archivo .htm esttico puede contener un formulario que env*e sus valores a un archivo .asp. Un archivo .asp puede crear un formulario que env*e informacin a otro archivo .asp. Un archivo .asp puede crear un formulario que se env*e informacin a s* mismoG es decir( al archivo .asp que contiene el formulario. &os dos primeros m'todos funcionan igual que los formularios que interact-an con otros programas de servidor ,e ( con la -nica diferencia de que con ASP se simplifica mucho la tarea de recuperar ) procesar la informacin. #l tercer m'todo es especialmente -til ) se muestra en la seccin 2alidar los datos de los formularios.

.b(ener da(os de los "ormularios #l o .eto &e2ues( de ASP proporciona dos colecciones que facilitan la tarea de recuperar informacin de los formularios enviados con las peticiones U/&. La colecci0n 3uer S(ring &a coleccin 3uer S(ring recupera los valores del formulario pasados al servidor ,e como texto a continuacin del signo de interrogacin de la direccin U/& de la peticin. &os valores del formulario se pueden anexar a la direccin U/& de la peticin mediante el m'todo D#" de $""P o( manualmente( si se agregan los valores del formulario a la direccin U/&. Si el e.emplo del formulario anterior utili1ara el m'todo D#" (%#"$;4 = CD#"C) ) el usuario escri iera !uan( "oto ) #$( se enviar*a la siguiente peticin U/& al servidor! http!66,orZshop?6Painting6Profile.asp`>om re=HuanOApellido=SotoO#dad=NBO#stadoUsuario=>uevo #l archivo Profile.asp podr*a contener la siguiente secuencia de comandos para procesar formularios! $ola( 79= /equest._uer)String(Cnom reC) 98 79= /equest._uer)String(CapellidoC) 98. "iene 79= /equest._uer)String(CedadC) 98 a0os. 79 3f /equest._uer)String(C#stadoUsuarioC) = C>uevoC "hen /esponse.,riteCJsta es su primera visita a este sitio ,e C #nd if 98 #n este caso( el servidor ,e devolver*a el texto siguiente al explorador ,e del usuario! $ola Huan Soto. "iene NB a0os. Jsta es su primera visita a este sitio ,e &a coleccin 3uer S(ring tam i'n tiene un parmetro opcional que puede utili1ar para tener acceso a uno de los m-ltiples valores que se encuentran en el cuerpo de la peticin U/& (con el m'todo D#"). "am i'n puede utili1ar la propiedad Coun( para contar el n-mero de veces que aparece un determinado tipo de valor. Por e.emplo( un formulario que contenga un cuadro de lista con varios elementos puede generar la siguiente peticin! http!66;rganicPoods6list.asp`+omida=%an1anasO+omida=AceitunasO+omida=Pan Podr*a utili1ar el siguiente comando para contar los diferentes valores! /equest._uer)String(C+omidaC).+ount Para presentar los tipos de valores( &ista.asp podr*a contener la secuencia de comandos siguiente!

79 lng"otal = /equest._uer)String(C+omidaC).+ount Por i = ? "o lng"otal /esponse.,rite /equest._uer)String(C+omidaC)(i) O C7:/8C >ext 98 &a secuencia de comandos anterior mostrar*a! %an1anas Aceitunas Pan "am i'n puede mostrar la lista completa de valores como una cadena delimitada por comas( del modo siguiente! 79 /esponse.,rite /equest._uer)String(C3temC) 98 Aparecer*a la cadena siguiente! %an1anas( Aceitunas( Pan Colecci0n 1orm +uando utili1a el m'todo D#" de $""P para pasar a un servidor ,e valores de un formulario grande ) comple.o( corre el riesgo de perder informacin. Algunos servidores ,e tienden a restringir el tama0o de la cadena de peticin de U/&( por lo que los valores de los formularios grandes pasados con el m'todo D#" podr*an quedar truncados. Si necesita enviar una gran cantidad de informacin desde un formulario a un servidor ,e ( de e utili1ar el m'todo P;S" de $""P. #l m'todo P;S"( que env*a los datos de los formularios en el cuerpo de la peticin $""P( puede enviar un n-mero casi ilimitado de caracteres a un servidor. Puede utili1ar la coleccin 1orm del o .eto &e2ues( de ASP para recuperar los valores enviados mediante el m'todo P;S". &a coleccin 1orm almacena valores de manera similar a la coleccin 3uer S(ring. Por e.emplo( si un usuario completa un formulario escri iendo una larga lista de nom res( se podr*an leer los nom res con la secuencia de comandos siguiente! 79 lng"otal = /equest.Porm(C+omidaC).+ount Por i = ? "o lng"otal /esponse.,rite /equest.Porm(C+omidaC)(i) O C7:/8C >ext 98 ,alidar los da(os de los "ormularios Un formulario ,e ien dise0ado suele incluir una secuencia de comandos del cliente que valida los datos proporcionados por el usuario antes de enviar la informacin al servidor. &as secuencias de comandos de validacin pueden compro ar si el usuario escri i un n-mero vlido o si un cuadro de texto est en lanco. 3magine que su sitio ,e inclu)e un formulario que permite calcular la tasa de retorno de una inversin. Pro a lemente querr compro ar si un usuario realmente escri i texto o n-meros en los campos apropiados del formulario( antes de enviar al servidor informacin que podr*a no ser vlida. #n general( lo me.or es reali1ar en el cliente tantas compro aciones como sea posi le. Adems( de poder preguntar antes al usuario por los errores( la validacin en el cliente me.ora el tiempo de respuesta( reduce la carga del servidor ) li era ancho de anda para otras aplicaciones. &a 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 escri i el usuario es realmente un n-mero) antes de enviarlos al servidor! 7S+/3P" &A>DUAD#=CHScriptC8 function +ompro ar>umero() I

if (is>umeric(document.UserPorm.Acct>o.value)) return true else I alert(C#scri a un n-mero de cuenta vlido.C) return false K K //%uncin para determinar si el valor del formulario es un nmero. //&ota' (l m)todo is&a& !"cript es un m)todo m*s elegante para determinar si //un valor no es un nmero. "in embargo+ algunos exploradores no admiten este m)todo. function is>umeric(str) I for (var i=BG i 7 str.lengthG iaa) I var ch = str.su string(i( ia?) if( ch 7 CBC bb ch8CAC bb str.length == null) I return false K K return true K 76S+/3P"8 7P;/% %#"$;4=CDetC A+"3;>=C alance.aspC >A%#=CPormularioUsuarioC ;>SU:%3"=Creturn +hecZ>um er()C8 73>PU" "<P#=C"extC >A%#=C>um+uenC8 73>PU" "<P#=CSu mitC 2A&U#=C#nviarC8 76P;/%8 Sin em argo( si la validacin de un formulario requiere el acceso a una ase de datos de e considerar la utili1acin de la validacin del formulario en el servidor. Una forma mu) -til de reali1ar la validacin en el servidor es crear formularios que se env*en la informacin a s* mismos. #s decir( el archivo .asp contiene en realidad el formulario $"%& que reci e los datos del usuario. (/ecuerde( puede utili1ar ASP para interactuar con secuencias de comandos del cliente ) cdigo $"%&. Para o tener ms informacin( consulte 3nteractuar con secuencias de comandos del cliente.) &os datos escritos vuelven al mismo archivo( que se encarga de validar la informacin ) avisa al usuario si 'stos no son correctos. %ediante este m'todo se pueden me.orar las caracter*sticas de uso ) la respuesta de los formularios asados en ,e . Por e.emplo( si se inclu)e informacin del error .unto al campo del formulario en el que se escri i la informacin incorrecta( ser ms fcil para el usuario descu rir el origen del error. (>ormalmente( los formularios asados en ,e reenv*an las peticiones a una pgina ,e independiente que contiene informacin del error. &os usuarios que no comprendan esta informacin podr*an sentirse frustrados.) Por e.emplo( la secuencia de comandos siguiente determina si un usuario escri i un n-mero de cuenta vlido( para lo que se env*a la informacin a s* misma (2erif).asp) ) llama a una funcin definida por el usuario que reali1a una consulta a una ase de datos! 79 strAcct = /equest.Porm(C+uentaC) 3f >ot Account2alid(strAcct) "hen #rr%sg = C7P;>" +;&;/=/ed8#l n-mero de cuenta que ha escrito no es vlido.76P;>"8C #lse ,rocesa los datos del usuario . . . Server."ransfer(C+omplete.aspC) #nd 3f

Punction Account2alid(strAcct) -.u/ se incluir* una secuencia de comandos o una llamada a un m)todo de un componente de conexin con una base de datos. #nd Punction 98 7P;/% %#"$;4=CPostC A+"3;>=C2erif).aspC8 >-mero de cuenta! 73>PU" "<P#=C"extC >A%#=C+uentaC8 79= #rr%sg 98 7:/8 73>PU" "<P#=CSu mitC8 76P;/%8 #n este e.emplo( la secuencia de comandos se encuentra en un archivo llamado 2erif).asp( el mismo archivo que contiene el formulario $"%& )( para enviarse la informacin a s* mismo( especifica 2erif).asp en el atri uto A+"3;>. !mpor(an(e Si utili1a HScript para la validacin en el servidor( aseg-rese de colocar un par de par'ntesis vac*os detrs del elemento de la coleccin &e2ues( (3uer S(ring o 1orm) al asignar la coleccin a una varia le local. Sin el par'ntesis la coleccin devolver un o .eto en lugar de una cadena. &a secuencia de comandos siguiente muestra el m'todo correcto para asignar varia les con HScript! 79 var >om re = /equest.Porm(C>om reC)()G var +ontrase0a = /equest.Porm(C+ontrase0aC)()G if(>om re 8 CC) I if(>om re == +ontrase0a) /esponse.,rite(C#l nom re ) la contrase0a son igualesC.) else /esponse.,rite(C#l nom re ) la contrase0a son diferentesC.)G K 98 2:Script presenta el mismo comportamiento si la coleccin contiene varios valores separados por comas o con los que se pueda crear un *ndice. #sto significa que tanto para 2:Script como para HScript( adems de colocar un par de par'ntesis detrs del elemento de la coleccin &e2ues(( necesitar especificar el *ndice del valor deseado. Por e.emplo( la siguiente l*nea en HScript devuelve slo el primero de los varios valores de un elemento de un formulario! var >om re = /equest.Porm(C>om reC)(?)G Acceso al origen de da(os ActiveS 4ata ; .ects (A4;) es una tecnolog*a amplia le ) de fcil uso para agregar a sus pginas ,e acceso a ases de datos. Puede utili1ar A4; para escri ir secuencias de comandos compactas ) escala les que le permitan conectarse a or*genes de datos compati les con ;&# 4:( como ases de datos( ho.as de clculo( archivos de datos secuenciales o directorios de correo electrnico. ;&# 4: es una interfa1 de programacin de nivel de sistema que proporciona un con.unto estndar de interfaces +;% para que permitan exponer las funciones del sistema de administracin de ases de datos. +on el modelo de o .etos A4; es fcil tener acceso a estas interfaces (mediante lengua.es de secuencias de comandos( como 2:Script o HScript) para agregar funciones de ases de datos a las aplicaciones ,e . Adems( tam i'n puede utili1ar A4; para tener acceso a ases de datos compati les con la +onectividad a ierta de ases de datos (;4:+( ;pen 4ata ase +onnectivit)). Si no tiene mucha experiencia en conectividad con ases de datos( encontrar que la sintaxis de A4; es sencilla ) fcil de utili1ar. Si es un programador experimentado( agradecer el acceso escala le de alto rendimiento que proporciona A4; para una gran variedad de or*genes de datos.

Crear una cadena de cone/i0n #l primer paso en la creacin de una aplicacin de datos en ,e consiste en proporcionar un m'todo para que A4; encuentre e identifique el origen de datos. Para ello se utili1a una cadena de conexin( una serie de argumentos separados mediante un punto ) coma que definen parmetros como el proveedor del origen de datos ) la u icacin del mismo. A4; utili1a la cadena de conexin para identificar el proveedor ;&# 4: ) para dirigir al proveedor al origen de datos. #l proveedor es un componente que representa el origen de datos ) que expone la informacin en la aplicacin en forma de con.untos de filas. #n la ta la siguiente se enumeran las cadenas de conexin de ;&# 4: para varios or*genes de datos ha ituales! .rigen de da(os Cadena de cone/i0n .L% +-

%icrosoft(r) Access

Provider=%icrosoft.Het.;&#4:.W.BG4ata Source=ruta f/sica de acceso al arc0ivo .mdb

%icrosoft S_& Server

Provider=S_&;&#4:.?G4ata Source=ruta de acceso a la base de datos del servidor

;racle

Provider=%S4A;/A.?G4ata Source=ruta de acceso a la base de datos del servidor

%icrosoft 3ndexing Service

Provider=%S34SS.?G4ata Source=ruta de acceso al arc0ivo

Para proporcionar compati ilidad con versiones anteriores( el proveedor ;&# 4: para ;4:+ admite la sintaxis de las cadenas de conexin ;4:+. #n la ta la siguiente se enumeran las cadenas de conexin ;4:+ que se utili1an ha itualmente! Con(rolador del origen de da(os Cadena de cone/i0n .+-C

%icrosoft Access

4river=I%icrosoft Access 4river (].md )KG4:_=ruta f/sica de acceso al arc0ivo .mdb

S_& Server

4/32#/=IS_& ServerKGS#/2#/=ruta de acceso al servidor

;racle

4/32#/=I%icrosoft ;4:+ for ;racleKGS#/2#/=ruta de acceso al servidor

%icrosoft #xcel

4river=I%icrosoft #xcel 4river (].xls)KG4:_= ruta f/sica de acceso al arc0ivo .xlsG 4river34=@[U

%icrosoft #xcel A[

4river=I%icrosoft #xcel 4river (].xls)KG4:_= ruta f/sica de acceso al arc0ivo .xlsG4river34=[AB

Paradox

4river=I%icrosoft Paradox 4river (].d )KG4:_=ruta f/sica de acceso al arc0ivo .dbG4river34=@V

"exto

4river=I%icrosoft "ext 4river (].txtG].csv)KG4efault4ir= ruta f/sica de acceso al arc0ivo .txt

%icrosoft 2isual PoxPro(r) (con un contenedor de ases de datos)

4river=I%icrosoft 2isual PoxPro 4riverKGSource")pe=4:+GSource4 =ruta f/sica de acceso al arc0ivo .dbc

%icrosoft 2isual PoxPro (sin un contenedor de ases de datos)

4river=I%icrosoft 2isual PoxPro 4riverKGSource")pe=4:PGSource4 =ruta f/sica de acceso al arc0ivo .dbf

Conec(arse al origen de da(os A4; proporciona el o .eto Connec(ion para esta lecer ) administrar las conexiones entre las aplicaciones ) los or*genes de datos compati les con ;&# 4: o las ases de datos compati les con ;4:+. #l o .eto Connec(ion incorpora propiedades ) m'todos que se pueden utili1ar para a rir ) cerrar conexiones con ases de datos( ) para enviar consultas de actuali1acin de la informacin. Para esta lecer una conexin con una ase de datos( cree primero una instancia del o .eto Connec(ion. Por e.emplo( la secuencia de comandos siguiente crea una instancia del o .eto Connec(ion ) procede a a rir una conexin! 79 'Crea un objeto Connection. Set cn = Server.+reate; .ect(CA4;4:.+onnectionC) '-bre una conexin mediante la cadena de conexin 1 ( D2. cnn.;pen CProvider=%icrosoft.Het.;&#4:.W.BG4ata Source=+!X4atos%ercadoX2entasPrevistas.md C 98 No(a &a cadena de conexin no contiene espacios en lanco ni antes ni despu's del signo igual (=).

#n este caso( el m'todo .pen del o .eto Connec(ion se refiere a la cadena de conexin.

%4ecu(ar consul(as S3L con el ob4e(o Connec(ion +on el m'todo %/ecu(e del o .eto Connec(ion puede emitir comandos al origen de datos( como consultas de S_& (&engua.e de consulta estructurado). (S_&( lengua.e estndar para comunicarse con ases de datos( define comandos para recuperar ) actuali1ar informacin.) #l m'todo %/ecu(e acepta parmetros que especifiquen el comando (o la consulta)( el n-mero de registros de datos a los que afecta ) el tipo de comando que se utili1a.

&a siguiente secuencia de comandos utili1a el m'todo %/ecu(e para enviar una consul(a con un comando !NS%&T de S3L5 2ue inser(a da(os en una (abla concre(a de la base de da(os# %n es(e caso5 el blo2ue de la secuencia de comandos inser(a el nombre Jos Lugo en una (abla de la base de da(os llamada Customers# 79 'Define la cadena de conexin 1 ( D2. str+onnectionString = CProvider=%icrosoft.Het.;&#4:.W.BG4ata Source=+!X4atosX#mpleados.md C 'Crea la instancia del objeto Connection y abre una conexin con la base de datos. Set cn = Server.+reate; .ect(CA4;4:.+onnectionC) cnn.;pen str+onnectionString 'Define la instruccin "( (C3 de "4 . strS_& = C3>S#/" 3>"; +ustomers (Pirst>ame( &ast>ame) 2A&U#S (cHos'c(c&ugoc)C '5tili6a el m)todo (xecute para enviar una consulta "4 a la base de datos. cnn.#xecute strS_&((ad+md"ext a ad#xecute>o/ecords 98 ; serve que se especifican dos parmetros en la instruccin que se utili1a para e.ecutar la consulta! ad+md"ext ) ad#xecute>o/ecords. #l parmetro opcional ad+md"ext especifica el tipo de comando e indica que el proveedor de e evaluar la instruccin de consulta (en este caso( una consulta S_&) como una definicin textual de un comando. #l parmetro ad#xecute>o/ecords indica a A4; que no de e crear un con.unto de registros de datos si no se devuelven resultados a la aplicacin. #ste parmetro slo funciona con los tipos de comandos definidos como texto( como las consultas S_&( o con procedimientos almacenados de ases de datos. Aunque los parmetros ad+md"ext ) ad#xecute>o/ecords son opcionales( de e especificarlos al utili1ar el m'todo #xecute para me.orar as* el rendimiento de la aplicacin de datos. 3mportante &os parmetros A4;( como ad+md"ext( de en estar definidos para poder utili1arlos en una secuencia de comandos. Un m'todo cmodo para definir los parmetros consiste en utili1ar una biblioteca de tipos de componentes( que es un archivo que contiene definiciones para todos los parmetros A4;. Para implementar una i lioteca de tipos de componentes de e declararla antes. Agregue la etiqueta siguiente 7%#"A4A"A8 al archivo .asp o a Dlo al.asa para declarar la i lioteca de tipos A4;! 7RLL%#"A4A"A >A%#=C%icrosoft ActiveS 4ata ; .ects @.T &i rar)C "<P#=C")pe&i C UU34=CIBBBBB@BTLBBBBLBB?BLUBBBLBBAABBV4@#AWKCLL8 Si desea o tener ms detalles acerca de cmo implementar las i liotecas de tipos de componentes( consulte la seccin Utili1ar constantes del tema Utili1ar varia les ) constantes. Adems del comando 3>S#/" de S_&( puede utili1ar los comandos UP4A"# ) 4#&#"# de S_& para modificar ) quitar informacin de la ase de datos. +on el comando UP4A"# de S_& puede modificar los valores de los elementos de una ta la de la ase de datos. &a siguiente secuencia de comandos usa el comando UP4A"# para cam iar todos los campos FirstName de la ta la Customers a Juan en todas las filas cu)o campo

LastName contenga el apellido Soto.


79 Set cn = Server.+reate; .ect(CA4;4:.+onnectionC) cnn.;pen CProvider=%icrosoft.Het.;&#4:.W.BG4ata Source=+!X4atosX#mpleados.md C cn.#xecute CUP4A"# +ustomers S#" Pirst>ame = cHuanc ,$#/# &ast>ame = cSotoc C((ad+md"ext a ad#xecute>o/ecords 98 Para quitar determinados registros de una ta la de la ase de datos( utilice el comando 4#&#"# de S_&. &a siguiente secuencia de comandos quita todas las filas de la ta la +ustomers cu)o apellido sea Soto! 79 Set cn = Server.+reate; .ect(CA4;4:.+onnectionC)

cnn.;pen CProvider=%icrosoft.Het.;&#4:.W.BG4ata Source=+!X4atosX#mpleados.md C cn.#xecute C4#&#"# P/;% +ustomers ,$#/# &ast>ame = cSotocC((ad+md"ext a ad#xecute>o/ecords 98 >ota 4e e tener mucho cuidado al utili1ar el comando 4#&#"# de S_&. Un comando 4#&#"# que no va)a acompa0ado de una clusula ,$#/# eliminar todas las filas de la ta la. Aseg-rese de incluir la clusula ,$#/# de S_&( que especifica las filas exactas que se van a eliminar.

U(ili)ar el ob4e(o &ecordse( para manipular los resul(ados Para recuperar datos( examinar resultados ) modificar su ase de datos( A4; proporciona el o .eto /ecordset. #l o .eto /ecordset tiene las funciones necesarias para( dependiendo de las restricciones de las consultas( recuperar ) presentar un con.unto de filas( o registros( de una ase de datos. #l o .eto /ecordset mantiene la posicin de cada registro devuelto por la consulta( lo que permite recorrer los resultados de uno en uno. /ecuperar un con.unto de registros &as uenas aplicaciones de datos ,e emplean el o .eto +onnection para esta lecer un v*nculo( ) el o .eto /ecordset para manipular los datos devueltos. Al com inar las funciones especiali1adas de am os o .etos puede desarrollar aplicaciones de ases de datos que realicen casi cualquier tarea de tratamiento de datos. Por e.emplo( la siguiente secuencia de comandos del servidor utili1a el o .eto /ecordset para e.ecutar un comando S#&#+" de S_&. #l comando S#&#+" recupera un con.unto espec*fico de informacin asndose en las restricciones de la consulta. &a consulta tam i'n contiene una clusula ,$#/# de S_&( que se utili1a para esta lecer el criterio de seleccin de la consulta. #n este e.emplo( la clusula ,$#/# limita la consulta a todos los registros que contengan el apellido "oto en la ta la Customers de la ase de datos. 79 '(stablece una conexin con un origen de datos. str+onnectionString = CProvider=%icrosoft.Het.;&#4:.W.BG4ata Source=+!X4atosX#mpleados.md C Set cn = Server.+reate; .ect(CA4;4:.+onnectionC) cnn.;pen str+onnectionString 'Crea una instancia de un objeto Recordset. Set rs+ustomers = Server.+reate; .ect(CA4;4:./ecordsetC) '-bre un objeto Recordset con el m)todo 1pen 'y utili6a la conexin establecida por el objeto Connection. strS_& = CS#&#+" Pirst>ame( &ast>ame P/;% +ustomers ,$#/# &ast>ame = cSotoc C rst+ustomers.;pen strS_&( cnn 'Recorre el conjunto de los registros y presenta los resultados 'e incrementa la posicin del registro con el m)todo 7ove&ext. Set o .Pirst>ame = rst+ustomers(C>om reC) Set o .&ast>ame = rst+ustomers(CApellidoC) 4o Until rst+ustomers.#;P /esponse.,rite o .Pirst>ame O C C O o .&ast>ame O C7:/8C rst+ustomers.%ove>ext &oop 98 ; serve que en el e.emplo anterior( el o .eto +onnection esta leci la conexin con la ase de datos ) que el o .eto /ecordset utili1 la misma conexin para recuperar resultados de la ase de datos. #ste m'todo es -til cuando tenga que configurar con precisin la forma en que se esta lece el v*nculo con la ase de datos. Por e.emplo( si necesitara especificar el tiempo de espera antes de anular un intento de conexin( tendr*a que utili1ar el o .eto +onnection para esta lecer dicha propiedad. Sin em argo( si slo desea esta lecer una conexin con las propiedades de conexin predeterminadas de A4;( podr*a utili1ar el m'todo ;pen del o .eto /ecordset para esta lecer el v*nculo! 79 str+onnectionString = CProvider=%icrosoft.Het.;&#4:.W.BG4ata Source=+!X4atosX#mpleados.md C strS_& = CS#&#+" Pirst>ame( &ast>ame P/;% +ustomers ,$#/# &ast>ame = cSotoc C

Set rs+ustomers = Server.+reate; .ect(CA4;4:./ecordsetC) '-bre una conexin con el m)todo 1pen 'y utili6a la conexin establecida por el objeto Connection. rst+ustomers.;pen strS_&( str+onnectionString 'Recorre el conjunto de registros+ presenta los resultados 'e incrementa la posicin del registro con el m)todo 7ove&ext. Set o .Pirst>ame = rst+ustomers(C>om reC) Set o .&ast>ame = rst+ustomers(CApellidoC) 4o Until rst+ustomers.#;P /esponse.,rite o .Pirst>ame O C C O o .&ast>ame O C7:/8C rst+ustomers.%ove>ext &oop 98 +uando esta lece una conexin con el m'todo ;pen del o .eto /ecordset( est utili1ando impl*citamente el o .eto +onnection para proteger el v*nculo. Para o tener ms informacin( consulte la documentacin acerca de %icrosoft ActiveS 4ata ; .ects (A4;)( disponi le en el sitio ,e de %icrosoft Universal 4ata Access en la direccin http!66www.microsoft.com6data6. >ota Para me.orar de forma significativa el rendimiento de las aplicaciones ASP de ase de datos( piense en la posi ilidad de cam iar el estado del con.unto de registros a Application. Para o tener ms informacin( consulte Duardar datos en la memoria cach'. A menudo resulta -til contar el n-mero de registros que se devuelven en un con.unto de registros. #l m'todo ;pen del o .eto /ecordset permite especificar un parmetro opcional( cursor( que determina cmo recupera ) recorre el con.unto de registros el proveedor su )acente. Al agregar el parmetro de cursor ad;penYe)set a la instruccin que se utili1a para e.ecutar la consulta( permite que la aplicacin cliente recorra todo el con.unto de registros. +omo resultado( la aplicacin puede utili1ar la propiedad /ecord+ount para calcular con precisin el n-mero de registros del con.unto. 2ea el siguiente e.emplo! 79 Set rs+ustomers = Server.+reate; .ect(CA4;4:./ecordsetC) rs.;pen CS#&#+" ] P/;% >ew;rdersC( CProvider=%icrosoft.Het.;&#4:.N.T?G4ata Source=c+!XPedidos+lientesXPedidos.md cC( ad;penYe)set( ad&ocZ;ptimistic( ad+md"ext '5tili6a la propiedad RecordCount del objeto Recordset para reali6ar la cuenta. 3f rs./ecord+ount 8= T then /esponse.,rite C/eci imos estos C O rs./ecord+ount O C nuevos pedidos7:/8C 4o Until rs.#;P /esponse.,rite rs(C>om re+lienteC) O C C O rs(CApellido+lienteC) O C7:/8C /esponse.,rite rs(C>umero+uentaC) O C7:/8C /esponse.,rite rs(C+antidadC) O C7:/8C /esponse.,rite rs(CPecha#ntregaC) O C7:/87:/8C rs.%ove>ext &oop #lse /esponse.,rite C$a) menos de C O rs./ecord+ount O C nuevos pedidos.C #nd 3f rs.+lose 98 Combinar "ormularios HTML el acceso a bases de da(os

&as pginas ,e que contienen formularios $"%& pueden permitir que los usuarios consulten de forma remota una ase de datos ) recuperen informacin concreta. +on A4; puede crear secuencias de comandos sorprendentemente sencillas que recopilen informacin del formulario del usuario( creen una consulta personali1ada para la ase de datos ) devuelvan informacin al usuario. %ediante el o .eto /equest de ASP puede recuperar la informacin escrita en los formularios $"%& e incorporar dicha informacin a sus instrucciones S_&. Por e.emplo( el siguiente loque de secuencia de comandos inserta en una ta la la informacin suministrada por un formulario $"%&. &a secuencia de comandos recopila informacin del usuario con la coleccin Porm del o .eto /equest.

79 '-bre una conexin mediante el objeto Connection. (l objeto Command 'no tiene un m)todo 1pen para establecer la conexin. str+onnectionString = CProvider=%icrosoft.Het.;&#4:.W.BG4ata Source=4!X+atlogoXSemillas.md C Set cn = Server.+reate; .ect(CA4;4:.+onnectionC) cnn.;pen str+onnectionString 'Crea una instancia del objeto Command 'y utili6a la propiedad -ctiveConnection para adjuntar 'la conexin al objeto Command. Set cm= Server.+reate; .ect(CA4;4:.+ommandC) Set cmn.Active+onnection = cnn 'Define la consulta "4 . cmn.+ommand"ext = C3>S#/" 3>"; %)Seeds"a le (")pe) 2A&U#S (`)C 'Define la informacin de configuracin de los par*metros de la consulta. cmn.Parameters.Append cmn.+reateParameter(Ct)peC(ad2ar+har( (@TT) '-signa el valor de la entrada y ejecuta la actuali6acin. cmn(Ct)peC) = /equest.Porm(CSeed")peC) cmn.#xecute ((ad+md"ext a ad#xecute>o/ecords 98 Para o tener ms informacin acerca de los formularios ) el uso del o .eto /equest de ASP( consulte Procesar los datos introducidos por el usuario.

Trans"erencia en(re arc$ivos #ASP Para utili1ar &esponse#&edirec( para redirigir un explorador se necesita un viaje de ida y vuelta( lo que significa que el servidor env*a al explorador una respuesta $""P en la que indica la u icacin de la nueva direccin U/&. #l explorador a andona automticamente la cola de la peticin del servidor ) env*a una nueva peticin $""P para la direccin U/&. 4espu's( el servidor agrega esta peticin a la cola de peticiones( .unto con las peticiones que mientras tanto llegan desde otros clientes. #n un sitio ,e con mucha carga( este sistema puede desperdiciar ancho de anda ) reducir el rendimiento del servidor( especialmente si se redirige el explorador a un archivo que se encuentre en el mismo servidor. Puede utili1ar el m'todo Server#Trans"er para reali1ar la transferencia de un archivo .asp a otro que se encuentre en el mismo servidor( en lugar del m'todo &esponse#&edirec(. +on Server#Trans"er puede transferir directamente las peticiones de archivos .asp sin necesidad de a andonar la cola de peticiones( lo que elimina via.es de ida ) vuelta. Por e.emplo( la secuencia de comandos siguiente muestra cmo podr*a utili1ar Server#Trans"er para saltar entre las pginas de una aplicacin seg-n la informacin de estado! 79 3f Session(C lnSale+ompletedC) "hen Server."ransfer(C6Pedido6Dracias.aspC) #lse Server."ransfer(C6Pedido6%as3nfo.aspC) #nd if 98 Server#Trans"er env*a peticiones desde un archivo .asp en e.ecucin a otro archivo. 4urante la transferencia( el archivo .asp que se pidi inicialmente finali1a inmediatamente la e.ecucin sin vaciar el -fer de salir (para o tener ms informacin( consulte la seccin Almacenamiento en -fer del contenido). &a peticin de informacin se pone a disposicin del archivo de destino cuando 'ste comien1a la e.ecucin. 4urante la e.ecucin( el archivo tiene acceso al mismo con.unto de o .etos intr*nsecos (&e2ues(( &esponse( Server( Session ) Applica(ion) que el archivo que se pidi inicialmente. "am i'n se puede utili1ar Server#Trans"er para reali1ar una transferencia entre archivos .asp que se encuentren en diferentes aplicaciones. Sin em argo( al hacerlo el archivo se comportar como si formara parte de la aplicacin que inici la transferencia (es decir( el archivo slo tendr acceso a las

varia les con alcance en la aplicacin inicial( no en la aplicacin en la que realmente reside el archivo). Por e.emplo( si reali1a una transferencia desde un archivo que se encuentra en la aplicacin 2entas a otro que se encuentra en Personal( la aplicacin 2entas tomar prestado el archivo de la aplicacin Personal ) lo e.ecutar como si fuera parte de ella. ASP proporciona tam i'n el comando Server#%/ecu(e que permite transferir un archivo( e.ecutar el contenido ) volver al archivo que inici la transferencia. Si tiene conocimientos de 2:Script( le a)udar pensar en Server#%/ecu(e como anlogo a una llamada a un procedimiento( con la diferencia de que en lugar de e.ecutar un procedimiento se e.ecuta un archivo .asp completo. Por e.emplo( la secuencia de comandos siguiente muestra cmo podr*a utili1ar Server#%/ecu(e para incluir archivos .asp de forma dinmica!

79 . . 3f lnUse4$"%& "hen Server.#xecute(C4$"%&.aspC) #lse Server.#xecute(C$"%&.aspC) #nd 3f . . 98 %ientras el archivo de destino pertene1ca a una aplicacin del mismo servidor( la aplicacin inicial se transferir a este archivo( e.ecutar su contenido ) continuar con la e.ecucin del archivo que inici la transferencia. 3gual que sucede con Server#Trans"er( al e.ecutar un archivo .asp 'ste se comporta como si formara parte de la aplicacin inicial. Sin em argo( Server.#xecute( no funciona cuando los servidores son distintos. Para o tener ms informacin( consulte Server#%/ecu(e. %nviar con(enido al e/plorador A medida que se procesa una secuencia de comandos ASP( el texto ) los grficos que no se encuentren entre delimitadores ASP o etiquetas 7S+/3P"8 se devuelve directamente al explorador. "am i'n puede enviar expl*citamente contenido al explorador mediante el o .eto &esponse.

%nviar con(enido Para enviar contenido al explorador desde delimitadores ASP o desde un procedimiento( utilice el m'todo 'ri(e del o .eto &esponse. Por e.emplo( la instruccin siguiente env*a un saludo diferente al usuario dependiendo de si el usuario ha visitado la pgina con anterioridad o no! 79 3f lnPirst"ime "hen /esponse.,rite C7$N A&3D>=+#>"#/8/eci a nuestra ienvenida a la pgina de introduccin76$N8C #lse /esponse.,rite C7$N A&3D>=+#>"#/8Dracias por volver a la pgina de introduccin76$N8C #nd 3f 98 Puera de un procedimiento( no tiene que utili1ar &esponse#'ri(e para devolver contenido al usuario. #l contenido que no se encuentra dentro de delimitadores de secuencia de comandos se env*a directamente al explorador( que da formato ) presenta este contenido. Por e.emplo( la secuencia de comandos siguiente produce el mismo resultado que la secuencia de comandos anterior! 7$N A&3D>=+#>"#/8 79 3f lnPirst"ime "hen 98 /eci a nuestra ienvenida a la pgina de introduccin.

79 #lse 98 Dracias por volver a la pgina de introduccin. 79#nd 3f 98 76$N8 3ntercale secuencias de comandos ) cdigo $"%& cuando tenga que devolver el resultado una ve1 o cuando sea ms cmodo agregar instrucciones a texto $"%& existente. Utilice &esponse#'ri(e cuando no desee dividir una instruccin con delimitadores o cuando desee generar la cadena de texto que va)a a devolver al explorador. Por e.emplo( podr*a generar una cadena de texto que creara una fila de una ta la con los valores enviados por un formulario $"%&! /esponse.,rite C7"/87"48C O /equest.Porm(C>om reC) \ O C76"487"48C O /equest.Porm(CApellidoC) O C76"4876"/8C &e2ues(#1orm devuelve los valores enviados por un formulario $"%& (consulte Procesar los datos introducidos por el usuario). No(a #l carcter O es el carcter de continuacin de cadenas de 2:Script. #l carcter de su ra)ado (\) es el carcter de continuacin de l*nea de 2:Script.

Secuencias de comandos sencillas &a siguiente secuencia de comandos ilustra las t'cnicas sicas que se utili1an en las secuencias de comandos ASP. Si no tiene experiencia en el desarrollo de aplicaciones o nunca ha escrito secuencias de comandos( 'ste es un uen lugar para empe1ar. #li.a un e.emplo en la siguiente lista! 2aria les! %uestra cmo crear ) manipular varia les en una secuencia de comandos ASP. :ucles! Proporciona un e.emplo de las tres construcciones ms comunes para crear ucles( 1or ### Ne/(( +o ### Loop ) '$ile ### 'end. ;peradores condicionales! 3lustra el uso de los operadores condicionales( como !" ### T$en( en las secuencias de comandos ASP. %atrices! %uestra cmo crear( administrar ) tener acceso a matrices. Archivos de inclusin del servidor! %uestra el uso de los archivos de inclusin del servidor. Punciones ) procedimientos! %uestra cmo crear ) utili1ar funciones ) procedimientos en una secuencia de comandos ASP.

,ariables !n(roducci0n "odas las aplicaciones escritas a lo largo de la historia( independientemente del lengua.e de programacin empleado( han utili1ado varia les de alg-n tipo ) las secuencias de comandos ASP no son una excepcin. "anto 2:Script como HScript permiten crear ) administrar varia les de forma fcil ) sencilla. +ada lengua.e reali1a de forma diferente la declaracin de varia les. HScript ) 2:Script son astante flexi les en lo que respecta a las varia les ) su declaracin. #n 2:Script( cualquier varia le se considera automticamente de tipo ,arian( si se declara inicialmente con la instruccin +im. A cada varia le se le

asigna un su tipo( como Numeric ) Arra . HScript es parecidoG la varia le se declara inicialmente con la instruccin var. #n general( am os lengua.es tienden a reali1ar automticamente gran parte de la administracin de tipos de datos( incluida la conversin de tipos. 4e hecho( ni siquiera es necesario emplear las instrucciones +im o var para utili1ar una nueva varia leG en sus respectivos lengua.es son opcionales. Paseo por el c0digo #ste e.emplo declara varios tipos diferentes de varia les( reali1a algunas operaciones sencillas en ellas ) las muestra al explorador cliente con los delimitadores especiales de secuencias de comandos 79 = ... 98. Se asigna un entero a la varia le int8ariable( se suma a s* mismo ) se env*a el resultado al explorador cliente. A la varia le "tr8ariable se le asigna el nom re( se agrega a Soto ) se env*a al explorador cliente. 4el mismo modo se declaran o crean( iniciali1an( manipulan ) muestran los valores ooleanos ) las fechas. .bservaciones #l -ltimo paso de la demostracin de la varia le de fecha es especialmente interesante. #n 2:Script( primero se asigna la varia le a una cadena de fecha literal ) despu's se muestra. 4espu's se resta lece ) se asigna el valor devuelto por la funcin Now de 2:Script( que devuelve la hora actual del sistema. #l e.emplo de HScript utili1a la funcin +a(e de HScript para esta lecer el literal inicial( para lo que pasa parmetros a la funcin( ) esta lecer despu's la fecha actual del sistema en la varia le( sin pasar parmetros a la funcin. 79M &A>DUAD# = 2:Script 98 79 ;ption #xplicit 98 7$"%&8 7$#A48 7"3"&#82aria le Sample76"3"&#8 76$#A48 7:;4< :D+;&;/=C,hiteC ";P%A/D3>=C?BC &#P"%A/D3>=C?BC8 9:;; Display 0eader. ;;< 7P;>" S3d#=CWC PA+#=CA/3A&( $#&2#"3+AC8 7:82aria le Sample76:876P;>"87:/8 7$/8 7$N83nteger %anipulation76$N8 79 'Declare variable. 4im int2ar '-ssign t0e variable an integer value. int2ar = T 98 7P879= int2ar 98 a 79= int2ar 98 = 79= int2ar a int2ar 9876P8 7$/8 7$N8String %anipulation76$N8 79 'Declare variable. 4im str2ar '-ssign t0e variable a string value. str2ar = CHemearlC 98 7P8"his example was done ) 79= str2ar a C SmithC 9876P8 7$/8 7$N8:oolean %anipulation76$N8 79 'Declare variable. 4im ln2ar

'-ssign t0e variable a 2oolean value. ln2ar = true '1utput message based on value. 3f ( ln2ar) "hen /esponse.,rite C7P8"he :oolean value is "rue.76P8C #lse /esponse.,rite C7P8"he :oolean value is Palse.76P8C #nd 3f 98 7$/8 7$N84ate and "ime76$N8 79 'Declare variable. 4im dtm2ar '-ssign t0e variable a value. dtm2ar = ^BU 6 @[ 6 A[ T!??!W@pm^ 98 7P8"he date and time is 79= dtm2ar 98 79 '"et t0e variable to t0e =eb server date and time. dtm2ar = >ow() 98 7P8"he 7S"/;>D8s)stem76strong8 date and time is 79= dtm2ar 9876P8 76:;4<8 76$"%&8 -ucles !n(roducci0n &os ucles representan uno de los mecanismos ms importantes de control de flu.o en un lengua.e de programacin. &as construcciones en ucle proporcionan la ase de cualquier aplicacin que de a reali1ar una tarea de forma repetitiva( como sumar ? a una varia le( leer un archivo de texto o procesar ) enviar un mensa.e de correo electrnico. Paseo por el c0digo 2:Script ) HScript proporcionan varios mecanismos para reali1ar ucles. #ste e.emplo demuestra las tres instrucciones ms comunes para reali1ar ucles( 1or ### Ne/(( +o ### Loop ) '$ile ### 'end. #stas tres instrucciones son ligeramente diferentes ) la situacin indicar cul de las tres es la ms indicada. Sin em argo( para este e.emplo( cada tipo de instruccin de ucle se utili1a para reali1ar la misma tarea! imprimir un saludo cinco veces( cada una de ellas con una fuente ma)or. #n cada instruccin de ucle se iniciali1a la varia le i ) se define la condicin de prue a( de forma que i nunca sea ma)or que T. &a varia le se incrementa en ? unidad en cada iteracin del ucle. 79M &A>DUAD# = 2:Script 98 79 ;ption #xplicit 98 7$"%&8 7$#A48 7"3"&#8&ooping76"3"&#8 76$#A48 7:;4< :D+;&;/=C,hiteC ";P%A/D3>=C?BC &#P"%A/D3>=C?BC8 9:;; Display 0eader. ;;< 7P;>" S3d#=CWC PA+#=CA/3A&( $#&2#"3+AC8 7:8&ooping with ASP76:876P;>"87:/8 7$/ S3d#=C?C +;&;/=C^BBBBBBC8 9:;; ooping =it0 a %or loop. ;;< 79

4im int+ounter Por int+ounter = ? to T 98 7P;>" S3d#=79 = int+ounter 988 $ello ,orld with a Por &oopR7:/8 76P;>"8 79 next 98 7$/8 9:;; ooping =it0 a >0ile...>end loop. ;;< 79 int+ounter = ? ,hile(int+ounter 7 V) 98 7P;>" S3d#=79 = int+ounter 988 $ello ,orld with a ,hile &oopR7:/8 76P;>"8 79 int+ounter = int+ounter a ? 98 79 wend 98

7$/8 9:;; ooping =it0 a Do...>0ile loop. ;;< 79 int+ounter = ? 4o ,hile(int+ounter 7 V) 98 7P;>" S3d#=79 =int+ounter 988 $ello ,orld with a 4o...,hile &oopR7:/8 76P;>"8 79 int+ounter = int+ountera? 98 79 loop 98 76:;4<8 76$"%&8

.peradores condicionales !n(roducci0n &os operadores condicionales( .unto con las varia les ) las construcciones de ucle( forman los pilares sicos de los lengua.es de programacin )( por tanto( de las aplicaciones. &as aplicaciones asadas en ,e que se implementan mediante secuencias de comandos ASP pueden aprovechar el control de flu.o que proporcionan los operadores condicionales( as* como la interactividad ) la sofisticacin de $"%&. Paseo por el c0digo #ste e.emplo demuestra las instrucciones !" ### T$en o i" ### else en 2:Script ) HScript( as* como las instrucciones Selec( ### Case ) swi(c$ ### case( ms comple.as. &a demostracin de cada una de estas instrucciones reali1a la misma tarea! enviar una pgina al explorador cliente con la fecha ) la hora actuales ) un saludo. #l texto del saludo ser C:uenos d*asC o C:uenas tardesC( dependiendo de si en el relo. del sistema aparece a.m. o p.m.

79M &A>DUAD# = 2:Script 98 79 ;ption #xplicit 98 7$"%&8 7$#A48 7"3"&#8+onditional ;perator Sample76"3"&#8 76$#A48 7:;4< :D+;&;/=C,hiteC ";P%A/D3>=C?BC &#P"%A/D3>=C?BC8 9:;; Display 0eader. ;;< 7P;>" S3d#=CWC PA+#=CA/3A&( $#&2#"3+AC8 7:8+onditional ;perator Sample76:876P;>"87:/8 7$/ S3d#=C?C +;&;/=C^BBBBBBC8 9:;; ?f...30en example ;;< 79 4im var4ate var4ate = 4ate() 98 7P8"he date is! 79= var4ate 9876P8 79 '"elect Case statement to display a message based on t0e day of t0e mont0. Select +ase 4a)(var4ate) +ase ?( @( N( W( T( V( [( U( A( ?B /esponse.,rite(C7P83tcs the eginning of the month.76P8C) +ase ??( ?@( ?N( ?W( ?T( ?V( ?[( ?U( ?A( @B /esponse.,rite(C7P83tcs the middle of the month.76P8C) +ase #lse /esponse.,rite(C7P83tcs the end of the month.76P8C) #nd Select 98 7P8"he time is! 79= "ime 9876P8 79 'C0ec@ for -7/,7+ and output appropriate message. 3f (/ight("ime(@)=CA%C) "hen /esponse.,rite(C7P8Dood %orning76P8C) #lse /esponse.,rite(C7P8Dood #vening76P8C) #nd 3f 98 76:;4<8 76$"%&8

1unciones !n(roducci0n

procedimien(os

&as funciones ) los procedimientos proporcionan un m'todo para evitar tener que escri ir varias veces un mismo loque de cdigo cada ve1 que desee reali1ar una tarea determinada. "anto 2:Script como HScript permiten llamar a una funcin o a un procedimiento desde cualquier lugar de una secuencia de comandos. #ste e.emplo demuestra cmo puede crear ) utili1ar estas herramientas en secuencias de comandos ASP. Si no tiene ninguna funcin en la pgina ASP( el motor ASP se limita a procesar el archivo completo( de principio a fin( cada ve1 que lo pide un explorador cliente. Sin em argo( las funciones ) los procedimientos se e.ecutan slo cuando se les llama( no con el resto del cdigo.

#n 2:Script o HScript las funciones ) los procedimientos se indican mediante la instruccin 1unc(ion. Adems( 2:Script esta lece una diferencia entre una funcin que devuelve un valor ) otra que no lo haceG la primera de ellas se indica con la instruccin Sub( que la identifica como una su rutina. Paseo por el c0digo #ste e.emplo define una funcin( Prin(.u(Msg( que toma como parmetros un mensa.e ) un n-mero que especifica cuntas veces se escri ir el mensa.e en el explorador cliente mediante el m'todo &esponse#'ri(e. Para este e.emplo( la funcin se limita a devolver al explorador cliente el n-mero de veces que se imprimi el mensa.e. .bservaciones #s importante tener en cuenta el atri uto /U>A" de la etiqueta 7S+/3P"8. S3 no se inclu)e( ASP asumir que se trata de una secuencia de comandos del cliente ) devolver el cdigo al explorador para que lo procese. #sto har*a que ASP no reconociera la llamada a la funcin Prin(.u(Msg( devolviera un error ) anulara la e.ecucin. 79M &A>DUAD# = 2:Script 98 79 ;ption #xplicit 98 7S+/3P" &A>DUAD#=2:Script /U>A"=Server8 'Define "erver "ide "cript %unction. Punction Print;ut%sg(str%sg( int+ount) 4im i '1utput 7essage count times. Por i = ? to int+ount /esponse.,rite(str%sg O C7:/8C) >ext 'Return number of iterations. Print;ut%sg = int+ount #nd Punction 76S+/3P"8 7$"%&8 7$#A48 7"3"&#8Punctions76"3"&#8 76$#A48 7:;4< :D+;&;/=C,hiteC ";P%A/D3>=C?BC &#P"%A/D3>=C?BC8 9:;; Display 0eader. ;;< 7P;>" S3d#=CWC PA+#=CA/3A&( $#&2#"3+AC8 7:8Server Side Punctions76:876P;>"87:/8 7P8 "he function CPrint;ut%sgC prints out a specific message a set num er of times.7P8 79 '"tore number of times function printed message. 4im int"imes 'Call function. int"imes = Print;ut%sg(C"his is a function testRC( W) '1utput t0e function return value. /esponse.,rite(C7p8"he function printed out the message C O int"imes O C times.C) 98 76:;4<8 76$"%&8

+a(os in(roducidos por el usuario en un "ormulario con P.ST !n(roducci0n Pro a lemente( la forma ms sica de interactividad ,e es el formulario $"%&. #s importante tener en cuenta que ASP no sustitu)e a los formularios( sino que los me.ora ) hace que sea ms fcil implementarlos ) administrarlos. &a etiqueta $"%& 7P;/%8 especifica qu' m'todo utili1ar el formulario para comunicar la informacin a la secuencia de comandos que la procesar. #l atri uto del m'todo P.ST indica que la informacin del formulario pasar a trav's de una conexin $""P independiente a la secuencia de comandos o al programa que la procesar. &a secuencia de comandos o el programa pueden anali1ar la informacin ) reali1ar cualquier tarea que sea necesaria( ) devolver el resultado al explorador cliente. Paseo por el c0digo #ste e.emplo muestra cmo implementar un formulario sencillo mediante el atri uto del m'todo P.ST de $""P( as* como una de las principales venta.as de la creacin de formularios mediante ASP! la posi ilidad de com inar el formulario ) el cdigo de proceso real en un mismo archivo. #ste e.emplo crea un peque0o formulario con dos cuadros de entrada de texto( uno para el nom re del usuario (fname) ) otro para el apellido (lname). Para o tener el valor de las varia les fname ) lname en la peticin se tiene acceso a la coleccin &e2ues(#1orms ) despu's se muestran los resultados en la parte inferior de la pgina. &a primera ve1 que se e.ecuta la secuencia de comandos no aparece ning-n texto de a.o de la l*nea hori1ontal. #sto se de e a que no ha *a informacin disponi le para pasarla a la secuencia de comandos cuando se inici ) ASP pasa por alto las -squedas de &e2ues(#1orms si no existe informacin. Sin em argo( si hace clic en el otn #nviar( se cargar de nuevo la pgina ) la secuencia de comandos )a dispondr de la informacin que escri i en los cuadros de texto. 79M &anguage = 2:Script 98 79 ;ption #xplicit 98 7$"%&8 7$#A48 7"3"&#8Porm Posting76"3"&#8 76$#A48 7:;4< :D+;&;/=C,hiteC ";P%A/D3>=C?BC &#P"%A/D3>=C?BC8 9:;; Display 0eader. ;;< 7P;>" S3d#=CWC PA+#=CA/3A&( $#&2#"3+AC8 7:8Porm Posting76:876P;>"87:/8 7$/8 7P8"his page will taZe the information entered in the form fields( and use the P;S" method to send the data to an ASP page. 7P;/% >A%#=Porm? %#"$;4=Post A+"3;>=CPorm\2:Script.aspC8 Pirst >ame! 73>PU" "<P#="ext >A%#=fname87P8 &ast >ame! 73>PU" "<P#="ext >A%#=lname87P8 73>PU" "<P#=Su mit 2A&U#=CSu mitC8 76P;/%8 7$/8 79 /esponse.,rite /equest.form(CfnameC)98 7:/8 79 /esponse.,rite /equest.form(ClnameC)98 7:/8 76:;4<8 76$"%&8

Llenar los campos

!n(roducci0n Puede utili1ar formularios para recopilar datos de los usuarios( pero tam i'n puede utili1arlos para mostrar informacin. Por e.emplo( si un explorador cliente tiene acceso al motor de -squeda de su directorio de tel'fonos( querr mostrar los resultados de la -squeda. &a secuencia de comandos de -squeda (que tam i'n puede implementar mediante ASP) acepta los datos introducidos por el usuario( tiene acceso a la ase de datos ) env*a el resultado al formulario de presentacin en una cadena de consulta. #ste e.emplo es una demostracin sencilla de cul ser*a la apariencia del formulario. Paseo por el c0digo Para este e.emplo( los datos se inclu)en en el cdigo de la secuencia de comandos pero( o viamente( la informacin podr*a provenir de un formulario interactivo( de una ase de datos o de un archivo de texto. Al iniciarse el e.emplo se iniciali1an las varia les. 4espu's( crea un formulario con las etiquetas $"%& 7P;/%8 ) define cuatro cuadros de texto. Por -ltimo( con los delimitadores de secuencias de comandos del servidor 79= ... 98( la secuencia de comandos llena los cuadros de texto con los valores esta lecidos en la iniciali1acin. 79M &A>DUAD# = 2:Script 98 79 ;ption #xplicit 98 79 'Create and set variables t0at =ill be used in populating 't0e form. ?n a typical application+ t0ese values =ould come from a database or text file. 4im strPirst>ame 4im str&ast>ame 4im strAddress? 4im strAddress@ 4im ln3nfo strPirst>ame = CHohnC str&ast>ame = C4oeC strAddress? = C? %ain StreetC strAddress@ = C>owhere dA( ?@NWTC 98 7$"%&8 7$#A48 7"3"&#8PopulatePorm Sample76"3"&#8 76$#A48 7:;4< :D+;&;/=C,hiteC ";P%A/D3>=C?BC &#P"%A/D3>=C?BC8 9:;; Display 0eader. ;;< 7P;>" S3d#=CWC PA+#=CA/3A&( $#&2#"3+AC8 7:8PopulatePorm Sample76:876P;>"87:/8 7$/ S3d#=C?C +;&;/=C^BBBBBBC8 7P;/% A+"3;>=CC8 9:;; 5se -", variables to fill out t0e form. ;;< 7P8Pirst >ame! 73>PU" "<P#=C"#S"C >A%#=CP>A%#C 2A&U#=C79= strPirst>ame 98C876P8 7P8&ast >ame! 73>PU" "<P#=C"#S"C >A%#=C&>A%#C 2A&U#=C79= str&ast>ame 98C876P8 7P8Street! 73>PU" "<P#=C"#S"C >A%#=CS"/##"C 2A&U#=C79= strAddress?98C876P8 7P8+it) State( dip! 73>PU" "<P#=C"#S"C >A%#=CP>A%#C 2A&U#=C79= strAddress@ 98C876P8 76:;4<8 76$"%&8

Conec(ividad con bases de da(os

Si va a crear una aplicacin asada en ,e ( lo ms pro a le es que tenga formularios. Posi lemente( tam i'n tendr que conectarla de alguna forma con una ase de datos. ActiveS e 4ata ; .ects (A4;) proporciona un con.unto de eficaces herramientas que le permitirn tener acceso a or*genes de datos ) manipularlos. &os e.emplos de esta seccin ilustran las t'cnicas necesarias para utili1ar A4; de forma efectiva ) cmo puede utili1ar me.or estas funciones en una aplicacin asada en ,e . +onsulta sencilla! %uestra cmo utili1ar A4; ) ASP para reali1ar consultas sencillas en una ase de datos. &imitar los resultados de una consulta! %uestra cmo es posi le utili1ar ASP ) A4; en las secuencias de comandos para limitar el n-mero de filas devueltas en un con.unto de registros. +onsulta despla1a le! %uestra cmo reali1ar con A4; una consulta despla1a le multidireccional. Agregar o eliminar registros! Presenta las t'cnicas necesarias para agregar ) eliminar registros de un origen de datos mediante ASP ) A4;. Actuali1ar registros! %uestra cmo utili1ar A4; en una aplicacin para actuali1ar los registros existentes. #.ecutar procedimientos almacenados! %uestra cmo utili1ar A4; con las secuencias de comandos ASP para e.ecutar procedimientos almacenados de la ase de datos. Para o tener ms informacin acerca de A4; ) de las herramientas de acceso a datos de %icrosoft en general( consulte la documentacin de Microso"( +a(a Access.

Consul(a sencilla !n(roducci0n Aunque una ase de datos puede ser un sistema mu) complicado ) las herramientas de acceso a datos de en ser eficaces ) sensi les( es igualmente importante que las tareas sencillas de acceso a ases de datos sean fciles de reali1ar. #ste e.emplo demuestra cmo A4; proporciona un m'todo sencillo para reali1ar este tipo de tareas. Paseo por el c0digo #l o .etivo de esta aplicacin de e.emplo es o tener un peque0o con.unto de registros de una ase de datos de %icrosofte Access e imprimir el resultado. #l primer paso consiste en crear una instancia del o .eto Connec(ion mediante el m'todo Server#Crea(e.b4ec(. #l e.emplo utili1a la instancia del o .eto Connec(ion para a rir el proveedor de datos ;&# 4: )( despu's( para e.ecutar un comando S%L%CT de S_& ) as* o tener todos los registros de la ta la Autores. Para terminar( la secuencia de comandos recorre la coleccin del con.unto de registros o tenido ) muestra los resultados. 4espu's se cierran el con.unto de registros ) la conexin con el origen de datos ;&# 4:. !mpor(an(e ;&# 4: de e estar correctamente configurado en el servidor para que este e.emplo funcione correctamente. 79M &A>DUAD# = 2:Script 98 79 ;ption #xplicit 98 7$"%&8

7$#A48 7"3"&#8Simple A4; _uer)76"3"&#8 76$#A48 7:;4< :D+;&;/=C,hiteC topmargin=C?BC leftmargin=C?BC8 9:;; Display Aeader ;;< 7font si1e=CWC face=CArial( $elveticaC8 7 8Simple A4; _uer) with ASP76 876font87 r8 7hr si1e=C?C color=C^BBBBBBC8 +ontacts within the Authors 4ata ase!7 r87 r8 79 4im o+onn 4im o/s 4im filePath 4im 3ndex ' 7ap aut0ors database to p0ysical pat0 filePath = Server.%apPath(Cauthors.md C) ' Create -D1 Connection Component to connect ' =it0 sample database Set o+onn = Server.+reate; .ect(CA4;4:.+onnectionC) o+onn.;pen CProvider=%icrosoft.Het.;&#4:.W.BG4ata Source=C O filePath ' (xecute a "4 .uery and store t0e results ' =it0in recordset Set o/s = o+onn.#xecute(CS#&#+" ] Prom AuthorsC) 98

7"A:&# order = ?8 79 4o while (>ot o/s.eof) 98 7tr8 79 Por 3ndex=B to (o/s.fields.countL?) 98 7"4 2Align=top879 = o/s(3ndex)9876"48 79 >ext 98 76tr8 79 o/s.%ove>ext &oop 98 76"A:&#8 79 o/s.close o+onn.close 98 76:;4<8 76$"%&8

Agregar o eliminar regis(ros

!n(roducci0n #ste e.emplo muestra las t'cnicas que necesita conocer para utili1ar ASP ) A4; con el fin de agregar ) eliminar registros de una ase de datos. Paseo por el c0digo Primero se utili1a Crea(e.b4ec( para crear una instancia del o .eto Connec(ion( que a su ve1 se utili1a para a rir una conexin con el proveedor de datos ;&# 4:. Se utili1a de nuevo Crea(e.b4ec( para crear un o .eto &ecordse( vac*o. Se configura la propiedad Ac(iveConnec(ion para hacer referencia al nuevo o .eto Connec(ion. Aunque el o .eto &ecordse( de A4; proporciona el m'todo AddNew para agregar nuevos registros a una ase de datos( puede que la escala ilidad me.ore si env*a comandos 3>S#/" de S_& directamente al motor de ase de datos. #ste e.emplo utili1a el comando &ecordse(#%/ecu(e( .unto con la cadena de comandos apropiada de S_&( para insertar informacin acerca de un nuevo autor. #n este momento se crea otra instancia del o .eto &ecordse( ) se a re con otro comando S_&. Se selecciona el registro reci'n agregado ) se elimina( para lo cual se pasa el comando 4#&#"# de S_& directamente al motor de ase de datos. Por -ltimo( finali1a la secuencia de comandos. !mpor(an(e ;&# 4: de e estar correctamente configurado en el servidor para que este e.emplo funcione correctamente. 79M &A>DUAD# = 2:Script 98 79 ;ption #xplicit 98 79 /esponse.#xpires= L? 98 7RLL%#"A4A"A "<P#=Ct)peli C uuid=CBBBBB@BTLBBBBLBB?BLUBBBLBBAABBV4@#AWC LL8 7$"%&8 7$#A48 7"3"&#8Add64elete 4ata ase Sample76"3"&#8 76$#A48 7:;4< :D+;&;/=C,hiteC topmargin=C?BC leftmargin=C?BC8 9:;; Display Aeader ;;< 7font si1e=CWC face=CArial( $elveticaC8 7 8Add64elete 4ata ase Sample76 876font87 r8 7hr si1e=C?C color=C^BBBBBBC8 79 4im o+onn 4im o/s 4im filePath ' 7ap aut0ors database to p0ysical pat0 filePath = Server.%apPath(Cauthors.md C) ' Create -D1 Connection Component to connect =it0 sample database Set o+onn = Server.+reate; .ect(CA4;4:.+onnectionC) o+onn.;pen CProvider=%icrosoft.Het.;&#4:.W.BG4ata Source=C O filePath ' 3o add+ delete and update recordset+ it is recommended to use ' direct "4 statement instead of -D1 met0ods. o+onn.#xecute Cinsert into authors (author( <ear:orn) values (cPaul #nfieldc( ?AV[)C ' 1utput Result Set o/s = o+onn.#xecute (C select ] from authors where Author= cPaul #nfieldc and <ear:orn =?AV[ C ) /esponse.,rite(C7p83nserted Author! C O o/s(CAuthorC) O C(C O o/s(C<ear:ornC)) ' Close Recordset o/s.+lose Set o/s= >othing

' Delete t0e inserted record o+onn.#xecute C4elete Prom authors where author=cPaul #nfieldc and <ear:orn = ?AV[ C ' 1utput "tatus Result /esponse.,rite(C7p84eleted Author! Paul #nfield( ?AV[C) 98 76:;4<8 76$"%&8

Ac(uali)ar regis(ros !n(roducci0n #ste e.emplo muestra cmo utili1ar A4; en una aplicacin para actuali1ar los registros existentes. Paseo por el c0digo Primero se utili1a Crea(e.b4ec( para crear una instancia del o .eto Connec(ion( que a su ve1 se utili1a para a rir una conexin con el proveedor de datos ;&# 4:. Se utili1a de nuevo Crea(e.b4ec( para crear un o .eto &ecordse( vac*o. Se configura la propiedad Ac(iveConnec(ion para hacer referencia al nuevo o .eto Connec(ion. 4espu's se configura el nuevo con.unto de registros. #l m'todo &ecordse(#%/ecu(e utili1a como parmetro una cadena de comandos S_&. #ste e.emplo utili1a una cadena de comandos UP4A"# de S_& para reali1ar la actuali1acin en los registros adecuados de la ase de datos. 79M &A>DUAD# = 2:Script 98 79 ;ption #xplicit 98 7RLL%#"A4A"A "<P#=Ct)peli C uuid=CBBBBB@BTLBBBBLBB?BLUBBBLBBAABBV4@#AWC LL8 7$"%&8 7$#A48 7"3"&#8Update 4ata ase76"3"&#8 76$#A48 7:;4< :D+;&;/=C,hiteC topmargin=C?BC leftmargin=C?BC8 9:;; Display Aeader ;;< 7font si1e=CWC face=CArial( $elveticaC8 7 8Update 4ata ase76 876font87 r8 7hr si1e=C?C color=C^BBBBBBC8 79 4im o+onn ' object for -D1D2.Connection obj 4im o/s ' object for output recordset o .ect 4im filePath ' Directory of aut0ors.mdb file ' 7ap aut0ors database to p0ysical pat0 filePath = Server.%apPath(Cauthors.md C) ' Create -D1 Connection Component to connect =it0 sample database Set o+onn = Server.+reate; .ect(CA4;4:.+onnectionC) o+onn.;pen CProvider=%icrosoft.Het.;&#4:.W.BG4ata Source=C O filePath ' 3o add+ delete and update recordset+ it is recommended to use ' direct "4 statement instead of -D1 met0ods. o+onn.#xecute CUpdate Authors Set Author =cScott +lintoncC \ O Cwhere Author=cScott Duthriec C Set o/s = o+onn.#xecute ( Cselect ] from Authors where authorC \ O C= cScott +lintoncC ) 98 +hanged Author! 79= o/s(CAuthorC) 98( 79= o/s(C<ear ornC) 98 7P8 79 o+onn.#xecute CUpdate Authors Set Author =cScott DuthriecC \

O Cwhere Author=cScott +lintonc C Set o/s = o+onn.#xecute ( Cselect ] from Authors where authorC \ O C= cScott DuthriecC ) 98 +hanged Author! 79= o/s(CAuthorC) 98( 79= o/s(C<ear ornC) 98 76:;4<8 76$"%&8 MapPa($ #l m'todo MapPa($ asigna al directorio f*sico correspondiente del servidor la ruta virtual o relativa especificada. Sin(a/is Server.%apPath( Ruta ) Parme(ros Ruta #specifica la ruta virtual o relativa que se asignar a un directorio f*sico. Si Ruta comien1a con una arra diagonal (6) o con una arra diagonal inversa (X)( el m'todo MapPa($ devuelve la ruta como si Ruta fuera una ruta virtual completa. Si Ruta no comien1a con una arra diagonal( el m'todo MapPa($ devuelve una ruta relativa al directorio del archivo .asp que se procesa. .bservaciones #l m'todo MapPa($ no comprue a si la ruta que devuelve existe en el servidor o si es vlida. +omo el m'todo MapPa($ asigna la ruta independientemente de si los directorios especificados existen o no( puede utili1arlo para asignar una ruta a una estructura f*sica de directorios )( despu's( pasarla a un componente que cree en el servidor el directorio o el archivo especificado. Puede utili1ar la sintaxis de ruta relativa para el parmetro Ruta si el valor de la propiedad Asp#na leParentPaths es "/U# (que es el valor predeterminado). Si le preocupa permitir que las secuencias de comandos tengan acceso a la estructura f*sica de directorios( puede desha ilitar esta caracter*stica si asigna el valor PA&S# a la propiedad Asp%nableParen(Pa($s. Para ello puede utili1ar el complemento Servicios de 3nternet 3nformation Server o una secuencia de comandos. %4emplo Para los siguientes e.emplos( el archivo data.txt se encuentra en el directorio +!X3netpu X,wwrootXScript( al igual que el archivo test.asp( que contiene las siguientes secuencias de comandos. #l directorio +!X3netpu X,wwroot se esta lece como directorio particular del servidor. #l siguiente e.emplo utili1a la varia le de servidor actual. &a siguiente secuencia de comandos

PATH_INFO para asignar la ruta f*sica al archivo

79= server.mappath(/equest.Server2aria les(CPA"$\3>P;C))987:/8 produce el resultado c!Xinetpu XwwwrootXscriptXtest.asp7:/8

+omo los parmetros de la ruta de los siguientes e.emplos no empie1an con un carcter de arra diagonal( se asignan de forma relativa al directorio actual( en este caso +!X3netpu X,wwrootXScript. &as siguientes secuencias de comandos 79= server.mappath(Cdata.txtC)987:/8 79= server.mappath(Cscript6data.txtC)987:/8 producen el siguiente resultado c!Xinetpu XwwwrootXscriptXdata.txt7:/8 c!Xinetpu XwwwrootXscriptXscriptXdata.txt7:/8

&os dos e.emplos siguientes utili1an el carcter de arra diagonal para especificar que la ruta que se o tiene de e uscarse como ruta virtual completa del servidor. &as siguientes secuencias de comandos 79= server.mappath(C6script6data.txtC)987:/8 79= server.mappath(CXscriptC)987:/8 producen el siguiente resultado c!Xinetpu XwwwrootXscriptXdata.txt7:/8 c!Xinetpu XwwwrootXscript7:/8 &os siguientes e.emplos muestran cmo puede utili1ar una arra diagonal (6) o una arra diagonal inversa (X) para o tener la ruta f*sica al directorio particular. &as siguientes secuencias de comandos 79= server.mappath(C6C)987:/8 79= server.mappath(CXC)987:/8 producen el siguiente resultado c!Xinetpu Xwwwroot7:/8 c!Xinetpu Xwwwroot7:/8 #l siguiente documento es un manual de ASP( trata los principales comandos de ASP( desde lo mas sencillo o lo intermedio( comandos ) utilidades asicas para el desarrollo de paginas ,e interactivas( haciendo uso del %icrosoft 3nternet 3nformation Service. 4icho manual fue tomado de los principales puntos de la a)uda de ,indows @BBB Professional. P.P6p.p.

Trabajo enviado por:


ppadronMtelcel.net.ve

También podría gustarte