Está en la página 1de 260

Eurowin 8.

0 SQL

Manual de

GENLIS



Documento: me_genlis
Edicin: 03
Nombre: Manual de Genlis
Fecha: 22-12-2010



Manual de Genlis
1

Tabla de contenidos

1. Introduccin ........................................................................................................................... 8
1.1. Ver grficos, informes y etiquetas ...................................................................................................... 8
1.2. Generar, modificar y borrar grficas .................................................................................................. 9
1.2.1. Borrar grfica ................................................................................................................................ 9
1.2.2. Ver grfica .................................................................................................................................... 9
1.2.3. Crear una nueva grfica ................................................................................................................ 9
1.2.4. Modificar informe y restablecer ..................................................................................................... 9
1.2.5. Asistente para crear nuevas grficas ........................................................................................... 10
1.3. Generar nuevos informes ................................................................................................................. 10
1.3.1. Borrar listado .............................................................................................................................. 10
1.3.2. Ver listado ................................................................................................................................... 10
1.3.3. Crear un nuevo listado ................................................................................................................ 11
1.3.4. Modificar y restablecer informe ................................................................................................... 11
1.3.5. Asistente para crear nuevos listados ........................................................................................... 11
1.4. Generar nuevas etiquetas ................................................................................................................ 12
1.4.1. Borrar etiqueta ............................................................................................................................ 12
1.4.2. Ver etiqueta ................................................................................................................................ 12
1.4.3. Crear una nueva etiqueta ............................................................................................................ 12
1.4.4. Modificar report asociado y restablecerlo .................................................................................... 12
1.4.5. Asistente para crear nuevas etiquetas......................................................................................... 13
1.5. Generar nuevas consultas ................................................................................................................ 13
2. Editor de informes ................................................................................................................ 16
2.1. Planificar la distribucin del informe ................................................................................................ 17
2.1.1. Determinar la distribucin general ............................................................................................... 17
2.1.2. Descripcin de los archivos de distribucin de informes ............................................................. 18
2.1.3. Modificar la distribucin .............................................................................................................. 19
2.1.4. Planificar la ubicacin de los datos ............................................................................................. 20
2.1.5. Agregar controles de informe ...................................................................................................... 21
2.1.6. Agregar controles de campo ...................................................................................................... 22
2.1.7. Agregar controles de etiquetas ................................................................................................... 22
2.1.8. Agregar un campo de tipo general .............................................................................................. 23
2.1.9. Seleccionar, mover y ajustar el tamao de informe ..................................................................... 24
2.1.10. Copiar y eliminar controles de informe ...................................................................................... 25
2.1.11. Alinear controles ....................................................................................................................... 25
2.1.12. Ajustar la posicin del control ................................................................................................... 27
2.1.13. Agrupar datos en la distribucin ............................................................................................... 27


Manual de Genlis
2
2.1.14. Agregar un nico grupo ............................................................................................................ 28
2.1.15. Agrupar mltiples grupos de datos ........................................................................................... 29
2.1.16. Cambiar una banda de grupos ................................................................................................. 30
2.1.17. Alinear una banda de grupo ...................................................................................................... 30
2.1.18. Cambiar el orden de agrupamiento ........................................................................................... 31
2.1.19. Personalizar la distribucin ........................................................................................................ 31
2.1.20. Definir la pgina del informe ...................................................................................................... 32
2.1.21. Dar formato a los controles de campo ...................................................................................... 33
2.1.22. Agregar lneas, rectngulos y crculos ....................................................................................... 35
2.1.23. Agregar una imagen ................................................................................................................. 37
2.1.24. Cambiar el color de los controles .............................................................................................. 38
2.1.25. Agregar un comentario a un control .......................................................................................... 39
2.1.26. Vista e impresin de su informe o etiqueta ................................................................................ 39
2.1.27. Vista de los resultados .............................................................................................................. 39
2.1.28. Imprimir informes ...................................................................................................................... 40
3. SQL (SELECT) ...................................................................................................................... 42
3.1. Sintaxis ............................................................................................................................................. 42
3.2. Argumentos ...................................................................................................................................... 42
3.2.1. Comentarios ............................................................................................................................... 49
4. Instrucciones avanzadas ...................................................................................................... 52
4.1. Conceptos bsicos de programacin .............................................................................................. 52
4.1.1. Almacenar datos: Tipos de datos y campos, contenedores ........................................................ 52
4.1.2. Manipular datos: Operadores, funciones y comandos ................................................................ 54
4.1.2.1. Usar Operadores.................................................................................................................................. 54
4.1.2.2. Usar funciones ..................................................................................................................................... 57
4.1.2.3. Usar comandos ................................................................................................................................... 58
4.1.3. Control del flujo del programa ..................................................................................................... 58
5. Lista de funciones agrupadas por tipo ................................................................................. 62
5.1. Funciones de tipo Character ............................................................................................................ 62
5.2. Funciones de conversin de datos .................................................................................................. 63
5.3. Funciones de fecha y hora ............................................................................................................... 64
5.4. Funciones numricas ....................................................................................................................... 65
5.5. Funciones y comandos ordenados alfabticamente ....................................................................... 66
5.5.1. $ (Operador) ............................................................................................................................... 66
5.5.2. % (Operador) .............................................................................................................................. 67
5.5.3. & (Comando)............................................................................................................................... 67
5.5.4. && (Comando) ............................................................................................................................ 68
5.5.5. * (Comando) ............................................................................................................................... 69
5.5.6. = (Comando) ............................................................................................................................... 69
5.5.7. ABS( ) (Funcin) .......................................................................................................................... 70


Manual de Genlis
3
5.5.8. ACOPY( ) (Funcin) ..................................................................................................................... 70
5.5.9. ACOS( ) (Funcin) ....................................................................................................................... 71
5.5.10. ADEL( ) (Funcin) ...................................................................................................................... 72
5.5.11. AELEMENT( ) (Funcin) ............................................................................................................. 72
5.5.12. AINS( ) (Funcin) ....................................................................................................................... 73
5.5.13. ALEN( ) (Funcin) ...................................................................................................................... 74
5.5.14. ALLTRIM( ) (Funcin) ................................................................................................................. 75
5.5.15. APPEND (Comando) ................................................................................................................. 75
5.5.16. APPEND FROM (Comando) ...................................................................................................... 76
5.5.17. APPEND FROM ARRAY (Comando) ......................................................................................... 81
5.5.18. ASC( ) (Funcin) ........................................................................................................................ 83
5.5.19. ASCAN( ) (Funcin) ................................................................................................................... 84
5.5.20. ASIN( ) (Funcin) ....................................................................................................................... 85
5.5.21. ASORT( ) (Funcin) ................................................................................................................... 85
5.5.22. ASSERT (Comando) ................................................................................................................. 87
5.5.23. ASUBSCRIPT( ) (Funcin) ......................................................................................................... 88
5.5.24. AT( ) (Funcin) ........................................................................................................................... 89
5.5.25. AT_C( ) (Funcin) ...................................................................................................................... 90
5.5.26. ATAN( ) (Funcin) ...................................................................................................................... 91
5.5.27. ATC( ) (Funcin) ........................................................................................................................ 91
5.5.28. ATCC( ) (Funcin) ...................................................................................................................... 92
5.5.29. ATCLINE( ) (Funcin) ................................................................................................................. 93
5.5.30. ATLINE( ) (Funcin) ................................................................................................................... 94
5.5.31. ATN2( ) (Funcin) ...................................................................................................................... 95
5.5.32. AUSED( ) (Funcin) ................................................................................................................... 95
5.5.33. AVERAGE (Comando) ............................................................................................................... 96
5.5.34. BETWEEN( ) (Funcin) .............................................................................................................. 97
5.5.35. BINTOC( ) (Funcin) .................................................................................................................. 98
5.5.36. BITAND( ) (Funcin) ................................................................................................................... 99
5.5.37. BITCLEAR( ) (Funcin) ............................................................................................................. 100
5.5.38. BITLSHIFT( ) (Funcin) ............................................................................................................ 100
5.5.39. BITNOT( ) (Funcin) ................................................................................................................. 101
5.5.40. BITOR( ) (Funcin) ................................................................................................................... 101
5.5.41. BITRSHIFT( ) (Funcin) ............................................................................................................ 102
5.5.42. BITSET( ) (Funcin) ................................................................................................................. 102
5.5.43. BITTEST( ) (Funcin) ............................................................................................................... 103
5.5.44. BITXOR( ) (Funcin) ................................................................................................................. 103
5.5.45. BLANK (Comando) ................................................................................................................. 104
5.5.46. BOF( ) (Funcin) ...................................................................................................................... 105
5.5.47. BROWSE (Comando).............................................................................................................. 106
5.5.48. CD | CHDIR (Comando) .......................................................................................................... 118


Manual de Genlis
4
5.5.49. CDOW( ) (Funcin) .................................................................................................................. 119
5.5.50. CEILING( ) (Funcin) ................................................................................................................ 119
5.5.51. CHR( ) (Funcin) ...................................................................................................................... 120
5.5.52. CHRSAW( ) (Funcin) .............................................................................................................. 120
5.5.53. CHRTRAN( ) (Funcin) ............................................................................................................ 121
5.5.54. CHRTRANC( ) (Funcin) .......................................................................................................... 122
5.5.55. CMONTH( ) (Funcin) .............................................................................................................. 122
5.5.56. COPY FILE (Comando) ........................................................................................................... 123
5.5.57. COPY TO ARRAY (Comando) ................................................................................................. 123
5.5.58. COS( ) (Funcin) ...................................................................................................................... 125
5.5.59. COUNT (Comando) ................................................................................................................ 126
5.5.60. CREATE TABLE - SQL (Comando) ......................................................................................... 127
5.5.61. CTOD( ) (Funcin) ................................................................................................................... 131
5.5.62. CTOBIN( ) (Funcin) ................................................................................................................ 131
5.5.63. CTOT( ) (Funcin) .................................................................................................................... 132
5.5.64. CURDIR( ) (Funcin) ................................................................................................................ 132
5.5.65. DATE( ) (Funcin) .................................................................................................................... 133
5.5.66. DATETIME( ) (Funcin) ............................................................................................................ 133
5.5.67. DAY( ) (Funcin) ...................................................................................................................... 134
5.5.68. DELETE - SQL (Comando) ...................................................................................................... 135
5.5.69. DELETE FILE (Comando) ........................................................................................................ 136
5.5.70. DIRECTORY( ) (Funcin) ......................................................................................................... 136
5.5.71. DO WHILE ... ENDDO (Comando) .......................................................................................... 137
5.5.72. DOW( ) (Funcin) ..................................................................................................................... 138
5.5.73. DTOC( ) (Funcin) ................................................................................................................... 138
5.5.74. DTOR( ) (Funcin) .................................................................................................................... 139
5.5.75. DTOS( ) (Funcin) .................................................................................................................... 140
5.5.76. DTOT( ) (Funcin) .................................................................................................................... 140
5.5.77. EMPTY( ) (Funcin) ................................................................................................................. 141
5.5.78. EOF( ) (Funcin) ...................................................................................................................... 142
5.5.79. ERASE (Comando) ................................................................................................................. 143
5.5.80. EVALUATE( ) (Funcin) ............................................................................................................ 143
5.5.81. EXP( ) (Funcin) ....................................................................................................................... 144
5.5.82. EXPORT (Comando) ............................................................................................................... 144
5.5.83. FCHSIZE( ) (Funcin) ............................................................................................................... 147
5.5.84. FCLOSE( ) (Funcin) ................................................................................................................ 148
5.5.85. FCOUNT( ) (Funcin) ............................................................................................................... 148
5.5.86. FCREATE( ) (Funcin) .............................................................................................................. 149
5.5.87. FDATE( ) (Funcin) .................................................................................................................. 150
5.5.88. FEOF( ) (Funcin) .................................................................................................................... 151
5.5.89. FERROR( ) (Funcin) ............................................................................................................... 151


Manual de Genlis
5
5.5.90. FFLUSH( ) (Funcin) ................................................................................................................ 152
5.5.91. FGETS( ) (Funcin) .................................................................................................................. 153
5.5.92. FILE( ) (Funcin) ...................................................................................................................... 153
5.5.93. FLOOR( ) (Funcin) ................................................................................................................. 154
5.5.94. FOPEN( ) (Funcin).................................................................................................................. 154
5.5.95. FOR ... ENDFOR (Comando) .................................................................................................. 155
5.5.96. FOUND( ) (Funcin) ................................................................................................................. 157
5.5.97. FPUTS( ) (Funcin) .................................................................................................................. 157
5.5.98. FREAD( ) (Funcin) .................................................................................................................. 158
5.5.99. FULLPATH( ) (Funcin) ............................................................................................................ 159
5.5.100. GATHER (Comando) ............................................................................................................. 159
5.5.101. GETDIR( ) (Funcin) ............................................................................................................... 161
5.5.102. GETFILE( ) (Funcin) ............................................................................................................. 161
5.5.103. GETEXPR (Comando) ........................................................................................................... 163
5.5.104. GETPICT( ) (Funcin) ............................................................................................................. 164
5.5.105. GETPRINTER( ) (Funcin) ...................................................................................................... 165
5.5.106. GO | GOTO (Comando) ........................................................................................................ 165
5.5.107. GOMONTH( ) (Funcin) ......................................................................................................... 166
5.5.108. HOUR( ) (Funcin) ................................................................................................................. 167
5.5.109. IF ... ENDIF (Comando) ......................................................................................................... 167
5.5.110. IIF( ) (Funcin) ........................................................................................................................ 168
5.5.111. INDEXSEEK( ) (Funcin) ........................................................................................................ 169
5.5.112. INKEY( ) (Funcin) ................................................................................................................. 170
5.5.113. INLIST( ) (Funcin) ................................................................................................................. 173
5.5.114. INSERT - SQL (Comando) .................................................................................................... 173
5.5.115. INT( ) (Funcin) ...................................................................................................................... 174
5.5.116. ISALPHA( ) (Funcin) ............................................................................................................. 175
5.5.117. ISBLANK( ) (Funcin) ............................................................................................................ 175
5.5.118. ISDIGIT( ) (Funcin) ............................................................................................................... 176
5.5.119. ISEXCLUSIVE( ) (Funcin) ..................................................................................................... 177
5.5.120. ISLOWER( ) (Funcin) ............................................................................................................ 178
5.5.121. ISNULL( ) (Funcin) ............................................................................................................... 178
5.5.122. ISUPPER( ) (Funcin) ............................................................................................................ 179
5.5.123. KEYBOARD (Comando) ........................................................................................................ 179
5.5.124. LABEL (Comando) ................................................................................................................ 180
5.5.125. LEFT( ) (Funcin) ................................................................................................................... 183
5.5.126. LEFTC( ) (Funcin)................................................................................................................. 183
5.5.127. LEN( ) (Funcin) .................................................................................................................... 184
5.5.128. LENC( ) (Funcin) .................................................................................................................. 184
5.5.129. LIKE( ) (Funcin) .................................................................................................................... 185
5.5.130. LIKEC( ) (Funcin) ................................................................................................................. 186


Manual de Genlis
6
5.5.131. LOWER( ) (Funcin) ............................................................................................................... 187
5.5.132. LTRIM( ) (Funcin) ................................................................................................................. 187
5.5.133. MD | MKDIR (Comando) ....................................................................................................... 188
5.5.134. MEMLINES( ) (Funcin) ......................................................................................................... 188
5.5.135. MESSAGEBOX( ) (Funcin) ................................................................................................... 188
5.5.136. MIN( ) (Funcin) ..................................................................................................................... 190
5.5.137. MINUTE( ) (Funcin) .............................................................................................................. 191
5.5.138. MLINE( ) (Funcin) ................................................................................................................. 191
5.5.139. MOD( ) (Funcin) ................................................................................................................... 192
5.5.140. MONTH( ) Function ............................................................................................................... 192
5.5.141. MTON( ) (Funcin) ................................................................................................................. 193
5.5.142. NTOM( ) (Funcin) ................................................................................................................. 194
5.5.143. PACK (Comando) ................................................................................................................. 194
5.5.144. PADL( ) | PADR( ) | PADC( ) (Funciones) ................................................................................ 195
5.5.145. _PAGENO (Variable del sistema) ........................................................................................... 196
5.5.146. PAYMENT( ) (Funcin) ........................................................................................................... 196
5.5.147. PRIVATE (Comando) ............................................................................................................. 197
5.5.148. PROPER( ) (Funcin) ............................................................................................................. 198
5.5.149. PUBLIC (Comando) .............................................................................................................. 198
5.5.150. RAND( ) (Funcin) ................................................................................................................. 199
5.5.151. RAT( ) (Funcin) .................................................................................................................... 199
5.5.152. RATC( ) (Funcin) .................................................................................................................. 200
5.5.153. RATLINE( ) (Funcin) ............................................................................................................. 201
5.5.154. RD | RMDIR (Comando) ........................................................................................................ 202
5.5.155. RECCOUNT( ) (Funcin) ........................................................................................................ 202
5.5.156. RECNO( ) (Funcin) ............................................................................................................... 203
5.5.157. RENAME (Comando) ............................................................................................................ 204
5.5.158. REPLACE (Comando) ........................................................................................................... 204
5.5.159. REPLACE FROM ARRAY (Comando) ................................................................................... 206
5.5.160. REPORT (Comando) ............................................................................................................. 207
5.5.161. RIGHT( ) (Funcin) ................................................................................................................. 210
5.5.162. RIGHTC( ) (Funcin) .............................................................................................................. 211
5.5.163. RLOCK( ) (Funcin) ............................................................................................................... 212
5.5.164. ROUND( ) (Funcin)............................................................................................................... 213
5.5.165. RTOD( ) (Funcin).................................................................................................................. 214
5.5.166. RTRIM( ) (Funcin) ................................................................................................................ 214
5.5.167. SCAN ... ENDSCAN (Comando) ........................................................................................... 215
5.5.168. SCATTER (Comando) ........................................................................................................... 215
5.5.169. SEC( ) Funcin ...................................................................................................................... 217
5.5.170. SECONDS( ) (Funcin) .......................................................................................................... 217
5.5.171. SEEK (Comando) .................................................................................................................. 218


Manual de Genlis
7
5.5.172. SEEK( ) (Funcin) .................................................................................................................. 219
5.5.173. SELECT - SQL (Comando) ................................................................................................... 221
5.5.174. SELECT (Comando) .............................................................................................................. 230
5.5.175. SELECT( ) (Funcin) .............................................................................................................. 231
5.5.176. SIGN( ) (Funcin) ................................................................................................................... 232
5.5.177. SIN( ) (Funcin) ..................................................................................................................... 232
5.5.178. SKIP (Comando) ................................................................................................................... 233
5.5.179. SORT (Comando) ................................................................................................................. 233
5.5.180. SOUNDEX( ) (Funcin) .......................................................................................................... 236
5.5.181. SPACE( ) (Funcin) ................................................................................................................ 237
5.5.182. SQRT( ) (Funcin) .................................................................................................................. 237
5.5.183. STR( ) (Funcin) .................................................................................................................... 238
5.5.184. STRCONV( ) (Funcin) .......................................................................................................... 238
5.5.185. STRTRAN( ) (Funcin) ........................................................................................................... 239
5.5.186. STUFF( ) (Funcin) ................................................................................................................ 240
5.5.187. STUFFC( ) (Funcin) .............................................................................................................. 241
5.5.188. SUBSTR( ) (Funcin) ............................................................................................................. 242
5.5.189. SUBSTRC( ) (Funcin) ........................................................................................................... 243
5.5.190. SUM (Comando) ................................................................................................................... 244
5.5.191. TAN( ) (Funcin) .................................................................................................................... 245
5.5.192. TIME( ) (Funcin) ................................................................................................................... 245
5.5.193. TOTAL (Comando) ................................................................................................................ 246
5.5.194. TRANSFORM( ) (Funcin) ..................................................................................................... 247
5.5.195. TRIM( ) (Funcin) ................................................................................................................... 249
5.5.196. TTOC( ) (Funcin) .................................................................................................................. 249
5.5.197. TTOD( ) (Funcin) .................................................................................................................. 250
5.5.198. TYPE( ) (Funcin) .................................................................................................................. 250
5.5.199. UPPER( ) (Funcin)................................................................................................................ 251
5.5.200. USED( ) (Funcin) .................................................................................................................. 252
5.5.201. VAL( ) (Funcin) ..................................................................................................................... 252
5.5.202. WAIT (Comando) .................................................................................................................. 253
5.5.203. WEEK( ) (Funcin) ................................................................................................................. 254
5.5.204. YEAR( ) (Funcin) .................................................................................................................. 256
6. Limitaciones y observaciones sobre la codificacin de instrucciones ................................ 257




Manual de Genlis
8
1. Introduccin

El generador de listados de Eurowin Genlis proporciona una forma fcil de crear nuevos listados, grficos y
etiquetas en Eurowin.
A los documentos podr agregar formularios que permitirn al usuario final limitar y parametrizar los
resultados (por ejemplo si crea un nuevo modelo de carta para los clientes podr agregar un formulario que
pregunte la poblacin donde deben vivir para que se imprima su carta).
Algunos ejemplos de documentos que se pueden crear son:

1) Un listado de artculos.
2) Cartas para clientes filtrados por actividad.
3) Etiqueta de artculos con cdigo de barras.
4) Carnets para los clientes.
5) Grfica de una evolucin de ventas para un determinado artculo.
6) Y muchos ms.


1.1. Ver grficos, informes y etiquetas

Para saber que grficos, informes, y etiquetas han sido creados y ejecutarlos pulse sobre el icono ver que
aparece en la pantalla principal. Seguidamente le aparecer un rbol donde cada nodo representa uno de
los tres tipos de documentos que se pueden generar desde Genlis:

Listados. (Por ejemplo: Una lista de los clientes de una cierta poblacin)
Milings. (Por ejemplo: Cartas a los clientes o proveedores)
Presupuestos. (Por ejemplo: Un presupuesto personalizado)

Etiquetas. (Por ejemplo: Etiquetas para los artculos)
Carnets. (Por ejemplo: Carnets para los clientes)

Grficas. (Por ejemplo: Evolucin de las ventas para un determinado ejercicio)

Las carpetas agrupan informes, etiquetas, listados u otras carpetas.

Para ver un documento haga clic sobre el nodo hasta que aparezca resaltado con azul, y seguidamente
pulse el botn Ver de la parte inferior derecha. Automticamente le aparecern los datos por pantalla.


Manual de Genlis
9


1.2. Generar, modificar y borrar grficas

Si desea crear, borrar o modificar un grfico pulse sobre el botn Grficos de la pantalla principal, o sobre
la opcin Generador de grficas del men Opciones. Seguidamente le aparecer una nueva patilla con
un rbol con los diferentes documentos que ja han sido creados.
Desde esta patilla podr realizar las mismas acciones que la patilla Ver, ms las opciones ya indicadas.


1.2.1. Borrar grfica

Seleccione la grfica que desee borrar pulsando sobre ella con el ratn hasta que aparezca resaltada y
pulse sobre el botn borrar.

1.2.2. Ver grfica

Seleccione la grfica haciendo clic sobre ella y pulse el botn Ejecutar de la parte inferior. Seguidamente le
aparecer la grfica por pantalla, que podr imprimir, personalizar o exportar a otro programa.

1.2.3. Crear una nueva grfica

Pulsando sobre el botn nueva grfica le aparecer un asistente que le guiar en su construccin. El botn
leer grfica le permitir generar una de nueva basndose en una ya existente.
Para crear una grfica basada en otra, seleccione la que debe hacer de base haciendo clic sobre ella y
pulse sobre el botn leer grfica. Le aparecer el mismo asistente que al crear una de nueva pero con las
opciones ya establecidas.

1.2.4. Modificar informe y restablecer

Los botones Modificar y Restablecer se utilizan en los nodos de tipo listados y etiquetas para realizar los
ltimos retoques a la forma de presentar los datos por impresora o por pantalla.
Si pulsa el botn modificar le aparecer el editor de informes donde podr cambiar los colores, los tipos de
letras, mover elementos, etc. (Para ms informacin consult el apartado de editor de informes). El botn
restablecer le permitir deshacer todos los cambios realizados en un informe desde el momento en que se
cre.


Manual de Genlis
10

1.2.5. Asistente para crear nuevas grficas

El asistente para crear una grfica se divide en 6 pasos. En el primer paso (Inicio) decidiremos si deseamos
que cada vez que visualizamos la grfica aparezca un formulario que nos permita personalizar los datos que
se utilizaran (Por ejemplo si creamos una grfica del beneficio puede hacerse que nos pregunte el ejercicio).
El segundo paso (Consulta Sql) sirve para indicar que datos deben ir a la grfica Aqu escribiremos una
orden SQL o incluso un pequeo programa que extraer la informacin de la base de datos.
En el tercer paso (Editar diseo) decidiremos que campos numricos van al eje Y y cual va al eje X.
El paso cuarto (Seleccionar estilo) podremos indicar que tipo de grfica deseamos de una variada coleccin
(Barras verticales, Tarta, Lneas,..).
En el paso quinto (Personalizar) terminaremos de realizar los ltimos retoques. Indicaremos si la grfica es en
tres dimensiones o en dos, y que barras de herramientas dispondr el usuario final para realizar los ltimos
retoques. Pulsando sobre el botn personalizar podremos indicar los colores, el tipo de letra y otros
parmetros.
En el ltimo paso (Generar grfica) indicaremos el nombre y la carpeta donde queramos que se genere.


1.3. Generar nuevos informes

Para ver que informes ya han sido creados, modificarlos, borrarlos o para crear de nuevos seleccione la
opcin Generador de listados del men Opciones o bien pulse sobre el botn Listados de la pantalla
principal. A continuacin le aparecern todos los documentos organizados en forma de rbol.

1.3.1. Borrar listado

Sitese sobre el listado que desea borrar haciendo clic con el ratn y pulse sobre el botn borrar.
Esta opcin borrar el listado o informe pero no el report asociado. Si desea eliminarlo deber ir al directorio
donde se guardan los reports y borrarlo manualmente. Recuerde que el directorio donde se guardan los
reports viene indicado en el Config.Ini debajo de la entrada [informes].


1.3.2. Ver listado

Seleccione el listado haciendo clic en l y pulse el botn ejecutar. A continuacin le aparecer el resultado
del listado que podr imprimir o visualizar por la pantalla.



Manual de Genlis
11

1.3.3. Crear un nuevo listado

Para generar un listado o documento pulse sobre el botn Nuevo listado que abrir un asistente para la
construccin de nuevos informes. Si lo que desea es crearlo partiendo de uno ja echo seleccione el listado
base y pulse el botn leer grfica para acceder al asistente con las opciones establecidas como el listado
base.


1.3.4. Modificar y restablecer informe

Una vez ha generado un informe podr modificar el report asociado para realizar ajustes, eliminar campos,
moverlos, cambiar los colores o tipo de letra, etc. (Para ms informacin consulte el apartado del editor de
informes). Para editarlo seleccione el informe y pulse sobre el botn Modificar.
En caso que desea deshacer los cambios que se han realizado en un informe desde su creacin pulse el
botn restablecer.


1.3.5. Asistente para crear nuevos listados

Para crear un listado desde el asistente deber recorrer 7 pasos. El primero y el segundo son comunes en
los tres asistentes bsicos. Para empezar (Inicio) indicaremos si cada vez que ejecutamos el informe
deseamos que aparezca un formulario que nos pregunte una serie de parmetros para personalizar los
datos del listado.
El segundo paso (consulta SQL) sirve para indicar que datos deben ir al listado. Aqu escribiremos una orden
SQL o incluso un pequeo programa que extraer la informacin de la base de datos.
En el tercer paso (Cabecera) indicaremos que elementos deseamos aadir en la cabecera (el ttulo, numero
de pgina, etc.).
En el cuarto paso (Pie) eligiremos como deseamos que sea el pie de pgina.
En el quinto (Modelo) indicaremos que formato deseamos utilizar para generar el report: Estndar para
generar listados parecidos a los del Eurowin, Ejecutivo para un estil mas severo, etc..
En el sexto (Personalizar listado) indicaremos que fichero de report se generar y terminaremos de
especificar las caractersticas principales, el numero de columnas o filas, los colores o el tipo de letra,
El ltimo servir para finalizar la creacin del listado y indicar en que lugar del rbol de documentos creados
queremos colocarlo.




Manual de Genlis
12
1.4. Generar nuevas etiquetas

Pulsando sobre el botn Etiquetas de la pantalla principal o sobre la opcin Generar nuevas etiquetas del
men Opciones le aparecer una patilla con sus etiquetas y documentos. Desde aqu podr crear
etiquetas, modificar sus reports asociados, borrarlas, de forma similar que con los listados o grficos.


1.4.1. Borrar etiqueta

Para borrar una etiqueta seleccinela haciendo clic sobre su nombre y a continuacin pulse sobre el botn
borrar.
Igual que en el caso de los listados el report asociado no se borrar. Para eliminarlo deber ir al directorio
donde se guardaran los reports y eliminarlo manualmente. Si no se acuerda cul es el directorio donde se
guardan los reports recuerde que lo puede leer en el fichero Config.Ini debajo de la lnea [informes].


1.4.2. Ver etiqueta

Sitese sobre la etiqueta que desea visualizar haciendo clic sobre ella con el ratn y pulse el botn ejecutar.
A continuacin le aparecer una lista de etiquetas por pantalla que podr imprimir.


1.4.3. Crear una nueva etiqueta

Para activar el asistente de etiquetas pulse sobre el botn nueva etiqueta. El asistente le ir guiando paso
a paso en la generacin de la etiqueta. Para hacer que se base en una ja existente seleccinala y pulse
sobre el botn leer etiqueta. A continuacin dispondr del asistente inicializado con los valores de la
etiqueta.


1.4.4. Modificar report asociado y restablecerlo

Para las etiquetas, igual que con los informes, tambin dispondr de la posibilidad de modificar el report
asociado para eliminar campos, agregar otros, moverlos, cambiar los colores, tipos de letra, etc. (Para ms
informacin consulte el apartado del editor de informes).
Para deshacer los cambios que se han realizado en un informe desde su creacin pulse el botn
restablecer.


Manual de Genlis
13


1.4.5. Asistente para crear nuevas etiquetas

El proceso de creacin de una etiqueta se realiza en seis pasos.
En el primer paso (Inicio), si desea que sus etiquetas puedan ser personalizadas en el momento en que se
ejecuten deber generar un formulario que le pregunte los diferentes valores que condicionan el resultado.
El segundo paso (consulta SQL) sirve para obtener la informacin que aparecer en la etiqueta. Aqu
escribimos una orden SQL o incluso un pequeo programa que extraer la informacin de la base de datos.
Para ms informacin consulte el apartado Generar consulta SQL.
En el siguiente (seleccionar medida) deberemos elegir el alto y ancho de la etiqueta y el numero de etiquetas
que hay en una misma fila.
En el cuarto paso indicaremos la forma como deseamos organizar los campos dentro de la etiqueta. Existen
3 posibilidades, colocados uno al lado de otro, alineados en lnea, o situarlos ms tarde manualmente.
Pulsando sobre el botn Indicar campos y formato podremos tener ms control de la situacin de los
campos, adems de aadir cdigos de barras.
En el quinto (Personalizar etiqueta) indicaremos que fichero de report se generar y podremos detallar las
caractersticas de la etiqueta, colores, tipos de letras, tamao,
El ltimo paso servir para finalizar la creacin de la etiqueta y indicar en que lugar del rbol de documentos
creados queremos colocarlo.


1.5. Generar nuevas consultas

Lo ms importante y difcil en la creacin de un listado, etiqueta o grfico, es decidir que datos queremos
presentar y como poder obtenerlos.
En Genlis debemos escribir ordenes SQL o pequeos programas en fox para poder leer los datos del
servidor. Si no conoce fox o SQL, Genlis proporciona un asistente para construir el cdigo por usted. Puede
activar el asistente desde cualquiera de los generadores.

El asistente se compone de 9 pasos:

En el primero se debe decidir el ejercicio o ao sobre el que se desea obtener los datos. S selecciona el
ejercicio predeterminado el listado afectar a el ao que haya indicado al entrar al entrar al Eurowin o el que
est marcado como preferente. Si indica Seleccionar ejercicio aparecer una lista con todos los aos,
haga clic sobre el deseado para seleccionarlo.

En el segundo paso (seleccionar tablas), deber indicar de que tablas desea extraer los datos. Por ejemplo,
para realizar un listado de clientes con sus telfonos deber buscar en la lista de tablas seleccionables la de
clientes y la de sus telfonos (telf_cli), seleccionarlas haciendo clic sobre sus


Manual de Genlis
14
nombres y pulsar sobre el botn agregar tabla ( ).

En caso de haber seleccionado varias tablas, deber indicar como se relacionan entre si (tercer paso). Por
ejemplo deber indicar que cada telfono pertenece a un cliente, o sea el campo cdigo del cliente es igual
al campo cliente de la tabla telfonos.
Una vez relacionadas las tablas deber indicar que hacer con los registros que no tienen una
correspondencia con la otra tabla.




Marque Solo filas coincidentes para que aparezcan las filas con relacin. (Por ejemplo solo los clientes
que tienen telfono y viceversa).
Seleccione Todas las filas de la tabla izquierda para que aparezcan todos los registros de la tabla
izquierda indistintamente de que tengan correspondencia a la otra tabla. (Por ejemplo todos los clientes
indiferentemente de que tengan o no telfono).
La opcin Todas las filas de la tabla derecha es similar a la anterior, pero al revs. En el caso del
ejemplo no tiene sentido porque se estara pidiendo de que aparezcan todos los telfonos ni que no
pertenezcan a ningn cliente.
La opcin Todas las filas de ambas tablas sirve para indicar que aparezcan todos los registros
indiferentemente de que tengan o no correspondencia a la otra tabla.

En el paso 4 deber indicar que campos desea utilizar en el informe. En caso de que desea obtener
subtotales o totales deber aadir una expresin que lo calcule. El generador de expresiones le ayudar a
crearla por usted.
Para agregar un campo seleccinelo haciendo clic sobre su nombre y pulse sobre el botn agregar 1
campo ( ). Fjese que en la lista de los campos seleccionables aparece solo los campos de las tablas
especificadas en el paso dos. En la parte izquierda del nombre se indica de que tabla se trata, a la derecha
aparece el nombre del campo.
Si desea aadir una expresin calculada deber escribirla en el textbox situado a la parte inferior izquierda y
pulsar el botn aadir expresin ( ). El botn con puntos ( ) activar un asistente que le guiar en la
generacin de la expresin.

El paso 5 sirve para indicar qu condiciones deben cumplir los registros que quiera que aparezcan en el
documento.
Para introducir una condicin debe indicar el campo a comparar, la operacin con que se compara y la
expresin como se indica a la imagen siguiente.



Manual de Genlis
15



Si desea indicar que la condicin no debe ser cierta pulse sobre el botn con la marca de verificacin. Una
vez pulsado la imagen desaparecer indicando que la condicin debe evaluar falso.
A continuacin, pulse sobre el botn Aadir para que la condicin se agregue a la lista de las que deben
evaluarse.
Puede terminar de adaptar el comportamiento de las condiciones seleccionando una de las opciones de la
parte superior:

Los que cumplen todas las condiciones
Los que cumplen alguna condicin
Los que no cumplen ninguna condicin
Los que no cumplen alguna condicin

El paso 6 sirve para indicar con que orden desea que aparezcan los registros. Seleccione el campo con que
desea ordenar y pulse sobre el botn agregar campo. Puede aadir tantos campos como desee, pero no se
recomiendan ms de tres.

El paso 7 sirve para agrupar lneas. Por ejemplo si desea un listado de las unidades que se han vendido de
un artculo un determinado mes deber consultar la tabla de las lneas de albaranes, filtrarla con el mes y
agrupar las lneas por cdigo de artculo.

En el caso de haber seleccionado un orden para los registros, en el penltimo paso (limitar registros) podr
indicar si desea obtener un subconjunto del resultado de la consulta, o obtener todo el conjunto. Por
ejemplo si construye un listado para ver los diez artculos con mas benefici podra indicar que solo desea
los diez primeros registros del resultado.
Por defecto se recogen todos los registros, para cambiarlo pulse sobre la opcin tamao del subconjunto
y indique el numero o porcentaje de registros.




Si el tamao del conjunto quiera que sea en % pulse sobre porcentaje de registros sino sobre numero de
registros.
El ltimo paso (generar consulta) sirve para que Genlis cree el cdigo para obtener la informacin. En este
paso puede indicar los ltimos detalles, como es omitir registros repetidos para no incluir los registros que
tienen la misma informacin.
En caso de que no haya escrito otras consultas SQL o otro cdigo recuerde marcar la casilla Generar
como grupo de consultas para no perderlo.




Manual de Genlis
16
2. Editor de informes

Los informes y etiquetas proporcionan un modo flexible de mostrar y resumir datos en un documento
impreso. Los informes tienen dos componentes bsicos: un origen de los datos y una distribucin. El origen
de los datos suele ser el resultado de una consulta (una serie de cursores). Las consultas filtran, ordenan y
agrupan datos de la base de datos y la distribucin del informe define el formato impreso de los informes.
Una vez definida una consulta, podr crear informes o etiquetas.
En este captulo se trata lo siguiente:
Planificar la distribucin del informe
Crear la distribucin de un informe
Modificar la distribucin
Agregar controles a informes
Agrupar datos en la distribucin
Personalizar la distribucin
Presentacin preliminar e impresin del informe o etiqueta





Manual de Genlis
17
2.1. Planificar la distribucin del informe

Puede disear un informe de forma que muestre sus datos de varias formas en la pgina impresa. Utilizando
el Editor de informes puede disear listas completas, resmenes o subconjuntos especiales de datos. El
diseo de un informe tiene cuatro etapas principales:
1. Determinar el tipo de informe que va a crear.
2. Crear el archivo que contenga la distribucin del informe.
3. Modificar y personalizar el archivo de distribucin.
4. Efectuar la presentacin preliminar e impresin del informe.

El proceso de creacin de un informe




2.1.1. Determinar la distribucin general

Antes de crear un informe, decida el formato general que desea que ste tenga. Su informe puede ser tan
simple como una lista de telfonos basada en una sola tabla, o tan complejo como una factura basada en
mltiples tablas. Puede crear tambin tipos especiales de informes. Por ejemplo, una etiqueta postal es un
informe especial con una distribucin especfica y para un tipo de papel especial.

Distribuciones generales para informes



Manual de Genlis
18



Para ayudarle a elegir una distribucin, a continuacin se presentan algunas descripciones de distribuciones
generales de informes, sus usos comunes y ejemplos.

Tipo de distribucin. Descripcin. Ejemplos
Columna. Un registro por fila con campos dispuestos horizontalmente a lo ancho de la pgina.
Ejemplos: Informe de grupos/totales, Informes financieros, Inventario, Resumen de ventas.

Fila. Una columna de registros con campos dispuestos verticalmente uno bajo el otro.
Ejemplos: Listas uno a varios, Un registro o una relacin uno a varios, Facturas, Estado de cuentas.

Multi-columna. Ms de una columna de registros con campos dispuestos verticalmente hacia abajo en
margen izquierdo.
Ejemplos: Listn telefnico, Tarjetas de visita.

Etiqueta . Ms de una columna de registros con campos dispuestos verticalmente hacia abajo en el margen
izquierdo; impreso en papel especial.
Ejemplos: Etiquetas postales, Etiquetas de nombres.

Despus de seleccionar la distribucin general del informe que convenga a sus necesidades, puede crear el
archivo de distribucin del informe con el Editor de informes.


2.1.2. Descripcin de los archivos de distribucin de informes

El archivo de distribucin de informes, que tiene una extensin .FRX, almacena las especificaciones del
informe. Cada archivo de informe tiene tambin asociado un archivo con extensin .FRT. El archivo de
informe especifica los campos que usted quiere incluir, el texto que desea imprimir y la colocacin de la
informacin en la pgina. Para obtener la informacin desde su base de datos hasta la pgina impresa,
imprima el archivo de informe. El archivo no almacena los valores de cada uno de los campos de datos, sino
slo la informacin de colocacin y formato correspondiente a ese informe. Los valores pueden cambiar
cada vez que se ejecuta el informe, dependiendo de los cambios que hayan ocurrido en los campos del
origen de datos usado por el archivo de informe.


Manual de Genlis
19

2.1.3. Modificar la distribucin

Una vez se ha indicado el origen de datos (la consulta) para un listado o etiqueta pulsando el botn
personalizar de la patilla personalizar podr adaptar la distribucin propuesta automticamente con el
editor de informes.
En las bandas del Editor de informes, puede insertar ciertos tipos de controles que contienen las etiquetas,
campos, variables y expresiones que desea incluir en el informe impreso. Por ejemplo, en un listn telefnico
podra colocar controles de campo para los nombres y nmeros de telfono, as como controles de etiqueta
y encabezados de columna al principio de la lista. Para mejorar la apariencia visual del informe y hacerlo ms
legible, puede agregar otros controles como lneas, rectngulos y rectngulos redondeados. Puede incluir
tambin controles dependientes de una imagen u objeto OLE. Cada uno de estos controles se muestra en
la siguiente ilustracin.

Archivo de distribucin del informe e informe resultante




Puede abrir su informe o etiqueta en el Editor de informes para modificar y personalizar su distribucin.

Para modificar una etiqueta o un informe generado

1) Pulse sobre uno de los iconos, Generar etiqueta, Generar listado.
2) Elija el informe o etiqueta que desea modificar pulsando sobre el.
3) Pulse el botn modificar

Utilice las bandas del informe para determinar cmo desea que sea cada pgina, grupo y el comienzo y fin
de su informe. Las bandas del informe se pueden cambiar de tamao. En estas bandas, agregue controles


Manual de Genlis
20
de informe y luego muvalos, cpielos, cmbielos de tamao, alinelos y ajstelos para organizar el texto y
los campos de su informe.


2.1.4. Planificar la ubicacin de los datos

Una vez que tenga una distribucin de informe, puede modificar la ubicacin de los datos en la pgina del
informe. Utilizando las bandas del Editor de informes, puede controlar en qu posicin de la pgina se
imprimirn los datos. Su distribucin de informe puede tener varias bandas. La ilustracin siguiente muestra
algunas de las bandas que un informe puede incluir, as como el contenido tpico para cada una de ellas.
Fjese que la barra situada debajo de cada banda identifica la banda.

Bandas de informe en el Editor de informes




Un informe puede tener tambin mltiples bandas de grupo o bandas para encabezados y pies de columna.
Puede agregar esas bandas usando los procedimientos descritos en las secciones Definir la pgina de
informe y Agrupar datos en su distribucin, ms adelante en este mismo captulo. Puede utilizar la tabla
siguiente para determinar qu bandas quiere utilizar.




Manual de Genlis
21
Bandas de informe en el editor de informes
Use esta banda Para imprimir Use este comando
Ttulo Una vez por informe En el men Informe, elija Ttulo/Resumen
Encabezado de pgina Una vez por pgina Disponible de forma predeterminada
Encabezado de columna Una vez por columna
En el men Archivo, elija Preparar pgina e introduzca
un nmero de columna mayor que uno
Encabezado de grupo Una vez por grupo En el men Informe, elija Agrupar datos
Banda Detalle Una vez por registro Disponible de forma predeterminada
Pie de grupo Una vez por grupo En el men Informe, elija Agrupar datos
Pie de columna Una vez por columna
Elija Preparar pgina en el men Archivo e introduzca
un nmero de columna mayor que uno
Pie de pgina Una vez por pgina Disponible de forma predeterminada
Resumen Una vez por informe En el men Informe, elija Ttulo/Resumen


Puede situar cualquiera de los controles de informe en cualquiera de las bandas.

Cambiar el tamao de las bandas

Puede modificar el tamao y las caractersticas de cada banda.

Para cambiar el tamao de una banda
1) Arrastre la barra de la banda hasta la altura apropiada.
2) Utilice la regla de la izquierda como gua. La medida de la regla le indica la altura de esa banda sin
incluir los mrgenes de la pgina.

Sugerencia. No puede hacer una banda menor que la altura ocupada por los controles en la distribucin.
Puede mover los controles dentro de la banda y si lo desea, reducir su altura.


2.1.5. Agregar controles de informe

Puede insertar los siguientes tipos de controles de informe en las presentaciones de informe y etiqueta.

Agregar controles de informe
Para mostrar Elija este control
Campos de tabla, variables y otras expresiones Campo
Texto Etiqueta
Lneas rectas Rectngulo
Crculos, ovales, cuadros con bordes redondeados Rectngulo redondeado
Bitmaps o campos generales Imagen / OLE dependiente




Manual de Genlis
22
Despus de situar estos controles, puede cambiar las opciones de formato, tamao, color, posicin e
impresin. Tambin puede agregar un comentario a cada control para referencia nicamente; no se imprime
en el informe.


2.1.6. Agregar controles de campo

Su informe o etiqueta puede incluir controles de campo que representen valores de campos de tabla,
variables y clculos.

Para agregar campos de tabla desde la barra de herramientas

1) Desde la barra de herramientas Controles de informe, inserte un control Campo.
2) En el cuadro de dilogo Expresin de informe, elija el botn con tres puntos que hay despus del
cuadro Expresin.
3) En el cuadro Campos, haga doble clic en el nombre del campo deseado.
Los nombres de la tabla y del campo aparecern en el cuadro Expresin para campo del informe.
Nota. Si el cuadro Campos est vaco, agregue una tabla o vista al entorno de datos.
No tiene que mantener el alias de nombre de la tabla en la expresin. Puede eliminarlo o puede
desactivar las opciones del Generador de expresiones.
4) Elija Aceptar.
5) En el cuadro de dilogo Expresin de informe, elija Aceptar.

Para obtener ms informacin, consulte Agregar un comentario a un control ms adelante en este captulo.


2.1.7. Agregar controles de etiquetas

Los controles de etiqueta son los caracteres de texto literal que quiere que aparezcan en el informe. Por
ejemplo, la etiqueta Total general identifica el contenido de un control de campo que contiene una
expresin de total.

Para agregar un control de etiqueta

1) En la barra de herramientas Controles de informes, elija el botn Etiqueta.
2) En el Editor de informes, haga clic para situar el control.
3) Escriba los caracteres para la etiqueta.
Puede modificar el control como si estuviera en un editor de textos. Use la tecla ENTRAR para
agregar lneas o el men Edicin para cortar, copiar y pegar texto.


Manual de Genlis
23

Para modificar un control de etiqueta

1) En el Editor de informes, elija el botn Etiqueta y haga clic en la etiqueta que quiere modificar.
2) Escriba los cambios.

Despus de colocar el texto, puede cambiar la fuente y los colores. Para obtener ms informacin al
respecto, consulte las secciones Cambiar fuentes y Cambiar los colores del control ms adelante en este
captulo.


2.1.8. Agregar un campo de tipo general

Puede insertar en su informe un campo general que contenga objetos OLE.

Para insertar un campo general

1) En el Editor de informes, agregue un control Imagen/Control OLE dependiente.
2) En el rea Origen de la imagen, seleccione Campo.
Cuadro de dilogo Imagen para informe




3) En el cuadro Campo, escriba un nombre de campo.


Manual de Genlis
24
O bien, Elija el botn con tres puntos para seleccionar un campo o una variable.

4) Elija Aceptar.
El marcador de posicin para el campo de tipo General aparecer en el marco definido. De forma
predeterminada, la imagen conserva su tamao original.


2.1.9. Seleccionar, mover y ajustar el tamao de informe

Si cre una distribucin de informe que ya tiene controles, puede cambiar la colocacin y el tamao de los
mismos. Puede cambiar cada control individualmente o puede seleccionar un grupo de ellos y tratarlos
como una unidad.

Para mover un control
Seleccione el control y arrstrelo hasta la nueva posicin en una banda de informe.
El control se mueve en incrementos hasta su posicin en la distribucin. Los incrementos estn basados en
la configuracin de la cuadrcula. Para anular la cuadrcula, presione la tecla CTRL mientras arrastra el
control.

Para seleccionar varios controles
Arrastre para dibujar un cuadro de seleccin alrededor de los controles deseados.
Aparecern los controladores de seleccin alrededor de cada control. Mientras estn seleccionados puede
moverlos, copiarlos o eliminarlos como un grupo.

Puede asociar un grupo de controles para realizar varias tareas identificndolos como un grupo. Por
ejemplo, puede querer asociar un control de etiqueta y un control de campo con cualquier otro de forma
que pueda moverlos sin seleccionarlos por separado. Esta caracterstica tambin es til despus de haber
dado formato y alineado los controles, porque conserva sus posiciones con respecto a los dems.

Para agrupar controles adyacentes
1) Seleccione los controles que quiera tratar como un grupo.
2) En el men Formato, elija Agrupar.

Los controladores de seleccin se trasladarn al nuevo contorno que engloba al grupo entero. Puede tratar
el grupo de controles como una unidad.

Para desagrupar un grupo de controles
1) Seleccione el grupo de controles.
2) En el men Formato, elija Desagrupar.

Aparecern controladores de seleccin alrededor de cada uno de los controles que estaban en el grupo.



Manual de Genlis
25
Una vez que un control est en la presentacin, puede cambiar su tamao individualmente o puede ajustar
el tamao de un grupo de controles para que coincida en todos. Puede ajustar el tamao de cualquier
control de informe excepto las etiquetas; su tamao lo determinan el texto, la fuente y su tamao en puntos.

Para cambiar el tamao de un control
Seleccione el control y, a continuacin, arrastre uno de los controladores de seleccin hasta conseguir el
tamao deseado.

Para cambiar el tamao de varios controles
1) Seleccione los controles que quiere que tengan el mismo tamao.
2) En el men Formato, elija Tamao.
3) Elija la opcin adecuada para ajustar el ancho, la altura o el tamao.

Los controles ajustan el tamao de acuerdo con la opcin seleccionada.


2.1.10. Copiar y eliminar controles de informe

Puede copiar y eliminar cualquiera de los controles de la distribucin de forma individual o como un grupo.

Para copiar controles
1) Seleccione los controles.
2) En el men Edicin, elija Copiar y, a continuacin, Pegar.
Una copia de los controles seleccionados aparecer debajo del conjunto original.
3) Arrastre la copia hacia su posicin en la distribucin.

Para eliminar controles
1) Seleccione los controles.
2) En el men Edicin, elija Cortar o presione la tecla SUPR.


2.1.11. Alinear controles

Puede alinear controles unos con respecto a otros o bien puede situarlos tomando como referencia la
cuadrcula que proporciona el Editor de informes. Puede alinear los controles por un extremo o por el centro.

Para alinear controles entre s
1) Seleccione los controles que desea alinear.
2) En el men Formato, elija Alinear.


Manual de Genlis
26
3) En el submen, elija la opcin de alineacin apropiada. Genlis utiliza como control de referencia el
control cuyo borde es el ms cercano a la direccin que eligi; los dems controles se alinearn
respecto a ste.

Puede utilizar tambin la barra de herramientas Distribucin. Usando esta barra de herramientas, puede
alinear con respecto al control ms alejado del lado que ha seleccionado si mantiene presionada la tecla
CTRL mientras hace clic en el botn de alineacin que desee.

Herramienta de alineacin a la izquierda




Debe alinear los controles por un lado que todos los controles seleccionados tengan disponible y alejado de
los dems. Los controles que estn en una fila y se seleccionan para alinearse por su lado derecho, o el
izquierdo, se apilarn unos encima de otros. De igual modo, los controles que estn en una lnea vertical, y
seleccionados para alinearse con respecto a la parte superior o inferior, se solaparn.

Para centrar controles dentro de una banda
1) Seleccione los controles que desee alinear.
2) En el men Formato, elija Alinear.
3) En el submen, elija Centrar verticalmente o Centrar horizontalmente.

Los controles se mueven hacia el centro horizontal o vertical de su respectiva banda.




Manual de Genlis
27
2.1.12. Ajustar la posicin del control

Puede colocar un control en una posicin especifica de la pgina del informe utilizando la barra de estado o
la cuadrcula. De forma predeterminada, los controles se ajustan automticamente a la posicin ms
cercana de la cuadrcula. Puede elegir desactivar la caracterstica de ajuste automtico y mostrar u ocultar
las lneas de cuadrcula. Las lneas de cuadrcula pueden ayudarle a colocar los controles en la distribucin.

Para colocar un control en una posicin especfica
1) En el men Ver, elija Mostrar posicin.
2) Seleccione el control y mueva el control al lugar deseado usando la informacin sobre su posicin
que aparece en la barra de estado.


Para alinear controles manualmente
1) En el men Formato, desactive Forzar a la cuadrcula.

Para mostrar las lneas de cuadrcula
1) En el men Ver, elija Lneas de cuadrcula.

Aparecer una cuadrcula en las bandas del informe.

Para cambiar la medida de la cuadrcula
1) En el men Formato, elija Configurar cuadrcula.
2) En el cuadro de dilogo Configurar cuadrcula, introduzca el nmero de pixeles para el ancho
(horizontal) y la altura (vertical) de cada cuadrado de la cuadrcula.


2.1.13. Agrupar datos en la distribucin

Despus de disear la distribucin bsica, podra decidir que agrupar los registros por ciertos campos u
otros criterios hara el informe ms fcil de leer. Puede agregar uno o varios grupos, cambiar el orden de los
grupos, repetir encabezados de grupo, o cambiar o eliminar bandas de grupos. La agrupacin le permite
separar grupos de registros visualmente y mostrar datos introductorios y de resumen para cada grupo. El
cambio de grupo se basa en una expresin de agrupamiento. Esta expresin suele estar basada en uno o
ms campos de tabla, pero puede ser tan compleja como quiera.
Cuando tiene grupos, su distribucin de informe tiene bandas Encabezado de grupo y Pie de grupo, a las
cuales puede luego agregar controles. Normalmente, las bandas Encabezado de grupo contienen el control
de campo para el campo utilizado para el grupo. Es posible agregar lneas, rectngulos, rectngulos
redondeados o cualquier etiqueta que quiera que aparezca delante del primer registro en un grupo. Los pies
de grupo suelen contener totales de grupo y otra informacin de resumen para el grupo.

Tambin puede especificar otras opciones para los grupos:


Manual de Genlis
28
- Imprimir texto en los encabezados y pies de pgina para identificar grupos especficos
- Imprimir cada grupo en una pgina nueva
- Restablecer los nmeros de pgina cuando los grupos se impriman en una nueva pgina

Si el origen de datos es una tabla, probablemente los registros no estn en el orden de agrupacin
adecuado. Sin embargo, puede ordenar los datos correctamente estableciendo un ndice en la tabla,
usando una presentacin del entorno de datos o usando una consulta como origen de datos para mostrar
los registros en grupos. La distribucin del informe no actualiza el orden ni ordena los datos, sino que
procesa los registros en el mismo orden en el que estn en el origen de datos. El orden y la ordenacin
deben realizarse con una vista, un ndice u otra forma de manipulacin de datos fuera de la distribucin.
Por ejemplo, si se produce un cambio de grupo en el campo Regin, cada vez que el informe procese un
valor de una regin diferente se producir un grupo. Sin embargo, eso no significa que un pas al comienzo
de la tabla debera ordenarse junto con el grupo del mismo pas en el final de la tabla.


2.1.14. Agregar un nico grupo

Un informe de un nico grupo tiene un nivel de datos agrupados en base a una expresin que usted
introduce. Por ejemplo, puede basar un grupo en el campo Pas para imprimir juntos todos los registros del
mismo pas. El origen de datos se debe ordenar con respecto a ese campo.

Para agregar un grupo
1) En el men Informe, elija Agrupar datos.




2) En el primer cuadro Grupo, escriba la expresin de grupo. O bien, Elija el botn con tres puntos
para crear una expresin en el Generador de expresiones.
3) En el rea Propiedades de grupo, seleccione las propiedades que desee.


Manual de Genlis
29
4) Elija Aceptar.

Despus de agregar la expresin, puede colocar los controles que desee en las bandas. Normalmente, el
control de campo utilizado para los agrupamientos se traslada desde la banda Detalle hasta la banda
Encabezado de grupo.


2.1.15. Agrupar mltiples grupos de datos

Puede definir un mximo de 20 niveles de agrupacin de datos en un informe. Los grupos anidados son
muy tiles para organizar datos y totalizar expresiones en diferentes niveles.
Para elegir en qu nivel colocar una agrupacin, estime con qu frecuencia podra cambiar el valor. Luego
defina como el primero el grupo que cambiar ms a menudo. Por ejemplo, su informe podra necesitar una
agrupacin por regiones y otra agrupacin por ciudades. Los valores de un campo Ciudad cambian ms
que los valores de un campo Regin; por lo tanto, la ciudad debera ser la primera de los dos grupos y la
regin debera ser la segunda. En este informe de mltiples grupos, la tabla se debe ordenar o indexar sobre
una expresin clave, como Regin+Ciudad.

Para agregar mltiples grupos
1) En el men Informe, elija Agrupar datos.




2) En el primer cuadro Grupo, escriba la expresin de grupo. O bien, Elija el botn con tres puntos
para crear una expresin en el Generador de expresiones.
3) En el rea Propiedades de grupo, elija las propiedades que desee.
4) Elija Insertar y repita los pasos 2 y 3 para cada expresin de agrupamiento.
5) Elija Aceptar.



Manual de Genlis
30
Los grupos estn numerados, en la lista Agrupar datos, en el orden en el que se crearon. En el Editor de
informes, los nombres de las bandas de grupo contienen los nmeros de grupo y una expresin de grupo
truncada. Los encabezados y pies de grupo con el nmero ms bajo se muestran ms cerca de la banda
Detalle.


2.1.16. Cambiar una banda de grupos

Es posible cambiar la expresin de grupo y las opciones de impresin de grupo.

Para modificar una banda de grupo
1) En el men Informe, elija Agrupar datos.
2) En el cuadro de dilogo Agrupar datos, seleccione la expresin de grupo que desea cambiar.
3) Introduzca la nueva expresin. O bien, elija el botn con tres puntos para cambiar la expresin en el
Generador de expresiones.
4) Cambie las opciones de agrupamiento como sea necesario.



5) Elija Aceptar.
6) En el cuadro de dilogo Agrupar datos, elija Aceptar.


2.1.17. Alinear una banda de grupo

Si ya no necesita un determinado grupo en su distribucin de informe, puede quitarlo.

Para eliminar una banda de grupo
1) En el men Informe, elija Agrupar datos.
2) Seleccione el grupo que quiera eliminar.
3) Elija Eliminar.

La banda de grupo desaparece de la distribucin. Si la banda de grupo contiene controles, se le preguntar
si desea eliminar tambin los controles.




Manual de Genlis
31
2.1.18. Cambiar el orden de agrupamiento

Puede cambiar el orden de los grupos en un informe una vez definidos. Cuando los grupos se reordenan,
todos los controles definidos en una banda de grupo se mueven a la nueva posicin. Reordenar los grupos
no cambia ningn control definido previamente. Si los cuadros o las lneas se han situado respecto a la parte
superior o inferior de una banda de grupo, permanecern acoplados a esa banda.

Para cambiar el orden de los grupos
1) En el men Informe, elija Agrupar datos.
2) Elija el botn de movimiento situado a la izquierda del grupo que quiera mover y arrstrelo hasta su
nueva posicin.


2.1.19. Personalizar la distribucin

Cuando cree una distribucin de informe, puede personalizarla. Las distribuciones creadas con el Asistente
para informes e Informe rpido ya se han personalizado en base a las elecciones que hizo mientras creaba
la distribucin. Por ejemplo, el Asistente para etiquetas postales personaliza la configuracin de la pgina
agregando columnas y estableciendo el tamao del papel. Puede adems personalizar la distribucin y
cambiar la configuracin actual con el Editor de informes.

Herramientas para personalizar la distribucin del informe



Puede cambiar el entorno de datos, la configuracin de la pgina o los controles de informe. El entorno de
datos define el origen de los datos a incluir en el informe, la configuracin de la pgina define la apariencia


Manual de Genlis
32
general de la pgina y de las bandas del informe, y los controles de informe definen los elementos que
aparecern en la pgina.


2.1.20. Definir la pgina del informe

Cuando planifica un informe, normalmente tiene una idea sobre cul ser la apariencia de la pgina. Por
ejemplo, conoce los mrgenes, el tipo de papel y la distribucin que desea. Esta seccin describe la
configuracin de los mrgenes, la orientacin de la pgina y la altura de las bandas de la pgina del informe.

Establecer el margen, el tamao del papel y la orientacin

Puede establecer el margen izquierdo, el tamao del papel y la orientacin para el informe, as como la
anchura de columnas y el espacio entre columnas para un informe con varias columnas. En este contexto,
la palabra columnas se refiere al nmero de registros que se imprimen a lo ancho de la pgina, no al
nmero de campos de un nico registro. El Editor de informes no muestra esa configuracin. Slo muestra
el rea comprendida entre los mrgenes que contienen un registro en una columna de la pgina. Adems, si
su informe tiene columnas y cambia el margen izquierdo, el ancho de la columna cambiar de forma
automtica para acomodarse al nuevo margen.
Si cambia la configuracin del tamao del papel y la orientacin, asegrese de que la orientacin es correcta
para el tamao de papel seleccionado. Por ejemplo, si selecciona un sobre, la orientacin debera
establecerse como Horizontal.

Para establecer el margen izquierdo
1) En el men Archivo, elija Especificar impresora.






Manual de Genlis
33
2) En el cuadro Margen izquierdo, introduzca un valor para el margen.
La imagen de la pgina cambiar para mostrar el nuevo margen.
3) Para seleccionar un tamao de papel, elija Preparar pgina.
4) En el cuadro de dilogo Preparar pgina, seleccione un tamao de pgina en la lista Tamao.
5) Para seleccionar la orientacin del papel, elija una orientacin en el rea Orientacin y, a
continuacin, elija Aceptar.
6) En el cuadro de dilogo Preparar pgina, elija Aceptar.


Definir el encabezado y el pie de pgina

Los controles ubicados en las bandas Encabezado o Pie de pgina aparecen una vez en cada pgina del
informe. Un informe que tenga muchas pginas debera incluir el nombre del informe, el nmero de pgina,
la fecha y las etiquetas (si es apropiado) en un encabezado o pie.

Definir la banda Detalle

Tpicamente, los controles situados en banda Detalle se imprimen una vez para cada registro.

Agregar las bandas Ttulo y Resumen

La banda Ttulo contiene informacin que se imprime una sola vez al principio del informe y la banda
Resumen contiene informacin que se imprime una sola vez al final del informe. Tanto el ttulo como el
resumen pueden estar en su propia pgina. Campos con expresiones de totalizacin se convertirn en
totales generales cuando se ubiquen en la banda Resumen.

Para agregar una banda Ttulo o Resumen
1) En el men Informe, elija Ttulo/Resumen.
2) Elija las bandas que desee.
3) Si quiere que la banda aparezca en su propia pgina, elija Nueva pgina.
4) Elija Aceptar.
El Editor de informes mostrar las nuevas bandas.


2.1.21. Dar formato a los controles de campo

Despus de insertar un control de campo, puede cambiar el tipo de datos y el formato de impresin del
control. Los tipos de datos pueden ser Carcter, Numrico, o Fecha. Cada uno de estos tipos tiene sus
propias opciones de formato, incluyendo la opcin de crear sus propias plantillas de formato. El formato
determina cmo se muestra el campo cuando se imprime el informe o la etiqueta.


Manual de Genlis
34
Normalmente, podra convertir todo el resultado alfabtico a maysculas, insertar comas o puntos decimales
en el resultado numrico, mostrar el resultado numrico en formato de moneda, o convertir un formato de
fecha a otro.

Definir formatos de control de campo

Puede elegir entre diversas opciones de formato para cada tipo de datos.

Para dar formato a un control de campo
1) Haga doble clic en el control Campo.
2) En el cuadro de dilogo Expresin de informe, elija el botn con tres puntos que hay despus del
cuadro Formato.
3) En el cuadro de dilogo Formato, seleccione el tipo de dato para el campo: Carcter, Numrico o
Fecha.
El rea Opciones de edicin muestra las opciones de formato disponibles para ese tipo de datos.
Nota. Este tipo de datos se aplica slo al control de informe. En l se refleja el tipo de datos de la
expresin y no cambia el tipo de datos del campo en la tabla.

4) Seleccione las opciones de justificacin y formato que desee.

El cuadro de dilogo Formato muestra diferentes opciones dependiendo del tipo de datos elegido. Puede
crear tambin una plantilla de formato mediante la introduccin de ciertos caracteres en el cuadro de
dilogo Formato.

Justificar texto en un campo
Puede justificar el contenido de un campo dentro del control. Esto no cambia la posicin del control en el
informe, slo el contenido del control.

Para justificar texto en un control de campo
1) Seleccione los controles que quiere cambiar.
2) En el men Formato, elija Alinear texto.
3) En el submen, elija el comando adecuado.

Para justificar texto en un campo
1) Haga doble clic en el control Campo.
2) En el cuadro de dilogo Expresin de informe, elija el botn con tres puntos que hay despus del
cuadro Formato.



Manual de Genlis
35



3) En el cuadro de dilogo Formato, seleccione el tipo de datos para el campo: Carcter, Numrico o
Fecha.
4) Seleccione las opciones de justificacin y formato que desee.

Cambiar fuentes

Puede cambiar la fuente y el tamao del texto para cada campo o control de etiqueta, o bien puede cambiar
la fuente predeterminada para el informe.

Para cambiar las fuentes y su tamao en un informe
1) Seleccione el control.
2) En el men Formato, elija Fuente.
Aparecer el cuadro de dilogo Fuente.
3) Seleccione la fuente apropiada y su tamao en puntos. A continuacin, elija Aceptar.

Para cambiar la fuente predeterminada
1) En el men Informe, elija Fuente predeterminada.
2) En el cuadro de dilogo Fuente, seleccione la fuente apropiada y el tamao en puntos que quiera
usar como predeterminado. Luego elija Aceptar.
Los controles que inserte reflejarn la nueva configuracin de fuente.


2.1.22. Agregar lneas, rectngulos y crculos

Las lneas, rectngulos y crculos, aaden un inters visual a la distribucin de su diseo. Puede usarlos para
separar o destacar partes del informe.

Dibujar lneas


Manual de Genlis
36

Puede agregar lneas verticales y horizontales a su informe con el control Lnea. A menudo, es posible que
quiera lneas entre los detalles contenidos en el cuerpo del informe y la informacin del encabezado y el pie.

Para dibujar una lnea

1) En la barra de herramientas Controles de informe, elija el botn Lnea.
2) En el Editor de informes, arrastre el mouse para ajustar el tamao de lnea.

Despus de dibujar la lnea, puede moverla, ajustar su tamao, o cambiar su grosor y color. Para ver ms
informacin al respecto, consulte la seccin Cambiar el estilo o el grosor de lnea de este captulo.

Dibujar rectngulos

Puede dibujar rectngulos en su distribucin para organizar visualmente la informacin que se imprime en la
pgina. Puede utilizarlos como bordes alrededor de los controles y bandas del informe, o tambin como
bordes para toda la pgina.

Para dibujar un rectngulo

1) En la barra de herramientas Controles de informe, elija el botn Rectngulo.
2) En el Editor de informes arrastre el mouse para ajustar el tamao del rectngulo.

Dibujar rectngulos redondeados y crculos

Puede dibujar crculos o rectngulos con varios tipos de esquinas redondeadas.

Para dibujar un rectngulo o un crculo

1) En la barra de herramientas Controles de informe, elija el botn Rectngulo redondeado.
2) En el Editor de informes, arrastre para ajustar el tamao del control.
3) Haga doble clic en el control.



Manual de Genlis
37



4) En el rea Estilo, elija el estilo de esquina que desee.
5) Si es apropiado, establezca las opciones de posicin.
6) Elija Aceptar.

Cambiar el estilo o el grosor de lnea

Puede cambiar el grosor de las lneas usadas para trazar lneas horizontales y verticales, rectngulos y
rectngulos redondeados hasta un ancho de 6 puntos. Tambin puede cambiar el estilo de la lnea, desde
una lnea de puntos hasta una combinacin de lneas y puntos.

Para cambiar el tamao o el estilo de la lnea
1) Seleccione el control de lnea, rectngulo o rectngulo redondeado que quiere cambiar.
2) En el men Formato, elija Borde.
3) En el submen, seleccione el tamao o el estilo apropiado.


2.1.23. Agregar una imagen

Puede insertar una imagen como parte de un informe. Por ejemplo, el logotipo de una compaa puede
aparecer en el encabezado de pgina de una factura. Las imgenes procedentes de un archivo son
estticas, es decir, no cambian con cada registro o grupo de registros. Si quiere cambiar la presentacin
dependiendo del registro, inserte un campo general en su lugar.

Para agregar una imagen


Manual de Genlis
38

1) En la barra de herramientas Controles de informe, elija el botn Imagen/Control OLE dependiente.
2) En el Editor de informes, arrastre para ajustar el tamao de la imagen.




3) En el rea Origen de la imagen, elija Archivo.
4) En el cuadro Archivo, escriba la ubicacin del archivo. O bien, Elija el botn con tres puntos para
seleccionar un archivo del tipo .BMP o .ICO.
5) Si es apropiado, ajuste el tamao, la posicin o las opciones de impresin.
6) Elija Aceptar.


2.1.24. Cambiar el color de los controles

Puede cambiar el color de un campo, etiqueta, lnea o rectngulo.


Para cambiar colores
1) Seleccione los controles cuyo color desea cambiar.
2) En la barra de herramientas Paleta de colores, elija Color de primer plano o Color de fondo.
3) Elija el color que desee.




Manual de Genlis
39
2.1.25. Agregar un comentario a un control

Mientras crea o cambia un control, puede querer incluir una descripcin. El cuadro de dilogo de cada
control ofrece un cuadro de comentario. Esos comentarios se guardan con el archivo de distribucin, pero
no aparecen en el informe o la etiqueta impresos.

Para agregar un comentario a un control
1) Haga doble clic en el control.
2) Introduzca el comentario en el cuadro Comentario del cuadro de dilogo del control.
3) Elija Aceptar.


2.1.26. Vista e impresin de su informe o etiqueta

Despus de comenzar la distribucin de su informe o etiqueta, puede hacer una presentacin preliminar de
su trabajo o bien imprimir un informe o etiqueta. Puede hacer una presentacin preliminar en cualquier
momento mientras est personalizando la distribucin.

2.1.27. Vista de los resultados

Haciendo una vista previa de un informe podr ver cmo queda en la pgina sin necesidad de imprimirlo
antes. Por ejemplo, puede comprobar la alineacin y el espaciado de las columnas de datos o ver si el
informe est devolviendo los datos que desea. Tiene dos opciones: ver una pgina entera o hacer zoom
para acercar una parte de una pgina del informe.
La ventana Vista previa tiene su propia barra de herramientas, con botones que pueden llevarle de una
pgina a otra del informe.

Precaucin Si aparece la pregunta Desea guardar los cambios en su archivo?, es que ha seleccionado
no slo cerrar la ventana Vista previa, sino tambin el archivo de distribucin. Puede seleccionar el botn
Cancelar para regresar a la presentacin preliminar o el botn Guardar para guardar sus cambios y cerrar el
archivo. Si selecciona No, los cambios realizados en la distribucin no se guardarn.

Para hacer una vista previa de su distribucin
1) En el men Ver, elija Vista previa.



Manual de Genlis
40



2) En la barra de herramientas Vista preliminar, elija Pgina anterior o Pgina siguiente para cambiar de
pgina.
3) Para cambiar el tamao de la imagen del informe, elija Zoom.
4) Para imprimir el informe, elija Imprimir.
5) Para volver al modo de diseo, elija Cerrar presentacin preliminar.


2.1.28. Imprimir informes

El archivo de distribucin de informe o de etiquetas creado mediante el Editor de informes es un entorno
que da formato a los datos en una agradable presentacin para imprimir. Procesa los registros en el orden
en que aparecen en el origen de datos. Si usa directamente los datos desde una tabla, los datos no se
ordenarn para los grupos que puede haber en la distribucin. Antes de imprimir un archivo de informe,
deber asegurarse de que el origen de datos se ordenar y que dicho orden es el apropiado. Si la tabla
forma parte de una base de datos, cree una vista y agrguela al entorno de datos del informe. La vista
ordenar los datos por usted. Si el origen de datos es una tabla libre, puede crear y ejecutar una consulta
que use el informe como su destino.

Para imprimir un informe
1) En el men Archivo, elija Imprimir.



Manual de Genlis
41



2) Elija Aceptar.

Nota. Si el entorno de datos no est establecido, el cuadro de dilogo Abrir aparecer con una lista de
tablas entre las cuales puede elegir.
Genlis enviar el informe a la impresora.





Manual de Genlis
42
3. SQL (SELECT)

Esta instruccin sirve para recupera datos de una o ms tablas.

3.1. Sintaxis

SELECT [ALL | DISTINCT] [TOP nExpresin [PERCENT]]
[Alias.] Elemento_Seleccin [AS Nombre_Columna]
[, [Alias.] Elemento_Seleccin [AS Nombre_Columna] ...]
FROM [FORCE]
[NombreBaseDatos!]Tabla [Local_Alias]
[[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN
NombreBaseDatos!]Tabla [Alias_Local]
[ON CondicinCombinacin ]
[PREFERENCE NombrePreferencia]
[WHERE CondicinCombinacin [AND CondicinCombinacin ...]
[AND | OR CondicinFiltro [AND | OR CondicinFiltro ...]]]
[GROUP BY ColumnaGrupo [, ColumnaGrupo ...]]
[HAVING CondicinFiltro]
[UNION [ALL] SELECTCommand]
[ORDER BY Elemento_Orden [ASC | DESC] [, Elemento_Orden [ASC | DESC] ...]
[INTO CURSOR Cur_Destino]]


3.2. Argumentos

SELECT Especifica los campos, constantes y expresiones que se mostrarn en el resultado de la consulta.

ALL De forma predeterminada, se muestran todas las filas del resultado de la consulta.

DISTINCT Excluye duplicados de cualquier fila del resultado de la consulta.

Nota. Puede utilizar DISTINCT nicamente una vez por clusula SELECT.

TOP nExpresin [PERCENT]. Especifica que el resultado de la consulta contenga un nmero determinado
de filas o un porcentaje de filas en el resultado de la consulta. Es necesario incluir una clusula ORDER BY si
incluye la clusula TOP. La clusula ORDER BY especifica las columnas en las que la clusula TOP
determinar el nmero de filas que se va a incluir en el resultado de la consulta.



Manual de Genlis
43
Puede especificar desde 1 a 32,767 filas. Las filas de valores idnticos para las columnas especificadas en
la clusula ORDER BY se incluyen en el resultado de la consulta. A partir de entonces, si especifica 10 para
nExpr, el resultado de la consulta podr obtener ms de 10 filas si hay ms de 10 filas con valores idnticos
para las columnas especificadas en la clusula ORDER BY.

Si se incluye la palabra clave PERCENT, se redondear al nmero entero ms alto el nmero de columnas
devuelto en el resultado. Los valores permitidos para nExpr cuando se incluye la palabra clave PERCENT
son 0.01 a 99.99.

ALIAS. Califica nombres de elementos coincidentes. Cada elemento que especifique con
Elemento_Seleccin genera una columna de los resultados de la consulta. Si dos o ms elementos tienen el
mismo nombre, incluya el alias de la tabla y un punto antes del nombre del elemento para impedir la
duplicacin de las columnas.

ELEMENTO_SELECCIN especifica un elemento a incluir en el resultado de la consulta. Un elemento puede
ser uno de los siguientes:

El nombre de un campo de una tabla de la clusula FROM.
Una constante especificando que el mismo valor constante ha de aparecer en cada fila del
resultado de la consulta.

AS Nombre_Columna Especifica el ttulo de una columna en el resultado de la consulta. Esta opcin resulta
muy til cuando Elemento_Seleccin es una expresin o contiene una funcin de campo y desea dar un
nombre significativo a la columna. Nombre_Columna puede ser una expresin pero no puede contener
caracteres (por ejemplo, espacios) que no estn permitidos para nombres de campos de tablas.

FROM Enumera las tablas que contienen los datos que obtuvo la consulta. Si no hay ninguna tabla abierta,
Genlis mostrar el cuadro de dilogo Abrir para permitirle especificar la ubicacin del archivo. Una vez
abierta, la tabla permanecer abierta cuando la consulta se haya terminado.

FORCE Especifica que las tablas se combinarn en el orden de aparicin en la clusula FROM. Si se omite
FORCE, Genlis intentar optimizar la consulta. Sin embargo, es posible que la consulta se ejecute ms
rpido si se incluye la palabra clave FORCE para desactivar la optimizacin de consultas de Genlis.

NombreBaseDatos! Especifica el nombre de una base de datos inactiva que contiene la tabla. Es necesario
incluir el nombre de la base de datos que contiene la tabla en caso de que no sea la base de datos activa.
Incluya el delimitador de signo de exclamacin (!) despus del nombre de la base de datos y antes del
nombre de la tabla.

Alias_Local Especifica un nombre temporal para la tabla indicada en Tabla. Si especifica un alias local,
debe utilizar el alias local en lugar de la tabla a travs de todo el SELECT.

INNER JOIN Especifica que el resultado de la consulta contenga slo filas para una tabla con la que
coincidan una o varias filas en otra tabla.


Manual de Genlis
44

LEFT [OUTER] JOIN Especifica que el resultado de la consulta contenga todas las filas de la tabla a la
izquierda de la palabra clave JOIN y slo las filas que concuerden procedentes de la tabla a la derecha de la
palabra clave JOIN. La palabra clave OUTER es opcional; se puede incluir para resaltar que se ha creado
una combinacin externa.

RIGHT [OUTER] JOIN Especifica que el resultado de la consulta contenga todas las filas desde la tabla
hasta la derecha de la palabra clave JOIN y slo las filas que concuerden desde la tabla hasta la izquierda
de la palabra clave JOIN. La palabra clave OUTER es opcional; puede incluirse para resaltar la creacin de
una combinacin externa.

FULL [OUTER] JOIN Especifica que el resultado de la consulta contenga todas las filas, concuerden o no,
de ambas tablas. La palabra clave OUTER es opcional; se puede incluir para resaltar que se ha creado una
combinacin externa.

ON CondicinCombinacin Especifica las columnas segn las cuales se combinan las tablas.

INTO Destino Determina donde se almacenan los resultados de la consulta. Si incluye una clusula INTO y
una clusula TO en la misma consulta, la clusula TO se pasar por alto. Los resultados de la consulta
pueden dirigirse tambin a la impresora o a un archivo mediante la clusula TO.

CURSOR NombreCursor [NOFILTER], que almacena los resultados de la consulta en un cursor. Si
especifica el nombre de una tabla abierta, Genlis generar un mensaje de error. Despus de que se ejecute
SELECT, el cursor temporal permanecer abierto y estar activo pero solamente para lectura. Una vez que
cierre este cursor temporal, se borrar. Los cursores pueden existir como un archivo temporal en la unidad
SORTWORK.

WHERE Indica a Genlis que incluya nicamente ciertos registros en el resultado de la consulta. WHERE es
necesario para recuperar datos de varias tablas.

CondicinCombinacin especifica los campos que vinculan las tablas de la clusula FROM. Si incluye ms
de una tabla en una consulta, deber especificar una condicin de combinacin para cada tabla despus de
la primera.

Las condiciones de combinacin mltiple deben conectarse mediante el operador AND. Cada condicin de
combinacin tiene la forma siguiente:

NombreCampo1 Comparacin NombreCampo2

NombreCampo1 es el nombre de un campo de una tabla, NombreCampo2 es el nombre de un campo de
otra tabla y Comparacin es uno de los operadores siguientes:

Operador Comparacin
= Igual


Manual de Genlis
45
== Exactamente igual
LIKE SQL LIKE
<>, !=, # Distinto de
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que


La clusula WHERE acepta el operador ESCAPE para la CondicinCombinacin, lo que le permite realizar
consultas significativas sobre datos que contengan caracteres comodn _ y % de SELECT - SQL.

La clusula ESCAPE le permite especificar que se traten los caracteres comodn de SELECT - SQL como si
fueran caracteres literales. En la clusula ESCAPE se especifica un carcter, el cual, cuando se sita
inmediatamente antes del carcter comodn, indica que se tratar al carcter comodn como a un carcter
literal.

CondicinFiltro Especifica los criterios que deben cumplir los registros para que se incluyan en el resultado
de la consulta. Una consulta puede incluir tantas condiciones de filtro como se deseen, conectadas con el
operador AND y OR. Tambin puede utilizar el operador NOT para invertir el valor de una expresin lgica o
utilizar EMPTY( ) para comprobar si un campo est vaco.

CondicinFiltro puede presentar una de estas formas:

Ejemplo 1

En el Ejemplo 1 se muestra la CondicinFiltro de NombreCampo1 Comparacin NombreCampo2

customer.cust_id = orders.cust_id

Ejemplo 2

En el Ejemplo 2 se muestra CondicinFiltro de NombreCampo Comparacin Expresin

payments.amount >= 1000

Ejemplo 3

En el Ejemplo 3 se muestra CondicinFiltro de NombreCampo Comparacin ALL (Subconsulta)

Cuando la condicin de filtro incluye ALL, el campo debe cumplir la condicin de comparacin para todos
los valores generados por la subconsulta antes de que se incluya el registro en el resultado de la consulta.

company < ALL ;
(SELECT company FROM customer WHERE country = "Reino Unido")


Manual de Genlis
46



Ejemplo 4

En el Ejemplo 4 se muestra CondicinFiltro de NombreCampo Comparacin ANY | SOME (Subconsulta)

Cuando la condicin de filtro incluye ANY o SOME, el campo debe cumplir la condicin de comparacin en
al menos uno de los valores generados por la subconsulta.

company < ANY ;
(SELECT company FROM customer WHERE country = "Reino Unido")

Ejemplo 5

En el Ejemplo 5 se muestra CondicinFiltro de NombreCampo [NOT] BETWEEN Inicio_Rango AND
Fin_Rango

Este ejemplo comprueba si los valores del campo estn dentro de un intervalo de valores especificado.

customer.postalcode BETWEEN 90000 AND 99999

Ejemplo 6

En el Ejemplo 6 se muestra CondicinFiltro de [NOT] EXISTS (Subconsulta)

Este ejemplo comprueba si al menos una lnea cumple los criterios de la subconsulta. Cuando la condicin
de filtro incluye EXISTS, la condicin de filtro se evala como verdadera (.T.) a no ser que la subconsulta sea
un conjunto vaco.

EXISTS ;
(SELECT * FROM orders WHERE customer.postalcode =
orders.postalcode)

Ejemplo 7

En el Ejemplo 7 se muestra CondicinFiltro de NombreCampo [NOT] IN Conjunto_Valor

Cuando una condicin de filtro incluye IN, el campo debe contener uno de los valores antes de que el
registro se incluya en los resultados de la consulta.

customer.postalcode NOT IN ("98052","98072","98034")

Ejemplo 8


Manual de Genlis
47

En el Ejemplo 8 se muestra CondicinFiltro de NombreCampo [NOT] IN (Subconsulta)

Aqu, el campo debe contener uno de los valores devueltos por la subconsulta antes de que su registro se
incluya en los resultados de la consulta.

customer.cust_id IN ;
(SELECT orders.cust_id FROM orders WHERE orders.city="Seattle")

Ejemplo 9

En el Ejemplo 9 se muestra CondicinFiltro de NombreCampo [NOT] LIKE cExpresin

customer.country NOT LIKE "Reino Unido"

Esta condicin de filtro busca cada uno de los campos que coinciden con cExpresin.

Puede utilizar el signo de porcentaje (%) y subrayado ( _ ) como parte de cExpresin. El signo de porcentaje
representa a cualquier secuencia de caracteres desconocidos en la cadena. El subrayado representa un
solo carcter desconocido en la cadena.

GROUP BY ColumnaGrupo [, ColumnaGrupo ...] Agrupa las filas de la consulta basndose en los valores
de una o ms columnas. ColumnaGrupo puede ser el nombre de un campo normal de una tabla, o un
campo que incluya una funcin de campo SQL, o una expresin numrica indicando la posicin de la
columna en la tabla resultado (la columna ms a la izquierda tiene el nmero 1).

HAVING CondicinFiltro Especifica una condicin de filtro que los grupos deben satisfacer para quedar
incluidos en el resultado de la consulta. HAVING debe utilizarse con GROUP BY. Puede incluir tantas
condiciones de filtro como se deseen, conectadas con el operador AND u OR. Tambin puede utilizar NOT
para invertir el valor de una expresin lgica.

CondicinFiltro no puede contener una subconsulta.

Una clusula HAVING sin una clusula GROUP BY acta como una clusula WHERE. Puede utilizar alias
locales y funciones de campo en la clusula HAVING. Utilice una clusula WHERE para acelerar el
rendimiento si su clusula HAVING no contiene funciones de campo. No olvide que la clusula HAVING
debera de aparecer antes de una clusula INTO porque, de lo contrario, se producir un error de sintaxis.

[UNION [ALL] ComandoSELECT] Combina el resultado final de una SELECT con el resultado final de otra
SELECT. De forma predeterminada, UNION comprueba el resultado combinado y elimina las filas
duplicadas. Puede utilizar parntesis para combinar mltiples clusulas UNION.

Utilice la palabra clave opcional ALL para impedir que UNION elimine filas duplicadas de los resultados
combinados.


Manual de Genlis
48

Las clusulas UNION siguen las reglas siguientes:
No puede utilizar UNION para combinar subconsultas.
La salida de ambos SELECT debe tener el mismo nmero de columnas.
Cada columna de los resultados de la consulta de un SELECT debe tener el mismo tipo de dato y
anchura que su columna correspondiente en el otro SELECT.
nicamente el SELECT final puede tener una clusula ORDER BY, que debe referirse a las
columnas de salida por su nmero. Si se incluye otra clusula ORDER BY, afectar al resultado
completo.

Tambin puede usar la clusula UNION para simular una combinacin externa.

Cuando combina dos tablas en una consulta, solamente se incluyen en la salida los registros que tengan
valores coincidentes en los campos de combinacin. Si un registro de la tabla primaria no tiene un registro
correspondiente en la tabla secundaria, el registro de la tabla primaria no se incluye en la salida. Una
combinacin externa le permite incluir todos los registros de la tabla primaria en la salida, junto con los
registros coincidentes de la tabla secundaria. Para crear una combinacin externa en Genlis, necesita utilizar
un comando SELECT anidado, como en el siguiente ejemplo:

SELECT customer.company, orders.order_id, orders.emp_id ;
FROM customer, orders ;
WHERE customer.cust_id = orders.cust_id ;
UNION ;
SELECT customer.company, " ", " " ;
FROM customer ;
WHERE customer.cust_id NOT IN ;
(SELECT orders.cust_id FROM orders)

Nota. Asegrese de incluir el espacio que aparece justo delante de cada punto y coma. De lo contrario,
recibir un error.

La seccin del comando situada antes de la clusula UNION selecciona los registros de ambas tablas que
contienen valores coincidentes. Las empresas cliente que no tengan facturas asociadas no se incluyen. La
seccin del comando situada tras la clusula UNION selecciona los registros de la tabla customer que no
tienen registros coincidentes en la tabla orders.

En lo que respecta a la segunda seccin del comando, observe lo siguiente:

La instruccin SELECT incluida entre parntesis se procesa en primer lugar. Esta instruccin da
como resultado una seleccin de todos los nmeros de clientes de la tabla orders.
La clusula WHERE busca todos los nmeros de cliente de la tabla customer que no estn en la
tabla orders. Puesto que la primera seccin del comando proporcion todas las empresas que
tenan un nmero de cliente en la tabla orders, todas las empresas de la tabla customer estn
incluidas en los resultados de la consulta.


Manual de Genlis
49
Puesto que las estructuras de las tablas incluidas en UNION deben ser idnticas, hay dos
marcadores de posicin en la segunda instruccin SELECT para representar orders.order_id y
orders.emp_id de la primera instruccin SELECT.

Nota. Los marcadores de posicin deben ser del mismo tipo que los campos que representan. Si el campo
es de tipo Date, el marcador de posicin deber ser { / / }. Si el campo es de tipo Character, el marcador de
posicin deber ser la cadena vaca ("").

ORDER BY Elemento_Orden Ordena el resultado de la consulta basndose en los datos de una o varias
columnas. Cada Elemento_Orden debe corresponder a una columna del resultado de la consulta, y puede
ser uno de los siguientes:

Un campo de una tabla FROM que tambin es un elemento de seleccin en la clusula principal
SELECT (no en una subconsulta).
Una expresin numrica que indica la ubicacin de la columna en la tabla resultante. (La columna
de la izquierda es la nmero 1.)

ASC Especifica un orden ascendente para los resultados de la consulta, de acuerdo con el elemento o los
elementos de orden, y es el valor predeterminado para ORDER BY.

DESC Especifica un orden descendente para los resultados de la consulta.

Los resultados de la consulta aparecern desordenados si no especifica un orden con ORDER BY.


3.2.1. Comentarios

Una subconsulta, a la que se hace referencia en los argumentos siguientes, es un comando SELECT dentro
de otro SELECT y debe incluirse entre parntesis. Puede tener mltiples subconsultas al mismo nivel (no
anidadas) en la clusula WHERE (consulte esta seccin de los argumentos). Las subconsultas pueden
contener mltiples condiciones de combinacin.

Cuando se obtiene el resultado de una consulta, las columnas se denominarn segn las siguientes reglas:

- Si un elemento seleccionado es un campo con un nombre nico, el nombre de la columna de
resultado es el nombre del campo.

- Si hay ms de un elemento seleccionado con el mismo nombre, se aadirn un signo de subrayado
y una letra al nombre de la columna. Por ejemplo, si una tabla llamada Cliente tiene un campo
llamado CALLE, y una tabla llamada Empleados tambin tiene un campo llamado CALLE, las
columnas de resultado se llamarn Extensin_A y Extensin_B (CALLE _A y CALLE _B). En el caso
de un elemento seleccionado con un nombre de 10 caracteres, se truncar el nombre para aadir el
smbolo de subrayado y la letra. Por ejemplo, DEPARTMENT se convertira en DEPARTME_A.


Manual de Genlis
50

- Si un elemento seleccionado es una expresin, su columna de resultado se llamar EXP_A.
Cualquier otra expresin recibir el nombre de EXP_B, EXP_C, y as sucesivamente.

- Si un elemento seleccionado contiene una funcin de campo como, por ejemplo, COUNT( ), la
columna de resultado se llamar CNT_A. Si otro elemento seleccionado contiene SUM( ), su
columna de resultado se llamar SUM_B.

Funciones definidas por el usuario con SELECT aunque la utilizacin de funciones definidas por el usuario
en la clusula SELECT ofrece unas ventajas evidentes, tambin debera tener en cuenta las siguientes
limitaciones:

Las siguientes funciones de campo estn disponibles para ser utilizadas con un elemento seleccionado que
sea un campo o una expresin que implique a un campo:
- AVG(Elemento_Seleccin), que realiza una media de una columna de datos numricos.
- COUNT(Elemento_Seleccin), que cuenta el nmero de elementos seleccionados en una columna.
COUNT(*) cuenta el nmero de filas en el resultado de la consulta.
- MIN(Elemento_Seleccin) determina el menor valor de Elemento_Seleccin en una columna.
- MAX(Elemento_Seleccin) determina el mayor valor de Elemento_Seleccin en una columna.
- SUM(Elemento_Seleccin) que proporciona el total de la suma de una columna de datos numricos.

No se pueden probar las funciones de campo.

Combinaciones Genlis acepta sintaxis de combinacin de 1992 SQL ANSI, lo que le permite crear consultas
que vinculen las filas en dos o ms tablas mediante la comparacin de los valores de campos especificados.
Por ejemplo, una combinacin interna selecciona filas procedentes de dos tablas slo cuando los valores de
los campos combinados son iguales. Genlis admite combinaciones anidadas.

Dado que SQL se basa en la teora de conjuntos matemtica, se puede representar a cada tabla con un
crculo. La clusula ON que especifica las condiciones de la combinacin determina el punto de
interseccin, el cual representa el conjunto de filas que coinciden. En el caso de una combinacin interna, la
interseccin tendr lugar en el interior o en una parte interna de los dos crculos. Una combinacin externa
incluye tanto las filas coincidentes que se han encontrado en la seccin de interseccin interna de las tablas,
como las filas de la parte externa del crculo a la izquierda, o a la derecha, de la interseccin.

Importante. Tenga presente la siguiente informacin a la hora de crear condiciones de combinacin:

- Si incluye dos tablas en una consulta y no especifica una condicin de combinacin, cada registro
de la primera tabla se combinar con cada registro de la segunda tabla hasta que surtan efecto las
condiciones del filtro. Una consulta tal puede producir unos resultados interminables.

- Sea prudente al utilizar, en condiciones de combinacin, funciones tales como DELETED( ), EOF( ),
FOUND( ), RECCOUNT( ), y RECNO( ), que aceptan un rea de trabajo o un alias opcional. La
inclusin de un alias o de un rea de trabajo en dichas funciones puede producir resultados


Manual de Genlis
51
inesperados. SELECT no utiliza sus reas de trabajo; realiza lo equivalente a USE ... AGAIN. Las
consultas de una nica tabla que utilizan estas funciones sin un rea de trabajo o un alias opcional,
tendrn resultados correctos. De todas formas, las consultas de varias tablas que utilicen dichas
funciones (incluso sin un rea de trabajo o un alias opcional) pueden tener resultados inesperados.

- Sea prudente al combinar tablas que contengan campos vacos porque Genlis concuerda campos
vacos. Por ejemplo, si combina CUSTOMER.ZIP e INVOICE.ZIP, y CUSTOMER contiene 100
cdigos postales vacos e INVOICE contiene 400 cdigos postales vacos, el resultado de la
consulta contendr 40.000 registros ms, como resultado de los campos vacos. Use la funcin
EMPTY( ) para eliminar los registros vacos del resultado de la consulta.




Manual de Genlis
52
4. Instrucciones avanzadas

En esta seccin se describe brevemente el tipo de programas que se puede realizar para recuperar los
datos (Recuerde que adems de las instrucciones SQL puede escribir programas realizados con la sintaxis
de Visual Foxpro con ciertas limitaciones).

Conceptos bsicos de programacin
o Almacenar datos: Tipos de datos y campos, contenedores
o Manipular datos: Operadores, funciones y comandos
o Control de flujo
o Lista de funciones agrupadas por tipo
Funciones ordenadas alfabticamente de la A-Z
Limitaciones y observaciones sobre la codificacin de instrucciones


4.1. 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.


4.1.1. Almacenar datos: Tipos de datos y campos, contenedores

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 Genlis.
Genlis aporta numerosos contenedores de almacenamiento con el fin de ampliar su capacidad para
manipular fcilmente 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 nmeros, pero no puede multiplicar caracteres. Puede imprimir
caracteres en maysculas, pero no puede imprimir nmeros en maysculas. En la tabla siguiente se
muestran algunos de los principales tipos de datos de Genlis.
Todos los datos de Genlis tienen un tipo, como una descripcin de los valores permitidos, y el intervalo y
tamao de los valores. Cuando haya especificado el tipo de datos que est usando, Genlis puede
almacenar y manipular los datos de forma eficaz.


Manual de Genlis
53
Las variables y las matrices contienen un subconjunto de los tipos de datos disponibles de Genlis. Los tipos
de datos adicionales slo estn disponibles para campos de la tabla. Para agregar un campo de un tipo
especfico a una tabla mediante programacin, especifique el tipo de campo con una letra.
Puede especificar el tipo de datos que se almacena en cada campo de una tabla cuando crea la tabla. El
tipo de datos de una variable o un elemento de matriz est determinado por el valor almacenado en la
variable o elemento de matriz. La tabla siguiente muestra los tipos de datos de Genlis.

Tipos de datos de Genlis
Tipo de dato Descripcin Tamao Intervalo
Character Cualquier texto
1 byte por carcter
hasta 254
Cualquier carcter
Currency Cantidades monetarias 8 bytes
922337203685477,5807 a
922337203685477,5807
Date
Datos cronolgicos
formados por mes, ao y
da
8 bytes
Al usar formatos de fecha estrictos, {^0001-
01-01}, 1 de enero, 1 d.C. a {^9999-12-31},
31 de diciembre, 9999 d.C.
DateTime
Datos cronolgicos
formados por mes, ao, da
y hora
8 bytes
Al usar formatos de fecha estrictos, {^0001-
01-01}, 1 de enero, 1 d.C. a {^9999-12-31},
31 de diciembre, 9999 d.C., ms 00:00:00
a.m. a 11:59:59 p.m.
Logical
Valor booleano verdadero o
falso
1 byte Verdadero (.T.) o Falso (.F.)
Numeric Enteros o fracciones
8 bytes en la
memoria.
1 a 20 bytes en
una tabla
9999999999E+19 a .9999999999E+20
Variant
Una variable de tipo Variant puede contener cualquier tipo de datos de Genlis y el valor Null. Una
vez que se almacena un valor en una variable del tipo Variant, sta asume el tipo de los datos que
contiene. Las variables tipo Variant se designan con el prefijo e en la sintaxis del lenguaje.


Adems, Genlis proporciona tipos de datos que se aplican nicamente a campos de tablas.

Tipos de campos de Genlis
Tipo de campo Descripcin Tamao Intervalo
Double
Nmero de signo flotante de
precisin doble
8 bytes
+/-4,94065645841247E-324 a +/-
8,9884656743115E307
Float Igual que Numeric
8 bytes en memoria; 1 a
20 bytes en una tabla
- .9999999999E+19 a
.9999999999E+20
General Referencia a un objeto OLE 4 bytes en una tabla Limitado por la memoria disponible
Integer Valores enteros 4 bytes -2147483647 a 2147483647
Memo
Referencia a un bloque de
datos
4 bytes en una tabla Limitado por la memoria disponible
Character
(Binario)
Datos de tipo Character que
quiere mantener sin
modificacin en pginas de
1 byte por carcter
hasta 254
Cualquier carcter


Manual de Genlis
54
cdigos
Memo (Binario)
Datos de campo Memo que
quiere mantener sin
modificacin en pginas de
cdigos
4 bytes en una tabla Limitado por la memoria disponible


Sugerencia Puede usar la funcin TYPE( ) para determinar el tipo de datos almacenado en una variable, un
elemento de matriz o un campo.


Contenedores de datos

Los contenedores de datos le permiten realizar las mismas operaciones con varios 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. Deber realizar estas operaciones para cada
empleado y para cada perodo de pago. Si almacena esta informacin en contenedores y realiza las
operaciones sobre stos, bastar con sustituir los datos antiguos por los nuevos datos y volver a ejecutar el
mismo programa. En la siguiente tabla se enumeran algunos de los principales contenedores de datos
disponibles en Genlis:

Contenedores de datos
Tipo Descripcin
Variables
Elementos individuales de datos almacenados en la memoria RAM (memoria de acceso
aleatorio) del PC.
Registros de tabla
Varias filas de campos predeterminados, cada uno de los cuales puede contener un dato
definido previamente. Las tablas se guardan en disco.
Matrices Varios elementos de datos almacenados en la memoria RAM.


4.1.2. Manipular datos: Operadores, funciones y comandos

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.

4.1.2.1. Usar Operadores

Los operadores permiten manipular datos del mismo tipo. En las siguientes secciones, los operadores de
Genlis se agrupan segn los siguientes tipos de datos y funciones:
Operadores para caracteres
Operadores para tipos Date y DateTime


Manual de Genlis
55
Operadores para el tipo Logical
Operadores relacionales
Operadores para el tipo Numeric

Operadores para caracteres

Puede agrupar y comparar datos de caracteres mediante los operadores para caracteres +, -, y $. En la
siguiente tabla se muestran los operadores de expresin de caracteres en orden de preferencia.

Operadores para caracteres
Operador Accin Cdigo
+ Concatenacin
Combina dos cadenas, una cadena y un campo, o una cadena y una variable.
'Buenos ' + 'das'
- Concatenacin
Quita los espacios finales del elemento anterior al operador y
luego combina dos elementos: customer.first - customer.last
$ Comparacin Busca una expresin de caracteres dentro de otra: 'padre' $ 'padres'


Operadores para los tipos Date y DateTime

Los siguientes operadores actan en fechas y en horas.

Operadores para los tipos Date y DateTime
Operador Accin Cdigo
+ Suma NewTime = tTime1 + nSeconds dNewDate = dDate1 + nDays
- Resta
nSeconds = tTime1 - tTime2 tNewTime = tTime1 - nSeconds dNewDate
dDate1 - nDays
= Comparacin


Operadores para el tipo Logical

Los operadores para el tipo Logical funcionan con todos los tipos de datos y devuelven un valor Logical. En
la siguiente tabla se muestran los operadores para el tipo Logical en orden de preferencia.

Operadores para el tipo Logical
Operador Accin Cdigo
( ) Grupos de expresiones cVar AND (cVar2 AND cVAR3)
NOT, ! Lgico negativo IF NOT cVarA = cVarB IF ! nVar1 = nVar2
AND AND lgico lVar0 AND lVar9
OR OR lgico inclusivo lVarX OR lVarY




Manual de Genlis
56
Operadores relacionales

Los operadores relacionales funcionan con todos los tipos de datos y devuelven un valor Logical. En la
siguiente tabla se muestran los operadores relacionales.

Operadores relacionales
Operador Accin Cdigo
< Menor que 23 < 54
> Mayor que 1 > 2
= Igual que cVar1 = cVar2
<>, #, != Distinto d .T. <> .F.
<= Menor o igual que {^1998/02/16} <= {^1998/02/16}
>= Mayor o igual que 32 >= nSuedad
== Comparacin de cadenas de caracteres Status == "Abrir"


Se puede usar el operador == para comparar cadenas de caracteres de forma exacta. Al comparar dos
expresiones de caracteres mediante el operador ==, 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 SET EXACT se pasa por alto al comparar cadenas de caracteres con el operador ==.

Operadores para el tipo Numeric

Los operadores para el tipo Numeric trabajan con todos los valores del tipo Numeric. En la siguiente tabla se
muestran los operadores para el tipo Numeric en orden de preferencia.

Operadores para el tipo Numeric
Operador Accin Cdigo
( ) Subexpresiones de grupo (4 3) * (12 / nVar2)
**, ^ Exponenciacin 3 ** 2 ; 3^2
*, / Multiplicacin y divisin 2 * 7 ; 14 / 7
% Mdulo (resto( 15 % 4
+, - Suma y resta 4 + 15


Recuerde que debe utilizar el mismo tipo de datos con cada operador. Las siguientes instrucciones
almacenan dos datos numricos en dos variables. Los nombres de variable empiezan con la letra n, por lo
que se puede determinar de inmediato que contienen datos numricos, pero puede nombrarlas con
cualquier combinacin de caracteres alfanumricos y caracteres de subrayado.
nPrimero = 123
nSegundo = 45
Las instrucciones siguientes almacenan dos datos de caracteres en dos variables. Los nombres de variable
empiezan con la letra c para indicar que contienen datos de tipo character.
cPrimero = "123"


Manual de Genlis
57
cSegundo = "45"
Las dos operaciones siguientes, suma y concatenacin, producen resultados distintos, ya que el tipo de
datos es diferente en cada una de ellas.
nPrimero + nSegundo
cPrimero + cSegundo

Resultado
168
12345

Puesto que cPrimero contiene caracteres y nSegundo contiene datos numricos, se producir un error de
tipo de datos incorrecto si se intenta ejecutar el siguiente comando:
cPrimero + nSegundo
Puede evitar este problema si utiliza funciones de conversin. Por ejemplo, STR( ) devuelve el valor de tipo
Character equivalente de un valor de tipo Numeric, mientras que VAL( ) devuelve el equivalente numrico de
una cadena de caracteres formada por nmeros. Estas funciones y LTRIM( ), que elimina los espacios
iniciales, le permiten realizar las operaciones siguientes:
cPrimero + LTRIM(STR(nSegundo))
VAL(cPrimero) + nSegundo

Resultado
12345
168


4.1.2.2. Usar funciones

Las funciones devuelven un tipo especfico de datos. Por ejemplo, las funciones STR( ) y VAL( ) utilizadas en
la seccin anterior devuelven valores de tipo Character y Numeric, respectivamente. Al igual que ocurre con
todas las funciones, estos tipos devueltos estn documentados con las funciones.
Hay cinco maneras de llamar a una funcin de Genlis:
Asignar a una variable el valor que devuelve la funcin. La siguiente lnea de cdigo almacena la
fecha actual del sistema en una variable denominada dHoy:
dHoy = DATE( )
Incluir la llamada a la funcin en un comando de Genlis. El siguiente comando establece el directorio
predeterminado como el valor devuelto por la funcin GETDIR( ):
CD GETDIR( )
Incluir la funcin dentro de otra funcin. La siguiente lnea de cdigo devuelve el da de la semana:
? DOW(DATE( ))

A continuacin se enumeran otros ejemplos de funciones utilizados en este captulo:

Funcin: Descripcin.


Manual de Genlis
58

ISDIGIT( ): Devuelve el valor verdadero (.T.) si el carcter situado al comienzo de una cadena es un nmero;
de lo contrario, devuelve el valor falso (.F.).
LEN( ): Devuelve el nmero de caracteres de una expresin de caracteres.
RECCOUNT( ): Devuelve el nmero de registros de la tabla que est activa en este momento.
SUBSTR( ): Devuelve el nmero especificado de caracteres a partir de una cadena de caracteres,
empezando en una posicin especificada de la cadena.


4.1.2.3. Usar comandos

Un 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. Hay
tambin clusulas opcionales asociadas a los comandos que permiten especificar de forma ms detallada la
accin que se desea realizar.
A continuacin se muestran algunos ejemplos de comandos utilizados en este captulo:


4.1.3. Control del flujo del programa

Genlis incluye una categora especial de comandos que "envuelven" a otros comandos y funciones, y
determinan cundo y con qu frecuencia se ejecutan. Estos comandos permiten realizar bifurcaciones
condicionales y bucles, dos herramientas de programacin muy eficaces. El siguiente programa muestra el
uso de las bifurcaciones y los bucles condicionales. Estos conceptos se describen de forma ms detallada
despus del ejemplo.
Suponga que su empresa cuenta con 10.000 empleados y desea conceder a todos aqullos que ganan
3.000.000 de pesetas o ms un aumento salarial del 3%, y a todos los que ganan menos de 3.000.000 de
pesetas un aumento del 6%. El siguiente ejemplo de programa le permite hacerlo.
Este programa presupone que en el rea de trabajo actual est abierta una tabla que contiene un campo
numrico denominado salario.


Programa de ejemplo para aumentar el salario de los empleados

Cdigo && Observaciones

SCAN && El cdigo comprendido entre SCAN y ENDSCAN se ejecuta tantas veces como registros
haya en la tabla. Cada vez que se ejecuta el cdigo, el puntero de registro se desplaza al siguiente registro
de la tabla.
IF salario >= 3000000


Manual de Genlis
59
REPLACE salary WITH salario * 1,03 && Para cada registro, si el salario es mayor o
igual que 3.000.000, este valor se sustituye por un nuevo salario que es un 3% superior.
ELSE
REPLACE salario WITH salario * 1,06 && Para cada registro, si el salario no es
mayor o igual que 3.000.000, se sustituye este valor por un nuevo salario que es un 6% superior.
ENDIF
ENDSCAN && Final de la instruccin condicional IF. Final del cdigo que se ejecuta para cada registro de
la tabla.

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


Bifurcacin condicional

La bifurcacin condicional permite someter a prueba condiciones y, a continuacin, en funcin del resultado
de la prueba, realizar distintas operaciones. Genlis ofrece un comandos que permiten realizar una
bifurcacin condicional:
IF ... ELSE ... ENDIF

El cdigo comprendido entre la instruccin inicial y la instruccin ENDIF o ENDCASE slo se ejecuta si una
condicin lgica se evala como verdadera (.T.). En el programa de ejemplo, el comando IF se utiliza para
distinguir entre dos estados: o el salario es de 3.000.000 pesetas o ms, o no lo es. Se adoptan diferentes
medidas, dependiendo del estado.
En el siguiente ejemplo, si el valor almacenado en la variable nTempAgua es menor que 100, no se realizar
ninguna accin:
* definir una variable lgica como Verdadera si se cumple una condicin.
IF nTempAgua >= 100
lEbullicin = .T.
ENDIF

Nota Un 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 Genlis los pasa por alto.


Bucles
Un bucle le permite ejecutar una o ms lneas de cdigo tantas veces como sea necesario. En Genlis hay
tres comandos que permiten realizar bucles:
SCAN ... ENDSCAN
FOR ... ENDFOR
DO WHILE ... ENDDO
Utilice SCAN cuando realice una serie de acciones para cada uno de los registros de una tabla, como en el
ejemplo de programa descrito anteriormente. El bucle SCAN permite escribir el cdigo una vez y ejecutarlo
para cada registro a medida que el puntero de registro se desplaza por la tabla.


Manual de Genlis
60
Utilice FOR cuando sepa cuntas veces debe ejecutarse la seccin de cdigo. Por ejemplo, sabe que una
tabla contiene un nmero especfico de campos. Puesto que la funcin FCOUNT( ) de Genlis devuelve este
nmero, puede utilizar un bucle FOR para imprimir los nombres de todos los campos de la tabla:
FOR nRecuento = 1 TO FCOUNT( )
FIELD(nRecuento)
ENDFOR

Utilice DO WHILE cuando desee ejecutar una seccin de cdigo mientras cumpla una determinada
condicin. Tal vez no sepa cuntas veces debe ejecutarse el cdigo, pero s sabe cundo 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. Surgira
un problema la primera vez que intentase agregar una persona cuyas iniciales fuesen las mismas que las de
otra persona contenida en la tabla.
Para resolver este problema, podra agregar un nmero a las iniciales. Por ejemplo, el cdigo de
identificacin de Miguel Surez podra ser MS. La siguiente persona cuyas iniciales fuesen las mismas,
Margarita Snchez, sera MS1. Si a continuacin anexase Mara Sanz a la tabla, su cdigo de identificacin
sera MS2. Un bucle DO WHILE permite localizar el nmero correcto que se debe adjuntar a las iniciales.


Programa de ejemplo que utiliza DO WHILE para generar un nmero de identificacin
nico

Cdigo && Comentarios

nAqu = RECNO() && Guardar la posicin del registro.
cIniciales = LEFT(nombre,1) + LEFT(apellido,1) nSufijo = 0 && Obtener las iniciales de la persona a partir de
las primeras letras de los campos nombre y apellido. Si es necesario, establecer una variable que contenga
el nmero que se debe agregar al final de las iniciales de una persona.
LOCATE FOR id_persona = cIniciales && Comprobar si hay otra persona en la tabla cuyas iniciales son las
mismas.
DO WHILE FOUND( ) && Si en otro registro de la tabla hay un valor id_persona que coincide con cIniciales,
la funcin FOUND( ) devolver el valor verdadero (.T.) y se ejecutar el cdigo contenido en el bucle DO
WHILE. Si no se encuentra ninguna coincidencia, la siguiente lnea de cdigo que se ejecute ser la lnea
que figura a continuacin de ENDDO.
nSufijo = nSufijo + 1 cIniciales = LEFT(cIniciales,2) + ALLTRIM(STR(nSufijo)) && Preparar un sufijo
nuevo y anexarlo al final de las iniciales.
CONTINUE && CONTINUE hace que se vuelva a evaluar el ltimo comando LOCATE. El programa
comprueba si el nuevo valor contenido en cIniciales ya existe en el campo id_persona de otro registro. Si es
as, FOUND( ) seguir devolviendo el valor .T. y se volver a ejecutar el cdigo contenido en el bucle DO
WHILE. Si el nuevo valor contenido en cIniciales es efectivamente nico, FOUND( ) devolver el valor .F. y la
ejecucin del programa continuar con la lnea de cdigo que figura a continuacin de ENDDO.
ENDDO && Final del bucle DO WHILE.
GOTO nAqu


Manual de Genlis
61
REPLACE id_persona WITH cIniciales && Volver al registro y almacenar el cdigo de identificacin nico en
el campo id_persona.

Puesto que no hay manera de saber de antemano cuntas veces se encontrarn los cdigos de
identificacin coincidentes que ya se estn utilizando, se utiliza el bucle DO WHILE.




Manual de Genlis
62
5. Lista de funciones agrupadas por tipo

5.1. Funciones de tipo Character

Las siguientes funciones operan sobre datos de tipo Character.
$ (Operador)
ALLTRIM( ) (Funcin)
ASC( ) (Funcin)
AT( ) (Funcin)
AT_C( ) (Funcin)
ATC( ) (Funcin)
ATCC( ) (Funcin)
ATCLINE( ) (Funcin)
ATLINE( ) (Funcin)
BETWEEN( ) (Funcin)
CHR( ) (Funcin)
CHRTRAN( ) (Funcin)
CHRTRANC( ) (Funcin)
CPCONVERT( ) (Funcin)
CTOD( ) (Funcin)
DIFFERENCE( ) (Funcin)
DTOC( ) (Funcin)
EMPTY( ) (Funcin)
EVALUATE( ) (Funcin)
INLIST( ) (Funcin)
ISALPHA( ) (Funcin)
ISDIGIT( ) (Funcin)
ISLEADBYTE( )
ISLOWER( ) (Funcin)
ISUPPER( ) (Funcin)
LEFT( ) (Funcin)
LEFTC( ) (Funcin)
LEN( ) (Funcin)
LENC( ) (Funcin)
LIKE( ) (Funcin)
LIKEC( ) (Funcin)
LOWER( ) (Funcin)
LTRIM( ) (Funcin)
MAX( ) (Funcin)
MIN( ) (Funcin)
NORMALIZE( ) (Funcin)


Manual de Genlis
63
OCCURS( ) (Funcin)
PADC( ) (Funcin)
PADL( ) (Funcin)
PADR( ) (Funcin)
PROPER( ) (Funcin)
RAT( ) (Funcin)
RATC( ) (Funcin)
RATLINE( ) (Funcin)
REPLICATE( ) (Funcin)
RIGHT( ) (Funcin)
RIGHTC( ) (Funcin)
RTRIM( ) (Funcin)
SOUNDEX( ) (Funcin)
SPACE( ) (Funcin)
STR( ) (Funcin)
STRCONV( ) (Funcin)
STRTOFILE( ) Function
STRTRAN( ) (Funcin)
STUFF( ) (Funcin)
STUFFC( ) (Funcin)
SUBSTR( ) (Funcin)
SUBSTRC( ) (Funcin)
TRANSFORM( ) (Funcin)
TRIM( ) (Funcin)
TXTWIDTH( ) (Funcin)
TYPE( ) (Funcin)
UPPER( ) (Funcin)


5.2. Funciones de conversin de datos

Estos datos convierten datos de un tipo de datos a otro.
CHR( ) (Funcin)
CTOD( ) (Funcin)
CURVAL( ) (Funcin)
DTOC( )
MTON( ) (Funcin)
NTOM( ) (Funcin)
NVL( ) (Funcin)
STR( )
TRANSFORM( ) (Funcin)
TTOC( ) (Funcin)


Manual de Genlis
64
TTOD( ) (Funcin)
VAL( ) (Funcin)


5.3. Funciones de fecha y hora

Las siguientes funciones generan y manipulan datos de fecha y hora.
BETWEEN( ) (Funcin)
CDOW( ) (Funcin)
CMONTH( ) (Funcin)
CTOD( ) (Funcin)
CTOT( ) (Funcin)
DATE( ) (Funcin)
DATETIME( ) (Funcin)
DAY( ) (Funcin)
DMY( ) (Funcin)
DOW( ) (Funcin)
DTOC( ) (Funcin)
DTOS( ) (Funcin)
DTOT( ) (Funcin)
EMPTY( ) (Funcin)
FDATE( ) (Funcin)
FTIME( ) (Funcin)
GOMONTH( ) (Funcin)
HOUR( ) (Funcin)
INLIST( ) (Funcin)
MAX( ) (Funcin)
MDY( ) (Funcin)
MIN( ) (Funcin)
MINUTE( ) (Funcin)
MONTH( ) (Funcin)
SEC( ) (Funcin)
SECONDS( ) (Funcin)
SET HOURS (Comando)
SET MARK TO (Comando)
SET SECONDS (Comando)
SYS(1) (Funcin) - Fecha de sistema Juliano
SYS(2) (Funcin) - Segundos transcurridos desde media noche
SYS(10) (Funcin) - Cadena de nmero de da
SYS(11) (Funcin) - Nmero de da Juliano
TIME( ) (Funcin)
TTOC( ) (Funcin)


Manual de Genlis
65
TTOD( ) (Funcin)
WEEK( ) (Funcin)
YEAR( ) (Funcin)


5.4. Funciones numricas

Las siguientes funciones operan sobre datos numricos o devuelven datos numricos.

% (Operador)
ABS( ) (Funcin)
ACOS( ) (Funcin)
ASIN( ) (Funcin)
ATAN( ) (Funcin)
ATN2( ) (Funcin)
BETWEEN( ) (Funcin)
BITAND( ) (Funcin)
BITCLEAR( ) (Funcin)
BITLSHIFT( ) (Funcin)
BITNOT( ) (Funcin)
BITOR( ) (Funcin)
BITRSHIFT( ) (Funcin)
BITSET( ) (Funcin)
BITTEST( ) (Funcin)
BITXOR( ) (Funcin)
CALCULATE (Comando)
CEILING( ) (Funcin)
COS( ) (Funcin)
DTOR( ) (Funcin)
EMPTY( ) (Funcin)
EXP( ) (Funcin)
FLOOR( ) (Funcin)
FV( ) (Funcin)
INLIST( ) (Funcin)
INT( ) (Funcin)
LOG( ) (Funcin)
LOG10( ) (Funcin)
MAX( ) (Funcin)
MIN( ) (Funcin)
MOD( ) (Funcin)
PAYMENT( ) (Funcin)
PI( ) (Funcin)


Manual de Genlis
66
PV( ) (Funcin)
RAND( ) (Funcin)
ROUND( ) (Funcin)
RTOD( ) (Funcin)
SET DECIMALS (Comando)
SIGN( ) (Funcin)
SIN( ) (Funcin)
SQRT( ) (Funcin)
TAN( ) (Funcin)
VAL( ) (Funcin)


5.5. Funciones y comandos ordenados alfabticamente

5.5.1. $ (Operador)

Devuelve verdadero (.T.) si una expresin de caracteres est contenida dentro de otra expresin de
caracteres; de lo contrario, devuelve falso (.F.).

Sintaxis
cBuscar $ cBuscarEn

Tipos devueltos
Logical

Argumentos
cBuscar
Especifica la expresin buscada en cBuscarEn.
cBuscarEn
Especifica la expresin en que se busca para comprobar si contiene cBuscar.
Si en cBuscarEn se encuentra cBuscarEn, $ devolver verdadero (.T.); de lo contrario, devolver falso (.F.).
cBuscar y cBuscarEn pueden ser variables de memoria o elementos de matriz de tipo carcter, campos de
tipo carcter, literales de cadena de caracteres o campos memo de cualquier longitud.
Los campos memo pueden manipularse de la misma forma que las expresiones de caracteres, los campos
de tablas, las variables de memoria o los elementos de matriz.

Comentarios
Si no se encuentra la expresin de caracteres, se devolver falso (.F.). El operador $ distingue maysculas
de minsculas y no es optimizable mediante Rushmore.



Manual de Genlis
67

5.5.2. % (Operador)

Devuelve el resto que se obtiene de dividir una expresin numrica por otra expresin numrica.

Sintaxis
nDividendo % nDivisor

Argumentos
nDividendo
Especifica el dividendo (la expresin numrica que se divide). El nmero de decimales de nDividendo
determina el nmero de decimales del resultado.

nDivisor
Especifica el divisor (la expresin numrica que divide al dividendo nDividendo). Se devolver un nmero
positivo si nDivisor es positivo y un nmero negativo si nDivisor es negativo. nDivisor no puede ser cero.

Comentario
El operador mdulo % y MOD( ) devuelven el mismo resultado.
El operador mdulo (%) es un operador aritmtico. + (suma), - (resta), * (multiplicacin), / (divisin) y ^
(exponenciacin) son otros operadores aritmticos. Cuando estos operadores se combinan en una
expresin numrica, % tiene la misma prioridad que * y /.


5.5.3. & (Comando)

Realiza una sustitucin de macro.

Sintaxis
& NombreVariableMemoria[.cExpresin]

Argumentos
& NombreVariableMemoria
Especifica el nombre de la variable de memoria o del elemento de matriz al que se hace referencia en la
sustitucin de macro. No incluya el prefijo M., que distingue las variables de memoria de los campos. Esto
causara un error de sintaxis. La macro no debe superar la longitud mxima de instruccin permitida en
Genlis.
Una variable no puede hacer referencia a s misma de forma recursiva en una sustitucin de macro. Por
ejemplo, lo siguiente genera un mensaje de error:
STORE '&gcX' TO gcX


Manual de Genlis
68
? &gcX
Las instrucciones de sustitucin de macro que aparecen en DO WHILE, FOR y SCAN se evalan
nicamente al inicio del bucle y no se vuelven a evaluar en los bucles posteriores. No se reconocen los
cambios efectuados en la variable de memoria o en el elemento de matriz que ocurran dentro del bucle.

cExpresin
El delimitador opcional punto (.) y .cExpresin se utilizan para anexar caracteres adicionales a una macro.
cExpresin anexada a la macro con cExpresin tambin puede ser una macro. Si cExpresin es un nombre
de propiedad, incluya un punto adicional (cExpresin..NombrePropiedad).

Comentarios
La sustitucin de macro trata el contenido de una variable de memoria o un elemento de matriz como un
literal de cadena de caracteres. Cuando un signo (&) precede a una variable de memoria o un elemento de
matriz de tipo carcter, el contenido de la variable o el elemento sustituye a la referencia de la macro. Puede
utilizar la sustitucin de macro en cualquier comando o funcin que acepte un literal de cadena de
caracteres.

Sugerencia. Siempre que sea posible, utilice una expresin de nombre en lugar de una sustitucin de
macro. Una expresin de nombre acta de forma similar a una sustitucin de macro. Sin embargo, una
expresin de nombre est limitada a transferir cadenas de caracteres como nombres. Utilice una expresin
de nombre para acelerar el proceso de forma significativa si un comando o una funcin acepta un nombre
(un nombre de archivo, un nombre de ventana, un nombre de men, etc.)


5.5.4. && (Comando)

Indica el principio de un comentario en lnea no ejecutable en un archivo de programa.

Sintaxis
&& [Comentarios]

Argumentos
Comentarios
Indica que a continuacin aparece un comentario en lnea. Por ejemplo:
STORE (20*12) TO gnPagos && 20 aos de pagos mensuales.
La insercin de comentarios en lnea para indicar el final de los comandos de programacin estructurados IF
... ENDIF, DO y FOR ... ENDFOR mejora significativamente la legibilidad de los programas.

Comentarios
Escriba punto y coma (;) al final de cada lnea de comentario que contine en la lnea siguiente. No se
permite incluir && y un comentario tras el signo de punto y coma empleado para continuar una lnea de
comandos en la lnea siguiente.


Manual de Genlis
69


5.5.5. * (Comando)

Indica el principio de una lnea de comentarios no ejecutable en un archivo de programa.

Sintaxis
* [Comentarios]

Argumentos
Comentarios
Especifica el comentario en la lnea de comentarios. Por ejemplo:
* Esto es un comentario.

Comentarios
Escriba punto y coma (;) al final de cada lnea de comentario que contine en la lnea siguiente.


5.5.6. = (Comando)

Evala una o ms expresiones.

Sintaxis
= Expresin1 [, Expresin2 ...]

Argumentos
Expresin1 [, Expresin2 ...]
Especifica la expresin o las expresiones que evala el comando =.

Comentarios
El comando = evala una o ms expresiones, Expresin1, Expresin2 ...y descarta los valores devueltos.
Esto es especialmente til cuando una funcin de Genlis o una funcin definida por el usuario tiene el efecto
deseado pero no es necesario asignar el valor devuelto por la funcin a una variable de memoria, un
elemento de matriz o un campo.
Por ejemplo, para activar el modo de insercin, puede utilizar el siguiente comando:
= INSMODE(.T.)
INSMODE devuelve normalmente un valor verdadero (.T.) o falso (.F.). En el ejemplo anterior se ejecuta la
funcin, pero se descarta el valor devuelto.
Si slo se incluye una expresin (Expresin1), el signo igual es opcional.



Manual de Genlis
70
Nota. Hay otros dos usos no relacionados para el signo igual (=). Puede utilizarse como operador en
expresiones lgicas para realizar una comparacin o para asignar valores a variables de memoria y
elementos de matrices. En estos dos casos, el signo igual (=) es un operador, no un comando.


5.5.7. ABS( ) (Funcin)

Devuelve el valor absoluto de la expresin numrica especificada.

Sintaxis
ABS(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica la expresin numrica cuyo valor absoluto devuelve ABS( ).


5.5.8. ACOPY( ) (Funcin)

Copia elementos de una matriz a otra.

Sintaxis
ACOPY(NombreMatrizOrigen, NombreMatrizDestino
[, nPrimerElementoOrigen [, nNmeroElementos [, nPrimerElementoDestino ]]])

Tipos devueltos
Numeric

Argumentos
NombreMatrizOrigen, NombreMatrizDestino
Especifica la matriz de origen NombreMatrizOrigen cuyos elementos se copian uno a uno a la matriz de
destino NombreMatrizDestino. Los elementos de la matriz de origen sustituyen a los elementos de la matriz
de destino.
Las matrices pueden ser unidimensionales o bidimensionales. Si la matriz de destino no existe, Genlis la
crear automticamente. En tal caso, el tamao de la matriz de destino ser el mismo que el de la matriz de
origen.



Manual de Genlis
71
Nota Puede hacer referencia a un elemento de una matriz bidimensional de variables de memoria de dos
formas. La primera utiliza dos subndices para especificar la posicin de fila y columna del elemento de la
matriz; la otra utiliza un nmero de elemento nico. Esta funcin y otras que manipulan matrices
bidimensionales precisan nmeros de elemento nico (aqu, nPrimerElementoOrigen y
nPrimerElementoDestino). Utilice AELEMENT( ) para devolver el nmero de elemento apropiado para una
matriz bidimensional a partir de sus subndices de fila y columna.

nPrimerElementoOrigen
Especifica el nmero del primer elemento de la matriz de origen que se va a copiar, inclusive (el elemento
nmero nPrimerElementoOrigen se incluye en la copia). Si no se incluye nPrimerElementoOrigen, la
operacin de copia comenzar con el primer elemento de la matriz de origen.

nNmeroElementos
Especifica el nmero de elementos copiados de la matriz de origen. Si nNmeroElemento es 1, se copiarn
todos los elementos de la matriz de origen a partir del elemento nPrimerElementoOrigen.

nPrimerElementoDestino
Especifica el primer elemento de la matriz de destino que se va a sustituir.

Comentarios
ACOPY( ) devuelve el nmero de elementos copiados a la matriz de destino.


5.5.9. ACOS( ) (Funcin)

Devuelve el arco coseno de una expresin numrica especificada.

Sintaxis
ACOS(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica la expresin numrica cuyo arco coseno devuelve ACOS( ). El valor de nExpresin puede estar
comprendido entre 1 y +1. El valor que devuelve ACOS( ) est comprendido entre 0 y pi (3,141592). El
nmero de decimales que devuelve ACOS( ) est determinado por SET DECIMALS.
Utilice RTOD( ) para convertir radianes a grados.

Comentarios
El arco coseno se devuelve en radianes.


Manual de Genlis
72


5.5.10. ADEL( ) (Funcin)

Elimina un elemento de una matriz de una dimensin, o una fila o columna de una matriz de dos
dimensiones.

Sintaxis
ADEL(NombreMatriz, nNmeroElemento [, 2])

Tipos devueltos
Numeric


Argumentos
NombreMatriz
Especifica la matriz de la que se elimina el elemento, la fila o la columna.

nNmeroElemento
Especifica el nmero del elemento, fila o columna que se desea eliminar de la matriz. Debe incluir el
argumento opcional 2 para eliminar una columna de la matriz.

2
Elimina una columna de la matriz.

Comentarios
Al eliminar un elemento, una fila o una columna de una matriz, no cambia el tamao de la matriz; en cambio,
los elementos, las filas o las columnas finales se mueven hacia el inicio de la matriz y el ltimo elemento, fila
o columna de la matriz se establece como falso (.F.).
Si el elemento, fila o columna se elimina satisfactoriamente, se devuelve el valor 1.


5.5.11. AELEMENT( ) (Funcin)

Devuelve el nmero de un elemento de la matriz a partir de los subndices del elemento.

Sintaxis
AELEMENT(NombreMatriz, nSubndiceFila [, nSubndiceColumna])

Tipos devueltos


Manual de Genlis
73
Numeric

Argumentos
NombreMatriz
Especifica el nombre de la matriz cuyo nmero de elemento se desea devolver.

nSubndiceFila
Especifica el subndice de fila. Si la matriz es unidimensional, AELEMENT( ) devolver nSubndiceFila.
Si slo incluye nSubndiceFila y es mayor que el nmero de filas de la matriz, Genlis generar un mensaje de
error.

nSubndiceColumna
Especifica el subndice de columna. Si la matriz es bidimensional, incluya nSubndiceFila y
nSubndiceColumna.

Comentarios
Puede hacer referencia a un elemento de una matriz bidimensional de dos maneras. El primer mtodo utiliza
dos subndices para especificar la posicin de fila y columna del elemento en la matriz y el segundo mtodo
utiliza un nmero de elemento nico. AELEMENT( ) devuelve el nmero de elemento cuando se facilitan los
subndices de fila y columna de un elemento.
Las funciones ADEL( ), ADIR( ), AFIELDS( ), AINS( ), ALEN( ), ASCAN( ), ASORT( ) y ASUBSCRIPT( ) de Genlis
pueden manipular matrices de dos dimensiones y precisan que se haga referencia a los elementos por su
nmero de elemento. AELEMENT( ) facilita la conversin de subndices a un nmero de elemento para
utilizarlo en estas funciones. Los subndices correspondientes de fila y columna se pueden devolver a partir
del nmero de elemento mediante ASUBSCRIPT( ).
Se puede hacer referencia a un elemento mediante sus subndices o su nmero de elemento. Los
comandos STORE 'FACTURA' TO gaMatriz(2, 1) y STORE 'FACTURA' TO gaMatriz(4) almacenan la cadena
de caracteres FACTURA en el mismo elemento de la matriz.
En las matrices de una dimensin, un nmero de elemento coincide con su subndice de fila nico. No es
necesario utilizar AELEMENT( ) con las matrices de una dimensin.


5.5.12. AINS( ) (Funcin)

Inserta un elemento en una matriz de una dimensin, o una fila o columna en una matriz de dos
dimensiones.

Sintaxis
AINS(NombreMatriz, nNmeroElemento [, 2])

Tipo devuelto
Numeric


Manual de Genlis
74

Argumentos
NombreMatriz
Especifica el nombre de la matriz en que se inserta el elemento.

nNmeroElemento
Especifica el lugar de la matriz en que se inserta el nuevo elemento, la nueva fila o la nueva columna.
Para insertar un elemento en una matriz de una dimensin, incluya NombreMatriz y el elemento
nNmeroElemento donde se produzca la insercin. El nuevo elemento se inserta justo antes del elemento
nNmeroElemento. Para insertar una fila en una matriz de dos dimensiones, incluya NombreMatriz y el
nmero de la fila nNmeroElemento donde se produzca la insercin. La nueva fila se insertar justo antes de
la fila nNmeroElemento.

2
Inserta una columna en una matriz de dos dimensiones. La nueva columna se insertar justo antes de la
columna especificada con nNmeroElemento.

Comentarios
Al insertar un elemento, una fila o una columna en una matriz, no cambia el tamao de la matriz. Los
elementos, las filas o las columnas finales se desplazan hacia el final de la matriz y el ltimo elemento, la
ltima fila o la ltima columna queda fuera de la matriz. El elemento, la fila o la columna recin insertada se
inicializa con falso (.F.).
AINS( ) devuelve 1 si el elemento, la fila o la columna se inserta correctamente.


5.5.13. ALEN( ) (Funcin)

Devuelve el nmero de elementos, filas o columnas de una matriz.

Sintaxis
ALEN(NombreMatriz [, nAtributoMatriz])

Tipo devuelto
Numeric

Argumentos
NombreMatriz
Especifica el nombre de la matriz. Si incluye nicamente el nombre de la matriz, ALEN( ) devolver el nmero
de elementos de la matriz.

nAtributoMatriz


Manual de Genlis
75
Determina si ALEN( ) devuelve el nmero de elementos, filas o columnas de la matriz segn los siguientes
valores de nAtributoMatriz:
0 Especifica que se devuelve el nmero de elementos de la matriz. Omitir nAtributoMatriz es idntico a
especificar 0.
1 Especifica que se devuelve el nmero de filas de la matriz.
2 Especifica que se devuelve el nmero de columnas de la matriz. Si la matriz es de una dimensin,
ALEN( ) devolver 0 (ninguna columna).


5.5.14. ALLTRIM( ) (Funcin)

Elimina los espacios en blanco iniciales y finales de la expresin de caracteres especificada y devuelve la
expresin recortada como una cadena de caracteres.

Sintaxis
ALLTRIM(cExpresin)

Tipo devuelto
Character

Argumentos
cExpresin Especifica la expresin de caracteres de la que se eliminan los espacios en blanco iniciales y
finales.

Comentarios
ALLTRIM( ) se puede utilizar para asegurar que los espacios en blanco se eliminan de los datos escritos por
un usuario.


5.5.15. APPEND (Comando)

Agrega uno o ms registros nuevos al final de una tabla.

Sintaxis
APPEND [BLANK]
[IN nreaTrabajo | cAliasTabla]
[NOMENU]

Argumentos
BLANK


Manual de Genlis
76
Agrega un registro en blanco al final de la tabla activa. Genlis no abre ninguna ventana de edicin cuando
usted ejecuta APPEND BLANK.
Es posible modificar los nuevos registros con BROWSE, CHANGE o EDIT.

IN nreaTrabajo
Especifica el rea de trabajo de la tabla a la que se agrega el nuevo registro.

IN cAliasTabla
Especifica el alias de la tabla a la que se agrega el nuevo registro.
Si omite nreaTrabajo y cAliasTabla, se agregar un nuevo registro a la tabla en el rea de trabajo
seleccionada actualmente. Si ejecuta APPEND, se agregar un registro en blanco a la tabla especificada
mediante nreaTrabajo o cAliasTabla, y la tabla se seleccionar automticamente. Si ejecuta APPEND
BLANK, se agregar un registro en blanco a la tabla especificada con nreaTrabajo o cAliasTabla, y la tabla
no se seleccionar.

NOMENU
Especifica que se eliminar el ttulo de men Tabla de la barra de mens del sistema, lo que impide efectuar
cambios en el formato de la ventana de edicin.

Comentarios
El cuadro de dilogo Abrir aparece cuando ejecuta APPEND o APPEND BLANK y no hay una tabla abierta
en el rea de trabajo activa. Elija una tabla para agregar registros.
APPEND abre una ventana de edicin para que pueda escribir datos en uno o varios registros nuevos.
Cuando agregue un nuevo registro, Genlis actualizar cualquier ndice que haya abierto.


5.5.16. APPEND FROM (Comando)

Agrega registros, desde otro archivo, al final de la tabla seleccionada actualmente.

Sintaxis
APPEND FROM NombreArchivo | ?
[FIELDS ListaCampos]
[FOR lExpresin]
[[TYPE] [DELIMITED [WITH Delimitador | WITH BLANK | WITH TAB
| WITH CHARACTER Delimitador]
| DIF | FW2 | MOD | PDOX | RPD | SDF | SYLK
| WK1 | WK3 | WKS | WR1 | WRK | CVS |
| XLS | XL5 [SHEET cNombreHoja] | XL8 [SHEET cNombreHoja]]]
[AS nPginaCdigos]

Argumentos


Manual de Genlis
77
NombreArchivo
Especifica el nombre del archivo desde el que desea agregar registros. Si no incluye ninguna extensin de
archivo, se asumir una tabla de Genlis y la extensin predeterminada .dbf. Si desea agregar desde una
tabla de Genlis, se agregarn los registros de la tabla que estn marcados para su eliminacin,
independientemente de la configuracin de SET DELETED.

?
Muestra el cuadro de dilogo Abrir, en el que puede elegir una tabla desde la que agregar registros.

FIELDS ListaCampos
Especifica a qu campos se van a agregar datos.

FOR lExpresin
Agrega un nuevo registro por cada registro de la tabla actualmente seleccionada para la que lExpresin d
como resultado verdadero (.T.). Los registros se agregan hasta alcanzar el final de la tabla seleccionada. Si
omite FOR, todo el archivo de origen se agrega a la tabla seleccionada actualmente.

TYPE
Especifica el tipo del archivo de origen desde el que se van a agregar datos. Aunque debe especificar un
tipo de archivo si el archivo desde el que va a agregar no es una tabla de Genlis, no necesita incluir la
palabra clave TYPE. Puede agregar desde varios tipos de archivos diferentes, incluidos archivos de texto
ASCII delimitados, en los que puede especificar un delimitador de campos.
Si el archivo de origen desde el que va a agregar datos no tiene la extensin predeterminada habitual para
ese tipo de archivo, el nombre del archivo de origen deber incluir la extensin del archivo. Por ejemplo, las
hojas de clculo de Microsoft Excel normalmente tienen una extensin .xls. Si la hoja de clculo de Microsoft
Excel desde la que va a agregar datos tiene una extensin distinta de la esperada, .xls, asegrese de
especificar la extensin.

Nota Cuando agregue datos desde una hoja de clculo, los datos de esa hoja deben estar almacenados en
un orden principal de fila, no de columna. Esto permite que los datos agregados de la hoja de clculo
coincidan con la estructura de la tabla.

DELIMITED
Especifica que el archivo de origen desde el que se agregan los datos a la tabla actual de Genlis es un
archivo delimitado. Un archivo delimitado es un archivo de texto ASCII en el que cada registro termina con
un retorno de carro y un avance de lnea. De forma predeterminada, se supone que el contenido de los
campos est separado entre s mediante comas y que los valores de los campos de caracteres estn
delimitados adems por dobles comillas. Por ejemplo:
"Smith",9999999,"TELFONO"
Para todos los archivos delimitados, se supone que la extensin de archivo es .txt.
Puede importar fechas de archivos delimitados si las fechas tienen el formato de fecha adecuado. El formato
de fecha predeterminado es dd/mm/aa. Es opcional incluir la parte de siglo de una fecha. Genlis importar
una fecha, como 25/12/94, que no incluye el siglo y supondr que la fecha corresponde al siglo XX. Los


Manual de Genlis
78
delimitadores de fecha pueden ser cualquier carcter no numrico, excepto el delimitador que separa los
campos en el archivo delimitado.
Es posible importar fechas en otros formatos si su formato coincide con un formato de fecha disponible en
SET DATE. Para importar fechas que no tienen el formato predeterminado, ejecute SET DATE con el
formato de fecha apropiado antes de utilizar APPEND FROM. Para comprobar si un formato de fecha se
puede importar correctamente, utilcelo con CTOD( ). Si la fecha es aceptable para CTOD( ), la fecha se
importar correctamente.

DELIMITED WITH Delimitador
Indica que los campos de caracteres estn delimitados entre s por un carcter distinto de la comilla.

DELIMITED WITH BLANK
Especifica archivos que contienen campos separados por espacios en blanco en vez de comas.

DELIMITED WITH TAB
Especifica archivos que contienen campos separados por tabulaciones en vez de comas.

DELIMITED WITH CHARACTER Delimitador
Especifica archivos que contienen campos separados por el carcter especificado en Delimitador. Si
Delimitador es un punto y coma (el carcter utilizado en Genlis para indicar continuacin de lnea de
comandos), escriba el punto y coma entre comillas. Tambin puede especificar las palabras clave BLANK y
TAB para Delimitador.
La clusula WITH Delimitador se puede combinar con la clusula WITH CHARACTER. Por ejemplo, el
siguiente comando agrega registros de un archivo de texto con campos de caracteres delimitados con
caracteres subrayados y todos los campos delimitados unos de otros por asteriscos:
APPEND FROM mitxt.txt DELIMITED WITH WITH CHARACTER *

DIF
Incluya DIF para importar datos de un archivo .dif (Formato de intercambio de datos) de VisiCalc. Los
vectores (columnas) se convierten en campos en la tabla seleccionada actualmente y las filas se transforman
en registros. Se presupone que los nombres de archivos DIF tienen una extensin .dif.

FW2
Incluya FW2 para importar datos de un archivo creado por Framework II. Se asume que los nombres de
archivo FW2 tienen una extensin .fw2.

MOD
Incluya MOD para importar datos de un archivo Microsoft Multiplan versin 4.01. Microsoft Multiplan versin
4.01 crea archivos MOD, que se supone deben tener una extensin .mod.

PDOX
Incluya PDOX para importar datos de un archivo de base de datos Paradox versin 3.5 4.0. Se supone
que los nombres de archivo Paradox deben tener una extensin .db.



Manual de Genlis
79
RPD
Incluya RPD para importar datos de un archivo creado por RapidFile versin 1.2. Se supone que los
nombres de archivo RapidFile deben tener una extensin .rpd.

SDF
Incluya SDF para importar datos de un archivo de Formato de datos del sistema. Un archivo SDF es un
archivo de texto ASCII en el que los registros tienen una longitud fija y terminan con un retorno de carro y un
avance de lnea. Los campos no estn delimitados. Se supone que la extensin del archivo SDF debe ser
.txt.

SYLK
Incluya SYLK para importar datos desde un formato de intercambio SYLK (Vnculo simblico). Los archivos
SYLK se utilizan con Microsoft MultiPlan. Las columnas del archivo SYLK se transforman en campos en la
tabla de Genlis y las filas se transforman en registros. Los nombres de archivo SYLK no tienen ninguna
extensin.

WK1
Incluya WK1 para importar datos de una hoja de clculo Lotus 1-2-3 versin 2.x. Cada columna de la hoja
de clculo se transforma en un campo de la tabla y cada fila de la hoja de clculo se transforma en un
registro de la tabla. Se asigna una extensin .WK1 al nombre de archivo de la hoja de clculo creada en
Lotus 1-2-3 versin 2.x.

WK3
Incluya WK3 para importar datos de una hoja de clculo Lotus 1-2-3. Las columnas de la hoja de clculo se
transforman en campos de la tabla y las filas se transforman en registros de la tabla. Se asigna una
extensin .wk3 al nombre de archivo de hoja de clculo creada en Lotus 1-2-3 versin 3.x.

WKS
Incluya WKS para importar datos de una hoja de clculo Lotus 1-2-3 revisin 1-A. Las columnas de la hoja
de clculo se convierten en campos de la tabla y las filas se transforman en registros de la tabla. Se asigna
una extensin .wks al nombre de archivo de la hoja de clculo creada en Lotus 1-2-3 revisin 1-A.

WR1
Incluya WR1 para importar datos de una hoja de clculo Lotus Symphony versin 1.1 1.2. Las columnas
de la hoja de clculo se convierten en campos de la tabla y las filas se transforman en registros de la tabla.
Se asigna la extensin .wr1 al nombre de archivo de hoja de clculo creada en Symphony versiones 1.1
1.2.

WRK
Incluya WRK para importar datos de una hoja de clculo Lotus Symphony versin 1.0. Las columnas de la
hoja de clculo se transforman en campos de la tabla y las filas de la hoja de clculo se convierten en
registros de la tabla. Se asigna una extensin .wrk al nombre de archivo de hoja de clculo creado en
Symphony versin 1.0.



Manual de Genlis
80
CSV
Incluya CSV para importar datos de un archivo de valores separados por comas. Un archivo CSV contiene
los nombres de campos en la primera lnea del archivo; los nombres de campos se pasarn por alto cuando
se importe el archivo.

XLS
Incluya XLS para importar datos de una hoja de clculo Microsoft Excel. Las columnas de la hoja de clculo
se transforman en campos de la tabla y las filas se convierten en registros de la tabla. Los nombres de
archivos de hoja de clculo creados en Microsoft Excel reciben la extensin .xls.

XL5
Incluya XL5 si desea importar datos de Microsoft Excel versin 5.0. Las columnas de la hoja de clculo se
convierten en campos de la tabla y las filas de la hoja de clculo se convierten en registros de la tabla. Los
archivos de hoja de clculo creados en Microsoft Excel tienen una extensin .xls.omite la clusula SHEET,
se importan los datos de la Hoja1. Para importar datos de una hoja especfica, incluya la palabra clave
SHEET y especifique el nombre de la hoja mediante cNombreHoja.

XL8
Incluya XL8 para importar datos de Microsoft Excel 97. Las columnas de la hoja de clculo se convierten en
campos de la tabla; las filas de la hoja de clculo se convierten en registros de la tabla. Los archivos de hoja
de clculo creados en Microsoft Excel tiene la extensin .xls.
Si omite la clusula SHEET, se importan los datos de la Hoja1. Para importar datos de una hoja especfica,
incluya la palabra clave SHEET y especifique el nombre de la hoja mediante cNombreHoja.

AS nPginaCdigos
Especifica la pgina de cdigos de la tabla o el archivo de origen. Genlis copia el contenido de la tabla o el
archivo de origen y, a medida que copia los datos, los convierte automticamente a la pgina de cdigos de
la tabla actual.
Si especifica un valor no permitido para nPginaCdigos, Genlis generar un mensaje de error. Puede
utilizar GETCP( ) para que nPginaCdigos muestre el cuadro de dilogo Pgina de cdigos, lo que permite
especificar una pgina de cdigos para la tabla o el archivo anexado.
Si omite AS nPginaCdigos y Genlis no puede determinar la pgina de cdigos de la tabla o el archivo de
origen, Genlis copiar el contenido de la tabla o el archivo de origen y, a medida que copia los datos, los
convierte automticamente a la pgina de cdigos actual de Genlis. Si SET CPDIALOG tiene el valor ON, la
tabla del rea de trabajo seleccionada actualmente se marcar con una pgina de cdigos. Si va a anexar
datos de una tabla que no est marcada con una pgina de cdigos, aparecer el cuadro de dilogo Pgina
de cdigos, de forma que pueda elegir la pgina de cdigos de la tabla desde la que est anexando datos.
La pgina de cdigos actual de Genlis puede determinarse mediante CPCURRENT( ).
Si omite AS nPginaCdigos y Genlis puede determinar la pgina de cdigos de la tabla o el archivo que se
est anexando, Genlis copiar el contenido de la tabla o el archivo anexado y, a medida que copia los datos,
los convertir automticamente a la pgina de cdigos de la tabla seleccionada actualmente.
Si nPginaCdigos es 0, Genlis supondr que la pgina de cdigos de la tabla o el archivo que se est
anexando es la misma que la pgina de cdigos de la tabla seleccionada actualmente y no realizar ninguna
conversin a la pgina de cdigos actual de Genlis.


Manual de Genlis
81

Comentarios
Si el archivo desde el que va a anexar datos es una tabla de Genlis o una tabla creada en una versin
anterior de FoxPro, se supone que tiene una extensin .dbf. Si la tabla de Genlis o la tabla creada en una
versin anterior de FoxPro no tiene una extensin .DBF, deber especificar su extensin. Si el archivo no es
una tabla de Genlis ni una tabla creada en una versin anterior de FoxPro, deber especificar el tipo de
archivo desde el que va a anexar datos.
Antes de poder anexar datos de una tabla creada en dBASE IV o dBASE V que contenga un campo memo,
debe abrir primero la tabla en Genlis mediant_e USE. Cuando se le pregunte si desea convertir el archivo,
responda afirmativamente.
Si anexa datos de una tabla de Genlis o de una tabla creada en una versin anterior de FoxPro, la tabla
desde la que anexa datos puede estar abierta en otra rea de trabajo. Los registros marcados para
eliminacin en la tabla cuyos datos est anexando se desmarcan una vez anexados los registros.
Utilice la funcin DBF( ) para anexar desde un cursor temporal de slo lectura creado por un comando
SELECT - SQL. Incluya el nombre del cursor en la funcin DBF( ) como en el ejemplo siguiente:
APPEND FROM DBF('<Nombre del cursor>')


5.5.17. APPEND FROM ARRAY (Comando)

Agrega a la tabla seleccionada actualmente un registro por cada fila de una matriz y llena cada registro con
datos de la fila correspondiente de la matriz.

Sintaxis
APPEND FROM ARRAY NombreMatriz
[FOR lExpresin]
[FIELDS ListaCampos]
| FIELDS LIKE Estructura
| FIELDS EXCEPT Estructura

Argumentos
NombreMatriz
Especifica el nombre de la matriz que contiene los datos que se van a copiar a los nuevos registros. Se
agregan nuevos registros a la tabla hasta que se hayan anexado todas las filas de la matriz.

FOR lExpresin
Especifica una condicin para anexar registros desde la matriz. lExpresin debe contener el nombre de un
campo de destino en su expresin condicional.
Antes de que una fila de la matriz se anexe a un registro de la tabla, se comprueba el elemento de matriz
correspondiente al campo de destino especificado en lExpresin para determinar si cumple la condicin de
lExpresin. Si el elemento de matriz satisface la condicin, se anexa un registro.


Manual de Genlis
82
Si el elemento de matriz no satisface la condicin, la fila de matriz no se anexa y se comprueba la fila
siguiente de la matriz para determinar si cumple la condicin.

FIELDS ListaCampos
Especifica que slo los campos de ListaCampos se actualizan a partir de la matriz. El primer campo de la
lista se actualiza con el contenido del primer elemento de la matriz, el segundo campo se actualiza con el
segundo elemento, etctera.

FIELDS LIKE Estructura
Especifica que los campos que coincidan con la estructura de campos Estructura se actualizan a partir de la
matriz.

FIELDS EXCEPT Estructura
Especifica que todos los campos excepto los que coincidan con la estructura de campos Estructura se
actualizan a partir de la matriz.
La estructura de campos Estructura admite caracteres comodn. Por ejemplo, para especificar que todos los
campos que comiencen con las letras A y P se actualizan de la matriz, utilice lo siguiente:

APPEND FROM ARRAY aMiMatriz FIELDS LIKE A*,P*
Puede combinar la clusula LIKE con la clusula EXCEPT:
APPEND FROM ARRAY aMiMatriz FIELDS LIKE A*,P* EXCEPT PARTNO*

Comentarios
Los campos memo y general se pasan por alto en APPEND FROM ARRAY. Cuando se abre una tabla para
uso compartido, APPEND FROM ARRAY bloquea el encabezado de la tabla mientras se agregan los
registros.
Si la matriz es de una dimensin, APPEND FROM ARRAY agregar un registro a la tabla. El contenido del
primer elemento de la matriz llena el primer campo del nuevo registro agregado, el contenido del segundo
elemento de la matriz llena el segundo campo del registro y as sucesivamente.
Si la matriz de una dimensin tiene ms elementos que campos tenga la tabla, los elementos adicionales se
pasarn por alto. Si la tabla tiene ms campos que elementos la matriz, los campos adicionales se
inicializarn con el valor vaco predeterminado. stos son los valores vacos predeterminados para cada tipo
de campo:

Valores predeterminados de cada tipo de campo
Tipo de campo Valor predeterminado
Carcter Espacios
Numrico 0
Moneda 0
Flotante 0
Entero 0
Doble 0
Fecha Fecha vaca (p. ej. CTOD(""))
FechaHora FechaHora vaca (p. ej. CTOT(""))


Manual de Genlis
83
Lgico Falso .F.
Memo Vaco, sin contenido


Si la matriz es de dos dimensiones, APPEND FROM ARRAY agregar un nuevo registro a la tabla por cada
fila de la matriz. Por ejemplo, si la matriz tiene cuatro filas, se anexarn cuatro nuevos registros a la tabla.
El contenido de la primera columna de la matriz llena el primer campo de los nuevos registros anexados, la
segunda columna de la matriz llena el segundo campo de los nuevos registros, etc. Por ejemplo, si la matriz
tiene cuatro filas y tres columnas, los elementos de la primera columna de la matriz llenarn el primer campo
de cada uno de los cuatro nuevos registros anexados a la tabla.
Si la matriz de dos dimensiones tiene ms columnas que campos hay en la tabla, las columnas adicionales
se pasarn por alto. Si la tabla tiene ms campos que columnas hay en la matriz, los campos adicionales se
inicializarn con valores vacos.
APPEND FROM ARRAY puede llenar un campo incluso si el tipo de datos del elemento de matriz
correspondiente no coincide con el tipo de datos del campo, siempre y cuando los datos del elemento de
matriz sean compatibles con el tipo de datos del campo correspondiente. Si los datos no son compatibles,
el campo se inicializa con un valor vaco.


5.5.18. ASC( ) (Funcin)

Devuelve el cdigo ANSI del carcter situado ms a la izquierda en una expresin de caracteres.

Sintaxis
ASC(cExpresin)

Tipo devuelto
Numeric

Argumentos
cExpresin
Especifica la expresin de caracteres que contiene el carcter cuyo valor ANSI devuelve ASC(). ASC( ) pasa
por alto los caracteres que aparezcan despus del primer carcter de cExpresin.

Comentarios
ASC( ) devuelve la posicin del carcter en la tabla de caracteres de la pgina de cdigos actual. Cada
carcter tiene un valor ANSI nico entre 0 y 255.




Manual de Genlis
84
5.5.19. ASCAN( ) (Funcin)

Busca en una matriz un elemento que contenga los mismos datos y el mismo tipo de datos que una
expresin.

Sintaxis
ASCAN(NombreMatriz, eExpresin [, nElementoInicial [, nElementosBuscados]])

Tipo devuelto
Numeric

Argumentos
NombreMatriz
Especifica el nombre de la matriz en la que se va a buscar.

eExpresin
Especifica la expresin general que se va a buscar.

nElementoInicial
Especifica el nmero de elemento en el que empieza la bsqueda. El nmero de elemento que especifique
se incluir en la bsqueda. Si omite nElementoInicial, se buscar en toda la matriz de forma predeterminada.

nElementosBuscados
Especifica el nmero de elementos que se van a buscar. Si omite nElementoInicial y nElementosBuscados,
la bsqueda empezar por el primer elemento y continuar hasta el ltimo elemento de la matriz.

Nota. Puede hacer referencia de dos formas a un elemento de una matriz bidimensional de variables. El
primer mtodo utiliza dos subndices para especificar la posicin de fila y columna del elemento de la matriz;
el otro mtodo utiliza un nmero de elemento. Esta funcin y otras que manipulan matrices de dos
dimensiones requieren nmeros de elemento(nElementoInicial y nElementosBuscados). Utilice AELEMENT( )
para devolver el nmero de elemento a partir de los subndices de fila y columna de una matriz de dos
dimensiones.


Comentarios
Si se encuentra alguna coincidencia, ASCAN( ) devolver el nmero del elemento que contiene la expresin.
Si no se encuentra ninguna coincidencia, devolver 0.
El criterio para considerar vlida una coincidencia de datos de caracteres viene determinado por la
configuracin de SET EXACT. Si SET EXACT est establecido en ON, el elemento deber coincidir con la
expresin de bsqueda carcter a carcter y tener la misma longitud. Si SET EXACT est establecido en
OFF y el elemento y la expresin de bsqueda coinciden hasta el final de la expresin, la coincidencia ser
vlida.



Manual de Genlis
85

5.5.20. ASIN( ) (Funcin)

Devuelve en radianes el arco seno de una expresin numrica.

Sintaxis
ASIN(nExpresin)

Tipo devuelto
Numeric

Argumentos
nExpresin
Especifica la expresin numrica cuyo arco seno devuelve ASIN( ). El valor de nExpresin puede oscilar entre
+1 y 1, y el valor que ASIN( ) devuelve puede ir desde pi/2 hasta +pi/2 ( 1,57079 hasta 1,57079). El
nmero de decimales que se presentan en el resultado puede especificarse mediante SET DECIMALS.

Comentarios
Utilice RTOD( ) para convertir radianes en grados.


5.5.21. ASORT( ) (Funcin)

Ordena los elementos de una matriz en sentido ascendente o descendente.

Sintaxis
ASORT(NombreMatriz [, nElementoInicial [, nNmeroOrdenado [, nOrden]]])

Tipo devuelto
Numeric

Argumentos
NombreMatriz
Especifica el nombre de la matriz que va a ordenar.

nElementoInicial
Especifica el elemento inicial de la ordenacin. Si omite nElementoInicial, de forma predeterminada la matriz
se ordenar a partir de su primer elemento. Si la matriz es de una dimensin, la ordenacin incluir
nElementoInicial. Si la matriz es de dos dimensiones, el elemento inicial nElementoInicial determinar tanto la
fila donde comienza el orden como la columna que determina el sentido en que se ordenan las filas.


Manual de Genlis
86

Nota Puede hacer referencia de dos formas a un elemento de una matriz de dos dimensiones. En el primer
mtodo se utilizan dos subndices para especificar la posicin de fila y columna del elemento de la
matriz; en el otro mtodo se utiliza un nmero de elemento. Esta funcin y otras que manipulan matrices de
dos dimensiones requieren nmeros de elemento (en ASORT( ) las expresiones numricas nElementoInicial y
nNmeroOrdenado). Puede utilizar AELEMENT( ) para devolver el nmero de elemento de los subndices de
fila y columna de una matriz de dos dimensiones.
El ejemplo siguiente muestra que el elemento inicial nElementoInicial determina cmo se ordenan las filas en
una matriz de dos dimensiones. Se crea una pequea matriz denominada gaMatriz y se ordena dos veces.
La primera ordenacin comienza por el primer elemento de gaMatriz y las filas se ordenan segn los valores
contenidos en la primera columna de la matriz. La segunda ordenacin comienza por el cuarto elemento de
gaMatriz y las filas se ordenan segn los valores contenidos en la segunda columna.
La primera vez se ordena a partir de la primera fila. La segunda ordenacin comienza por la segunda fila.
Puede utilizar DISPLAY MEMORY para mostrar el contenido de la matriz; en estos ejemplos se utilizan tablas
para mostrar grficamente el resultado del orden.
Estos comandos crean la matriz denominada gaMatriz:

DIMENSION gaMatriz(3,2)
gaMatriz(1) = 'G'
gaMatriz(2) = 'A'
gaMatriz(3) = 'C'
gaMatriz(4) = 'Z'
gaMatriz(5) = 'B'
gaMatriz(6) = 'N'
gaMatriz tiene la apariencia siguiente:

Columna 1 Columna 2
Fila 1 G A
Fila 2 C Z
Fila 3 B N

Luego se ordena la matriz con ASORT( ) a partir del primer elemento (1,1) de la matriz. Los elementos de la
primera columna se ordenan en sentido ascendente al reorganizar las filas de la matriz.
=ASORT(gaMatriz,1)
Observe el nuevo orden de las filas:

Columna 1 Columna 2
Fila 1 B N
Fila 2 C Z
Fila 3 G A

Luego se ordena la matriz a partir del cuarto elemento (2,2) de la matriz. Los elementos de la segunda
columna se ordenan al reorganizar las filas de la matriz.
=ASORT(gaMatriz,4)


Manual de Genlis
87
Observe la diferencia en el orden de las filas:

Columna 1 Columna 2
Fila 1 B N
Fila 2 G A
Fila 3 C Z

nNmeroOrdenado
Especifica el nmero de elementos que se ordenan en una matriz de una dimensin o el nmero de filas que
se ordenan en una matriz de dos dimensiones. Por ejemplo, si la matriz es de una dimensin y
nElementoInicial es 2, que indica que la ordenacin comenzar por el segundo elemento de la matriz, y
nNmeroOrdenado es 3, que indica que el orden debe incluir tres elementos, se ordenarn los elementos
segundo, tercero y cuarto de la matriz. Si nNmeroOrdenado es 1 o se omite, se ordenarn todos los
elementos de la matriz, desde el elemento inicial nElementoInicial hasta el ltimo elemento.
Si la matriz es de dos dimensiones, nNmeroOrdenado designar el nmero de filas que se van a ordenar, a
partir de la fila que contiene el elemento inicial nElementoInicial. Por ejemplo, si nElementoInicial es 2 y
nNmeroOrdenado es 3, se ordenarn la fila que contiene el segundo elemento de la matriz y las dos filas
siguientes. Si nNmeroOrdenado es 1 o se omite, se ordenarn todas las filas de la matriz, desde la fila que
contiene nElementoInicial hasta la ltima fila de la matriz.

nOrden
Especifica el sentido de ordenacin (ascendente o descendente) para los elementos de la matriz. De forma
predeterminada, los elementos de la matriz se ordenan en sentido ascendente. Si nOrden es 0 o se omite,
los elementos de la matriz se ordenarn en sentido ascendente. Si nOrden es 1 o cualquier valor distinto de
cero, los elementos de la matriz se ordenarn en sentido descendente.

Comentarios
Todos los elementos incluidos en la ordenacin deben ser del mismo tipo de datos. Las matrices de una
dimensin se ordenan por elementos, mientras que las matrices de dos dimensiones se ordenan por filas.
Cuando se ordena una matriz de dos dimensiones, el orden de las filas de la matriz se cambia para que los
elementos de una columna de la matriz estn en orden ascendente o descendente.
Si el orden se ha realizado satisfactoriamente, se devolver 1; de lo contrario se devolver 1.


5.5.22. ASSERT (Comando)

Muestra un cuadro de mensaje cuando una expresin lgica da como resultado falso (.F.).

Sintaxis
ASSERT lExpresin [MESSAGE cTextoMensaje]

Argumentos


Manual de Genlis
88
lExpresin
Especifica la expresin lgica evaluada. Si lExpresin da como resultado un valor lgico falso (.F.), se
mostrar un cuadro de dilogo. Si lExpresin da como resultado un valor lgico verdadero (.T.), no se
mostrar el cuadro de dilogo.

cTextoMensaje
Especifica el texto mostrado en el cuadro de dilogo de depuracin. Si omite cTextoMensaje, se mostrar el
texto predeterminado, que indica el nmero de la lnea en que ha fallado la asercin y el procedimiento que
contiene la asercin.

Comentarios
Este comando se pasa por alto si el comando SET ASSERTS tiene el valor OFF.
El cuadro de mensajes contiene los botones Depurar, Pasar por alto y Pasar por alto todos. En la siguiente
tabla se describe la accin que se realiza al elegir cada botn.

Cuadro de mensajes
Botn Accin
Depurar
Se suspende la ejecucin del programa y se muestra la ventana Depurador con la ventana
Seguimiento activa.
Cancelar Se termina la ejecucin del programa.
Pasar por alto La ejecucin del programa contina con la lnea que est a continuacin del comando ASSERT.
Pasar por alto
todos
Contina la ejecucin del programa con la lnea que est a continuacin del comando ASSERT y
se asigna a ASSERTS el valor OFF. Los subsiguientes comandos ASSERT se pasarn por alto
hasta que ASSERTS tenga el valor ON.


5.5.23. ASUBSCRIPT( ) (Funcin)

Devuelve el subndice de fila o columna de un elemento a partir del nmero de elemento.

Sintaxis
ASUBSCRIPT(NombreMatriz, nNmeroElemento, nSubndice)

Tipo devuelto
Numeric

Argumentos
NombreMatriz
Especifica el nombre de la matriz.

nNmeroElemento
Especifica el nmero de elemento.


Manual de Genlis
89

nSubndice
Determina si se devuelve el subndice de fila o el de columna.
Si la matriz es de una dimensin, incluya el nmero de elemento en nNmeroElemento y 1 en nSubndice.
ASUBSCRIPT( ) devolver nNmeroElemento.
Si la matriz es de dos dimensiones, deber incluir el nmero de elemento nNmeroElemento y un valor de 1
2 en nSubndice. Si especifica 1 en nSubndice, se devolver el subndice de fila del elemento; si especifica
2, se devolver el subndice de columna.

Comentarios
Puede hacerse referencia de dos formas a los elementos de las matrices bidimensionales de variables. El
primer mtodo utiliza dos subndices para especificar la posicin de fila y columna del elemento de la matriz.
El segundo mtodo utiliza un nmero de elemento. Utilice ASUBSCRIPT( ) para obtener el subndice de fila o
columna de un elemento a partir del nmero de elemento.
Estos dos comandos almacenan la cadena de caracteres FACTURA en el mismo elemento de la matriz:
STORE 'FACTURA' TO gaMatriz(2, 1)
STORE 'FACTURA' TO gaMatriz(4)
En las matrices de una dimensin, un nmero de elemento es igual que su subndice de fila nico. No es
necesario utilizar ASUBSCRIPT( ) con las matrices de una dimensin.


5.5.24. AT( ) (Funcin)

Devuelve la posicin numrica inicial de la primera aparicin de una expresin de caracteres o de un campo
memo en otra expresin de caracteres o campo memo; se cuenta desde el carcter situado ms a la
izquierda.

Sintaxis
AT(cExpresinBsqueda, cExpresinBuscada [, nAparicin])

Tipos devueltos
Numeric

Argumentos
cExpresinBsqueda
Especifica la expresin de caracteres que AT( ) busca en cExpresinBuscada.

cExpresinBuscada
Especifica la expresin de caracteres que cExpresinBsqueda busca.
Tanto cExpresinBsqueda como cExpresinBuscada pueden ser campos memo de cualquier tamao.

nAparicin


Manual de Genlis
90
Especifica qu aparicin (primera, segunda, tercera, etc.) de cExpresinBsqueda se busca en
cExpresinBuscada. De forma predeterminada, AT( ) busca la primera aparicin de cExpresinBsqueda
(nAparicin = 1). Si incluye nAparicin, podr buscar otras apariciones adicionales de cExpresinBsqueda
en cExpresinBuscada. AT( ) devolver 0 si nAparicin es mayor que el nmero de veces que
cExpresinBsqueda aparece en cExpresinBuscada.

Comentarios
AT( ) busca en la segunda expresin de caracteres la primera aparicin de la primera expresin de
caracteres. Luego devuelve un valor entero que indica la posicin del primer carcter de la expresin de
caracteres encontrada. Si la expresin de caracteres no se encuentra, AT( ) devolver 0.
La bsqueda realizada por AT( ) distingue maysculas de minsculas. Para realizar una bsqueda que no
distinga entre ambas, utilice ATC( ).


5.5.25. AT_C( ) (Funcin)

Devuelve la posicin numrica inicial de la primera aparicin de una expresin de caracteres o un campo
memo en otra expresin de caracteres o campo memo; se cuenta a partir del carcter situado ms a la
izquierda.

Sintaxis
AT_C(cExpresinBsqueda, cExpresinBuscada [, nAparicin])

Tipos devueltos
Numeric

Argumentos
cExpresinBsqueda
Especifica la expresin de caracteres que AT_C( ) intenta encontrar en cExpresinBuscada.

cExpresinBuscada
Especifica la expresin de caracteres que busca cExpresinBsqueda.
Tanto cExpresinBsqueda como cExpresinBuscada pueden ser campos memo de cualquier tamao.

nAparicin
Especifica qu aparicin (primera, segunda, tercera, etc.) de cExpresinBsqueda se intenta encontrar en
cExpresinBuscada. De forma predeterminada, AT_C( ) busca la primera aparicin de cExpresinBsqueda
(nAparicin = 1). Si incluye nAparicin, podr buscar otras apariciones adicionales de cExpresinBsqueda
en cExpresinBuscada. AT_C( ) devuelve 0 si nAparicin es mayor que el nmero de veces que aparece
cExpresinBsqueda en cExpresinBuscada.

Comentarios


Manual de Genlis
91
AT_C( ) examina la segunda expresin de caracteres en busca de la primera aparicin de la primera
expresin de caracteres. Despus devuelve un entero que indica la posicin del primer carcter en la
expresin de caracteres que ha encontrado. Si no se encuentra la expresin de caracteres, AT_C( ) devuelve
0.
AT_C( ) se dise para expresiones que contengan caracteres de dos bytes. Si la expresin contiene slo
caracteres de un byte, AT_C( ) equivale a AT( ).
En la bsqueda que realiza AT_C( ) se distingue entre maysculas y minsculas. Para realizar una bsqueda
que no distinga entre maysculas y minsculas, utilice ATCC( ).
Esta funcin es til para manipular juegos de caracteres de doble byte para idiomas como Hiragana y
Hatakana.


5.5.26. ATAN( ) (Funcin)

Devuelve el arcotangente en radianes de una expresin numrica.

Sintaxis
ATAN(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica una expresin numrica cuyo arcotangente devuelve ATAN( ). nExpresin puede ser cualquier
valor. El valor devuelto por ATAN( ) puede oscilar entre pi/2 y +pi/2 (1,57079 y 1,57079). El nmero de
decimales que se muestran del valor devuelto por ATAN( ) est determinado por SET DECIMALS.

Comentarios
Utilice RTOD( ) para convertir radianes en grados.


5.5.27. ATC( ) (Funcin)

Devuelve la posicin numrica inicial de la primera aparicin de una expresin de caracteres o un campo
memo en otra expresin de caracteres o campo memo, sin distinguir entre maysculas y minsculas en
dichas dos expresiones.

Sintaxis
ATC(cExpresinBsqueda, cExpresinBuscada [, nAparicin])


Manual de Genlis
92

Tipos devueltos
Numeric

Argumentos
cExpresinBsqueda
Especifica la expresin de caracteres que ATC( ) busca en cExpresinBuscada.

cExpresinBuscada
Especifica la expresin de caracteres que busca cExpresinBsqueda.
Tanto cExpresinBsqueda como cExpresinBuscada pueden ser campos memo de cualquier tamao.

nAparicin
Especifica qu aparicin (primera, segunda, tercera, etc.) de cExpresinBsqueda se busca en
cExpresinBuscada. De forma predeterminada, ATC( ) busca la primera aparicin de cExpresinBsqueda
(nAparicin = 1). Si incluye nAparicin, podr buscar otras apariciones adicionales de cExpresinBsqueda
en cExpresinBuscada.

Comentarios
ATC( ) busca en la segunda expresin de caracteres la aparicin de la primera expresin de caracteres, sin
importar si las letras son maysculas o minsculas en ninguna de las expresiones. Utilice AT( ) para realizar
una bsqueda que s distinga maysculas y minsculas.
ATC( ) devuelve un valor entero correspondiente a la posicin en que se encuentra el primer carcter de la
expresin de caracteres. Si no se encuentra la expresin de caracteres, se devolver 0.


5.5.28. ATCC( ) (Funcin)

Devuelve la posicin numrica inicial de la primera aparicin de una expresin de caracteres o de un campo
memo en otra expresin de caracteres o campo memo, sin tener en cuenta las maysculas o minsculas en
ninguna de las dos expresiones.

Sintaxis
ATCC(cExpresinBsqueda, cExpresinBuscada [, nAparicin])

Tipos devueltos
Numeric

Argumentos
ExpresinBsqueda
Especifica la expresin de caracteres que ATCC( ) intentar encontrar en cExpresinBuscada.


Manual de Genlis
93

cExpresinBuscada
Especifica la expresin de caracteres que ExpresinBsqueda intenta encontrar.
Tanto ExpresinBsqueda como cExpresinBuscada pueden ser campos memo de cualquier tamao.

nAparicin
Especifica qu aparicin (primera, segunda, tercera, etc.) de ExpresinBsqueda se intentar encontrar en
cExpresinBuscada. De forma predeterminada, ATCC( ) buscar la primera aparicin de ExpresinBsqueda
(nAparicin = 1). Si incluye nAparicin podr buscar ms apariciones de ExpresinBsqueda en
cExpresinBuscada.

Comentarios
ATCC( ) est diseada para expresiones que contienen caracteres de dos bytes. Si la expresin slo
contiene bytes de un carcter, ATCC( ) equivaldr a ATC( ).
ATCC( ) examina la segunda expresin de caracteres en busca de la aparicin de la primera expresin de
caracteres, sin fijarse en si los caracteres estn en maysculas o en minsculas en las expresiones. Utilice
AT_C( ) para realizar una bsqueda en la que se distinga entre maysculas y minsculas.
ATCC( ) devuelve un entero que corresponde a la posicin en que se ha encontrado el primer carcter de la
expresin de caracteres. Si no se encuentra la expresin de caracteres, ATCC( ) devolver 0.
Esta funcin es til para manipular juegos de caracteres de doble byte en idiomas como Hiragana y
Hatakana.


5.5.29. ATCLINE( ) (Funcin)

Devuelve el nmero de lnea de la primera aparicin de una expresin de caracteres o campo memo en otra
expresin de caracteres o campo memo, sin importar que los caracteres estn en maysculas o en
minsculas.

Sintaxis
ATCLINE(cExpresinBsqueda, cExpresinBuscada)

Tipos devueltos
Numeric

Argumentos
cExpresinBsqueda
Especifica la expresin de caracteres que ATCLINE( ) busca en cExpresinBuscada.

cExpresinBuscada
Especifica la expresin de caracteres que busca cExpresinBsqueda.


Manual de Genlis
94
Los argumentos cExpresinBsqueda y cExpresinBuscada pueden ser campos memo de cualquier
tamao. Utilice MLINE( ) para devolver la lnea que contiene la expresin de caracteres coincidente.

Sugerencia. ATCLINE( ) ofrece una forma cmoda de buscar en campos memo.

Comentarios
Si la bsqueda se realiza con xito, ATCLINE( ) devolver el nmero de la lnea que contiene la primera
expresin de caracteres. Si la bsqueda no se realiza con xito, ATCLINE( ) devolver 0.


5.5.30. ATLINE( ) (Funcin)

Devuelve el nmero de lnea de la primera aparicin de una expresin de caracteres o campo memo dentro
de otra expresin de caracteres o campo memo, a partir de la primera lnea.

Sintaxis
ATLINE(cExpresinBsqueda, cExpresinBuscada)

Tipos devueltos
Numeric

Argumentos
cExpresinBsqueda
Especifica la expresin de caracteres que Genlis busca en cExpresinBuscada.

cExpresinBuscada
Especifica la expresin de caracteres que busca cExpresinBsqueda.
Los argumentos cExpresinBsqueda y cExpresinBuscada pueden ser campos memo de cualquier
tamao.
Utilice MLINE( ) para devolver como una cadena de caracteres la lnea que contiene la expresin de
caracteres coincidente.

Sugerencia. ATLINE( ) ofrece una forma muy til de buscar en los campos memo.

Comentarios
ATLINE( ) busca en la segunda expresin de caracteres la aparicin de la primera expresin de caracteres.
Al examinar las expresiones, ATLINE( ) tiene en cuenta si los caracteres estn en maysculas o en
minsculas. Utilice ATCLINE( ) para realizar una bsqueda que no distinga maysculas y minsculas.
Si la bsqueda se realiza con xito, ATLINE( ) devolver el nmero de la lnea donde se produce la
coincidencia. Si la bsqueda no se realiza con xito, ATLINE( ) devolver 0.




Manual de Genlis
95
5.5.31. ATN2( ) (Funcin)

Devuelve el arcotangente en los cuatro cuadrantes de los valores especificados.

Sintaxis
ATN2(nCoordenadaY, nCoordenadaX)


Tipos devueltos
Numeric

Argumentos
nCoordenadaY
Especifica la coordenada y.

nCoordenadaX
Especifica la coordenada x.

Comentarios
ATN2( ) devuelve el ngulo (en radianes) existente entre la lnea y = 0 y la lnea que conecta las coordenadas
especificadas y el origen (0, 0) del sistema de coordenadas.
El valor de ATN2( ) debe estar entre - pi/2 y + pi/2.


5.5.32. AUSED( ) (Funcin)

Incluye en una matriz de variables los alias de tabla y las reas de trabajo para una sesin de datos.

Sintaxis
AUSED(NombreMatriz [, nNmeroSesinDatos])

Tipo devuelto
Numeric

Argumentos
NombreMatriz
Especifica el nombre de la matriz que contiene los alias de tabla y las reas de trabajo para una sesin de
datos. Si la matriz especificada no existe, Genlis la crear automticamente. Si la matriz existe y no es
suficientemente grande para contener todos los alias de tabla y las reas de trabajo, Genlis aumentar
automticamente su tamao. Si la matriz es demasiado grande, Genlis reducir su tamao. Si la matriz


Manual de Genlis
96
existe y AUSED( ) devuelve 0 porque no hay ninguna tabla abierta en la sesin de datos, la matriz
permanecer inalterada. Si la matriz no existe y AUSED( ) devuelve 0, no se crear la matriz.

nNmeroSesinDatos
Especifica el nmero de sesin de datos cuyos alias de tabla y reas de trabajo devuelve AUSED( ). Si omite
nNmeroSesinDatos, AUSED( ) devolver informacin acerca de la sesin de datos actual. Utilice SET
SESSION para especificar la sesin de datos actual.

Comentarios
AUSED( ) devuelve el nmero de filas de la matriz, que es igual al nmero de tablas abiertas en la sesin de
datos.
AUSED( ) crea una matriz de dos dimensiones y coloca los alias de las tablas abiertas para la sesin de
datos en la primera columna de la matriz. La segunda columna de la matriz contiene los nmeros de rea de
trabajo correspondientes a las tablas.


5.5.33. AVERAGE (Comando)

Calcula la media aritmtica de expresiones o de campos numricos.

Sintaxis
AVERAGE [ListaExpresiones]
[Alcance] [FOR lExpresin1] [WHILE lExpresin2]
[TO ListaVariablesMemoria | TO ARRAY NombreMatriz]
[NOOPTIMIZE]

Argumentos
ListaExpresiones
Especifica las expresiones cuya media se calcula. ListaExpresiones puede ser una lista de campos de la
tabla separados por comas o expresiones numricas que utilicen campos de la tabla.

Alcance
Especifica el registro o el intervalo de registros que se desea incluir en el promedio. Slo se calcula el
promedio de aquellos registros que estn dentro del intervalo especificado por el alcance. Las clusulas de
alcance son: ALL, NEXT nRegistros, RECORD nNmeroRegistro y REST. El alcance predeterminado para
AVERAGE es ALL.
Los comandos que incluyen Alcance slo actan sobre la tabla del rea de trabajo activa.

FOR lExpresin1
Especifica una condicin por la que slo se incluyen aquellos registros que satisfagan la condicin lgica
lExpresin. Este argumento permite filtrar los registros no deseados.


Manual de Genlis
97
Rushmore optimiza una consulta AVERAGE FOR si lExpresin es una expresin optimizable. Para conseguir
el mximo rendimiento, utilice una expresin optimizable en la clusula FOR.

WHILE lExpresin2
Especifica que, siempre y cuando la expresin lgica lExpresin2 se evale como verdadera(.T.), los
registros se incluirn en el promedio.

TO ListaVariablesMemoria
Especifica la lista de variables o elementos de matriz donde se almacena el resultado del promedio.

TO ARRAY NombreMatriz
Especifica la matriz de una dimensin donde se almacena el resultado del promedio. La matriz de una
dimensin puede crearse antes de ejecutar AVERAGE.
Si la matriz que se incluye en AVERAGE no existe, Genlis la crear automticamente. Si la matriz existe pero
no es suficientemente grande para contener todos los resultados, Genlis aumenta su tamao
automticamente para dar cabida a la informacin.

NOOPTIMIZE

Comentarios
Se calcula el promedio de todos los campos numricos de la tabla seleccionada, a menos que incluya una
lista opcional de expresiones. El resultado aparecer en la pantalla si SET TALK est establecido en ON. Si
SET HEADINGS est establecido en ON, los nombres de campo o la expresin en que se utilicen los
nombres de campo aparecern encima del resultado.


5.5.34. BETWEEN( ) (Funcin)

Determina si el valor de una expresin queda dentro de los valores de otras dos expresiones del mismo tipo
de datos.

Sintaxis
BETWEEN(eValorPrueba, eValorInferior, eValorSuperior)

Tipos devueltos
Logical o valor nulo

Argumentos
eValorPrueba
Especifica la expresin cuyo valor comprueba BETWEEN( ). Si el valor de eValorPrueba es mayor o igual que
el valor de eValorInferior, y menor o igual que el valor de eValorSuperior, BETWEEN( ) devolver verdadero


Manual de Genlis
98
(.T.). De lo contrario, BETWEEN( ) devolver falso (.F.). BETWEEN( ) devuelve el valor nulo si eValorInferior o
eValorSuperior son el valor nulo.

eValorInferior
Especifica el valor inferior del intervalo que evala BETWEEN( ).

eValorSuperior
Especifica el valor superior del intervalo que evala BETWEEN( ).

Comentarios
BETWEEN( ) devuelve el valor verdadero (.T.) si el valor de una expresin de tipo Character, Date, DateTime,
Numeric, Float, Integer, Double o Currency est dentro de los valores de otras dos expresiones del mismo
tipo de datos. Si el valor de la expresin no queda dentro de los valores de las otras dos expresiones,
BETWEEN( ) devolver falso (.F.). BETWEEN( ) devuelve el valor nulo si eValorInferior o eValorSuperior son el
valor nulo.


5.5.35. BINTOC( ) (Funcin)

Convierte un valor entero a una representacin del mismo en caracteres binarios.

Sintaxis
BINTOC(nExpresin [, nTamao])

Tipos devueltos
Character

Argumentos
nExpresin
Especifica el valor entero que hay que convertir.

nTamao
Especificar la longitud en caracteres de la cadena de caracteres devuelta.
nTamao tambin determina el valor que puede especificar para nExpresin. La tabla siguiente presenta los
valores permitidos para nTamao y el intervalo de valores correspondiente para nExpresin:
nTamao Intervalo de nExpresin
1 -128 a 127
2 -32.768 a 32.767
4 (predeterminado) -2.147.483.648 a 2.147.483.647

Si se omite nTamao, BINTOC( ) devuelve una cadena de caracteres formada por cuatro caracteres.



Manual de Genlis
99
Comentarios
BINTOC( ) se puede utilizar para reducir el tamao de ndices para campos numricos que contienen datos
de tipo Integer. Por ejemplo, un campo numrico llamado iPartCode contiene un valor entero que vara entre
1 y 127 que corresponde a un cdigo de clasificacin de partes. BINTOC( ) permite convertir el valor del
campo numrico en una representacin de carcter. Por ejemplo, el siguiente comando crea un ndice con
una clave de ndice de un carcter:
INDEX ON BINTOC(nPartCode,1) TAG PartCode


5.5.36. BITAND( ) (Funcin)

Devuelve el resultado de una operacin AND a nivel de bits realizada en dos valores numricos.

Sintaxis
BITAND(nExpresin1, nExpresin2)

Tipos devueltos
Numeric

Argumentos
nExpresin1, nExpresin2
Especifica los valores numricos en que se realiza la operacin AND a nivel de bits. Si nExpresin1 y
nExpresin2 no son enteros, se convertirn en enteros antes de que se realice la operacin AND a nivel de
bits.

Comentarios
BITAND( ) compara cada bit de nExpresin1 con el bit correspondiente de nExpresin2. Si los bits de
nExpresin1 y nExpresin2 son 1, el bit de resultado correspondiente se establecer como 1; de lo
contrario, el bit de resultado correspondiente se establecer como 0.
La tabla siguiente muestra el resultado de una operacin AND a nivel de bits de los bits nExpresin1 y
nExpresin2 correspondientes:

Bit nExpresin1 Bit nExpresin2 Bit resultante
0 0 0
0 1 0
1 1 1
1 0 0




Manual de Genlis
100
5.5.37. BITCLEAR( ) (Funcin)

Borra un bit especificado (establece el bit como 0) en un valor numrico y devuelve el valor resultante.

Sintaxis
BITCLEAR(nExpresin1, nExpresin2)

Tipos devueltos
Numeric

Argumentos
nExpresin1
Especifica el valor numrico en el que se desactiva un bit. Si nExpresin1 no es un entero, se convertir en
entero antes de que se establezca su bit.

nExpresin2
Especifica la posicin de bit de nExpresin1 que se desactiva. nExpresin2 puede ir de 0 a 31; 0 es el bit de
la derecha.


5.5.38. BITLSHIFT( ) (Funcin)

Devuelve el resultado de desplazar un nmero especfico de posiciones hacia la izquierda los bits de un valor
numrico.

Sintaxis
BITLSHIFT(nExpresin1, nExpresin2)

Tipos devueltos
Numeric

Argumentos
nExpresin1
Especifica el valor numrico cuyos bits se desplazan a la izquierda. Si nExpresin1 no es un entero, se
convertir en un entero antes de desplazar sus bits.

nExpresin2
Especifica el nmero de posiciones de bit que se van a desplazar. Si nExpresin2 no es un entero, se
convertir en un entero.




Manual de Genlis
101
5.5.39. BITNOT( ) (Funcin)

Devuelve el resultado de una operacin NOT a nivel de bits realizada sobre un valor numrico.

Sintaxis
BITNOT(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica el valor numrico en que se lleva a cabo la operacin NOT a nivel de bits. Si nExpresin no es un
entero, se convertir en un entero antes de que se desplacen sus bits.

Comentarios
BITNOT( ) devuelve el complemento a nivel de bits de nExpresin. El valor numrico devuelto por BITNOT( )
representa nExpresin con cada bit con el valor 0 desplazado a 1 y cada bit con valor 1 desplazado a 0.
La tabla siguiente muestra el resultado de una operacin NOT a nivel de bits sobre nExpresin:
Bit de nExpresin Bit resultante
0 1
1 0


5.5.40. BITOR( ) (Funcin)

Devuelve el resultado de una operacin OR inclusiva a nivel de bits realizada sobre dos valores numricos.

Sintaxis
BITOR(nExpresin1, nExpresin2)

Tipos devueltos
Numeric

Argumentos
nExpresin1, nExpresin2
Especifica los valores numricos en los que se lleva a cabo la operacin OR inclusiva a nivel de bits. Si
nExpresin1 y nExpresin2 no son enteros, se convertirn en enteros antes de que se realice la operacin
OR inclusiva a nivel de bits.

Comentarios


Manual de Genlis
102
BITOR( ) compara cada bit de nExpresin1 con el bit correspondiente de nExpresin2. Si algn bit de
nExpresin1 o de nExpresin2 es 1, el bit de resultado correspondiente se establecer como 1; de lo
contrario, el bit de resultado correspondiente se establecer como 0.
La tabla siguiente muestra el resultado de una operacin OR inclusiva sobre los correspondientes bits de
nExpresin1 y nExpresin2:

Bit de nExpresin1 Bit de nExpresin2 Bit resultante
0 0 0
0 1 1
1 0 1
1 1 1


5.5.41. BITRSHIFT( ) (Funcin)

Devuelve el resultado de desplazar un nmero especfico de posiciones hacia la derecha los bits de un valor
numrico.

Sintaxis
BITRSHIFT(nExpresin1, nExpresin2)

Tipos devueltos
Numeric

Argumentos
nExpresin1
Especifica el valor numrico cuyos bits se desplazan hacia la derecha. Si nExpresin1 no es un entero, se
convertir en un entero antes de que se desplacen sus bits.

nExpresin2
Especifica el nmero de posiciones de bit que se van a desplazar. Si nExpresin2 no es un entero, se
convertir en un entero.


5.5.42. BITSET( ) (Funcin)

Establece como 1 el bit de un valor numrico y devuelve el valor resultante.

Sintaxis
BITSET(nExpresin1, nExpresin2)


Manual de Genlis
103

Tipos devueltos
Numeric

Argumentos
nExpresin1
Especifica el valor numrico en el que se establece un bit. Si nExpresin1 no es un entero, se convertir en
un entero antes de que se establezca su bit.

nExpresin2
Especifica la posicin de bit de nExpresin1 que se establece como 1. nExpresin2 puede ir de 0 a 31; 0 es
el bit ms a la derecha.


5.5.43. BITTEST( ) (Funcin)

Devuelve verdadero (.T.) si un bit especificado en un valor numrico se establece como 1; de lo contrario,
devuelve falso (.F.).

Sintaxis
BITTEST(nExpresin1, nExpresin2)

Tipos devueltos
Logical

Argumentos
nExpresin1
Especifica el valor numrico en el que se comprueba un bit. Si nExpresin1 no es un entero, se convertir en
un entero antes de comprobar su bit.

nExpresin2
Especifica la posicin de bit de nExpresin1 que se comprueba. nExpresin2 puede ir de 0 a 31; 0 es el bit
situado ms a la derecha.


5.5.44. BITXOR( ) (Funcin)

Devuelve el resultado de una operacin OR exclusiva a nivel de bits realizada sobre dos valores numricos.

Sintaxis


Manual de Genlis
104
BITXOR(nExpresin1, nExpresin2)

Tipos devueltos
Numeric

Argumentos
nExpresin1, nExpresin2
Especifica los valores numricos sobre los que se lleva a cabo la operacin OR exclusiva a nivel de bits. Si
nExpresin1 y nExpresin2 no son enteros, se convertirn en enteros antes de que se realice la operacin
OR exclusiva a nivel de bits.

Comentarios
BITXOR( ) compara cada bit de nExpresin1 con el bit correspondiente de nExpresin2. Si un bit es 0 y el
otro 1, el bit de resultado correspondiente se establecer como 1. De lo contrario, el bit de resultado
correspondiente se establecer como 0.
La tabla siguiente muestra el resultado de una operacin OR exclusiva sobre los bits correspondientes de
nExpresin1 y nExpresin2:

Bit de nExpresin1 Bit de nExpresin2 Bit de resultado
0 0 0
0 1 1
1 0 1
1 1 0


5.5.45. BLANK (Comando)

Borra datos de todos los campos del registro activo cuando se ejecuta sin argumentos.

Sintaxis
BLANK
[FIELDS ListaCampos]
[Alcance]
[FOR lExpresin1]
[WHILE lExpresin2]
[NOOPTIMIZE]

Argumentos
FIELDS ListaCampos
Slo borra a los campos especificados mediante ListaCampos. Si omite la clusula FIELDS, todos los
campos de un registro se borrarn de forma predeterminada. Cualquier campo que especifique de un rea
de trabajo no seleccionada deber ir precedido del alias del rea de trabajo.


Manual de Genlis
105

Importante. BLANK no borrar datos de campo de un registro situado en otra rea de trabajo relacionada si
el puntero de registro se encuentra al final del archivo del rea de trabajo actual. El puntero de registro debe
estar situado en un registro del rea de trabajo actual para que BLANK acte sobre los campos del registro
relacionado.

Alcance
Especifica un intervalo de registros que se va a borrar. Slo se borrarn aquellos registros comprendidos
dentro de ese intervalo. Las clusulas de alcance son: ALL, NEXT nRegistros, RECORD nNmeroRegistro y
REST.
El alcance predeterminado para BLANK es el registro actual (NEXT 1).

FOR lExpresin1
Borra los datos de campos de aquellos registros para los que lExpresin1 d como resultado verdadera
(.T.). Rushmore optimizar BLANK FOR si lExpresin1 es una expresin optimizable.

WHILE lExpresin2
Especifica una condicin segn la cual los datos de campo de los registros se borrarn siempre y cuando la
expresin lgica lExpresin2 d como resultado verdadera (.T.).

NOOPTIMIZE
Impide la optimizacin Rushmore de BLANK.

Comentarios
Utilice APPEND BLANK para agregar un nuevo registro en blanco al final de una tabla. Utilice ISBLANK( )
para determinar si un campo de un registro est en blanco.


5.5.46. BOF( ) (Funcin)

Determina si el puntero de registro est situado al principio de una tabla.

Sintaxis
BOF([nreaTrabajo | cAliasTabla])

Tipo devuelto
Logical

Argumentos
nreaTrabajo
Especifica el nmero del rea de trabajo para una tabla abierta en otra rea de trabajo.



Manual de Genlis
106
cAliasTabla
Especifica el alias para una tabla abierta en otra rea de trabajo.
Si la tabla cuya condicin de principio de archivo desea probar est abierta en un rea de trabajo distinta de
la seleccionada actualmente, utilice estos argumentos opcionales para especificar el nmero del rea de
trabajo o el alias para la tabla. Si no hay ninguna tabla abierta en el rea de trabajo especificada, BOF( )
devolver falso (.F.).

Comentarios
Utilice BOF( ) para probar la condicin de principio de archivo de una tabla. BOF( ) devuelve verdadero (.T.) si
ha intentado mover el puntero de registro a una posicin anterior al primer registro de la tabla.


5.5.47. BROWSE (Comando)

Abre la ventana Examinar y muestra los registros de la tabla en uso o seleccionada.

Sintaxis
BROWSE
[FIELDS ListaCampos]
[FONT cNombreFuente [, nTamaoFuente]]
[STYLE cEstiloFuente]
[FOR lExpresin1 [REST]]
[FORMAT]
[FREEZE NombreCampo]
[KEY eExpresin1 [, eExpresin2]]
[LAST | NOINIT]
[LOCK nNmeroCampos]
[LPARTITION]
[NAME NombreObjeto]
[NOAPPEND]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLGRID] [NORGRID]
[NOLINK]
[NOMENU]
[NOOPTIMIZE]
[NOREFRESH]
[NORMAL]
[NOWAIT]
[PARTITION nNmeroColumna [LEDIT] [REDIT]]
[PREFERENCE NombrePreferencia]
[SAVE]


Manual de Genlis
107
[TIMEOUT nSegundos]
[TITLE cTextoTtulo]
[VALID [:F] lExpresin2 [ERROR cTextoMensaje]]
[WHEN lExpresin3]
[WIDTH nAnchoCampo]
[WINDOW NombreVentana1]
[IN [WINDOW] NombreVentana2 | IN SCREEN]
[COLOR SCHEME nNmeroEsquema]

Argumentos
FIELDS ListaCampos
Especifica los campos que aparecern en la ventana Examinar. Los campos se muestran en el orden
especificado en ListaCampos. En la lista de campos puede incluir campos de otras tablas relacionadas.
Cuando incluya un campo de una tabla relacionada, incluya delante del nombre de campo su alias de tabla
y un punto.
Si omite FIELDS, se mostrarn todos los campos de la tabla en el orden en que aparecen en la estructura
de la tabla.

FONT cNombreFuente [, nTamaoFuente]
Especifica la fuente y el tamao de fuente de la ventana Examinar. La expresin de caracteres
cNombreFuente es el nombre de la fuente y la expresin numrica nTamaoFuente es el tamao de la
fuente. Por ejemplo, la clusula siguiente especifica la fuente Courier de 16 puntos para los campos que se
muestran en la ventana Examinar:
FONT 'Courier',16
Si incluye la clusula FONT pero omite el tamao de fuente nTamaoFuente, se usar una fuente de 10
puntos en la ventana Examinar. En Genlis, si omite la clusula FONT se usar MS Sans Serif de 8 puntos.
Si la fuente especificada no est disponible, se sustituir por una fuente de caractersticas similares.
STYLE cEstiloFuente
Especifica el estilo de fuente de la ventana Examinar. Si omite la clusula STYLE, se usar el estilo de fuente
normal
Si el estilo de fuente especificado no est disponible, se usar un estilo con caractersticas similares.

Carcter Estilo de fuente
B Negrita
I Cursiva
N Normal
O Contorno
Q Opaco
S Sombra
- Tachado
T Transparente
U Subrayado

Puede incluir ms de un carcter para especificar una combinacin de estilos de fuente.


Manual de Genlis
108
Rushmore optimiza una consulta especificada con BROWSE FOR si lExpresin1 es una expresin
optimizable.
Incluya FOR si desea mover el puntero de registro hasta el primer registro que cumpla la condicin. Incluya
REST si desea dejar el puntero de registro en su posicin actual.

REST
Impide que el puntero de registro se desplace desde su posicin actual hasta la parte superior de la tabla
cuando se abra una ventana Examinar con la clusula FOR. De lo contrario, BROWSE situar el puntero de
registro al principio de la tabla de forma predeterminada.

FORMAT
Especifica el uso de un archivo de formato para controlar la presentacin y el formato de entrada de datos
en una ventana Examinar. Es necesario abrir primero el archivo de formato con SET FORMAT. La
informacin siguiente se extrae del archivo de formato y se aplica a la ventana Examinar:
La lista de campos que se van a examinar
Todas las clusulas VALID
Todas las clusulas WHEN
Todas las clusulas RANGE
Tamaos de campo (especificados en clusulas PICTURE)
Todas las expresiones SAY (que se incluyen como campos BROWSE calculados)

El ejemplo siguiente utiliza un archivo de formato para validar los datos escritos en una ventana Examinar.
Las posiciones especificadas mediante @ ... GET se pasan por alto.
La primera lnea crea un campo BROWSE (cust_id) que tiene 5 caracteres de ancho y que permite slo la
entrada de letras y dgitos. La segunda lnea crea un campo BROWSE (company) que no puede quedar en
blanco y puede contener un mximo de 20 caracteres alfabticos.
La tercera lnea crea un campo BROWSE (contact) en el que slo se pueden escribir datos cuando est en
blanco.
ste es el contenido del archivo de formato Custentr.fmt, que se usa para validar los datos que se escriben
en la tabla customer:
@ 3,0 GET cust_id PICTURE 'NNNNN'
@ 3,0 GET company VALID company != SPACE(40) ;
PICTURE 'AAAAAAAAAAAAAAAAAAAA'
@ 3,0 GET contact WHEN contact = SPACE(40)

* ste es el programa que utiliza el archivo de formato.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Abre la tabla customer.
SET FORMAT TO custentr.fmt
BROWSE FORMAT

FREEZE NombreCampo


Manual de Genlis
109
Permite realizar cambios en un nico campo de la ventana Examinar. Debe especificar este campo mediante
NombreCampo. Los dems campos se muestran pero no se pueden modificar.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Abre la tabla customer.
BROWSE FIELDS phone :H = 'Nmero de telfono:' , ;
company :H = 'Compaa:' ;
FREEZE phone
KEY eExpresin1 [, eExpresin2]
Limita el alcance de los registros que se presentarn en la ventana Examinar. Con KEY puede especificar un
valor de clave de ndice (eExpresin1) o un intervalo de valores de clave (eExpresin1, eExpresin2) para los
registros que se mostrarn en la ventana Examinar. La tabla que se va a examinar debe estar indexada y el
valor o los valores de clave de ndice incluidos en la clusula KEY deben ser del mismo tipo de datos que la
expresin de ndice del archivo de ndice o de la etiqueta principal.
Por ejemplo, la tabla customer incluye un campo de caracteres que contiene cdigos postales. Si la tabla se
indexa mediante el campo de cdigo postal, en la clusula KEY podr especificar un intervalo de cdigos
postales.
En el ejemplo siguiente, slo se presentarn en la ventana Examinar aquellos registros cuyos cdigos
postales estn dentro del intervalo de 10.000 a 30.000:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Abre la tabla customer.
SET ORDER TO postalcode
BROWSE KEY '10000', '30000'
LAST | NOINIT
Guarda cualquier cambio de configuracin realizado en la apariencia de una ventana Examinar. Los cambios
se guardan en el archivo FOXUSER y pueden incluir cambios a la lista de archivos, al tamao de cada
campo, y a la ubicacin y el tamao de la ventana Examinar.
Si ejecuta BROWSE con la clusula LAST o NOINIT, la ventana Examinar se abrir con la misma
configuracin que tena la ltima vez que se guard en el archivo FOXUSER si SET RESOURCE est
establecido en ON. Esto restaurar la configuracin anterior de la ventana Examinar creada con el ltimo
comando BROWSE. Si el ltimo comando BROWSE ejecutado en la ventana Comandos inclua una lista
larga de clusulas, ejecute BROWSE con la opcin LAST o NOINIT para no tener que volver a escribir el
comando. Para obtener ms informacin acerca del archivo FOXUSER, vea SET RESOURCE.
Si la ltima ventana Examinar se abri con un comando BROWSE que inclua una clusula PREFERENCE,
BROWSE LAST no restaurar la preferencia.
Los cambios que se hagan en la configuracin de la ventana Examinar durante la sesin actual no se
guardarn si sale de la ventana al presionar CTRL+Q.
Las clusulas LAST y NOINIT son idnticas; NOINIT ofrece compatibilidad con dBASE.

LOCK nNmeroCampos


Manual de Genlis
110
Especifica el nmero de campos que puede ver en la particin izquierda de la ventana Examinar sin
necesidad de desplazarse o de usar la tecla tab. El tamao de la particin izquierda se ajustara
automticamente para mostrar el nmero de campos especificado mediante nNmeroCampos.

LPARTITION
Especifica que el cursor est situado en el primer campo de la particin izquierda de la ventana Examinar.
De forma predeterminada, el cursor se sita en el primer campo de la particin derecha al abrirse la ventana.
NAME NombreObjeto
Crea una referencia de objeto para la ventana Examinar, lo que permite manipular dicha ventana mediante
las propiedades orientadas a objetos disponibles para el control Grid.

NOAPPEND
Impide que el usuario agregue registros a la tabla al presionar CTRL+Y o al elegir la opcin Anexar registro
del men Tabla.

Importante. La inclusin de NOAPPEND no impide que se anexen registros desde una rutina (creada con
VALID, WHEN u ON KEY LABEL) mientras se est en la ventana Examinar.

NODELETE
Impide marcar registros para su eliminacin desde una ventana Examinar. De forma predeterminada, un
registro se puede marcar para su eliminacin al presionar CTRL+T, al elegir la opcin Alternar eliminacin del
men Tabla de Genlis , o al hacer clic en la columna situada ms a la izquierda del registro que se va a
eliminar.

NOEDIT | NOMODIFY
Impide a un usuario modificar la tabla. NOEDIT y NOMODIFY son idnticas. Si incluye cualquiera de las dos
clusulas, podr examinar o buscar en la tabla, pero no modificarla. Sin embargo, s es posible anexar y
eliminar registros.

NOLGRID
Quita las lneas de cuadrcula del campo en la particin izquierda de la ventana Examinar.

NORGRID
Quita las lneas de cuadrcula del campo en la particin derecha de la ventana Examinar.

NOLINK
Desvincula las particiones de una ventana Examinar. De forma predeterminada, las particiones izquierda y
derecha de la ventana Examinar estn vinculadas para que cuando usted se desplace por una particin
tambin se desplace la otra.

NOMENU
Quita de la barra de mens del sistema el ttulo del men Tabla, lo que impide el acceso al men

Examinar.


Manual de Genlis
111
NOOPTIMIZE
Desactiva la optimizacin Rushmore de BROWSE.

NOREFRESH
Impide actualizar la ventana Examinar. Las ventanas Examinar se actualizan segn la frecuencia determinada
mediante SET REFRESH. NOREFRESH es til con los archivos de slo lectura y mejora el rendimiento.

NORMAL
Abre la ventana Examinar con su configuracin normal predeterminada, como colores, tamao, posicin,
ttulo y opciones de controles (GROW, FLOAT, ZOOM, etc.). Si omite NORMAL y la ventana actual de
resultado es una ventana definida por el usuario con su propia configuracin, la ventana Examinar utilizar
tambin la configuracin definida por el usuario.

NOWAIT
Contina la ejecucin del programa inmediatamente despus de que se abra la ventana Examinar. El
programa no espera a que se cierre la ventana Examinar, sino que sigue ejecutando la lnea de programa
que sigue inmediatamente a la lnea que contiene BROWSE NOWAIT. Si omite NOWAIT cuando ejecuta
BROWSE en un programa, se abrir una ventana Examinar y la ejecucin del programa se interrumpir
hasta que se cierre la ventana Examinar.
NOWAIT slo est disponible desde dentro de un programa. Incluir NOWAIT en BROWSE no tiene efecto
cuando el comando se ejecuta en la ventana Comandos.

PARTITION nNmeroColumna
Divide una ventana Examinar en las particiones izquierda y derecha; nNmeroColumna especifica el nmero
de columnas de la barra de divisin. Por ejemplo, si nNmeroColumna es 20, la barra de divisin se situar
en la columna 20 de la ventana Examinar.

LEDIT
Especifica que la particin izquierda de la ventana Examinar aparecer en modo de edicin.

REDIT
Especifica que la particin derecha de la ventana Examinar aparecer en modo de edicin. El ejemplo
siguiente abre una ventana Examinar con la barra de divisin situada en la columna 20 y la particin derecha
abierta en modo de edicin.
Incluya ambas palabras clave si desea abrir ambas particiones en modo de edicin.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Abre la tabla customer.
BROWSE PARTITION 20 REDIT
PREFERENCE NombrePreferencia
Guarda los atributos y las opciones de una ventana Examinar para su uso posterior. A diferencia de LAST,
que restaura la ventana Examinar tal como apareca en la sesin anterior, PREFERENCE guarda
indefinidamente en el archivo de recursos FOXUSER los atributos de una ventana Examinar. Las
preferencias se pueden recuperar en cualquier momento.


Manual de Genlis
112
Al ejecutar BROWSE con el nombre de preferencia especificado por primera vez se crea una entrada en el
archivo FOXUSER que almacena la configuracin de la ventana Examinar. Si ms tarde ejecuta BROWSE
con el mismo nombre de preferencia, se restaurar la ventana Examinar con el estado de dicha preferencia.
Cuando se cierra la ventana Examinar, las preferencias se actualizan.
Los nombres de preferencia pueden tener hasta 10 caracteres de longitud, deben empezar con una letra o
un signo de subrayado, y pueden contener cualquier combinacin de letras, nmeros y signos de
subrayado.
Una vez que tenga las preferencias configuradas de la manera deseada, podr impedir que cambien. Cierre
la ventana Examinar, ejecute SET RESOURCE OFF, abra el archivo FOXUSER como tabla y cambie a slo
lectura el registro que contiene la preferencia; para ello, cambie el valor del campo lgico READONLY a
verdadero (.T.).
Si sale de la ventana Examinar al presionar CTRL+Q, los cambios de la ventana Examinar no se guardarn
en el archivo de recursos.

SAVE
Mantiene activas y visibles (abiertas) la ventana Examinar y cualquiera de sus ventanas de edicin de texto
para campos memo. Puede volver a la ventana Examinar despus de recorrer las dems ventanas abiertas
con el teclado o con el mouse.
SAVE slo est disponible desde dentro de un programa. SAVE no tiene ningn efecto cuando se incluye
con BROWSE en la ventana Comandos porque BROWSE SAVE es siempre la opcin predeterminada en el
modo interactivo.

TIMEOUT nSegundos
Especifica el tiempo que una ventana Examinar espera recibir una entrada. La expresin numrica
nSegundos especifica cuntos segundos pueden transcurrir sin que se produzca ninguna entrada antes de
que la ventana Examinar se cierre automticamente.
TIMEOUT slo est disponible desde dentro de un programa; no tiene efecto cuando BROWSE se ejecuta
en la ventana Comandos. En el ejemplo siguiente, la ventana Examinar se cerrar si no se recibe ninguna
entrada en 10 segundos.
DEFINE WINDOW wExaminar FROM 1,1 TO 24,40 ;
CLOSE ;
GROW ;
COLOR SCHEME 10
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Abre la tabla customer.
BROWSE WINDOW wExaminar ;
FIELDS phone :H = 'Nmero de telfono:' , ;
company :H = 'Compaa:' ;
TIMEOUT 10
RELEASE WINDOW wExaminar
TITLE cTextoTtulo
Invalida el nombre o el alias predeterminado de tabla que aparece en la barra de ttulo de la ventana



Manual de Genlis
113
Examinar y muestra en su lugar el ttulo especificado mediante cTextoTtulo. De lo contrario, el nombre o el
alias de la tabla que se est examinando aparecer en la barra de ttulo.
Si ejecuta BROWSE WINDOW para situar la ventana Examinar en una ventana definida por el usuario, el
ttulo de la ventana Examinar reemplazar al de la ventana definida por el usuario.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Abre la tabla customer.
BROWSE;
TITLE 'Mi ventana examinar' ;
FIELDS phone :H = 'Nmero de telfono' , ;
company :H = 'Compaa:'
VALID lExpresin2
Realiza una validacin a nivel de registros en una ventana Examinar. La clusula VALID slo se ejecutar si
hace algn cambio en el registro e intenta desplazar el cursor a otro registro. La clusula VALID no se
ejecutar si slo se hacen cambios en campos memo.
Si VALID devuelve un valor verdadero (.T.), el usuario podr desplazar el cursor a otro registro. Si VALID
devuelve un valor falso (.F.), el cursor permanecer en el campo actual y Genlis mostrar un mensaje de
error. Si VALID devuelve 0, el cursor permanecer en el campo actual y no se mostrar ningn mensaje de
error.
No debe confundirse la clusula VALID con la opcin de verificacin (:V), que activa la validacin a nivel de
campo.
:F
Fuerza la ejecucin de la clusula VALID antes de que el usuario desplace el cursor hasta el siguiente
registro. En este caso, VALID se ejecutar aunque no se hagan cambios en el registro.

ERROR cTextoMensaje
Especifica un mensaje de error que aparecer en lugar del mensaje de error predeterminado del sistema.
Genlis mostrar cTextoMensaje cuando VALID devuelva falso (.F.).

WHEN lExpresin3
Evala una condicin cuando el usuario desplaza el cursor a otro registro. Si lExpresin3 se da como
resultado verdadero (.T.), el usuario podr modificar el registro al que se ha desplazado. Si lExpresin3 da
como resultado falso (.F.) o 0, el registro al que se desplace el usuario se convertir en un registro de slo
lectura y no podr modificarse.
La clusula WHEN no se ejecuta cuando est activada otra ventana.

WIDTH nAnchoCampo
Limita a nAnchoCampo el nmero de caracteres mostrados para todos los campos de una ventana

Examinar. El contenido de un campo se podr desplazar horizontalmente mediante las teclas FLECHA
IZQUIERDA y FLECHA DERECHA, o la barra de desplazamiento horizontal. La inclusin de la clusula
WIDTH no cambia el tamao de los campos de la tabla; slo altera la forma en que se muestran los campos
en la ventana Examinar. Si se ha especificado un ancho para un campo individual con la clusula FIELDS,
ste suplantar al ancho especificado con la clusula WIDTH para ese campo.


Manual de Genlis
114

WINDOW NombreVentana1
Especifica una ventana definida por el usuario cuyas caractersticas asumir la ventana Examinar. Por
ejemplo, si la ventana se ha definido con la clusula FLOAT, la ventana Examinar podr desplazarse. La
ventana especificada no tiene que estar activa o visible necesariamente, pero debe estar definida.
IN [WINDOW] NombreVentana2
Especifica la ventana primaria dentro de la cual se abrir la ventana Examinar. La ventana Examinar no
asume las caractersticas de la ventana primaria. Una ventana Examinar activada dentro de una ventana
primaria no podr desplazarse fuera de ella. Si la ventana primaria se mueve, la ventana Examinar se mover
con ella.
Para tener acceso a la ventana Examinar, la ventana primaria debe definirse primero con DEFINE WINDOW
y debe estar activa y visible.

IN SCREEN
Coloca explcitamente una ventana Examinar en la ventana principal de Genlis cuando est activa una
ventana definida por el usuario.

COLOR SCHEME nNmeroEsquema
Especifica el nmero de un esquema de colores empleado para los colores de la ventana Examinar.
La ventana Examinar asume el esquema de colores establecido mediante Color del Panel de control.

Comentarios
Una ventana Examinar permite ver y modificar registros de una tabla, y anexar registros adicionales. Genlis
permite tener varias ventanas Examinar abiertas al mismo tiempo.
Si presiona esc para salir de la ventana Examinar, se descartarn los cambios realizados en el ltimo campo
que haya modificado. Sin embargo, si pasa a otro registro despus de modificar un campo, se guardarn
los cambios realizados al campo.
La lista de campos puede especificar cualquier combinacin de campos o campos calculados.
La sintaxis de la lista de campos es la siguiente:
NombreCampo1
[:R]
[:nAnchoColumna]
[:V = lExpresin1 [:F] [:E = cTextoMensaje]]
[:P = cCdigosFormato]
[:B = eLmiteInferior, eLmiteSuperior [:F]]
[:H = cTextoEncabezado]
[:W = lExpresin2]
[, NombreCampo2 [:R]...]

Campos calculados. La lista de campos puede contener instrucciones para crear campos calculados. Un
campo calculado contiene datos de slo lectura creados con una expresin. Esta expresin puede tomar
cualquier forma, pero debe ser una expresin vlida de Genlis.
El formato de la instruccin que se utiliza para crear un campo calculado es la siguiente:
NombreCampoCalculado = eExpresin


Manual de Genlis
115
En este ejemplo se crea un campo calculado llamado location:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Abre la tabla customer.
BROWSE FIELDS location = ALLTRIM(city) + ', ' + country
city y country son nombres de campos de la tabla seleccionada actualmente.
La lista de campos de la clusula FIELDS incluye opciones que permiten el tratamiento especial de los
campos que se muestran en la ventana Examinar:

:R
Especifica que el campo es de slo lectura. Los datos que contiene pueden verse pero no modificarse.
En el ejemplo siguiente se abre una ventana Examinar con los campos cust_id y company. El campo cust_id
es de slo lectura y no puede cambiarse.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Abre la tabla customer.
BROWSE FIELDS cust_id:R, company

:nAnchoColumna
Especifica el tamao de presentacin de un campo en columnas. El valor de:nAnchoColumna no afecta al
tamao del campo en la tabla; slo altera la forma en que se muestra el campo en la ventana Examinar.

:V = lExpresin1 [:F] [:E = cTextoMensaje]
Permite realizar la validacin de datos a nivel de campo dentro de la ventana Examinar. Si lExpresin1 da
como resultado verdadero (.T.) cuando se desplaza el cursor desde un campo, la entrada de datos en el
campo se considerar correcta y el cursor se desplazar al campo siguiente.
Si lExpresin1 da como resultado falso (.F.), la entrada de datos se considerar incorrecta, el cursor
permanecer en el campo y se mostrar un mensaje. Si lExpresin1 da como resultado 0, la entrada de
datos se considerar incorrecta y el cursor permanecer en el campo, pero no se mostrar ningn mensaje
de error.
La opcin de verificacin no se ejecuta para los campos memo.
De forma predeterminada, lExpresin1 slo se evala cuando se modifica el campo. Para forzar la
comprobacin, incluya la opcin :F.
Puede mostrar su propio mensaje de error si incluye la opcin :E que se describe ms adelante.

:F
Determina si la expresin especificada en la opcin de verificacin se evaluar cuando mueva el cursor fuera
de un campo o cuando se active otra ventana. Si no se incluye :F, lExpresin1 slo se evaluar si se hace
algn cambio en el campo. Si se incluye :F, lExpresin1 se evaluar aunque el campo no se haya
modificado.

:E = cTextoMensaje


Manual de Genlis
116
Si la expresin de validacin:V = lExpresin1 da como resultado verdadero (.T), el cursor abandonar el
campo normalmente. Si la expresin da como resultado falso (.F.), el cursor permanecer en el campo y
Genlis mostrar un mensaje de error.
Si se incluye la opcin de error (:E), se mostrar, cTextoMensaje en lugar del mensaje de error del sistema.
cTextoMensaje slo se muestra si SET NOTIFY es ON. Si SET BELL est establecido en ON, sonar un
aviso acstico.
Si :V = lExpresin1 da como resultado 0, no se mostrar ningn mensaje y el cursor permanecer en el
campo que se est validando. Esto permite mostrar sus propios mensajes de error en rutinas de validacin.
El ejemplo siguiente abre la tabla products y muestra los campos product_id y prod_name. El campo
product_id es un campo numrico que aceptar hasta cinco nmeros. Para este ejemplo consideraremos
como no vlido un product_id mayor que 100.

:V especifica el criterio de validacin. :F fuerza que se ejecute la validacin tanto si se cambian los datos
como si no. :E reemplaza el mensaje de error del sistema de Genlis por un mensaje de error definido por el
usuario.
Presione esc para cerrar la ventana Examinar.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Abre la tabla products.
IF _WINDOWS OR _MAC
SET STATUS BAR ON
ENDIF
USE products
BROWSE FIELDS in_stock :V = in_stock < 100 ;
:F ;
:E = 'La cantidad en existencias debe ser menor que 100'

:P = cCdigosFormato
Si incluye una clusula FIELDS, tambin podr especificar una opcin de imagen (:P) para cada campo de la
lista. La opcin de imagen permite crear una lista de cdigos que controle la presentacin y entrada de
datos para cada campo de la ventana Examinar. cCdigosFormato es la lista de cdigos.
El ejemplo siguiente utiliza la opcin de imagen para permitir nicamente datos numricos con un
determinado formato en el campo unit_price:
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Abre la tabla products.
BROWSE FIELDS unit_price :P = '99.999,99'

:B = eLmiteInferior, eLmiteSuperior [:F]
Especifica un conjunto de lmites entre los cuales deben estar comprendidos los datos de un campo. Las
expresiones de lmite eLmiteInferior y eLmiteSuperior deben coincidir con el tipo de datos del campo y no
pueden ser funciones definidas por el usuario. Si los datos escritos no quedan dentro de eLmiteInferior y
eLmiteSuperior, aparecer un mensaje de error del sistema que indica el intervalo entre el que deben estar
comprendidos los datos.


Manual de Genlis
117
De forma predeterminada, se comprueba que los datos escritos quedan dentro de los lmites slo si se
hacen cambios en el contenido del campo. Para forzar la comprobacin, incluya la opcin de forzar
validacin (:F).
El ejemplo siguiente garantiza que el valor del campo in_stock estn entre 1 y 100. Presione esc para cerrar
la ventana Examinar.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Abre la tabla products.
BROWSE FIELDS in_stock :B = 1, 100 :F

:H = cTextoEncabezado
Reemplaza los nombres predeterminados de campo por sus propios encabezados, que usted especifica
mediante cTextoEncabezado. De forma predeterminada, los nombres de campo se utilizan como
encabezados de columna en la ventana Examinar.
El ejemplo siguiente proporciona encabezados definidos por el usuario para los campos mostrados.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products && Abre la tabla products.
BROWSE FIELDS prod_name :H = 'Nombre del producto:', ;
unit_price :H = 'Precio por unidad:'

:W = lExpresin2
Determina si se puede desplazar el cursor a un campo. Si lExpresin2 da como resultado falso (.F.), se
prohibir que el cursor se desplace al campo. Si lExpresin2 da como resultado verdadero (.T.), el cursor
podr desplazarse al campo. lExpresin2 acepta funciones definidas por el usuario.
Si se prohibe desplazar el cursor a todos los campos, el registro actual se marcar como de slo lectura.
Esto ocurre slo cuando todos los campos contienen una clusula WHEN que da como resultado falso.

Soporte de SET SKIP. SET SKIP permite establecer una relacin uno a varios entre dos tablas. Por cada
registro de la tabla primaria puede haber mltiples registros relacionados en la tabla secundaria. Si crea una
relacin uno a varios, podr utilizar BROWSE para ver registros tanto de la tabla primaria como de la tabla
secundaria.
El registro primario se muestra una vez, junto con el primer registro coincidente de la tabla secundaria. Los
dems registros coincidentes se mostrarn en las filas que siguen al registro primario y al primer registro
coincidente secundario. El carcter de relleno para la informacin primaria repetida depende de la fuente
actual de la ventana Examinar.
Si se sita el puntero de registro en un registro primario, podr desplazarlo entre los registros primarios de la
ventana Examinar si presiona ctrl+flecha abajo para ir al siguiente registro primario o ctrl+flecha arriba para ir
al registro primario anterior.
La lista de campos de la clusula FIELDS contiene los registros de la tabla primaria y de la secundaria. Los
nombres de los campos estn precedidos por el alias de su tabla (orders o customer) y un punto.
CLEAR
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')


Manual de Genlis
118
USE customer ORDER cust_id IN 0 && Tabla primaria.
USE orders ORDER cust_id IN 0 && Tabla secundaria.
SELECT customer && Vuelve al rea de trabajo primaria.
SET RELATION TO cust_id INTO orders && Establece la relacin.
SET SKIP TO orders && Relacin uno a varios.
WAIT WINDOW 'Desplcese para ver flechas de envo para cada cliente' NOWAIT
BROWSE FIELDS customer.cust_id :H='Nmero de cliente', ;
customer.city :H='Ciudad del cliente', orders.shipped_on

Funciones tiles Algunas funciones de Genlis devuelven informacin til acerca de la ventana Examinar.

Funcin Descripcin
VARREAD( ) Devuelve el nombre del campo donde est situado el cursor para la ventana Examinar
activa.
RECNO( ) Devuelve el nmero del registro seleccionado en la ventana Examinar activa.


5.5.48. CD | CHDIR (Comando)

Cambia el directorio predeterminado de Genlis por el directorio que usted especifique.

Sintaxis
CD cRuta | CHDIR cRuta

Argumentos
cRuta
Especifica uno de los elementos siguientes:
Un designador de unidad.
Un designador de unidad con un directorio.
Un directorio secundario.
Cualquiera de los anteriores que utilicen notacin abreviada de MS-DOS ( \ o ..). Cuando se incluya
.. para modificar el directorio primario, ser necesario incluir un espacio entre CD o CHDIR y los dos
puntos.

Comentarios
Utilice CD o CHDIR para especificar el directorio predeterminado de Genlis. Genlis busca archivos en el
directorio predeterminado de Genlis. Si Genlis no encuentra un archivo en el directorio predeterminado,
buscar en la ruta de acceso de Genlis si se ha especificado una. Utilice SET PATH para especificar la ruta
de acceso de Genlis.
Si crea un archivo y no especifica dnde situarlo, el archivo se colocar en el directorio predeterminado de
Genlis.



Manual de Genlis
119

5.5.49. CDOW( ) (Funcin)

Devuelve el da de la semana a partir de una expresin de Date o de DateTime dada.

Sintaxis
CDOW(dExpresin | tExpresin)

Valor devuelto
Character

Argumentos
dExpresin
Especifica la fecha para la que CDOW( ) devuelve el da.

tExpresin
Especifica la DateTime para la que CDOW( ) devuelve el da.

Comentarios
CDOW( ) la funcin de caracteres del da de la semana, devuelve el nombre del da de la semana a partir de
una expresin de Date.


5.5.50. CEILING( ) (Funcin)

Devuelve el entero ms prximo que sea mayor o igual que la expresin numrica especificada.

Sintaxis
CEILING(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica el nmero cuyo prximo entero mayor devuelve CEILING( ).

Comentarios
CEILING redondea un nmero con parte fraccional hasta el prximo entero mayor.


Manual de Genlis
120


5.5.51. CHR( ) (Funcin)

Devuelve el carcter asociado al cdigo ANSI numrico especificado.

Sintaxis
CHR(nCdigoANSI)

Tipos devueltos
Character

Argumentos
nCdigoANSI
Especifica un nmero entre 0 y 255 cuyo carcter ANSI equivalente devuelve CHR( ).
Utilice ASC( ) para devolver el valor ANSI de un carcter especificado.

Comentarios
CHR( ) devuelve un nico carcter correspondiente a la posicin numrica del carcter en la tabla de
caracteres de la pgina de cdigos actual. CHR( ) puede utilizarse para enviar cdigos de control a una
impresora.


5.5.52. CHRSAW( ) (Funcin)

Determina si un carcter est presente o no en el bfer de teclado.

Sintaxis
CHRSAW([nSegundos])

Tipos devueltos
Logical

Argumentos
nSegundos
Especifica el tiempo, en segundos, que CHRSAW( ) espera antes de comprobar el bfer de teclado. Si omite
nSegundos, el bfer de teclado se comprobar inmediatamente.
La inclusin de nSegundos permite utilizar CHRSAW( ) en diversas actividades cronometradas. Por ejemplo,
el programa puede cerrar una aplicacin si no se ha presionado ninguna tecla despus de transcurrir un
cierto nmero de segundos.


Manual de Genlis
121

Comentarios
CHRSAW( ) devuelve verdadero (.T.) si hay un carcter en el bfer de teclado y devuelve falso (.F.) si no lo
hay. CHRSAW( ) no afecta al contenido del bfer de teclado.


5.5.53. CHRTRAN( ) (Funcin)

Cada carcter de una expresin de caracteres que coincida con un carcter de una segunda expresin de
caracteres se reemplaza con el carcter correspondiente de una tercera expresin de caracteres.

Sintaxis
CHRTRAN(cExpresinBuscada, cExpresinBsqueda, cExpresinReemplazo)

Tipos devueltos
Character

Argumentos
cExpresinBuscada
Especifica la expresin donde CHRTRAN( ) reemplaza caracteres.

cExpresinBsqueda
Especifica la expresin que contiene los caracteres buscados por CHRTRAN( ) en cExpresinBuscada.

cExpresinReemplazo
Especifica la expresin que contiene los caracteres de reemplazo.
Si se encuentra en cExpresinBsqueda un carcter de cExpresinBsqueda, el carcter de
cExpresinBuscada se sustituir por el carcter de cExpresinReemplazada que est en la misma posicin
en cExpresinReemplazada que el carcter correspondiente en cExpresinBsqueda.
Si cExpresinReemplazo tiene menos caracteres que cExpresinBsqueda, los caracteres adicionales de
cExpresinBsqueda se eliminan de cExpresinBuscada. Si cExpresinReemplazo tiene ms caracteres que
cExpresinBsqueda, los caracteres adicionales de cExpresinReemplazo se pasarn por alto.

Comentarios
CHRTRAN( ) convierte la expresin de caracteres cExpresinBuscada mediante las expresiones de
conversin cExpresinBsqueda y cExpresinReemplazo, y devuelve la cadena de caracteres resultante.





Manual de Genlis
122
5.5.54. CHRTRANC( ) (Funcin)

Cada carcter de una expresin de caracteres que concuerde con un carcter en una segunda expresin
de caracteres se reemplaza con el carcter correspondiente de una tercera expresin de caracteres.

Sintaxis
CHRTRANC(cBuscada, cBuscar, cReemplazo)

Tipos devueltos
Character

Argumentos
cBuscada
Especifica la expresin en la que CHRTRANC( ) reemplaza caracteres.

cBuscar
Especifica la expresin que contiene los caracteres que CHRTRANC( ) busca cBuscada.

cReemplazo
Especifica la expresin que contiene los caracteres de reemplazo.
Si un carcter de cBuscar se encuentra en cBuscada, se reemplazar el carcter de cBuscada por un
carcter de cReemplazo que est en la misma posicin en cReemplazo que el carcter correspondiente en
cBuscar.
Si cReemplazo tiene menos caracteres que cBuscar, se eliminarn los caracteres adicionales de cBuscar en
cBuscada. Si cReemplazo tiene ms caracteres que cBuscar, se pasarn por alto los caracteres adicionales
de cReemplazo.

Comentarios
CHRTRANC( ) est diseado para facilitar el trabajo con expresiones que contienen caracteres de dos
bytes. Utilice CHRTRANC( ) para reemplazar caracteres de un byte por caracteres de dos bytes o viceversa.
Si las expresiones contienen slo caracteres de un byte, CHRTRANC( ) es equivalente a CHRTRAN( ).
Esta funcin es til para tratar juegos de caracteres del doble byte para idiomas como Hiragana y Katakana.


5.5.55. CMONTH( ) (Funcin)

Devuelve el nombre del mes a partir de una expresin de fecha o de una propiedad DateTime dada.

Sintaxis
CMONTH(dExpresin | tExpresin)



Manual de Genlis
123
Tipos devueltos
Character

Argumentos
dExpresin
Especifica la expresin de fecha a partir de la cual CMONTH( ) devuelve el nombre del mes.

tExpresin
Especifica la expresin de DateTime de la cual CMONTH( ) devuelve el nombre del mes.

Comentarios
CMONTH( ) devuelve el nombre del mes como una cadena en el formato de nombre apropiado.


5.5.56. COPY FILE (Comando)

Duplica cualquier tipo de archivo.

Sintaxis
COPY FILE NombreArchivo1 TO NombreArchivo2

Comentarios
COPY FILE crea un duplicado del archivo cuyo nombre se especifica en NombreArchivo1. COPY FILE
puede utilizarse para copiar todo tipo de archivos. El archivo que se va a copiar no puede estar abierto. Es
necesario incluir las extensiones tanto del nombre del archivo de origen NombreArchivo1 como del nombre
del archivo de destino NombreArchivo2.
NombreArchivo1 y NombreArchivo2 pueden contener caracteres comodn como * y ?. Por ejemplo, para
crear copias de seguridad de todos los archivos de programa con la extensin .prg en el directorio o carpeta
actual, ejecute COPY FILE *.PRG TO *.BAK.
Si utiliza COPY FILE para crear una copia de seguridad de una tabla que tiene un campo memo, un ndice
estructural o ambos, asegrese de copiar tambin los archivos .fpt y .cdx.


5.5.57. COPY TO ARRAY (Comando)

Copia a una matriz los datos de la tabla seleccionada actualmente.

Sintaxis
COPY TO ARRAY NombreMatriz
[FIELDS ListaCampos]


Manual de Genlis
124
| FIELDS LIKE Estructura
| FIELDS EXCEPT Estructura]
[Alcance] [FOR lExpresin1] [WHILE lExpresin2]
[NOOPTIMIZE]

Argumentos
NombreMatriz
Especifica la matriz a la que se deben copiar los datos de la tabla.

FIELDS ListaCampos
Especifica que solamente se copian a la matriz los campos especificados en ListaCampos. Si se omite la
clusula FIELDS ListaCampos, todos los campos se copiarn a la matriz si sta tiene suficientes columnas.

FIELDS LIKE Estructura
Especifica que los campos que coinciden con la estructura de campos Estructura se copian a la matriz.

FIELDS EXCEPT Estructura
Especifica que todos los campos excepto los que no coinciden con la estructura de campos Estructura se
copian a la matriz.
La estructura de campos Estructura admite comodines. Por ejemplo, para especificar que todos los campos
que comiencen con las letras A y P se copien a la matriz, utilice la instruccin siguiente:
COPY TO ARRAY aMiMatriz FIELDS LIKE A*,P*
La clusula LIKE se puede combinar con la clusula EXCEPT:
COPY TO ARRAY aMiMatriz FIELDS LIKE A*,P* EXCEPT PARTNO*

Alcance
Especifica el intervalo de registros que se copian a la matriz. Solamente se copian los registros incluidos en
el intervalo. Las clusulas de alcance son: ALL, NEXT nRegistros, RECORD nNmeroRegistros y REST.

El alcance predeterminado para COPY TO ARRAY es ALL (todos los registros).

FOR lExpresin1
Especifica que solamente se copian a la matriz los registros que satisfacen la condicin lgica lExpresin1.
Incluir FOR permite copiar condicionalmente diversos registros a la matriz para desechar los registros no
deseados.
Rushmore optimizar una consulta COPY TO ARRAY que incluya FOR lExpresin1 si lExpresin1 es una
expresin optimizable. Para obtener un mejor rendimiento, utilice una expresin optimizable en la clusula
FOR.

WHILE lExpresin2
Especifica una condicin por la cual los registros se copian a la matriz siempre y cuando la expresin lgica
lExpresin2 d como resultado verdadero (.T.).

NOOPTIMIZE


Manual de Genlis
125
Desactiva la optimizacin Rushmore de COPY TO ARRAY.

Comentarios
COPY TO ARRAY y SCATTER son similares. COPY TO ARRAY copia mltiples registros a una matriz,
mientras que SCATTER copia un solo registro a una matriz o a un conjunto de variables de memoria. Tanto
COPY TO ARRAY como SCATTER crean una nueva matriz si no existe una matriz con el nombre
especificado.
Para copiar un solo registro a una matriz, puede especificar una matriz de una dimensin. La matriz de una
dimensin debe tener el mismo nmero de elementos que el nmero de campos de la tabla, sin contar los
campos memo. Los campos memo se pasan por alto en COPY TO ARRAY.
Si especifica una matriz de una dimensin, el primer campo de un registro se almacenar en el primer
elemento de la matriz, el segundo campo se almacenar en el segundo elemento y as sucesivamente. Si la
matriz de una dimensin tiene ms elementos que campos hay en la tabla, los elementos sobrantes
permanecern sin cambios. Si la matriz tiene menos elementos que campos hay en la tabla, los campos
sobrantes se pasarn por alto.
Para copiar mltiples registros o una tabla entera a una matriz, utilice una matriz de dos dimensiones. El
nmero de filas de la matriz es el nmero de registros que puede contener y su nmero de columnas es
igual al nmero de campos que se pueden incluir en ella.
Cada registro se almacena en una fila de la matriz y cada campo del registro se almacena en una columna.
Para cada registro, el primer campo se almacena en la primera columna de la matriz, el segundo campo se
almacena en la segunda columna y as sucesivamente. Si el nmero de columnas de la matriz es mayor que
el de campos de la tabla, las columnas restantes permanecern sin cambios. Si el nmero de columnas de
la matriz es menor que el nmero de campos de la tabla, los campos restantes no se almacenarn en la
matriz.
Cada fila sucesiva de la matriz se llena con el contenido del siguiente registro de la tabla. Si la matriz tiene
ms filas que registros tiene la tabla, las filas restantes permanecern sin cambios. Si la matriz tiene menos
filas que registros tiene la tabla, los registros restantes no se almacenarn en la matriz.
Es posible copiar datos desde matrices a nuevos registros de tablas con APPEND FROM ARRAY. Tambin
es posible copiar datos de una matriz o un conjunto de variables de memoria a registros de una tabla
mediante GATHER.


5.5.58. COS( ) (Funcin)

Devuelve el coseno de una expresin numrica.

Sintaxis
COS(nExpresin)

Tipos devueltos
Numeric



Manual de Genlis
126
Argumentos
nExpresin
Especifica la expresin numrica cuyo coseno devuelve COS( ). nExpresin puede ser cualquier valor.

Comentarios
COS( ) devuelve el coseno de nExpresin en radianes. Utilice DTOR( ) para convertir un ngulo de grados a
radianes. El nmero de posiciones decimales que devuelve COS( ) se puede especificar mediante SET
DECIMALS. El valor devuelto por COS( ) vara entre 1 y 1.


5.5.59. COUNT (Comando)

Cuenta los registros de una tabla.

Sintaxis
COUNT
[Alcance] [FOR lExpresin1] [WHILE lExpresin2]
[TO NombreVariableMemoria]
[NOOPTIMIZE]

Argumentos
Alcance
Especifica el intervalo de registros que se va a incluir en la cuenta. Las clusulas de alcance son: ALL, NEXT
nRegistro, RECORD nNmeroRegistros y REST. Los comandos que incluyen Alcance solamente actan
sobre la tabla del rea de trabajo activa.
El alcance predeterminado de COUNT es ALL (todos los registros).

FOR lExpresin1
Especifica que solamente se cuentan los registros que satisfacen la condicin lgica lExpresin1. Incluir FOR
le permite contar registros condicionalmente y desechar los registros no deseados.
Rushmore optimizar una consulta COUNT FOR si lExpresin1 es una expresin optimizable. Para
conseguir un mejor rendimiento, utilice una expresin optimizable en la clusula FOR.

WHILE lExpresin2
Especifica una condicin por la cual los registros se cuentan siempre y cuando la expresin lgica
lExpresin2 d como resultado verdadero (.T.).

TO NombreVariableMemoria
Especifica la variable de memoria o la matriz en que se almacena la cuenta de registros. Si la variable de
memoria especificada no existe, Genlis la crear.

NOOPTIMIZE


Manual de Genlis
127
Desactiva la optimizacin Rushmore de COUNT.

Comentarios
COUNT cuenta los registros que estn en el alcance de registros para los que se cumplen las condiciones
FOR o WHILE. Si SET TALK est establecido en ON, se mostrar la cuenta de registros.
Si SET DELETE est establecido en OFF, los registros marcados para su eliminacin se incluirn en la
cuenta.
Para ver una explicacin de cmo los valores nulos influyen en COUNT


5.5.60. CREATE TABLE - SQL (Comando)

Crea una tabla que tiene los campos especificados.

Sintaxis
CREATE TABLE | DBF NombreTabla1 [NAME NombreLargoTabla] [FREE]
(NombreCampo1 TipoCampo [(nAnchoCampo [, nPrecisin])]
[NULL | NOT NULL]
[CHECK lExpresin1 [ERROR cTextoMensaje1]]
[DEFAULT eExpresin1]
[PRIMARY KEY | UNIQUE]
[REFERENCES NombreTabla2 [TAG NombreEtiqueta1]]
[NOCPTRANS]
[, NombreCampo2 ...]
[, PRIMARY KEY eExpresin2 TAG NombreEtiqueta2
|, UNIQUE eExpresin3 TAG NombreEtiqueta3]
[, FOREIGN KEY eExpresin4 TAG NombreEtiqueta4 [NODUP]
REFERENCES NombreTabla3 [TAG NombreEtiqueta5]]
[, CHECK lExpresin2 [ERROR cTextoMensaje2]])
| FROM ARRAY NombreMatriz

Argumentos
NombreTabla1
Especifica el nombre de la tabla que desea crear. Las opciones TABLE y DBF son idnticas.

NAME NombreLargoTabla
Especifica un nombre largo para la tabla. Este nombre largo solamente se puede especificar cuando hay
una base de datos abierta, porque los nombres largos de tabla se almacenan en bases de datos.
Los nombres largos pueden contener 128 caracteres como mximo y se pueden usar en la base de datos
en lugar de los nombres cortos de archivo.

FREE


Manual de Genlis
128
Especifica que la tabla no se agregar a ninguna base de datos abierta. No es necesario incluir FREE si no
hay ninguna base de datos abierta.

(NombreCampo1 TipoCampo [(nAnchoCampo [, nPrecisin])]
Especifica el nombre, el tipo, el ancho y la precisin del campo (el nmero de lugares decimales),
respectivamente.
Una tabla puede contener hasta 255 campos. Si hay uno o ms campos que permiten valores nulos, el
lmite se reduce a 254 campos.

TipoCampo es una sola letra que indica el tipo de datos del campo. Algunos tipos de datos de campo
necesitan que especifique nAnchoCampo o nPrecisin, o ambos.
La siguiente tabla enumera los valores para TipoCampo y si se necesita indicar nAnchoCampo y nPrecisin.

TipoCampo nAnchoCampo nPrecisin Descripcin
C n Campo de caracteres de ancho n
D Date
T DateTime
N n d Campo numrico de ancho n con d decimales
F n d Campo numrico flotante de ancho n con d decimales
I Integer
B d Double
Y Currency
L Logical
M Memo
G General

nAnchoCampo y nPrecisin se pasan por alto para los tipos D, T, I, Y, L, M, G y P. nPrecisin tiene como
valor predeterminado cero (ningn lugar para decimales) si no se incluye nPrecisin para los tipos N o F.
nPrecisin tiene, de forma predeterminada, el nmero de lugares para decimales especificado por el valor
SET DECIMAL si no est incluida nPrecisin para el tipo B.

NULL
Admite valores nulos en el campo. Si uno o ms campos pueden contener valores nulos, el nmero mximo
de campos que puede contener la tabla disminuye en uno, de 255 a 254.

NOT NULL
Impide valores nulos en el campo.
Si omite NULL y NOT NULL, la configuracin actual de SET NULL determinar si se admiten valores nulos
en el campo. No obstante, si omite NULL y NOT NULL, pero incluye la clusula PRIMARY KEY o UNIQUE,
se pasar por alto la configuracin actual de SET NULL y el campo tomar el valor predeterminado de NOT
NULL.

CHECK lExpresin1


Manual de Genlis
129
Especifica una regla de validacin para el campo. lExpresin1 puede ser una funcin definida por el usuario.
Observe que cuando se agrega un registro en blanco, se comprueba la regla de validacin. Se genera un
error en caso de que la regla de validacin no admita un valor de campo en blanco en un registro agregado.

ERROR cTextoMensaje1
Especifica el mensaje de error que Genlis mostrar cuando la regla del campo genere un error. El mensaje
slo se muestra cuando los datos se modifican desde una ventana Examinar o Editar.

DEFAULT eExpresin1
Especifica un valor predeterminado para el campo. El tipo de datos de eExpresin1 debe ser el mismo que
el del campo.

PRIMARY KEY
Crea un ndice principal para el campo. La etiqueta de ndice principal tiene el mismo nombre que el campo.

UNIQUE
Crea un ndice candidato para el campo. La etiqueta de ndice candidato tiene el mismo nombre que el
campo.

Nota. Los ndices candidatos (que se crean al incluir la opcin UNIQUE en CREATE TABLE o ALTER
TABLE-SQL) no son iguales que los ndices creados con la opcin UNIQUE del comando INDEX. Un ndice
creado con la opcin UNIQUE del comando INDEX admite claves de ndice duplicadas, mientras que los
ndices candidatos no las admiten.
Los valores nulos y los registros duplicados no se admiten en campos empleados para ndices principales ni
candidatos. No obstante, Genlis no generar ningn error si crea un ndice principal o candidato para un
campo que admita valores nulos. Genlis generar un error si intenta introducir un valor nulo o duplicado en
un campo utilizado para un ndice principal o candidato.

REFERENCES NombreTabla2 [TAG NombreEtiqueta1]
Especifica la tabla primaria con la que se establece una relacin definitiva. Si omite TAG NombreEtiqueta1, la
relacin se establecer mediante la clave de ndice principal de la tabla primaria. Si la tabla primaria no tiene
ningn ndice principal, Genlis generar un error.
Incluya TAG NombreEtiqueta1 para establecer una relacin basada en una etiqueta de ndice existente para
la tabla primaria. Los nombres de ndice de etiqueta pueden contener hasta 10 caracteres.
La tabla primaria no puede ser una tabla libre.

NOCPTRANS
Impide la conversin de campos memo y de caracteres a una pgina de cdigos diferente. Si se convierte la
tabla a otra pgina de cdigos, los campos para los que se haya especificado NOCPTRANS no se
convertirn. NOCPTRANS solamente se puede especificar para campos de caracteres y memo.
El ejemplo siguiente crea una tabla llamada MITABLA que contiene dos campos de caracteres y dos
campos memo. El segundo campo de caracteres, CAR2, y el segundo campo memo, MEMO2, incluyen
NOCPTRANS para impedir la conversin.
CREATE TABLE mitabla (car1 C(10), car2 C(10) NOCPTRANS, memo1 M, memo2 M NOCPTRANS)


Manual de Genlis
130

PRIMARY KEY eExpresin2 TAG NombreEtiqueta2
Especifica un ndice principal que se desea crear. eExpresin2 especifica cualquier campo o combinacin
de campos de la tabla. TAG NombreEtiqueta2 especifica el nombre de la etiqueta de ndice principal que se
desea crear. Los nombres de ndice de etiqueta pueden contener hasta 10 caracteres.
Puesto que una tabla solamente puede tener un ndice principal, no es posible incluir esta clusula si ya ha
creado un ndice principal para un campo. Genlis generar un error si incluye dos o ms clusulas
PRIMARY KEY en CREATE TABLE.
UNIQUE eExpresin3 TAG NombreEtiqueta3
Crea un ndice candidato. eExpresin3 especifica cualquier campo o combinacin de campos de la tabla.
No obstante, si ha creado un ndice principal con una de las opciones de PRIMARY KEY, no podr incluir el
campo especificado para el ndice principal. TAG NombreEtiqueta3 especifica un nombre de etiqueta para la
etiqueta de ndice candidato que se desea crear. Los nombres de ndice de etiqueta pueden contener hasta
10 caracteres.
Una tabla puede tener mltiples ndices candidatos.

FOREIGN KEY eExpresin4 TAG NombreEtiqueta4 [NODUP]
Crea un ndice externo (no principal) y establece una relacin con una tabla primaria. eExpresin4 especifica
la expresin de clave de ndice externo y NombreEtiqueta4 especifica el nombre de la etiqueta de clave de
ndice externo que se desea crear. Los nombres de ndice de etiqueta pueden contener hasta 10 caracteres.
Incluya NODUP para crear un ndice externo candidato.
Puede crear mltiples ndices externos para la tabla, pero sus expresiones deben especificar campos
distintos de la tabla.

REFERENCES NombreTabla3 [TAG NombreEtiqueta5]
Especifica la tabla primaria con la cual se establece una relacin definitiva. Incluya TAG NombreEtiqueta5
para establecer una relacin basada en una etiqueta de ndice para la tabla primaria. Los nombres de ndice
de etiqueta pueden contener hasta 10 caracteres. Si omite TAG NombreEtiqueta5, la relacin se
establecer, de forma predeterminada, mediante la clave de ndice principal de la tabla primaria.
CHECK eExpresin2 [ERROR cTextoMensaje2]
Especifica la regla de validacin de tabla. ERROR cTextoMensaje2 especifica el mensaje de error que Genlis
mostrar cuando se ejecute la regla de validacin de tabla. El mensaje solamente se muestra cuando se
modifican los datos desde una ventana Examinar o Editar.

FROM ARRAY NombreMatriz
Especifica el nombre de una matriz existente cuyo contenido es el nombre, el tipo, la precisin y la escala
para cada campo de la tabla. El contenido de la matriz se puede definir con la funcin AFIELDS( ).

Comentarios
La nueva tabla se abre en la menor rea de trabajo disponible y se puede tener acceso a ella por su alias. La
nueva tabla se abre de forma exclusiva, cualquiera que sea la configuracin actual de SET EXCLUSIVE.
Si hay una base de datos abierta y no incluye la clusula FREE, la nueva tabla se agregar a la base de
datos. No puede crear una tabla nueva con el mismo nombre que otra ya existente en la base de datos.


Manual de Genlis
131
Si no hay ninguna base de datos abierta al crear la nueva tabla, se generar un error si se incluyen las
clusulas NAME, CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY o REFERENCES.
Observe que la sintaxis de CREATE TABLE utiliza comas para separar determinadas opciones de CREATE
TABLE. Adems, las clusulas NULL, NOT NULL, CHECK, DEFAULT, PRIMARY KEY y UNIQUE deben
estar incluidas entre los parntesis que contienen las definiciones de columnas.


5.5.61. CTOD( ) (Funcin)

Convierte una expresin de caracteres en una expresin de fecha.

Sintaxis
CTOD(cExpresin)

Tipos devueltos
Date

Argumentos
cExpresin
Especifica una expresin de caracteres para la cual CTOD( ) devuelve un valor de tipo Date.


5.5.62. CTOBIN( ) (Funcin)

Convierte una representacin de caracteres binarios en un valor entero.

Sintaxis
CTOBIN(cExpresin)

Tipo devuelto
Numeric

Argumentos
cExpresin
Especifica la representacin de caracteres binarios que se va a convertir.

Comentarios
Utilice CTOBIN( ) para volver a convertir una representacin de caracteres binarios creada con BINTOC( ) en
un valor entero.



Manual de Genlis
132

5.5.63. CTOT( ) (Funcin)

Devuelve un valor DateTime a partir de una expresin de caracteres.

Sintaxis
CTOT(cExpresinCarcter)

Tipo devuelto
DateTime

Argumentos
cExpresinCarcter
Especifica la expresin de caracteres a partir de la cual se devuelve un valor DateTime.


5.5.64. CURDIR( ) (Funcin)

Devuelve el directorio actual.

Sintaxis
CURDIR([cExpresin])

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la unidad o el volumen para el cual CURDIR( ) devuelve el directorio actual. Si omite cExpresin,
se asumir la unidad o el volumen predeterminados actuales. Devuelve una cadena vaca si la unidad o el
volumen especificado en cExpresin no existen.

Comentarios
CURDIR( ) devuelve en forma de cadena de caracteres el directorio MS-DOS actual de una unidad
especificada.




Manual de Genlis
133
5.5.65. DATE( ) (Funcin)

Devuelve la fecha actual del sistema, que est controlada por el sistema operativo, o crea un valor Date
compatible con el milenio.

Sintaxis
DATE([nAo, nMes, nDa])

Tipos devueltos
Date

Argumentos
nAo
Especifica el ao devuelto en el valor Date compatible con el milenio. nAo puede tener un valor entre 100 y
9999.

nMes
Especifica el mes devuelto en el valor Date compatible con el milenio. nMes puede tener un valor entre 1 y
12.

nDa
Especifica el da devuelto en el valor Date compatible con el milenio. nDa puede ser un valor entre 1 y 31.

Comentarios
DATE( ) devuelve la actual fecha del sistema si se ejecuta sin argumentos opcionales. Incluya los argumentos
opcionales para que devuelva un valor Date compatible con el milenio.


5.5.66. DATETIME( ) (Funcin)

Devuelve la fecha y la hora actuales como un valor DateTime o crea un valor DateTime compatible
preparado para el milenio.

Sintaxis
DATETIME([nAo, nMes, nDa [, nHoras [, nMinutos [, nSegundos]]]])

Tipos devueltos
DateTime

Argumentos
nAo


Manual de Genlis
134
Especifica el ao devuelto en un valor DateTime compatible con el milenio. nAo puede tener un valor entre
100 y 9999.

nMes
Especifica el mes devuelto en un valor DateTime compatible con el milenio. nMes puede tener un valor entre
1 y 12.

nDa
Especifica el da devuelto en un valor DateTime compatible con el milenio. nDa puede tener un valor entre 1
y 31.

nHoras
Especifica las horas devueltas en un valor DateTime compatible con el milenio. nHoras puede tener un valor
entre 0 (medianoche) y 23 (11 p.m.). Toma el valor predeterminado 0 si se omite.

nMinutos
Especifica los minutos devueltos en un valor DateTime compatible con el milenio. nMinutos puede tener un
valor entre 0 y 59. Toma el valor predeterminado 0 si se omite.

nSegundos
Especifica los segundos devueltos en un valor DateTime compatible con el milenio. nSegundos puede tomar
un valor entre 0 y 59. Toma el valor predeterminado 0 si se omite.

Comentarios
DATETIME( ) devuelve la fecha actual del sistema si se ejecuta sin ningn argumento opcional.


5.5.67. DAY( ) (Funcin)

Devuelve el nmero del da del mes correspondiente a una expresin de Date o de DateTime dada.

Sintaxis
DAY(dExpresin | tExpresin)

Tipos devueltos
Numeric

Argumentos
dExpresin
Especifica una fecha a partir de la cual DAY( ) devuelve un da del mes. dExpresin puede ser un literal de
fecha, una variable de memoria de tipo Date, un elemento de matriz o un campo de fecha.



Manual de Genlis
135
tExpresin
Especifica una fecha a partir de la cual DAY( ) devuelve un da del mes. dExpresin puede ser un literal de
fecha, una variable de memoria de tipo Date, un elemento de matriz o un campo de fecha.

Comentarios
DAY( ) devuelve un nmero entre 1 y 31.


5.5.68. DELETE - SQL (Comando)

Marca registros para eliminarlos.

Sintaxis
DELETE FROM [NombreBaseDatos!]NombreTabla
[WHERE CondicinFiltro1 [AND | OR CondicinFiltro2 ...]]

Argumentos
FROM [NombreBaseDatos!]NombreTabla
Especifica la tabla en la que se marcan registros para eliminar.

NombreBaseDatos! especifica el nombre de una base de datos no actual que contiene la tabla. Incluya el
nombre de una base de datos que contenga la tabla si no es la base de datos actual. Incluya el delimitador
signo de exclamacin (!) despus del nombre de base de datos y antes del nombre de tabla.

WHERE CondicinFiltro1 [AND | OR CondicinFiltro2 ...]
Especifica que Genlis slo marca algunos registros para eliminar.

CondicinFiltro especifica los criterios que deben satisfacer los registros para marcarlos para eliminacin.
Puede incluir tantas condiciones como desee si las conecta con el operador AND u OR. Tambin puede
emplear el operador NOT para invertir el valor de una expresin lgica o utilizar EMPTY( ) para comprobar si
hay campos vacos.

Comentarios
Los registros marcados para eliminacin no se eliminan fsicamente de la tabla hasta que se ejecute PACK.
Los registros marcados para eliminacin pueden recuperarse (quitarles la marca) con RECALL.
Si se establece SET DELETED como ON, todos los comandos que incluyan un alcance pasarn por alto los
registros marcados para eliminacin.
A diferencia de DELETE, DELETE - SQL utiliza el bloqueo de registros cuando marca varios registros para
eliminarlos de las tablas abiertas para acceso compartido. Este hecho disminuye la contencin de registros
en situaciones de varios usuarios, pero puede ralentizar el rendimiento. Para conseguir el mximo
rendimiento, abra la tabla para uso exclusivo o utilice FLOCK( ) para bloquear la tabla.



Manual de Genlis
136

5.5.69. DELETE FILE (Comando)

Elimina un archivo del disco.

Sintaxis
DELETE FILE [NombreArchivo | ?] [RECYCLE]

Argumentos
NombreArchivo
Especifica el archivo que desea eliminar. NombreArchivo puede contener caracteres comodn tales como * y
?. Por ejemplo, para eliminar archivos de copia de seguridad con la extensin .bak en el directorio actual,
ejecute DELETE FILE *.BAK.

?
Muestra el cuadro de dilogo Eliminar, en el que puede elegir un archivo para eliminarlo.

RECYCLE
Especifica que el archivo no se eliminar del disco inmediatamente y que se colocar en la Papelera de
reciclaje de Windows 95.
Precaucin. Cualquier archivo eliminado con este comando no podr recuperarse. Incluso si especifica SET
SAFETY ON, no se le avisar antes de eliminar el archivo.

Comentarios
Cuando ejecute DELETE FILE, el archivo que pretenda eliminar no podr estar abierto. El nombre del archivo
debe incluir la ruta de acceso si est en una unidad o en un directorio distinto de los predeterminados y
debe incluir la extensin del nombre del archivo. El nombre del archivo no puede contener caracteres
comodn.
Antes de eliminar una tabla de una base de datos, ejecute REMOVE TABLE con el nombre de la tabla para
quitar de la base de datos la referencia a dicha tabla. Si elimina una tabla que tiene asociado un archivo
memo .FPT, asegrese de eliminar el archivo memo.


5.5.70. DIRECTORY( ) (Funcin)

Devuelve verdadero (.T.) si no se encuentra en disco el directorio especificado.

Sintaxis
DIRECTORY(cNombreDirectorio)



Manual de Genlis
137
Tipos devueltos
Logical

Argumentos
cNombreDirectorio
Especifica el nombre del directorio que se va a ubicar. Si no incluye una ruta de acceso absoluta para el
directorio que especifique, Genlis buscar el directorio relacionado con el directorio predeterminado de
Genlis.

Comentarios
El directorio predeterminado de Genlis se especifica con SET DEFAULT.


5.5.71. DO WHILE ... ENDDO (Comando)

Ejecuta un conjunto de comandos dentro de un bucle condicional.

Sintaxis
DO WHILE lExpresin
Comandos
ENDDO

Argumentos
lExpresin
Especifica una expresin lgica cuyo valor determina si se debe ejecutar el conjunto de comandos incluido
entre DO WHILE y ENDDO. Siempre que lExpresin d como resultado verdadero (.T.), el conjunto de
comandos se ejecutar.

Comandos
Especifica el conjunto de comandos de Genlis que se ejecutan siempre y cuando lExpresin d como
resultado verdadero (.T.).

Comentarios
Un conjunto de comandos situados entre DO WHILE y ENDDO se ejecuta siempre y cuando la expresin
lgica <expL> sea verdadera (.T.). Una instruccin DO WHILE debe tener su correspondiente instruccin
ENDDO.





Manual de Genlis
138
5.5.72. DOW( ) (Funcin)

Devuelve el nmero del da de la semana a partir de una expresin Date o DateTime dada.

Sintaxis
DOW(dExpresin | tExpresin [, nPrimerDaSemana])

Tipos devueltos
Numeric

Argumentos
dExpresin
Especifica la expresin Date a partir de la cual DOW( ) devuelve el nmero del da.

tExpresin
Especifica la expresin DateTime a partir de la cual DOW( ) devuelve el nmero de da.

nPrimerDaSemana
Especifica el primer da de la semana. nPrimerDaSemana puede ser uno de los valores siguientes.

nPrimerDaSemana Descripcin
0 DOW( ) usa el da que est seleccionado actualmente en el cuadro de lista "La semana comienza
en", que aparece en la ficha Regional del cuadro de dilogo Opciones.
1 Domingo. Es el valor predeterminado cuando se omite nPrimerDaSemana y es el primer da de la
semana usado en versiones anteriores de FoxPro.
2 Lunes
3 Martes
4 Mircoles
5 Jueves
6 Viernes
7 Sbado



5.5.73. DTOC( ) (Funcin)

Devuelve una fecha de tipo Character a partir de una expresin de tipo Date o DateTime.

Sintaxis
DTOC(dExpresin | tExpresin [, 1])



Manual de Genlis
139
Tipos devueltos
Character

Argumentos
dExpresin
Especifica una variable de memoria, un elemento de matriz o un campo de tipo Date para los que DTOC( )
devuelve una fecha de tipo Character.

tExpresin
Especifica una variable de memoria, un elemento de matriz o un campo de tipo DateTime para los cuales
DTOC( ) devuelve una fecha de tipo Character.

1
Devuelve la fecha en un formato adecuado para la indexacin. Esto 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:
INDEX ON DTOC(gdFechaFact, 1) + gnHoraFact TAG IndHora
gdFechaFact y gnIndHora son los campos que contienen la fecha y la hora en que se escribieron los datos
en el registro.

Comentarios
DTOC( ) devuelve una cadena de caracteres correspondiente a la expresin de Date o de DateTime. El
formato de fecha viene determinado por SET CENTURY y SET DATE.



5.5.74. DTOR( ) (Funcin)

Convierte grados en radianes.

Sintaxis
DTOR(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica la expresin numrica cuyo valor se desea convertir en radianes. Un ngulo expresado en
formato grados:minutos:segundos se debe convertir a su equivalente decimal.



Manual de Genlis
140
Comentarios
DTOR( ) convierte el valor de una expresin numrica dada en grados en su valor equivalente en radianes.
DTOR( ) es til para trabajar con las funciones trigonomtricas de Genlis: ACOS( ), ASIN( ), COS( ), SIN( ),
TAN( ).
Utilice RTOD( ) para convertir radianes en grados.


5.5.75. DTOS( ) (Funcin)

Devuelve una cadena de caracteres de fecha con el formato AAAAMMDD a partir de una expresin de Date
o de DateTime especificada.

Sintaxis
DTOS(dExpresin | tExpresin)

Tipos devueltos
Character

Argumentos
dExpresin
Especifica la expresin de Date que DTOS( ) convierte a una cadena de caracteres de ocho dgitos.

tExpresin
Especifica la expresin de DateTime que DTOS( ) convierte a una cadena de caracteres de ocho dgitos.

Comentarios
Esta funcin es til para indexar tablas por un campo de Date o de DateTime. Es equivalente a DTOC( )
cuando se incluye su argumento opcional 1.
La cadena de caracteres devuelta por DTOS( ) no se ve afectada por SET DATE o SET CENTURY.


5.5.76. DTOT( ) (Funcin)

Devuelve un valor de DateTime a partir de una expresin de Date.

Sintaxis
DTOT(dExpresinFecha)

Tipos devueltos
DateTime


Manual de Genlis
141

Argumentos
dExpresinFecha
Especifica la expresin de Date a partir de la cual se devuelve un valor de DateTime.

Comentarios
El formato del valor DateTime que DTOT( ) devuelve depende del valor actual de SET DATE y SET MARK. Si
no se suministra un siglo, se adopta el siglo XX.
DTOT( ) agrega una hora predeterminada de medianoche (12:00:00 a.m.) a la fecha para producir un valor
vlido de DateTime.


5.5.77. EMPTY( ) (Funcin)

Determina si una expresin est vaca o no.

Sintaxis
EMPTY(eExpresin)

Tipo devuelto
Logical

Argumentos
eExpresin
Especifica la expresin evaluada por EMPTY( ).
La expresin que incluya puede ser una expresin de caracteres, numrica, de fecha o lgica, o el nombre
de un campo memo o general de una tabla abierta. EMPTY( ) devuelve verdadero (.T.) cuando las
expresiones de los tipos de datos siguientes contienen los datos indicados:

Tipo de expresin Se evala como
Character La cadena vaca, espacios en blanco, tabulaciones, retornos de carro o avances de lnea o
cualquier combinacin de stos.
Numeric 0
Currency 0
Float 0
Integer 0
Double 0
Date Vaco (p.e., CTOD(''))
DateTime Vaco (p.e., CTOD(''))
Logical Falso (.F.)
Memo Vaco (sin contenido)
General Vaco (sin objeto OLE)


Manual de Genlis
142
Picture Vaco (sin imagen)

EMPTY( ) no puede utilizarse para determinar si una referencia de objeto de variable de memoria est vaca.
Por ejemplo, una variable de memoria puede contener una referencia de objeto para un Form. Si el Form se
cierra haciendo clic en Cerrar desde el men contextual del Form o con CLEAR WINDOWS, la variable de
memoria contendr el valor nulo.
El programa de ejemplo siguiente demuestra cmo usar TYPE( ) y ISNULL( ) para determinar si una
referencia de objeto de variable de memoria es vlida.
goMyForm = CREATEOBJECT('Form')
WAIT WINDOW IIF(TYPE('goMyForm') = 'O' AND !ISNULL(goMyForm), ;
'goMyForm tiene una referencia de objeto vlida',;
'goMyForm no tiene una referencia de objeto vlida')

Comentarios
EMPTY( ) devuelve verdadero (.T.) si la expresin eExpresin est vaca. Si la expresin no est vaca,
EMPTY() devolver falso (.F.).


5.5.78. EOF( ) (Funcin)

Determina si el puntero de registro est situado o no ms all del ltimo registro de la tabla actual o
especificada.

Sintaxis
EOF([nreaTrabajo | cAliasTabla])

Tipo devuelto
Logical

Argumentos
nreaTrabajo
Especifica el nmero de rea de trabajo de la tabla.

cAliasTabla
Especifica el alias de la tabla.
EOF( ) devuelve falso (.F.) si no est abierta una tabla en un rea de trabajo que especifique.
Si no especifica un alias de rea de trabajo, se probar la condicin de final de archivo en la tabla abierta en
el rea de trabajo seleccionada.

Comentarios
EOF( ) devuelve verdadero (.T.) si el puntero de registro alcanza el final del archivo de tabla (EOF). El final de
la tabla se alcanza cuando el puntero del registro transfiere el ltimo registro de la tabla. Por ejemplo,


Manual de Genlis
143
cuando se ejecuta FIND, LOCATE o SEEK sin xito, Genlis mueve el puntero de registro hasta despus del
ltimo registro, y EOF( ) devuelve verdadero (.T.). EOF( ) devuelve falso (.F.) si el puntero del registro no est
al final de la tabla.


5.5.79. ERASE (Comando)

Borra un archivo del disco.

Sintaxis
ERASE NombreArchivo | ? [RECYCLE]

Argumentos
NombreArchivo
Especifica el archivo que se va a borrar. Incluya la ruta de acceso con el nombre del archivo si el archivo
est en una unidad o en un directorio de los actuales unidad o directorio
NombreArchivo puede contener caracteres comodn como * y ?. Por ejemplo, para borrar archivos de copia
de seguridad con ERASE *.BAK.

?
Muestra el cuadro de dilogo Eliminar, donde puede elegir un archivo que desee borrar.

RECYCLE
Especifica que el archivo no se elimine inmediatamente del disco y lo coloca en la Papelera de reciclaje de
Windows 95.

Precaucin. Tenga precaucin al utilizar ERASE. Cualquier archivo borrado con este comando no podr
recuperarse. No se le avisar antes de borrar el archivo, incluso si SET SAFETY est ON


5.5.80. EVALUATE( ) (Funcin)

Evala una expresin de caracteres y devuelve el resultado.

Sintaxis
EVALUATE(cExpresin)

Tipos devueltos
Character, Numeric, Currency, Date, DateTime, Logical o Memo



Manual de Genlis
144
Argumentos
cExpresin
Especifica la expresin a evaluar. cExpresin puede ser una cadena de caracteres literales, o una expresin
vlida de Genlis, una variable de memoria, un elemento de matriz o un campo de cualquier tipo de datos,
incluidos entre comillas. cExpresinn no puede ser mayor de 255 caracteres.
Siempre que sea posible, utilice EVALUATE( ) o una expresin de nombre para reemplazar la sustitucin de
macro utilizando &. EVALUATE y las expresiones de nombre se ejecutan ms rpido que las sustituciones
de macro.

Comentarios
EVALUATE( ) es similar a TYPE( ) pero devuelve el resultado de una expresin en lugar del tipo de expresin.
Una expresin que contiene EVALUATE( ) no puede optimizarse mediante Rushmore.


5.5.81. EXP( ) (Funcin)

Devuelve el valor de ex donde x es una expresin numrica especificada.

Sintaxis
EXP(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica el exponente, x, en la expresin exponencial ex

Comentarios
El valor de e, la base de los logaritmos naturales, es aproximadamente 2,71828. El nmero de lugares
decimales que se muestran con EXP( ) se especifica con SET DECIMALS.


5.5.82. EXPORT (Comando)

Copia datos desde una tabla de Genlis hasta un archivo de otro formato diferente.

Sintaxis
EXPORT TO NombreArchivo


Manual de Genlis
145
[TYPE] DIF | MOD | SYLK
| WK1 | WKS | WR1 | WRK | XLS | XL5
[FIELDS ListaCampos]
[Alcance]
[FOR lExpresin1]
[WHILE lExpresin2]
[NOOPTIMIZE]
[AS nPginaCdigos]

Argumentos
NombreArchivo
Especifica el nombre del archivo al que Genlis exporta datos. Si no incluye ninguna extensin con el nombre
de archivo, se asignar la extensin predeterminada para el tipo de archivo especificado.

TYPE
Especifica el tipo de archivo que se va a crear. La palabra clave TYPE es opcional, pero es necesario
especificar uno de los siguientes tipos de archivo.

Tipo de archivo Descripcin
DIF Cada campo de una tabla de Genlis se convierte en un vector (columna) y cada registro se convierte
en un tupla (fila) en un archivo DIF (formato de intercambio de datos, Data Interchange Format), utilizado por
VisiCalc. Se asigna el nuevo nombre de archivo a una extensin.DIF si no se incluye ninguna extensin en
NombreArchivo.

MOD Utilice la clusula MOD para exportar a un archivo en un formato Microsoft Multiplan versin 4.01
MOD. Se asignar el nuevo nombre de archivo a una extensin .MOD si no incluye una extensin en
NombreArchivo.

SYLK Un formato de intercambio de vnculos simblico (utilizado por Microsoft Multiplan) en el cual cada
campo de una tabla de Genlis se transforma en una columna en la hoja de clculo y cada registro se
convierte en una fila. De forma predeterminada, los nombres de archivo SYLK no tienen extensin.

WK1 Incluya esta opcin para crear una hoja de clculo de Lotus 1-2-3 a partir de una tabla de Genlis. Se
asigna una extensin .WK1 al nombre del archivo de hoja de clculo para usarlo en Lotus 1-2-3 revisin 2.x.
Cada campo de la tabla se convierte en una columna en la nueva hoja de clculo, y cada registro de la tabla
se convierte en una fila de la hoja de clculo.

WKS Incluya esta opcin para crear una hoja de clculo de Lotus 1-2-3 a partir de una tabla de Genlis. Se
asigna una extensin .WKS al nombre de archivo de la hoja de clculo para la utilizacin con Lotus 1-2-3
revisin 1-A. Cada campo de la tabla se convierte en una columna en la nueva hoja de clculo, y cada
registro se convierte en una fila de la hoja de clculo.

WR1 Incluya esta opcin para crear una hoja de clculo de Lotus Symphony a partir de una tabla de
Genlis. Se asigna una extensin .WR1 a la hoja de clculo para usarla con Symphony versin 1.01. Cada


Manual de Genlis
146
campo de la tabla se transforma en una columna en la nueva hoja de clculo, y cada registro en la tabla se
convierte una fila en la hoja de clculo.

WRK Incluya esta opcin para crear una hoja de clculo de Lotus Symphony a partir de una tabla de
Genlis. Se asigna una extensin .WRK al nombre de archivo de la hoja de clculo para utilizarla con
Symphony versin 1.10. Cada campo de la tabla se transforma en una columna en la nueva hoja de clculo,
y cada registro en la tabla se transforma en una fila en la hoja de clculo.

XLS Incluya esta opcin para crear una hoja de clculo de Microsoft Excel a partir de una tabla Genlis.
Cada campo de la tabla seleccionada se convierte en una columna en la hoja de clculo, y cada registro de
la tabla se transforma en una fila. Se asigna una extensin de nombre de archivo .XLS al archivo de hoja de
clculo recin creada a no ser que haya especificado una extensin distinta.

XL5 Incluya esta opcin para crear un archivo de hoja de clculo de Microsoft Excel versin 5.0 a partir
de una tabla de Genlis. Cada campo de la tabla actualmente seleccionada se convierte en una columna en
la hoja de clculo y cada registro se transforma en una fila. Se asigna una extensin de nombre de archivo
.XLS a la nueva hoja de clculo a no ser que haya especificado una extensin distinta.

FIELDS ListaCampos
Especifica qu campos se van a copiar al nuevo archivo. Si omite la clusula FIELDS, se copiarn todos los
campos al nuevo archivo. Los campos de tipo Memo y General no se copian al nuevo archivo aunque sus
nombres estn incluidos en la lista de campos.

Alcance
Especifica un intervalo de registros que se va a copiar al nuevo archivo. Alcance Especifica un intervalo de
registros que se va a copiar al nuevo archivo. Slo se copiarn al nuevo archivo aquellos registros que
queden dentro del intervalo. Las clusulas de alcance son: ALL, NEXT nRegistros, RECORD
nNmeroRegistros, y REST.
El alcance predeterminado para EXPORT es todos los registros.

FOR lExpresin1
Especifica que slo aquellos registros que satisfagan la condicin lgica lExpresin1 se copiarn al nuevo
archivo. Esto le permite eliminar los registros no deseados.
Rushmore optimizar un comando EXPORT ... FOR lExpresin1 si lExpresin1 es una expresin o
optimizable. Para conseguir el mximo rendimiento, use una expresin optimizable en la clusula FOR.

WHILE lExpresin2
Especifica una condicin por la cual los registros se copiarn al nuevo archivo siempre y cuando la
expresin lgica lExpresin2 se evale como verdadera (.T.).

NOOPTIMIZE
Desactiva la optimizacin Rushmore de EXPORT.

AS nPginaCdigos


Manual de Genlis
147
Especifica la pgina de cdigos para el archivo que crea EXPORT. Genlis copia el contenido de la tabla
seleccionada actualmente y, a medida que copia los datos, los convierte automticamente a la pgina de
cdigos que usted especifique para el nuevo archivo. Si es posible, Genlis marcar el archivo recin creado
con la pgina de cdigos que usted especifique.
Si especifica un valor no aceptado para nPginaCdigos, Genlis generar un mensaje de error. Puede usar
GETCP( ) para nPginaCdigos de manera que aparezca el cuadro de dilogo Pgina de cdigos,
permitindole especificar una pgina de cdigos para el archivo que cree Genlis.
Si omite AS nPginaCdigos, no se producir ninguna conversin de pginas de cdigos. Si es posible,
Genlis marcar el archivo recin creado con la pgina de cdigos de la pgina desde la que se copiaron los
datos.
Si nPginaCdigos es 0, no se producir ninguna conversin de pgina de cdigos y el archivo recin
creado no se marcar con ninguna pgina de cdigos.

Comentarios
Use EXPORT para utilizar datos de Genlis en otros paquetes de software.
Si la tabla desde la que est exportando est indizada, el nuevo archivo se crear en el orden indizado.


5.5.83. FCHSIZE( ) (Funcin)

Cambia el tamao de un archivo abierto con una funcin de archivo de bajo nivel.

Sintaxis
FCHSIZE(nControladorArchivo, nNuevoTamaoArchivo)

Tipos devueltos
Numeric

Argumentos
nControladorArchivo
Especifica el controlador del archivo cuyo tamao desea cambiar. El controlador de archivo lo devuelve
FOPEN( ) al abrir el archivo o FCREATE( ) al crear el archivo. Si abre un archivo con FOPEN( ), deber volver
a abrirlo con privilegios de escritura o de lectura y escritura para poder cambiar su tamao.

nNuevoTamaoArchivo
Especifica el nuevo tamao del archivo, en bytes. Si nNuevoTamaoArchivo es menor que el tamao original
del archivo, se truncar el archivo. Si nNuevoTamaoArchivo es mayor que el tamao original del archivo, se
aumentar el tamao del archivo.

Comentarios
Utilice FCHSIZE( ) para aumentar el tamao del archivo o truncar el archivo a partir de un byte especificado.


Manual de Genlis
148
Cuando se aumenta el tamao de un archivo, Genlis asigna sectores para el archivo en la unidad en la que
est abierto el archivo. Como FCHSIZE( ) no inicializa el espacio del archivo nuevo, el espacio podr
contener los datos antiguos. Asegrese de administrar el espacio del archivo nuevo.
Devuelve el tamao final del archivo en bytes. Genlis devuelve 1 si FCHSIZE( ) no es capaz de cambiar el
tamao del archivo si, por ejemplo, se ha especificado un control de archivo no vlido, debido a que no hay
espacio de disco suficiente o a que el archivo es de slo lectura.

Sugerencia. Esta funcin puede utilizarse para truncar un archivo a longitud 0.


5.5.84. FCLOSE( ) (Funcin)

Vaca y cierra un archivo o puerto de comunicacin abierto con una funcin de archivo de bajo nivel.

Sintaxis
FCLOSE(nControladorArchivo)

Tipos devueltos
Logical

Argumentos
nControladorArchivo
Especifica el controlador del archivo de bajo nivel que desea cerrar. El controlador numrico de archivo se
devuelve al crear el archivo con FCREATE( ) o al abrirlo con FOPEN( ).

Comentarios
Si el archivo logra cerrarse, FCLOSE( ) devolver verdadero (.T.) y liberar el control del archivo, FCLOSE( )
devolver falso (.F.) si el archivo no puede cerrarse.
CLOSE ALL cierra tambin los archivos de bajo nivel.


5.5.85. FCOUNT( ) (Funcin)

Devuelve el nmero de campos de una tabla.

Sintaxis
FCOUNT([nreaTrabajo | cAliasTabla])

Tipos devueltos
Numeric


Manual de Genlis
149

Argumentos
nreaTrabajo
Especifica el rea de trabajo de la tabla cuyo nmero de campos devuelve FCOUNT( ).
FCOUNT( ) devuelve 0 si no hay una tabla abierta en el rea de trabajo que especifique.

cAliasTabla
Especifica el alias de la tabla cuyo nmero de campos devuelve FCOUNT( ).
Genlis genera un mensaje de error si especifica un alias de tabla que no existe.

Comentarios
Si omite los argumentos opcionales, FCOUNT( ) devuelve el nmero de campos de la tabla abierta en el rea
de trabajo seleccionada en este momento.


5.5.86. FCREATE( ) (Funcin)

Crea y abre un archivo de bajo nivel.

Sintaxis
FCREATE(cNombreArchivo [, nAtributoArchivo])

Tipos devueltos
Numeric

Argumentos
cNombreArchivo
Puede incluir un designador de unidad y una ruta de acceso con el nombre del archivo. Si no se incluye un
designador de unidad o una ruta de acceso, el archivo se crear en el directorio predeterminado.

Nota. Genlis no reconocer correctamente un nombre de ruta de acceso si un nombre de disco o de
directorio contiene un signo de exclamacin (!).

nAtributoArchivo
Especifique los atributos del archivo creado. La siguiente tabla enumera los atributos de archivo que puede
especificar.
nAtributoArchivo Atributos de archivo
0 (Predeterminado) Lectura y escritura
1 Slo lectura
2 Oculto
3 Slo lectura/Oculto
4 Sistema


Manual de Genlis
150
5 Slo lectura/Sistema
6 Sistema/Oculto
7 Slo lectura/Oculto/Sistema

Observe que un archivo creado con un valor de nArchivoAtributo distinto de 0 no se puede escribir con
FPUTS( ) o FWRITE( ) hasta que se cierre y se vuelva a abrir el archivo.
Utilice DISPLAY STATUS o LIST STATUS para mostrar o imprimir informacin sobre los archivos creados y
abiertos con FCREATE( ). DISPLAY STATUS y LIST STATUS le dan la informacin siguiente sobre cada
archivo abierto o creado con una funcin de archivo de bajo nivel:
La unidad, directorio y nombre de archivo
El numero de controlador de archivo
La posicin del puntero del archivo
Los atributos de lectura y escritura

Comentarios
Si ya existe un archivo con el mismo nombre que especifique, se sobrescribir sin avisar.
FCREATE( ) asigna un nmero de control de archivo al archivo, que puede utilizar para identificar el archivo
en otras funciones de archivos de bajo nivel de Genlis FCREATE( ) devuelve el nmero de control de archivo
cuando se crea un archivo, o devuelve 1 si el archivo no puede crearse.

Sugerencia. Asigne el nmero de control de archivo a una variable de memoria para que pueda utilizarlo en
otras funciones de archivos de bajo nivel.
No puede abrir un puerto de comunicaciones con FCREATE( ). Utilice FOPEN( ) para abrir un puerto de
comunicaciones.


5.5.87. FDATE( ) (Funcin)

Devuelve la ltima modificacin DATE o DATETIME de un archivo.

Sintaxis
FDATE(cNombreArchivo [, nTipo])

Tipos devueltos
Date

Argumentos
cNombreArchivo
Especifica el nombre del archivo cuya ltima fecha de modificacin devuelve FDATE( ). cNombreArchivo
puede incluir una ruta de acceso con el nombre del archivo. Si no se incluye una ruta de acceso con el
nombre de archivo, Genlis busca el archivo en el directorio predeterminado y en los directorios
especificados con SET PATH.


Manual de Genlis
151

nTipo
Especifica que FDATE( ) devuelva la ltima modificacin de fecha o fecha y hora del archivo especificado
con cNombreArchivo. Si nTipo es 0, se devuelve la ltima modificacin de fecha. Incluir 0 es lo mismo que
omitir nTipo. Si nTipo es 1, se devuelve la ltima modificacin de fecha y hora.

Comentarios
El sistema operativo asigna al archivo el valor de fecha o de fecha y hora que devuelve FDATE( ).
Utilice LUPDATE( ) para determinar la ltima fecha de modificacin de una tabla abierta.


5.5.88. FEOF( ) (Funcin)

Determina si el puntero de archivo se encuentra o no al final de un archivo.

Sintaxis
FEOF(nControladorArchivo)

Tipos devueltos
Logical

Argumentos
nControladorArchivo
Especifique el nmero del controlador de archivo del archivo para comprobar la condicin de fin de archivo.
FEOF( ) siempre devolver verdadero (.T.) si especifica un nmero de controlador de archivo de un puerto de
comunicaciones abierto con FOPEN( ).

Comentarios
Esta funcin de archivo de bajo nivel devuelve verdadero (.T.) si el puntero de archivo est situado al final de
un archivo abierto con una funcin de archivo de bajo nivel. FEOF( ) devuelve falso (.F.) si el puntero del
archivo no est al final del archivo.


5.5.89. FERROR( ) (Funcin)

Devuelve un nmero correspondiente al error de funcin de archivo de bajo nivel ms reciente.

Sintaxis
FERROR( )



Manual de Genlis
152
Tipos devueltos
Numeric

Comentarios
FERROR( ) devuelve 0 si una funcin de archivo de bajo nivel se ejecuta correctamente. Si la funcin no
termina con xito se devuelve un valor positivo. La tabla siguiente muestra cada nmero de error devuelto
por FERROR( ) y la causa del error.

Nmero de error Causa del error
2 Archivo no encontrado
4 Demasiados archivos abiertos (no hay controladores de archivo)
5 Acceso denegado
6 Controlador de archivo no vlido
8 No hay memoria
25 Error de bsqueda (no puede buscar antes del comienzo de un archivo)
29 Disco lleno
31 Error al abrir archivo


5.5.90. FFLUSH( ) (Funcin)

Vaca en disco un archivo abierto con una funcin de bajo nivel.

Sintaxis
FFLUSH(nControladorArchivo)

Tipos devueltos
Logical

Argumentos
nControladorArchivo
Especifica el controlador del archivo que se va a vaciar en disco.

Comentarios
FFLUSH( ) libera tambin la memoria utilizada por el bfer del archivo.
FLUSH es distinto de la funcin FFLUSH( ). FLUSH no acta con archivos de bajo nivel sino con tablas e
ndices.






Manual de Genlis
153
5.5.91. FGETS( ) (Funcin)

Devuelve un conjunto de bytes desde un archivo o un puerto de comunicaciones abierto con una funcin de
archivo de bajo nivel hasta encontrar un retorno de carro.

Sintaxis
FGETS(nControladorArchivo [, nBytes])

Tipos devueltos
Character

Argumentos
nControladorArchivo
Especifica el controlador numrico del archivo o el puerto de comunicacin desde el que FGETS( ) devuelve
datos.

nBytes
Especifica el nmero de bytes devueltos por FGETS( ). FGETS( ) devuelve nBytes a menos que encuentre
primero un retorno de carro. FGETS( ) devuelve datos entre la posicin inicial del puntero del archivo y el
retorno de carro si se encuentra un retorno de carro dentro de los nBytes bytes.
Si se omite nBytes, FGETS( ) devuelve de forma predeterminada un mximo de 254 bytes.

Comentarios
Puede leer un archivo lnea a lnea si ejecuta varias funciones FGETS( ).
FGETS( ) devuelve un conjunto de bytes como una cadena de caracteres. Se devuelven los datos
encontrados a partir de la posicin actual del puntero del archivo y hasta que se encuentra un retorno de
carro. El puntero de archivo se coloca entonces en el byte inmediatamente siguiente al retorno de carro. El
retorno de carro no se devuelve como parte de la cadena y los saltos de lnea se descartan.


5.5.92. FILE( ) (Funcin)

Devuelve verdadero (.T.) si el archivo especificado se encuentra en el disco.

Sintaxis
FILE(cNombreArchivo)

Tipos devueltos
Logical

Argumentos


Manual de Genlis
154
cNombreArchivo
Especifica el nombre del archivo que desea encontrar. cNombreArchivo debe incluir la extensin del archivo.
Genlis busca el archivo en el directorio predeterminado. Si el archivo no puede encontrarse en el directorio
predeterminado, se buscar en la ruta de acceso de Genlis establecida con SET PATH.
Puede incluir una ruta de acceso con el nombre del archivo para buscar un archivo en un directorio o en una
unidad distinta del directorio y unidad actuales.

Comentarios
Utilice FILE( ) para encontrar un archivo en el disco. FILE( ) devuelve verdadero (.T.) si consigue encontrarse
el archivo; de lo contrario, devuelve falso (.F.).


5.5.93. FLOOR( ) (Funcin)

Devuelve el entero ms prximo que sea menor o igual que la expresin numrica especificada.

Sintaxis
FLOOR(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica la expresin numrica para la cual FLOOR( ) devuelve el entero ms prximo que sea menor o
igual que la expresin numrica.


5.5.94. FOPEN( ) (Funcin)

Abre un archivo o puerto de comunicaciones para utilizarlo con funciones de archivo de bajo nivel.

Sintaxis
FOPEN(cNombreArchivo [, nAtributo])

Tipos devueltos
Numeric

Argumentos
cNombreArchivo


Manual de Genlis
155
Especifica el nombre del archivo que se va a abrir. Si cNombreArchivo es un nombre de archivo, puede
incluir una ruta para archivos abiertos en directorios o unidades que no estn en la ruta de bsqueda actual
de Genlis. Si no se incluye la ruta, Genlis buscar el archivo en las siguientes ubicaciones:
El directorio predeterminado
La ruta de acceso establecida con SET PATH
Nota. Genlis no reconocer correctamente un nombre de ruta si un disco o un nombre de directorio
contiene un signo de exclamacin (!).

nAtributo
Especifica privilegios lectura/escritura o el esquema de almacenamiento en bfer para el archivo que abra.
La tabla siguiente lista cada nmero que puede incluir en nAtributo, y los privilegios de lectura/escritura del
archivo y el esquema de almacenamiento en bfer que establece.
nAtributo Privilegios de lectura-escritura Con bfer/Sin bfer
0 Slo lectura (predeterminado) Con bfer
1 Slo escritura Con bfer
2 Lectura y escritura Con bfer
10 Slo lectura Sin bfer
11 Slo escritura Sin bfer
12 Lectura y escritura Sin bfer

Si no se incluye nAtributo o si nAtributo se evala a 0, el archivo se abrir como slo lectura y con bfer.

Nota. Genlis no reconocer correctamente un nombre de ruta si un disco o un nombre de directorio
contiene un signo de exclamacin (!).

Comentarios
Si FOPEN( ) logra abrir un archivo, se devolver el nmero de controlador del archivo FOPEN( ) devuelve 1
si el archivo no puede abrirse.

Sugerencia. Asigne el nmero de controlador de archivo a una variable de memoria, lo que le permitir
acceder al archivo o puerto de comunicaciones por la variable de memoria en otras funciones de archivo de
bajo nivel.


5.5.95. FOR ... ENDFOR (Comando)

Ejecuta un grupo de comandos un nmero concreto de veces.

Sintaxis
FOR NombreVariableMemoria = nValorInicial TO nValorFinal [STEP nIncremento]
Comandos
[EXIT]


Manual de Genlis
156
[LOOP]
ENDFOR | NEXT

Argumentos
NombreVariableMemoria
Especifica una variable de memoria o un elemento de matriz que acta como contador. No es necesario
que exista la variable de memoria o elemento de matriz antes de ejecutar FOR ... ENDFOR.

nValorInicial TO nValorFinal
nValorInicial es el valor inicial del contador y; nValorFinal es el valor final del contador.

STEP nIncremento
nIncremento es la cantidad de incremento o decremento del contador. Si nIncremento es negativo, el
contador se decrementar. Si omite la clusula STEP, el contador se incrementar en 1.

Comandos
Especifica los comandos de Genlis que se van a ejecutar. Comandos puede incluir cualquier nmero de
comandos.

EXIT
Transfiere el control desde dentro del bucle FOR ... ENDFOR al comando que sigue inmediatamente a
ENDFOR. Puede situar EXIT en cualquier parte entre FOR y ENDFOR.

LOOP
La inclusin de LOOP devolver el control directamente a la clusula FOR sin ejecutar las instrucciones que
haya entre LOOP y ENDFOR. El contador se incrementar o decrementar como si se hubiera llegado a
ENDFOR. LOOP puede situarse en cualquier parte entre FOR y ENDFOR.

Comentarios
Se utiliza una variable de memoria o un elemento de matriz como contador para especificar cuntas veces
se ejecutan los comandos de Genlis que hay dentro del bucle FOR ... ENDFOR.
Los comandos de Genlis que hay a continuacin de FOR se ejecutan hasta que se llega a ENDFOR o NEXT.
Entonces se incrementa el contador NombreVariableMemoria con el valor de nIncremento. Si omite la
clusula STEP, el contador se incrementar en 1. Entonces se comparar el contador con el valor final
nValorFinal. Si el contador es inferior o igual al valor final nValorFinal, volvern a ejecutarse los comandos que
siguen a la clusula FOR. Si el contador es mayor que el valor final nValorFinal, la ejecucin del programa
bifurcar fuera del bucle FOR ... ENDFOR y continuar con el primer comando a continuacin de ENDFOR o
NEXT.

Nota. Los valores de nValorInicial, nValorFinal, y nIncremento se leen nicamente al inicio. Sin embargo,
cambiar el valor del contador NombreVariableMemoria dentro del bucle afecta al nmero de veces que se
ejecutar el bucle.
Si el valor de nIncremento es negativo y el valor inicial nValorInicial es mayor que el valor final nValorFinal, el
contador disminuir cada vez que pase el bucle.


Manual de Genlis
157


5.5.96. FOUND( ) (Funcin)

Devuelve verdadero (.T.) si CONTINUE, FIND, INDEXSEEK( ), LOCATE o SEEK tienen xito.

Sintaxis
FOUND([nreaTrabajo | cAliasTabla])

Tipos devueltos
Logical

Argumentos
nreaTrabajo
Especifica el rea de trabajo de la tabla para la cual FOUND( ) devuelve un valor indicando el xito del ltimo
CONTINUE, FIND, INDEXSEEK( ), LOCATE o SEEK.
FOUND( ) devolver falso (.F.) si una tabla no est abierta en el rea de trabajo especificada.

cAliasTabla
Especifica el alias de la tabla para la cual FOUND( ) devuelve un valor indicando el xito del ltimo
CONTINUE, FIND, INDEXSEEK( ), LOCATE o SEEK.
Genlis genera un mensaje de error si especifica un alias de tabla que no existe.

Comentarios
FOUND( ) devuelve un valor lgico que indica si el comando CONTINUE, FIND, INDEXSEEK( ), LOCATE o
SEEK ejecutado ms recientemente se ejecut con xito o el puntero se mueve en la tabla relacionada.
FOUND( ) devuelve verdadero (.T.) si la bsqueda tiene xito, de lo contrario devuelve falso (.F.).
Si omite los argumentos opcionales, FOUND( ) devuelve un valor indicando el xito del ltimo CONTINUE,
FIND, INDEXSEEK( ), LOCATE o SEEK para la tabla abierta en el rea de trabajo seleccionada actualmente.

Sugerencia. Esta funcin es til para determinar si una tabla secundaria tiene un registro que coincide con el
registro primario.


5.5.97. FPUTS( ) (Funcin)

Escribe una cadena de caracteres, retorno de carro y avance de lnea en un archivo o en un puerto de
comunicaciones abierto con una funcin de archivo de bajo nivel.

Sintaxis


Manual de Genlis
158
FPUTS(nControladorArchivo), cExpresin [, nCaracteresEscritos])

Tipos devueltos
Numeric

Argumentos
nControladorArchivo
Especifica el numero de controlador del archivo o puerto de comunicaciones al que FPUTS( ) escribe datos.

cExpresin
Especifica la expresin alfanumrica que escribe FPUTS( ) en el archivo o puerto.

nCaracteresEscritos
Especifica el nmero de caracteres de cExpresin que se deben escribir en el archivo o puerto.
FPUTS( ) escribir toda la expresin de caracteres cExpresin en el archivo en caso de que omita
nCaracteresEscritos. Si incluye nCaracteresEscritos, escribir en el archivo el nmero de caracteres indicado
en nCaracteresEscritos. Si nCaracteresEscritos es menor que el nmero de caracteres de cExpression,
solamente se escriben en el archivo los caracteres especificados en nCaracteresEscritos. Si
nCaracteresEscritos es igual o mayor que el nmero de caracteres en nExpresin se escribe cExpresin
completa en el archivo.

Comentarios
FPUTS( ) devuelve el nmero de bytes escritos en el archivo o puerto. Se devuelve 0 si FPUTS( ) no puede
escribir por alguna razn en el archivo o en el puerto.


5.5.98. FREAD( ) (Funcin)

Devuelve el nmero de bytes especificado desde un archivo o un puerto de comunicacin abierto con una
funcin de bajo nivel.

Sintaxis
FREAD(nControladorArchivo, nBytes)

Tipos devueltos
Character

Argumentos
nControladorArchivo
Especifica el nmero de controlador de archivo para el archivo o puerto de comunicaciones desde el cual
FREAD( ) devuelve datos.


Manual de Genlis
159

nBytes
Especifica el nmero de bytes que devuelve FREAD( ). FREAD( ) devuelve datos a partir de la posicin actual
del puntero de archivo y contina hasta que devuelve nBytes bytes o hasta que encuentra el final del
archivo, lo que ocurra primero.


5.5.99. FULLPATH( ) (Funcin)

Devuelve la ruta de acceso a un archivo especificado o la ruta relativa de otro archivo.

Sintaxis
FULLPATH(cNombreArchivo1 [, nRutaMSDOS | cNombreArchivo2])

Tipos devueltos
Character

Argumentos
cNombreArchivo1
Especifica el archivo buscado por Genlis. Asegrese de incluir la extensin del nombre de archivo.
Si el archivo se encuentra en la ruta de acceso Genlis devolver la ruta con el nombre del archivo. La ruta de
acceso Genlis puede establecerse con SET PATH.

nRutaMSDOS
Especifica que se busca la ruta de acceso MS-DOS en lugar de la ruta de acceso Genlis. nRutaMSDOS
puede tener cualquier valor numrico. Si el archivo no se puede localizar en la ruta de acceso MS-DOS, se
devuelve una ruta de acceso y el nombre de archivo como si este archivo se hubiera encontrado en el
directorio predeterminado actual.

cNombreArchivo2
Especifica un segundo nombre de archivo que se va a buscar. Asegrese de que incluye la extensin del
nombre del archivo. FULLPATH( ) devuelve la ruta de acceso del primer archivo relativo al segundo archivo.


5.5.100. GATHER (Comando)

Sustituye los datos del registro actual de la tabla seleccionada actualmente por datos de una matriz, un
conjunto de variables de memoria o un objeto.

Sintaxis


Manual de Genlis
160
GATHER FROM NombreMatriz | MEMVAR | NAME NombreObjeto
[FIELDS ListaCampos | FIELDS LIKE Estructura | FIELDS EXCEPT Estructura]
[MEMO]

Argumentos
FROM NombreMatriz
Especifica la matriz cuyos datos reemplazan los datos del registro actual. El contenido de los elementos de
la matriz, comenzando con el primer elemento, reemplazan el contenido de los campos correspondientes
del registro. El contenido del primer elemento de la matriz reemplaza al primer campo del registro; el
contenido del segundo elemento de la matriz reemplaza al segundo campo y as sucesivamente.
Si la matriz tiene menos elementos que campos tiene la tabla, se pasarn por alto los campos adicionales.
Si la matriz tiene ms elementos que campos tiene la tabla, se pasarn por alto el resto de elementos de la
matriz.

MEMVAR
Especifica las variables de memoria o la matriz desde las que se copian datos al registro actual. Los datos
se transfieren desde la variable de memoria hasta el campo que tenga el mismo nombre que dicha variable.
El contenido de un campo no se sustituye en caso de que no exista ninguna variable de memoria con el
mismo nombre que el campo.

Sugerencia. Puede crear variables con los mismos nombres que los campos incluyendo MEMVAR o BLANK
en SCATTER.

NAME NombreObjeto
Especifica un objeto cuyas propiedades tienen los mismos nombres que los campos de la tabla. El
contenido de cada campo se sustituye por el valor de la propiedad que tenga los mismos nombres que los
campos. El contenido de un campo no se sustituye si no existe ninguna propiedad con su mismo nombre.

FIELDS ListaCampos
Especifica los campos cuyo contenido se sustituye por el contenido de los elementos de la matriz o las
variables de memoria. Solamente se sustituir el contenido del campo especificado con ListaCampos.

FIELDS LIKE Estructura | FIELDS EXCEPT Estructura
Puede reemplazar selectivamente campos con el contenido de elementos de matriz o variables de memoria
si incluye la clusula LIKE o EXCEPT, o ambas. Si incluye LIKE Estructura, Genlis reemplazar los campos
que coincidan con Estructura. Si incluye EXCEPT Estructura, reemplazar todos los campos excepto los
que coincidan con Estructura.
Estructura acepta caracteres comodn (* y ?). Por ejemplo, para reemplazar todos los campos que empiecen
por las letras A y P, use:
GATHER FROM gamiarray FIELDS LIKE A*,P*
MEMO
Especifica que el contenido de los campos memo se sustituye por el contenido de los elementos de la
matriz o de las variables de memoria. Si omite MEMO, los campos memo se saltarn cuando GATHER
reemplace el contenido de los campos con el contenido de una matriz o de variables de memoria. Los


Manual de Genlis
161
campos de tipo General y Picture se pasan por alto siempre en GATHER, incluso si se incluye la palabra
clave MEMO.


5.5.101. GETDIR( ) (Funcin)

Muestra el cuadro de dilogo Seleccionar directorio, en el que puede elegir un directorio.

Sintaxis
GETDIR([cDirectorio [, cTexto]])

Tipos devueltos
Character

Argumentos
cRuta
Especifica el directorio que aparece inicialmente en el cuadro de dilogo Seleccionar directorio. Cuando no
se especifica cDirectorio el cuadro de dilogo Seleccionar directorio se abrir mostrando el directorio
predeterminado de Genlis.

cTexto
Especifica el texto para la lista de directorios o de carpetas en el cuadro de dilogo. En Windows 3.1, el
texto aparece como el ttulo en la barra de ttulo del cuadro de dilogo. En Windows 95, el texto aparece a
continuacin de la barra de ttulo dentro del cuadro de dilogo.

Comentarios
GETDIR( ) devuelve como una cadena de caracteres el nombre del directorio que elija.
Si no elige ningn directorio (si elige Cancelar, presiona ESC, o elige Cerrar en la ventana men, GETDIR( )
devolver la cadena vaca.


5.5.102. GETFILE( ) (Funcin)

Muestra el cuadro de dilogo Abrir y devuelve el nombre del archivo que elija.

Sintaxis
GETFILE([cExtensionesArchivo] [, cTexto] [, cTtuloBotnAbrir]
[, nTipoBotn] [cTtuloBarraTtulos])

Tipos devueltos


Manual de Genlis
162
Character

Argumentos
cExtensionesArchivo
Especifica las extensiones de los archivos mostrados en la lista desplegable cuando el elemento de men
Todos los archivos no se ha elegido. Si se pasa un valor como un literal, es necesario entrecomillarlo. No
incluya un punto (.) delante de las extensiones de archivo.
cExtensionesArchivo puede asumir diversas formas:
Si cExtensionesArchivo contiene una nica extensin (por ejemplo, .prg), solamente se mostrarn
los archivos con esa extensin.
Si cExtensionesArchivo es la cadena vaca, se mostrarn todos los archivos del directorio actuales si
no se ha incluido cTipoCreador.
cExtensionesArchivos puede contener tambin caracteres comodn (* y ?) del MS-DOS. Se
mostrarn todos los archivos cuyas extensiones cumplan los criterios del comodn. Por ejemplo, si
cExtensionesArchivo es "?X?", se mostrarn todos los archivos que tengan la extensin .fxt, .exe y
.txt.
En Genlis para Windows, cExtensionesArchivo puede contener una descripcin de archivo seguida
de una extensin de archivo o de una lista de extensiones de archivo separadas por comas. La
descripcin del archivo aparece en el cuadro de lista Archivos de tipo. Separe con dos puntos (:) la
descripcin del archivo de la extensin o de la lista de extensiones de archivos. Separe con un
punto y coma (;) mltiples descripciones de archivo y sus extensiones de archivo.
Por ejemplo, si cExtensionesArchivo es "Texto:TXT" la descripcin de archivo "Texto" aparecer en
el cuadro de lista Archivos de tipo y se mostrarn todos los archivos con la extensin .txt.
Si cExtensionesArchivo es "Tablas:DBF; Archivos:TXT,BAK" las descripciones de archivo "Tablas" y
"Archivos" aparecern en el cuadro de lista Archivos de tipo. Cuando se elige "Tablas" en el cuadro
de lista Archivos de tipo, se mostrarn todos los archivos de extensin .dbf. Cuando se elija
"Archivos" del cuadro de lista Archivos de tipo, se mostrarn todos los archivos con la extensin .txt
y .bak.
Si cExtensionesArchivo contiene slo un punto y coma (";"), se mostrarn todos los archivos sin
extensin.

cTexto
Especifica el texto para la lista de directorios en el cuadro de dilogo Abrir. En Windows 95, el texto aparece
bajo la lista de archivos y es posible que las cadenas de texto largas aparezcan truncadas.

cTtuloBotnAbrir
Especifica un ttulo para el botn Aceptar.

nTipoBotn
Especifica el nmero y el tipo de botones que aparecen en el cuadro de dilogo Abrir. Los botones
siguientes aparecen en el cuadro de dilogo cuando nTipoBotn es 0, 1 2:





Manual de Genlis
163
nTipoBotn Botones
0 (or omitted) Aceptar Cancelar
1 Aceptar Nuevo Cancelar
2 Aceptar Nada Cancelar

Se devolver "Sin ttulo" con la ruta de acceso especificada en el cuadro de dilogo Abrir si nTipoBotn es 1
y el usuario elige el botn Nuevo. Se devolver la cadena vaca si nTipoBotn es 2 y el usuario elige el botn
iNothing.

cTtuloBarraTtulos
Especifica el ttulo de la barra de ttulos.

Comentarios
GETFILE( ) devuelve la cadena vaca si sale del cuadro de dilogo Abrir presionando ESC, eligiendo Cancelar
o eligiendo Cerrar en el men Control.


5.5.103. GETEXPR (Comando)

Muestra el Generador de expresiones que le permite crear una expresin y almacenarla en una variable de
memoria o en un elemento de matriz.

Sintaxis
GETEXPR [cTextoTtulo] TO NombreVariableMemoria
[TYPE cTipoExpresin [; cTextoMensajeError]]
[DEFAULT cExpresinPredeterminada]

Argumentos
cTextoTtulo
Especifica el ttulo que aparece en el Generador de expresiones. El ttulo puede utilizarse para recordar al
usuario de expresin que va a construir.

TO NombreVariableMemoria
Especifica la variable de memoria o el elemento de matriz donde se almacena la expresin. Si la variable de
memoria no existe todava, Genlis la crear. GETEXPR no crea ningn elemento de matriz.
Si sale del Generador de expresiones presionando esc o eligiendo Cancelar, se almacenar la cadena vaca
en la variable de memoria o en el elemento de matriz. Si se crea una expresin predeterminada con la
clusula DEFAULT, la expresin predeterminada se almacenar en la variable de memoria si sale del
Generador de expresiones presionando esc o eligiendo Cancelar.

TYPE cTipoExpresin [; cTextoMensajeError]


Manual de Genlis
164
Especifica el tipo de expresin. La siguiente tabla indica el carcter que debe especificar en cTipoExpresin
para cada tipo de expresin:
cTipoExpresin Tipo de expresin
C Character
D Date
T DateTime
N Numeric
F Float
I Integer
B Double
Y Currency
L Logical

Puede especificar que el mensaje de error cTextoMensajeError que aparecer si la expresin no es vlida. Si
se incluye cTextoMensajeError con cTipoExpresin, cTipoExpresin y cTextoMensajeError debern
separarse mediante un signo de punto y coma (;). La combinacin de cTipoExpresin, el punto y coma, y
cTextoMensajeError deben incluirse entre comillas sencillas o dobles, en pares coincidentes.

DEFAULT cExpresinPredeterminada
Permite mostrar la expresin predeterminada inicial en el Generador de expresiones. Puede aceptar la
expresin predeterminada o sobrescribirla con su propia expresin especificada con
cExpresinPredeterminada. cDefaultExpression se almacenar en la variable de memoria o en el elemento
de matriz si sale del Generador de expresiones presionando esc o eligiendo Cancelar.


5.5.104. GETPICT( ) (Funcin)

Muestra Open Picture (cuadro de dilogo) y devuelve el nombre del archivo de imagen que ha elegido.

Sintaxis
GETPICT([cExtensionesArchivos] [, cTtuloNombreArchivo] [, cTtuloBotnAbrir])

Tipos devueltos
Character

Argumentos
cExtensionesArchivos
Especifica las extensiones de los archivos de imagen que se muestran en la lista desplegable cuando no se
elige el elemento de men Todos los archivos.
cExtensionesArchivos puede tomar los siguientes formatos:
Si cExtensionesArchivos contiene una nica extensin (por ejemplo, bmp), slo se mostrarn los
archivos que tengan dicha extensin.


Manual de Genlis
165
cExtensionesArchivos tambin pueden contener caracteres comodn (* y ?). Se mostrarn todos los
archivos cuyas extensiones cumplan los criterios de comodn. Por ejemplo, si cExtensionesArchivos
es ?X?, se mostrarn todos los archivos cuyas extensiones sean .fxp, .exe y .txt.
Si cExtensionesArchivos contiene la cadena vaca (""), se mostrarn los archivos con las extensiones
.bmp y .dib.

cTtuloNombreArchivo
Especifica el ttulo mostrado encima del cuadro de texto "Nombre de archivo. cTtuloNombreArchivo
reemplaza al "Nombre de archivo" que aparece cuando se omite cTtuloNombreArchivo.

cTtuloBotnAbrir
Especifica un ttulo para el botn Aceptar.

Comentarios
GETPICT( ) devuelve la cadena vaca si sale del cuadro de dilogo Abrir presionando ESC, eligiendo
Cancelar o eligiendo Cerrar en el men Control.


5.5.105. GETPRINTER( ) (Funcin)

Muestra el cuadro de dilogo Imprimir y devuelve el nombre de la impresora que seleccione.

Sintaxis
GETPRINTER( )

Tipos devueltos
Character

Comentarios
GETPRINTER( ) devuelve la cadena vaca si sale del cuadro de dilogo Imprimir presionando la tecla ESC,
eligiendo el botn Cancelar o eligiendo Cerrar en el men Control.


5.5.106. GO | GOTO (Comando)

Coloca el puntero de registro en el nmero de registro especificado de una tabla.

Sintaxis
GO [RECORD] nNmeroRegistro [IN nreaTrabajo | IN cAliasTabla]
o bien


Manual de Genlis
166
GO TOP | BOTTOM [IN nreaTrabajo | IN cAliasTabla]
o bien
GOTO [RECORD] nNmeroRegistro [IN nreaTrabajo | IN cAliasTabla]
o bien
GOTO TOP | BOTTOM [IN nreaTrabajo | IN cAliasTabla]

Argumentos
RECORD nNmeroRegistro
Especifica el nmero de registro fsico al que desea mover el puntero de registro. Puede omitir por completo
GO o GOTO y especificar simplemente el nmero de registro. Si especifica solamente el nmero de registro,
podr mover el puntero solamente en el rea de trabajo actual.

IN nreaTrabajo
Especifica el rea de trabajo de la tabla en la cual se mueve el puntero de registro.

IN cAliasTabla
Especifica el alias de la tabla en la cual se mueve el puntero de registro.

TOP
Sita el puntero de registro en el primer registro de la tabla. Si la tabla tiene en uso un ndice ascendente, el
primer registro ser el registro con el valor clave ms bajo. Si el ndice est en orden descendente, el primer
registro ser el registro con el valor clave ms alto.

BOTTOM
Sita el puntero de registro en el ltimo registro de la tabla. Si la tabla tiene activo un ndice ascendente, el
ltimo registro ser aqul con el valor de clave ms elevado. Si el ndice est en orden descendente, el
ltimo registro ser el que tenga el menor valor de clave.

Comentarios
GO y GOTO pueden utilizarse indistintamente. Estos comandos actan sobre la tabla del rea de trabajo
actual a menos que especifique otra rea de trabajo con la clusula IN.


5.5.107. GOMONTH( ) (Funcin)

Devuelve la fecha que es un nmero especificado de meses antes o despus de una expresin de fecha o
de fecha-hora determinada.

Sintaxis
GOMONTH(dExpresin | tExpresin, nNmeroMeses)

Tipos devueltos


Manual de Genlis
167
Date

Argumentos
dExpresin
Especifica una expresin de fecha para la cual GOMONTH( ) devuelve la fecha.

tExpresin
Especifica una expresin de fecha-hora para la cual GOMONTH( ) devuelve la fecha.

nNmeroMeses
Especifica el nmero de meses a partir de la expresin de fecha o de fecha-hora. Si nNmeroMeses es
positivo, GOMONTH( ) devolver una fecha que es nNmeroMeses meses despus de la expresin. Si
nNmeroMeses es negativo, GOMONTH( ) devolver una fecha que es nNmeroMeses meses anterior a la
expresin.


5.5.108. HOUR( ) (Funcin)

Devuelve la hora de una expresin DateTime.

Sintaxis
HOUR(tExpresin)

Argumentos
tExpresin
Especifica una expresin DateTime a partir de la cual HOUR( ) devuelve la hora.

Tipos devueltos
Numeric

Comentarios
HOUR( ) devuelve un valor numrico basado en un formato de 24 horas y no se ve afectado por el valor
actual de SET HOURS. Por ejemplo, si SET HOURS es 12 o 24, el comando siguiente devuelve 13:
? HOUR({^1998-02-16 1:00p })


5.5.109. IF ... ENDIF (Comando)

Ejecuta condicionalmente un conjunto de comandos dependiendo del resultado de una expresin lgica.



Manual de Genlis
168
Sintaxis
IF lExpresin [THEN]
Comandos
[ELSE
Comandos]
ENDIF

Argumentos
lExpresin
Especifica la expresin lgica evaluada. Si lExpresin da como resultado verdadero (.T.), se ejecutarn
cualesquiera instrucciones posteriores a IF y anteriores a ELSE o ENDIF (lo que suceda primero).
Si lExpresin es falsa y se incluye ELSE, se ejecutan los comandos situados despus de ELSE y
antes de ENDIF.
Si lExpresin es falsa (.F.) y no se incluye ELSE, se pasarn por alto todas las instrucciones entre IF
y ENDIF. En este caso la ejecucin del programa continuar con la primera lnea de comando a
continuacin de ENDIF.

Comentarios
Puede anidar IF ... ENDIF dentro de otro bloque IF ... ENDIF.
Los comentarios precedidos de && se pueden colocar en la misma lnea despus de IF, ELSE y ENDIF.
Estos comentarios se pasan por alto durante la compilacin y la ejecucin del programa.


5.5.110. IIF( ) (Funcin)

Devuelve uno de los dos valores dependiendo del valor de una expresin lgica.

Sintaxis
IIF(lExpresin, eExpresin1, eExpresin2)

Tipos devueltos
Character, Numeric, Currency, Date, o DateTime

Argumentos
lExpresin
Especifica la expresin lgica evaluada por IIF( ).

eExpresin1, eExpresin2
Si lExpresin se evala verdadera (.T.), se devolver eExpresin1. Si lExpresin se evala falsa (.F.), se
devolver eExpression2.



Manual de Genlis
169
Comentarios
Esta funcin, conocida tambin como IF Inmediato, evala una expresin lgica y devuelve a continuacin
una de las dos expresiones. Si la expresin lgica se evala como verdadera (.T.), IIF( ) devolver la primera
expresin. Si la expresin lgica se evala como falsa (.F.), IIF( ) devolver la segunda expresin.

Sugerencia. Esta funcin puede utilizarse en lugar de IF ... ENDIF para expresiones condicionales simples y
es especialmente til en expresiones de etiquetas e informes que especifican condicionalmente el contenido
de campos. La funcin IIF( ) se ejecuta, adems, considerablemente ms rpido que la estructura IF ...
ENDIF equivalente.


5.5.111. INDEXSEEK( ) (Funcin)

Sin mover el puntero de registro, busca en una tabla indexada la primera ocurrencia de un registro cuya
clave de ndice coincida con una expresin determinada.

Sintaxis
INDEXSEEK(eExpresin [, lMoverPuntero [, nreaTrabajo | cAliasTabla
[, nNmerondice | cIDXNombreArchivondice | cNombreEtiqueta]]])

Tipos devueltos
Lgico

Argumentos
eExpresin
Especifica la expresin de la clave de ndice sobre la que desea realizar una bsqueda con INDEXSEEK( ).

lMoverPuntero
Especifica si el puntero de registro se desplazar al registro coincidente. Si lMoverPuntero es verdadero (.T.)
y existe un registro coincidente, el puntero de registro se mover al registro coincidente. Si lMoverPuntero es
verdadero (.T.) y no existe ningn registro coincidente, el puntero de registro no se mover. Si
lMoverPuntero es falso (.F.) o se omite, el puntero de registro no se mover incluso si existe un registro
coincidente.

nreaTrabajo
Especifica el nmero de rea de trabajo de la tabla en la que se buscar la clave de ndice.

cAliasTabla
Especifica el alias de la tabla en la que se realizar una bsqueda. Si omite nreaTrabajo y cAliasTabla, se
realizar una bsqueda en la tabla del rea de trabajo actualmente seleccionada.

nNmerondice


Manual de Genlis
170
Especifica el nmero del archivo de ndice o la etiqueta utilizada para buscar la clave de ndice.
nNmerondice se refiere a los archivos de ndice tal y como aparecen en USE o SET INDEX. Los archivos
.IDX abiertos estn numerados primero en el orden en que aparecen en USE o SET INDEX. Las etiquetas en
el archivo estructural .CDX (si existe) son entonces numeradas en el orden en el que son creados.
Finalmente, las etiquetas de cualquier archivo independiente .CDX abierto son numeradas en el orden de su
creacin. Para ms informacin sobre la numeracin indexada, consulte SET ORDER.

cIDXNombreArchivondice
Especifica un archivo .idx que se utiliza para buscar la clave de ndice.

cNombreEtiqueta
Especifica la etiqueta de un archivo .CDX que se utiliza para buscar la clave de ndice. El nombre de etiqueta
puede pertenecer a un archivo .CDX estructural o a cualquier archivo .CDX independiente abierto.

Nota El archivo .IDX tiene prioridad si existen un archivo .IDX duplicado y nombres de etiqueta.

Comentarios
INDEXSEEK( ) devuelve verdadero (.T.) si se encuentra una coincidencia; de lo contrario devuelve falso (.F.).
Se puede utilizar INDEXSEEK( ) slo con una tabla que tenga un orden de ndices establecido, y slo se
puede buscar una clave de ndice. La coincidencia debe ser exacta a menos que SET EXACT est en OFF
(desactivado).
INDEXSEEK( ) proporciona una manera rpida de buscar registros sin mover el puntero de registro. Las
reglas y desencadenantes no se ejecutan, ya que el puntero de registro no se desplaza. Si INDEXSEEK( )
devuelve verdadero (.T.) indicando que se ha encontrado un registro coincidente, puede ejecutar
INDEXSEEK( ) de nuevo con el segundo parmetro lMoverPuntero establecido a verdadero (.T.) para
desplazarse al registro coincidente.


5.5.112. INKEY( ) (Funcin)

Devuelve el nmero correspondiente a la primera tecla presionada o el primer clic del mouse (ratn) que
haya en el bfer de teclado.

Sintaxis
INKEY([nSegundos] [, cOcultarCursor])

Tipos devueltos
Numeric

Argumentos
nSegundos


Manual de Genlis
171
Especifica durante cuantos segundos esperar una pulsacin INKEY( ). Si nSegundos no se incluye, INKEY(
) devuelve inmediatamente un valor de una pulsacin de tecla. INKEY( ) esperar una pulsacin eternamente
si nSegundos es 0.

cOcultarCursor
Muestra u oculta el cursor, o comprueba si se ha hecho clic con el mouse. Para mostrar el cursor, incluya S
en cOcultarCursor. Para ocultar el cursor, incluya H en cOcultarCursor. Si se incluye S y H, a la vez, en
cOcultarCursor, tendr prioridad el ltimo carcter de cOcultarCursor.
De forma predeterminada, INKEY( ) no detecta un clic del mouse. Para detectar un clic del mouse (ratn),
incluya M en cOcultarCursor. Si se incluye M en cOcultarCursor, INKEY( ) devolver el valor 151 para un clic
del mouse. Consulte el segundo ejemplo de la tabla siguiente para ver la forma de comprobar un doble clic.
Para comprobar un clic del mouse y mostrar el cursor, incluya M y S a la vez. Para comprobar un clic del
mouse y ocultar el cursor, incluya H y M a la vez.
Cuando se asigna una macro de teclado a una tecla o a una combinacin de teclas, puede incluir E en
cOcultarCursor para expandir la macro de teclado. Cuando se incluye E, INKEY( ) devuelve un valor
correspondiente a la primera pulsacin de tecla asignada a la macro de teclado. Puede devolver valores
sucesivos para cada pulsacin de tecla de una macro de teclado de forma repetitiva ejecutando INKEY( )
con E incluida. Si E no se incluye, INKEY( ) devuelve el valor de la tecla o combinacin de teclas que dispara
la macro de teclado.
Cualquier carcter que no sea H, M, S y E en cOcultarCursor se pasar por alto.
La siguiente tabla muestra los valores que devuelve la funcin INKEY( ) para las teclas en solitario y en
combinacin con las teclas MAYS, CTRL y ALT. Un guin () indica que la combinacin de teclas no
devolver ningn valor.

Tecla Sola MAYS CTRL ALT
F1 28 84 94 104
F2 -1 85 95 105
F3 -2 86 96 106
F4 -3 87 97 107
F5 -4 88 98 108
F6 -5 89 99 109
F7 -6 90 100 110
F8 -7 91 101 111
F9 -8 92 102 112
F10 -9 93 103 113
F11 133 135 137 139
F12 134 136 138 140
1 49 33 120
2 50 64 121
3 51 35 122
4 52 36 123
5 53 37 124
6 54 94 125
7 55 38 126
8 56 42 127
9 57 40 128


Manual de Genlis
172
Tecla Sola MAYS CTRL ALT
0 48 41 19
a 97 65 1 30
b 98 66 2 48
c 99 67 3 46
d 100 68 4 32
e 101 69 5 18
f 102 70 6 33
g 103 71 7 34
h 104 72 127 35
i 105 73 9 23
j 106 74 10 36
k 107 75 11 37
l 108 76 12 38
m 109 77 13 50
n 110 78 14 49
o 111 79 15 24
p 112 80 16 25
q 113 81 17 16
r 114 82 18 19
s 115 83 19 31
t 116 84 20 20
u 117 85 21 22
v 118 86 22 47
w 119 87 23 17
x 120 88 24 45
y 121 89 25 21
z 122 90 26 44
INS 22 22 146 162
INICIO 1 55 29 151
SUPR 7 7 147 163
FIN 6 49 23 159
RE PG 18 57 31 153
AV PG 3 51 30 161
FLECHA ARRIBA 5 56 141 152
FLECHA ABAJO 24 50 145 160
FLECHA DERECHA 4 52 2 157
FLECHA IZQUIERDA 19 54 26 155
ESCAPE 27 /27 */27 */1
ENTRAR 13 13 10 /166
RETROCESO 127 127 127 14
TAB 9 15 148/* *
BARRA ESPACIADORA 32 32 32/ 57

* Pulsacin reservada por Windows.

Comentarios


Manual de Genlis
173
INKEY( ) devuelve 0 si no se ha presionado ninguna tecla. Si hay varias teclas en el bfer de teclado, INKEY(
) devuelve el valor de la primera tecla introducida en el bfer.


5.5.113. INLIST( ) (Funcin)

Determina si una expresin coincide con otra perteneciente a un conjunto de expresiones.

Sintaxis
INLIST(eExpresin1, eExpresin2 [, eExpresin3 ...])

Tipos devueltos
Logical o valor nulo

Argumentos
eExpresin1
Especifica la expresin que INLIST( ) busca en el conjunto de expresiones.

eExpresin2 [, eExpresin3 ...]
Especifica el conjunto de expresiones dnde debe buscar. Es necesario incluir como mnimo una expresin
(eExpresin2) y se admiten un mximo de 24 (eExpresin2, eExpresin3, etc).
Todas las expresiones de la lista deben ser del mismo tipo de datos.

Comentarios
INLIST( ) devuelve verdadero (.T.) si encuentra la expresin en el conjunto de expresiones. De lo contrario,
INLIST( ) devolver falso (.F.). Se devuelve el valor nulo si eExpresin1 es el valor nulo. Tambin se devuelve
el valor nulo si eExpresin1 no es el valor nulo, eExpresin1 no coincide con otra expresin y al menos una
de las otras expresiones es el valor nulo.


5.5.114. INSERT - SQL (Comando)

Anexa un registro al final de una tabla que contiene los valores de campo especificados.

Sintaxis
INSERT INTO nombre_dbf [(fnombre1 [, fnombre2, ...])]
VALUES (eExpresin1 [, eExpresin2, ...])
o bien
INSERT INTO nombre_dbf FROM ARRAY NombreMatriz | FROM MEMVAR



Manual de Genlis
174
Argumentos
INSERT INTO nombre_dbf
Especifica el nombre de la tabla a la que se anexar un registro. nombre_dbf puede incluir una ruta de
acceso y puede ser una expresin de nombre.
Si la tabla que especifica no est ya abierta, se abrir en modo exclusivo en una rea de trabajo nueva y se
anexar el registro. El rea de trabajo nueva no se selecciona, sino que permanece seleccionada el rea de
trabajo actual.
Si la tabla que especifica est abierta, INSERT anexa el registro a la tabla. Si la tabla est abierta en una rea
de trabajo distinta del rea de trabajo actual, no se seleccionar despus de anexar el registro; el rea de
trabajo actual permanecer seleccionada.

[(fnombre1 [, fnombre2 [, ...]])]
Especifica los nombres de los campos del nuevo registro donde se insertan los valores.

VALUES (eExpresin1 [, eExpresin2 [, ...]])
Especifica los valores de campo que se insertan en el nuevo registro. Si omite los nombres de los campos,
debe especificar los valores de campo en el orden definido por la estructura de la tabla. Si SET NULL est
ON, INSERT - SQL intentar insertar valores nulos en cualquier campo no especificado de la clusula
VALUES.

FROM ARRAY NombreMatriz
Especifica la matriz cuyos datos se insertan en el nuevo registro. El contenido de los elementos de la matriz,
comenzando por el primer elemento, se inserta en los campos correspondientes del registro. El contenido
del primer elemento de la matriz se inserta en el primer campo del nuevo registro, el contenido del segundo
elemento se inserta en el segundo campo, y as sucesivamente.
Se ignora cualquier valor predeterminado de los campos cuando se incluye la clusula FROM ARRAY.

FROM MEMVAR
Especifica que el contenido de las variables de memoria se inserta en los campos que tengan los mismos
nombres que dichas variables. Si no existe una variable de memoria con el mismo nombre que el campo,
ste permanecer vaco.

Comentarios
El nuevo registro contiene los datos indicados en la clusula VALUES o incluidos en la matriz o las variables
de memoria especificadas. El puntero de registro se coloca en el nuevo registro.


5.5.115. INT( ) (Funcin)

Evala una expresin numrica y devuelve la parte entera de dicha expresin.

Sintaxis


Manual de Genlis
175
INT(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica la expresin numrica cuya parte entera devuelve INT( ).


5.5.116. ISALPHA( ) (Funcin)

Determina si el carcter de la izquierda de una expresin de caracteres es alfabtico.

Sintaxis
ISALPHA(cExpresin)

Tipos devueltos
Logical

Argumentos
cExpresin
Especifica la expresin de caracteres evaluada por ISALPHA( ). Los caracteres situados a la derecha del
primer carcter de cExpresin se pasan por alto.

Comentarios
ISALPHA( ) devuelve verdadero (.T.) si el carcter situado ms a la izquierda de la expresin de caracteres
especificada es alfabtico. Si no lo es, ISALPHA( ) devuelve falso (.F.).


5.5.117. ISBLANK( ) (Funcin)

Determina si una expresin est en blanco.

Sintaxis
ISBLANK(eExpresin)

Tipos devueltos
Logical


Manual de Genlis
176

Argumentos
eExpresin
Especifica la expresin evaluada por ISBLANK( ). eExpresin puede ser un campo de una tabla, una variable
de memoria o elemento de matriz, o una expresin.
Para un campo, ISBLANK( ) devuelve verdadero (.T.) si contiene los siguientes valores.
Tipo. Contenido
- Carcter. Una cadena vaca, espacios o ningn valor (registro en blanco recin anexado o borrado
con BLANK) .
- Numrico. Ningn valor (registro en blanco recin anexado o borrado con BLANK)
- Flotante. Ningn valor (registro en blanco recin anexado o borrado con BLANK)
- Fecha. Fecha en blanco ({ / / }) o ningn valor (registro en blanco recin anexado o borrado con
BLANK)
- Fecha-Hora. Fecha y hora en blanco ({ / / : : }) o ningn valor (registro en blanco recin anexado o
borrado con BLANK)
- Lgico. Ningn valor (registro en blanco recin anexado o borrado con BLANK)
- Memo. Vaco (sin contenido memo)
- General. Vaco (sin objeto OLE)
- Imagen. Vaco (sin imagen)

Comentarios
ISBLANK( ) devuelve verdadero (.T.) si la expresin eExpresin est en blanco; de lo contrario, ISBLANK( )
devuelve falso (.F.).
APPEND BLANK y BLANK se usan para crear un registro en blanco. BLANK tambin se puede usar para
borrar datos de los campos de un registro. ISBLANK( ) puede determinar si un campo est en blanco.
Fjese en que las expresiones del tipo Currency, Integer y Double nunca estn en blanco y que ISBLANK( )
siempre devuelve falso (.F.) para estos tipos de datos.
ISBLANK( ) es distinto de EMPTY( ) e ISNULL( ). Por ejemplo, EMPTY( ) devuelve verdadero (.T.) si una
expresin de caracteres contiene cualquier combinacin de valores nulos, espacios, tabulaciones, retornos
de carro o avances de lnea; ISBLANK( ) devuelve verdadero (.T.) si una expresin de caracteres contiene
solamente la cadena vaca o espacios.


5.5.118. ISDIGIT( ) (Funcin)

Determina si el carcter de la izquierda de la expresin de caracteres especificada es un dgito (0 a 9).

Sintaxis
ISDIGIT(cExpresin)

Tipos devueltos
Logical


Manual de Genlis
177

Argumentos
cExpresin
Especifica la expresin de caracteres comprobada por ISDIGIT( ). Los caracteres situados tras el primero en
cExpresin se pasan por alto.

Comentarios
ISDIGIT( ) devuelve verdadero (.T.) si el carcter ms a la izquierda de la expresin de caracteres
especificada es un dgito (0 a 9); de lo contrario, ISDIGIT( ) devuelve falso (.F.).


5.5.119. ISEXCLUSIVE( ) (Funcin)

Devuelve verdadero (.T.) si una tabla est abierta para uso exclusivo; de lo contrario, devuelve falso (.F.).

Sintaxis
ISEXCLUSIVE([cAliasTabla | nreaTrabajo | cNombreBaseDatos [, nTipo]])

Tipos devueltos
Logical

Argumentos
cAliasTabla
Especifica el alias de la tabla para la que se devuelve el estado de uso exclusivo. Genlis genera un mensaje
de error si especifica un alias de tabla que no existe.

nreaTrabajo
Especifica el rea de trabajo de la tabla para la que se devuelve el estado de uso exclusivo. ISEXCLUSIVE( )
devuelve falso (.F.) si no hay abierta una tabla en el rea de trabajo que especifique.

cNombreBaseDatos
Especifica el nombre de la base de datos para la que se devuelve el estado de uso exclusivo.

nTipo
Especifica si se devolver el estado de uso exclusivo para una tabla o para una base de datos. En las
siguiente tabla se enumeran los valores para nTipo y el estado devuelto correspondiente.
nTipo Estado exclusivo devuelto
1 Tabla
2 Base de datos

Para determinar el estado exclusivo para una base de datos, es necesario incluir nTipo con un valor de 2.



Manual de Genlis
178
Comentarios
ISEXCLUSIVE( ) devuelve un valor para la tabla abierta en el rea de trabajo seleccionada actualmente si
omite los argumentos opcionales cAliasTabla, nreaTrabajo o cNombreBaseDatos.
Una tabla se abre para uso exclusivo al incluir la palabra clave EXCLUSIVE en USE, o al establecer SET
EXCLUSIVE como ON antes de abrir la tabla.
Para abrir una base de datos para uso exclusivo, incluya la palabra clave EXCLUSIVE en OPEN DATABASE.


5.5.120. ISLOWER( ) (Funcin)

Determina si el carcter ms a la izquierda de la expresin de caracteres especificada es una letra
minscula.

Sintaxis
ISLOWER(cExpresin)

Tipos devueltos
Logical

Argumentos
cExpresin
Especifica la expresin de caracteres comprobada por ISLOWER( ). ISLOWER( ) pasa por alto los caracteres
situados tras el primer carcter de cExpresin.

Comentarios
ISLOWER( ) devuelve verdadero (.T.) si el carcter ms a la izquierda de la expresin de caracteres
especificada es una letra minscula; de lo contrario, ISLOWER( ) devuelve falso (.F.).


5.5.121. ISNULL( ) (Funcin)

Devuelve verdadero (.T.) si una expresin da como resultado un valor nulo; de lo contrario, ISNULL( )
devuelve falso (.F.).

Sintaxis
ISNULL(eExpresin)

Tipos devueltos
Logical



Manual de Genlis
179
Argumentos
eExpresin
Especifica la expresin que se va a evaluar.

Comentarios
Utilice ISNULL( ) para determinar si el contenido de un campo, una variable de memoria o un elemento de
matriz contiene un valor nulo, o si una expresin da como resultado un valor nulo.


5.5.122. ISUPPER( ) (Funcin)

Determina si el primer carcter de una expresin de caracteres es alfabtico y est en maysculas.

Sintaxis
ISUPPER(cExpresin)

Tipos devueltos
Logical

Argumentos
cExpresin
Especifica la expresin de caracteres evaluada por ISUPPER( ). Se pasan por alto los caracteres situados
detrs del primer carcter de cExpresin.

Comentarios
ISUPPER( ) devuelve verdadero (.T.) si el primer carcter de una expresin de caracteres es alfabtico y est
en maysculas; de lo contrario, ISUPPER( ) devuelve falso (.F.).


5.5.123. KEYBOARD (Comando)

Sita la expresin de caracteres especificada en el bfer de teclado.

Sintaxis
KEYBOARD cValorTeclado
[PLAIN] [CLEAR]

Argumentos
cValorTeclado


Manual de Genlis
180
Especifica la expresin de caracteres que se introduce en el bfer de teclado. La expresin de caracteres
puede ser una cadena de caracteres, una etiqueta de tecla, un conjunto de etiquetas de tecla o una funcin
definida por el usuario (FDU) que devuelva una expresin de caracteres.
Si cValorTeclado es una etiqueta de tecla, deber incluirla entre llaves y comillas. Por ejemplo,
KEYBOARD '{CTRL+LEFTARROW}'

Para ver una lista de etiquetas de teclas, vea ON KEY LABEL.
El bfer de teclado puede llenarse con hasta 128 caracteres. Una vez que se llena el bfer, los caracteres
adicionales se pasan por alto.

PLAIN
Si tiene definidas macros de teclado o tiene un comando ON KEY LABEL activo, puede incluir PLAIN para
eludir esas asignaciones de tecla. PLAIN llenar el teclado con el carcter de tecla literal, no con la
asignacin de tecla.
Por ejemplo, si ha asignado un comando a la tecla A mediante ON KEY LABEL y se incluye A en
cValorTeclado, utilice PLAIN para situar la letra A en el bfer de teclado. El comando ON KEY LABEL
asignado a A no se ejecutar.

CLEAR
Vaca el bfer de teclado antes de llenarlo con cValorTeclado.

Comentarios
Utilice KEYBOARD para situar caracteres en el bfer de teclado. Los caracteres permanecern en el bfer
hasta que Genlis busque una entrada de teclado. En este punto, los caracteres se leern y procesarn
como si los datos se hubieran escrito directamente desde el teclado.
Puede utilizar KEYBOARD para crear sistemas de demostracin autoejecutables que acten como
escaparate de sus aplicaciones.


5.5.124. LABEL (Comando)

Imprime etiquetas desde un archivo de tabla y un archivo de definicin de etiqueta.

Sintaxis
LABEL [FORM NombreArchivo1 | FORM ?]
[ENVIRONMENT]
[Alcance]
[FOR lExpresin1]
[WHILE lExpresin2]
[NOCONSOLE]
[NOOPTIMIZE]
[PDSETUP]


Manual de Genlis
181
[PREVIEW [NOWAIT]]
[NAME NombreObjeto]
[TO PRINTER [PROMPT] | TO FILE NombreArchivo2]

Argumentos
FORM NombreArchivo1
Especifica el nombre de un archivo de definicin de etiqueta cuyas etiquetas se desea imprimir. La extensin
predeterminada para un archivo de definicin de etiquetas es .lbx. Si este archivo de definicin de etiquetas
est en una unidad distinta de la predeterminada o en un directorio distinto del actual, tambin deber
especificar el designador de unidad y el directorio.

FORM ?
Muestra el cuadro de dilogo Abrir, en el que puede elegir un archivo de etiqueta existente.

ENVIRONMENT
Se incluye por compatibilidad con las etiquetas de la versin 2.x. Para restaurar el entorno de datos
asociado a una etiqueta de Genlis, establezca la propiedad AutoOpenTables del entorno de datos como
verdadera (.T.), que es el valor predeterminado. Para asegurarse de que el entorno de etiquetas est cerrado
cuando se termina de imprimir una etiqueta, establezca la propiedad AutoCloseTables del entorno de datos
como verdadera (.T.), que tambin es el valor predeterminado.
Cuando cree o modifique etiquetas, puede guardar el entorno de datos actual de Genlis con el archivo de
definicin de etiqueta. Al guardar el entorno de datos de Genlis se incluyen registros adicionales en la tabla
de definicin de etiqueta para todas las tablas y archivos de ndice abiertos, el orden de ndice y cualquier
relacin entre las tablas.

Alcance
Especifica un intervalo de registros. Solamente se imprimen los registros incluidos en el intervalo. Las
clusulas de alcance son: ALL, NEXT nRegistros, RECORD nNmeroRegistro y REST. Para obtener ms
informacin sobre las clusulas de alcance, vea los temas de Ayuda en pantalla Clusulas de alcance o
Introduccin al lenguaje. Los comandos que incluyen Alcance solamente funcionan en la tabla del rea de
trabajo activa.
El alcance predeterminado de LABEL es ALL (todos los registros).

FOR lExpresin1
Especifica una condicin por la cual solamente se imprimen los registros que satisfacen la condicin lgica
lExpresin1. Este argumento permite filtrar los registros que no desea imprimir.
Rushmore optimizar una consulta creada con LABEL ... FOR si lExpresin1 es una expresin optimizable.
Para obtener un mejor rendimiento, utilice una expresin optimizable en la clusula FOR.

WHILE lExpresin2
Especifica una condicin por la cual los registros se imprimen siempre y cuando la expresin lgica
lExpresin2 d como resultado verdadero (.T.).

NOCONSOLE


Manual de Genlis
182
Suprime la presentacin del resultado de la etiqueta en la ventana principal de Genlis o en una ventana
definida por el usuario en el momento de imprimir etiquetas o de enviarlas a un archivo.

NOOPTIMIZE
Desactiva la optimizacin Rushmore de LABEL.

PDSETUP
Carga una configuracin del controlador de impresora.
En Genlis, puede incluir PDSETUP de forma que pueda utilizar una configuracin del controlador de
impresora para imprimir etiquetas basadas en caracteres creadas en FoxPro para MS-DOS. PDSETUP se
pasa por alto durante la impresin de etiquetas basadas en grficos creadas en Genlis.

PREVIEW [NOWAIT]
Muestra las etiquetas en una ventana de vista previa antes de imprimir, pero no imprime las etiquetas. Para
imprimir las etiquetas, deber volver a ejecutar LABEL sin la clusula PREVIEW.
En Genlis, se puede incluir la clusula opcional NOWAIT para que, en tiempo de ejecucin, Genlis no espere
a que se cierre la ventana de vista previa de la pgina para continuar la ejecucin del programa. En lugar de
esto, Genlis continuar la ejecucin del programa mientras est abierta la ventana de vista previa de la
pgina.

NAME NombreObjeto
Especifica un nombre de variable de objeto para el entorno de datos de una etiqueta. El entorno de datos y
los objetos del entorno de datos tienen propiedades y mtodos, por ejemplo AddObject, que necesitan
establecerse o llamarse en tiempo de ejecucin. La variable de objeto ofrece acceso a estas propiedades y
mtodos. Si no especifica NAME, Genlis usar un valor predeterminado para el nombre del archivo de
etiqueta al que se puede hacer referencia en el cdigo asociado a los eventos.

TO PRINTER [PROMPT]
Enva una etiqueta a la impresora. Puede incluir la clusula opcional PROMPT para mostrar el cuadro de
dilogo Imprimir antes de que comience la impresin.

TO FILE NombreArchivo2
Enva etiquetas basadas en caracteres creadas en FoxPro para MS-DOS al archivo de texto especificado
con NombreArchivo2. El archivo que se crea cuando se incluye TO FILE tiene la extensin predeterminada
.TXT.

Comentarios
Los archivos de definicin de etiqueta se crean con MODIFY LABEL o CREATE LABEL.
Si ejecuta LABEL sin argumentos adicionales, aparecer el cuadro de dilogo Abrir, que muestra una lista
de los archivos de etiqueta existentes para que usted elija.




Manual de Genlis
183
5.5.125. LEFT( ) (Funcin)

Devuelve un nmero especificado de caracteres de una expresin de caracteres, a partir del carcter
situado ms a la izquierda.

Sintaxis
LEFT(cExpresin, nExpresin)

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres de la cual LEFT( ) devuelve los caracteres.

nExpresin
Especifica el nmero de caracteres devueltos desde la expresin de caracteres. Si nExpresin es mayor que
la longitud de cExpresin, se devolver toda la expresin. Devuelve la cadena vaca si nExpresin es
negativa o si es 0.

LEFT( ) es idntica a SUBSTR( ) con una posicin inicial de 1.


5.5.126. LEFTC( ) (Funcin)

Devuelve un nmero especfico de caracteres a partir de una expresin de caracteres, a partir del carcter
que est ms a la izquierda.

Sintaxis
LEFTC(cExpresin, nExpresin)

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres a partir de la cual LEFTC( ) devuelve caracteres.

nExpresin


Manual de Genlis
184
Especifica el nmero de caracteres devueltos a partir de la expresin de caracteres. Si nExpresin es mayor
que la longitud de cExpresin, se devolver toda la expresin de caracteres. Se devolver la cadena vaca si
nExpresin es negativa o 0.

Comentarios
LEFTC( ) se ha diseado para expresiones que contengan caracteres de dos bytes. Si la expresin slo
contiene caracteres de un byte, LEFTC( ) ser equivalente a LEFT( ).
LEFTC( ) devuelve un nmero especfico de caracteres a partir de una expresin de caracteres que contiene
cualquier combinacin de caracteres de un byte y de dos bytes.
LEFTC( ) es idntica a SUBSTRC( ) con una posicin de inicial de 1.
Esta funcin es til para manipular juegos de caracteres de doble byte de idiomas como el Hiragana y
Katakana.


5.5.127. LEN( ) (Funcin)

Devuelve el nmero de caracteres de una expresin de caracteres.

Sintaxis
LEN(cExpresin)

Tipos devueltos
Numeric

Argumentos
cExpresin
Especifica la expresin de caracteres cuyo nmero de caracteres devuelve LEN( ).

Comentarios
Utilice LEN( ) para determinar la longitud de una expresin de caracteres.


5.5.128. LENC( ) (Funcin)

Devuelve el nmero de caracteres de una expresin de caracteres o de un campo memo.

Sintaxis
LENC(cExpresin)

Tipos devueltos


Manual de Genlis
185
Numeric

Argumentos
cExpresin
Especifica la expresin de caracteres cuyo nmero de caracteres devuelve LENC( ).

Comentarios
LENC( ) se ha diseado para expresiones que contengan caracteres de dos bytes. Si la expresin slo
contiene caracteres de un byte, LENC( ) ser equivalente a LEN( ).
LENC( ) devuelve un nmero especfico de caracteres a partir de una expresin de caracteres o de un
campo memo que contiene cualquier combinacin de caracteres de un byte y de doble byte.
Esta funcin es til para manipular juegos de caracteres de doble byte de idiomas como el Hiragana y el
Katakana.


5.5.129. LIKE( ) (Funcin)

Determina si una expresin de caracteres coincide con otra expresin de caracteres.

Sintaxis
LIKE(cExpresin1, cExpresin2)

Tipos devueltos
Logical

Argumentos
cExpresin1
Especifica la expresin de caracteres que LIKE( ) compara con cExpresin2. cExpresin1 puede contener
caracteres comodn, tales como * y ?. El signo de interrogacin (?) coincide con cualquier carcter nico de
cExpresin2 y el asterisco (*) coincide con cualquier nmero de caracteres. Puede mezclar y combinar
cualquier nmero de caracteres comodn que desee en cExpresin1.

cExpresin2
Especifica la expresin de caracteres que LIKE( ) compara con cExpresin1. cExpresin2 debe coincidir con
cExpresin1 letra por letra para que LIKE( ) devuelva verdadero (.T.).

Comentarios
LIKE( ) devuelve verdadero (.T.) si cExpresin1 coincide con cExpresin2; de lo contrario, devuelve falso (.F.).
SET COMPATIBLE determina la forma en que LIKE( ) evala cExpresin1 y cExpresin2. Si SET
COMPATIBLE est establecido en ON o DB4, se eliminarn todos los espacios en blanco finales de


Manual de Genlis
186
cExpresin1 y cExpresin2 antes de compararlos. Si SET COMPATIBLE est establecido en OFF o
FOXPLUS, en la comparacin se usarn todos los espacios en blanco finales de cExpresin1 y cExpresin2.


5.5.130. LIKEC( ) (Funcin)

Determina si una expresin de caracteres concuerda con otra expresin de caracteres.

Sintaxis
LIKEC(cExpresin1, cExpresin2)

Tipos devueltos
Logical

Argumentos
cExpresin1
Especifica la expresin de caracteres que LIKEC( ) compara con cExpresin2. cExpresin1 puede contener
comodines tales como * y ?. Un signo de interrogacin (?) concuerda con cualquier carcter en cExpresin2
y un asterisco (*) concuerda con cualquier nmero de caracteres. Puede mezclar y combinar el nmero de
comodines que desee en cExpresin1.

cExpresin2
Especifica la expresin de caracteres que LIKEC( ) compara con cExpresin1. cExpresin2 tiene que
concordar con cExpresin1 carcter a carcter para que LIKE( ) devuelva verdadero (.T.).

Comentarios
LIKEC( ) se ha diseado para expresiones que contienen caracteres de doble byte. Si la expresin slo
contiene caracteres de un byte, LIKEC( ) es equivalente a LIKE( ).
LIKEC( ) determina si una expresin de caracteres concuerda con otra expresin de caracteres. LIKEC( )
devuelve verdadero (.T.) si cExpresin1 concuerda con cExpresin2; de lo contrario, devolver falso (.F.).
SET COMPATIBLE determina cmo LIKEC( ) compara espacios en blanco en cExpresin1 y en cExpresin2.
Si SET COMPATIBLE est establecido en ON o DB4, se eliminarn todos los espacios en blanco finales de
cExpresin1 y cExpresin2 antes de compararlas. Si SET COMPATIBLE est establecido en OFF o
FOXPLUS, todos los espacios en blanco finales en cExpresin1 y cExpresin2 se utilizarn en la
comparacin.
Esta funcin es til para manipular juegos de caracteres de doble byte de idiomas como el Hiragana y el
Katakana.




Manual de Genlis
187
5.5.131. LOWER( ) (Funcin)

Devuelve en letras minsculas una expresin de caracteres especificada.

Sintaxis
LOWER(cExpresin)

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres convertida por LOWER( ).

Comentarios
LOWER( ) convierte todas las letras maysculas (A Z) de la expresin a letras minsculas (a z). Todos los
dems caracteres de la expresin permanecen sin cambios.


5.5.132. LTRIM( ) (Funcin)

Devuelve la expresin de caracteres especificada despus de eliminar los espacios en blanco iniciales.

Sintaxis
LTRIM(cExpresin)

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres en la cual LRTRIM( ) elimina los espacios en blanco iniciales.

Comentarios
Esta funcin es especialmente til para eliminar los espacios en blanco iniciales que se insertan cuando se
utiliza STR( ) para convertir un valor numrico en una cadena de caracteres.




Manual de Genlis
188
5.5.133. MD | MKDIR (Comando)

Crea un nuevo directorio o subdirectorio en el disco.

Sintaxis
MD cRuta | MKDIR cRuta

Argumentos
cRuta
Especifica una ruta de acceso (con un designador de unidad y un directorio) o un directorio.
Si cRuta es un directorio sin un designador de unidad, se crear el directorio como subdirectorio del
directorio predeterminado de Genlis.

Comentarios
Genlis genera un mensaje de error si intenta crear un directorio que ya existe.


5.5.134. MEMLINES( ) (Funcin)

Devuelve el nmero de lneas de un campo memo.

Sintaxis
MEMLINES(NombreCampoMemo)

Tipos devueltos
Numeric

Argumentos
NombreCampoMemo
Es el nombre de un campo memo. Si el campo memo est en una tabla que no est abierta en el rea de
trabajo actual, incluya delante del nombre del campo memo el alias de la tabla y un punto.

Comentarios
El nmero de lneas de un campo memo est determinado por el valor actual de SET MEMOWIDTH.


5.5.135. MESSAGEBOX( ) (Funcin)

Muestra un cuadro de dilogo definido por el usuario.


Manual de Genlis
189

Sintaxis
MESSAGEBOX(cTextoMensaje [, nTipoCuadroDilogo [, cTextoBarraTtulo]])

Tipos devueltos
Numeric

Argumentos
cTextoMensaje
Especifica el texto que aparece en el cuadro de dilogo. Utilice un retorno de carro (CHR(13)) en
cTextoMensaje para mover una parte del mensaje a la siguiente lnea del cuadro de dilogo. El alto y el
ancho del cuadro de dilogo aumentan lo que sea necesario para que quepa cTextoMensaje.

nTipoCuadroDilogo
Especifica los botones y los iconos que aparecen en el cuadro de dilogo, el botn elegido inicialmente
cuando se muestra y el comportamiento del mismo.
En las tablas siguientes, los valores 0 a 5 del botn del cuadro de dilogo especifican los botones que
aparecen en el mismo. Los valores de icono 16, 32, 48 y 64 especifican el icono que aparece en el cuadro
de dilogo. Los valores predeterminados 0, 256 y 512 especifican qu botn del cuadro de dilogo es el
botn predeterminado. El botn predeterminado se selecciona cuando aparece el cuadro de dilogo.
Omitir nTipoCuadroDilogo es lo mismo que especificar un valor de 0 para nTipoCuadroDilogo.
Valor Botones del cuadro de dilogo
0 Slo botn Aceptar.
1 Botones Aceptar y Cancelar.
2 Botones Anular, Reintentar e Ignorar.
3 Botones S, No y Cancelar.
4 Botones S y No.
5 Botones Reintentar y Cancelar.

Valor Icono
16 Punto.
32 Signo de interrogacin.
48 Signo de exclamacin.
4 Icono de informacin (!).

Valor Botn predeterminado
0 Primer botn.
256 Segundo botn.
512 Tercer botn.

nTipoCuadroDilogo puede ser la suma de hasta tres valores, uno de cada una de las tablas anteriores. Por
ejemplo, si nTipoCuadroDilogo es 290 (2+32+256), el cuadro de dilogo especificado tendr las siguientes
caractersticas:


Manual de Genlis
190
Botones Anular, Reintentar e Ignorar.
El cuadro de mensaje muestra el icono del signo de interrogacin.
El segundo botn, Reintentar, es el botn predeterminado.

cTextoBarraTtulo
Especifica el texto que aparece en la barra de ttulo del cuadro de dilogo. Si omite cTextoBarraTtulo, en la
barra de ttulo aparecer el ttulo "Genlis".

Comentarios
El valor que devuelve MESSAGEBOX( ) indica qu botn del cuadro de dilogo se ha elegido. En los
cuadros de dilogo con un botn Cancelar, al presionar la tecla ESC para salir del cuadro de dilogo se
devolver el mismo valor (2) que al elegir Cancelar.
Observe que la abreviatura ms corta para esta funcin es MESSAGEB( ).
La tabla siguiente muestra los valores que devuelve MESSAGEBOX( ) para cada botn.

Valor devuelto Botn
1 Aceptar
2 Cancelar
3 Anular
4 Reintentar
5 Ignorar
6 S
7 No


5.5.136. MIN( ) (Funcin)

Evala un conjunto de expresiones y devuelve la expresin que tenga el valor mnimo.

Sintaxis
MIN(eExpresin1, eExpresin2 [, eExpresin3 ...])

Tipos devueltos
Character, Numeric, Currency, Double, Float, Date o DateTime

Argumentos
eExpresin1, eExpresin2 [, eExpresin3 ...]
Especifican el conjunto de expresiones a partir del cual desea que MIN( ) devuelva la expresin cuyo valor es
menor. Todas las expresiones deben ser del mismo tipo.




Manual de Genlis
191
5.5.137. MINUTE( ) (Funcin)

Devuelve los minutos de una expresin DateTime.

Sintaxis
MINUTE(tExpresin)

Tipos devueltos
Numeric

Argumentos
tExpresin
Especifica la expresin DateTime a partir de la cual se devuelve la parte de minutos.


5.5.138. MLINE( ) (Funcin)

Devuelve una lnea especfica de un campo memo en una cadena de caracteres.

Sintaxis
MLINE(NombreCampoMemo, nNmeroLnea [, nNmCaracteres])

Tipos devueltos
Character

Argumentos
NombreCampoMemo
Especifica el nombre del campo memo desde el cual MLINE( ) devuelve una lnea. Si el campo memo est
en una tabla abierta en un rea de trabajo no activa, incluya delante del nombre del campo memo un punto
y el alias de la tabla.

nNmeroLnea
Especifica el nmero de la lnea del campo memo que se debe devolver. Devuelve una cadena vaca si
nNmeroLnea es negativo, 0, o mayor que el nmero de lneas del campo memo.

nNmCaracteres
Especifica el nmero de caracteres, contado desde el principio del campo memo del que MLINE( ) devuelve
la lnea especificada.
La variable de memoria del sistema _MLINE se suele utilizar para nNmCaracteres. _MLINE se ajusta
automticamente cada vez que se llama a MLINE( ).


Manual de Genlis
192
En procedimientos recursivos que devuelven lneas a partir de campos memo grandes, puede mejorar el
rendimiento si incluye _MLINE en nNmCaracteres.

Comentarios
MLINE( ) elimina todos los espacios finales desde la lnea especificada con nNmeroLnea.
La longitud y el nmero de lneas de un campo memo estn determinados por el valor actual de SET
MEMOWIDTH (la longitud de lnea predeterminada es 50 caracteres). Si encuentra un retorno de carro, no
devolver ningn carcter adicional. El ajuste actual de _WRAP determina la forma en que se visualiza la
lnea del campo memo.
Cuando se busca una cadena alfanumrica en un campo memo, puede utilizar ATLINE( ) o ATCLINE( ) para
devolver el nmero de la lnea en la que se encuentra la cadena alfanumrica. Utilice este nmero de lnea en
MLINE( ) para devolver el contenido de la lnea del campo memo.


5.5.139. MOD( ) (Funcin)

Divide una expresin numrica por otra expresin numrica y devuelve el resto.

Sintaxis
MOD(nDividendo, nDivisor)

Tipos devueltos
Numeric

Argumentos
nDividendo
Especifica el dividendo. El nmero de lugares decimales en nDividendo determina el nmero de lugares
decimales en el resultado.

nDivisor
Especifica el divisor. Si nDivisor es positivo, se devolver un nmero positivo, si nDivisor es negativo se
devolver un nmero negativo.

Comentarios
La funcin de mdulo MOD( ) y el operador % devuelven resultados idnticos.


5.5.140. MONTH( ) Function

Devuelve el nmero de mes de una expresin determinada de tipo Date o DateTime.


Manual de Genlis
193

Sintaxis
MONTH(dExpresin | tExpresin)

Tipos devueltos
Numeric

Argumentos
dExpresin
Especifique la expresin Date de la que quiere que MONTH( ) le devuelva el nmero de mes..

tExpresin
Especifique la expresin DateTime de la que quiere que MONTH( ) le devuelva el nmero de mes.

Comentarios
MONTH( ) devuelve un nmero de 1 a 12. Enero es el mes 1, y diciembre es el mes 12.


5.5.141. MTON( ) (Funcin)

Devuelve un valor Numeric de una expresin Currency.

Sintaxis
MTON(mExpresin)

Tipos devueltos
Numeric

Argumentos
mExpresin
Especifica la expresin Currency cuyo valor devuelve MTON( ). mExpresin debe evaluarse como un valor de
tipo Currency vlido. De lo contrario, Genlis genera un error.
Los valores de tipo Currency se crean al situar el prefijo de signo dlar ($) inmediatamente antes de un valor
Numeric.

Comentarios
MTON( ) devuelve un valor Numeric con cuatro decimales.




Manual de Genlis
194
5.5.142. NTOM( ) (Funcin)

Devuelve un valor de Currency con cuatro cifras decimales a partir de una expresin numrica.

Sintaxis
NTOM(nExpresin)

Tipos devueltos
Currency

Argumentos
nExpresin
Especifica una expresin numrica cuyo valor de Moneda devuelve NTOM( ). Si nExpresin tiene ms de
cuatro cifras decimales, se redondea hasta cuatro decimales. Si nExpresin tiene menos de cuatro cifras
decimales, se rellena con ceros hasta crear las cuatro.


5.5.143. PACK (Comando)

Borra definitivamente todos los registros marcados para eliminar de la tabla actual y reduce el tamao de un
archivo memo asociado a una tabla.

Sintaxis
PACK [MEMO] [DBF]

Argumentos
MEMO
Elimina el espacio no utilizado del archivo memo, pero no elimina los registros marcados para eliminar de la
tabla. La informacin de los campos memo se almacena en un archivo memo asociado. Un archivo memo
tiene el mismo nombre que la tabla y la extensin .ftp.

DBF
Elimina de la tabla los registros marcados para eliminacin, pero no afecta al archivo memo.

Comentarios
Cuando se ejecuta PACK, Genlis copiar todos los registros que no estn marcados para borrar a una tabla
temporal. Cuando se termine PACK, Genlis eliminar la tabla original del disco y cambiar el nombre de la
tabla temporal por el nombre de la tabla original. PACK puede interrumpirse presionando esc. Al presionar
esc se detiene PACK, la tabla temporal se borra y la tabla original permanece inalterada. Tambin
recuperar la tabla original si agota el espacio del disco durante un PACK.


Manual de Genlis
195
Cuando se ejecuta PACK sin las clusulas MEMO y DBF, se empaquetan tanto la tabla como el archivo
memo.
PACK necesita utilizar de forma exclusiva la tabla.
Si la tabla activa tiene uno o varios ndices abiertos, PACK regenera los archivos de ndice.

Precaucin. Tenga cuidado de marcar solamente los registros que no va a necesitar ms. No hay ninguna
forma de recuperar los registros eliminados despus de utilizar PACK.


5.5.144. PADL( ) | PADR( ) | PADC( ) (Funciones)

Devuelve la expresin especfica rellenndola por la izquierda, la derecha, o por ambos lados.

Sintaxis
PADL(eExpresin, nTamaoResultado [,
cCarcterRelleno])
o bien
PADR(eExpresin, nTamaoResultado [,
cCarcterRelleno])
o
PADC(eExpresin, nTamaoResultado [, cCarcterRelleno])

Tipos devueltos
Character

Argumentos
eExpresin
Incluya la expresin que se va a rellenar. Puede ser una expresin de cualquier tipo, excepto una expresin
lgica o un campo general o de imagen.

nTamaoResultado
Especifica el nmero total de caracteres que tendr la expresin despus de rellenarla.

cCarcterRelleno
Especifica el valor que se va a utilizar para el relleno. Este valor se repite todas las veces necesarias para
rellenar la expresin con el nmero especificado de caracteres.
Si se omite cCarcterRelleno, se utilizan espacios (ASC(32)) para el relleno.

Comentarios
PADL( ) inserta los caracteres de relleno a la izquierda, PADR( ) inserta el relleno a la derecha, y PADC( ) lo
inserta en ambos lados.



Manual de Genlis
196

5.5.145. _PAGENO (Variable del sistema)

Contiene el nmero de pgina actual.

Sintaxis
_PAGENO = nNmeroPginaActual

Argumentos
nNmeroPginaActual
Especifica un valor numrico desde 1 hasta 32.767 para el nmero de pgina actual. _PAGENO, _PBPAGE
y _PEPAGE se define (o se incrementa) de forma que quede fuera del rango de _PBPAGE a _PEPAGE, no
se imprime ninguna pgina.

Comentarios
_PAGENO contiene un valor numrico que determina el nmero de pgina actual. El valor inicial
predeterminado es 1. _PAGENO le permite imprimir nmeros de pgina en salida secuencial de caracteres
sin definir, inicializar ni incrementar una variable para este fin.


5.5.146. PAYMENT( ) (Funcin)

Devuelve el importe de cada pago peridico de un prstamo a inters fijo.

Sintaxis
PAYMENT(nPrincipal, nTipoInters, nPagos)

Tipos devueltos
Numeric

Argumentos
nPrincipal
Especifica el principal inicial del prstamo.

nTipoInters
Especifica el tipo de inters fijo por periodo. Si en el prstamo se hacen los pagos mensualmente pero el
tipo de inters es anual, divida por 12 el tipo de inters anual.

nPagos
Especifica el nmero total de pagos a realizar en el prstamo.


Manual de Genlis
197

Comentarios
PAYMENT( ) asume un tipo de inters peridico constante y que los pagos se hacen al final de cada
periodo.


5.5.147. PRIVATE (Comando)

Oculta al programa actual las variables o matrices de memoria especificadas que estaban definidas en el
programa que llama.

Sintaxis
PRIVATE ListaVariables
O bien:
PRIVATE ALL
[LIKE Estructura | EXCEPT Estructura]

Argumentos
ListaVariables
Especifica las variables o matrices de memoria privadas que se declaran.

ALL LIKE Estructura
La clusula ALL LIKE hace que PRIVATE oculte todas las variables y matrices de memoria cuyos nombres
coincidan con la estructura Estructura, que puede contener los caracteres comodn ? y *.

ALL EXCEPT Estructura
La clusula PRIVATE hace que se oculten todas las variables o matrices de memoria cuyos nombres no
coincidan con la estructura Estructura, que puede contener los caracteres comodn ? y *.

Comentarios
Oculta al programa actual las variables o matrices de memoria definidas en un programa ejecutado
previamente. Ocultar variables creadas en programas de nivel superior permite manipular en el programa
actual variables privadas con el mismo nombre que las variables ocultas. Una vez que termina el programa
que contiene PRIVATE, todas las variables y matrices de memoria privadas que se declararon vuelven a
estar disponibles.
PRIVATE no crea variables; simplemente oculta al programa actual las variables declaradas en programas
de nivel superior.




Manual de Genlis
198
5.5.148. PROPER( ) (Funcin)

Devuelve, a partir de una expresin de caracteres, una cadena con el modelo apropiado de
maysculas/minsculas para nombres propios.

Sintaxis
PROPER(cExpresin)

Tipos devueltos
Character

Argumentos
cExpresin
PROPER( ) devolver una cadena de caracteres con el modelo apropiado de maysculas/minsculas de la
expresin especificada.


5.5.149. PUBLIC (Comando)

Define variables de memoria o matrices globales.

Sintaxis
PUBLIC ListaVariablesMemoria
o bien
PUBLIC [ARRAY] NombreMatriz1(nFilas1 [, nColumnas1])
[, NombreMatriz2(nFilas2 [, nColumnas2])] ...

Argumentos
ListaVariablesMemoria
Especifica los nombres de una o ms variables de memoria que se van a inicializar y designar como
globales.

[ARRAY] NombreMatriz1 (nFilas1 [, nColumnas1])
[, NombreMatriz12 (nFilas2 [, nColumnas2])] ...
Especifica una o ms matrices que se van a inicializar y designar como globales.

Comentarios
Las variables y matrices globales pueden utilizarse y modificarse en cualquier programa que ejecute durante
la sesin actual de Genlis.


Manual de Genlis
199
Las variables y matrices de memoria que se crean con PUBLIC se inicializan a falso (.F.) excepto las
variables pblicas FOX y FXOPRO, que se inicializan a verdadero (.T.). Las variables pblicas FOX y FOXPRO
pueden utilizarse para ejecutar cdigo condicionalmente basndose en el producto que est ejecutando.
Cualquier variable o matriz de memoria que cree en la ventana Comandos ser automticamente pblica.
Todas las variables o matrices de memoria que quiera declarar como pblicas deben declararse pblicas
antes de asignarles un valor.
Si dentro de un programa asigna un valor a una variable de memoria o a una matriz y luego la declara
pblica mediante PUBLIC, Genlis generar un error de sintaxis.


5.5.150. RAND( ) (Funcin)

Devuelve un nmero aleatorio entre 0 y 1.

Sintaxis
RAND([nValorSemilla])

Tipos devueltos
Numeric

Argumentos
nValorSemilla
Especifica el valor semilla que determina la secuencia de valores que devuelve RAND( ).
RAND( ) devuelve la misma secuencia de nmeros aleatorios si utiliza el mismo valor semilla para
nValorSemilla la primera vez que ejecuta la funcin RAND( ) seguida de llamadas posteriores a la funcin
RAND( ) sin nValorSemilla.
Si nValorSemilla es negativo la primera vez que ejecuta RAND( ), se usar un valor semilla a partir del reloj
del sistema. Para obtener la serie ms aleatoria de nmeros, utilice inicialmente RAND( ) con un argumento
negativo y, despus, ejecute RAND( ) sin ningn argumento.
Si omite nValorSemilla, RAND( ) utilizar de forma predeterminada el valor semilla 100.001.


5.5.151. RAT( ) (Funcin)

Devuelve la posicin numrica de la ltima aparicin (ms a la derecha) de una cadena de caracteres dentro
de otra cadena de caracteres.

Sintaxis
RAT(cExpresinBsqueda, cExpresinBuscada [, nAparicin])



Manual de Genlis
200
Tipos devueltos
Numeric

Argumentos
cExpresinBsqueda
Especifica la expresin de caracteres que RAT( ) busca en cExpresinBuscada. La expresin de caracteres
puede hacer referencia a un campo memo de cualquier tamao.

cExpresinBuscada
Especifica la expresin de caracteres donde RAT( ) busca. La expresin de caracteres puede hacer
referencia a un campo memo de cualquier tamao.

nAparicin
Especifica qu aparicin, de derecha a izquierda, de cExpresinBsqueda busca RAT( ) en
cExpresinBuscada. De forma predeterminada, RAT( ) busca la ltima vez que aparece
cExpresinBsqueda (nAparicin = 1). Si nAparicin es 2, RAT( ) buscar la penltima aparicin y as
sucesivamente.

Comentarios
RAT( ), que es la funcin inversa de AT( ), busca en la expresin de caracteres cExpresinBuscada, de la
derecha a la izquierda, la ltima aparicin de otra expresin de caracteres cExpresinBsqueda.
RAT( ) devuelve un entero que indica la posicin del primer carcter de cExpresinBsqueda en
cExpresinBuscada. RAT( ) devolver 0 si no encuentra cExpresinBsqueda en cExpresinBuscada, o si
nAparicin es mayor que el nmero de veces que cExpresinBsqueda aparece en cExpresinBuscada.
La bsqueda realizada por RAT( ) distingue maysculas de minsculas.


5.5.152. RATC( ) (Funcin)

Devuelve la posicin numrica de la ltima aparicin de una expresin de caracteres o de un campo memo
dentro de otra expresin de caracteres o campo memo.

Sintaxis
RATC(cExpresinBsqueda, cExpresinBuscada [, nAparicin])

Tipos devueltos
Numeric

Argumentos
cExpresinBsqueda
Especifica la expresin de caracteres que RATC( ) busca en cExpresinBuscada.


Manual de Genlis
201

cExpresinBuscada
Especifica la expresin de caracteres que RATC( ) examina. Las expresiones de caracteres
cExpresinBsqueda y cExpresinBuscada pueden ser campos memo de cualquier tamao.

nAparicin
Especifica qu aparicin, de la derecha a la izquierda, de cExpresinBsqueda buscar RATC( ) en
cExpresinBuscada. De forma predeterminada, RATC( ) buscar la ltima aparicin de cExpresinBsqueda
(nAparicin es igual a 1). Si nAparicin es 2, RATC( ) buscar la prxima ltima aparicin y as
sucesivamente.

Comentarios
RATC( ) est diseado para expresiones que contengan caracteres de dos bytes. Si la expresin slo
contiene caracteres de un byte, RATC( ) ser equivalente a RAT( ).
RATC( ) devuelve la posicin numrica de la ltima aparicin de una expresin de caracteres o campo
memo dentro de otra expresin de caracteres o campo memo. Las expresiones de caracteres o campos
memo pueden contener cualquier combinacin de caracteres de un byte y de dos bytes.
RATC( ) es lo opuesto a la funcin AT_C( ): busca de derecha a izquierda.
RATC( ) devuelve un nmero entero para indicar la posicin del primer carcter en cExpresinBsqueda en
cExpresinBuscada. RATC( ) devuelve 0 si no encuentra cExpresinBsqueda en cExpresinBuscada o si
nAparicin es mayor que el nmero de veces que aparece cExpresinBsqueda en cExpresinBuscada.
En la bsqueda realizada por RATC( ) se distingue entre maysculas y minsculas.
Esta funcin es til para manipular conjuntos de caracteres de doble byte en idiomas como el Hiragana y el
Katakana.


5.5.153. RATLINE( ) (Funcin)

Devuelve el nmero de lnea de la ltima aparicin de una expresin de caracteres dentro de otra expresin
de caracteres o un campo memo, a partir de la ltima lnea.

Sintaxis
RATLINE(cExpresinBsqueda, cExpresinBuscada)

Tipos devueltos
Numeric

Argumentos
cExpresinBsqueda
Especifica la expresin de caracteres que RATLINE( ) busca en cExpresinBuscada.

cExpresinBuscada


Manual de Genlis
202
Especifica la expresin de caracteres donde busca RATLINE( ). Las expresiones de caracteres
cExpresinBsqueda y cExpresinBuscada pueden ser campos memo de cualquier tamao.
Utilice MLINE( ) para devolver la lnea que contiene cExpresinBsqueda.

Sugerencia RATLINE( ) ofrece una forma cmoda de buscar en campos memo.

Comentarios
RATLINE( ), que es la funcin inversa de ATLINE( ), busca en una expresin de caracteres
cExpresinBuscada, a partir del ltimo carcter de la misma, la aparicin de cExpresinBsqueda.
Si la bsqueda tiene xito, RATLINE( ) devolver el nmero de lnea donde se produce la coincidencia. Si la
bsqueda fracasa, RATLINE( ) devolver 0.
La bsqueda realizada por RATLINE( ) distingue maysculas de minsculas.

Precaucin El nmero de lnea devuelto por RATLINE( ) est determinado por el valor de SET MEMOWIDTH,
aunque cExpresinBuscada no sea un campo memo.


5.5.154. RD | RMDIR (Comando)

Elimina un directorio del disco.

Sintaxis
RD cRuta | RMDIR cRuta

Argumentos
cRuta
Especifica el nombre y la ubicacin del directorio que se elimina del disco.

Comentarios
Genlis genera un mensaje de error si intenta eliminar un directorio que no est vaco.


5.5.155. RECCOUNT( ) (Funcin)

Devuelve el nmero de registros de la tabla actual o especificada.

Sintaxis
RECCOUNT([nreaTrabajo | cAliasTabla])

Tipos devueltos


Manual de Genlis
203
Numeric

Argumentos
nreaTrabajo
Especifica el nmero del rea de trabajo de una tabla abierta en otra rea de trabajo.
Si no hay ninguna tabla abierta en el rea de trabajo especificada, RECCOUNT( ) devolver cero.

cAliasTabla
Especifica el alias de una tabla abierta en otra rea de trabajo.

Comentarios
El valor devuelto por RECCOUNT( ) no se ve afectado por SET DELETED y SET FILTER.
RECCOUNT( ) sin los argumentos opcionales nreaTrabajo o cAliasTabla devuelve el nmero de registros
de la tabla del rea de trabajo seleccionada actualmente.


5.5.156. RECNO( ) (Funcin)

Devuelve el nmero del registro actual de la tabla actual o la especificada.

Sintaxis
RECNO([nreaTrabajo | cAliasTabla])

Tipos devueltos
Numeric

Argumentos
nreaTrabajo
Especifica el nmero del rea de trabajo de una tabla abierta en otra rea de trabajo. Si no est abierta
ninguna tabla en el rea de trabajo que especifica, RECNO( ) devolver cero.

cAliasTabla
Especifica el alias de una tabla abierta en otra rea de trabajo.

Comentarios
El registro actual es el registro en el cual se encuentra el puntero de registro.
RECNO( ) devuelve nmeros negativos para registros anexados en un bfer de tablas.
RECNO( ) devuelve un valor que es el nmero de registros de la tabla ms uno si el puntero de registro se
encuentra mas all del ltimo registro de la misma. RECNO( ) devuelve 1 si el puntero de registro se
encuentra antes del primer registro de la tabla. Si la tabla no tiene registros, EOF( ) siempre devolver
verdadero (.T.).


Manual de Genlis
204
Ejecutar RECNO( ) sin los argumentos opcionales nreaTrabajo o cAliasTabla devuelve el nmero de registro
actual de la tabla situada en el rea de trabajo seleccionada actualmente.
Si ha ejecutado SEEK sin xito en una tabla indexada, puede especificar 0 para que nreaTrabajo utilice la
lgica de "bsqueda cercana" para devolver el nmero del registro ms similar. RECNO(0) devuelve 0 si no
puede encontrarse ninguna coincidencia. Genlis generar un mensaje de error si ejecuta GO RECNO(0) y no
se encuentra ninguna coincidencia.


5.5.157. RENAME (Comando)

Cambia el nombre de un archivo.

Sintaxis
RENAME NombreArchivo1 TO NombreArchivo2

Argumentos
NombreArchivo1 TO NombreArchivo2
Especifica el nombre de archivo que se va a modificar y el nuevo nombre de archivo. Incluya las extensiones
de archivo en ambos archivos. Si no se incluyen las extensiones de archivo, se asumirn las extensin .dbf
predeterminada. Si cambia el nombre de una tabla libre que tiene un archivo memo .fpt asociado, asegrese
de cambiar el nombre del archivo memo. Incluya un punto (.) despus del nombre de archivo para cambiar
de nombre un archivo que no tenga extensin.
No use RENAME para cambiar el nombre de una tabla de una base de datos; RENAME no cambia el
nombre de la tabla en la base de datos. Use RENAME TABLE para cambiar el nombre de una tabla en una
base de datos.
Incluya rutas de acceso con los nombres de archivo si los archivos no estn en la unidad y en el directorio
predeterminados. Si NombreArchivo1 y NombreArchivo2 estn en directorios diferentes, NombreArchivo1
se mueve al directorio de NombreArchivo2.
Cuando ejecute RENAME, NombreArchivo2 no puede existir, y NombreArchivo1 tiene que existir y no puede
estar abierto.
NombreArchivo1 y NombreArchivo2 pueden contener caracteres comodn tales como * y ?. Por ejemplo,
para cambiar el nombre de todos los archivos del programa con la extensin .PRG en el directorio o carpeta
actuales para hacer una copia de seguridad de los archivos con la extensin .bak, ejecute RENAME *.prg
TO *. bak.


5.5.158. REPLACE (Comando)

Actualiza los registros de una tabla.



Manual de Genlis
205
Sintaxis
REPLACE NombreCampo1 WITH eExpresin1 [ADDITIVE]
[, NombreCampo2 WITH eExpresin2 [ADDITIVE]] ...
[Alcance] [FOR lExpresin1] [WHILE lExpresin2]
[IN nreaTrabajo | cAliasTabla]
[NOOPTIMIZE]

Argumentos
NombreCampo1 WITH eExpresin1 [, NombreCampo2 WITH eExpresin2 ... ]
Especifica que los datos de NombreCampo1 se sustituyen por el valor de la expresin eExpresin1; que los
datos de NombreCampo2 se sustituyen por el valor de la expresin eExpresin2; y as sucesivamente.
Cuando el valor de la expresin sea ms largo que la anchura de un campo numrico, REPLACE har que
quepa el valor:
Primero, REPLACE truncarn los decimales y se redondear la parte decimal restante del campo.
Si el valor sigue sin caber, REPLACE almacenar el contenido del campo en notacin cientfica.
Si el valor sigue sin caber, REPLACE sustituir el contenido del campo por asteriscos.

ADDITIVE
Anexa al final de los campos memo sustituciones de campos memo ADDITIVE se aplica nicamente a las
sustituciones de campos memo. Si no se incluye ADDITIVE, el campo memo se sobrescribir con el valor de
la expresin.

Alcance
Especifica un rango de registros a sustituir. Solamente se sustituyen los registros incluidos dentro del rango.
Las clusulas del alcance son: ALL, NEXT nRegistros, RECORD nNmeroRegistro y REST.
El alcance predeterminado de REPLACE es el registro actual (NEXT 1).

FOR lExpresin1
Especifica que los campos designados se sustituyan nicamente en los registros para los que lExpresin1
se evale como verdadera (.T.). La inclusin de FOR le permite sustituir registros de forma condicional,
descartando los registros no deseados.

Si lExpresin1 es una expresin optimizable, Rushmore optimizar REPLACE FOR. Para mejorar el
rendimiento, utilice una expresin optimizable en la clusula FOR.

WHILE lExpresin2
Si se incluye la clusula WHILE, se sustituirn los campos de los registros mientras que la expresin lgica
lExpresin2 se evale como verdadera (.T.).

IN nreaTrabajo
Especifica el rea de trabajo de la tabla en la que se actualizan los registros.

IN cAliasTabla
Especifica el alias de la tabla en la que se actualizan los registros.


Manual de Genlis
206
Si omite nreaTrabajo y cAliasTabla, los registros se actualizarn en la tabla del rea de trabajo seleccionada
actualmente.

NOOPTIMIZE
Impide la optimizacin Rushmore.

Comentarios
REPLACE sustituye los datos de un campo con el valor de una expresin. Los campos de las reas de
trabajo no seleccionadas deben ir precedidos de su alias.

Nota Si se omite la clusula IN, no se producir ninguna sustitucin si el puntero de registro est al final del
archivo del rea de trabajo actual y especifica un campo de otro rea de trabajo.


5.5.159. REPLACE FROM ARRAY (Comando)

Actualiza los datos de campos que tengan valores procedentes de una matriz de variables.

Sintaxis
REPLACE FROM ARRAY NombreMatriz
[FIELDS ListaCampos]
[Alcance]
[FOR lExpresin1]
[WHILE lExpresin2]
[NOOPTIMIZE]

Argumentos
NombreMatriz
Especifica el nombre de la matriz cuyos valores sustituyen los datos del campo.

FIELDS ListaCampos
Especifica que solamente los campos incluidos en ListaCampos se sustituyan por el contenido de la matriz.
Los campos de reas de trabajo no seleccionadas deben ir precedidos de sus alias de tabla.

Alcance
Especifica un intervalo de registros que se deben sustituir por el contenido de la matriz. Solamente se
sustituyen los registros incluidos en el intervalo. Se realiza la sustitucin hasta el final del alcance o hasta
llegar al final de la matriz.
Las clusulas de alcance son: ALL, NEXT nRegistros, RECORD nNmeroRegistro y REST.
El alcance predeterminado para REPLACE FROM ARRAY es el registro actual (NEXT 1).

FOR lExpresin1


Manual de Genlis
207
Especifica que los campos se deben sustituir nicamente en los registros donde lExpresin1 se evale
como verdadera (.T.). Incluir FOR le permite sustituir registros de forma condicional, filtrando los no
deseados. La sustitucin se produce en los registros para los cuales lExpresin1 se verdadero (.T.), o hasta
llegar al final de la matriz.
Rushmore optimiza REPLACE FROM ARRAY FOR si lExpresin1 es una expresin optimizable. Para
obtener el mejor rendimiento, utilice expresiones optimizables en la clusula FOR.

WHILE lExpresin2
Especifica una condicin por la cual los campos de los registros se sustituyen por el contenido de la matriz
siempre que la expresin lgica lExpresin2 se evale como verdadera (.T.).

NOOPTIMIZE
Impide la optimizacin Rushmore.

Comentarios
Los campos de tipo Memo y General se pasan por alto en REPLACE FROM ARRAY. Para importar datos en
estos campos, use GATHER y APPEND GENERAL.
Los elementos de la matriz sustituyen a los campos correspondientes del registro, comenzando por el
primer elemento. El primer elemento de la matriz sustituye al primer campo del registro, el segundo elemento
de la matriz sustituye al segundo campo, y as sucesivamente.
Si los elementos de la matriz son menos que los campos que hay en la tabla, los campos adicionales se
pasan por alto. Si los elementos de la matriz son ms que los campos de la tabla, los elementos adicionales
de la matriz se pasan por alto.

Nota No se produce ninguna sustitucin si el puntero de registro est al final del archivo del rea de trabajo
actual y especifica un campo de otra rea de trabajo.


5.5.160. REPORT (Comando)

Muestra o imprime un informe bajo el control de un archivo de definicin de informe creado con MODIFY
REPORT o CREATE REPORT.

Sintaxis
REPORT FORM NombreArchivo1 | ?
[ENVIRONMENT]
[Alcance] [FOR lExpresin1] [WHILE lExpresin2]
[HEADING cTextoEncabezado]
[NOCONSOLE]
[NOOPTIMIZE]
[PLAIN]
[RANGE nPginaInicio [, nPginaFinal]]


Manual de Genlis
208
[PREVIEW [[IN] WINDOW NombreVentana | IN SCREEN]
[NOWAIT]]
[TO PRINTER [PROMPT] | TO FILE NombreArchivo2 [ASCII]]
[NAME NombreObjeto]
[SUMMARY]

Argumentos
NombreArchivo1
Especifica el nombre del archivo de definicin de informe que se va a imprimir.

?
Muestra el cuadro de dilogo Abrir, en el que puede elegir un archivo de informe.

ENVIRONMENT
Se incluye por compatibilidad con informes de las versiones 2.x. Para restaurar el entorno de datos asociado
a un informe de Genlis, establezca la propiedad AutoOpenTables del entorno de datos como verdadera (.T.),
que es el valor predeterminado. Para asegurarse de que el entorno del informe se cierra cuando termina de
imprimirse el informe, establezca la propiedad AutoCloseTables del entorno de datos como verdadera (.T.),
que es el valor predeterminado.
En el caso de informes de otras versiones anteriores de FoxPro convertidos a la actual, la inclusin de
ENVIRONMENT abrir y restaurar todas las tablas y las relaciones en el entorno de datos incluso si
AutoOpenTables est establecida en falso (.F.).
Cuando crea o modifica informes, puede guardar el entorno de datos actual de Genlis con el archivo de
definicin de informe. Al guardar el entorno de datos de Genlis se situarn registros adicionales en la tabla
de definicin de informe para todas las tablas y archivos de ndice abiertos, el orden de ndice y las
relaciones entre las tablas.

Alcance
Puede especificar un alcance de registros incluidos en el informe. Solamente se incluyen en el informe los
registros comprendidos dentro del rango.
Las clusulas de alcance son: ALL, NEXT nRegistros, RECORD nNmeroRegistro y REST.
El alcance predeterminado de REPORT es ALL (todos los registros).

FOR lExpresin1
Imprime solamente los datos incluidos en los registros para los cuales lExpresin1 se evala como
verdadera (.T.). La inclusin de FOR le permite filtrar los registros que no desea imprimir.
Rushmore optimizar REPORT FOR si lExpresin1 es una expresin optimizable. Para obtener el mejor
rendimiento, utilice expresiones optimizables en la clusula FOR.

WHILE lExpresin2
Especifica una condicin por la cual los datos se imprimen mientras las expresin lgica lExpresin2 se
evale como verdadera (.T.).

HEADING cTextoEncabezado


Manual de Genlis
209
Especifica texto para que se incluya un encabezado adicional en cada pgina del informe. Si se incluyen a la
vez HEADING y PLAIN, la opcin PLAIN tendr preferencia.

NOCONSOLE
Suprime el eco de un informe a la ventana principal de Genlis o a una ventana definida por el usuario cuando
el informe se est imprimiendo o enviando a un archivo.

NOOPTIMIZE
Para impedir la optimizacin Rushmore de REPORT, incluya NOOPTIMIZE.

PLAIN
Especifica que el encabezado de pgina aparece solamente al principio del informe.

RANGE nPginaInicio [, nPginaFinal]
Especifica el rango de pginas que se van a imprimir nPginaInicio especifica la primera pgina impresa;
nPginaFinal especifica la ltima pgina impresa. Si se omite nPginaFinal, el nmero de la ltima impresa
ser el predeterminado: 9.999.

PREVIEW [[IN] WINDOW NombreVentana | IN SCREEN]
Muestra el informe en el modo de Vista previa en lugar de enviarlo a la impresora. Para imprimir un informe,
es necesario ejecutar REPORT con TO PRINTER.
Tenga en cuenta que las variables del sistema se pasan por alto cuando se incluye PREVIEW.
Para especificar una ventana en la que realizar una vista previa del informe, incluya la clusula opcional
WINDOW o IN WINDOW. NombreVentana puede ser el nombre de una ventana creada con DEFINE. si
incluye la clusula WINDOW, la vista previa asume las caractersticas de la ventana (ttulo, tamao, etc.) de la
ventana que especifique en NombreVentana. Si incluye la clusula IN WINDOW, se hace una vista previa del
informe en la ventana que especifique en NombreVentana.
Puede incluir la clusula opcional IN SCREEN para especificar que la ventana de vista previa del informe est
contenida en la ventana principal de Genlis y no se pueda mover fuera de ella.
Puede incluir la clusula opcional NOWAIT de modo que en tiempo de ejecucin Genlis no espere a que se
cierre la ventana Vista previa antes de continuar con la ejecucin del programa. En su lugar, Genlis contina
la ejecucin del programa mientras est abierta la ventana Vista previa.
En una aplicacin distribuida, asegrese de que el men Ver est disponible. Si se cierra la barra de
herramientas Vista previa, no podr restaurarse a menos que est disponible el men Ver.

TO PRINTER [PROMPT]
Enva un informe a la impresora.
En Genlis, puede incluir la clusula opcional PROMPT para mostrar un cuadro de dilogo antes de que
comience la impresin. La configuracin de impresora que puede ajustar dependen del controlador de
impresora instalado en este momento. Site la palabra clave PROMPT inmediatamente despus de TO
PRINTER.

TO FILE NombreArchivo2 [ASCII]


Manual de Genlis
210
Especifica el archivo de texto al que enva un informe Se usa el controlador de impresora actual cuando el
informe se enva al archivo de texto. El archivo creado cuando incluye TO FILE tiene la extensin
predeterminada .txt.
Puede incluir la clusula opcional ASCII para crear un archivo de texto ASCII a partir del archivo de definicin
de informe. Sin la clusula ASCII, se escriben cdigos PostScript y otros cdigos de impresora al archivo de
texto. Los grficos, lneas, rectngulos o rectngulos redondeados de la definicin del informe no aparecen
en el archivo de texto ASCII.
El nmero de columnas y filas de cada pgina del archivo de texto ASCII est determinado por el contenido
de las variables de memoria del sistema _ASCIICOLS y _ASCIIROWS. Los valores predeterminados para
_ASCIICOLS y _ASCIIROWS son 80 columnas y 63 filas, respectivamente. Estos valores corresponden a la
pgina vertical estndar.

NAME NombreObjeto
Especifica un nombre de variable de objeto para el entorno de datos de un informe. El entorno de datos y
los objetos del entorno de datos tienen propiedades y mtodos, por ejemplo AddObject, que es necesario
establecer o llamar en tiempo de ejecucin. La variable de objeto ofrece acceso a estas propiedades y
mtodos. Si no especifica NAME, Genlis usar de forma predeterminada el nombre del archivo de informe al
que se puede hacer referencia en el cdigo asociado a los eventos.

SUMMARY
Suprime la impresin de lneas de detalle. Solamente se imprimen totales y subtotales.

Comentarios
La extensin predeterminada de un archivo de definicin de informe es .frx. Si el archivo de definicin de
informe est en una unidad distinta de la unidad o el directorio predeterminados, deber incluir tambin la
ruta de acceso con el nombre del archivo.


5.5.161. RIGHT( ) (Funcin)

Devuelve el nmero especificado de caracteres del lado derecho de una cadena de caracteres.

Sintaxis
RIGHT(cExpresin, nCaracteres)

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres cuyos caracteres ms a la derecha se devuelven.


Manual de Genlis
211

nCaracteres
Especifica el nmero de caracteres devueltos a partir de la expresin de caracteres. RIGHT( ) devuelve toda
la expresin de caracteres si nCaracteres es mayor que la longitud de cExpresin. RIGHT( ) devuelve una
cadena vaca si nCaracteres es negativo o 0.

Comentarios
Los caracteres se devuelven comenzando por el ltimo carcter de la derecha y continuando durante un
nmero concreto de caracteres.


5.5.162. RIGHTC( ) (Funcin)

Devuelve el nmero especificado de los caracteres ms a la derecha de una cadena de caracteres.

Sintaxis
RIGHTC(cExpresin, nCaracteres)

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres de la que se devuelven los caracteres que estn ms a la derecha.

nCaracteres
Especifica el nmero de caracteres devueltos a partir de la expresin de caracteres. RIGHTC( ) devuelve
toda la expresin de caracteres si nCharacters supera la longitud de cExpression. RIGHTC( ) devuelve una
cadena vaca si nCharacters es negativo o 0.

Comentarios
RIGHTC( ) ha sido diseado para expresiones que contienen caracteres de dos bytes. Si la expresin slo
contiene caracteres de un solo byte, RIGHTC( ) ser equivalente a RIGHT( ).
Los caracteres se devuelven empezando por el ltimo carcter de la derecha y continuando por
nCharacters.
Esta funcin es til para tratar caracteres codificados en dos bytes, en idiomas como Hiragana y Katana.





Manual de Genlis
212
5.5.163. RLOCK( ) (Funcin)

Intenta bloquear uno o varios registros de una tabla.

Sintaxis
RLOCK([nreaTrabajo | cAliasTabla]
| [cListaNmerosRegistros, nreaTrabajo | cAliasTabla])

Tipos devueltos
Logical

Argumentos
nreaTrabajo | cAliasTabla
Especifica el nmero del rea de trabajo o el alias de tabla para una tabla abierta en otra rea de trabajo. Si
no especifica un rea de trabajo o alias, RLOCK( ) intentar bloquear el registro actual de la tabla del rea de
trabajo seleccionada actualmente.

cListaNmerosRegistros
Especifica que RLOCK( ) intenta bloquear mltiples registros. La expresin de caracteres
cListaNmeroRegistros especifica uno o varios nmeros de registro, separados por comas, que RLOCK( )
intenta bloquear. Por ejemplo, para intentar bloqueos de registro en los primeros 4 registros de la tabla,
cListaNmeroRegistros contendr 1, 2, 3, 4.
Para bloquear mltiples registros, es necesario activar SET MULTILOCKS e incluir el nmero del rea de
trabajo (nreaTrabajo) o el alias (cAliasTabla) de la tabla en la que intenta bloquear los registros.
Tambin puede bloquear varios registros moviendo el puntero de registro al registro que quiera bloquear,
ejecutando RLOCK( ) o LOCK( ) y repitiendo luego este proceso para registros adicionales.
En Genlis, puede especificar 0 como nmero de registro. Especificar 0 le permite intentar bloquear el
encabezado de la tabla.

Importante Mantenga 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 UNLOCK RECORD 0, UNLOCK o UNLOCK ALL.
Si todos los registros especificados en cListaNmerosRegistros logran bloquearse, RLOCK( ) devolver
verdadero (.T.). Si uno o ms de los registros especificados en cListaNmerosRegistros no puede
bloquearse, RLOCK( ) devuelve falso (.F.) y no se bloquear ningn registro. En cualquier caso, los bloqueos
de registro existentes, permanecern en vigor. El bloqueo de varios registros es un proceso aditivo: al situar
bloqueos de registro adicionales no liberar los bloqueos de registro existentes.
Desde una perspectiva de rendimiento, es siempre ms rpido bloquear la tabla completa que bloquear un
nmero de registros, aunque sea pequeo.

Comentarios
RLOCK( ) es idntico a LOCK( ).


Manual de Genlis
213
Si se logra establecer el bloqueo o los bloqueos, RLOCK( ) devuelve verdadero (.T.). Los registros
bloqueados estn disponibles para acceso tanto de lectura como de escritura por el usuario que efectu los
bloqueos y estarn disponibles nicamente para acceso de lectura para todos los dems usuarios de la red.
La ejecucin de RLOCK( ) no garantiza que consigan efectuarse el o los bloqueos que se intenten. No podr
efectuar un bloqueo sobre un registros que ya est bloqueado por otro usuario o sobre una tabla bloqueada
por otro usuario. Si no pueden efectuarse el o los bloqueos por alguna razn, RLOCK( ) devolver falso (.F.).
De forma predeterminada, RLOCK( ) hace un intento de bloquear un registro, Utilice SET REPROCESS para
reintentar automticamente un bloqueo de registro cuando falle el primer intento. SET REPROCESS controla
el nmero de intentos de bloqueo o durante cuanto tiempo se harn intentos de bloqueo cuando fracasa el
primer intento.
SET MULTILOCKS determina si puede bloquear varios registros de una tabla. Si MULTILOCKS est OFF (el
valor predeterminado), nicamente puede bloquear un solo registro de una tabla. Si MULTILOCKS est ON,
podrn bloquearse mltiples registros de una tabla.
Un registro de una tabla puede desbloquearlo nicamente el usuario que lo bloque. Los bloqueos de
registro pueden liberarse ejecutando UNLOCK, cerrando la tabla o saliendo de Genlis.
UNLOCK 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.
Alternando MULTILOCKS de ON a OFF o de OFF a ON, se realiza UNLOCK ALL implcitamente: se liberarn
todos los bloqueos de registro de todas las reas de trabajo.
Las tablas pueden cerrase con USE, CLEAR ALL o CLOSE DATABASES.


5.5.164. ROUND( ) (Funcin)

Devuelve una expresin numrica redondeada a un nmero especificado de cifras decimales.

Sintaxis
ROUND(nExpresin, nLugaresDecimales)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica la expresin numrica cuyo valor desea redondear.

nDecimalPlaces
Especifica el nmero de cifras decimales con los que se redondea nExpresin.
Si nLugaresDecimales es negativo, ROUND( ) devuelve un nmero entero que contiene nLugaresDecimales
ceros a la izquierda del separador decimal. Por ejemplo, si nLugaresDecimales es 2, la primera y la
segunda cifra a la izquierda del separador decimal del valor sern cero.



Manual de Genlis
214
Comentarios
El valor devuelto por ROUND( ) tiene el mismo nmero de lugares decimales que nLugaresDecimales.
ROUND( ) pasa por alto el nmero de cifras decimales especificado por SET DECIMALS.


5.5.165. RTOD( ) (Funcin)

Convierte radianes en grados.

Sintaxis
RTOD(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica la expresin numrica que representa los radianes que RTOD( ) convierte en grados.

Comentarios
RTOD( ) convierte el valor (en radianes) de una expresin numrica a su valor equivalente en grados.
RTOD( ) es til cuando se trabaja con funciones trigonomtricas de Genlis tales como COS( ), SIN( ), TAN( ).
Utilice DTOR( ) para convertir grados en radianes.


5.5.166. RTRIM( ) (Funcin)

Devuelve la expresin de caracteres especificada con todos los espacios en blanco finales recortados.

Sintaxis
RTRIM(cExpresin)

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres de la cual se deben recortar los espacios en blanco finales.



Manual de Genlis
215
Comentarios
RTRIM( ) puede utilizarse para asegurarse de que se eliminan los espacios en blanco de los datos
introducidos por un usuario. La funcin RTRIM( ) es idntica a TRIM( ).


5.5.167. SCAN ... ENDSCAN (Comando)

Mueve el puntero de registro por la tabla seleccionada y ejecuta un bloque de comandos para cada uno de
los registros que cumple las condiciones especificadas.

Sintaxis
SCAN
ENDSCAN

Comentarios
SCAN avanza automticamente el puntero de registro al siguiente registro y ejecuta el bloque de comandos.


5.5.168. SCATTER (Comando)

Copia datos del registro actual a un conjunto de variables de memoria o a una matriz.

Sintaxis
SCATTER
[FIELDS ListaNombresCampos
| FIELDS LIKE Estructura | FIELDS EXCEPT Estructura] [MEMO]
TO NombreMatriz | TO NombreMatriz BLANK | MEMVAR | MEMVAR BLANK
| NAME NombreObjeto[BLANK]

Argumentos
FIELDS ListaNombresCampos
Especifica los campos que desea transferir a las variables de memoria o a la matriz. Si omite FIELDS
ListaNombresCampos, se transferirn todos los campos. La lista de campos puede contener campos
memo si sigue la lista de campos con la palabra clave MEMO. Los campos de tipo general e imagen se
pasan por alto siempre en SCATTER, aunque incluya la palabra clave MEMO.

FIELDS LIKE Estructura | FIELDS EXCEPT Estructura
Puede transferir selectivamente campos a variables de memoria o a una matriz si incluye la clusula LIKE o
EXCEPT o ambas. Si incluye LIKE Estructura, los campos que coinciden con Estructura se transfieren a las


Manual de Genlis
216
variables de memoria o a la matriz. Si incluye EXCEPT Estructura, se transfieren a las variables 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 A y P a las variables de memoria o a la matriz, use:
SCATTER FIELDS LIKE A*,P* TO mimatriz
La clusula LIKE puede combinarse con la clusula EXCEPT:
SCATTER FIELDS LIKE A*,P* EXCEPT PARTNO* TO mimatriz

MEMO
Especifica que la lista de campos contiene uno o varios campos memo. De forma predeterminada, los
campos memo se pasan por alto en SCATTER.
Debe tener memoria suficiente para diseminar campos memo grandes en variables de memoria o en una
matriz. Genlis mostrar un mensaje de error si no tiene suficiente memoria. Si un campo memo es
demasiado grande y no cabe en memoria, ni se ni los dems campos memo de la lista de campos se
diseminarn. Si un campo memo no se disemina, su variable de memoria o elemento de matriz tomar el
valor falso (.F.).

TO NombreMatriz
Especifica qu matriz se copia el contenido de los registros. Comenzando por el primer campo, SCATTER
copia en orden secuencial el contenido de cada campo en cada elemento de matriz.
Si la matriz tiene ms elementos que el nmero de campos, los elementos de matriz sobrantes no se
modificarn. Si la matriz no existe, o si tiene menos elementos que el nmero de campos, se crear
automticamente una nueva matriz. Los elementos de matriz tendrn el mismo tamao y los mismos tipos
de datos que los campos correspondientes.

TO NombreMatriz BLANK
Crea una matriz con elementos vacos que tendrn el mismo tipo y tamao que los campos de la tabla
MEMVAR
Disemina los datos en un conjunto de variables de memoria en lugar de en una matriz SCATTER crea una
variable de memoria por cada campo de la tabla y rellena cada variable de memoria con datos del campo
correspondiente del registro actual, asignando a la variable el mismo nombre, tipo y tamao que su campo.
Se crea una variable de memoria para cada campo en la lista de campos, si se incluye una lista de campos.
Incluya delante del nombre de la variable de memoria el calificador M. para referirse a una variable de
memoria que tenga el mismo nombre que un campo de la tabla actual.

Importante No incluya TO con MEMVAR. Si incluye TO Genlis crear una matriz llamada MEMVAR.

MEMVAR BLANK
Crea un conjunto de variables de memoria vacas. A cada variable de memoria se le asignar el mismo
nombre, tipo de dato y tamao que su campo. Si se incluye una lista de campos, se crear una variable de
memoria para cada campo de la lista de campos.

NAME NombreObjeto [BLANK]


Manual de Genlis
217
Crea un objeto cuyas propiedades tienen los mismos nombres que los campos de la tabla. Si no se incluye
la palabra clave BLANK, los valores posibles de cada una de las propiedades del objeto son el contenido de
los campos de la tabla. Si se incluye la palabra clave BLANK, las propiedades estn vacas (vea EMPTY( )
para obtener una descripcin de qu contienen las propiedades vacas, en base al tipo de campo
correspondiente). No 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 M. Por ejemplo:
USE customer
SCATTER NAME customer
? customer.company && Devuelve el valor de la tabla
? M.customer.company && Devuelve el valor de propiedad del objeto

Comentarios
SCATTER y COPY TO ARRAY son parecidos. COPY TO ARRAY copia mltiples registros en una matriz,
mientras que SCATTER copia solamente un registro en una matriz o en un conjunto de variables de
memoria. SCATTER crea automticamente la matriz o las variables de memoria en caso de que no existan
todava.
Utilice GATHER para copiar variables de memoria o elementos de matriz a registros de tabla.


5.5.169. SEC( ) Funcin

Devuelve los segundos de una expresin DateTime.

Sintaxis
SEC(tExpresin)

Tipo devuelto
Numeric

Argumentos
tExpresin
Especifica la expresin DateTime de la que SEC( ) devuelve los segundos. Si tExpresin slo contiene una
fecha y no una hora, Genlis agregar la hora predeterminada de medianoche (12:00:00 A.M.) a tExpresin.


5.5.170. SECONDS( ) (Funcin)

Devuelve el nmero de segundos que han transcurrido desde la medianoche.



Manual de Genlis
218
Sintaxis
SECONDS( )

Tipos devueltos
Numeric

Comentarios
SECONDS( ) devuelve un valor numrico en formato decimal, con una resolucin de 1 milisegundo. Si est
ejecutando Windows NT, la resolucin ser de 10 milisegundos.


5.5.171. SEEK (Comando)

Busca en una tabla la primera aparicin de un registro cuya expresin clave de ndice coincida con una
expresin general, y despus mueve el puntero de registro al registro coincidente.

Sintaxis
SEEK eExpresin
[ORDER nNmerondice | NombreArchivondiceIDX
| [TAG] NombreEtiqueta [OF NombreArchivoCDx]
[ASCENDING | DESCENDING]]
[IN nreaTrabajo | cAliasTabla]

Argumentos
eExpresin
Especifica la expresin de ndice que quiere que busque SEEK. eExpresin puede ser el valor nulo.

ORDER nNmerondice
Especifica el nmero del archivo o etiqueta de ndice que se utiliza para buscar la clave de ndice.
nNmerondice hace referencia a los archivos de ndice tal y como estn incluidos en USE o SET INDEX. Los
archivos .idx abiertos se numeran primero en el orden en que aparecen en USE o SET INDEX. A
continuacin se numeran las etiquetas del archivo .cdx estructural (si existe) en el orden en que se crearon.
Por ltimo, se numeran las etiquetas de cualquier archivo .cdx independiente abierto en el orden en que se
crearon.

ORDER NombreArchivondiceIDX
Especifica un archivo .idx utilizado para buscar la clave de ndice.

ORDER [TAG] NombreEtiqueta [OF NombreArchivoCDX]
Especifica una etiqueta de un archivo .cdx que se utiliza para buscar la clave de ndice. El nombre de la
etiqueta de ndice puede proceder de un archivo .cdx estructural o de cualquier archivo .cdx independiente
abierto.


Manual de Genlis
219
Si existen nombres de etiqueta idnticos en archivos .cdx independientes abiertos .cdx, use OF
NombreArchivoCDX para especificar el archivo .cdx que contiene la etiqueta.

Nota El archivo .IDX tiene preferencia en caso de que existan nombres de etiquetas y archivos .IDX
duplicados.

ASCENDING
Especifica que se busca en la tabla en orden ascendente.

DESCENDING
Especifica que se busca en la tabla en orden descendente.

IN nreaTrabajo
Especifica el nmero del rea de trabajo de la tabla donde se busca.

IN cAliasTabla
Especifica el alias de la tabla donde se busca.
Si omite IN nreaTrabajo y IN cAliasTabla, se busca en la tabla del rea de trabajo seleccionada
actualmente.

Comentarios
Puede utilizar SEEK nicamente con tablas indexadas y puede buscar nicamente por la expresin clave
ndice. La coincidencia debe ser exacta a no ser que SET EXACT est OFF.
Si SEEK encuentra un registro con una clave de ndice coincidente, RECNO( ) devolver el nmero de
registro del registro coincidente, FOUND( ) devolver verdadero (.T.) y EOF( ) devolver falso (.F.).
Si no encuentra ninguna clave coincidente, RECNO( ) devolver el nmero de registros de la tabla ms 1,
FOUND( ) devolver falso (.F.) y EOF( ) devolver verdadero (.T.).
Si SET NEAR est ON, el puntero de registro se posicionar inmediatamente despus del registro con la
clave de ndice coincidente ms cercana. Si SET NEAR est OFF el puntero de registro se posicionar al
final del archivo. En cualquier caso, RECNO(0) devolver el nmero de registro del registro ms cercano.


5.5.172. SEEK( ) (Funcin)

Busca en una tabla indizada la primera aparicin de un registro cuya clave de ndice coincida con una
expresin especificada. SEEK( ) devuelve un valor lgico que indica si la bsqueda ha tenido xito.

Sintaxis
SEEK(eExpresin [, nreaTrabajo | cAliasTabla
[, nNmerondice | cNombreArchivondiceIDX | cNombreEtiqueta]])

Tipos devueltos


Manual de Genlis
220
Logical

Argumentos
eExpresin
Especifica la expresin clave de ndice que quiere que SEEK( ) busque

nreaTrabajo
Especifica el nmero del rea de trabajo de la tabla en la que se est buscando la clave de ndice.

cAliasTabla
Especifica el alias de la tabla en la que se busca.
Si omite nreaTrabajo y cAliasTabla, se busca en la tabla del rea de trabajo seleccionada actualmente.

nNmerondice
Especifica el nmero del archivo o etiqueta de ndice que se utiliza para buscar la clave de ndice.
nNmerondice hace referencia a los archivos de ndice tal y como aparecen en USE o SET INDEX. Primero
se numeran los archivos de ndice .idx abiertos en el orden en el que aparecen en USE o SET INDEX. A
continuacin se enumeran las etiquetas del archivo .cdx estructural (si existe) en el orden en el que se
crearon. Por ltimo, se enumeran las etiquetas de cualquier archivo .cdx independiente abierto en el orden
en que se crearon.

cNombreArchivondiceIDX
Especifica un archivo .idx que se utiliza para buscar la clave de ndice.

cNombreEtiqueta
Especifica una etiqueta de un archivo .cdx que se utiliza para buscar la clave de ndice. El nombre de
etiqueta puede proceder de un archivo .cdx estructural o de cualquier archivo .cdx independiente abierto.

Nota El archivo .idx tiene preferencia si existen nombres duplicados de etiquetas y archivos .idx.

Comentarios
Solamente puede utilizar SEEK( ) con una tabla que tenga un conjunto de orden de ndice, y solamente
puede buscar una clave de ndice. La coincidencia debe ser exacta a menos que SET EXACT est ajustado
como OFF.
Si se encuentra una coincidencia, SEEK( ) devolver verdadero (.T.) y el puntero de registro se situar en el
registro coincidente. Si no se encuentra ninguna coincidencia, SEEK( ) devolver falso (.F.) y el puntero de
registro se desplazar hasta el final del archivo. Ejecutar SEEK( ) equivale a ejecutar SEEK y FOUND( ) en
sucesin.
Si omite los argumentos nNmerondice, NombreArchivondiceIDX y cNombreEtiqueta, SEEK( ) utiliza el
ndice o la etiqueta de ndice de control principal para buscar la clave de ndice.




Manual de Genlis
221
5.5.173. SELECT - SQL (Comando)

Recupera datos de una o ms tablas.

Sintaxis
SELECT [ALL | DISTINCT] [TOP nExpresin [PERCENT]]
[Alias.] Elemento_Seleccin [AS Nombre_Columna]
[, [Alias.] Elemento_Seleccin [AS Nombre_Columna] ...]
FROM [FORCE]
[NombreBaseDatos!]Tabla [[AS] Local_Alias]
[[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN
NombreBaseDatos!]Tabla [[AS] Local_Alias]
[ON CondicinCombinacin ]
[[INTO Destino]
| [TO FILE NombreArchivo [ADDITIVE] | TO PRINTER [PROMPT]
| TO SCREEN]]
[PREFERENCE NombrePreferencia]
[NOCONSOLE]
[PLAIN]
[NOWAIT]
[WHERE CondicinCombinacin [AND CondicinCombinacin ...]
[AND | OR CondicinFiltro [AND | OR CondicinFiltro ...]]]
[GROUP BY ColumnaGrupo [, ColumnaGrupo ...]]
[HAVING CondicinFiltro]
[UNION [ALL] SELECTCommand]
[ORDER BY Elemento_Orden [ASC | DESC] [, Elemento_Orden [ASC | DESC] ...]]

Argumentos
SELECT
Especifica los campos, constantes y expresiones que se mostrarn en el resultado de la consulta.

ALL
De forma predeterminada, se muestran todas la filas del resultado de la consulta.

DISTINCT
Excluye duplicados de cualquier fila del resultado de la consulta.
Nota Puede utilizar DISTINCT nicamente una vez por clusula SELECT.

TOP nExpresin [PERCENT]
Especifica que el resultado de la consulta contenga un nmero determinado de filas o un porcentaje de filas
en el resultado de la consulta. Es necesario incluir una clusula ORDER BY si incluye la clusula TOP. La
clusula ORDER BY especifica las columnas en las que la clusula TOP determinar el nmero de filas que
se va a incluir en el resultado de la consulta.


Manual de Genlis
222
Puede especificar desde 1 a 32,767 filas. Las filas de valores idnticos para las columnas especificadas en
la clusula ORDER BY se incluyen en el resultado de la consulta. A partir de entonces, si especifica 10 para
nExpr, el resultado de la consulta podr obtener ms de 10 filas si hay ms de 10 filas con valores idnticos
para las columnas especificadas en la clusula ORDER BY.
Si se incluye la palabra clave PERCENT, se redondear al nmero entero ms alto el nmero de columnas
devuelto en el resultado. Los valores permitidos para nExpr cuando se incluye la palabra clave PERCENT
son 0.01 a 99.99.

Alias.
Califica nombres de elementos coincidentes. Cada elemento que especifique con Elemento_Seleccin
genera una columna de los resultados de la consulta. Si dos o ms elementos tienen el mismo nombre,
incluya el alias de la tabla y un punto antes del nombre del elemento para impedir la duplicacin de las
columnas.

Elemento_Seleccin especifica un elemento a incluir en el resultado de la consulta. Un elemento puede ser
uno de los siguientes:
El nombre de un campo de una tabla de la clusula FROM.
Una constante especificando que el mismo valor constante ha de aparecer en cada fila del
resultado de la consulta.
Una expresin que puede ser el nombre de una funcin definida por el usuario (FDU).

AS Nombre_Columna
Especifica el ttulo de una columna en el resultado de la consulta. Esta opcin resulta muy til cuando
Elemento_Seleccin es una expresin o contiene una funcin de campo y desea dar un nombre significativo
a la columna. Nombre_Columna puede ser una expresin pero no puede contener caracteres (por ejemplo,
espacios) que no estn permitidos para nombres de campos de tablas.

FROM
Enumera las tablas que contienen los datos que ha obtenido la consulta. Si no hay ninguna tabla abierta,
Genlis mostrar el cuadro de dilogo Abrir para permitirle especificar la ubicacin del archivo. Una vez
abierta, la tabla permanecer abierta cuando la consulta se haya terminado.
FORCE especifica que las tablas se combinarn en el orden de aparicin en la clusula FROM. Si se omite
FORCE, Genlis intentar optimizar la consulta. Sin embargo, es posible que la consulta se ejecute ms
rpido si se incluye la palabra clave FORCE para desactivar la optimizacin de consultas de Genlis.

NombreBaseDatos!
Especifica el nombre de una base de datos inactiva que contiene la tabla. Es necesario incluir el nombre de
la base de datos que contiene la tabla en caso de que no sea la base de datos activa. Incluya el delimitador
de signo de exclamacin (!) despus del nombre de la base de datos y antes del nombre de la tabla.

Alias_Local
Especifica un nombre temporal para la tabla indicada en Tabla. Si especifica un alias local, debe utilizar el
alias local en lugar de la tabla a travs de todo el SELECT.



Manual de Genlis
223
INNER JOIN especifica que el resultado de la consulta contenga slo filas para una tabla con la que
coincidan una o varias filas en otra tabla.

LEFT [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas de la tabla a la
izquierda de la palabra clave JOIN y slo las filas que concuerden procedentes de la tabla a la derecha de la
palabra clave JOIN. La palabra clave OUTER es opcional; se puede incluir para resaltar que se ha creado
una combinacin externa.

RIGHT [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas desde la tabla hasta
la derecha de la palabra clave JOIN y slo las filas que concuerden desde la tabla hasta la izquierda de la
palabra clave JOIN. La palabra clave OUTER es opcional; puede incluirse para resaltar la creacin de una
combinacin externa.

FULL [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas, concuerden o no, de
ambas tablas. La palabra clave OUTER es opcional; se puede incluir para resaltar que se ha creado una
combinacin externa.

ON CondicinCombinacin especifica las condiciones segn las cuales se combinan las tablas.

INTO Destino
Determina donde se almacenan los resultados de la consulta. Si incluye una clusula INTO y una clusula
TO en la misma consulta, la clusula TO se pasar por alto. Si no incluye la clusula INTO, los resultados de
la consulta se mostrarn en la ventana Examinar. Los resultados de la consulta pueden dirigirse tambin a la
impresora o a un archivo mediante la clusula TO.
Destino puede ser uno de los siguientes:
ARRAY NombreMatriz, que almacena los resultados de la consulta en una matriz de variable de
memoria. Si la consulta selecciona 0 registros, la matriz no se crear.
CURSOR NombreCursor [NOFILTER], que almacena los resultados de la consulta en un cursor. Si
especifica el nombre de una tabla abierta, Genlis generar un mensaje de error. Despus de que se
ejecute SELECT, el cursor temporal permanecer abierto y estar activo pero solamente para
lectura. Una vez que cierre este cursor temporal, se borrar. Los cursores pueden existir como un
archivo temporal en la unidad SORTWORK.
Incluya NOFILTER para crear un cursor que se pueda usar en consultas posteriores. En versiones
anteriores de Genlis, era necesario incluir una expresin o una constante adicional como un filtro
para crear un cursor utilizable en consultas posteriores. Por ejemplo, la adicin de un Logical
verdadero como una expresin de filtro creaba una consulta utilizable en consultas posteriores:
SELECT *, .T. FROM customers INTO CURSOR myquery
Si se incluye NOFILTER es posible que disminuya el rendimiento de la consulta, puesto que se
crear una consulta temporal en el disco. Cuando se cierre el cursor se eliminar del disco la
consulta temporal.
DBF | TABLE NombreTabla
[DATABASE NombreBaseDatos [NAME NombreLargoTabla]] que almacena el resultado de la
consulta en una tabla. Si especifica una tabla que ya est abierta y SET SAFETY est en OFF,


Manual de Genlis
224
Genlis sobrescribir la tabla sin previo aviso. Si no ha especificado ninguna extensin, Genlis dar
una extensin .DBF a la tabla. La tabla permanecer abierta y activa despus de ejecutar SELECT.
Incluya DATABASE NombreBaseDatos para especificar una base de datos a la que se agregar la
tabla. Incluya NAME NombreLargoTabla para especificar un nombre largo para la tabla. Los
nombres largos pueden contener un mximo de 128 caracteres y pueden utilizarse en lugar de
nombres cortos en la base de datos.

TO FILE NombreArchivo
Si incluye una clusula TO pero no una clusula INTO, podr dirigir el resultado de la consulta a un archivo
de texto ASCII llamado NombreArchivo, o a la impresora adems de al escritorio o la ventana principal de
Genlis.

ADDITIVE anexa los resultados de la consulta al contenido existente del archivo de texto especificado en TO
FILE NombreArchivo.

TO PRINTER [PROMPT] dirige los resultados de la consulta a una impresora. Utilice la clusula PROMPT
opcional para que aparezca en pantalla un cuadro de dilogo antes de que empiece la impresin. En este
cuadro de dilogo podr modificar la configuracin de la impresora. Los valores de la impresora
modificables dependen del controlador de impresora instalado en este momento. Site la palabra clave
PROMPT inmediatamente despus de TO PRINTER.

TO SCREEN dirige los resultados de la consulta a la ventana principal de Genlis o a una ventana definida por
el usuario que est activa.

PREFERENCE NombrePreferencia
Si el resultado de una consulta se enva a una ventana Examinar, podr incluir PREFERENCE para guardar
los atributos y opciones de la ventana Examinar para utilizarlos despus. PREFERENCE guarda los atributos
de la ventana Examinar por tiempo indefinido en el archivo de recursos FOXUSER. Las preferencias pueden
recuperarse en cualquier momento.
Ejecutando SELECT con un NombrePreferencia de PREFERENCE, la primera vez se crea la preferencia.
Ejecutando posteriormente SELECT con el mismo nombre de preferencia, se restaurar la ventana Examinar
con el mismo estado de preferencia. Cuando se cierra la ventana Examinar, se actualiza la preferencia.
Si sale de una ventana Examinar presionando CTRL+Q+W, no se guardarn los cambios de la ventana
Examinar en el archivo de recurso.

NOCONSOLE
Impide que el resultado de la consulta se enve a un archivo, a la impresora o a la ventana principal de
Genlis.

PLAIN
Impide que aparezcan las cabeceras de las columnas al mostrar los resultados de la consulta. PLAIN puede
utilizarse tanto si est presente una clusula TO como si no. Si se incluye una clusula TO, se pasar por
alto PLAIN.



Manual de Genlis
225
NOWAIT
Contina la ejecucin del programa despus de abrir la ventana Examinar y de dirigir a ella los resultados de
la consulta. El programa no esperar a que la ventana Examinar se cierre, sino que continuar con la
ejecucin de la lnea de programa inmediatamente siguiente a la instruccin SELECT.
Cuando se incluye TO SCREEN para dirigir los resultados hacia la ventana principal de Genlis o una ventana
definida por el usuario, los resultados se detiene cuando la ventana principal de Genlis se llena con
resultados de la consulta. Presione una tecla para ver el siguiente conjunto de resultados de la consulta. Si
se incluye NOWAIT, los resultados de la consulta se desplazarn fuera del escritorio, la ventana principal de
Genlis o una ventana definida por el usuario sin esperar a que se presione una tecla. NOWAIT se pasa por
alto si se incluye con la clusula INTO.

WHERE
Indica a Genlis que incluya nicamente ciertos registros en el resultado de la consulta. WHERE es necesario
para recuperar datos de varias tablas.

CondicinCombinacin
Especifica los campos que vinculan las tablas de la clusula FROM. Si incluye ms de una tabla en una
consulta, deber especificar una condicin de combinacin para cada tabla despus de la primera.
Las condiciones de combinacin mltiple deben conectarse mediante el operador AND. Cada condicin de
combinacin tiene la forma siguiente:
NombreCampo1 Comparacin NombreCampo2
NombreCampo1 es el nombre de un campo de una tabla, NombreCampo2 es el nombre de un campo de
otra tabla y Comparacin es uno de los operadores siguientes:
Operador Comparacin
= Igual
== Exactamente igual
LIKE SQL LIKE
<>, !=, # Distinto de
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que

Cuando utiliza el operador = con cadenas, acta de forma distinta dependiendo del ajuste de SET ANSI.
Cuando SET ANSI est OFF, Genlis trata las comparaciones de cadenas en la forma habitual en Xbase.
Cuando SET ANSI est a ON, Genlis sigue las normas ANSI para comparaciones de cadenas. Vea SET
ANSI y SET EXACT para obtener informacin adicional sobre la forma en que Genlis realiza las
comparaciones de cadenas.
La clusula WHERE acepta el operador ESCAPE para la CondicinCombinacin, lo que le permite realizar
consultas significativas sobre datos que contengan caracteres comodn _ y % de SELECT - SQL.
La clusula ESCAPE le permite especificar que se traten los caracteres comodn de SELECT - SQL como si
fueran caracteres literales. En la clusula ESCAPE se especifica un carcter, el cual, cuando se sita
inmediatamente antes del carcter comodn, indica que se tratar al carcter comodn como a un carcter
literal.


Manual de Genlis
226

CondicinFiltro
Especifica los criterios que deben cumplir los registros para que se incluyan en el resultado de la consulta.
Una consulta puede incluir tantas condiciones de filtro como se deseen, conectadas con el operador AND y
OR. Tambin puede utilizar el operador NOT para invertir el valor de una expresin lgica o utilizar EMPTY( )
para comprobar si un campo est vaco.
CondicinFiltro puede presentar una de estas formas:

Ejemplo 1
En el Ejemplo 1 se muestra la CondicinFiltro en el formulario de NombreCampo1 Comparacin
NombreCampo2
customer.cust_id = orders.cust_id

Ejemplo 2
En el Ejemplo 2 se muestra CondicinFiltro en el formulario de NombreCampo Comparacin Expresin
payments.amount >= 1000

Ejemplo 3
En el Ejemplo 3 se muestra CondicinFiltro en el formulario de NombreCampo Comparacin ALL
(Subconsulta)
Cuando la condicin de filtro incluye ALL, el campo debe cumplir la condicin de comparacin para todos
los valores generados por la subconsulta antes de que se incluya el registro en el resultado de la consulta.
company < ALL ;
(SELECT company FROM customer WHERE country = "Reino Unido")

Ejemplo 4
En el Ejemplo 4 se muestra CondicinFiltro en el formulario de NombreCampo Comparacin ANY | SOME
(Subconsulta)
Cuando la condicin de filtro incluye ANY o SOME, el campo debe cumplir la condicin de comparacin en
al menos uno de los valores generados por la subconsulta.
company < ANY ;
(SELECT company FROM customer WHERE country = "Reino Unido")

Ejemplo 5
En el Ejemplo 5 se muestra CondicinFiltro en el formulario de NombreCampo [NOT] BETWEEN
Inicio_Rango AND Fin_Rango
Este ejemplo comprueba si los valores del campo estn dentro de un intervalo de valores especificado.
customer.postalcode BETWEEN 90000 AND 99999

Ejemplo 6
En el Ejemplo 6 se muestra CondicinFiltro en el formulario de [NOT] EXISTS (Subconsulta)
Este ejemplo comprueba si al menos una lnea cumple los criterios de la subconsulta. Cuando la condicin
de filtro incluye EXISTS, la condicin de filtro se evala como verdadera (.T.) a no ser que la subconsulta sea
un conjunto vaco.


Manual de Genlis
227
EXISTS ;
(SELECT * FROM orders WHERE customer.postalcode = orders.postalcode)

Ejemplo 7
En el Ejemplo 7 se muestra CondicinFiltro en el formulario de NombreCampo [NOT] IN
Conjunto_Configuracin
Cuando una condicin de filtro incluye IN, el campo debe contener uno de los valores antes de que el
registro se incluya en los resultados de la consulta.
customer.postalcode NOT IN ("98052","98072","98034")

Ejemplo 8
En el Ejemplo 8 se muestra CondicinFiltro en el formulario de NombreCampo [NOT] IN (Subconsulta)
Aqu, el campo debe contener uno de los valores devueltos por la subconsulta antes de que su registro se
incluya en los resultados de la consulta.
customer.cust_id IN ;
(SELECT orders.cust_id FROM orders WHERE orders.city="Seattle")

Ejemplo 9
En el Ejemplo 9 se muestra CondicinFiltro en el formulario de NombreCampo [NOT] LIKE cExpresin
customer.country NOT LIKE "Reino Unido"
Esta condicin de filtro busca cada uno de los campos que coinciden con cExpresin.
Puede utilizar el signo de porcentaje (%) y subrayado ( _ ) como parte de cExpresin. El signo de porcentaje
representa a cualquier secuencia de caracteres desconocidos en la cadena. El subrayado representa un
solo carcter desconocido en la cadena.

GROUP BY ColumnaGrupo [, ColumnaGrupo ...]
Agrupa las filas de la consulta basndose en los valores de una o ms columnas. ColumnaGrupo puede ser
el nombre de un campo normal de una tabla, o un campo que incluya una funcin de campo SQL, o una
expresin numrica indicando la posicin de la columna en la tabla resultado (la columna ms a la izquierda
tiene el nmero 1).
HAVING CondicinFiltro
Especifica una condicin de filtro que los grupos deben satisfacer para quedar incluidos en el resultado de la
consulta. HAVING debe utilizarse con GROUP BY. Puede incluir tantas condiciones de filtro como se
deseen, conectadas con el operador AND u OR. Tambin puede utilizar NOT para invertir el valor de una
expresin lgica.

CondicinFiltro no puede contener una subconsulta.
Una clusula HAVING sin una clusula GROUP BY acta como una clusula WHERE. Puede utilizar alias
locales y funciones de campo en la clusula HAVING. Utilice una clusula WHERE para acelerar el
rendimiento si su clusula HAVING no contiene funciones de campo. No olvide que la clusula HAVING
debera de aparecer antes de una clusula INTO porque, de lo contrario, se producir un error de sintaxis.

[UNION [ALL] ComandoSELECT]


Manual de Genlis
228
Combina el resultado final de una SELECT con el resultado final de otra SELECT. De forma predeterminada,
UNION comprueba el resultado combinado y elimina las filas duplicadas. Puede utilizar parntesis para
combinar mltiples clusulas UNION.
Utilice la palabra clave opcional ALL para impedir que UNION elimine filas duplicadas de los resultados
combinados.
Las clusulas UNION siguen las reglas siguientes:
No puede utilizar UNION para combinar subconsultas.
Los resultados de ambos SELECT deben tener el mismo nmero de columnas.
Cada columna de los resultados de la consulta de un SELECT debe tener el mismo tipo de dato y
anchura que su columna correspondiente en el otro SELECT.
nicamente el SELECT final puede tener una clusula ORDER BY, que debe referirse a las
columnas de los resultados por su nmero. Si se incluye otra clusula ORDER BY, afectar al
resultado completo.

ORDER BY Elemento_Orden
Ordena el resultado de la consulta basndose en los datos de una o varias columnas. Cada
Elemento_Orden debe corresponder a una columna del resultado de la consulta, y puede ser uno de los
siguientes:
Un campo de una tabla FROM que tambin es un elemento de seleccin en la clusula principal
SELECT (no en una subconsulta).
Una expresin numrica que indica la ubicacin de la columna en la tabla resultante. (La columna
de la izquierda es la nmero 1.)

ASC especifica un orden ascendente para los resultados de la consulta, de acuerdo con el elemento o los
elementos de orden, y es el valor predeterminado para ORDER BY.

DESC especifica un orden descendente para los resultados de la consulta.
Los resultados de la consulta aparecern desordenados si no especifica un orden con ORDER BY.

Comentarios
SELECT es un comando SQL que est incorporado en Genlis como cualquier otro comando de Genlis.
Cuando utiliza SELECT para componer una consulta, Genlis interpreta la consulta y recupera los datos
especificados de las tablas. Puede crear una consulta SELECT:
En la ventana Comandos
En un programa Genlis (como cualquier otro comando de Genlis)
El Diseador de consultas

Cuando ejecuta SET TALK ON y ejecuta SELECT, Genlis muestra la duracin de la consulta y el nmero de
registros del resultado. _TALLY contiene el nmero de registros del resultado de la consulta.
SELECT no respeta la condicin de filtro actual especificada con SET FILTER.
Una subconsulta, a la que se hace referencia en los argumentos siguientes, es un comando SELECT dentro
de otro SELECT y debe incluirse entre parntesis. Puede tener mltiples subconsultas al mismo nivel (no
anidadas) en la clusula WHERE (consulte esta seccin de los argumentos). Las subconsultas pueden
contener mltiples condiciones de combinacin.


Manual de Genlis
229
Cuando se obtiene el resultado de una consulta, las columnas se denominarn segn las siguientes reglas:
Si un elemento seleccionado es un campo con un nombre nico, el nombre de la columna de
resultado es el nombre del campo.
Si hay ms de un elemento seleccionado con el mismo nombre, se anexarn un signo de
subrayado y una letra al nombre de la columna. Por ejemplo, si una tabla llamada Cliente tiene un
campo llamado CALLE, y una tabla llamada Empleados tambin tiene un campo llamado CALLE,
las columnas de resultado se llamarn Extensin_A y Extensin_B (CALLE _A y CALLE _B). En el
caso de un elemento seleccionado con un nombre de 10 caracteres, se truncar el nombre para
anexar el smbolo de subrayado y la letra. Por ejemplo, DEPARTMENT se convertira en
DEPARTME_A.
Si un elemento seleccionado es una expresin, su columna de resultado se llamar EXP_A.
Cualquier otra expresin recibir el nombre de EXP_B, EXP_C, y as sucesivamente.
Si un elemento seleccionado contiene una funcin de campo como, por ejemplo, COUNT( ), la
columna de resultado se llamar CNT_A. Si otro elemento seleccionado contiene SUM( ), su
columna de resultado se llamar SUM_B.
Funciones definidas por el usuario con SELECT Aunque la utilizacin de funciones definidas por el
usuario en la clusula SELECT ofrece unas ventajas evidentes, tambin debera tener en cuenta las
siguientes limitaciones:
Es posible que la velocidad de realizacin de las operaciones con SELECT se vea limitada por la
velocidad a la que se ejecutan las funciones definidas por el usuario. Las manipulaciones de un gran
volumen que impliquen funciones definidas por el usuario se pueden realizar mejor utilizando
funciones API y funciones definidas por el usuario escritas en C o en lenguaje ensamblador.
No se puede prever nada acerca de la entrada/salida de Genlis (E/S) ni del entorno de la tabla en
funciones definidas por el usuario invocadas a partir de SELECT. Generalmente, no se puede saber
qu rea de trabajo se ha seleccionado, ni el nombre de la tabla actual, ni los nombres de los
campos que se estn procesando. El valor de dichas variables depende del lugar especfico, dentro
del proceso de optimizacin, en el que se invoque la funcin definida por el usuario.
En funciones definidas por el usuario invocadas desde SELECT, no es seguro cambiar la E/S de
Genlis ni el entorno de la tabla. Por norma general, los resultados son impredecibles.
La nica forma segura de pasar valores a funciones definidas por el usuario invocadas desde
SELECT es mediante la lista de argumentos pasada a la funcin cuando es invocada.
Si prueba y descubre una manipulacin tericamente prohibida que funciona correctamente en una
versin determinada de FoxPro, eso no significa que tambin funcione en versiones posteriores.
Salvando dichas limitaciones, las funciones definidas por el usuario son aceptables en la clusula
SELECT. Sin embargo, recuerde que la utilizacin de SELECT puede ralentizar el rendimiento.
Las siguientes funciones de campo estn disponibles para ser utilizadas con un elemento
seleccionado que sea un campo o una expresin que implique a un campo:
AVG(Elemento_Seleccin), que realiza una media de una columna de datos numricos.
COUNT(Elemento_Seleccin), que cuenta el nmero de elementos seleccionados en una columna.
COUNT(*) cuenta el nmero de filas en el resultado de la consulta.
MIN(Elemento_Seleccin) determina el menor valor de Elemento_Seleccin en una columna.
MAX(Elemento_Seleccin) determina el mayor valor de Elemento_Seleccin en una columna.
SUM(Elemento_Seleccin) que proporciona el total de la suma de una columna de datos numricos.



Manual de Genlis
230
No se pueden probar las funciones de campo.

Combinaciones Genlis acepta sintaxis de combinacin de 1992 SQL ANSI, lo que le permite crear consultas
que vinculen las filas en dos o ms tablas mediante la comparacin de los valores de campos especificados.
Por ejemplo, una combinacin interna selecciona filas procedentes de dos tablas slo cuando los valores de
los campos combinados son iguales. Genlis admite combinaciones anidadas.
Dado que SQL se basa en la teora de conjuntos matemtica, se puede representar a cada tabla con un
crculo. La clusula ON que especifica las condiciones de la combinacin determina el punto de
interseccin, el cual representa el conjunto de filas que coinciden. En el caso de una combinacin interna, la
interseccin tendr lugar en el interior o en una parte "interna" de los dos crculos. Una combinacin externa
incluye tanto las filas coincidentes que se han encontrado en la seccin de interseccin interna de las tablas,
como las filas de la parte externa del crculo a la izquierda, o a la derecha, de la interseccin.

Importante Tenga presente la siguiente informacin a la hora de crear condiciones de combinacin:
Si incluye dos tablas en una consulta y no especifica una condicin de combinacin, cada registro
de la primera tabla se combinar con cada registro de la segunda tabla hasta que surtan efecto las
condiciones del filtro. Una consulta tal puede producir unos resultados interminables.
Sea prudente al utilizar, en condiciones de combinacin, funciones tales como DELETED( ), EOF( ),
FOUND( ), RECCOUNT( ), y RECNO( ), que aceptan un rea de trabajo o un alias opcional. La
inclusin de un alias o de un rea de trabajo en dichas funciones puede producir resultados
inesperados. SELECT no utiliza sus reas de trabajo; realiza lo equivalente a USE ... AGAIN. Las
consultas de una nica tabla que utilizan estas funciones sin un rea de trabajo o un alias opcional,
tendrn resultados correctos. De todas formas, las consultas de varias tablas que utilicen dichas
funciones (incluso sin un rea de trabajo o un alias opcional) pueden tener resultados inesperados.
Sea prudente al combinar tablas que contengan campos vacos porque Genlis concuerda campos
vacos. Por ejemplo, si combina CUSTOMER.ZIP e INVOICE.ZIP, y CUSTOMER contiene 100
cdigos postales vacos e INVOICE contiene 400 cdigos postales vacos, el resultado de la
consulta contendr 40.000 registros ms, como resultado de los campos vacos. Use la funcin
EMPTY( ) para eliminar los registros vacos del resultado de la consulta.


5.5.174. SELECT (Comando)

Activa el rea de trabajo especificada.

Sintaxis
SELECT nreaTrabajo | cAliasTabla

Argumentos
nreaTrabajo
Especifica el rea de trabajo que se va a activar. Si nreaTrabajo es 0, se activar el rea de trabajo no
utilizada cuyo nmero sea inferior.


Manual de Genlis
231

cAliasTabla
Especifica un rea de trabajo que contiene una tabla abierta para activar. cAliasTabla es el alias de la tabla
abierta. Tambin puede incluir una letra de la A a la J para que cAliasTabla active una de las diez primeras
reas de trabajo.

Comentarios
De forma predeterminada, el rea de trabajo nmero 1 est activa cuando se inicia Genlis.

Nota Los campos de las tablas de cualquier rea de trabajo pueden incluirse en comandos y funciones de
Genlis. Utilice los formatos siguientes para acceder a los campos de una tabla abierta en un rea de trabajo
distinta de la actual: alias.campo o alias -> campo.


5.5.175. SELECT( ) (Funcin)

Devuelve el nmero del rea de trabajo actual o del rea de trabajo no utilizada cuyo nmero sea mayor.

Sintaxis
SELECT([ 0 | 1 | cAliasTabla ])

Tipos devueltos
Numeric

Argumentos
0
Especifica que SELECT( ) devolver el nmero del rea de trabajo actual.

1
Especifica que SELECT( ) devolver el nmero del rea de trabajo no utilizada cuyo nmero sea mayor.

cAliasTabla
Especifica el alias de la tabla cuya rea de trabajo devuelve SELECT( ).

Comentarios
SELECT( ) devuelve el nmero del rea de trabajo actual si SET COMPATIBLE est a OFF. Si SET
COMPATIBLE est a ON, SELECT( ) devolver el nmero del rea de trabajo no utilizada cuyo nmero sea
mayor.
Un rea de trabajo puede seleccionarse (activarse) con SELECT.




Manual de Genlis
232
5.5.176. SIGN( ) (Funcin)

Devuelve el valor numrico 1, 1 0 si la expresin numrica especificada da como resultado un valor
positivo, negativo o 0, respectivamente.

Sintaxis
SIGN(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica la expresin numrica que evala SIGN( ). SIGN( ) devuelve 1 si nExpresin da como resultado un
nmero positivo, 1 si nExpresin da como resultado un nmero negativo y 0 si nExpresin da como
resultado 0.


5.5.177. SIN( ) (Funcin)

Devuelve el seno de un ngulo.

Sintaxis
SIN(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica el ngulo cuyo seno devuelve SIN( ). nExpresin puede asumir cualquier valor y el valor devuelto
por SIN( ) vara entre 1 y 1.

Nota nExpresin se da en radianes. Utilice DTOR( ) para convertir un ngulo de grados a radianes. El
nmero de lugares decimales mostrados por SIN( ) puede especificarse con SET DECIMALS.





Manual de Genlis
233
5.5.178. SKIP (Comando)

Mueve el puntero de registro hacia adelante o hacia atrs en una tabla.

Sintaxis
SKIP
[nRegistros]
[IN nreaTrabajo | cAliasTabla]

Argumentos
nRegistros
Especifica el nmero de registros que hay que mover el puntero.
Si ejecuta SKIP sin nRegistros, el puntero avanzar al siguiente registro. El puntero de registro se mueve
hacia el final del archivo nRegistros si nRegistros tiene un valor positivo. El puntero de registro se mover
hacia el principio del archivo nRegistros si nRegistros tiene un valor negativo.
Si el puntero de registro est situado en el ltimo registro de una tabla y se ejecuta SKIP sin argumentos,
RECNO( ) devolver un valor superior en uno al nmero de registros de la tabla y EOF( ) devolver verdadero
(.T.). Si el puntero de registro est colocado en el primer registro de una tabla y se ejecuta SKIP -1, RECNO(
) devolver 1 y EOF( ) devolver (.T.).

IN nreaTrabajo | cAliasTabla
Mueve el puntero de registro en una tabla de un rea de trabajo especfica. nreaTrabajo especifica el
nmero del rea de trabajo y cAliasTabla especifica el alias de una tabla o de un rea de trabajo.

Comentarios
Si la tabla tiene una etiqueta de ndice de control principal o un archivo de ndice, SKIP mueve el puntero de
registro al registro determinado por la secuencia de ndice.


5.5.179. SORT (Comando)

Ordena los registros de la tabla seleccionada actualmente y enva los registros ordenados a una tabla nueva.

Sintaxis
SORT TO NombreTabla
ON NombreCampo1 [/A | /D] [/C]
[, NombreCampo2 [/A | /D] [/C] ...]
[ASCENDING | DESCENDING]
[Alcance] [FOR lExpresin1] [WHILE lExpresin2]
[FIELDS ListaNombresCampo
| FIELDS LIKE Estructura


Manual de Genlis
234
| FIELDS EXCEPT Estructura]
[NOOPTIMIZE]

Argumentos
NombreTabla
Especifica el nombre de la nueva tabla que contiene los registros ordenados. Genlis supone una extensin
de archivo .dbf para las tablas. La extensin .dbf se asigna automticamente si el nombre de archivo
incluido no tiene ninguna extensin.

ON NombreCampo1
Especifica el campo de la tabla seleccionada actualmente en el que se basa el orden. El contenido y el tipo
de dato del campo determinar el orden de los registros de la tabla. De forma predeterminada, la
ordenacin se har en sentido ascendente. No podr ordenar por campos de tipo Memo o General.
El ejemplo siguiente ordena una tabla por el campo cust_id. Se abre customer y se ordena en una tabla
nueva llamada temp. Los registros de temp se ordenan por el campo cust_id.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Abre la tabla Customer.
CLEAR
LIST FIELDS company, cust_id NEXT 3
SORT TO temp ON cust_id
USE temp
LIST FIELDS company, cust_id NEXT 3
WAIT WINDOW 'Ahora est ordenado por CUST_ID' NOWAIT
Puede incluir nombres de campo adicionales(NombreCampo2, NombreCampo3) para ordenar aun ms la
tabla. El primer campo NombreCampo1 es el campo de ordenacin principal, el segundo campo
NombreCampo2 es el campo de ordenacin secundario, etc.
[/A | /D] [/C]
Para cada uno de los campos que incluya en la ordenacin puede especificar un sentido ascendente o
descendente. La opcin /A especifica orden ascendente. La opcin /D especifica orden descendente. /A o
/D pueden incluirse con cualquier tipo de campo.
De forma predeterminada, el sentido de ordenacin de los campos alfanumricos distingue entre
maysculas y minsculas. Si incluye la opcin /C despus del nombre de un campo alfanumrico, se
ignorar la diferencia. Puede combinar la opcin /C con la opcin /(A o /D. Por ejemplo, /AC o /DC.
En el ejemplo siguiente se crea una tabla nueva denominada clientes. La tabla orders se ordena segn el
campo order_date en orden ascendente y segn el campo freight en orden descendente
USE orders
SORT TO clientes ON order_date/A,freight/D

ASCENDING
Especifica un sentido de ordenacin para todos los campos que no vayan seguidos de la opcin /D.

DESCENDING
Especifica un sentido de orden descendente para todos los campos que no vayan seguidos de la opcin /A.


Manual de Genlis
235
Si no incluye ASCENDING o DESCENDING, asumir el sentido de ordenacin predeterminado, que es
ascendente.

Alcance
Especifica un intervalo de registros que desea ordenar. Las clusulas de alcance son: ALL, NEXT
nRegistros, RECORD nNmeroRegistro y REST.
El alcance predeterminado de SORT es ALL (todos los registros).

FOR lExpresin1
Especifica que solamente se incluyen en la ordenacin los registros de la tabla actual para los cuales la
condicin lgica lExpresin1 da como resultado verdadero (.T.). Incluir FOR le permite ordenar registros
condicionalmente al filtrar los registros no deseados.
Si lExpresin1 es una opcin optimizable, Rushmore optimizar un comando SORT ... FOR. Para obtener un
mejor rendimiento, utilice una opcin optimizable en la clusula FOR.

WHILE lExpresin2
Especifica una condicin segn la cual los registros de la tabla actual se incluirn en la ordenacin hasta que
la expresin lgica lExpresin2 los califique de verdaderos (.T.).

FIELDS ListaNombresCampo
Especifica los campos procedentes de la tabla original que se van a incluir en la nueva tabla creada por
SORT. Si no se incluye la clusula FIELDS, se incluirn todos los campos de la tabla en la nueva tabla.

FIELDS LIKE Estructura
Especifica que los campos de la tabla original que coincidan con la estructura de campo Estructura se
incluyan en la nueva tabla creada por SORT.

FIELDS EXCEPT Estructura
Especifica que todos los campos excepto los que coincidan con la estructura de campo Estructura se
incluyen en la nueva tabla creada por SORT.
La estructura de campo Estructura admite caracteres comodn. Por ejemplo, para especificar que se
incluyen en la nueva tabla todos los campos que comienzan por las letras A y P, utilice la instruccin
siguiente:
SORT TO mitabla ON micampo FIELDS LIKE A*,P*
La clusula LIKE se puede combinar con la clusula EXCEPT:
SORT TO mitabla ON micampo FIELDS LIKE A*,P* EXCEPT PARTNO*

NOOPTIMIZE
Desactiva la optimizacin Rushmore de SORT.

Comentarios
El orden en que aparecern los registros de la nueva tabla viene determinado por uno o ms campos de la
tabla actual.



Manual de Genlis
236
Importante Asegrese de que tiene espacio suficiente en disco para la tabla nueva y para los archivos
temporales de trabajo creados durante la ordenacin. El espacio en disco necesario para realizar una
ordenacin puede ser, como mximo, tres veces el tamao del archivo origen. La cantidad de espacio
disponible en disco puede determinarse con DISKSPACE( ) y SYS(2020). Si agota el espacio del disco
durante una ordenacin, Genlis mostrar un mensaje de error y se eliminarn los archivos temporales.
Los campos de tipo Character que contienen nmeros y espacios puede que no se ordenen en el sentido
que usted espera. Los campos numricos se llenan de derecha a izquierda, con espacios vacos a la
izquierda. Por el contrario, los campos alfanumricos se llenan de izquierda a derecha, con espacios vacos
a la derecha.
Por ejemplo, si dos registros de una tabla contienen un campo alfanumrico con 1724 en un registro y 18
en el otro y la tabla est ordenada por este campo en sentido ascendente, el registro que contiene 1724
aparecer antes que el que contiene 18. Esto se debe a que Genlis lee cada carcter de los campos
alfanumricos de izquierda a derecha y como 17 (en 1724) es menor que 18 (en 18), coloca primero 1724.
Para evitar este problema, rellene los nmeros bajos con ceros por la izquierda (0018) o defina el campo
como numrico.


5.5.180. SOUNDEX( ) (Funcin)

Devuelve la representacin fontica de una expresin de caracteres especificada.

Sintaxis
SOUNDEX(cExpresin)

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres que va a evaluar SOUNDEX( ).

Comentarios
SOUNDEX( ) devuelve una representacin fontica de una expresin de caracteres. Al comparar los
resultados que devuelve SOUNDEX( ) de dos expresiones de caracteres, puede determinar si las dos
expresiones son similares fonticamente, es decir, suenan de forma parecida. Esto puede ser til al buscar
registros duplicados en una tabla.
SOUNDEX( ) no distingue maysculas de minsculas y, generalmente, descarta las vocales.




Manual de Genlis
237
5.5.181. SPACE( ) (Funcin)

Devuelve una cadena de caracteres compuesta de un nmero especificado de espacios.

Sintaxis
SPACE(nEspacios)

Tipos devueltos
Character

Argumentos
nEspacios
Especifica el nmero de espacios que devolver SPACE( ). El valor mximo de nEspacios est limitado
nicamente por la memoria en Genlis.


5.5.182. SQRT( ) (Funcin)

Devuelve la raz cuadrada de la expresin numrica especificada.

Sintaxis
SQRT(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica la expresin numrica que se va a evaluar con SQRT( ). nExpresin no puede ser un nmero
negativo.

Comentarios
El nmero de lugares decimales del valor devuelto por SQRT( ) es la mayor configuracin actual de lugares
decimales y el nmero de lugares decimales contenidos en nExpresin. La configuracin actual de lugares
decimales se especifica con SET DECIMALS.





Manual de Genlis
238
5.5.183. STR( ) (Funcin)

Devuelve el carcter equivalente a una expresin numrica especificada.

Sintaxis
STR(nExpresin [, nLongitud [, nLugaresDecimales]])

Tipos devueltos
Character

Argumentos
nExpresin
Especifica la expresin numrica evaluada por STR( ).

nLongitud
Especifica la longitud de la cadena de caracteres devuelta por STR( ). La longitud incluye un carcter para la
coma decimal y un carcter para cada dgito a la derecha de la coma decimal.
STR( ) llena la cadena de caracteres con espacios al principio si especifica una longitud mayor que el
nmero de dgitos a la izquierda de la coma decimal. STR( ) devuelve una cadena de caracteres, que indica
desbordamiento numrico, si especifica una longitud inferior al nmero de dgitos a la izquierda de la coma
decimal.
Si nExpresin es del tipo Numeric o Float, STR( ) devuelve un valor con notacin cientfica si nLongitud es
menor que el nmero de dgitos de nExpresin. Si nExpresin es un entero, STR( ) devuelve una cadena de
asteriscos, que indica desbordamiento numrico, si nLongitud es menor que el nmero de dgitos de
nExpresin.
Si no se incluye nLongitud, la longitud de la cadena de caracteres cambia de forma predeterminada a 10
caracteres.

nLugaresDecimales
Especifica el nmero de lugares decimales de la cadena de caracteres devuelta por STR( ). Puede incluir
nLongitud para especificar el nmero de lugares decimales.
Si especifica menos lugares decimales de los que estn en nExpresin, el valor de retorno se redondea.
Si no se incluye nLugaresDecimales, el valor predeterminado para lugares decimales es cero de forma
predeterminada.


5.5.184. STRCONV( ) (Funcin)

Convierte las expresiones de caracteres de un byte, de dos bytes, UNICODE y representaciones especficas
de configuraciones regionales.



Manual de Genlis
239
Sintaxis
STRCONV(cExpresin, nValorConversin [, nIdLocal])

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres que STRCONV( ) convierte.

nValorConversin
Especifica el tipo de conversin. En la siguiente tabla figuran los valores de nValorConversin y el tipo de
conversin realizada.
nValorConversin Conversin
1 Convierte los caracteres de un byte de cExpresin en caracteres de dos bytes.
2 Convierte los caracteres de dos bytes de cExpresin en caracteres de un byte.
3 Convierte los caracteres Hiragana de dos bytes de cExpresin en caracteres
Katakana de dos bytes.
4 Convierte los caracteres Katakana de dos bytes de cExpresin en caracteres
Hiragana de dos bytes.
5 Convierte los caracteres de dos bytes en UNICODE (caracteres anchos).
6 Convierte los caracteres UNICODE (anchos) en caracteres de dos bytes.
7 Convierte cExpresin en minsculas especficas de la configuracin regional.
8 Convierte cExpresin en maysculas especficas de la configuracin regional.

nIdLocal
Especifica el Id. local que se utilizar para la conversin. Si nIdLocal no es vlido o no es compatible con el
equipo, se genera el error "Id. local no vlido". Si se omite nIdLocal, se usa de forma predeterminada el Id.
local del sistema.

Comentarios
Esta funcin es til para manipular juegos de caracteres de doble byte para idiomas como el Hiragana y el
Katakana.


5.5.185. STRTRAN( ) (Funcin)

Busca en una expresin de caracteres o en un campo memo las apariciones de una segunda expresin de
caracteres o campo memo y, luego, reemplaza cada aparicin con una tercera expresin de caracteres o
campo memo.

Sintaxis


Manual de Genlis
240
STRTRAN(cBuscado, cBuscar [, cReemplazar]
[, nAparicinInicial] [, nNmeroApariciones])

Tipos devueltos
Character

Argumentos
cBuscado
Especifica la expresin de caracteres en la que hay que buscar. cBuscado puede ser un campo memo.

cBuscar
Especifica la expresin de caracteres que se busca en cBuscado. La bsqueda distingue maysculas y
minsculas. cBuscar puede ser un campo memo.

cReemplazar
Especifica la expresin de caracteres que sustituye cada aparicin de cBuscar en cBuscado. Si se omite
cReemplazar, las apariciones de cBuscar se sustituyen por la cadena vaca.

nAparicinInicial
Especifica qu aparicin de cBuscar es la primera que se sustituir. Por ejemplo, si nAparicinInicial es 4, la
sustitucin comenzar en la cuarta aparicin de cBuscar en cBuscado desde la izquierda; las primeras tres
apariciones de cBuscar permanecern inalteradas. La aparicin donde comienza a reemplazarse es la
primera ocurrencia de cBuscar si se omite nAparicinInicial.

nNmeroApariciones
Especifica el nmero de apariciones de cBuscar que se desea sustituir. Si nNmeroApariciones se omite, se
sustituirn todas las apariciones de cBuscar, a partir de la aparicin especificada en nAparicinInicial.

Comentarios
Tambin puede especificar dnde comienza la sustitucin y cuntas sustituciones se harn. STRTRAN( )
devuelve la cadena de caracteres resultante.


5.5.186. STUFF( ) (Funcin)

Devuelve una cadena de caracteres creada al sustituir un nmero especfico de caracteres de una expresin
de caracteres por otra expresin de caracteres.

Sintaxis
STUFF(cExpresin, nIniciarReemplazar, nCaracteresReemplazados, cReemplazar)

Tipos devueltos


Manual de Genlis
241
Character

Argumentos
cExpresin
Especifica la expresin de caracteres en la que se producir la sustitucin.

nIniciarReemplazar
Especifica la posicin en cExpresin donde comenzar la sustitucin.

nCaracteresReemplazados
Especifica el nmero de caracteres que se reemplazarn. Si nCaracteresReemplazados es 0, la cadena de
sustitucin cReemplazar se insertar en cExpresin.

cReemplazar
Especifica la expresin de caracteres de sustitucin. Si cReemplazar es la cadena nula, el nmero de
caracteres especificado por nCaracteresReemplazados se eliminar de cExpresin.


5.5.187. STUFFC( ) (Funcin)

Devuelve una cadena de caracteres creada a partir de la sustitucin de un nmero determinado de
caracteres, dentro de una expresin de caracteres, por otra expresin de caracteres.

Sintaxis
STUFFC(cExpresin, nIniciarReemplazar, nCaracteresReemplazados, cReemplazar)

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres en la que tendr lugar la sustitucin.

nIniciarReemplazar
Especifica la posicin del carcter en cExpresin a partir de la cual se realizar la sustitucin.

nCaracteresReemplazados
Especifica el nmero de caracteres que se va a sustituir. Si nCaracteresReemplazados es 0, se insertar
toda la cadena de sustitucin cReemplazar en cExpresin.

cReemplazar


Manual de Genlis
242
Especifica la expresin del carcter de sustitucin. Si cReemplazar es la cadena vaca, el nmero de
caracteres especificado mediante nCaracteresReemplazados se eliminarn de cExpresin.


Comentarios
STUFFC( ) se ha diseado para expresiones que contengan caracteres de dos bytes. Si la expresin slo
contiene caracteres de un byte, STUFFC( ) ser equivalente a STUFF( ).
STUFFC( ) devuelve una cadena de caracteres creada mediante la sustitucin de un nmero determinado de
caracteres, dentro de una expresin de caracteres, por otra expresin de caracteres. Las expresiones de
caracteres pueden consistir en cualquier combinacin de caracteres de un byte y de dos bytes.
Esta funcin es til para manipular juegos de caracteres de doble byte para idiomas como el Hiragana y el
Katakana.


5.5.188. SUBSTR( ) (Funcin)

Devuelve un nmero de caracteres especfico de una expresin de caracteres o un campo memo.

Sintaxis
SUBSTR(cExpresin, nPosicinInicial [, nCaracteresDevueltos])

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres o el campo memo desde el cual se devuelve la cadena de caracteres.

PosicinInicial
Especifica la posicin en la expresin de caracteres o en la cExpresin del campo memo desde la que se
devuelve la cadena de caracteres. El primer carcter de cExpresin es la posicin 1.
Si TALK toma el valor SET ON y nPosicinInicial es mayor que el nmero de caracteres de cExpresin,
Genlis generar un mensaje de error. Si TALK toma el valor SET OFF, se devuelve la cadena vaca.

nCaracteresDevueltos
Especifica el nmero de caracteres que se debe extraer de cExpresin. Si se omite nCaracteresDevueltos,
los caracteres se extraern hasta llegar al final de la expresin de caracteres.

Comentarios


Manual de Genlis
243
SUBSTR( ) devuelve una cadena de caracteres de una expresin de tipo Character o de un campo memo, a
partir de la posicin especificada de la expresin de caracteres y hasta el nmero especificado de
caracteres.
Cuando utilice SUBSTR( ) con campos memo en un comando SELECT SQL, incluya la funcin PADR( ) en
SUBSTR( ) de modo que los campos memo vacos o de longitud variable produzcan resultados coherentes
cuando se conviertan a cadenas de caracteres.
SUBSTR( ) no devolver ningn valor para un campo memo cuando se ejecute en la ventana Depuracin.
Para devolver un valor en la ventana Depuracin, incluya el nombre del campo memo en ALLTRIM( ) e
incluya ALLTRIM( ) en SUBSTR( ).


5.5.189. SUBSTRC( ) (Funcin)

Devuelve una cadena de caracteres a partir de una expresin de caracteres o de un campo memo
determinados.

Sintaxis
SUBSTRC(cExpresin, nPosicinInicial [, nCaracteresDevueltos])

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres o el campo memo a partir de los cuales se devuelve la cadena de
caracteres.

nPosicinInicial
Especifica la posicin, dentro de la expresin de caracteres o del campo memo cExpresin, a partir de
donde se devolver la cadena de caracteres. El primer carcter de cExpresin est en la posicin 1.
Si TALK est establecido en ON y nPosicinInicial es mayor que el nmero de caracteres de cExpresin,
Genlis genera un mensaje de error. Si TALK est establecido en OFF, se devolver una cadena vaca.

nCaracteresDevueltos
Especifica el nmero de caracteres que se van a devolver a partir de cExpresin. Si se omite
nCaracteresDevueltos, se devolvern caracteres hasta que se llegue al final de la expresin de caracteres.

Comentarios
SUBSTRC( ) se ha diseado para expresiones que contengan caracteres de dos bytes. Si la expresin
contiene slo caracteres de un byte, SUBSTRC( ) equivaldr a SUBSTR( ).


Manual de Genlis
244
SUBSTRC( ) devuelve una cadena de caracteres a partir de la expresin de caracteres o del campo memo
especificados. La expresin de caracteres o el campo memo pueden contener cualquier combinacin de
caracteres de uno y de dos bytes.
SUBSTRC( ) no devolver un valor para un campo memo si se ejecuta en la ventana Depuracin. Si desea
que se devuelva un valor en la ventana Depuracin, coloque el nombre del campo memo en ALLTRIM( ) y
coloque ALLTRIM( ) en SUBSTRC( ).
Esta funcin es til para manipular juegos de caracteres de doble byte para idiomas como el Hiragana y el
Katakana.


5.5.190. SUM (Comando)

Totaliza los valores de todos los campos numricos especificados de la tabla actual seleccionada.

Sintaxis
SUM [eListaExpresin]
[Alcance] [FOR lExpresin1] [WHILE lExpresin2]
[TO ListaNombresVariablesMemoria | TO ARRAY NombreMatriz]
[NOOPTIMIZE]

Argumentos
eListaExpresin
Especifica uno o varios campos o expresiones de campo que se van a totalizar. Si se omite la lista de
expresiones, se totalizarn todos los campos numricos.

Alcance
Especifica un intervalo de registros que se van a utilizar en el total. Las clusulas de alcance son: ALL, NEXT
nRegistro, RECORD nNmeroRegistro y REST.
El alcance predeterminado de SUM es ALL (todos los registros).

FOR lExpresin1
Especifica que solamente se incluyen en el total los registros para los cuales la condicin lgica lExpresin1
da como resultado verdadero (.T.). Incluir FOR le permite totalizar registros condicionalmente al desechar los
registros no deseados.
Si lExpresin1 es una expresin optimizable, Rushmore optimizar un comando SUM ... FOR. Para obtener
un mejor rendimiento, utilice una expresin optimizable en la clusula FOR. Para conseguir el rendimiento
ptimo, utilice una expresin optimizable en la clusula FOR.

WHILE lExpresin2
Especifica una condicin por la cual los registros de la tabla activa se incluyen en el total siempre y cuando
la expresin lgica lExpresin2 d como resultado verdadero (.T.).



Manual de Genlis
245
TO ListaNombresVariablesMemoria
Almacena cada total en una variable de memoria. Si especifica en ListaNombresVariablesMemoria el
nombre de una variable de memoria que no existe, Genlis la crear automticamente. Separe los nombres
de variables de memoria de la lista con comas.

TO ARRAY NombreMatriz
Almacena los totales en una matriz de variables de memoria. Si la matriz que especifica en SUM no existe,
Genlis la crear automticamente. Si la matriz existe y es demasiado pequea para albergar todos los datos,
se aumentar automticamente el tamao de la matriz para acoger los totales.

NOOPTIMIZE
Desactiva la optimizacin Rushmore de SUM.


5.5.191. TAN( ) (Funcin)

Esta funcin trigonomtrica devuelve la tangente de un ngulo.

Sintaxis
TAN(nExpresin)

Tipos devueltos
Numeric

Argumentos
nExpresin
Especifica el ngulo en radianes para el que TAN( ) devuelve la tangente. Para convertir un ngulo de grados
a radianes, utilice DTOR( ). El nmero de lugares decimales que devolver TAN( ) puede especificarse con
SET DECIMALS.


5.5.192. TIME( ) (Funcin)

Devuelve la hora actual del sistema en formato de 24 horas, en una cadena de 8 caracteres (HH:MM:SS).

Sintaxis
TIME([nExpresin])

Tipos devueltos
Character


Manual de Genlis
246

Argumentos
nExpresin
La hora devuelta incluir centsimas de segundo si se incluye nExpresin. La expresin numrica nExpresin
puede ser cualquier valor. No obstante, la resolucin mxima real es de aproximadamente 1/18 de segundo.
Utilice SECONDS( ) para obtener mayor resolucin.


5.5.193. TOTAL (Comando)

Calcula totales para campos numricos de la tabla seleccionada actualmente.

Sintaxis
TOTAL TO NombreTabla
ON NombreCampo
[FIELDS ListaNombresCampo]
[Alcance]
[FOR lExpresin1]
[WHILE lExpresin2]
[NOOPTIMIZE]

Argumentos
NombreTabla
Especifica el nombre de la tabla que va a contener los totales. Si la tabla especificada no existe, Genlis la
crear. Si la tabla existe y SET SAFETY est establecido en ON, Genlis le preguntar si desea sobrescribir la
tabla existente. Si SET SAFETY est establecido en OFF, no se le preguntar y se sobrescribir la tabla de
resultado.

NombreCampo
Especifica el campo en el que se agrupan los totales. Es necesario que la tabla est ordenada por este
campo, o que un ndice abierto o una etiqueta de ndice tengan este campo como su expresin de clave.

FIELDS ListaNombresCampo
Especifica los campos cuyo total se debe calcular. Separe los nombres de campos de la lista con comas. Si
omite la clusula FIELDS, se calcula el total de todos los campos numricos de forma predeterminada.

Alcance
Especifica un intervalo de registros cuyo total se calcula. Las clusulas de alcance son: ALL, NEXT
nRegistros, RECORD nNmeroRegistro y REST.
El alcance predeterminado de TOTAL es ALL (todos los registros).

FOR lExpresin1


Manual de Genlis
247
Especifica una condicin por la cual solamente se incluyen en el total los registros que satisfacen la
condicin lgica lExpresin1.
Si lExpresin1 es una expresin optimizable, Rushmore optimizar una consulta creada con TOTAL ... FOR.
Para obtener un mejor rendimiento, use una expresin optimizable en la clusula FOR.

WHILE lExpresin2
Especifica una condicin por la cual los registros de la tabla activa se incluyen en los totales siempre y
cuando la expresin lgica lExpresin2 d como resultado verdadero (.T.).

NOOPTIMIZE
Desactiva la optimizacin Rushmore de TOTAL.

Comentarios
Es necesario que la tabla del rea de trabajo seleccionada actualmente est ordenada o indexada. Se
calcula un total separado para cada conjunto de registros que tengan un valor de campo comn o un valor
nico de clave de ndice. Los resultados se sitan en registros de una segunda tabla. En esta segunda tabla
se crea un registro para cada valor de campo comn o para cada valor nico de clave de ndice.
Puede producirse un desbordamiento numrico si los campos numricos de la segunda tabla no son lo
suficientemente amplios para contener los totales. Genlis conservar la parte ms significativa de los totales
cuando se produce un desbordamiento. Cuando un campo es demasiado pequeo para aceptar un total:
Se truncan los decimales y se redondea la parte decimal restante del total.
Si todava no cabe el total, se utiliza notacin cientfica si el campo total contiene siete o ms
dgitos.
Por ltimo, se sustituye el contenido del campo por asteriscos.


5.5.194. TRANSFORM( ) (Funcin)

Devuelve una cadena de caracteres a partir de una expresin en un formato que viene determinado por un
cdigo de formato.

Sintaxis
TRANSFORM(eExpresin, cCdigosFormato)

Tipos devueltos
Character

Argumentos
eExpresin
Especifica la expresin numrica o de caracteres a la que desea dar formato.

cCdigosFormato


Manual de Genlis
248
Especifica uno o ms cdigos PICTURE o FUNCTION que determinan cmo se da formato a la expresin.
En la siguiente tabla se muestran los cdigos de formato disponibles.

Cdigos de formato Descripcin
@C CR se anexa a los valores positivos de moneda o numricos para indicar un crdito.
@D Los valores Date y DateTime se convierten al formato SET DATE actual.
@E Los valores Date y DateTime se convierten al formato de fecha BRITISH.
@R La transformacin utiliza una mscara de formato. Los caracteres de la mscara no se almacenan
en el valor transformado. Utilcelo slo con datos numricos o alfanumricos. La mscara puede incluir los
siguientes caracteres: 9 o #Representa un carcter o un nmero. !Convierte en maysculas las letras
minsculas.
@T Se eliminan los espacios en blanco de los valores de tipo Character.
@X DB se anexan valores numricos o de moneda negativos para indicar un dbito.
@Z Si es 0, valores numricos o de moneda se convierten en espacios.
@( Incluye entre parntesis los valores numricos o de moneda negativos.
@^ Convierte valores numricos o de moneda en valores cientficos.
@0 Convierte valores numricos o de moneda en sus equivalencias hexadecimales. El valor numrico o
de moneda tiene que ser positivo y menor que 4.294.967.296.
@! Convierte los datos de caracteres en maysculas.
@$ Agrega el smbolo de moneda actual especificado mediante SET CURRENCY a los valores de
moneda y numricos. De forma predeterminada, el smbolo se colocar justo antes o justo despus del
valor. De todas formas, tanto el smbolo de moneda y su colocacin (especificados mediante SET
CURRENCY), como el carcter de separacin (especificado mediante SET SEPARATOR) y el carcter
decimal (especificado mediante SET POINT) se pueden modificar.
X Especifica el ancho de los valores de caracteres. Por ejemplo, si cCdigosFormato es 'XX', se
devuelven 2 caracteres.
Y Convierte los valores lgicos verdadero (.T.) y falso (.F.) en Y y en N, respectivamente.
! Convierte los caracteres que estn en minsculas en caracteres en maysculas.
. Especifica la posicin del separador de decimales en los valores numricos y de moneda.
, Separa los dgitos que estn a la izquierda del separador de decimales en los valores de moneda y
numricos.

Si omite cCdigosFormato, Genlis realiza una transformacin predeterminada en eExpressin. La siguiente
tabla describe las transformacin predeterminada para cada tipo de datos que eExpresin puede contener:

Tipo de datos Descripcin de la transformacin
Character. No se realiza ninguna transformacin.
Currency. La transformacin est determinada por los valores especificados en la ficha Regional del cuadro
de dilogo Opciones.
Date. Se realiza una transformacin DTOC( ) en la fecha.
DateTime. Se realiza una transformacin TTOC( ) en la fecha y hora.
Logical. Los valores lgicos verdadero (.T.) y falso (.F.) se transforman en las cadenas de caracteres ".T." y
".F." respectivamente.


Manual de Genlis
249
Numeric (incluye los tipos de datos Double, Float o Integer). Se quitan los ceros a la izquierda de la parte
decimal de un valor numrico. Si el valor numrico es un nmero entero, no se incluye un punto decimal en
el valor transformado (por ejemplo, 4,0 se convierte en 4). Si el valor numrico es menor que 1 pero mayor
que -1, se incluye un cero antes del signo decimal (por ejemplo, ,4 se transforma en 0,4).
General. Devuelve "Gen" si el campo general contiene un objeto; devuelve "gen" si el campo general no
contiene un objeto.
Memo. No se realiza ninguna transformacin.


5.5.195. TRIM( ) (Funcin)

Devuelve la expresin de caracteres especificada despus de eliminar todos los espacios en blanco finales.

Sintaxis
TRIM(cExpresin)

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin de caracteres de la cual TRIM( ) elimina todos los espacios en blanco finales.

Comentarios
TRIM( ) es idntica a RTRIM( ).


5.5.196. TTOC( ) (Funcin)

Devuelve un valor de tipo Character a partir de una expresin DateTime.

Sintaxis
TTOC(tExpresin [, 1 | 2])

Tipos devueltos
Character

Argumentos
tExpresin


Manual de Genlis
250
Especifica una expresin de tipo DateTime a partir de la cual TTOC( ) devuelve un valor de tipo Character.
tExpresin slo contiene una hora, Genlis agregar la fecha predeterminada de 30/12/1899 a tExpresin. Si
tExpresin slo contiene una fecha, Genlis agregar la hora predeterminada de medianoche (12:00:00 a.m.)
a tExpresin.

1
Especifica que TTOC( ) devuelve un cadena de caracteres con un formato adecuado para la creacin de
ndices. La cadena de caracteres tiene un formato aaaa:mm:dd:hh:mm:ss de 14 caracteres que no se ve
afectado por la configuracin actual de SET CENTURY o SET SECONDS.

2
Especifica que TTOC( ) devuelva una cadena Character consistente slo en el periodo de tiempo de la
expresin DateTime. Los valores establecidos para SET SECONDS y para SET DATE especifican si se
incluye la cantidad de segundos en la cadena de caracteres. Tenga en cuenta que, si SET DATE est
establecido en LONG o en SHORT, el formato de la cadena de caracteres se determinar por el formato
establecido para la hora en el Panel de control.


5.5.197. TTOD( ) (Funcin)

Devuelve un valor de tipo Date a partir de una expresin de DateTime.

Sintaxis
TTOD(tExpresin)

Tipos devueltos
Date

Argumentos
tExpresin
Especifica una expresin de fecha y hora a partir de la cual TTOD( ) devuelve un valor de Fecha. tExpresin
debe evaluarse como una fecha y hora vlida. Si tExpresin slo contiene una hora, Genlis agrega la fecha
predeterminada de 30/12/1899 a tExpresin y devuelve esta fecha predeterminada.


5.5.198. TYPE( ) (Funcin)

Evala una expresin de caracteres y devuelve el tipo de datos de su contenido.

Sintaxis


Manual de Genlis
251
TYPE(cExpresin)

Tipos devueltos
Character

Argumentos
cExpresin
Especifica la expresin que se va a evaluar, que puede ser una variable o un campo, un campo de memoria
o cualquier otra expresin. La expresin tiene que pasarse como una cadena de caracteres; escriba entre
comillas los nombres de variables de memoria, campos, etc. Si no escribe la expresin entre comillas, la
funcin TYPE( ) devolver "U" (expresin indefinida).

Comentarios
La tabla siguiente enumera los caracteres que devuelve TYPE( ) y sus tipos de datos correspondientes:

Tipo de datos Carcter devuelto
Character C
Numeric (tambin Float, Double e Integer) N
Currency Y
Date D
DateTime T
Logical L
Memo M
Object O
General G
Screen (creado con SAVE SCREEN) S
Tipo de expresin no definido U


5.5.199. UPPER( ) (Funcin)

Devuelve la expresin de caracteres especificada en maysculas.

Sintaxis
UPPER(cExpresin)

Tipos devueltos
Character

Argumentos
cExpresin


Manual de Genlis
252
Especifica la expresin de caracteres que UPPER( ) convierte a maysculas.

Comentarios
Cada letra minscula (a z) de la expresin de caracteres se convierte en mayscula (A Z) en la cadena
devuelta. Todos los dems caracteres permanecen inalterados.


5.5.200. USED( ) (Funcin)

Determina si hay una tabla abierta en un rea de trabajo especificada.

Sintaxis
USED([nreaTrabajo | cAliasTabla])

Tipos devueltos
Logic

Argumentos
nreaTrabajo | cAliasTabla
Especifica el rea de trabajo o el alias de la tabla. USED( ) devuelve un valor lgico verdadero (.T.) si est
abierta una tabla en el rea de trabajo especificada en nreaTrabajo; de lo contrario, devuelve un valor
lgico falso (.F.). USED( ) devuelve un valor lgico verdadero (.T.) si se est usando un alias con el alias
especificado en cAliasTabla; de lo contrario, devuelve el valor falso (.F.)
Si omite nreaTrabajo y cAliasTabla, USED( ) devuelve un valor lgico verdadero (.T.) si est abierta una
tabla en el rea de trabajo seleccionada actualmente; de lo contrario, devuelve falso (.F.).

Comentarios
USED( ) puede determinar si se est usando un alias o si hay una tabla abierta en un rea de trabajo
especfica.


5.5.201. VAL( ) (Funcin)

Devuelve un valor numrico a partir de una expresin de caracteres compuesta de nmeros.

Sintaxis
VAL(cExpresin)

Tipos devueltos
Numeric


Manual de Genlis
253

Argumentos
cExpresin
Especifica una expresin de caracteres compuesta de hasta 16 nmeros. Si en cExpresin se incluyen ms
de 16 nmeros, se redondear.

Comentarios
VAL( ) devuelve los nmeros de la expresin de caracteres de izquierda a derecha hasta que encuentra un
carcter no numrico (se pasan por alto los espacios en blanco iniciales). VAL( ) devuelve 0 si el primer
carcter de la expresin de caracteres no es un nmero, ni un signo ms (+) ni un signo menos (-).
VAL( ) se puede utilizar para convertir en valores numricos las cadenas de caracteres devueltas por las
funciones SYS( ) de Genlis.


5.5.202. WAIT (Comando)

Muestra un mensaje y detiene la ejecucin de Genlis hasta que presione una tecla o haga clic con el mouse.

Sintaxis
WAIT
[cTextoMensaje]
[TO NombreVariable]
[WINDOW [AT nFila, nColumna]]
[NOWAIT]
[CLEAR | NOCLEAR]
[TIMEOUT nSegundos]

Argumentos
cTextoMensaje
Especifica el mensaje personalizado que se desea mostrar. Si omite cTextoMensaje, Genlis mostrar el
mensaje predeterminado. Si cTextoMensaje es la cadena vaca (""), no se mostrar ningn mensaje y Genlis
esperar hasta que se presione una tecla antes de continuar con la ejecucin del programa.

TO NombreVariable
Guarda la tecla presionada en una variable o en un elemento de matriz. Si la variable o el elemento de matriz
que especifica con NombreVariable no existe, se crear. Si presiona la tecla ENTRAR o una tecla o
combinacin de teclas no imprimible, o hace clic con el mouse, se almacenar en NombreVariable la cadena
vaca.

WINDOW
Muestra el mensaje en una ventana de mensajes del sistema, en la esquina superior derecha de la ventana
principal de Genlis. La ventana puede ocultarse temporalmente al presionar la tecla CTRL o MAYS.


Manual de Genlis
254

AT nFila, nColumna
En Genlis, especifica la posicin que ocupar la ventana de mensajes dentro de la pantalla.

NOWAIT
Contina la ejecucin del programa inmediatamente despus de mostrar el mensaje. El programa no espera
a que el mensaje desaparezca de la ventana principal de Genlis, sino que contina ejecutando la lnea del
programa inmediatamente siguiente a la que contiene WAIT NOWAIT. Si omite NOWAIT, la ejecucin del
programa se interrumpe hasta que el mensaje se elimine de la ventana principal de Genlis al presionar una
tecla o hacer clic con el mouse.

CLEAR
Elimina una ventana de sistema de Genlis o una ventana de mensajes WAIT de la ventana principal de Genlis
desde un programa. Por ejemplo, la conversacin procedente de indexar, ordenar, etc. se dirige a una
ventana de sistema de Genlis si ejecuta SET TALK WINDOW. La ventana se eliminar cuando presione una
tecla o mueva el mouse. Ejecute WAIT CLEAR para eliminar la ventana desde dentro de un programa.

NOCLEAR
Especifica que una ventana de mensajes WAIT permanecer en la ventana principal de Genlis hasta que se
ejecute WAIT CLEAR u otro comando WAIT WINDOW, o hasta que se muestre un mensaje de sistema de
Genlis.

TIMEOUT nSegundos
Especifica cuntos segundos pueden transcurrir sin entradas desde el teclado o el mouse antes de que
WAIT termine. nSegundos especifica el nmero de segundos (se admiten partes fraccionales de segundo)
que pueden transcurrir. Si TIMEOUT no es la ltima clusula de WAIT, Genlis genera un mensaje de error de
sintaxis.

Comentarios
Si se muestra un mensaje WAIT en Genlis para Windows, podr ocultar todas las ventanas que contengan el
mensaje WAIT al presionar la tecla MAYS o CTRL.


5.5.203. WEEK( ) (Funcin)

Devuelve un nmero que representa la semana del ao a partir de una expresin de tipo Date o DateTime.

Sintaxis
WEEK(dExpresin | tExpresin [, nPrimeraSemana] [, nPrimerDaSemana])

Tipos devueltos
Numeric


Manual de Genlis
255

Argumentos
dExpresin | tExpresin
Especifica la expresin Date o DateTime para la cual WEEK( ) devuelve la semana del ao.
Si omite los argumentos opcionales nPrimeraSemana y nPrimerDaSemana, WEEK( ) utilizar el domingo
como primer da de la semana.

nPrimeraSemana
Especifica los requisitos para la primera semana del ao. nPrimeraSemana puede tener uno de los valores
siguientes.

nPrimeraSemana Descripcin
0 WEEK( ) devuelve la semana seleccionada actualmente en el cuadro de lista Primera semana del
ao de la ficha Internacional, en el cuadro de dilogo Opciones.
1 La primera semana contiene 1 de enero. ste es el valor predeterminado cuando se omite
nPrimeraSemana.
2 La mitad mayor (cuatro das) de la primera semana est en el ao actual.
3 La primera semana tiene siete das.

nPrimerDaSemana
Especifica el primer da de la semana. nPrimerDaSemana puede tener uno de los valores siguientes.

nPrimerDaSemana Descripcin
0 WEEK( ) devuelve el da seleccionado actualmente en el cuadro de lista La semana empieza en de la
ficha Internacional, en el cuadro de dilogo Opciones.
1 Domingo. ste es el valor predeterminado cuando se omite nPrimerDaSemana y es el primer da de
la semana empleado en versiones anteriores de FoxPro.
2 Lunes
3 Martes
4 Mircoles
5 Jueves
6 Viernes
7 Sbado

Comentarios
WEEK( ) devuelve un nmero del 1 al 53 que representa la semana del ao. Por ejemplo, WEEK( ) devuelve
1 para la primera semana del ao, 2 para la segunda semana del ao, y as sucesivamente. Observe que
una semana puede dividirse entre aos: la primera semana del ao puede estar en el ao actual y en el
anterior.




Manual de Genlis
256
5.5.204. YEAR( ) (Funcin)

Devuelve el ao a partir de la expresin de fecha, o fecha y hora especificada.

Sintaxis
YEAR(dExpresin | tExpresin)

Tipos devueltos
Numeric

Argumentos
dExpresin
Especifica una expresin de fecha a partir de la cual YEAR( ) devuelve el ao. dExpresin puede ser una
funcin que devuelve una fecha o una variable de memoria, un elemento de matriz o un campo de tipo Date.
Tambin puede ser una cadena de fecha literal, por ejemplo: {^1998-06-06}.

tExpresin
Especifica una expresin de tipo DateTime hora a partir de la cual YEAR( ) devuelve el ao.

Comentarios
YEAR( ) siempre devuelve el ao con el siglo. La configuracin de CENTURY (ON u OFF) no afecta al valor
devuelto.




Manual de Genlis
257
6. Limitaciones y observaciones sobre la
codificacin de instrucciones

A continuacin se proporciona una lista de limitaciones y explicaciones adicionales para poder escribir el
cdigo que recupera los datos con Genlis:

Cuando disee un formulario debe indicar donde se guardan los valores que introduce el usuario final.
Los nombres que usaremos de referencia (parmetros) deben escribirse al momento en que se cree el
formulario en el lugar donde se escribirn los valores, tal como se muestra en el grfico:



Para poder referenciarlos debe incluirse el nombre entre # (Por ejemplo #ARTICULO1#). Debe tenerse en
cuenta que Genlis distingue entre maysculas y minsculas, por lo que no es lo mismo #ARTICULO1# y
#Articulo1#.
Genlis antes de ejecutar el cdigo que recuperar los datos substituir los parmetros por sus valores.
Segn el tipo de que se trate, Genlis aadir los delimitadores correspondientes. Por ejemplo #ARTICULO1#
lo substituir por 00000001 suponiendo que el usuario hay tecleado 00000001.
El tipo variante permite introducir valores de carcter que se sustituirn sin aadir los delimitadores.
Las variables deben ser declaradas como publicas. Para impedir conflictos con Genlis es una buena
opcin definir el nombre aadiendo el carcter subrayado delante el nombre _.
Ejm.: PUBLIC _Nombre

Se ha introducido una nueva clusula para las consultas SQL que es FISCALYEAR para indicar el
ejercicio de donde se extraen los datos
Ejm.: SELECT * FROM ARTICULOS FISCALYEAR 1998

Si se trabaja con cursores temporales los nombres deben empezar por CUR_:
Ejm.: SELECT * FROM ARTICULOS INTO CURSOR CUR_TEMPORAL






Este documento ha sido creado por el Departamento de
Documentacin de Sage Eurowin. La informacin que
contiene es cierta salvo error u omisin.

El funcionamiento del programa puede ser modificado sin
previo aviso.
De producirse, las modificaciones se comunican a travs de
los procedimientos habituales establecidos.

Con el fin de mejorar la calidad de este manual, si detecta
alguna errata puede comunicrnosla enviando un mensaje a
la siguiente direccin de correo electrnico:
manuales@eurowin.com




Queda totalmente prohibida la reproduccin parcial o total, as como
la venta de este documento, sin el expreso consentimiento de la
empresa.
Todas las ofertas, promociones, condiciones y/o tarifas reflejadas en
l tienen la vigencia concretada en el mismo.

También podría gustarte