Sunteți pe pagina 1din 41

Conceptos bsicos de programacin Cuando se programa, se almacenan datos y se manipulan mediante una serie de instrucciones.

Los datos y los contenedores en los que se almacenan los datos constituyen la materia prima de la programacin. Las herramientas utilizadas para manipular esta materia prima son comandos, funciones y operadores. Almacenar datos Los datos con los que trabaja probablemente incluyan perodos de tiempo, dinero y elementos contables, as como fechas, nombres, descripciones, etc. Cada dato corresponde a un determinado tipo, es decir, pertenece a una categora de datos que se manipula de maneras similares. Podra trabajar directamente con estos datos sin almacenarlos, si bien perdera la mayor parte de la flexibilidad y potencia que ofrece isual !oxPro. isual !oxPro aporta numerosos contenedores de almacenamiento con el fin de ampliar su capacidad para manipular f"cilmente los datos. Los tipos de datos determinan la manera en que se almacenan los datos y la forma en que se pueden utilizar tales datos. Puede multiplicar dos n#meros, pero no puede multiplicar caracteres. Puede imprimir caracteres en may#sculas, pero no puede imprimir n#meros en may#sculas. $n la tabla siguiente se muestran algunos de los principales tipos de datos de isual !oxPro. Tipos de datos Tipo %umeric Ejemplos &'( (,&)&* +, -Prueba. -&'(. -/&0/&012. .3. .!. 4falso6 89&112:/&:/&; 89&112:/&:/& &'<(/<// p; 45erdadero6

Character

Logical 7ate 7ate3ime

Contenedores de datos Los contenedores de datos le permiten realizar las mismas operaciones con 5arios datos. Por ejemplo, sumar las horas que ha trabajado un empleado, multiplicarlas por el salario por hora y restar los impuestos para determinar el sueldo que ha percibido el empleado. 7eber" realizar estas operaciones para cada empleado y para cada perodo de pago. =i almacena esta informacin en contenedores y realiza las operaciones sobre >stos, bastar" con sustituir los datos antiguos por los nue5os datos y 5ol5er a ejecutar el mismo programa. $n la siguiente tabla se enumeran algunos de los principales contenedores de datos disponibles en isual !oxPro< Tipo ariables ?egistros de tabla Aatrices Descripcin $lementos indi5iduales de datos almacenados en la memoria ?@A 4memoria de acceso aleatorio6 del PC. arias filas de campos predeterminados, cada uno de los cuales puede contener un dato definido pre5iamente. Las tablas se guardan en disco. arios elementos de datos almacenados en la memoria ?@A.

Manipular datos Los contenedores y los tipos de datos le ofrecen los mdulos que necesita para manipular los datos. Los elementos finales son los operadores, las funciones y los comandos. Usar operadores Los operadores se utilizan para 5incular los datos. @ continuacin se muestran los operadores utilizados habitualmente en isual !oxPro. Operador B Tipos de datos vlidos 3odos Ejemplo CnB, Resultado Dmprime .3. si el 5alor almacenado en la 5ariable es ,E de lo contrario, imprime .!. Dmprime -!oxPro. Dmprime .!. 4falso6 Dmprime Dmprime * '*

F H or %I3 J, 0

%umeric, Character,7ate, C G!oxG F GProG 7ate3ime Logical %umeric C H.3. C*J* C '* 0 *

Nota Kn signo de interrogacin 4C6 situado delante de una expresin imprime el resultado de la expresin y un car"cter de nue5a lnea en la 5entana de salida acti5a, que es normalmente la 5entana principal de isual !oxPro. ?ecuerde que debe utilizar el mismo tipo de datos con cada operador. Las siguientes instrucciones almacenan dos datos num>ricos en dos 5ariables. Los nombres de 5ariable empiezan con la letra n, por lo que se puede determinar de inmediato que contienen datos num>ricos, pero puede nombrarlas con cualquier combinacin de caracteres alfanum>ricos y caracteres de subrayado. nPrimero B &'( n=egundo B )* Las instrucciones siguientes almacenan dos datos de caracteres en dos 5ariables. Los nombres de 5ariable empiezan con la letra c para indicar que contienen datos de tipo character. cPrimero B G&'(G c=egundo B G)*G Las dos operaciones siguientes, suma y concatenacin, producen resultados distintos, ya que el tipo de datos es diferente en cada una de ellas. C nPrimero F n=egundo C cPrimero F c=egundo Resultado &L2 &'()* Puesto que cPrimero contiene caracteres y nSegundo contiene datos num>ricos, se producir" un error de tipo de datos incorrecto si se intenta ejecutar el siguiente comando< C cPrimero F n=egundo Puede e5itar este problema si utiliza funciones de con5ersin. Por ejemplo, =3?4 6 de5uel5e el 5alor de tipo Character equi5alente de un 5alor de tipo %umeric, mientras que @L4 6 de5uel5e el equi5alente num>rico de una cadena de caracteres formada por n#meros. $stas funciones y L3?DA4 6, que elimina los espacios iniciales, le permiten realizar las operaciones siguientes< C cPrimero F L3?DA4=3?4n=egundo66 C @L4cPrimero6 F n=egundo Resultado &'()* &L2

Usar unciones Las funciones de5uel5en un tipo especfico de datos. Por ejemplo, las funciones =3?4 6 y @L4 6 utilizadas en la seccin anterior de5uel5en 5alores de tipo Character y %umeric, respecti5amente. @l igual que ocurre con todas las funciones, estos tipos de5ueltos est"n documentados con las funciones. May cinco maneras de llamar a una funcin de isual !oxPro< @signar a una 5ariable el 5alor que de5uel5e la funcin. La siguiente lnea de cdigo almacena la fecha actual del sistema en una 5ariable denominada dMoy< dMoy B 7@3$4 6 Dncluir la llamada a la funcin en un comando de isual !oxPro. $l siguiente comando establece el directorio predeterminado como el 5alor de5uelto por la funcin N$37D?4 6< C7 N$37D?4 6 Dmprimir el 5alor de5uelto en la 5entana de salida acti5a. La siguiente lnea de cdigo imprime la hora actual del sistema en la 5entana principal de isual !oxPro< C 3DA$4 6 Llamar a la funcin sin almacenar en ning#n lugar el 5alor de5uelto. La siguiente llamada de funcin desacti5a el cursor< =O=4'//'6 Dncluir la funcin dentro de otra funcin. La siguiente lnea de cdigo imprime el da de la semana< C 7IP47@3$4 66

Usar comandos Kn comando hace que se realice una determinada accin. Cada comando dispone de una sintaxis especfica que indica lo que se debe incluir con el fin de que se ejecute correctamente el comando. May tambi>n cl"usulas opcionales asociadas a los comandos que permiten especificar de forma m"s detallada la accin que se desea realizar. Por ejemplo, el comando K=$ permite abrir y cerrar tablas< !inta"is de U!E USE K=$ customer Descripcin Cierra la tabla que aparece en el "rea de trabajo actual. @bre la tabla CK=3IA$? en el "rea de trabajo actual y cierra cualquier tabla que ya est> abierta en el "rea de trabajo. @bre la tabla CK=3IA$? en la siguiente "rea de trabajo disponible. @bre la tabla CK=3IA$? en la siguiente "rea de trabajo disponible y asigna al "rea de trabajo el alias miCliente.

K=$ customer D% / K=$ customer D% / E ALIAS miCliente

Control del lujo del programa isual !oxPro incluye una categora especial de comandos que Gen5uel5enG a otros comandos y funciones, y determinan cu"ndo y con qu> frecuencia se ejecutan. $stos comandos permiten realizar bifurcaciones condicionales y bucles, dos herramientas de programacin muy eficaces. $l siguiente programa muestra el uso de las bifurcaciones y los bucles condicionales. $stos conceptos se describen de forma m"s detallada despu>s del ejemplo. =uponga que su empresa cuenta con &/./// empleados y desea conceder a todos aqu>llos que ganan (.///./// de pesetas o m"s un aumento salarial del (Q, y a todos los que ganan menos de (.///./// de pesetas un aumento del LQ. $l siguiente ejemplo de programa le permite hacerlo.

$ste programa presupone que en el "rea de trabajo actual est" abierta una tabla que contiene un campo num>rico denominado salario. #rograma de ejemplo para aumentar el salario de los empleados Cdigo =C@% Observaciones $l cdigo comprendido entre =C@% y $%7=C@% se ejecuta tantas 5eces como registros haya en la tabla. Cada 5ez que se ejecuta el cdigo, el puntero de registro se desplaza al siguiente registro de la tabla. Para cada registro, si el salario es mayor o igual que (.///.///, este 5alor se sustituye por un nue5o salario que es un (Q superior. $l signo de punto y coma 4E6 que aparece despu>s de PD3M indica que el comando contin#a en la siguiente lnea. Para cada registro, si el salario no es mayor o igual que (.///.///, se sustituye este 5alor por un nue5o salario que es un LQ superior. !inal de la instruccin condicional D!. !inal del cdigo que se ejecuta para cada registro de la tabla.

IF salario >= 3000000 ?$PL@C$ salary PD3M E salario * 1,03

ELSE ?$PL@C$ salario PD3M E salario * 1,0 $%7D! $%7=C@%

$ste ejemplo utiliza comandos de bifurcacin y bucle condicional para controlar el desarrollo del programa.

$i urcacin condicional La bifurcacin condicional permite someter a prueba condiciones y, a continuacin, en funcin del resultado de la prueba, realizar distintas operaciones. isual !oxPro ofrece dos comandos que permiten realizar una bifurcacin condicional< D! ... $L=$ ... $%7D! 7I C@=$ ... $%7C@=$ $l cdigo comprendido entre la instruccin inicial y la instruccin $%7D! o $%7C@=$ slo se ejecuta si una condicin lgica se e5al#a como 5erdadera 4.3.6. $n el programa de ejemplo, el comando D! se utiliza para distinguir entre dos estados< o el salario es de (.///./// pesetas o m"s, o no lo es. =e adoptan diferentes medidas, dependiendo del estado. $n el siguiente ejemplo, si el 5alor almacenado en la 5ariable n!em"Agua es menor que &//, no se realizar" ninguna accin< J definir una 5ariable lgica como erdadera si se cumple una condicin. D! n3emp@gua RB &// l$bullicin B .3. $%7D! Nota Kn asterisco al principio de una lnea de un programa indica que la lnea es un comentario. Los comentarios ayudan al programador a recordar la funcin que debe realizar cada segmento de cdigo, si bien isual !oxPro los pasa por alto. =i se desea comprobar 5arias condiciones posibles, un bloque 7I C@=$ ... $%7C@=$ puede resultar m"s eficaz que 5arias instrucciones D! y adem"s es m"s f"cil realizar un seguimiento del mismo.

$ucles

Kn bucle le permite ejecutar una o m"s lneas de cdigo tantas 5eces como sea necesario. $n !oxPro hay tres comandos que permiten realizar bucles< =C@% ... $%7=C@% !I? ... $%7!I? 7I PMDL$ ... $%77I

isual

Ktilice =C@% cuando realice una serie de acciones para cada uno de los registros de una tabla, como en el ejemplo de programa descrito anteriormente. $l bucle =C@% permite escribir el cdigo una 5ez y ejecutarlo para cada registro a medida que el puntero de registro se desplaza por la tabla. Ktilice !I? cuando sepa cu"ntas 5eces debe ejecutarse la seccin de cdigo. Por ejemplo, sabe que una tabla contiene un n#mero especfico de campos. Puesto que la funcin !CIK%34 6 de isual !oxPro de5uel5e este n#mero, puede utilizar un bucle !I? para imprimir los nombres de todos los campos de la tabla< !I? n?ecuento B & 3I !CIK%34 6 # FIEL$%n&ecuento' E($F)& Ktilice 7I PMDL$ cuando desee ejecutar una seccin de cdigo mientras cumpla una determinada condicin. 3al 5ez no sepa cu"ntas 5eces debe ejecutarse el cdigo, pero s sabe cu"ndo debe detenerse la ejecucin. Por ejemplo, supongamos que dispone de una tabla en la que figuran los nombres y las iniciales de una serie de personas y desea utilizar las iniciales para consultar los nombres de las personas. =urgira un problema la primera 5ez que intentase agregar una persona cuyas iniciales fuesen las mismas que las de otra persona contenida en la tabla. Para resol5er este problema, podra agregar un n#mero a las iniciales. Por ejemplo, el cdigo de identificacin de @rmando Paredes podra ser @P. La siguiente persona cuyas iniciales fuesen las mismas, @lberto Paredes, sera @P&. =i a continuacin anexase @nbal PeSa a la tabla, su cdigo de identificacin sera @P'. Kn bucle 7I PMDL$ permite localizar el n#mero correcto que se debe adjuntar a las iniciales. #rograma de ejemplo %ue utili&a DO '()*E para generar un n+mero de identi icacin +nico Cdigo %aqu B ?$C%I46 cDniciales B L$!34nombre,&6 F E L$!34apellido,&6 n=ufijo B / Comentarios Nuardar la posicin del registro. Ibtener las iniciales de la persona a partir de las primeras letras de los campos nombre y apellido. =i es necesario, establecer una 5ariable que contenga el n#mero que se debe agregar al final de las iniciales de una persona. Comprobar si hay otra persona en la tabla cuyas iniciales son las mismas. =i en otro registro de la tabla hay un 5alor idTpersona que coincide con cDniciales, la funcin !IK%74 6 de5ol5er" el 5alor 5erdadero 4.3.6 y se ejecutar" el cdigo contenido en el bucle 7I PMDL$. =i no se encuentra ninguna coincidencia, la siguiente lnea de cdigo que se ejecute ser" la lnea que figura a continuacin de $%77I. Preparar un sufijo nue5o y anexarlo al final de las iniciales.

LIC@3$ !I? idTpersona B cDniciales 7I PMDL$ !IK%74 6

n=ufijo B n=ufijo F & cDniciales B E L$!34cDniciales,'6E F @LL3?DA4=3?4n=ufijo66 CI%3D%K$

CI%3D%K$ hace que se 5uel5a a e5aluar el #ltimo comando LIC@3$. $l programa comprueba si el nue5o 5alor contenido en cDniciales ya existe en el campo idTpersona de otro registro. =i es as,

!IK%74 6 seguir" de5ol5iendo el 5alor .3. y se 5ol5er" a ejecutar el cdigo contenido en el bucle 7I PMDL$. =i el nue5o 5alor contenido en cDniciales es efecti5amente #nico, !IK%74 6 de5ol5er" el 5alor .!. y la ejecucin del programa continuar" con la lnea de cdigo que figura a continuacin de $%77I. $%77I NI3I n@qu ?$PL@C$ idTpersona PD3M cDniciales !inal del bucle 7I PMDL$. ol5er al registro y almacenar el cdigo de identificacin #nico en el campo idTpersona.

Puesto que no hay manera de saber de antemano cu"ntas 5eces se encontrar"n los cdigos de identificacin coincidentes que ya se est"n utilizando, se utiliza el bucle 7I PMDL$ El proceso de la programacin Cuando entienda los conceptos b"sicos, la programacin ser" un proceso reiterati5o. Los pasos se repiten numerosas 5eces, perfeccion"ndose el cdigo a medida que se a5anza. @l principio, someter" el cdigo a prueba frecuentemente mediante un sistema de prueba y tanteo. Cuanto m"s conozca el lenguaje, mayor ser" la rapidez con que pueda programar y podr" realizar m"s pruebas preliminares mentalmente. $ntre los pasos b"sicos de la programacin cabe citar los siguientes< 7efinir el problema. 7esglosar el problema en elementos discretos. Construir los elementos. Comprobar y perfeccionar los elementos. $nsamblar los elementos. Comprobar el programa en su conjunto. @ continuacin se enumeran algunos aspectos que debe tener presentes al empezar a programar< 7efina claramente el problema antes de intentar resol5erlo. =i no lo hace, acabar" por realizar numerosos cambios, desechar" cdigo, tendr" que empezar de nue5o o bien terminar" con un resultado que no es realmente lo que deseaba. 7esglose el problema en pasos manejables, en lugar de intentar resol5er todo el problema de una sola 5ez. Pruebe y depure secciones de cdigo a medida que desarrolla el programa. Compruebe que el cdigo hace lo que quiere que haga. La depuracin es el proceso de encontrar y solucionar problemas que impiden que el cdigo se ejecute correctamente. Perfeccione los datos y el almacenamiento de datos para facilitar la manipulacin de estos datos a tra5>s del cdigo del programa. $sto suele implicar estructurar las tablas de forma adecuada.

De inir el problema @ntes de poder resol5er un problema, debe formularlo claramente. @lgunas 5eces, si ajusta la formulacin del problema podr" 5er m"s opciones para resol5erlo. =uponga que obtiene muchos datos de distintos orgenes. =i bien la mayora de los datos son estrictamente num>ricos, algunos 5alores contienen guiones y espacios en blanco adem"s de n#meros. =uponga que quiere eliminar todos los espacios en blanco y los guiones de dichos campos y guardar los datos num>ricos. $n lugar de intentar eliminar los espacios en blanco y los guiones de los datos originales, podra formular el objeti5o del programa como< Objetivo ?eemplazar los 5alores existentes de un campo por otros 5alores que contengan todo lo que contenan los 5alores originales, excepto los espacios en blanco y los guiones.

$sta formulacin e5ita la dificultad que supone manipular una cadena de caracteres cuya longitud sigue cambiando a medida que trabaja con ella.

Descomponer el problema Puesto que tiene que indicar instrucciones especficas a isual !oxPro en t>rminos de operaciones, comandos y funciones, debe descomponer el problema en pasos discretos. La tarea m"s discreta para este problema sera examinar cada car"cter de la cadena. Masta que pueda examinar un car"cter indi5idualmente, no podr" determinar si desea guardarlo. Kna 5ez que examine un car"cter, deber" comprobar si se trata de un guin o de un espacio en blanco. $n este momento, quiz" desee refinar la declaracin del problema. UO si obtu5iera m"s adelante datos que contienen par>ntesis de apertura y de cierreC UO si desea deshacerse de los smbolos de moneda, las comas y los puntosC Cuanto m"s gen>rico pueda hacer el cdigo, m"s trabajo se ahorrar" de ahora en adelanteE lo principal es ahorrar trabajo. Me aqu una formulacin del problema 5"lida para una 5ariedad mucho mayor de datos< Objetivo re inado ?eemplazar los 5alores existentes en un campo por otros 5alores que contengan #nicamente los caracteres num>ricos de los 5alores originales. Con esta formulacin, ahora puede 5ol5er a plantear el problema a ni5el de car"cter< si el car"cter es num>rico, guardar el car"cterE si el car"cter es no num>rico, pasar al siguiente car"cter. Cuando haya construido una cadena que slo contenga los elementos num>ricos de la cadena inicial, podr" reemplazar la primera cadena y pasar al siguiente registro hasta que haya terminado con todos los datos. Para resumir, el problema se descompone en los siguientes elementos< &. '. (. ). *. $xaminar cada car"cter. 7ecidir si el car"cter es num>rico o no. =i es num>rico, copiarlo a la segunda cadena. Cuando haya terminado con todos los caracteres de la cadena original, reemplazar la cadena original con la cadena que slo contiene 5alores num>ricos. ?epetir estos pasos para todos los registros de la tabla.

#rincipales ,unciones Usadas en -isual ,o"pro ,uncin. ME!!A/E$O01 2 Auestra un cuadro de di"logo definido por el usuario. !inta"is A$==@N$VIW4c3extoAensaje X, n3ipoCuadro7i"logo X, c3extoVarra3tuloYY6 3ipos de5ueltos %umerico @rgumentos c3extoAensaje $specifica el texto que aparece en el cuadro de di"logo. Ktilice un retorno de carro 4CM?4&(66 en c3extoAensaje para mo5er una parte del mensaje a la siguiente lnea del cuadro de di"logo. $l alto y el ancho del cuadro de di"logo aumentan lo que sea necesario para que quepa c3extoAensaje. n3ipoCuadro7i"logo $specifica los botones y los iconos que aparecen en el cuadro de di"logo, el botn elegido inicialmente cuando se muestra y el comportamiento del mismo. $n las tablas siguientes, los 5alores / a * del botn del cuadro de di"logo especifican los botones que aparecen en el mismo. Los 5alores de icono &L, (', )2 y L) especifican el icono que aparece en el cuadro de di"logo. Los 5alores predeterminados /, '*L y *&' especifican qu> botn del cuadro de di"logo es el botn predeterminado. $l botn predeterminado se selecciona cuando aparece el cuadro de di"logo. Imitir n3ipoCuadro7i"logo es lo mismo que especificar un 5alor de / para n3ipoCuadro7i"logo. alor / & ' ( ) * Votones del cuadro de di"logo =lo botn @ceptar. Votones @ceptar y Cancelar. Votones @nular, ?eintentar e Dgnorar. Votones =, %o y Cancelar. Votones = y %o. Votones ?eintentar y Cancelar.

alor Dcono &L (' )2 L) Punto. =igno de interrogacin. =igno de exclamacin. Dcono de informacin 4i6.

alor / '*L *&'

Votn predeterminado Primer botn. =egundo botn. 3ercer botn.

n3ipoCuadro7i"logo puede ser la suma de hasta tres 5alores, uno de cada una de las tablas anteriores. Por ejemplo, si n3ipoCuadro7i"logo es '1/ 4'F('F'*L6, el cuadro de di"logo especificado tendr" las siguientes caractersticas< Votones @nular, ?eintentar e Dgnorar. $l cuadro de mensaje muestra el icono del signo de interrogacin. $l segundo botn, ?eintentar, es el botn predeterminado.

c3extoVarra3tulo

$specifica el texto que aparece en la barra de ttulo del cuadro de di"logo. =i omite c3extoVarra3tulo, en la barra de ttulo aparecer" el ttulo GAicrosoft isual !oxProG. Comentarios $l 5alor que de5uel5e A$==@N$VIW4 6 indica qu> botn del cuadro de di"logo se ha elegido. $n los cuadros de di"logo con un botn Cancelar, al presionar la tecla $=C para salir del cuadro de di"logo se de5ol5er" el mismo 5alor 4'6 que al elegir Cancelar. Ibser5e que la abre5iatura m"s corta para esta funcin es A$==@N$V4 6. La tabla siguiente muestra los 5alores que de5uel5e A$==@N$VIW4 6 para cada botn. alor de5uelto & ' ( ) * L , Votn @ceptar Cancelar @nular ?eintentar Dgnorar = %o

3messagebo"14#roceso ,inali&ado555678976!istema de #lanillas62

,uncin . !TR1 2 7e5uel5e el car"cter equi5alente a una expresin num>rica especificada. $s decir con5ierte una expresin numerica en expresin de car"cter. =intaxis =3?4n$xpresin X, nLongitud X, nLugares7ecimalesYY6 3ipos de5ueltos Car"cter @rgumentos n$xpresin $specifica la expresin num>rica e5aluada por =3?4 6. nLongitud $specifica la longitud de la cadena de caracteres de5uelta por =3?4 6. La longitud incluye un car"cter para la coma decimal y un car"cter para cada dgito a la derecha de la coma decimal. =3?4 6 llena la cadena de caracteres con espacios al principio si especifica una longitud mayor que el n#mero de dgitos a la izquierda de la coma decimal. =3?4 6 de5uel5e una cadena de caracteres, que indica desbordamiento num>rico, si especifica una longitud inferior al n#mero de dgitos a la izquierda de la coma decimal. =i n$xpresin es del tipo %umeric o !loat, =3?4 6 de5uel5e un 5alor con notacin cientfica si nLongitud es menor que el n#mero de dgitos de n$xpresin. =i n$xpresin es un entero, =3?4 6 de5uel5e una cadena de asteriscos, que indica desbordamiento num>rico, si nLongitud es menor que el n#mero de dgitos de n$xpresin. =i no se incluye nLongitud, la longitud de la cadena de caracteres cambia de forma predeterminada a &/ caracteres. nLugares7ecimales $specifica el n#mero de lugares decimales de la cadena de caracteres de5uelta por =3?4 6. Puede incluir nLongitud para especificar el n#mero de lugares decimales. =i especifica menos lugares decimales de los que est"n en n$xpresin, el 5alor de retorno se redondea. =i no se incluye nLugares7ecimales, el 5alor predeterminado para lugares decimales es cero de forma predeterminada.

Ejemplo. Numero 3 !tr1numero:2

,uncin . )),1 2 7e5uel5e uno de los dos 5alores dependiendo del 5alor de una expresin lgica. $s una analoga del comando Df..$lse...$ndif, pero la funcion iif46 es ampliamente usada principalmente en aquellos momentos en que el comando if..else...endif no se puede utilizar4Campos de !ormularios, ?eportes y etiquetas6 !inta"is DD!4l$xpresin, e$xpresin&, e$xpresin'6 3ipos de5ueltos Caracter, %um>rico, Currency, 7ate, o 7ate3ime @rgumentos l$xpresin $specifica la expresin lgica e5aluada por DD!4 6. e$xpresin&, e$xpresin' =i l$xpresin se e5al#a 5erdadera 4.3.6, se de5ol5er" e$xpresin&. =i l$xpresin se e5al#a falsa 4.!.6, se de5ol5er" e$xpression'. Comentarios $sta funcin, conocida tambi>n como D! Dnmediato, e5al#a una expresin lgica y de5uel5e a continuacin una de las dos expresiones. =i la expresin lgica se e5al#a como 5erdadera 4.3.6, DD!4 6 de5ol5er" la primera expresin. =i la expresin lgica se e5al#a como falsa 4.!.6, DD!4 6 de5ol5er" la segunda expresin. =ugerencia $sta funcin puede utilizarse en lugar de D! ... $%7D! para expresiones condicionales simples y es especialmente #til en expresiones de etiquetas e informes que especifican condicionalmente el contenido de campos. La funcin DD!4 6 se ejecuta, adem"s, considerablemente m"s r"pido que la estructura D! ... $%7D! equi5alente.

,uncin . Round 12 7escripcin 7e5uel5e un n#mero redondeado en el n#mero especificado de lugares decimales. =intaxis ?ound4expresin X, n#mLugares7ecimalesY6 La sintaxis de la funcin ?ound consta de las siguientes partes< Parte $xpresin n#mLugares7ecimales 7escripcin ?equirido. La expresin num>rica que se redondea. Ipcional. Kn n#mero que indica cu"ntos lugares a la derecha del decimal se incluyen en el redondeo. =i se omite, la funcin ?ound de5uel5e enteros.

,uncin. A**TR)M1 2 $limina los espacios en blanco iniciales y finales de la expresin de caracteres especificada y de5uel5e la expresin recortada como una cadena de caracteres. =intaxis @LL3?DA4c$xpresin6 3ipo de5uelto Car"cter @rgumentos c$xpresin $specifica la expresin de caracteres de la que se eliminan los espacios en blanco iniciales y finales.

Comentarios @LL3?DA4 6 se puede utilizar para asegurar que los espacios en blanco se eliminan de los datos escritos por un usuario.

,uncin . RECCOUNT1 2 7e5uel5e el n#mero de registros de la tabla actual o especificada. =intaxis ?$CCIK%34XnZrea3rabajo [ c@lias3ablaY6 3ipos de5ueltos %um>rico @rgumentos nZrea3rabajo $specifica el n#mero del "rea de trabajo de una tabla abierta en otra "rea de trabajo. =i no hay ninguna tabla abierta en el "rea de trabajo especificada, ?$CCIK%34 6 de5ol5er" cero. c@lias3abla $specifica el alias de una tabla abierta en otra "rea de trabajo. Comentarios $l 5alor de5uelto por ?$CCIK%34 6 no se 5e afectado por =$3 7$L$3$7 y =$3 !DL3$?. ?$CCIK%34 6 sin los argumentos opcionales nZrea3rabajo o c@lias3abla de5uel5e el n#mero de registros de la tabla del "rea de trabajo seleccionada actualmente.

,uncin .RECNO1 2 7e5uel5e el n#mero del registro actual de la tabla actual o la especificada. =intaxis ?$C%I4XnZrea3rabajo [ c@lias3ablaY6 3ipos de5ueltos %umeric @rgumentos nZrea3rabajo $specifica el n#mero del "rea de trabajo de una tabla abierta en otra "rea de trabajo. =i no est" abierta ninguna tabla en el "rea de trabajo que especifica, ?$C%I4 6 de5ol5er" cero. c@lias3abla $specifica el alias de una tabla abierta en otra "rea de trabajo. Comentarios $l registro actual es el registro en el cual se encuentra el puntero de registro. ?$C%I4 6 de5uel5e n#meros negati5os para registros anexados en un b#fer de tablas. ?$C%I4 6 de5uel5e un 5alor que es el n#mero de registros de la tabla m"s uno si el puntero de registro se encuentra mas all" del #ltimo registro de la misma. ?$C%I4 6 de5uel5e & si el puntero de registro se encuentra antes del primer registro de la tabla. =i la tabla no tiene registros, $I!4 6 siempre de5ol5er" 5erdadero 4.3.6. $jecutar ?$C%I4 6 sin los argumentos opcionales nZrea3rabajo o c@lias3abla de5uel5e el n#mero de registro actual de la tabla situada en el "rea de trabajo seleccionada actualmente. =i ha ejecutado =$$\ sin >xito en una tabla indexada, puede especificar / para que nZrea3rabajo utilice la lgica de -b#squeda cercana. para de5ol5er el n#mero del registro m"s similar. ?$C%I4/6 de5uel5e / si no puede encontrarse ninguna coincidencia. isual !oxPro generar" un mensaje de error si ejecuta NI ?$C%I4/6 y no se encuentra ninguna coincidencia.

,uncin. EO, 12

7e5uel5e un tipo Dnteger que contiene un 5alor tipo Voolean de 3rue al llegar al final del archi5o. =intaxis $I!4n#meroarchi5o6 $l argumento necesario n#meroarchi5o es cualquier tipo Dnteger que contenga cualquier n#mero de archi5o 5"lido. Comentarios =e utiliza $I! para e5itar el error que se genera al intentar obtener informacin m"s all" del final de un archi5o. La funcin $I! de5uel5e !alse hasta que se haya llegado al final del archi5o. =i se usa con archi5os abiertos mediante acceso ?andom o Vinary, la funcin $I! de5uel5e !alse hasta que la #ltima instruccin Net que se haya ejecutado no pueda leer el registro completo. Con archi5os abiertos con acceso Vinary, intentar leer el archi5o usando la funcin Dnput hasta que $I! de5uel5a 3rue produce un error. Kse las funciones LI! y Loc en lugar de $I! al leer archi5os binarios con Dnput o use Net al utilizar la funcin $I!.

,uncin . $O,1 2 7etermina si el puntero de registro est" situado al principio de una tabla. =intaxis VI!4XnZrea3rabajo [ c@lias3ablaY6 3ipo de5uelto Logical @rgumentos nZrea3rabajo $specifica el n#mero del "rea de trabajo para una tabla abierta en otra "rea de trabajo. c@lias3abla $specifica el alias para una tabla abierta en otra "rea de trabajo. =i la tabla cuya condicin de principio de archi5o desea probar est" abierta en un "rea de trabajo distinta de la seleccionada actualmente, utilice estos argumentos opcionales para especificar el n#mero del "rea de trabajo o el alias para la tabla. =i no hay ninguna tabla abierta en el "rea de trabajo especificada, VI!4 6 de5ol5er" falso 4.!.6. Comentarios Ktilice VI!4 6 para probar la condicin de principio de archi5o de una tabla. VI!4 6 de5uel5e 5erdadero 4.3.6 si ha intentado mo5er el puntero de registro a una posicin anterior al primer registro de la tabla.

,uncin. TA$*EU#DATE1 2 Nraba los cambios realizados en una fila o una tabla almacenada en b#fer o en un cursor. !inta"is 3@VL$KP7@3$4Xn!ilas X, l!orzarYY X, c@lias3abla [ nZrea3rabajoY X, cAatriz$rroresY6 3ipos de5ueltos Lgicos @rgumentos n!ilas $specifica qu> modificaciones se han introducido de las realizadas en la tabla o en el cursor. =i n!ilas es / 4o .!.6 y est" acti5ado el almacenamiento de tablas o filas en b#fer, slo se introducir"n las modificaciones realizadas en el registro actual de la tabla o del cursor. =i n!ilas es & y est" acti5ado el almacenamiento de tablas en b#fer, todas las modificaciones realizadas en los registros se introducir"n en la tabla o en el cursor. =i n!ilas es & 4o .3.6 y est" acti5ado el almacenamiento de filas en b#fer, slo se introducir"n las modificaciones realizadas en el registro actual de la tabla o cursor. =i n!ilas es ', los cambios realizados en la tabla o en el cursor se confirmar"n como en el caso en que n!ilas &. =in embargo, no se producir" un error cuando no se pueda confirmar un cambio y isual !oxPro

continuar" procesando el resto de los registros en la tabla o en el cursor. =i se incluye cAatriz$rrores, cuando se produzca un error se crear" una matriz con informacin acerca del mismo. $l 5alor predeterminado para n!ilas es /. l!orzar 7etermina si se sobrescriben los cambios realizados en la tabla o el cursor por otro usuario de una red. =i l!orzar es 5erdadero 4.3.6, se sobrescribir"n los cambios realizados en la tabla o el cursor por otro usuario de una red. =i l!orzar es falso 4.!.6, isual !oxPro grabar" los cambios en la tabla o el cursor, desde el primer registro hasta el final de la tabla o el cursor. =i se encuentra un registro modificado por otro usuario de la red, isual !oxPro generar" un error. =i isual !oxPro genera el error, podr" controlarlo a tra5>s de una rutina I% $??I? y la rutina I% $??I? podr" ejecutar 3@VL$KP7@3$4 6 con l!orzar establecido como 5erdadero 4.3.6 para grabar cambios en el registro. @dem"s, si hay una transaccin en curso, la rutina I% $??I? podr" administrar el error y, a continuacin, ejecutar ?ILLV@C\ para de5ol5er la tabla o el cursor a su estado original. $l 5alor predeterminado de l!orzar es falso 4.!.6. c@lias3abla $specifica el alias de la tabla o el cursor en que se graban los cambios. =i incluye un alias de una tabla o de un cursor, debe incluir el argumento l!orzar. nZrea3rabajo $specifica el "rea de trabajo de la tabla o el cursor en que se guardan los cambios. =i incluye un "rea de trabajo, debe incluir el argumento l!orzar. cAatriz$rrores $specifica el nombre de una matriz creada cuando n!ilas es ' y no se pueden guardar los cambios en un registro. La matriz contiene una #nica columna en la que se encuentran los n#meros de registro de los registros cuyos cambios no se pudieron guardar. =i incluye el nombre de una matriz, debe incluir el alias de una tabla o de un cursor c@lias3abla, o bien, el n#mero de un "rea de trabajo nZrea3rabajo. %ota =i se produce un error mientras se actualizan registros, distinto de un error de confirmacin simple, el primer elemento de cAatriz$rrores contendr" el 5alor +& y, entonces, puede usar @$??I?4 6 para determinar por qu> no se pudieron confirmar los cambios. Comentarios 3@VL$KP7@3$4 6 de5uel5e 5erdadero 4.3.6 si se graban los cambios realizados en todos los registrosE de lo contrario, 3@VL$KP7@3$4 6 de5uel5e falso 4.!.6. $l puntero de registro permanece en el registro en el que no han podido grabarse cambios. Puede ejecutar @$??I?4 6 para determinar por qu> no se han podido grabar los cambios. 3@VL$KP7@3$4 6 no puede grabar cambios realizados en una tabla o un cursor en los que no est> acti5ado el almacenamiento de filas o tablas en b#fer. =i ejecuta 3@VL$KP7@3$4 6 y no est" acti5ado el almacenamiento de filas o tablas en b#fer, isual !oxPro genera un mensaje de error. =in embargo, 3@VL$KP7@3$4 6 puede seguir grabando cambios en una tabla o un cursor que tiene reglas de 5alidacin. Ktilice CK?=I?=$3P?IP4 6 para acti5ar o desacti5ar el almacenamiento de filas o tablas en b#fer. Los cambios se grabar"n en la tabla o el cursor abierto en el "rea de trabajo seleccionada actualmente si se ejecuta 3@VL$KP7@3$4 6 sin los argumentos opcionales c@lias3abla o nZrea3rabajo. =i utiliza b#feres de tablas y se actualizan 5arios registros, 3@VL$KP7@3$4 6 mue5e el puntero del registro al #ltimo registro actualizado. %ota Llamar a 3@VL$KP7@3$4 6 para una tabla o 5ista local que no use campos cla5e genera una cl"usula PM$?$ larga para buscar la fila actualizada. La cl"usula PM$?$ admite )/ campos de forma predeterminada. =i obtiene el error &2&' : =]L< la instruccin es demasiado larga, debe usar un campo cla5e para actualizar o aumentar la complejidad de la cl"usula PM$?$ con =O=4(/**6. =i utiliza =O=4(/**6, aumente su 5alor a 2 5eces el n#mero de campos en la tabla< B =O=4(/**, 2 J AD%4)/, !CIK%34 66

,uncin.TA$*ERE-ERT1 2 7escarta los cambios realizados en una fila o en una tabla almacenada en b#fer o en un cursor y restaura los datos de IL7 @L4 6 para cursores remotos y los 5alores del disco actual para tablas y cursores locales. =intaxis

3@VL$?$ $?34Xl3odas!ilas X, c@lias3abla [ nZrea3rabajoYY6 3ipos de5ueltos %umeric @rgumentos l3odas!ilas 7etermina si se descartan los cambios realizados en la tabla o el cursor. =i l3odas!ilas es 5erdadero 4.3.6 y est" acti5ado el almacenamiento de tablas en b#fer, se descartar"n los cambios realizados en todos los registros de la tabla o el cursor. =i l3odas!ilas es falso 4.!.6 y est" acti5ado el almacenamiento de tablas en b#fer, slo se descartar"n los cambios realizados en el registro actual de la tabla o el cursor. =i est" acti5ado el almacenamiento de filas en b#fer, se pasar" por alto el 5alor de l3odas!ilas y se descartar"n los cambios realizados en el registro actual de la tabla o el cursor. $l 5alor predeterminado para l3odas!ilas es falso 4.!.6. c@lias3abla $specifica el alias de la tabla o el cursor en el que se descartan los cambios. nZrea3rabajo $specifica el "rea de trabajo de la tabla o el cursor en el que se descartan los cambios. Comentarios 3@VL$?$ $?34 6 de5uel5e el n#mero de registros para los que se han descartado los cambios. %ota $n una red, es posible que los datos que se encuentran actualmente en disco no coincidan con los datos que haba en el disco cuando se abri la tabla o se cre el cursor. Itros usuarios de la red pueden haber cambiado los datos despu>s de que se abri la tabla o se cre el cursor. 3@VL$?$ $?34 6 no puede descartar los cambios realizados en una tabla o un cursor en el que no se ha acti5ado el almacenamiento de tablas en b#fer. =i ejecuta 3@VL$?$ $?34 6 y no est" acti5ado el almacenamiento de filas y tablas en b#fer, isual !oxPro generar" un mensaje de error. Ktilice CK?=I?=$3P?IP4 6 para acti5ar o desacti5ar el almacenamiento de filas y tablas en b#fer. Los cambios en la tabla o el cursor abierto en el "rea de trabajo seleccionada actualmente se descartar"n si se ejecuta 3@VL$?$ $?34 6 sin los argumentos opcionales c@lias3abla o nZrea3rabajo. 3@VL$?$ $?34 6 no 5uel5e a colocar el puntero de registro en su posicin original.

,uncin. R*OC;1 2 5 Dntenta bloquear uno o 5arios registros de una tabla. =intaxis ?LIC\4XnZrea3rabajo [ c@lias3ablaY [ XcLista%#meros?egistros, nZrea3rabajo [ c@lias3ablaY6 3ipos de5ueltos Lgicos @rgumentos nZrea3rabajo [ c@lias3abla $specifica el n#mero del "rea de trabajo o el alias de tabla para una tabla abierta en otra "rea de trabajo. =i no especifica un "rea de trabajo o alias, ?LIC\4 6 intentar" bloquear el registro actual de la tabla del "rea de trabajo seleccionada actualmente. cLista%#meros?egistros $specifica que ?LIC\4 6 intenta bloquear m#ltiples registros. La expresin de caracteres cLista%#mero?egistros especifica uno o 5arios n#meros de registro, separados por comas, que ?LIC\4 6 intenta bloquear. Por ejemplo, para intentar bloqueos de registro en los primeros ) registros de la tabla, cLista%#mero?egistros contendr" &, ', (, ). Para bloquear m#ltiples registros, es necesario acti5ar =$3 AKL3DLIC\= e incluir el n#mero del "rea de trabajo 4nZrea3rabajo6 o el alias 4c@lias3abla6 de la tabla en la que intenta bloquear los registros. 3ambi>n puede bloquear 5arios registros mo5iendo el puntero de registro al registro que quiera bloquear, ejecutando ?LIC\4 6 o LIC\4 6 y repitiendo luego este proceso para registros adicionales. $n isual !oxPro, puede especificar / como n#mero de registro. $specificar / le permite intentar bloquear el encabezado de la tabla. Dmportante Aantenga el encabezado de la tabla bloqueado por el periodo de tiempo mnimo porque otros usuarios no pueden agregar registros a la tabla cuando el encabezado est" bloqueado. Libere el bloqueo del encabezado de la tabla con K%LIC\ ?$CI?7 /, K%LIC\ o K%LIC\ @LL.

=i todos los registros especificados en cLista%#meros?egistros logran bloquearse, ?LIC\4 6 de5ol5er" 5erdadero 4.3.6. =i uno o m"s de los registros especificados en cLista%#meros?egistros no puede bloquearse, ?LIC\4 6 de5uel5e falso 4.!.6 y no se bloquear" ning#n registro. $n cualquier caso, los bloqueos de registro existentes, permanecer"n en 5igor. $l bloqueo de 5arios registros es un proceso aditi5o< al situar bloqueos de registro adicionales no liberar" los bloqueos de registro existentes. 7esde una perspecti5a de rendimiento, es siempre m"s r"pido bloquear la tabla completa que bloquear un n#mero de registros, aunque sea pequeSo. Comentarios ?LIC\4 6 es id>ntico a LIC\4 6. =i se logra establecer el bloqueo o los bloqueos, ?LIC\4 6 de5uel5e 5erdadero 4.3.6. Los registros bloqueados est"n disponibles para acceso tanto de lectura como de escritura por el usuario que efectu los bloqueos y estar"n disponibles #nicamente para acceso de lectura para todos los dem"s usuarios de la red. La ejecucin de ?LIC\4 6 no garantiza que consigan efectuarse el o los bloqueos que se intenten. %o podr" efectuar un bloqueo sobre un registros que ya est> bloqueado por otro usuario o sobre una tabla bloqueada por otro usuario. =i no pueden efectuarse el o los bloqueos por alguna razn, ?LIC\4 6 de5ol5er" falso 4.!.6. 7e forma predeterminada, ?LIC\4 6 hace un intento de bloquear un registro, Ktilice =$3 ?$P?IC$== para reintentar autom"ticamente un bloqueo de registro cuando falle el primer intento. =$3 ?$P?IC$== controla el n#mero de intentos de bloqueo o durante cuanto tiempo se har"n intentos de bloqueo cuando fracasa el primer intento. Para m"s informacin sobre =$3 ?$P?IC$== y el bloqueo de tabla, 5ea =$3 ?$P?IC$==. =$3 AKL3DLIC\= determina si puede bloquear 5arios registros de una tabla. =i AKL3DLIC\= est" I!! 4el 5alor predeterminado6, #nicamente puede bloquear un solo registro de una tabla. =i AKL3DLIC\= est" I%, podr"n bloquearse m#ltiples registros de una tabla. Para m"s informacin, 5ea =$3 AKL3DLIC\=. Kn registro de una tabla puede desbloquearlo #nicamente el usuario que lo bloque. Los bloqueos de registro pueden liberarse ejecutando K%LIC\, cerrando la tabla o saliendo de isual !oxPro. K%LIC\ puede utilizarse para liberar los bloqueos de registro del "rea de trabajo actual, un "rea de trabajo concreta o de todas las "reas de trabajo. Para m"s informacin al respecto, 5ea K%LIC\. @lternando AKL3DLIC\= de I% a I!! o de I!! a I%, se realiza K%LIC\ @LL implcitamente< se liberar"n todos los bloqueos de registro de todas las "reas de trabajo. Las tablas pueden cerrase con K=$, CL$@? @LL o CLI=$ 7@3@V@=$=.

,uncin . AT1 2 7e5uel5e la posicin num>rica inicial de la primera aparicin de una expresin de caracteres o de un campo memo en otra expresin de caracteres o campo memoE se cuenta desde el car"cter situado m"s a la izquierda. !inta"is @34cExpresinBsqueda, cExpresinBuscada X, nAparicinY6 Tipos devueltos %umeric Argumentos cExpresinBsqueda $specifica la expresin de caracteres que @34 6 busca en cExpresinBuscada. cExpresinBuscada $specifica la expresin de caracteres que cExpresinBsqueda busca. 3anto cExpresinBsqueda como cExpresinBuscada pueden ser campos memo de cualquier tamaSo. nAparicin $specifica qu> aparicin 4primera, segunda, tercera, etc.6 de cExpresinBsqueda se busca en cExpresinBuscada. 7e forma predeterminada, @34 6 busca la primera aparicin de cExpresinBsqueda 4nAparicin B &6. =i incluye nAparicin, podr" buscar otras apariciones adicionales de cExpresinBsqueda en cExpresinBuscada. @34 6 de5ol5er" / si nAparicin es mayor que el n#mero de 5eces que cExpresinBsqueda aparece en cExpresinBuscada. Comentarios

@34 6 busca en la segunda expresin de caracteres la primera aparicin de la primera expresin de caracteres. Luego de5uel5e un 5alor entero que indica la posicin del primer car"cter de la expresin de caracteres encontrada. =i la expresin de caracteres no se encuentra, @34 6 de5ol5er" /. La b#squeda realizada por @34 6 distingue may#sculas de min#sculas. Para realizar una b#squeda que no distinga entre ambas, utilice @3C4 6.

,uncin . $ET'EEN1 2 7etermina si el 5alor de una expresin queda dentro de los 5alores de otras dos expresiones del mismo tipo de datos. !inta"is V$3P$$%4eValorPrueba, eValorInferior, eValorSuperior6 Tipos devueltos Logical o 5alor nulo Argumentos eValorPrueba $specifica la expresin cuyo 5alor comprueba V$3P$$%4 6. =i el 5alor de eValorPrueba es mayor o igual que el 5alor de eValorInferior, y menor o igual que el 5alor de eValorSuperior, V$3P$$%4 6 de5ol5er" 5erdadero 4.3.6. 7e lo contrario, V$3P$$%4 6 de5ol5er" falso 4.!.6. V$3P$$%4 6 de5uel5e el 5alor nulo si eValorInferior o eValorSuperior son el 5alor nulo. eValorInferior $specifica el 5alor inferior del inter5alo que e5al#a V$3P$$%4 6. eValorSuperior $specifica el 5alor superior del inter5alo que e5al#a V$3P$$%4 6. Comentarios V$3P$$%4 6 de5uel5e el 5alor 5erdadero 4.3.6 si el 5alor de una expresin de tipo Character, 7ate, 7ate3ime, %umeric, !loat, Dnteger, 7ouble o Currency est" dentro de los 5alores de otras dos expresiones del mismo tipo de datos. =i el 5alor de la expresin no queda dentro de los 5alores de las otras dos expresiones, V$3P$$%4 6 de5ol5er" falso 4.!.6. V$3P$$%4 6 de5uel5e el 5alor nulo si eValorInferior o eValorSuperior son el 5alor nulo.

,uncin . CTOD1 2 Con5ierte una expresin de caracteres en una expresin de fecha. !inta"is C3I74cExpresin6 Tipos devueltos 7ate Argumentos cExpresin $specifica una expresin de caracteres para la cual C3I74 6 de5uel5e un 5alor de tipo 7ate. Comentarios Ibser5e que C3I74 6 puede crear 5alores ambiguos de 7ate y generar un error de compilacin cuando =$3 =3?DC37@3$ est" establecido en '. Ktilice 7@3$4 6 en su lugar para crear 5alores no ambiguos de 7ate.

,uncin . DTOC1 2 7e5uel5e una fecha de tipo Character a partir de una expresin de tipo 7ate o 7ate3ime. !inta"is 73IC4dExpresin [ tExpresin X, &Y6 Tipos devueltos Character Argumentos dExpresin $specifica una 5ariable de memoria, un elemento de matriz o un campo de tipo 7ate para los que 73IC4 6 de5uel5e una fecha de tipo Character. tExpresin $specifica una 5ariable de memoria, un elemento de matriz o un campo de tipo 7ate3ime para los cuales 73IC4 6 de5uel5e una fecha de tipo Character. & 7e5uel5e la fecha en un formato adecuado para la indexacin. $sto es particularmente #til para mantener los registros de la tabla en secuencia cronolgica. Por ejemplo, para ordenar los registros de la tabla por orden de entrada, podr" utilizar este comando< D%7$W I% 73IC4gd!echa!act, &6 F gnMora!act 3@N DndMora gd!echa!act y gnInd*ora son los campos que contienen la fecha y la hora en que se escribieron los datos en el registro. Comentarios 73IC4 6 de5uel5e una cadena de caracteres correspondiente a la expresin de 7ate o de 7ate3ime. $l formato de fecha 5iene determinado por =$3 C$%3K?O y =$3 7@3$.

,uncin . *);E1 2 7etermina si una expresin de caracteres coincide con otra expresin de caracteres. !inta"is LD\$4cExpresin1, cExpresin26 Tipos devueltos Logical Argumentos cExpresin1 $specifica la expresin de caracteres que LD\$4 6 compara con cExpresin2. cExpresin1 puede contener caracteres comodn, tales como J y C. $l signo de interrogacin 4C6 coincide con cualquier car"cter #nico de cExpresin2 y el asterisco 4J6 coincide con cualquier n#mero de caracteres. Puede mezclar y combinar cualquier n#mero de caracteres comodn que desee en cExpresin1. cExpresin2 $specifica la expresin de caracteres que LD\$4 6 compara con cExpresin1. cExpresin2 debe coincidir con cExpresin1 letra por letra para que LD\$4 6 de5uel5a 5erdadero 4.3.6. Comentarios LD\$4 6 de5uel5e 5erdadero 4.3.6 si cExpresin1 coincide con cExpresin2E de lo contrario, de5uel5e falso 4.!.6. =$3 CIAP@3DVL$ determina la forma en que LD\$4 6 e5al#a cExpresin1 y cExpresin2. =i =$3 CIAP@3DVL$ est" establecido en I% o 7V), se eliminar"n todos los espacios en blanco finales de cExpresin1 y cExpresin2 antes de compararlos. =i =$3 CIAP@3DVL$ est" establecido en I!! o !IWPLK=, en la comparacin se usar"n todos los espacios en blanco finales de cExpresin1 y cExpresin2.

,uncin . RAT1 2 7e5uel5e la posicin num>rica de la #ltima aparicin 4m"s a la derecha6 de una cadena de caracteres dentro de otra cadena de caracteres. !inta"is ?@34cExpresinBsqueda, cExpresinBuscada X, nAparicinY6

Tipos devueltos %umeric Argumentos cExpresinBsqueda $specifica la expresin de caracteres que ?@34 6 busca en cExpresinBuscada. La expresin de caracteres puede hacer referencia a un campo memo de cualquier tamaSo. cExpresinBuscada $specifica la expresin de caracteres donde ?@34 6 busca. La expresin de caracteres puede hacer referencia a un campo memo de cualquier tamaSo. nAparicin $specifica qu> aparicin, de derecha a izquierda, de cExpresinBsqueda busca ?@34 6 en cExpresinBuscada. 7e forma predeterminada, ?@34 6 busca la #ltima 5ez que aparece cExpresinBsqueda 4nAparicin B &6. =i nAparicin es ', ?@34 6 buscar" la pen#ltima aparicin y as sucesi5amente. Comentarios ?@34 6, que es la funcin in5ersa de @34 6, busca en la expresin de caracteres cExpresinBuscada, de la derecha a la izquierda, la #ltima aparicin de otra expresin de caracteres cExpresinBsqueda. ?@34 6 de5uel5e un entero que indica la posicin del primer car"cter de cExpresinBsqueda en cExpresinBuscada. ?@34 6 de5ol5er" / si no encuentra cExpresinBsqueda en cExpresinBuscada, o si nAparicin es mayor que el n#mero de 5eces que cExpresinBsqueda aparece en cExpresinBuscada. La b#squeda realizada por ?@34 6 distingue may#sculas de min#sculas.

,uncin . RE#*)CATE1 2 7e5uel5e una cadena de caracteres que contiene una expresin de caracteres especificada que se repite un determinado n#mero de 5eces. !inta"is ?$PLDC@3$4cExpresin, nVeces6 Tipos devueltos Character Argumentos cExpresin $specifica la expresin de caracteres que se replica. nVeces $specifica el n#mero de 5eces que se replica la expresin de caracteres. Comentarios $n isual !oxPro y en !oxPro para Pindo^s, la longitud m"xima de la cadena de caracteres resultante est" limitada por la cantidad de memoria disponible.

,uncin. TRAN!,ORM1 2

7e5uel5e una cadena de caracteres a partir de una expresin en un formato que 5iene determinado por un cdigo de formato. !inta"is 3?@%=!I?A4eExpresin, cCdigos or!ato6 Tipos devueltos Character Argumentos eExpresin $specifica la expresin num>rica o de caracteres a la que desea dar formato. cCdigos or!ato $specifica uno o m"s cdigos PDC3K?$ o !K%C3DI% que determinan cmo se da formato a la expresin. $n la siguiente tabla se muestran los cdigos de formato disponibles. Cdigos de ormato Descripcin

_C _7 _$ _?

C? se anexa a los 5alores positi5os de moneda o num>ricos para indicar un cr>dito. Los 5alores 7ate y 7ate3ime se con5ierten al formato =$3 7@3$ actual. Los 5alores 7ate y 7ate3ime se con5ierten al formato de fecha V?D3D=M. La transformacin utiliza una m"scara de formato. Los caracteres de la m"scara no se almacenan en el 5alor transformado. Ktilcelo slo con datos num>ricos o alfanum>ricos. La m"scara puede incluir los siguientes caracteres< 1 o `?epresenta un car"cter o un n#mero. HCon5ierte en may#sculas las letras min#sculas.

_3 _W _a _4 _9 _/

=e eliminan los espacios en blanco de los 5alores de tipo Character. 7V se anexan 5alores num>ricos o de moneda negati5os para indicar un d>bito. =i es /, 5alores num>ricos o de moneda se con5ierten en espacios. Dncluye entre par>ntesis los 5alores num>ricos o de moneda negati5os. Con5ierte 5alores num>ricos o de moneda en 5alores cientficos. Con5ierte 5alores num>ricos o de moneda en sus equi5alencias hexadecimales. $l 5alor num>rico o de moneda tiene que ser positi5o y menor que ).'1).1L,.'1L. Con5ierte los datos de caracteres en may#sculas. @grega el smbolo de moneda actual especificado mediante =$3 CK??$%CO a los 5alores de moneda y num>ricos. 7e forma predeterminada, el smbolo se colocar" justo antes o justo despu>s del 5alor. 7e todas formas, tanto el smbolo de moneda y su colocacin 4especificados mediante =$3 CK??$%CO6, como el car"cter de separacin 4especificado mediante =$3 =$P@?@3I?6 y el car"cter decimal 4especificado mediante =$3 PID%36 se pueden modificar. $specifica el ancho de los 5alores de caracteres. Por ejemplo, si cCdigos or!ato es cWWd, se de5uel5en ' caracteres. Con5ierte los 5alores lgicos 5erdadero 4.3.6 y falso 4.!.6 en O y en %, respecti5amente. Con5ierte los caracteres que est"n en min#sculas en caracteres en may#sculas. $specifica la posicin del separador de decimales en los 5alores num>ricos y de moneda. =epara los dgitos que est"n a la izquierda del separador de decimales en los 5alores de moneda y num>ricos.

_H _b

W O H . ,

=i omite cCdigos or!ato, isual !oxPro realiza una transformacin predeterminada en eExpressin.

,uncin. T<#E1 2 $5al#a una expresin de caracteres y de5uel5e el tipo de datos de su contenido. !inta"is 3OP$4cExpresin6 Tipos devueltos Character Argumentos cExpresin $specifica la expresin que se 5a a e5aluar, que puede ser una 5ariable o un campo, un campo de memoria o cualquier otra expresin. La expresin tiene que pasarse como una cadena de caracteresE escriba entre comillas los nombres de 5ariables de memoria, campos, etc. =i no escribe la expresin entre comillas, la funcin 3OP$4 6 de5ol5er" -K. 4expresin indefinida6. Comentarios

La tabla siguiente enumera los caracteres que de5uel5e 3OP$4 6 y sus tipos de datos correspondientes< Tipo de datos Character %umeric 4tambi>n !loat, 7ouble e Dnteger6 Currency 7ate 7ate3ime Logical Aemo Ibject Neneral =creen 4creado con =@ $ =C?$$%6 3ipo de expresin no definido Carcter devuelto C % O 7 3 L A I N = K

,unciones #AD*1 2 7 #ADR1 2 7 #ADC1 2 7e5uel5e la expresin especfica rellen"ndola por la izquierda, la derecha, o por ambos lados. =intaxis P@7L4e$xpresin, n3amaSo?esultado X,cCar"cter?ellenoY6 + o bien + P@7?4e$xpresin, n3amaSo?esultado X,cCar"cter?ellenoY6 +o+ P@7C4e$xpresin, n3amaSo?esultado X, cCar"cter?ellenoY6 3ipos de5ueltos

Character @rgumentos e$xpresin Dncluya la expresin que se 5a a rellenar. Puede ser una expresin de cualquier tipo, excepto una expresin lgica o un campo general o de imagen. n3amaSo?esultado $specifica el n#mero total de caracteres que tendr" la expresin despu>s de rellenarla. cCar"cter?elleno $specifica el 5alor que se 5a a utilizar para el relleno. $ste 5alor se repite todas las 5eces necesarias para rellenar la expresin con el n#mero especificado de caracteres. =i se omite cCar"cter?elleno, se utilizan espacios 4@=C4('66 para el relleno. Comentarios P@7L4 6 inserta los caracteres de relleno a la izquierda, P@7?4 6 inserta el relleno a la derecha, y P@7C4 6 lo inserta en ambos lados.

,uncin. )N;E<1 2 7e5uel5e el n#mero correspondiente a la primera tecla presionada o el primer clic del mouse 4ratn6 que haya en el b#fer de teclado. =intaxis D%\$O4Xn=egundosY X, cIcultarCursorY6 3ipos de5ueltos %umeric @rgumentos n=egundos $specifica durante cuantos segundos esperar" una pulsacin D%\$O4 6. =i n=egundos no se incluye, D%\$O4 6 de5uel5e inmediatamente un 5alor de una pulsacin de tecla. D%\$O4 6 esperar" una pulsacin eternamente si n=egundos es /. cIcultarCursor Auestra u oculta el cursor, o comprueba si se ha hecho clic con el mouse. Para mostrar el cursor, incluya = en cIcultarCursor. Para ocultar el cursor, incluya M en cIcultarCursor. =i se incluye = y M, a la 5ez, en cIcultarCursor, tendr" prioridad el #ltimo car"cter de cIcultarCursor. 7e forma predeterminada, D%\$O4 6 no detecta un clic del mouse. Para detectar un clic del mouse 4ratn6, incluya A en cIcultarCursor. =i se incluye A en cIcultarCursor, D%\$O4 6 de5ol5er" el 5alor &*& para un clic del mouse. Consulte el segundo ejemplo de la tabla siguiente para 5er la forma de comprobar un doble clic. Para comprobar un clic del mouse y mostrar el cursor, incluya A y = a la 5ez. Para comprobar un clic del mouse y ocultar el cursor, incluya M y A a la 5ez. Cuando se asigna una macro de teclado a una tecla o a una combinacin de teclas, puede incluir $ en cIcultarCursor para expandir la macro de teclado. Cuando se incluye $, D%\$O4 6 de5uel5e un 5alor correspondiente a la primera pulsacin de tecla asignada a la macro de teclado. Puede de5ol5er 5alores sucesi5os para cada pulsacin de tecla de una macro de teclado de forma repetiti5a ejecutando D%\$O4 6 con $ incluida. =i $ no se incluye, D%\$O4 6 de5uel5e el 5alor de la tecla o combinacin de teclas que dispara la macro de teclado. Cualquier car"cter que no sea M, A, = y $ en cIcultarCursor se pasar" por alto. La siguiente tabla muestra los 5alores que de5uel5e la funcin D%\$O4 6 para las teclas en solitario y en combinacin con las teclas A@Oe=, C3?L y @L3. Kn guin 4f6 indica que la combinacin de teclas no de5ol5er" ning#n 5alor. 3ecla !& !' !( =ola '2 :& :' A@Oe= 2) 2* 2L C3?L 1) 1* 1L @L3 &/) &/* &/L

!) !* !L !, !2 !1 !&/ !&& !&' & ' ( ) * L , 2 1 / a b c d e f g h i j g l

:( :) :* :L :, :2 :1 &(( &() )1 */ *& *' *( *) ** *L *, )2 1, 12 11 &// &/& &/' &/( &/) &/* &/L &/, &/2

2, 22 21 1/ 1& 1' 1( &(* &(L (( L) (* (L (, 1) (2 )' )/ )& L* LL L, L2 L1 ,/ ,& ,' ,( ,) ,* ,L

1, 12 11 &// &/& &/' &/( &(, &(2 f f f f f f f f f f & ' ( ) * L , &', 1 &/ && &'

&/, &/2 &/1 &&/ &&& &&' &&( &(1 &)/ &'/ &'& &'' &'( &') &'* &'L &', &'2 &1 (/ )2 )L (' &2 (( () (* '( (L (, (2

m n o p q r s t u 5 ^ x y z D%= D%DCDI =KP? !D% ?$ PZN @ PZN

&/1 &&/ &&& &&' &&( &&) &&* &&L &&, &&2 &&1 &'/ &'& &'' '' & , L &2 (

,, ,2 ,1 2/ 2& 2' 2( 2) 2* 2L 2, 22 21 1/ '' ** , )1 *, *& *L */ *' *) f0', &( &', &* ('

&( &) &* &L &, &2 &1 '/ '& '' '( ') '* 'L &)L '1 &), '( (& (/ &)& &)* ' 'L fJ0', &/ &', &)20J ('0f

*/ )1 ') '* &L &1 (& '/ '' ), &, )* '& )) &L' &*& &L( &*1 &*( &L& &*' &L/ &*, &** fJ0& f0&LL &) J *,

!L$CM@ @??DV@ * !L$CM@ @V@hI !L$CM@ 7$?$CM@ !L$CM@ Da]KD$?7@ $=C@P$ $%3?@? ?$3?IC$=I 3@V V@??@ $=P@CD@7I?@ ') ) &1 ', &( &', 1 ('

J Pulsacin reser5ada por Pindo^s. Comentarios D%\$O4 6 de5uel5e / si no se ha presionado ninguna tecla. =i hay 5arias teclas en el b#fer de teclado, D%\$O4 6 de5uel5e el 5alor de la primera tecla introducida en el b#fer.

,uncin . C(R1 2 7e5uel5e el car"cter asociado al cdigo @%=D num>rico especificado. =intaxis CM?4nCdigo@%=D6 3ipos de5ueltos Character @rgumentos nCdigo@%=D $specifica un n#mero entre / y '** cuyo car"cter @%=D equi5alente de5uel5e CM?4 6. Ktilice @=C4 6 para de5ol5er el 5alor @%=D de un car"cter especificado. Comentarios CM?4 6 de5uel5e un #nico car"cter correspondiente a la posicin num>rica del car"cter en la tabla de caracteres de la p"gina de cdigos actual. CM?4 6 puede utilizarse para en5iar cdigos de control a una impresora.

,uncin. Asc 12

7e5uel5e un tipo Dnteger que representa el cdigo de car"cter correspondiente a la primera letra de una cadena. =intaxis @sc4cadena6 $l argumento obligatorio cadena es una expresin de cadena 5"lida. =i cadena no contiene caracteres, se produce un error en tiempo de ejecucin. Comentarios $l inter5alo del 5alor de retorno es entre / y '** en sistemas que no sean 7VC=, y entre +(',L2 y (',L, en sistemas 7VC=. %ota La funcin @scV se utiliza con bytes de datos contenidos en una cadena. $n lugar de de5ol5er el cdigo de car"cter para el primer car"cter, @scV de5uel5e el primer byte. La funcin @scP siempre de5uel5e el cdigo de car"cter Knicode en plataformas donde no se admite Knicode, en cuyo caso, el comportamiento es id>ntico al de la funcin @sc.

,uncin . AD)R1 2 Coloca informacin sobre archi5os en una matriz y, a continuacin, de5uel5e el n#mero de archi5os. !inta"is @7D?4"o!bre#atri$ X, cEstructuraArc%i&os X, cAtributoYY6 Tipos devueltos %umeric Argumentos "o!bre#atri$ $specifica el nombre de la matriz. =i la matriz incluida no existe, isual !oxPro la crear" autom"ticamente. =i la matriz existe y no es suficientemente grande para contener toda la informacin, isual !oxPro aumentar" autom"ticamente su tamaSo para dar cabida a la informacin. =i la matriz es m"s grande de lo necesario, isual !oxPro truncar" el tamaSo de la matriz. =i la matriz existe y @7D?4 6 de5uel5e / porque no se han encontrado archi5os coincidentes, la matriz permanecer" inalterada. =i la matriz no existe y @7D?4 6 de5uel5e /, la matriz no se crear" La tabla siguiente describe el contenido de cada columna de la matriz y el tipo de datos de cada columna<

Contenido de la matri& Columna & ' ( ) * %ombres de archi5o 3amaSos de archi5o !echas de archi5o Moras de archi5o @tributos de archi5o Tipo de datos Character %umeric 7ate Character Character

La #ltima columna de la matriz contiene los atributos de archi5o de los archi5os coincidentes. Cada atributo de archi5o se expresa mediante una letra y un archi5o puede tener m"s de un atributo. La tabla siguiente indica el significado de cada letra de los atributos< *etra @ M ? = 7 Atributo @rchi5o de lectura y escritura Iculto =lo lectura =istema 7irectorio

cEstructuraArc%i&os $specifica una estructura de archi5o de forma que pueda almacenar informacin sobre los archi5os con nombres o extensiones que coincidan con un criterio de b#squeda. Por ejemplo, el criterio puede ser todas las tablas, todos los archi5os de texto, todos los archi5os con nombres cuya primera letra sea @, etc. $stas b#squedas generales se realizan mediante comodines como J y C en cEstructuraArc%i&os. Kn signo de interrogacin representa un #nico car"cter y un asterisco representa un n#mero cualquiera de caracteres. Puede utilizar un n#mero cualquiera de comodines en cualquier posicin de la estructura de archi5o. Puede especificar un 5olumen o carpeta donde buscar archi5os coincidentes. =i no especifica un 5olumen o carpeta, isual !oxPro coloca informacin acerca de los archi5os de la carpeta actual en la matriz. cAtributo $specifica la inclusin de subdirectorios y archi5os ocultos o de sistema cAtributo puede contener cualquier combinacin de 7, M y =. La inclusin de 7 de5uel5e nombres de subdirectorios anidados del directorio actual, adem"s de los nombres de archi5o que coincidan con la estructura de archi5os especificada en cEstructuraArc%i&os. La inclusin de M de5uel5e informacin sobre los archi5os ocultos que coincidan con la estructura especificada en cEstructuraArc%i&os. La inclusin de = de5uel5e informacin sobre los archi5os del sistema que coincidan con la estructura especificada en cEstructuraArc%i&os. Puede incluir una cadena 5aca en cEstructuraArc%i&os para de5ol5er #nicamente los nombres de subdirectorios anidados, los archi5os ocultos o los archi5os del sistema. Puede incluir en cAtributo para de5ol5er el nombre de 5olumen de la unidad actual. enicamente se de5uel5e el nombre de 5olumen a la matriz si se incluye con 7, M o =. $l nombre de 5olumen se almacena en el primer elemento de la matriz y el resto de la matriz se trunca. Comentarios Para cada archi5o, @7D?4 6 coloca en la matriz el nombre de archi5o, su tamaSo, la fecha, la hora y los atributos.

,uncin. A*EN1 2

7e5uel5e el n#mero de elementos, filas o columnas de una matriz. !inta"is @L$%4"o!bre#atri$ X, nAtributo#atri$Y6 Tipo devuelto %umeric Argumentos "o!bre#atri$ $specifica el nombre de la matriz. =i incluye #nicamente el nombre de la matriz, @L$%4 6 de5ol5er" el n#mero de elementos de la matriz. nAtributo#atri$ 7etermina si @L$%4 6 de5uel5e el n#mero de elementos, filas o columnas de la matriz seg#n los siguientes 5alores de nAtributo#atri$< / & ' $specifica que se de5uel5e el n#mero de elementos de la matriz. Imitir nAtributo#atri$ es id>ntico a especificar /. $specifica que se de5uel5e el n#mero de filas de la matriz. $specifica que se de5uel5e el n#mero de columnas de la matriz. =i la matriz es de una dimensin, @L$%4 6 de5ol5er" / 4ninguna columna6.

,uncin . /ET,)*E1 2 Auestra el cuadro de di"logo @brir y de5uel5e el nombre del archi5o que elija. !inta"is N$3!DL$4XcExtensionesArc%i&oY X, c'extoY X, c'(tuloBotnAbrirY X, n'ipoBotnY Xc'(tuloBarra'(tulosY6 Tipos devueltos Character Argumentos cExtensionesArc%i&o $specifica las extensiones de los archi5os mostrados en la lista desplegable cuando el elemento de men# 3odos los archi5os no se ha elegido. =i se pasa un 5alor como un literal, es necesario entrecomillarlo. %o incluya un punto 4.6 delante de las extensiones de archi5o. cExtensionesArc%i&o puede asumir di5ersas formas< =i cExtensionesArc%i&o contiene una #nica extensin 4por ejemplo, .prg6, solamente se mostrar"n los archi5os con esa extensin. =i cExtensionesArc%i&o es la cadena 5aca, se mostrar"n todos los archi5os del directorio actuales si no se ha incluido c'ipoCreador. cExtensionesArc%i&os puede contener tambi>n caracteres comodn 4J y C6 del A=:7I=. =e mostrar"n todos los archi5os cuyas extensiones cumplan los criterios del comodn. Por ejemplo, si cExtensionesArc%i&o es GCWCG, se mostrar"n todos los archi5os que tengan la extensin .fxt, .exe y .txt. $n isual !oxPro para Pindo^s, cExtensionesArc%i&o puede contener una descripcin de archi5o seguida de una extensin de archi5o o de una lista de extensiones de archi5o separadas por comas. La descripcin del archi5o aparece en el cuadro de lista @rchi5os de tipo. =epare con dos puntos 4<6 la descripcin del archi5o de la extensin o de la lista de extensiones de archi5os. =epare con un punto y coma 4E6 m#ltiples descripciones de archi5o y sus extensiones de archi5o. Por ejemplo, si cExtensionesArc%i&o es G3exto<3W3G la descripcin de archi5o G3extoG aparecer" en el cuadro de lista @rchi5os de tipo y se mostrar"n todos los archi5os con la extensin .txt. =i cExtensionesArc%i&o es G3ablas<7V!E @rchi5os<3W3,V@\G las descripciones de archi5o G3ablasG y G@rchi5osG aparecer"n en el cuadro de lista @rchi5os de tipo. Cuando se elige

G3ablasG en el cuadro de lista @rchi5os de tipo, se mostrar"n todos los archi5os de extensin .dbf. Cuando se elija G@rchi5osG del cuadro de lista @rchi5os de tipo, se mostrar"n todos los archi5os con la extensin .txt y .bag. =i cExtensionesArc%i&o contiene slo un punto y coma 4GEG6, se mostrar"n todos los archi5os sin extensin.

c'exto $specifica el texto para la lista de directorios en el cuadro de di"logo @brir. $n Pindo^s 1*, el texto aparece bajo la lista de archi5os y es posible que las cadenas de texto largas aparezcan truncadas. c'(tuloBotnAbrir $specifica un ttulo para el botn @ceptar. n'ipoBotn $specifica el n#mero y el tipo de botones que aparecen en el cuadro de di"logo @brir. Los botones siguientes aparecen en el cuadro de di"logo cuando n'ipoBotn es /, & '< nTipoBotn / 4or omitted6 & $otones @ceptar Cancelar @ceptar %ue5o Cancelar @ceptar %ada Cancelar

'

=e de5ol5er" G=in ttuloG con la ruta de acceso especificada en el cuadro de di"logo @brir si n'ipoBotn es & y el usuario elige el botn %ue5o. =e de5ol5er" la cadena 5aca si n'ipoBotn es ' y el usuario elige el botn i%othing. c'(tuloBarra'(tulos $specifica el ttulo de la barra de ttulos. Comentarios N$3!DL$4 6 de5uel5e la cadena 5aca si sale del cuadro de di"logo @brir presionando $=C, eligiendo Cancelar o eligiendo Cerrar en el men# Control.

,uncin . /ET#)CT1 2 Auestra Ipen Picture 4cuadro de di"logo6 y de5uel5e el nombre del archi5o de imagen que ha elegido. !inta"is N$3PDC34XcExtensionesArc%i&osY X, c'(tulo"o!breArc%i&oY X, c'(tuloBotnAbrirY6 Tipos devueltos Character Argumentos cExtensionesArc%i&os $specifica las extensiones de los archi5os de imagen que se muestran en la lista desplegable cuando no se elige el elemento de men# 3odos los archi5os. cExtensionesArc%i&os puede tomar los siguientes formatos< =i cExtensionesArc%i&os contiene una #nica extensin 4por ejemplo, bmp6, slo se mostrar"n los archi5os que tengan dicha extensin. cExtensionesArc%i&os tambi>n pueden contener caracteres comodn 4J y C6. =e mostrar"n todos los archi5os cuyas extensiones cumplan los criterios de comodn. Por ejemplo, si cExtensionesArc%i&os es CWC, se mostrar"n todos los archi5os cuyas extensiones sean .fxp, .exe y .txt.

=i cExtensionesArc%i&os contiene la cadena 5aca 4GG6, se mostrar"n los archi5os con las extensiones .bmp y .dib.

c'(tulo"o!breArc%i&o $specifica el ttulo mostrado encima del cuadro de texto G%ombre de archi5o. c'(tulo"o!breArc%i&o reemplaza al G%ombre de archi5oG que aparece cuando se omite c'(tulo"o!breArc%i&o. c'(tuloBotnAbrir $specifica un ttulo para el botn @ceptar. Comentarios N$3PDC34 6 de5uel5e la cadena 5aca si sale del cuadro de di"logo @brir presionando $=C, eligiendo Cancelar o eligiendo Cerrar en el men# Control.

Operadores relacionales Los operadores relacionales funcionan con todos los tipos de datos y de5uel5en un 5alor Logical. $n la siguiente tabla se muestran los operadores relacionales. Iperadores relacionales Iperador i R B iR, `, HB iB RB BB @ccin Aenor que Aayor que Dgual que 7istinto de Aenor o igual que Aayor o igual que Comparacin caracteres de cadenas Cdigo C '( i *) C&R' C c ar& B c ar C .3. iR .!. C 89&1120/'0&L; iB 89&1120/'0&L; C (' RB n=u$dad de C status BB G@brirG

=e puede usar el operador BB para comparar cadenas de caracteres de forma exacta. @l comparar dos expresiones de caracteres mediante el operador BB, las expresiones a ambos lados de dicho operador se consideran iguales si contienen exactamente los mismos caracteres, incluidos los espacios en blanco. La configuracin de =$3 $W@C3 se pasa por alto al comparar cadenas de caracteres con el operador BB. ea =$3 $W@C3 si desea obtener m"s informacin sobre el uso del operador BB para comparar cadenas de caracteres. 3ambi>n puede usar el operador de igual que 4B6 en isual !oxPro L./ para determinar si dos referencias a objetos hacen referencia al mismo objeto.

Comandos Mas )mportantes5 /AT(ER =ustituye los datos del registro actual de la tabla seleccionada actualmente por datos de una matriz, un conjunto de 5ariables de memoria o un objeto. !inta"is N@3M$? !?IA "o!bre#atri$ [ A$A @? [ %@A$ "o!bre)b*eto X!D$L7= +istaCa!pos [ !D$L7= LD\$ Estructura [ !D$L7= $WC$P3 EstructuraY XA$AIY Argumentos !?IA "o!bre#atri$ $specifica la matriz cuyos datos reemplazan los datos del registro actual. $l contenido de los elementos de la matriz, comenzando con el primer elemento, reemplazan el contenido de los campos correspondientes del registro. $l contenido del primer elemento de la matriz reemplaza al primer campo del registroE el contenido del segundo elemento de la matriz reemplaza al segundo campo y as sucesi5amente. =i la matriz tiene menos elementos que campos tiene la tabla, se pasar"n por alto los campos adicionales. =i la matriz tiene m"s elementos que campos tiene la tabla, se pasar"n por alto el resto de elementos de la matriz. A$A @? $specifica las 5ariables de memoria o la matriz desde las que se copian datos al registro actual. Los datos se transfieren desde la 5ariable de memoria hasta el campo que tenga el mismo nombre que dicha 5ariable. $l contenido de un campo no se sustituye en caso de que no exista ninguna 5ariable de memoria con el mismo nombre que el campo. !ugerencia Puede crear 5ariables con los mismos nombres que los campos incluyendo A$A @? o VL@%\ en =C@33$?. %@A$ "o!bre)b*eto $specifica un objeto cuyas propiedades tienen los mismos nombres que los campos de la tabla. $l contenido de cada campo se sustituye por el 5alor de la propiedad que tenga los mismos nombres que los campos. $l contenido de un campo no se sustituye si no existe ninguna propiedad con su mismo nombre. !D$L7= +istaCa!pos $specifica los campos cuyo contenido se sustituye por el contenido de los elementos de la matriz o las 5ariables de memoria. =olamente se sustituir" el contenido del campo especificado con +istaCa!pos. !D$L7= LD\$ Estructura [ !D$L7= $WC$P3 Estructura Puede reemplazar selecti5amente campos con el contenido de elementos de matriz o 5ariables de memoria si incluye la cl"usula LD\$ o $WC$P3, o ambas. =i incluye LD\$ Estructura, isual !oxPro reemplazar" los campos que coincidan con Estructura. =i incluye $WC$P3 Estructura, reemplazar" todos los campos excepto los que coincidan con Estructura. Estructura acepta caracteres comodn 4J y C6. Por ejemplo, para reemplazar todos los campos que empiecen por las letras @ y P, use< N@3M$? !?IA gamiarray !D$L7= LD\$ @J,PJ A$AI $specifica que el contenido de los campos memo se sustituye por el contenido de los elementos de la matriz o de las 5ariables de memoria. =i omite A$AI, los campos memo se saltar"n cuando N@3M$? reemplace el contenido de los campos con el contenido de una matriz o de 5ariables de memoria. Los campos de tipo Neneral y Picture se pasan por alto siempre en N@3M$?, incluso si se incluye la palabra cla5e A$AI.

!CATTER Copia datos del registro actual a un conjunto de 5ariables de memoria o a una matriz. !inta"is =C@33$? X!D$L7= +ista"o!bresCa!pos [ !D$L7= LD\$ Estructura [ !D$L7= $WC$P3 EstructuraY XA$AIY

3I "o!bre#atri$ [ 3I "o!bre#atri$ VL@%\ [ A$A @? [ A$A @? VL@%\ [ %@A$ "o!bre)b*etoXVL@%\Y Argumentos !D$L7= +ista"o!bresCa!pos $specifica los campos que desea transferir a las 5ariables de memoria o a la matriz. =i omite !D$L7= +ista"o!bresCa!pos, se transferir"n todos los campos. La lista de campos puede contener campos memo si sigue la lista de campos con la palabra cla5e A$AI. Los campos de tipo general e imagen se pasan por alto siempre en =C@33$?, aunque incluya la palabra cla5e A$AI. !D$L7= LD\$ Estructura [ !D$L7= $WC$P3 Estructura Puede transferir selecti5amente campos a 5ariables de memoria o a una matriz si incluye la cl"usula LD\$ o $WC$P3 o ambas. =i incluye LD\$ Estructura, los campos que coinciden con Estructura se transfieren a las 5ariables de memoria o a la matriz. =i incluye $WC$P3 Estructura, se transfieren a las 5ariables de memoria o a la matriz todos los campos que coinciden con Estructura. Estructura acepta caracteres comodn. Por ejemplo, para transferir todos los campos que empiezan por las letras @ y P a las 5ariables de memoria o a la matriz, use< =C@33$? !D$L7= LD\$ @J,PJ 3I mimatriz La cl"usula LD\$ puede combinarse con la cl"usula $WC$P3< =C@33$? !D$L7= LD\$ @J,PJ $WC$P3 P@?3%IJ 3I mimatriz A$AI $specifica que la lista de campos contiene uno o 5arios campos memo. 7e forma predeterminada, los campos memo se pasan por alto en =C@33$?. 7ebe tener memoria suficiente para diseminar campos memo grandes en 5ariables de memoria o en una matriz. isual !oxPro mostrar" un mensaje de error si no tiene suficiente memoria. =i un campo memo es demasiado grande y no cabe en memoria, ni >se ni los dem"s campos memo de la lista de campos se diseminar"n. =i un campo memo no se disemina, su 5ariable de memoria o elemento de matriz tomar" el 5alor falso 4.!.6. 3I "o!bre#atri$ $specifica qu> matriz se copia el contenido de los registros. Comenzando por el primer campo, =C@33$? copia en orden secuencial el contenido de cada campo en cada elemento de matriz. =i la matriz tiene m"s elementos que el n#mero de campos, los elementos de matriz sobrantes no se modificar"n. =i la matriz no existe, o si tiene menos elementos que el n#mero de campos, se crear" autom"ticamente una nue5a matriz. Los elementos de matriz tendr"n el mismo tamaSo y los mismos tipos de datos que los campos correspondientes 3I "o!bre#atri$ VL@%\ Crea una matriz con elementos 5acos que tendr"n el mismo tipo y tamaSo que los campos de la tabla A$A @? 7isemina los datos en un conjunto de 5ariables de memoria en lugar de en una matriz =C@33$? crea una 5ariable de memoria por cada campo de la tabla y rellena cada 5ariable de memoria con datos del campo correspondiente del registro actual, asignando a la 5ariable el mismo nombre, tipo y tamaSo que su campo. =e crea una 5ariable de memoria para cada campo en la lista de campos, si se incluye una lista de campos. Dncluya delante del nombre de la 5ariable de memoria el calificador A. para referirse a una 5ariable de memoria que tenga el mismo nombre que un campo de la tabla actual. )mportante %o incluya 3I con A$A @?. =i incluye 3I isual !oxPro crear" una matriz llamada A$A @?. A$A @? VL@%\ Crea un conjunto de 5ariables de memoria 5acas. @ cada 5ariable de memoria se le asignar" el mismo nombre, tipo de dato y tamaSo que su campo. =i se incluye una lista de campos, se crear" una 5ariable de memoria para cada campo de la lista de campos. %@A$ "o!bre)b*eto XVL@%\Y Crea un objeto cuyas propiedades tienen los mismos nombres que los campos de la tabla. =i no se incluye la palabra cla5e VL@%\, los 5alores posibles de cada una de las propiedades del objeto son el contenido de los campos de la tabla. =i se incluye la palabra cla5e VL@%\, las propiedades est"n 5acas 45ea $AP3O4 6 para obtener una descripcin de qu> contienen las propiedades 5acas, en base al tipo de campo correspondiente6. %o se crean propiedades para los campos de tipo memo o general de la tabla. Para hacer referencia a una propiedad en un objeto que tiene el mismo nombre que una tabla abierta, escriba delante del nombre de la propiedad el cualificador A. Por ejemplo< K=$ customer =C@33$? %@A$ customer

C customer.company jj 7e5uel5e el 5alor de la tabla C A.customer.company jj 7e5uel5e el 5alor de propiedad del objeto Comentarios =C@33$? y CIPO 3I @??@O son parecidos. CIPO 3I @??@O copia m#ltiples registros en una matriz, mientras que =C@33$? copia solamente un registro en una matriz o en un conjunto de 5ariables de memoria. =C@33$? crea autom"ticamente la matriz o las 5ariables de memoria en caso de que no existan toda5a. Ktilice N@3M$? para copiar 5ariables de memoria o elementos de matriz a registros de tabla.

Comando . CO#< TO Crea un nue5o archi5o a partir del contenido de la tabla seleccionada actualmente. !inta"is CIPO 3I "o!breArc%i&o X7@3@V@=$ "o!breBase,atos X%@A$ "o!bre+argo'ablaYY X!D$L7= +istaCa!pos [ !D$L7= LD\$ Estructura [ !D$L7= $WC$P3 EstructuraY XAlcanceY X!I? lExpresin1Y XPMDL$ lExpresin2Y XXPD3MY C7WY [ XXPD3MY P?I7KC3DI%Y X%IIP3DADa$Y XX3OP$Y X!IWPLK= [ !IW'W [ 7D! [ AI7 [ =7! [ =OL\ [ P\& [ P\= [ P?& [ P?\ [ C = [ [ WL= [ WL* [ 7$LDAD3$7 XPD3M ,eli!itador [ PD3M VL@%\ [ PD3M 3@V [ PD3M CM@?@C3$? ,eli!itadorYYY X@= nP-ginaCdigosY Argumentos "o!breArc%i&o $specifica el nombre del nue5o archi5o que crea CIPO 3I. =i no incluye una extensin de nombre de archi5o, se asignar" la extensin predeterminada para el tipo de archi5o especificado. =i no especifica un tipo de archi5o, CIPO 3I crear" una nue5a tabla de isual !oxPro y asignar" al nombre del archi5o de tabla la extensin predeterminada .dbf. 7@3@V@=$ "o!breBase,atos $specifica una base de datos a la que se 5a a agregar la nue5a tabla. %@A$ "o!bre+argo'abla $specifica un nombre largo para la nue5a tabla. Los nombres largos de archi5o pueden contener un m"ximo de &'2 caracteres y se pueden utilizar en lugar de los nombres de archi5o cortos en la base de datos. !D$L7= +istaCa!pos $specifica qu> campos se copiar"n al nue5o archi5o. =i omite !D$L7= +istaCa!pos, todos los campos se copiar"n al archi5o. =i el archi5o que est" creando no es una tabla, los campos memo no se copiar"n al nue5o archi5o, incluso aunque en la lista de campos haya incluido nombres de campo memo. !D$L7= LD\$ Estructura $specifica que los campos de la tabla original que concuerdan con la estructura Estructura se incluyen en el nue5o archi5o creado por CIPO 3I. !D$L7= $WC$P3 Estructura $specifica que todos los campos excepto aqu>llos que concuerden con la estructura de campo Estructura se incluir"n en el nue5o archi5o creado por CIPO 3I. La estructura de campos Estructura admite caracteres comodn. Por ejemplo, para especificar que todos los campos que empiecen por las letras @ y P se incluir"n en el nue5o archi5o, use lo siguiente< CIPO 3I mitabla !D$L7= LD\$ @J,PJ La cl"usula LD\$ se puede combinar con la cl"usula $WC$P3< CIPO 3I mitabla !D$L7= LD\$ @J,PJ $WC$P3 P@?3%IJ Alcance $specifica un inter5alo de registros que desea copiar a un archi5o. =lo se copiar"n los registros comprendidos en ese inter5alo. Las cl"usulas de alcance son< @LL, %$W3 n.egistros, ?$CI?7 n"!ero.egistro y ?$=3. Para obtener m"s informacin acerca de las cl"usulas de alcance, 5ea el tema Cl"usulas de alcance. !I? lExpresin1

$specifica que slo se copiar"n al archi5o aquellos registros para los cuales la condicin lgica lExpresin1 d> como resultado 5erdadero 4.3.6. Dncluya !I? lExpresin1 para copiar condicionalmente registros y excluir los registros no deseados. ?ushmore optimiza CIPO 3I con una cl"usula !I? lExpresin1 si lExpresin1 es una expresin optimizable. Para conseguir el m"ximo rendimiento, utilice una expresin optimizable en la cl"usula !I? lExpresin1. PMDL$ lExpresin2 $specifica una condicin por la cual se copiar"n los registros siempre y cuando la expresin lgica lExpresin2 d> como resultado 5erdadero 4.3.6. XPD3MY C7W [ XPD3MY P?I7KC3DI% Crea un archi5o de ndice estructural para la nue5a tabla que es id>ntico al archi5o de ndice estructural de la tabla existente. Las etiquetas y las expresiones de ndice del archi5o de ndice estructural original se copian al nue5o archi5o de ndice estructural. Las cl"usulas C7W y P?I7KC3DI% son id>nticas. %o incluya C7W o P?I7KC3DI% si 5a a copiar a un archi5o que no es una nue5a tabla de isual !oxPro. %IIP3DADa$ $specifica el tipo de archi5o si el archi5o que 5a a crear no es una tabla de isual !oxPro. @unque debe especificar un tipo de archi5o, no es necesario incluir la palabra cla5e 3OP$. !IWPLK= Los archi5os memo de isual !oxPro tienen una estructura diferente que los archi5os memo de Aicrosoft !oxV@=$F. =i la tabla de origen de isual !oxPro contiene un campo memo, incluya la cl"usula !IWPLK= para crear una tabla que pueda utilizarse en !oxV@=$F. $l campo memo de isual !oxPro no puede contener datos binarios, ya que !oxV@=$F no admite datos binarios en campos memo. !IW'W Crea una nue5a tabla que se puede abrir en 5ersiones anteriores de !oxPro para Pindo^s y !oxPro para A=:7I= 45ersiones './, '.* y '.L6. Para campos de los tipos %umeric, !loat, Dnteger, 7ouble y Currency, los 5alores nulos de la tabla de origen se con5ierten en cero en la nue5a tabla. Los 5alores nulos de la tabla de origen se con5ierten a espacios en blanco en la nue5a tabla. Para obtener m"s informacin acerca de los 5alores en blanco, 5ea D=VL@%\4 6. $n la tabla siguiente se muestran los tipos de campo de isual !oxPro que se con5ierten a distintos tipos de campo en la nue5a tabla cuando se incluye el argumento !IW'W. Tipo de campo de -isual,o"#ro Currency 7ate3ime 3ime Dnteger Tipo de campo de ,o"#ro 95" !loat 7ate !loat %umeric

7D! Crea un archi5o .dif 4!ormato de intercambio de datos6 de isiCalc k. Los campos de la tabla de isual !oxPro se con5ierten en 5ectores 4columnas6 y los registros se con5ierten en filas. =i no incluye ninguna extensin en "o!breArc%i&o se asignar" una extensin .dif al nue5o nombre de archi5o. AI7 Crea un archi5o de Aicrosoft Aultiplan k 5ersin )./&. =i no incluye una extensin, se asignar" la extensin .mod al nue5o nombre de archi5o de Aicrosoft Aultiplan. =7! Crea un archi5o =7! 4!ormato de datos del sistema6. Kn archi5o =7! es un archi5o de texto @=CDD en el cual los registros tienen una longitud fija y terminan con un retorno de carro y un a5ance de lnea. Los campos no est"n delimitados. =i no incluye una extensin, se asignar" la extensin .txt al nombre de archi5o =7!. =OL\ Crea un archi5o de intercambio =OL\ 4 nculo simblico6. Los archi5os =OL\ se usan en Aicrosoft AultiPlan. Cada campo de la tabla seleccionada actualmente se con5ierte en una columna de la hoja de c"lculo y cada registro se con5ierte en una fila. Los nombres de archi5o =OL\ no tienen extensin. P\&

Crea un archi5o de hoja de c"lculo de Lotus k &:':(k 5ersin '.x. Cada campo de la tabla seleccionada actualmente se con5ierte en una columna de la hoja de c"lculo y cada registro se con5ierte en una fila. =e asigna a la nue5a hoja de c"lculo la extensin .^g&. P\= Crea un archi5o de hoja de c"lculo de Lotus &:':( 5ersin &a. Cada campo de la tabla seleccionada actualmente se con5ierte en una columna de la hoja de c"lculo y cada registro se con5ierte en una fila. =e asigna a la nue5a hoja de c"lculo la extensin .^gs. P?& Crea un archi5o de hoja de c"lculo de Lotus =ymphony 5ersin &.& &.'. Cada campo de la tabla seleccionada actualmente se con5ierte en una columna de la hoja de c"lculo y cada registro se con5ierte en una fila. =e asigna a la nue5a hoja de c"lculo la extensin .^r&. P?\ Crea un archi5o de hoja de c"lculo de Lotus =ymphony 5ersin &./. Cada campo de la tabla seleccionada actualmente se con5ierte en una columna de la hoja de c"lculo y cada registro se con5ierte en una fila. =e asigna a la nue5a hoja de c"lculo la extensin .^r&. C = Crea un archi5o de 5alores separados por comas. Kn archi5o C= tiene los nombres de campo como primera lnea en el archi5o y los 5alores de campo de la parte restante del archi5o se separan con comas. WL= Crea un archi5o de hoja de c"lculo de Aicrosoft $xcel 5ersin './. Cada campo de la tabla seleccionada actualmente se con5ierte en una columna de la hoja de c"lculo y cada registro se con5ierte en una fila. =i no incluye ninguna extensin de archi5o, se asignar" a la nue5a hoja de c"lculo la extensin .xls. WL* Crea un archi5o de hoja de c"lculo de Aicrosoft $xcel 5ersin *. Cada campo de la tabla seleccionada actualmente se con5ierte en una columna de la hoja de c"lculo y cada registro se con5ierte en una fila. =i no incluye ninguna extensin de archi5o, se asignar" a la nue5a hoja de c"lculo la extensin .xls. 7$LDAD3$7 Crea un archi5o delimitado. Kn archi5o delimitado es un archi5o de texto @=CDD en el cual cada registro termina con un retorno de carro y un a5ance de lnea. $l separador predeterminado de campo es una coma. Puesto que los datos de tipo Character pueden incluir comas, los campos de caracteres se delimitan adem"s mediante dobles comillas. @ menos que especifique lo contrario, se asignar" una extensin .txt a todos los archi5os delimitados reci>n creados con 7$LDAD3$7. 7$LDAD3$7 PD3M ,eli!itador Crea un archi5o delimitado con los campos de caracteres delimitados por un car"cter que no es una comilla. $l car"cter que delimita los campos de caracteres se especifica mediante ,eli!itador. 7$LDAD3$7 PD3M VL@%\ Crea un archi5o delimitado con campos separados por espacios en blanco, no por comas. 7$LDAD3$7 PD3M 3@V Crea un archi5o delimitado con campos delimitados por tabulaciones, no por comas. 7$LDAD3$7 PD3M CM@?@C3$? ,eli!itador Crea un archi5o delimitado con cada uno de los campos entre caracteres como el especificado en ,eli!itador. =i ,eli!itador es un punto y coma 4el car"cter utilizado en isual !oxPro para indicar la continuacin de la lnea de comandos6, escriba el punto y coma entre comillas. 3ambi>n puede especificar las palabras cla5e VL@%\ y 3@V para ,eli!itador. Ibser5e que la cl"usula de ,eli!itador PD3M se puede combinar con la cl"usula PD3M CM@?@C3$?. Por ejemplo, el siguiente comando crea un archi5o de texto con campos Character entre los caracteres de subrayado y todos los campos delimitados entre s con signos de punto y coma< CIPO 3I mitxt.txt 7$LDAD3$7 PD3M T PD3M CM@?@C3$? cEd @= nP-ginaCdigos $specifica la p"gina de cdigos para la tabla o el archi5o que crea CIPO 3I. isual !oxPro copia el contenido de la tabla seleccionada actualmente y, a medida que copia los datos, los con5ierte autom"ticamente a la p"gina de cdigos especificada para la nue5a tabla o el nue5o archi5o. =i es posible, isual !oxPro marcar" la tabla o el archi5o reci>n creados con la p"gina de cdigos que usted especifique. =i especifica para nP-ginaCdigos un 5alor no permitido, isual !oxPro generar" un mensaje de error. Puede utilizar N$3CP4 6 con nP-ginaCdigos para mostrar el cuadro de di"logo #gina de cdigos, de forma que pueda especificar una p"gina de cdigos para la tabla o el archi5o que crea isual !oxPro. =i se omite @= nP-ginaCdigos, la tabla o el archi5o reci>n creado se con5ertir" a la p"gina de cdigos actual de isual !oxPro.

=i nP-ginaCdigos es /, no se producir" ninguna con5ersin de p"gina de cdigos y la tabla o el archi5o reci>n creados no se marcar"n con ninguna p"gina de cdigos.

Comando. CA*CU*ATE

?ealiza operaciones financieras y estadsticas en campos de una tabla o expresiones que utilicen campos. !inta"is C@LCKL@3$ e+istaExpresiones XAlcanceY X!I? lExpresin1Y XPMDL$ lExpresin2Y X3I +istaVariables#e!oria [ 3I @??@O "o!bre#atri$Y X%IIP3DADa$Y Argumentos e+istaExpresiones $specifica las expresiones que pueden contener cualquier combinacin de las siguientes funciones< @ N4nExpresin6 C%34 6 A@W4eExpresin6 AD%4eExpresin6 %P 4nExpresin1, nExpresin2 X, nExpresin/Y6 =374nExpresin6 =KA4nExpresin6 @?4nExpresin6 Las funciones de la lista e+istaExpresiones est"n separadas con comas. $stas funciones son especficas de C@LCKL@3$ y se describen detalladamente m"s adelante en esta seccin. %o deben confundirse con funciones independientes de nombre similar. Por ejemplo, C@LCKL@3$ AD%4 6 no es lo mismo que AD%4 6. Alcance $specifica un inter5alo de registros utilizados en el c"lculo. =olamente se incluyen en dicho c"lculo los registros incluidos en el inter5alo. Las cl"usulas de alcance son< @LL, %$W3 n.egistros, ?$CI?7 n"!ero.egistros y ?$=3. Para obtener m"s informacin acerca de las cl"usulas de alcance, 5ea el tema Cl"usulas de alcance. Los comandos que incluyen Alcance solamente act#an sobre la tabla del "rea de trabajo acti5a. $l alcance predeterminado de C@LCKL@3$ es @LL 4todos los registros6. !I? lExpresin1 $specifica que slo los registros que satisfacen la condicin lgica lExpresin1 se incluir"n en el c"lculo. La inclusin de !I? permite incluir registros en el c"lculo de manera condicional, al filtrar los registros no deseados. ?ushmore optimizar" una consulta C@LCKL@3$ ... !I? si lExpresin1 es una expresin optimizable. PMDL$ lExpresin2 $specifica una condicin por la cual los registros se incluyen en el c"lculo siempre y cuando la expresin lgica lExpresin2 d> como resultado 5erdadero 4.3.6. 3I +istaVariables#e!oria $specifica una o 5arias 5ariables donde se almacenan los resultados del c"lculo. =i una 5ariable especificada no existe, isual !oxPro la crear" autom"ticamente con el nombre que usted especifique. 3I @??@O "o!bre#atri$ $specifica el nombre de la matriz donde se pueden almacenar los resultados del c"lculo. =i el nombre de matriz especificado no existe, isual !oxPro crear" autom"ticamente una matriz con este nombre. =i la matriz existe pero no es suficientemente grande para contener todos los resultados, isual !oxPro aumentar" autom"ticamente su tamaSo para dar cabida a la informacin. =i una matriz existente es mayor de lo necesario, los elementos adicionales permanecer"n sin cambios. Los resultados se almacenan en los elementos de la matriz en el orden en que se especifican en el comando C@LCKL@3$. %IIP3DADa$ 7esacti5a la optimizacin ?ushmore de C@LCKL@3$. ,uncin. A-/1nExpresin2 Calcula la media aritm>tica de nExpresin. =lo se incluyen en el resultado los registros que cumplan las condiciones de Alcance y de las cl"usulas opcionales !I? o PMDL$.

C%34 6 7e5uel5e el n#mero de registros de la tabla. =lo se incluyen en el resultado los registros que cumplan las condiciones de Alcance y de las cl"usulas opcionales !I? o PMDL$. MA01eExpresin2 7e5uel5e el 5alor mayor o el m"s reciente de eExpresin. $n la cl"usula A@W4 6 es posible especificar cualquier campo 4Character, 7ate, 7ate3ime, %umeric, !loat, Dnteger, 7ouble o Currency6 o cualquier expresin 5"lida que utilice campos de estos tipos. =lo se incluyen en el resultado los registros que cumplan las condiciones de Alcance y de las cl"usulas opcionales !I? o PMDL$. AD%4eExpresin6 7e5uel5e el 5alor menor o el m"s antiguo de eExpresin. $n eExpresin es posible especificar cualquier campo 4Character, 7ate, 7ate3ime, %umeric, !loat, Dnteger, 7ouble o Currency6 o cualquier expresin 5"lida que utilice campos de estos tipos. =lo se incluyen en el resultado los registros que cumplan las condiciones de Alcance y de las cl"usulas opcionales !I? o PMDL$. N#-1nExpresin17 nExpresin2 =7 nExpresin3>2 Calcula el 5alor neto actual de una serie de flujos de caja futuros descontados a una tasa de inter>s peridica constante. nExpresin1 es la tasa de inter>s expresada como 5alor decimal. nExpresin2 es un campo, expresin de campo o expresin num>rica que representa una serie de flujos de caja. Cada flujo de caja puede ser positi5o o negati5o. $n los casos en que nExpresin2 sea un campo, el 5alor del campo en cada registro de la tabla se considerar" un flujo de caja. nExpresin/ es una in5ersin inicial opcional. =i no se incluye la in5ersin inicial, se supondr" que >sta ocurre al final del primer periodo. $sta in5ersin inicial es el primer registro del campo y es negati5a para representar una retirada de caja. =lo se incluyen en el resultado los registros que cumplan las condiciones de Alcance y de las cl"usulas opcionales !I? o PMDL$. !TD1nExpresin2 Calcula la des5iacin tpica de nExpresin. La des5iacin tpica mide el grado en que los 5alores de los campos o expresiones que utilizan campos difieren del promedio de todos los 5alores. Cuanto menor sea la des5iacin tpica, menos 5aran los 5alores con respecto al promedio. =lo se incluyen en el resultado los registros que cumplan las condiciones de Alcance y de las cl"usulas opcionales !I? o PMDL$. !UM1nExpresin2 Calcula el total de la suma de los 5alores de nExpresin. =lo se incluyen en el resultado los registros que cumplan las condiciones de Alcance y de las cl"usulas opcionales !I? o PMDL$. @?4nExpresin6 Calcula la 5arianza del promedio de nExpresin. Cuanto menor sea la 5arianza, menos 5aran los 5alores con respecto al promedio. =lo se incluyen en el resultado los registros que cumplan las condiciones de Alcance y de las cl"usulas opcionales !I? o PMDL$. Comentarios Los registros que contienen el 5alor nulo no se incluyen en las operaciones que realiza C@LCKL@3$.

,uncin. ,-1 2 7e5uel5e el 5alor futuro de una in5ersin. !inta"is ! 4nPago, n'ipoInter0s, nPeriodos6 Tipos devueltos %umeric Argumentos nPago $specifica el pago peridico constante 4que puede ser negati5o o positi5o6. n'ipoInter0s $specifica el tipo de inter>s peridico. =i el tipo de inter>s es anual pero los pagos son mensuales, di5ida el tipo de inter>s anual entre &'. nPeriodos $specifica el n#mero de periodos durante los que se har"n pagos. ! 4 6 asume que los pagos peridicos se har"n al final de cada periodo. Comentarios

! 4 6 calcula el 5alor futuro de una serie de pagos constantes peridicos que de5engan inter>s compuesto fijo. $l 5alor futuro es el total de todos los pagos m"s los intereses.

,uncin . #-1 2 7e5uel5e el 5alor actual de una in5ersin. !inta"is P 4nPago, n'asaInter0s, nPagos'otal6 Tipos devueltos %umeric Argumentos nPago $specifica la cantidad de pago peridico. nPago puede calificar con un n#mero negati5o o positi5o. P 4 6 da por supuesto que los pagos se realizan al final de cada periodo. "'ipoInter0s $specifica la tasa de inter>s peridico. =i la tasa de inter>s de una in5ersin es anual y los pagos se realizan mensualmente, di5ida la tasa de inter>s anual entre &'. "Pagos'otal $specifica el n#mero total de pagos. Comentarios P 4 6 calcula el 5alor actual como de pagos peridicos iguales a un tipo de inter>s peridico constante.

Comando . !ET DE*ETED $specifica si isual !oxPro procesar" o no los registros marcados para su eliminacin y si est"n disponibles o no para su uso en otros comandos. !inta"is =$3 7$L$3$7 I% [ I!! Argumentos I% $specifica que los comandos que realizan operaciones sobre registros 4incluyendo los registros de las tablas relacionadas6 utilizando un alcance pasan por alto los registros marcados para su eliminacin. I!! 4Predeterminado6 $specifica que a los registros marcados para su eliminacin se puede acceder mediante comandos que operan sobre registros 4incluyendo los registros de las tablas relacionadas6 utilizando un alcance. Comentarios Las consultas que utilizan 7$L$3$74 6 para comprobar el estado de los registros pueden optimizarse utilizando la tecnologa ?ushmore si la tabla est" indexada sobre 7$L$3$74 6. Para obtener m"s informacin sobre la optimizacin de consultas, consulte -7escripcin de la tecnologa ?ushmore. en el captulo &*, Iptimizar aplicaciones, en el #anual del progra!ador. Puede marcar registros para su eliminacin ejecutando 7$L$3$ : =]L o 7$L$3$, o bien eligiendo $liminar registros en el men# 3abla desde una 5entana $xaminar o Aodificar. Puede recuperar registros ejecutando ?$C@LL o eligiendo 7esmarcar registros en el men# 3abla desde una 5entana $xaminar o Aodificar. )mportante =$3 7$L$3$7 se pasa por alto si el alcance predeterminado del comando es el registro actual o si incluye un alcance de un #nico registro. D%7$W y ?$D%7$W siempre pasan por alto =$3 7$L$3$7 e indexan todos los registros de la tabla. =$3 7$L$3$7 tiene como alcance la sesin actual de datos.

Comando . RECA** ]uita la marca de los registros marcados para eliminacin en la tabla seleccionada. !inta"is

?$C@LL XAlcanceY X!I? lExpresin1Y XPMDL$ lExpresin2Y X%IIP3DADa$Y Argumentos Alcance $specifica un inter5alo de registros para quitar las marcas. =olamente se quitan las marcas de los registros incluidos en el inter5alo especificado. Las cl"usulas del alcance son< @LL, %$W3 n.egistros, ?$CI?7 n"!ero.egistro y ?$=3. $l alcance predeterminado de ?$C@LL es el registro actual 4%$W3 &6. !I? lExpresin1 $specifica que solamente se quitan las marcas de los registros para los cuales lExpresin1 da como resultado 5erdadero 4.3.6, lo que le permite filtrar registros no deseados. =i lExpresin1 es una expresin optimizable, ?ushmore optimizar" ?$C@LL !I?. Para obtener un mejor rendimiento, utilice una expresin optimizable en la cl"usula !I?. PMDL$ lExpresin2 $specifica una condicin por la cual se quitan las marcas de los registros siempre y cuando la expresin lExpresin2 d> como resultado 5erdadero 4.3.6. %IIP3DADa$ Dmpide la optimizacin ?ushmore de ?$C@LL. Comentarios ?$C@LL puede utilizarse para recuperar registros, siempre y cuando no se haya ejecutado P@C\ o a@P. #recaucin Kna 5ez que se ha empaquetado el archi5o, todos los registros marcados para eliminacin se pierden para siempre. Puede marcar registros para su eliminacin si ejecuta 7$L$3$ o 7$L$3$ : =]L, o si elige Eliminar registros en el men# Tabla cuando hay una 5entana $xaminar o $ditar acti5a. Puede recuperar registros si ejecuta ?$C@LL o elige Desmarcar registros en el men# Registro cuando hay una 5entana $xaminar o $ditar acti5a.

Comando . ?A# $limina todos los registros de la tabla actual y deja slo la estructura de la tabla. !inta"is a@P XD% n1rea'raba*o [ cAlias'ablaY Argumentos D% n1rea'raba*o $specifica el "rea de trabajo de la tabla cuyos registros se eliminan. D% cAlias'abla $specifica el alias de la tabla en la que se eliminan todos los registros. =i omite n1rea'raba*o y cAlias'abla, se eliminan todos los registros de la tabla situada en el "rea de trabajo seleccionada actualmente. Comentarios $jecutar a@P equi5ale a ejecutar 7$L$3$ @LL seguido de P@C\, pero a@P es mucho m"s r"pido. =i =$3 =@!$3O est" establecido en I%, Aicrosoft isual !oxPro le preguntar" si desea eliminar los registros de la tabla actual. $jecutar a@P no hace que se produzca el desencadenante 7elete. #recaucin Los registros eliminados de la tabla actual no podr"n recuperarse.

Comando . #AC; Vorra definiti5amente todos los registros marcados para eliminar de la tabla actual y reduce el tamaSo de un archi5o memo asociado a una tabla. !inta"is

P@C\ XA$AIY X7V!Y Argumentos A$AI $limina el espacio no utilizado del archi5o memo, pero no elimina los registros marcados para eliminar de la tabla. La informacin de los campos memo se almacena en un archi5o memo asociado. Kn archi5o memo tiene el mismo nombre que la tabla y la extensin .ftp. 7V! $limina de la tabla los registros marcados para eliminacin, pero no afecta al archi5o memo. Comentarios Cuando se ejecuta P@C\, Aicrosoft isual !oxPro copiar" todos los registros que no est"n marcados para borrar a una tabla temporal. Cuando se termine P@C\, isual !oxPro eliminar" la tabla original del disco y cambiar" el nombre de la tabla temporal por el nombre de la tabla original. P@C\ puede interrumpirse presionando esc. @l presionar esc se detiene P@C\, la tabla temporal se borra y la tabla original permanece inalterada. 3ambi>n recuperar" la tabla original si agota el espacio del disco durante un P@C\. Cuando se ejecuta P@C\ sin las cl"usulas A$AI y 7V!, se empaquetan tanto la tabla como el archi5o memo. P@C\ necesita utilizar de forma exclusi5a la tabla. Para obtener m"s informacin sobre la apertura de una tabla de forma exclusi5a en una red, 5ea =$3 $WCLK=D $. =i la tabla acti5a tiene uno o 5arios ndices abiertos, P@C\ regenera los archi5os de ndice. #recaucin 3enga cuidado de marcar solamente los registros que no 5a a necesitar m"s. %o hay ninguna forma de recuperar los registros eliminados despu>s de utilizar P@C\.

Comando . !ET E0C*U!)-E $specifica si isual !oxPro abre los archi5os de tabla para uso exclusi5o o compartido en una red. !inta"is =$3 $WCLK=D $ I% [ I!! Argumentos I% 4$l 5alor predeterminado para la sesin de datos global6 Limita la posibilidad de acceso a una tabla abierta en una red #nicamente al usuario que la abri. La tabla no es accesible para otros usuarios de la red. @ diferencia de !LIC\4 6, =$3 $WCLK=D $ I% impide tambi>n que otros usuarios tengan acceso de slo lectura. 3ambi>n puede abrirse un archi5o en una red para uso exclusi5o incluyendo la cl"usula $WCLK=D $ con el comando K=$. %o es necesario realizar bloqueo de registro o archi5o en una tabla abierta para uso exclusi5o. @l abrir una tabla para uso exclusi5o se asegura de que otros usuarios no podr"n cambiar el archi5o. @lgunos comandos no pueden ejecutarse hasta que se abra una tabla para uso exclusi5o. $stos comandos son D%=$?3, D%=$?3 VL@%\, AI7D!O =3?KC3K?$, P@C\, ?$D%7$W y a@P. I!! 4$l 5alor predeterminado para la sesin de datos pri5ada6 Permite que una tabla abierta en una red se pueda compartir y modificar por cualquier usuario de la red. Comentarios @l cambiar la configuracin de =$3 $WCLK=D $ no cambiar" el estado de las tablas abiertas pre5iamente. Por ejemplo, si una tabla se abre con =$3 $WCLK=D $ I% y =$3 $WCLK=D $ se cambia posteriormente a I!!, la tabla mantendr" su estado de uso exclusi5o. =$3 $WCLK=D $ tiene como alcance la sesin actual de datos.

Comando DO CA!E 555 ENDCA!E $jecuta el primer conjunto de comandos cuya expresin condicional d> como resultado 5erdadero 4.3.6. !inta"is

7I C@=$ C@=$ lExpresin1 Co!andos XC@=$ lExpresin2 Co!andos ... C@=$ lExpresin" Co!andosY XI3M$?PD=$ Co!andosY $%7C@=$ Argumentos C@=$ lExpresin1 Co!andos ... Cuando se encuentre la primera expresin C@=$ 5erdadera 4.3.6, se ejecutar" el conjunto de comandos que haya a continuacin. La ejecucin del conjunto de comandos continuar" hasta encontrar la siguiente expresin C@=$ o $%7C@=$. La ejecucin se reanuda en el comando que hay inmediatamente a continuacin de $%7C@=$. =i una expresin C@=$ es falsa 4.!.6, se pasar" por alto el conjunto de comandos que le siguen hasta la siguiente cl"usula C@=$. =olamente se ejecuta un conjunto de comandos, que ser" aqu>l cuya expresin C@=$ d> como resultado 5erdadero 4.3.6. =e pasan por alto todas las expresiones C@=$ posteriores que sean 5erdaderas 4.3.6. I3M$?PD=$ Co!andos =i todas las expresiones C@=$ dan como resultado falso 4.!.6, I3M$?PD=$ determinar" si se ejecuta otro conjunto de comandos adicional.

=i incluye I3M$?PD=$, se ejecutar" el conjunto de comandos que sigue a I3M$?PD=$ y la ejecucin saltar" al primer comando que hay a continuacin de $%7C@=$. =i omite I3M$?PD=$, la ejecucin saltar" al primer comando que hay a continuacin de $%7C@=$.

Comentarios 7I C@=$ se utiliza para ejecutar un conjunto de comandos de isual !oxPro seg#n el 5alor de una expresin lgica. Cuando se ejecuta 7I C@=$, se e5al#an cada una de las expresiones lgicas sucesi5asE los 5alores de las expresiones determinan el conjunto de comandos que se ejecuta. =e admiten comentarios despu>s de 7I C@=$ y $%7C@=$, si se incluyen en la misma lnea. $stos comentarios se pasan por alto durante la compilacin y ejecucin del programa.

Comando DO '()*E 555 ENDDO

$jecuta un conjunto de comandos dentro de un bucle condicional. !inta"is 7I PMDL$ lExpresin Co!andos XLIIPY X$WD3Y $%77I Argumentos lExpresin $specifica una expresin lgica cuyo 5alor determina si se debe ejecutar el conjunto de comandos incluido entre 7I PMDL$ y $%77I. =iempre que lExpresin d> como resultado 5erdadero 4.3.6, el conjunto de comandos se ejecutar". Co!andos $specifica el conjunto de comandos de isual !oxPro que se ejecutan siempre y cuando lExpresin d> como resultado 5erdadero 4.3.6. LIIP 7e5uel5e el control del programa directamente a 7I PMDL$. LIIP se puede situar en cualquier lugar entre 7I PMDL$ y $%77I. $WD3 3ransfiere el control del programa desde el interior del bucle 7I PMDL$ hasta el primer comando situado detr"s de $%77I. $WD3 puede situarse en cualquier lugar entre 7I PMDL$ y $%77I. Comentarios Kn conjunto de comandos situados entre 7I PMDL$ y $%77I se ejecuta siempre y cuando la expresin lgica iexpLR sea 5erdadera 4.3.6. Kna instruccin 7I PMDL$ debe tener su correspondiente instruccin $%77I. Puede situar comentarios despu>s de 7I PMDL$ y $%77I en la misma lnea. Los comentarios se pasan por alto al compilar y ejecutar el programa.

Comando ,OR 555 END,OR $jecuta un grupo de comandos un n#mero concreto de 5eces. !inta"is !I? "o!breVariable#e!oria B nValorInicial 3I nValor inal X=3$P nIncre!entoY Co!andos X$WD3Y XLIIPY $%7!I? [ %$W3 Argumentos "o!breVariable#e!oria $specifica una 5ariable de memoria o un elemento de matriz que act#a como contador. %o es necesario que exista la 5ariable de memoria o elemento de matriz antes de ejecutar !I? ... $%7!I?. nValorInicial 3I nValor inal

nValorInicial es el 5alor inicial del contador yE nValor inal es el 5alor final del contador. =3$P nIncre!ento nIncre!ento es la cantidad de incremento o decremento del contador. =i nIncre!ento es negati5o, el contador se decrementar". =i omite la cl"usula =3$P, el contador se incrementar" en &. Co!andos $specifica los comandos de isual !oxPro que se 5an a ejecutar. Co!andos puede incluir cualquier n#mero de comandos. $WD3 3ransfiere el control desde dentro del bucle !I? ... $%7!I? al comando que sigue inmediatamente a $%7!I?. Puede situar $WD3 en cualquier parte entre !I? y $%7!I?. LIIP La inclusin de LIIP de5ol5er" el control directamente a la cl"usula !I? sin ejecutar las instrucciones que haya entre LIIP y $%7!I?. $l contador se incrementar" o decrementar" como si se hubiera llegado a $%7!I?. LIIP puede situarse en cualquier parte entre !I? y $%7!I?. Comentarios =e utiliza una 5ariable de memoria o un elemento de matriz como contador para especificar cu"ntas 5eces se ejecutan los comandos de isual !oxPro que hay dentro del bucle !I? ... $%7!I?. Los comandos de isual !oxPro que hay a continuacin de !I? se ejecutan hasta que se llega a $%7!I? o %$W3. $ntonces se incrementa el contador "o!breVariable#e!oria con el 5alor de nIncre!ento. =i omite la cl"usula =3$P, el contador se incrementar" en &. $ntonces se comparar" el contador con el 5alor final nValor inal. =i el contador es inferior o igual al 5alor final nValor inal, 5ol5er"n a ejecutarse los comandos que siguen a la cl"usula !I?. =i el contador es mayor que el 5alor final nValor inal, la ejecucin del programa bifurcar" fuera del bucle !I? ... $%7!I? y continuar" con el primer comando a continuacin de $%7!I? o %$W3. Nota Los 5alores de nValorInicial, nValor inal, y nIncre!ento se leen #nicamente al inicio. =in embargo, cambiar el 5alor del contador "o!breVariable#e!oria dentro del bucle afecta al n#mero de 5eces que se ejecutar" el bucle. =i el 5alor de nIncre!ento es negati5o y el 5alor inicial nValorInicial es mayor que el 5alor final nValor inal, el contador disminuir" cada 5ez que pase el bucle.

$ibliogra @a M!DN *ibrarA -isual !tudio Edicin #ro esional http://www.foxcarlos.8k.com/P115.HTM

+tt",--.o/01i2is0com-1c0dll#3i2i4Fo/Forum3i2i +tt",--1110"ortal.o/0com+tt",--1110c56ersearc+0es+tt",--1110microso.t0com-s"ain

S-ar putea să vă placă și