Você está na página 1de 472

SR.VISITANTE ! Preparamos esta apostila, especialmente para servir de auxilio aos que esto migrando do CLIPPER.

Muito pouco o material existente a respeito desta poderosa linguagem, e desta forma acreditamos que nossa contribuio possa ser importante. Utilizando-nos do Visual FoxPro, desenvolvemos um aplicativo chamado VISUAL SCREEN, e este j vem recebendo uma excelente aceitao por sua versatilidade na criao de PLANILHAS e APLICATIVOS. Convidamos voc a conhecer este programa, e nos incentivar usando esta nossa feramenta de trabalho. Nosso site :

http://www.via.com.br/visualscreen
Ou envie E-mail para Dinarte Incio Kreutz / Lajeado RS

d_kreutz@uol.com.br

Dinarte Incio Kreutz

Agradecimentos especiais ao colega MARCELO MACEDO, pela ajuda na preparao deste trabalho

[Pg.: 1]

IMPORTANTE : Esta apostila traz os comandos do Visual FoxPro, principalmente aqueles que podem ser imediatamente aplicados por Programadores que esto migrando do CLIPPER.

INDICE
Sr.Visitante !.......................................................................................................................................................................................1 Comandos e Funes............................................................................................................................................................................10 RUN | !, comando.........................................................................................................................................................................10 $, operador....................................................................................................................................................................................11 %, operador...................................................................................................................................................................................12 &&, comando...............................................................................................................................................................................12 *, comando....................................................................................................................................................................................13 @ ... CLEAR, comando................................................................................................................................................................13 @ ... SCROLL, comando.............................................................................................................................................................14 \ | \\, comando...............................................................................................................................................................................14 =, comando...................................................................................................................................................................................15 ABS( ), funo..............................................................................................................................................................................16 ACOS( ), funo...........................................................................................................................................................................16 ACTIVATE SCREEN, comando.................................................................................................................................................17 ACTIVATE WINDOW, comando...............................................................................................................................................17 ADATABASES( ), funo...........................................................................................................................................................19 ADD TABLE, comando...............................................................................................................................................................20 ADEL( ), funo...........................................................................................................................................................................21 ADIR( ), funo............................................................................................................................................................................22 AELEMENT( ), funo................................................................................................................................................................23 AERROR( ), funo.....................................................................................................................................................................24 AFIELDS( ), funo.....................................................................................................................................................................26 AFONT( ), funo........................................................................................................................................................................27 AINS( ), funo............................................................................................................................................................................28 ALEN( ), funo...........................................................................................................................................................................29 ALLTRIM( ), funo....................................................................................................................................................................30 APPEND FROM ARRAY, comando...........................................................................................................................................31 APPEND FROM, comando..........................................................................................................................................................32 APPEND FROM, exemplo do comando......................................................................................................................................35 APPEND MEMO, comando........................................................................................................................................................35 APPEND PROCEDURES, comando...........................................................................................................................................36 APPEND, comando......................................................................................................................................................................38 APRINTERS( ), funo................................................................................................................................................................39 ASC( ), funo..............................................................................................................................................................................40 ASCAN( ), funo........................................................................................................................................................................40 ASIN( ), funo............................................................................................................................................................................41 ASORT( ), funo.........................................................................................................................................................................42 ASSERT, comando.......................................................................................................................................................................44 ASUBSCRIPT( ), funo.............................................................................................................................................................45 AT( ), funo................................................................................................................................................................................46 AT_C( ), funo............................................................................................................................................................................47 ATAN( ), funo...........................................................................................................................................................................47 ATC( ), funo..............................................................................................................................................................................48 ATCC( ), funo...........................................................................................................................................................................49 ATCLINE( ), funo.....................................................................................................................................................................49 ATLINE( ), funo.......................................................................................................................................................................50 ATLINE( ), exemplos da funo..................................................................................................................................................51 ATN2( ), funo...........................................................................................................................................................................51 AVERAGE, comando..................................................................................................................................................................52 TABELA de Cores.......................................................................................................................................................................53 BETWEEN( ), funo...................................................................................................................................................................54 BINTOC( ), funo.......................................................................................................................................................................54 BITAND( ), funo.......................................................................................................................................................................55 BITCLEAR( ), funo..................................................................................................................................................................56 BITLSHIFT( ), funo..................................................................................................................................................................56 BITNOT( ), funo.......................................................................................................................................................................57 BITOR( ), funo..........................................................................................................................................................................57 BITRSHIFT( ), funo.................................................................................................................................................................58 BITSET( ), funo........................................................................................................................................................................58 BITTEST( ), funo......................................................................................................................................................................59 BITXOR( ), funo.......................................................................................................................................................................59 BLANK, comando........................................................................................................................................................................60 BOF( ), funo..............................................................................................................................................................................61 BROWSE, comando.....................................................................................................................................................................62
[Pg.: 2]

BUILD EXE, comando.................................................................................................................................................................72 BUILD PROJECT, comando.......................................................................................................................................................73 IMPORTANTE : Como gerar um .EXE......................................................................................................................................74 CALCULATE, comando..............................................................................................................................................................74 CANCEL, comando......................................................................................................................................................................76 CAPSLOCK( ), funo.................................................................................................................................................................76 CD | CHDIR, comando.................................................................................................................................................................77 CDOW( ), funo.........................................................................................................................................................................78 CDX( ), funo.............................................................................................................................................................................78 CEILING( ), funo......................................................................................................................................................................80 CHANGE, comando.....................................................................................................................................................................80 CHR( ), funo.............................................................................................................................................................................81 CHRSAW( ), funo.....................................................................................................................................................................82 CHRTRAN( ), funo...................................................................................................................................................................82 CHRTRANC( ), funo................................................................................................................................................................83 CLEAR, comandos.......................................................................................................................................................................84 CLOSE, comandos.......................................................................................................................................................................86 CMONTH( ), funo....................................................................................................................................................................87 ? | ??, comando.............................................................................................................................................................................87 ???, comando................................................................................................................................................................................89 CONTINUE, comando.................................................................................................................................................................90 COPY FILE, comando.................................................................................................................................................................90 COPY STRUCTURE, comando...................................................................................................................................................91 COPY STRUCTURE EXTENDED, comando............................................................................................................................91 COPY TAG, comando..................................................................................................................................................................93 COPY TO ARRAY, comando.....................................................................................................................................................94 COPY TO, comando.....................................................................................................................................................................95 COS( ), funo..............................................................................................................................................................................99 COUNT, comando........................................................................................................................................................................99 CREATE COLOR SET, comando.............................................................................................................................................100 CREATE DATABASE, comando..............................................................................................................................................101 CREATE FROM, comando........................................................................................................................................................101 CREATE MENU, comando.......................................................................................................................................................102 CREATE REPORT - Relatrio Rpido, comando.....................................................................................................................103 CREATE TRIGGER, comando..................................................................................................................................................104 CREATE, comando....................................................................................................................................................................106 CTOBIN( ), funo.....................................................................................................................................................................106 CTOD( ), funo.........................................................................................................................................................................107 CTOT( ), funo.........................................................................................................................................................................108 CURDIR( ), Funo....................................................................................................................................................................108 DATE( ), funo.........................................................................................................................................................................109 DATETIME( ), funo...............................................................................................................................................................109 DAY( ), funo...........................................................................................................................................................................110 DBC( ), funo...........................................................................................................................................................................110 DBF( ), funo............................................................................................................................................................................111 DBUSED( ), funo....................................................................................................................................................................112 DEACTIVATE MENU, comando.............................................................................................................................................112 DEACTIVATE WINDOW, comando........................................................................................................................................114 DECLARE, comando.................................................................................................................................................................115 DEFINE MENU, comando.........................................................................................................................................................115 DEFINE PAD, comando............................................................................................................................................................118 DEFINE POPUP, comando........................................................................................................................................................123 DEFINE WINDOW, comando...................................................................................................................................................128 DELETE DATABASE, comando..............................................................................................................................................133 DELETE FILE, comando...........................................................................................................................................................134 DELETE TRIGGER, comando..................................................................................................................................................135 DELETE, comando....................................................................................................................................................................135 DELETED( ), funo..................................................................................................................................................................136 DIFFERENCE( ), funo...........................................................................................................................................................137 DIMENSION, comando.............................................................................................................................................................138 DIR ou DIRECTORY, comando................................................................................................................................................140 DIRECTORY( ) , funo............................................................................................................................................................141 DISKSPACE( ), funo..............................................................................................................................................................141 DISPLAY DATABASE, comando............................................................................................................................................142 DISPLAY FILES, comando.......................................................................................................................................................143 DISPLAY MEMORY, comando................................................................................................................................................144 DISPLAY STATUS, comando..................................................................................................................................................145 DISPLAY STRUCTURE, comando..........................................................................................................................................146 DISPLAY TABLES, comando...................................................................................................................................................147 DISPLAY, comando...................................................................................................................................................................148 DMY( ), funo..........................................................................................................................................................................150 DO CASE ... ENDCASE, comando...........................................................................................................................................150 DO WHILE ... ENDDO, comando.............................................................................................................................................151
[Pg.: 3]

DO, comando..............................................................................................................................................................................152 DOW( ), funo..........................................................................................................................................................................154 DROP TABLE, comando...........................................................................................................................................................154 DTOC( ), funo.........................................................................................................................................................................155 DTOR( ), funo.........................................................................................................................................................................156 DTOS( ), funo.........................................................................................................................................................................156 DTOT( ), funo.........................................................................................................................................................................157 EDIT, comando..........................................................................................................................................................................157 EJECT PAGE, comando.............................................................................................................................................................166 EJECT, comando........................................................................................................................................................................166 EMPTY( ), funo......................................................................................................................................................................167 EOF( ), funo............................................................................................................................................................................168 ERASE, comando.......................................................................................................................................................................169 ERROR( ), funo......................................................................................................................................................................170 ERROR, comando......................................................................................................................................................................171 EVALUATE( ), funo..............................................................................................................................................................172 EXP( ), funo............................................................................................................................................................................173 EXPORT, comando....................................................................................................................................................................173 FCHSIZE( ), funo...................................................................................................................................................................175 FCLOSE( ), funo.....................................................................................................................................................................176 FCOUNT( ), funo....................................................................................................................................................................176 CREATE( ), funo....................................................................................................................................................................177 FDATE( ), funo.......................................................................................................................................................................178 FEOF( ), funo..........................................................................................................................................................................179 FERROR( ), funo....................................................................................................................................................................179 FFLUSH( ), funo.....................................................................................................................................................................180 FGETS( ), funo.......................................................................................................................................................................180 FIELD( ), funo........................................................................................................................................................................181 FILE( ), funo...........................................................................................................................................................................182 FILTER( ), funo......................................................................................................................................................................183 FKLABEL( ), funo..................................................................................................................................................................183 FKMAX( ), funo.....................................................................................................................................................................184 FLOCK ( ), funo......................................................................................................................................................................185 FLOOR( ), funo.......................................................................................................................................................................186 FLUSH, comando.......................................................................................................................................................................187 FONTMETRIC( ), funo..........................................................................................................................................................187 FOPEN( ), funo.......................................................................................................................................................................188 FOR ... ENDFOR, comando.......................................................................................................................................................189 FOR EACH ENDFOR, comando..........................................................................................................................................191 FOR( ), funo............................................................................................................................................................................193 FOUND( ), funo......................................................................................................................................................................194 FPUTS( ), funo........................................................................................................................................................................194 FREAD( ), funo.......................................................................................................................................................................195 FREE TABLE, comando............................................................................................................................................................196 FSEEK( ), funo.......................................................................................................................................................................196 FSIZE( ), funo.........................................................................................................................................................................197 FTIME( ), funo........................................................................................................................................................................198 FULLPATH( ), funo...............................................................................................................................................................199 STRTRAN( ), funo.................................................................................................................................................................199 SYSMETRIC( ), funo.............................................................................................................................................................200 FUNCTION, comando...............................................................................................................................................................201 FV( ), funo...............................................................................................................................................................................202 FWRITE( ), funo.....................................................................................................................................................................203 GATHER, comando...................................................................................................................................................................203 GETCOLOR( ), funo..............................................................................................................................................................205 GETDIR( ), funo.....................................................................................................................................................................205 GETENV( ), funo....................................................................................................................................................................206 GETFILE( ), funo...................................................................................................................................................................206 GETFLDSTATE( ), funo........................................................................................................................................................208 GETFONT( ), funo.................................................................................................................................................................209 GETNEXTMODIFIED( ), funo..............................................................................................................................................210 GETPAD( ), funo....................................................................................................................................................................211 GO | GOTO, comando................................................................................................................................................................212 GOMONTH( ), funo...............................................................................................................................................................213 HEADER( ), funo...................................................................................................................................................................213 HELP, comando..........................................................................................................................................................................214 HIDE MENU, comando.............................................................................................................................................................214 HIDE POPUP, comando............................................................................................................................................................215 HIDE WINDOW, comando.......................................................................................................................................................215 HOME( ), funo........................................................................................................................................................................217 HOUR( ), funo........................................................................................................................................................................217 IF... ENDIF, comando................................................................................................................................................................217 IIF( ), funo...............................................................................................................................................................................218
[Pg.: 4]

IMPORT, comando....................................................................................................................................................................219 INDEX, comando.......................................................................................................................................................................220 INKEY( ), funo.......................................................................................................................................................................224 INLIST( ), funo.......................................................................................................................................................................226 INSMODE( ), funo.................................................................................................................................................................227 INT( ), funo.............................................................................................................................................................................227 ISALPHA( ), funo...................................................................................................................................................................228 ISBLANK( ), funo..................................................................................................................................................................228 ISCOLOR( ), funo...................................................................................................................................................................229 ISDIGIT( ), funo.....................................................................................................................................................................229 ISEXCLUSIVE( ), funo..........................................................................................................................................................230 ISFLOCKED( ), funo..............................................................................................................................................................231 ISLOWER( ), funo..................................................................................................................................................................231 ISNULL( ), funo.....................................................................................................................................................................232 ISREADONLY( ), funo..........................................................................................................................................................232 ISRLOCKED( ), funo.............................................................................................................................................................233 ISUPPER( ), funo....................................................................................................................................................................234 KEY( ), funo...........................................................................................................................................................................234 KEYBOARD, comando.............................................................................................................................................................235 LASTKEY( ), funo.................................................................................................................................................................236 LEFT( ), funo..........................................................................................................................................................................236 LEFTC( ), funo.......................................................................................................................................................................237 LEN( ), funo............................................................................................................................................................................237 LENC( ), funo.........................................................................................................................................................................238 LIKE( ), funo...........................................................................................................................................................................238 LIKEC( ), funo........................................................................................................................................................................239 LINENO( ), funo.....................................................................................................................................................................240 LIST DATABASE, comando.....................................................................................................................................................241 LIST TABLES, comando...........................................................................................................................................................241 LIST, comandos..........................................................................................................................................................................242 LOCAL, comando......................................................................................................................................................................243 LOCATE, comando....................................................................................................................................................................243 LOCFILE( ), funo...................................................................................................................................................................245 LOCK( ), funo.........................................................................................................................................................................246 LOG( ), funo...........................................................................................................................................................................248 LOG10( ), funo.......................................................................................................................................................................248 LOOKUP( ), funo...................................................................................................................................................................249 LOWER( ), funo.....................................................................................................................................................................250 LPARAMETERS, comando.......................................................................................................................................................250 LTRIM( ), funo.......................................................................................................................................................................251 LUPDATE( ), funo.................................................................................................................................................................251 LUPDATE( ), exemplo da funo..............................................................................................................................................252 MAX( ), funo..........................................................................................................................................................................252 MD | MKDIR, comando.............................................................................................................................................................253 MDX( ), funo..........................................................................................................................................................................253 MDY( ), funo..........................................................................................................................................................................254 MEMORY( ), funo..................................................................................................................................................................255 MENU( ), funo........................................................................................................................................................................255 MESSAGE( ), funo.................................................................................................................................................................256 MIN( ), funo............................................................................................................................................................................257 MINUTE( ), funo....................................................................................................................................................................257 MLINE( ), funo.......................................................................................................................................................................258 MOD( ), funo..........................................................................................................................................................................259 MODIFY COMMAND, comando.............................................................................................................................................260 MODIFY DATABASE, comando.............................................................................................................................................261 MODIFY FILE, comando..........................................................................................................................................................262 MODIFY GENERAL, comando................................................................................................................................................264 MODIFY MEMO, comando......................................................................................................................................................265 MODIFY MENU, comando.......................................................................................................................................................266 MODIFY STRUCTURE, comando...........................................................................................................................................267 MODIFY WINDOW, comando.................................................................................................................................................268 MONTH( ), funo.....................................................................................................................................................................269 MOVE POPUP, comando..........................................................................................................................................................269 MOVE WINDOW, comando.....................................................................................................................................................270 MTON( ), funo........................................................................................................................................................................271 NDX, funo ( )..........................................................................................................................................................................272 NORMALIZE( ), funo............................................................................................................................................................272 NOTE, comando.........................................................................................................................................................................273 NTOM( ), funo........................................................................................................................................................................273 NUMLOCK( ), funo...............................................................................................................................................................274 NVL( ), funo...........................................................................................................................................................................275 OCCURS( ), funo....................................................................................................................................................................275 OLDVAL( ), funo...................................................................................................................................................................276
[Pg.: 5]

ON ERROR, comando...............................................................................................................................................................277 ON ESCAPE, comando..............................................................................................................................................................278 ON KEY LABEL, comando.......................................................................................................................................................279 ON PAD, comando.....................................................................................................................................................................281 ON PAGE, comando..................................................................................................................................................................281 ON SELECTION MENU, comando..........................................................................................................................................282 ON SELECTION PAD, comando..............................................................................................................................................283 ON SELECTION POPUP, comando.........................................................................................................................................283 ON SHUTDOWN, comando......................................................................................................................................................284 ON( ), funo..............................................................................................................................................................................284 OPEN DATABASE, comando...................................................................................................................................................285 ORDER( ), funo......................................................................................................................................................................287 OS( ), funo...............................................................................................................................................................................287 PACK DATABASE, comando..................................................................................................................................................288 PACK, comando.........................................................................................................................................................................288 PAD( ), funo............................................................................................................................................................................289 PAD( ), exemplo da funo........................................................................................................................................................289 PADL( ) | PADR( ) | PADC( ), funes.....................................................................................................................................290 PARAMETERS( ), funo.........................................................................................................................................................291 PARAMETERS, comando.........................................................................................................................................................292 PAYMENT( ), funo................................................................................................................................................................292 PCOL( ), funo.........................................................................................................................................................................293 PCOUNT( ), funo....................................................................................................................................................................293 PI( ), funo................................................................................................................................................................................294 POPUP( ), funo.......................................................................................................................................................................295 PRINTSTATUS( ), funo.........................................................................................................................................................295 PRIVATE, comando...................................................................................................................................................................296 PRMPAD( ), funo...................................................................................................................................................................296 PROCEDURE, comando............................................................................................................................................................297 PROGRAM( ), funo................................................................................................................................................................299 PROMPT( ), funo....................................................................................................................................................................299 PROPER( ), funo.....................................................................................................................................................................300 PROW( ), funo........................................................................................................................................................................300 PRTINFO( ), funo...................................................................................................................................................................301 PUBLIC, comando.....................................................................................................................................................................303 PUSH POPUP, comando............................................................................................................................................................304 PUTFILE( ), funo....................................................................................................................................................................305 PV( ), funo...............................................................................................................................................................................306 QUIT, comando..........................................................................................................................................................................307 RAND( ), funo........................................................................................................................................................................307 RAT( ), funo ..........................................................................................................................................................................308 RATC( ), funo.........................................................................................................................................................................309 RATLINE( ), funo...................................................................................................................................................................310 RD | RMDIR, comando..............................................................................................................................................................310 RECALL, comando....................................................................................................................................................................311 RECCOUNT( ), funo..............................................................................................................................................................312 RECNO( ), funo......................................................................................................................................................................313 RECSIZE( ), funo...................................................................................................................................................................314 REGIONAL, comando...............................................................................................................................................................314 REINDEX, comando..................................................................................................................................................................315 RELEASE MENUS, comando...................................................................................................................................................316 RELEASE PAD, comando.........................................................................................................................................................317 RELEASE POPUPS, comandos.................................................................................................................................................317 RELEASE PROCEDURE, comando.........................................................................................................................................318 RELEASE WINDOWS, comando.............................................................................................................................................318 RELEASE, comando..................................................................................................................................................................319 REMOVE TABLE, comando.....................................................................................................................................................319 RENAME TABLE, comando.....................................................................................................................................................320 RENAME, comando...................................................................................................................................................................321 REPLACE FROM ARRAY, comando......................................................................................................................................321 REPLACE, comando..................................................................................................................................................................322 REPLICATE( ), funo..............................................................................................................................................................324 REPORT command....................................................................................................................................................................324 RESTORE FROM, comando.....................................................................................................................................................326 RESTORE SCREEN, comando.................................................................................................................................................327 RESTORE WINDOW, comando...............................................................................................................................................328 RESUME, comando...................................................................................................................................................................329 RETRY, comando......................................................................................................................................................................329 RETURN, comando....................................................................................................................................................................329 RGB( ), funo...........................................................................................................................................................................330 RGBSCHEME( ), funo...........................................................................................................................................................330 RIGHT( ), funo.......................................................................................................................................................................331 RIGHTC( ), funo.....................................................................................................................................................................332
[Pg.: 6]

RLOCK( ), funo......................................................................................................................................................................332 ROUND( ), funo.....................................................................................................................................................................334 RTOD( ), funo.........................................................................................................................................................................334 RTRIM( ), funo.......................................................................................................................................................................335 RUN | !, comando.......................................................................................................................................................................335 SAVE SCREEN, comando.........................................................................................................................................................337 SAVE WINDOWS, comando....................................................................................................................................................337 SCAN ... ENDSCAN, comando.................................................................................................................................................338 SCATTER, comando..................................................................................................................................................................340 SCHEME( ), funo...................................................................................................................................................................342 SCOLS( ), funo.......................................................................................................................................................................342 SCROLL, comando....................................................................................................................................................................342 SEC( ) , funo...........................................................................................................................................................................343 SECONDS( ), funo.................................................................................................................................................................343 SEEK( ), funo..........................................................................................................................................................................344 SEEK, comando..........................................................................................................................................................................345 SELECT( ), funo.....................................................................................................................................................................346 SELECT, comando.....................................................................................................................................................................347 Comandos SET...................................................................................................................................................................................347 SET ALTERNATE, comando....................................................................................................................................................347 SET ASSERTS, comando..........................................................................................................................................................348 SET AUTOSAVE, comando......................................................................................................................................................348 SET BELL, comando.................................................................................................................................................................349 SET BLOCKSIZE, comando.....................................................................................................................................................349 SET CARRY, comando..............................................................................................................................................................350 SET CENTURY, comando.........................................................................................................................................................350 SET CLOCK, comando..............................................................................................................................................................351 SET COLLATE, comando.........................................................................................................................................................352 SET COLOR OF SCHEME, comando.......................................................................................................................................353 SET COMPATIBLE, comando..................................................................................................................................................354 SET CONFIRM, comando.........................................................................................................................................................355 SET CONSOLE, comando.........................................................................................................................................................355 SET COVERAGE, comando......................................................................................................................................................356 SET CPDIALOG, comando.......................................................................................................................................................356 SET CURRENCY, comando......................................................................................................................................................357 SET CURSOR, comando...........................................................................................................................................................358 SET DATABASE, comando......................................................................................................................................................358 SET DATE, comando.................................................................................................................................................................359 SET DEBUG, comando..............................................................................................................................................................360 SET DEBUGOUT, comando.....................................................................................................................................................360 SET DECIMALS, comando.......................................................................................................................................................360 SET DEFAULT, comando.........................................................................................................................................................361 SET DELETED, comando.........................................................................................................................................................362 SET DEVELOPMENT, comando..............................................................................................................................................362 SET DEVICE, comando.............................................................................................................................................................363 SET DISPLAY, comando...........................................................................................................................................................364 SET ECHO, comando.................................................................................................................................................................364 SET ESCAPE, comando.............................................................................................................................................................365 SET EXACT, comando..............................................................................................................................................................365 SET EXCLUSIVE, comando.....................................................................................................................................................366 SET FDOW, comando................................................................................................................................................................367 SET FIELDS, comando..............................................................................................................................................................368 SET FILTER, comando..............................................................................................................................................................369 SET FIXED, comando................................................................................................................................................................369 SET FULLPATH, comando.......................................................................................................................................................370 SET FUNCTION, comando.......................................................................................................................................................370 SET FWEEK, comando..............................................................................................................................................................371 SET HEADINGS, comando.......................................................................................................................................................371 SET HELP, comando.................................................................................................................................................................372 SET HELPFILTER, comando....................................................................................................................................................372 SET HOURS, comando..............................................................................................................................................................372 SET INDEX, comando...............................................................................................................................................................373 SET KEY, comando...................................................................................................................................................................374 SET KEYCOMP, comando........................................................................................................................................................375 SET LOCK, comando.................................................................................................................................................................376 SET LOGERRORS, comando....................................................................................................................................................377 SET MARGIN, comando...........................................................................................................................................................377 SET MARK TO, comando.........................................................................................................................................................378 SET MEMOWIDTH, comando..................................................................................................................................................378 SET MESSAGE, comando.........................................................................................................................................................379 SET MULTILOCKS, comando..................................................................................................................................................379 SET NEAR, comando.................................................................................................................................................................380 SET NOTIFY, comando.............................................................................................................................................................381
[Pg.: 7]

SET NULLDISPLAY, comando................................................................................................................................................381 SET ODOMETER, comando.....................................................................................................................................................381 SET OPTIMIZE, comando.........................................................................................................................................................382 SET ORDER, comando..............................................................................................................................................................383 SET PALETTE, comando..........................................................................................................................................................384 SET PATH, comando.................................................................................................................................................................385 SET PDSETUP, comando..........................................................................................................................................................385 SET POINT, comando................................................................................................................................................................386 SET PRINTER, comando...........................................................................................................................................................387 SET READBORDER, comando................................................................................................................................................389 SET REFRESH, comando..........................................................................................................................................................389 SET RELATION OFF, comando...............................................................................................................................................390 SET RELATION, comando.......................................................................................................................................................390 SET REPROCESS, comando.....................................................................................................................................................392 SET SAFETY, comando............................................................................................................................................................393 SET SECONDS, comando.........................................................................................................................................................394 SET SKIP OF, comando.............................................................................................................................................................395 SET SKIP, comando...................................................................................................................................................................396 SET STEP, comando..................................................................................................................................................................398 SET SYSFORMATS, comando.................................................................................................................................................398 SET SYSMENU, comando........................................................................................................................................................399 SET TALK, comando.................................................................................................................................................................400 SET TEXTMERGE, comando...................................................................................................................................................401 SET TOPIC, comando................................................................................................................................................................403 SET TYPEAHEAD, comando...................................................................................................................................................403 SET UDFPARMS, comando......................................................................................................................................................404 SET UNIQUE, comando............................................................................................................................................................405 SET( ), funo.............................................................................................................................................................................405 SETFLDSTATE( ), funo.........................................................................................................................................................407 SHOW MENU, comando...........................................................................................................................................................408 SHOW POPUP, comando..........................................................................................................................................................408 SHOW WINDOW, comando.....................................................................................................................................................409 SIGN( ), funo..........................................................................................................................................................................410 SIN( ), funo.............................................................................................................................................................................411 SIZE POPUP, comando..............................................................................................................................................................411 SIZE WINDOW, comando.........................................................................................................................................................412 SKIP, comando...........................................................................................................................................................................413 SKPPAD( ), funo....................................................................................................................................................................413 SORT, comando.........................................................................................................................................................................414 SOUNDEX( ), funo................................................................................................................................................................416 SPACE( ), funo.......................................................................................................................................................................416 SROWS( ), funo......................................................................................................................................................................417 STORE, comando.......................................................................................................................................................................417 STR( ), funo............................................................................................................................................................................418 STUFF( ), funo........................................................................................................................................................................418 STUFFC( ), funo.....................................................................................................................................................................419 SUBSTR( ), funo.....................................................................................................................................................................419 SUBSTRC( ), funo..................................................................................................................................................................420 SUM, comando...........................................................................................................................................................................421 SUSPEND, comando..................................................................................................................................................................422 Comandos SYS(???)...........................................................................................................................................................................423 SYS(0) - Informaes do computador da rede...........................................................................................................................423 SYS(1) - Dia do sistema Juliano.................................................................................................................................................423 SYS(2) - Segundos desde a meia-noite......................................................................................................................................423 SYS(3) - Nome de arquivo vlido..............................................................................................................................................424 SYS(5) - Volume ou unidade de disco padro...........................................................................................................................424 SYS(6) - Dispositivo de impressora atual..................................................................................................................................424 SYS(7) - Arquivo de formato atual............................................................................................................................................425 SYS(9) - Nmero serial do Visual FoxPro.................................................................................................................................425 SYS(10) - Seqncia a partir do nmero de dia juliano.............................................................................................................425 SYS(11) - Nmero de dia juliano...............................................................................................................................................425 SYS(12) - Memria disponvel em bytes...................................................................................................................................426 SYS(13) - Status da impressora..................................................................................................................................................426 SYS(14) - Expresso de ndice...................................................................................................................................................427 SYS(16) - Nome de arquivo do programa em execuo............................................................................................................428 SYS(17) - Processador em uso...................................................................................................................................................428 SYS(21) - Controlando o nmero do ndice...............................................................................................................................429 SYS(22) - Controlando nome ou marca de ndice .....................................................................................................................429 SYS(23) - Utilizao de memria EMS do FoxPro...................................................................................................................430 SYS(24) - Limite de memria EMS...........................................................................................................................................430 SYS(100) - Definio da console...............................................................................................................................................430 SYS(101) - Definio do dispositivo..........................................................................................................................................430 SYS(102) - Definio da impressora..........................................................................................................................................431
[Pg.: 8]

SYS(103) - Definio da comunicao......................................................................................................................................431 SYS(1001) - Memria do Visual FoxPro...................................................................................................................................431 SYS(1016) - Uso da memria de objeto do usurio...................................................................................................................432 SYS(1023) - Ativar modo de diagnstico da Ajuda...................................................................................................................432 SYS(1024) - Desativar o modo de diagnstico da Ajuda...........................................................................................................432 SYS(1500) - Ativar um item de menu do sistema......................................................................................................................433 SYS(2000) - correspondncia curinga de nome do arquivo.......................................................................................................433 SYS(2001) - SET ... status do comando.....................................................................................................................................434 SYS(2002) - ativar ou desativar ponto de insero....................................................................................................................434 SYS(2003) - diretrio atual........................................................................................................................................................434 SYS(2004) - diretrio inicial do Visual FoxPro.........................................................................................................................435 SYS(2006) - placa de vdeo atual...............................................................................................................................................435 SYS(2007) - Valor da soma de verificao................................................................................................................................435 SYS(2010) - Definies do arquivo CONFIG.SYS...................................................................................................................435 SYS(2011) - Status de bloqueio atual.........................................................................................................................................436 SYS(2012) - Tamanho do bloco do campo Memo.....................................................................................................................436 SYS(2013) - Seqncia de nomes do menu do sistema.............................................................................................................437 SYS(2014) - Caminho mnimo...................................................................................................................................................437 SYS(2018) - Parmetro da mensagem de erro...........................................................................................................................438 SYS(2019) - Nome e localizao do arquivo de configurao..................................................................................................438 SYS(2020) - Tamanho padro de disco......................................................................................................................................439 SYS(2021) - Expresso de ndice filtrada..................................................................................................................................439 SYS(2022) - Tamanho do grupo no disco..................................................................................................................................440 SYS(2023) - caminho temporrio...............................................................................................................................................440 SYS(2029) - Tipo de tabela........................................................................................................................................................440 SYS(3050) - Definir tamanho do buffer de memria.................................................................................................................441 SYS(3051) - Definir o intervalo de tentativa de bloqueio..........................................................................................................442 TABLEREVERT( ), funo.......................................................................................................................................................443 TABLEUPDATE( ), funo.......................................................................................................................................................444 TAG( ), funo...........................................................................................................................................................................446 TAN( ), funo...........................................................................................................................................................................447 TEXT ... ENDTEXT, comando..................................................................................................................................................448 TIME( ), funo..........................................................................................................................................................................449 TOTAL, comando......................................................................................................................................................................449 TRANSFORM( ), funo...........................................................................................................................................................450 TRIM( ), funo..........................................................................................................................................................................451 TTOC( ), funo.........................................................................................................................................................................452 TTOD( ), funo.........................................................................................................................................................................452 TXTWIDTH( ), funo...............................................................................................................................................................453 TYPE( ), funo..........................................................................................................................................................................454 TYPE, comando..........................................................................................................................................................................455 UNLOCK, comando...................................................................................................................................................................456 UPPER( ), funo.......................................................................................................................................................................457 USE, comando............................................................................................................................................................................457 USED( ), funo.........................................................................................................................................................................460 VAL( ), funo...........................................................................................................................................................................461 VALIDATE DATABASE, comando.........................................................................................................................................461 VERSION( ), funo..................................................................................................................................................................462 SYS( ), viso geral das funes..................................................................................................................................................463 WAIT, comando.........................................................................................................................................................................465 WFONT( ), funo.....................................................................................................................................................................466 WITH ... ENDWITH, comando.................................................................................................................................................467 WTITLE( ), funo.....................................................................................................................................................................468 YEAR( ), funo.........................................................................................................................................................................469 ZAP, comando............................................................................................................................................................................469 ZOOM WINDOW, comando.....................................................................................................................................................470 APENDICE PRTICO..............................................................................................................................................................472 COMANDOS QUE RETORNAM COM OS VALORES DA RESOLUO DE VIDEO EM USO.....................................472

[Pg.: 9]

COMANDOS E FUNES RUN | !, comando Executa programas ou comandos operacionais externos. Sintaxe RUN [/N [K]] ComandoMS-DOS | NomePrograma Ou ! [/N [K]] ComandoMS-DOS | NomePrograma Argumentos ComandoMS-DOS Especifica o comando do MS-DOS a ser executado. Consulte a documentao do MSDOS para obter maiores informaes sobre os comandos disponveis. NomePrograma Especifica o programa ou o aplicativo a ser executado. Poder ser especificado um programa ou aplicativo baseado no Windows ou no MS-DOS. /N [K] Especifica NOWAIT. Inclua a letra N (no substitua N por um valor numrico nem inclua K) para executar outro aplicativo do Windows. Comentrios possvel emitir RUN de dentro da janela Comando ou de outro programa. Importante Para utilizar RUN, voc precisa ter o arquivo de sistema operacional COMMAND.COM no diretrio atual ou esse arquivo dever estar localizado onde o parmetro MS-DOS COMSPEC possa encontr-lo. Para obter maiores informaes sobre COMSPEC, consulte a documentao do MS-DOS. Cuidado No utilize RUN para executar programas de reorganizao de disco, como o CHKDSK, a partir do Visual FoxPro. Esses programas modificam o contedo do seu disco de maneira a impedir o bom funcionamento do Visual FoxPro. RUN e Visual FoxPro Quando RUN utilizado para executar programas fora do Visual FoxPro, ele pesquisa os programas de forma um pouco diferente do FoxPro para MS-DOS. Se o programa especificado em RUN no possuir uma extenso, o Visual FoxPro procurar primeiro, no caminho do MS-DOS, um arquivo PIF (Program Information File) com o nome que voc indicou. Esse arquivo permite a execuo de um programa no Windows no Windows. Voc poder especificar parmetros para o programa, ou seja, se ele executado em uma janela ou na tela inteira, o total de memria alocado para o programa etc. Se o PIF for encontrado, o programa nele especificado ser executado com os parmetros PIF. Caso contrrio, ser feita uma procura no caminho do MS-DOS para encontrar um arquivo executvel com o nome que voc indicar. Quando um PIF no encontrado, o Visual FoxPro utiliza o FOXRUN.PIF, um PIF instalado no diretrio do Visual FoxPro. O FOXRUN.PIF configurado para executar o programa em uma janela. possvel modificar o FOXRUN.PIF para que execute programas com outra configurao. FOXRUN.PIF O FOXRUN.PIF permite a execuo de programas e comandos do MS-DOS e do Windows a partir do Visual FoxPro. O FOXRUN.PIF deve estar no mesmo diretrio que VFP.EXE no Visual FoxPro.

[Pg.: 10]

/N significa NOWAIT. Inclua a letra N (no substitua N por um valor numrico nem inclua K) para executar outro aplicativo do Windows. Por exemplo, a instruo a seguir abre o acessrio Mapa de caracteres do Windows: ! /N CHARMAP.EXE No exemplo a seguir, o Selecionador de cores aberto no Painel de controle do Windows: ! /N CONTROL COLOR Um aplicativo do Windows executado com RUN /N ou ! /N apresenta o mesmo comportamento que quando aberto atravs do Gerenciador de Programas ou do Gerenciador de Arquivos. Voc pode alternar entre o aplicativo e o Visual FoxPro ou o FoxPro para Windows utilizando as operaes padro do Windows. Para especificar como o aplicativo do Windows ser aberto, inclua um valor numrico opcional imediatamente aps /N. No inclua espaos entre /N e o valor numrico. A tabela a seguir lista os valores numricos que podem ser includos e descreve o estado do aplicativo do Windows quando ele aberto. Valor Atributos do aplicativo 1 2 3 4 7 Ativo e tamanho normal Ativo e minimizado Ativo e maximizado Inativo e tamanho normal Inativo e minimizado

Executando programas do MS-DOS no Visual FoxPro Como padro, o FOXRUN.PIF executa o programa do MS-DOS externo especificado em uma janela. Enquanto o programa ou comando do MS-DOS executado, o ttulo da janela Executar Comando do FoxPro. No Visual FoxPro, a janela Executar Comando do FoxPro fechada aps a execuo do comando ou do programa externo. Voc pode utilizar o editor PIF do Windows para personalizar o FOXRUN.PIF. O PIF pode ser editado para especificar se a janela Executar Comando do Visual FoxPro Inativo deve ser mantida aberta ou fechada (padro no Visual FoxPro) usando a caixa de verificao Fechar janela ao sair. Tambm possvel abrir programas externos em uma tela inteira selecionando Tela inteira, Alocar memria para o programa, etc. Consideraes de memria Como padro, o FOXRUN.PIF aloca um mnimo de 256K de memria para a execuo de um comando ou programa externo. Se voc no tiver 256K de memria convencional livre, o Visual FoxPro exibir uma mensagem de erro. Para corrigir tal mensagem, experimente um ou mais dos procedimentos a seguir: Feche os aplicativos e arquivos para liberar memria adicional. Edite o FOXRUN.PIF para reduzir o total exigido de memria na caixa de texto KB Requerido.

Se o comando externo exigir mais de 256K, o MS-DOS exibir uma mensagem de erro na janela Executar Comando do Visual FoxPro. Para corrigir tal erro, edite o FOXRUN.PIF para aumentar o total de memria necessrio na caixa de texto KB Requerido. $, operador Retorna verdadeiro (.T.) se uma expresso de caracteres estiver contida em outra expresso de caracteres; caso contrrio, retorna falso (.F.). Sintaxe cProcurarPor $ cProcurarEm

[Pg.: 11]

Tipos de retorno Lgico Argumentos cProcurarPor cProcurarEm Especifica a expresso procurada em cProcurarEm. Especifica a expresso procurada para ver se ela contm cProcurarPor.

Se cProcurarPor for localizado em cProcurarEm, $ retornar verdadeiro (.T.); caso contrrio, retornar falso (.F.). cProcurarPor e cProcurarEm podem ser variveis do tipo Caractere ou elementos de matriz, campos do tipo Caractere, literais de seqncia de caracteres ou campos Memo de qualquer tamanho. Os campos Memo podem ser manipulados como expresses de caracteres, campos em tabelas, variveis ou elementos de matriz. Por exemplo, se MEMO_FLD for um campo Memo, a linha abaixo ser aceitvel: LIST FOR 'FOX' $ UPPER(memo_fld) Comentrios Se a expresso de caracteres no for localizada, ser retornado falso (.F.). O operador $ considera maisculas/minsculas e no otimizado por Rushmore.

%, operador Retorna o resto (mdulo) obtido pela diviso de uma expresso numrica por outra. Sintaxe nDividendo % nDivisor Argumentos nDividendo Especifica o dividendo (a expresso numrica que est sendo dividida). O nmero de casas decimais em nDividendo determina o nmero de casas decimais no resultado. nDivisor Especifica o divisor (a expresso numrica que divide o dividendo nDividendo). Se nDivisor for positivo, ser retornado um nmero positivo; se nDivisor for negativo, ser retornado um nmero negativo. nDivisor no pode ser zero. Comentrios O operador de mdulo (%) e MOD( ) retornam resultados idnticos. O operador de mdulo (%) um operador aritmtico. Outros operadores aritmticos so: + (adio), (subtrao), * (multiplicao), / (diviso) e ^ (exponenciao). Quando esses operadores forem combinados em uma expresso numrica, % ter a mesma precedncia que * e /. &&, comando Indica o incio de um comentrio no-executvel em uma linha de um arquivo de programa.

[Pg.: 12]

Sintaxe && [Comentrios] Argumentos Comentrios Indica que o texto que se segue um comentrio em uma linha. Por exemplo: STORE (20*12) TO gnPayments && 20 anos de pagamentos mensais A insero de comentrios em uma linha para denotar o fim dos comandos de programao estruturada IF ... ENDIF, DO e FOR ... ENDFOR melhora consideravelmente a legibilidade dos programas. Comentrios Coloque um ponto-e-vrgula (;) no final de cada linha de comentrio que continue na linha seguinte. No possvel colocar && e um comentrio depois do ponto-e-vrgula utilizado para continuar uma linha de comando em uma linha adicional. *, comando Indica o incio de uma linha de comentrio no-executvel em um arquivo de programa. Sintaxe * [Comentrios] Argumentos Comentrios Especifica o comentrio na linha de comentrio. Por exemplo: * Isto um comentrio Comentrios Coloque um ponto-e-vrgula (;) no final de cada linha de comentrio que continue na prxima linha. @ ... CLEAR, comando Limpa uma parte da janela principal do Visual FoxPro ou de uma janela definida pelo usurio. Sintaxe @ nLinha1, nColuna1 [CLEAR | CLEAR TO nLinha2, nColuna2] Argumentos @ nLinha1, nColuna1 CLEAR Limpa uma rea retangular cujo canto superior esquerdo comea em nLinha1 e nColuna1 e continua at o canto inferior direito da janela principal do Visual FoxPro ou de uma janela definida pelo usurio. CLEAR TO nLinha2, nColuna2 Limpa uma rea retangular cujo canto superior esquerdo est em nLinha1 e nColuna1 e cujo canto inferior direito est em nLinha2 e nColuna2.

[Pg.: 13]

Comentrios Se CLEAR ou CLEAR TO forem omitidos, o Visual FoxPro limpar nLinha1 da nColuna1 at o final da linha. @ ... FILL, exemplo do comando O exemplo a seguir limpa a janela principal do Visual FoxPro e preenche uma rea com uma cor. ACTIVATE SCREEN CLEAR @ 4,1 FILL TO 10, 8 COLOR GR+/B @ ... SCROLL, comando Move uma rea da janela principal do Visual FoxPro ou uma janela definida pelo usurio para cima, para baixo, para a esquerda ou para a direita. Sintaxe @ nLinha1, nColuna1 TO nLinha2, nColuna2 SCROLL [UP | DOWN | LEFT | RIGHT] [BY nQuantidadeMovida] Argumentos @ nLinha1, nColuna1 TO nLinha2, nColuna2 SCROLL Move uma rea retangular cujo canto superior esquerdo se encontra em nLinha1, nColuna1 e o canto inferior direito em nLinha2, nColuna2. UP | DOWN | LEFT | RIGHT Especifica a direo na qual a rea retangular ser movida. Se uma clusula de direo for omitida, a rea ser movida para cima. BY nQuantidadeMovida Especifica o nmero de linhas ou colunas que a rea retangular ser movida. Se BY nQuantidadeMovida for omitido, a regio ser movida uma linha ou coluna. \ | \\, comando Imprime ou exibe linhas de texto. Sintaxe \LinhaTexto Ou \\LinhaTexto Argumentos \LinhaTexto Quando voc utiliza \, a linha de texto precedida por um retorno de carro e uma alimentao de linha. \\LinhaTexto Quando voc utiliza \\, a linha de texto no precedida por um retorno de carro e uma alimentao de linha. Qualquer espao antes de \ e \\ no includo na linha de sada, mas os espaos aps \ e \\ so includos.

[Pg.: 14]

Voc pode incorporar uma expresso linha de texto. Se a expresso estiver entre delimitadores de mesclagem de textos (<< >>, como padro) e SET TEXTMERGE estiver ativado (ON), a expresso ser avaliada e seu valor ser fornecido como texto. Comentrios Os comandos \ e \\ facilitam a mesclagem de textos no Visual FoxPro. A mesclagem de textos permite que voc oriente a sada do texto para um arquivo para criar cartas-formulrio ou programas. Utilize \ e \\ para orientar a sada de uma linha de texto para o atual arquivo de sada da mesclagem de textos e para a tela. SET TEXTMERGE utilizado para especificar o arquivo de sada da mesclagem de textos. Se a mesclagem de textos no for direcionada a um arquivo, a linha de texto ser fornecida apenas para a janela principal do Visual FoxPro ou para a janela de sada ativa definida pelo usurio. SET TEXTMERGE NOSHOW suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usurio. \ | \\, exemplo do comando CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE Customer && Abre tabela customer SET TEXTMERGE ON SET TEXTMERGE TO letter.txt \<<CDOW(DATE( ))>>, <<CMONTH(DATE( ))>> \\ <<DAY(DATE( ))>>, <<YEAR(DATE( ))>> \ \ \Caro <<contact>> \Texto adicional \ \Grato, \ \Companhia XYZ CLOSE ALL MODIFY FILE letter.txt NOEDIT =, comando Avalia uma ou mais expresses. Sintaxe = Expresso1 [, Expresso2 ...] Argumentos Expresso1 [, Expresso2 ...] Especifica a expresso ou as expresses avaliadas pelo comando =. Comentrios O comando = avalia uma ou mais expresses, Expresso1, Expresso2 ... e descarta os valores de retorno. Essa opo particularmente til quando uma funo do Visual FoxPro ou uma funo definida pelo usurio tem um efeito desejado, mas no h necessidade de atribuir o valor de retorno da funo a uma varivel, elemento de matriz ou campo. Por exemplo, para ativar o modo de insero, voc pode emitir o comando:
[Pg.: 15]

= INSMODE(.T.) INSMODE normalmente retorna um valor verdadeiro (.T.) ou falso (.F.). No exemplo acima, a funo executada, mas o valor de retorno descartado. Se apenas uma expresso (Expresso1) for includa, o sinal de igualdade ser opcional. Observao O sinal de igualdade (=) pode ser utilizado de duas formas no-relacionadas. Pode-se utiliz-lo como um operador em expresses lgicas para fazer uma comparao ou para atribuir valores a variveis e a elementos de matriz. Nesses dois casos, o sinal de igualdade (=) um operador e no um comando. ABS( ), funo Retorna o valor absoluto da expresso numrica especificada. Sintaxe ABS(nExpresso) Tipos de retorno Numrico Argumentos nExpresso Especifica a expresso numrica cujo valor absoluto a funo ABS( ) retorna. ABS( ), exemplo da funo ? ABS(-45) && Exibe 45 ? ABS(10-30) && Exibe 20 ? ABS(30-10) && Exibe 20 STORE 40 TO gnNumber1 STORE 2 TO gnNumber2 ? ABS(gnNumber2-gnNumber1)

&& Exibe 38 ACOS( ), funo

Retorna o arco co-seno de uma expresso numrica especificada. Sintaxe ACOS(nExpresso) Tipos de retorno Numrico Argumentos nExpresso Especifica uma expresso numrica cujo arco co-seno a funo ACOS( ) retorna. O valor de nExpresso pode variar de 1 a +1. O valor retornado por ACOS( ) varia de 0 a pi (3,141592). O nmero de casas decimais retornado por ACOS( ) determinado por SET DECIMALS. Utilize RTOD( ) para converter radianos para graus.

[Pg.: 16]

Comentrios O arco co-seno retornado em radianos. ACOS( ), exemplo da funo CLEAR ? RTOD(ACOS(0)) && Exibe 90.00 STORE -1 to gnArcAngle ? RTOD(ACOS(gnArcAngle)) && Exibe 180.00 ? RTOD(ACOS(SQRT(2)/2)) && Exibe 45.00 ACTIVATE SCREEN, comando Envia toda a sada subseqente para a janela principal do Visual FoxPro, em vez de enviar para a janela definida pelo usurio que est ativa. Sintaxe ACTIVATE SCREEN Comentrios Utilize o comando ACTIVATE WINDOW para direcionar a sada para uma janela definida pelo usurio. ACTIVATE WINDOW, comando Exibe e ativa uma ou mais janelas definidas pelo usurio ou janelas do sistema do Visual FoxPro. Sintaxe ACTIVATE WINDOW NomeJanela1 [, NomeJanela2 ...] | ALL [IN [WINDOW] NomeJanela3 | IN SCREEN] [BOTTOM | TOP | SAME] [NOSHOW] Argumentos NomeJanela1 [, NomeJanela2 ...] Especifica o nome de cada janela a ser ativada. Separe os nomes das janelas com vrgulas. No Visual FoxPro, voc pode especificar o nome de uma barra de ferramentas para ativar a janela. Consulte SHOW WINDOW para obter uma lista de nomes das barras de ferramentas do Visual FoxPro. ALL Especifica que todas as janelas sejam ativadas. A ltima janela ativada a janela de sada ativa. IN [WINDOW] NomeJanela3 Especifica o nome da janela pai dentro da qual a janela colocada e ativada. A janela ativada torna-se uma janela filho. A janela pai pode ter vrias janelas filho. Uma janela filho ativada dentro de uma janela pai no pode ser movida para fora. Caso a janela pai seja movida, a janela filho ser movida junto com ela. Observao A janela pai deve estar visvel para que qualquer uma de suas janelas filho fique visvel. IN SCREEN Coloca e ativa uma janela na janela principal do Visual FoxPro. Uma janela pode colocada em uma janela pai, incluindo-se IN WINDOW em DEFINE WINDOW quando a janela for criada. A incluso da
[Pg.: 17]

clusula IN SCREEN em ACTIVATE WINDOW substitui a clusula IN WINDOW em DEFINE WINDOW. BOTTOM | TOP | SAME Especifica onde as janelas so ativadas em relao a outras janelas anteriormente ativadas. Como padro, uma janela torna-se a janela frontal quando ativada. A incluso de BOTTOM coloca uma janela atrs de todas as outras janelas. TOP ir coloc-la na frente de todas as outras. SAME ativa uma janela sem afetar o seu posicionamento. NOSHOW Ativa e direciona a sada para uma janela sem exibir a janela. Comentrios Janelas definidas pelo usurio so criadas com DEFINE WINDOW. Quando uma janela ativada, ela passa a ser a janela frontal e toda a sada direcionada para ela. A sada pode ser direcionada apenas para uma janela de cada vez. A janela permanece como a janela de sada ativa at ser desativada ou liberada ou at que outra janela ou a janela principal do Visual FoxPro seja ativada. Os nomes de janelas definidas pelo usurio so exibidos na parte inferior do menu Janela. O nome da janela ativa, definida pelo usurio, est selecionada com uma marca de verificao. possvel colocar mais de uma janela ao mesmo tempo na janela principal do Visual FoxPro, mas a sada ser direcionada somente para a janela ativada por ltimo. Quando mais de uma janela estiver aberta, se a janela de sada ativa for desativada, ela ser removida da janela principal do Visual FoxPro e a sada subseqente ser enviada para outra janela. Caso nenhuma janela de sada esteja ativa, a sada ser direcionada para a janela principal do Visual FoxPro. Para garantir que a sada seja direcionada para uma janela especfica quando a janela de sada ativa for desativada, voc deve ativar explicitamente a janela para a qual deseja enviar a sada com o comando ACTIVATE WINDOW. Todas as janelas ativadas so exibidas at que o comando DEACTIVATE WINDOW ou HIDE WINDOW seja executado para remov-las da tela. A emisso de qualquer um destes comandos remove as janelas da tela, mas no da memria. Para exibir novamente as janelas, execute o comando ACTIVATE WINDOW ou SHOW WINDOW. Para remover janelas da tela e da memria, utilize CLEAR WINDOWS, RELEASE WINDOWS ou CLEAR ALL. necessrio redefinir as janelas removidas da memria para coloc-las novamente na janela principal do Visual FoxPro. Voc pode utilizar ACTIVATE WINDOW para colocar as janelas do sistema na janela principal do Visual FoxPro ou em uma janela pai. As janelas do sistema a seguir podem ser abertas com ACTIVATE WINDOW: Comando Chamar pilha Sesso de dados De depurao Depurar sada Locais Rastrear Observar

Para ativar uma janela do sistema e/ou uma barra de ferramentas, coloque o Nome todo da janela do sistema ou da barra de ferramentas entre aspas. Por exemplo, para ativar a janela de depurao Chamar Pilha no Visual FoxPro, execute o comando a seguir: ACTIVATE WINDOW Chamar Pilha

[Pg.: 18]

Utilize HIDE WINDOW ou RELEASE WINDOW para remover uma janela do sistema da janela principal do Visual FoxPro ou de uma janela pai. ACTIVATE WINDOW, exemplo do comando O exemplo a seguir define e ativa uma janela denominada output, colocando-a na janela principal do Visual FoxPro. O comando WAIT pausa a execuo, a janela oculta e, em seguida, reexibida. CLEAR DEFINE WINDOW output FROM 2,1 TO 13,75 TITLE 'Sada' ; CLOSE FLOAT GROW SHADOW ZOOM ACTIVATE WINDOW output WAIT WINDOW 'Pressione qualquer tecla para ocultar a janela Sada' HIDE WINDOW output WAIT WINDOW 'Pressione qualquer tecla para exibir a janela Sada' SHOW WINDOW output WAIT WINDOW 'Pressione qualquer tecla para liberar a janela Sada' RELEASE WINDOW output ADATABASES( ), funo Coloca os nomes de todos os bancos de dados abertos e seus caminhos em uma matriz de varivel. Sintaxe ADATABASES(NomeMatriz) Tipos de retorno Numrico Argumentos NomeMatriz Especifica o nome da matriz. Caso a matriz especificada no exista, o Visual FoxPro ir cri-la automaticamente. Caso a matriz exista e no seja grande o suficiente para conter todas as informaes de banco de dados, o Visual FoxPro aumentar automaticamente o tamanho da matriz para que comporte as informaes. Caso a matriz seja maior do que o necessrio, o Visual FoxPro ir trunc-la. Caso a matriz exista e ADATABASES( ) retorne 0, porque no h bancos de dados abertos, a matriz permanecer inalterada. Caso a matriz no exista e ADATABASES( ) retorne 0, a matriz no ser criada. Comentrios Os nomes de todos os bancos de dados abertos na sesso de dados atual so colocados em uma matriz de varivel. A funo ADATABASES( ) cria uma matriz bidimensional. A primeira coluna da matriz contm os nomes dos bancos de dados abertos e a segunda coluna contm os caminhos dos bancos de dados. ADATABASES( ) retorna o nmero de nomes de bancos de dados (linhas) na matriz. Caso nenhum banco de dados esteja aberto, ADATABASES( ) ir retornar 0 e a matriz no ser criada. ADATABASES( ), exemplo da funo O exemplo a seguir abre o banco de dados testdata e, em seguida, utiliza ADATABASES( ) para criar uma matriz denominada gaDatabase contendo os nomes de todos os bancos de dados abertos. SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dados OPEN DATABASE testdata && Abre o banco de dados CLEAR ? ADATABASES(gaDatabase) && Cria uma matriz de bancos de dados abertos
[Pg.: 19]

DISPLAY MEMORY LIKE gadatabase && Exibe o contedo da matriz CLOSE DATABASES ADD TABLE, comando Adiciona uma tabela livre ao banco de dados atual. Sintaxe ADD TABLE NomeTabela | ? [NAME NomeTabelaExtenso] Argumentos NomeTabela Especifica o nome da tabela que est sendo adicionada ao banco de dados. ? Exibe a caixa de dilogo Abrir, na qual voc pode selecionar uma tabela a ser adicionada ao banco de dados. NAME NomeTabelaExtenso Especifica um nome extenso para a tabela. Nomes extensos podem conter at 128 caracteres, podendo ser utilizados no lugar de nomes de arquivos reduzidos com extenso .DBF. Comentrios Depois que for adicionada ao banco de dados, voc poder executar as mesmas operaes na tabela assim como em qualquer outra tabela. Uma vez adicionada ao banco de dados, a tabela no estar mais livre. No entanto, ser possvel liberar qualquer tabela do banco de dados ao se executar REMOVE TABLE. A tabela que est sendo adicionada: Deve ser um arquivo .DBF vlido. No pode ter o mesmo nome de uma tabela existente no banco de dados aberto, a menos que seja atribudo tabela um nome extenso nico. No pode existir em outro banco de dados. Utilize REMOVE TABLE para remover a tabela do outro banco de dados. O banco de dados ao qual a tabela est sendo adicionada no pode estar envolvido em uma transao. ADD TABLE, exemplo do comando O exemplo a seguir cria dois bancos de dados denominados mydbc1 e mydbc2 e uma tabela denominada table1. Ao ser criada, a tabela adicionada a mydbc1. A tabela ento fechada e removida de mydbc1. Em seguida, ADD TABLE utilizado para adicionar a tabela a mydbc2. RENAME TABLE utilizado para mudar o nome da tabela de table1 para table2. CREATE DATABASE mydbc1 CREATE DATABASE mydbc2 SET DATABASE TO mydbc1 CREATE TABLE table1 (cField1 C(10), n N(10)) && Adiciona tabela a mydbc1 CLOSE TABLES && Uma tabela deve estar fechada para ser removida de um banco de dados REMOVE TABLE table1 SET DATABASE TO mydbc2 ADD TABLE table1 RENAME TABLE table1 TO table2

[Pg.: 20]

ADEL( ), funo Exclui um elemento de uma matriz unidimensional ou uma linha, ou coluna de uma matriz bidimensional. Sintaxe
ADEL(NomeMatriz, nNmeroElemento [, 2])

Tipos de retorno Numrico Argumentos NomeMatriz Especifica a matriz da qual a linha, coluna ou o elemento excludo. nNmeroElemento Especifica o nmero do elemento, linha ou coluna a ser excludo da matriz. Para excluir uma coluna da matriz, inclua o argumento opcional 2. Para obter maiores informaes sobre como fazer referncia a elementos em uma matriz, consulte DIMENSION. 2 Exclui uma coluna da matriz. Comentrios A excluso de um elemento, linha ou coluna de uma matriz no altera o seu tamanho; em vez disso, as linhas, colunas ou os elementos direita so movidos em direo ao incio da matriz e o ltimo elemento, linha ou coluna da matriz definido como falso (.F.). Caso o elemento, a linha ou coluna sejam excludos com sucesso, retorna o nmero 1. ADEL( ), exemplo da funo O exemplo a seguir cria e preenche uma matriz e, em seguida, procura por um determinado nome de empresa que, se encontrado, ser removido da matriz. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre tabela customer SELECT company FROM customer ; WHERE country = 'UK' ; INTO ARRAY gaCompanies gnCount = _TALLY gcName = 'Seven Seas Imports' CLEAR DISPLAY MEMORY LIKE gaCompanies gnPos = ASCAN(gaCompanies, gcName) && Procura pela empresa IF gnPos != 0 * Empresa encontrada, remova-a da matriz = ADEL(gaCompanies, gnPos) gnCount = gnCount - 1 ENDIF DISPLAY MEMORY LIKE gaCompanies

[Pg.: 21]

ADIR( ), funo Coloca informaes sobre arquivos em uma matriz e, em seguida, retorna o nmero de arquivos. Sintaxe ADIR(NomeMatriz [, cEstruturaArquivo [, cAtributo]]) Tipos de retorno Numrico Argumentos NomeMatriz Especifica o nome da matriz. Se a matriz includa no existir, o Visual FoxPro ir cri-la automaticamente. Se existir e no for suficientemente grande para conter todas as informaes, o Visual FoxPro aumentar, automaticamente, o seu tamanho para que comporte as informaes. Se a matriz for maior do que o necessrio, o Visual FoxPro ir trunc-la. Se a matriz existir e ADIR( ) retornar a 0 por no ter localizado nenhum arquivo correspondente, a matriz permanecer inalterada. Se no existir e ADIR( ) retornar a 0, a matriz no ser criada. A tabela a seguir descreve os contedos e tipos de dados de cada coluna da matriz: ColunaContedo da matriz Tipo de dados 1 Nomes dos arquivos Caractere 2 Tamanho dos arquivos Numrico 3 Datas da ltima modificao Data 4 Horrio da ltima modificao Caractere 5 Atributos dos arquivos Caractere A ltima coluna da matriz contm os atributos dos arquivos correspondentes. Cada atributo de arquivo expresso por uma letra e um arquivo pode ter mais de um atributo. A tabela abaixo indica o atributo de arquivo que cada letra representa: Letra Atributo A Arquivo - leitura/gravao H Oculto R Somente para leitura S Sistema D Diretrio ou pasta cEstruturaArquivo Especifica uma estrutura de arquivo para que voc possa armazenar informaes sobre arquivos com nomes ou extenses correspondentes a um critrio de pesquisa. Por exemplo, o critrio pode ser todas as tabelas, todos os arquivos de texto, todos os arquivos com nomes que comeam pela letra A e assim por diante. Estas pesquisas gerais so feitas incluindo-se os caracteres curinga * e ? em cEstruturaArquivo . O ponto de interrogao representa um nico caractere e o asterisco representa qualquer quantidade de caracteres. Pode-se utilizar qualquer quantidade de caracteres curinga em qualquer posio dentro da estrutura de arquivo. Voc pode especificar uma unidade e/ou diretrio para pesquisar nomes de arquivo correspondentes. Se a unidade e o diretrio no forem especificados, o Visual FoxPro colocar as informaes sobre os arquivos do diretrio atual na matriz. cAtributo Especifica a incluso de subdiretrios e arquivos ocultos ou do sistema.

[Pg.: 22]

cAtributo pode conter qualquer combinao de D, H e S. A incluso de D retorna nomes de subdiretrios do diretrio atual, alm dos nomes de arquivos correspondentes estrutura de arquivo especificado em cEstruturaArquivo. A incluso de H retorna informaes sobre arquivos ocultos que correspondem estrutura de arquivo especificada em cEstruturaArquivo. A incluso de S retorna informaes sobre arquivos do sistema correspondentes estrutura de arquivo especificada em cEstruturaArquivo. Inclua uma seqncia vazia em cEstruturaArquivo para retornar somente nomes de subdiretrios, arquivos ocultos ou arquivos do sistema. Comentrios Para cada arquivo, ADIR( ) coloca na matriz o nome, o tamanho, a data e o horrio da ltima modificao e os atributos do arquivo. ADIR( ), exemplo da funo O exemplo a seguir utiliza ADIR( ) para criar uma matriz contendo informaes de banco de dados. Em seguida, os nomes dos bancos de dados so exibidos. CLOSE DATABASES SET PATH TO (HOME( ) + 'samples\data') gnDbcnumber = ADIR(gaDatabase, '*.DBC') && Cria matriz CLEAR FOR nCount = 1 TO gnDbcnumber && Loop para nmero de bancos de dados ? gaDatabase(nCount,1) && Exibe nomes de bancos de dados ENDFOR SET PATH TO HOME( ) && Define caminho para diretrio do Visual FoxPro AELEMENT( ), funo Retorna o nmero de um elemento de matriz a partir dos ndices do elemento. Sintaxe AELEMENT(NomeMatriz, nndiceLinha [, nndiceColuna]) Tipos de retorno Numrico Argumentos NomeMatriz Especifica o nome da matriz cujo nmero do elemento voc deseja retornar. nndiceLinha Especifica o ndice de linha. Se a matriz for unidimensional, AELEMENT( ) ir retornar ao mesmo valor de nndiceLinha. Se voc incluir apenas nndiceLinha e ele for maior do que o nmero de linhas na matriz, o Visual FoxPro exibir uma mensagem de erro. nndiceColuna nndiceColuna. Especifica o ndice de coluna. Se a matriz for bidimensional, inclua nndiceLinha e Comentrios Voc pode referir-se a um elemento de uma matriz bidimensional de duas maneiras. O primeiro mtodo utiliza dois ndices para especificar a posio da linha e da coluna do elemento na matriz e o segundo mtodo
[Pg.: 23]

utiliza o nmero de um nico elemento. AELEMENT( ) retorna o nmero do elemento quando fornecido com ndices de linha e coluna de um elemento. As funes do Visual FoxPro ADEL( ), ADIR( ), AFIELDS( ), AINS( ), ALEN( ), ASCAN( ), ASORT( ) e ASUBSCRIPT( ) podem manipular matrizes bidimensionais e exigem que a referncia aos elementos seja feita pelo nmero do elemento. AELEMENT( ) facilita a converso de ndices para um nmero de elemento para uso por meio dessas funes. Os ndices de linha e coluna correspondentes podem ser retornados de um nmero de elemento com ASUBSCRIPT( ). O exemplo a seguir ilustra a criao de uma matriz com duas linhas e trs colunas. DISPLAY MEMORY exibe o contedo dos elementos da matriz listados na ordem dos nmeros de elementos. DIMENSION gaMyArray(2,3) DISPLAY MEMORY LIKE gaMyArray gaMyArray Pub A ( 1, 1) L .F. (elemento nmero 1) ( 1, 2) L .F. (elemento nmero 2) ( 1, 3) L .F. (elemento nmero 3) ( 2, 1) L .F. (elemento nmero 4) ( 2, 2) L .F. (elemento nmero 5) ( 2, 3) L .F. (elemento nmero 6) Pode-se fazer referncia a um elemento pelos seus ndices ou pelo seu nmero de elemento. Os comandos STORE INVOICE TO gaMyArray(2, 1) e STORE INVOICE TO gaMyArray(4) armazenam a seqncia de caracteres INVOICE no mesmo elemento de matriz. Em matrizes unidimensionais, o nmero do elemento idntico ao seu ndice de linha nica. No necessrio utilizar AELEMENT( ) com matrizes unidimensionais. AERROR( ), funo Cria uma matriz de varivel que contm informaes sobre o erro mais recente do ODBC, OLE ou Visual. FoxPro Sintaxe AERROR(NomeMatriz) Tipos de retorno Numrico Argumentos NomeMatriz Especifica o nome da matriz criada por AERROR( ). Comentrios A funo AERROR( ) cria uma matriz com seis colunas e retorna o nmero de linhas da matriz. O tipo de erro ocorrido determina o nmero de linhas da matriz. A tabela a seguir descreve o contedo de cada elemento quando ocorre um erro do Visual FoxPro. Na ocorrncia de um erro, a matriz conter uma linha. Nmero do elemento Descrio 1 2 Numrico. Contm o nmero do erro. Idntico ao valor retornado por ERROR( ). Caractere. O texto da mensagem de erro. Idntico ao valor retornado por MESSAGE( ).

[Pg.: 24]

3 O valor nulo. No entanto, se o erro possuir um parmetro de erro adicional, ir conter o texto do parmetro de erro. Idntico ao valor retornado por SYS(2018). 4 O valor nulo. No entanto, quando apropriado, contm o nmero da rea de trabalho em que o erro ocorreu. 5 O valor nulo. No entanto, se um disparador falhar (erro 1539), ir conter um dos valores numricos abaixo: 1 - Erro no Disparador de insero. 2 - Erro no Disparador de atualizao. 3 - Erro no Disparador de excluso. 6 O valor nulo. 7 O valor nulo. A tabela a seguir descreve o contedo de cada elemento quando ocorrem os erros de OLE nmero 1427 ou 1429. Nestes casos, a matriz contm uma linha. Nmero do elemento Descrio 1 Numrico. Contm 1427 ou 1429. 2 Caractere. O texto da mensagem de erro do Visual FoxPro. 3 Caractere. O texto da mensagem de erro de OLE. 4 Caractere. O nome do aplicativo (Microsoft Excel, por exemplo). 5 O valor nulo ou Caractere. Contm o nome do arquivo de Ajuda do aplicativo em que podem ser encontradas maiores informaes sobre o erro, se as informaes estiverem disponveis no aplicativo; caso contrrio, contm o valor nulo. 6 O valor nulo ou Caractere. Contm o identificador de contexto da Ajuda para o tpico apropriado, se as informaes estiverem disponveis no aplicativo; caso contrrio, contm o valor nulo. 7 Numrico. Um nmero de exceo OLE 2.0. A tabela a seguir descreve o contedo de cada elemento quando ocorre um erro do ODBC de nmero 1526. Neste caso, a matriz contm duas ou mais linhas; uma linha para cada erro do ODBC. Nmero do elemento Descrio 1 2 3 4 5 6 7 Numrico. Contm 1526. Caractere. O texto da mensagem de erro. Caractere. O texto da mensagem de erro do ODBC. Caractere. O estado atual do ODBC SQL. Numrico. O nmero do erro da fonte de dados do ODBC. Numrico. O identificador de conexo do ODBC. O valor nulo. AERROR( ), exemplo da funo O exemplo a seguir utiliza ON ERROR para especificar uma rotina de manipulao de erros denominada errhand. Um erro gerado emitindo-se um comando com erro de ortografia (BRWS). A rotina de manipulao de erros errhand utiliza AERROR( ) para criar uma matriz contendo informaes de erro e essa informao , ento, exibida. ON ERROR DO errhand && errhand o procedimento para manipular erros

BRWS && Causa um erro de sintaxe ON ERROR && Restaura o manipulador de erros do sistema PROCEDURE errhand = AERROR(aErrorArray) && Dadas do erro mais recente CLEAR ? 'O erro apresentou as seguintes informaes' && Exibe mensagem FOR n = 1 TO 7 && Exibe todos os elementos da matriz ? aErrorArray(n) ENDFOR

[Pg.: 25]

AFIELDS( ), funo Coloca as informaes sobre a estrutura da tabela atual em uma matriz e retorna o nmero de campos da tabela. Sintaxe AFIELDS(NomeMatriz [, nreaTrabalho | cAliasTabela]) Tipos de retorno Numrico Argumentos NomeMatriz Especifica uma matriz na qual so colocadas informaes sobre a estrutura da tabela. Se a matriz includa em AFIELDS( ) no existir, o Visual FoxPro a criar automaticamente. Se existir, mas no for grande o bastante para conter as informaes retornadas por AFIELDS( ), o tamanho da matriz aumentado automaticamente para acomodar as informaes. nreaTrabalho Especifica a rea de trabalho da tabela cujas informaes de estrutura so colocadas em uma matriz. cAliasTabela Especifica o alias da tabela cujas informaes de estrutura so colocadas em uma matriz. Se voc omitir nreaTrabalho e cAliasTabela, as informaes de estrutura colocadas em uma matriz diro respeito tabela na rea de trabalho selecionada atualmente. A tabela a seguir descreve o que cada coluna da matriz contm e o tipo de dados da informao armazenada em cada coluna. Uma linha criada para cada campo da tabela. Nmero da coluna Informao do campoTipo de dados

1 Nome do campo Caractere 2 Tipo do campo: C = Caractere D = Data L = Lgico M = Memo N = Numrico F = Flutuante I = Inteiro B = Duplo Y = Moeda T = DataHora G = Geral Caractere 3 Largura do campo Numrico 4 Casas decimais Numrico 5 Valor nulo permitido Lgico 6 Converso de pgina de cdigo no permitida 7 Regra de validao de campoCaractere 8 Texto de validao de campoCaractere 9 Valor padro do campo Caractere 10 Regra de validao da tabela Caractere 11 Texto de validao da tabela Caractere 12 Nome de tabela extenso Caractere 13 Expresso Disparador de insero Caractere 14 Expresso Disparador de atualizaoCaractere 15 Expresso Disparador de excluso Caractere 16 Comentrio da tabela Caractere

Lgico

Comentrios

[Pg.: 26]

AFIELDS( ) retorna o nmero de campos da tabela. A matriz contm 11 colunas e um nmero de linhas igual ao nmero de campos da tabela. Voc pode utilizar COPY STRUCTURE EXTENDED para colocar informaes similares em uma tabela em vez de matriz. AFIELDS( ), exemplo da funo O exemplo a seguir cria uma matriz denominada gaMyArray contendo informaes sobre os campos na tabela customer. Os nomes dos campos so exibidos. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE Customer && Abre tabela customer gnFieldcount = AFIELDS(gaMyArray) && Cria matriz CLEAR FOR nCount = 1 TO gnFieldcount ? gaMyArray(nCount,1) && Exibe nomes de campo ENDFOR AFONT( ), funo Coloca as informaes sobre as fontes disponveis em uma matriz. Sintaxe AFONT(NomeMatriz [, cNomeFonte [, nTamanhoFonte]]) Tipos de retorno Lgico Argumentos NomeMatriz Especifica a matriz de varivel em que so colocados os nomes de fontes disponveis. Se a matriz no for suficientemente grande para conter todas as fontes, o Visual FoxPro aumenta, automaticamente, o tamanho da matriz. Se voc especificar uma matriz bidimensional j existente, o Visual FoxPro mudar a matriz para uma matriz unidimensional. Se a matriz for criada com sucesso, AFONT( ) retornar verdadeiro (.T.); caso contrrio, retornar falso (.F.). cNomeFonte Especifica uma fonte para a qual a informao ser colocada na matriz. Se a fonte que voc especificar suportar apenas tamanhos de fonte discretos (8 pontos, 10 pontos, ...), os tamanhos sero armazenados na matriz e AFONT( ) retornar verdadeiro (.T.). Se a fonte especificada for dimensionvel (suportar valores fracionrios de tamanho), a matriz ter um nico elemento contendo -1 e AFONT( ) retornar verdadeiro (T.). Se a fonte que voc especificar no estiver disponvel, a matriz no ser criada e AFONT( ) retornar falso (.F.). nTamanhoFonte Especifica um tamanho para a fonte determinada em cNomeFonte. Se o tamanho da fonte nTamanhoFonte estiver disponvel para a fonte especificada em nTamanhoFonte, a matriz ter um nico elemento contendo um valor verdadeiro (.T.) e AFONT( ) retornar verdadeiro (.T.). Se o tamanho no estiver disponvel para a fonte especificada, a matriz no ser criada e AFONT( ) retornar falso (.F.). Comentrios

[Pg.: 27]

AFONT( ) coloca os nomes de fontes disponveis em uma matriz e tambm pode ser utilizada para determinar os tamanhos possveis de fontes ou se uma fonte dimensionvel. Utilize GETFONT( ) para exibir uma caixa de dilogo contendo as fontes disponveis, seus tamanhos e estilos. AFONT( ), exemplo de funo O exemplo a seguir utiliza AFONT( ) para criar uma matriz contendo os nomes de todas as fontes disponveis. O nome de cada fonte exibido, juntamente com um exemplo da fonte. Se houver mais de 10 fontes instaladas, somente as 10 primeiras sero exibidas. CLEAR =AFONT(gaFontArray) && Matriz contendo nomes de fonte gnNumFonts = ALEN(gaFontArray) && Nmero de fontes IF gnNumFonts > 10 gnNumFonts = 10 && Exibe primeiras 10 fontes ENDIF FOR nCount = 1 TO gnNumFonts ? ALLTRIM(gaFontArray(nCount)) && Exibe nome da fonte ?? ' Este um exemplo de ' ; + ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8 ENDFOR AINS( ), funo Insere um elemento em uma matriz unidimensional ou uma linha ou coluna em uma matriz bidimensional. Sintaxe AINS(NomeMatriz, nNmeroElemento [, 2]) Tipos de retorno Numrico Argumentos NomeMatriz Especifica o nome da matriz na qual o elemento inserido. nNmeroElemento Especifica onde o novo elemento, linha ou coluna inserido na matriz. Para inserir um elemento em uma matriz unidimensional, inclua NomeMatriz e o elemento nNmeroElemento onde ocorre a insero. O novo elemento inserido imediatamente antes do elemento nNmeroElemento. Para inserir uma linha em uma matriz bidimensional, inclua NomeMatriz e o nmero da linha nNmeroElemento onde ocorre a insero. A nova linha inserida imediatamente antes da linha nNmeroElemento. Para obter maiores informaes sobre como fazer referncia a um elemento de matriz atravs de seus ndices, consulte DIMENSION. 2 Insere uma coluna em uma matriz bidimensional. A nova coluna inserida imediatamente antes da coluna especificada com nNmeroElemento. Comentrios Inserir um elemento, linha ou coluna em uma matriz no altera o tamanho da matriz. Os elementos, linhas ou colunas direita so deslocados para o fim da matriz e seu o ltimo elemento, linha ou coluna descartado. O elemento, linha ou coluna recm-inserido inicializado com um valor falso (.F.).

[Pg.: 28]

AINS( ) retornar 1 se o elemento, linha ou coluna for inserido com sucesso. AINS( ), exemplo da funo O exemplo a seguir cria e preenche uma matriz com nomes de empresas e procura um nome de empresa especfico na matriz. Se no for encontrado, o nome ausente ser adicionado matriz. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer SELECT company FROM customer ; WHERE country = 'Germany' ; INTO ARRAY gaCompanies gnCount = _TALLY gcName = 'Seven Seas Imports' CLEAR DISPLAY MEMORY LIKE gaCompanies IF ASCAN(gaCompanies, gcName) = 0 && Procura pela empresa *** Empresa no encontrada-adicione-a *** DIMENSION gaCompanies[gnCount+1,1] = AINS(gaCompanies, gnCount+1) gaCompanies[gnCount+1] = gcName ENDIF DISPLAY MEMORY LIKE gaCompanies ALEN( ), funo Retorna o nmero de elementos, linhas ou colunas de uma matriz. Sintaxe ALEN(NomeMatriz [, nAtributoMatriz]) Tipos de retorno Numrico Argumentos NomeMatriz Especifica o nome da matriz. Se voc incluir apenas o nome da matriz, ALEN( ) retornar o nmero de elementos da matriz. nAtributoMatriz Determina se ALEN( ) retorna o nmero de elementos, linhas ou colunas da matriz, de acordo com os valores para nAtributoMatriz fornecidos a seguir: 0 Retorna o nmero de elementos da matriz. Omitir nAtributoMatriz equivale a especificar 0. 1 Retorna o nmero de linhas da matriz. 2 Retorna o nmero de colunas da matriz. Se a matriz for unidimensional, ALEN( ) retornar 0 (sem colunas). ALEN( ), exemplo da funo O exemplo a seguir utiliza AFONT( ) para criar uma matriz contendo os nomes de todas as fontes disponveis. ALEN( ) utilizado para determinar o nmero de linhas na matriz. O nome de cada fonte

[Pg.: 29]

exibido, juntamente com um exemplo da fonte. Se houver mais de 10 fontes instaladas, somente as 10 primeiras sero exibidas. CLEAR =AFONT(gaFontArray) && Matriz contendo nomes de fonte gnNumFonts= ALEN(gaFontArray) && Nmero de fontes IF gnNumFonts > 10 gnNumFonts = 10 && Exibe as primeiras 10 fontes ENDIF FOR nCount = 1 TO gnNumFonts ? ALLTRIM(gaFontArray(nCount)) && Exibe nome da fonte ?? ' Este um exemplo da fonte ' ; + ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8 ENDFOR ALLTRIM( ), funo Remove os espaos em branco do incio e do final da expresso de caracteres especificada e retorna a expresso com os espaos removidos como uma seqncia de caracteres. Sintaxe ALLTRIM(cExpresso) Tipos de retorno Caractere Argumentos cExpresso finais. Especifica a expresso de caracteres da qual sero retirados os espaos em branco iniciais e Comentrios ALLTRIM( ) pode ser utilizado para assegurar que os espaos em branco sero removidos dos dados inseridos pelo usurio. ALLTRIM( ), exemplo da funo O exemplo a seguir utiliza AFONT( ) para criar uma matriz contendo os nomes de todas as fontes disponveis. ALLTRIM( ) utilizada para remover espaos iniciais e finais dos nomes de fonte. O nome de cada fonte com espaos removidos ser exibido, juntamente com um exemplo da fonte. Se mais de 10 fontes estiverem instaladas, somente as 10 primeiras sero exibidas. CLEAR =AFONT(gaFontArray) && Matriz contendo nomes de fonte gnNumFonts= ALEN(gaFontArray) && Nmero de fontes IF gnNumFonts > 10 gnNumFonts = 10 && Exibe 10 primeiras fontes ENDIF FOR nCount = 1 TO gnNumFonts ? ALLTRIM(gaFontArray(nCount)) && Exibe nome da fonte ?? ' Isto um exemplo de ' ; + ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8 ENDFOR

[Pg.: 30]

APPEND FROM ARRAY, comando Adiciona tabela atualmente selecionada um registro para cada linha de uma matriz e preenche cada registro com dados da linha da matriz correspondente. Sintaxe APPEND FROM ARRAY NomeMatriz [FOR lExpresso] [FIELDS ListaCampos] Argumentos NomeMatriz Especifica o nome da matriz que contm os dados que devem ser copiados para os novos registros. Novos registros so adicionados tabela at que todas as linhas da matriz tenham sido includas. FOR lExpresso Especifica uma condio para a incluso de registros da matriz. lExpresso deve conter o nome de um campo de destino em sua expresso condicional. Antes da incluso de uma linha da matriz em um registro da tabela, o elemento de matriz correspondente ao campo de destino especificado em lExpresso verificado para ver se corresponde condio em lExpresso. Caso o elemento de matriz satisfaa a condio, ser includo um registro. Caso o elemento de matriz no satisfaa a condio, a linha da matriz no ser includa e a linha seguinte ser verificada para ver se corresponde condio. FIELDS ListaCampos Especifica que apenas os campos em ListaCampos sero atualizados a partir da matriz. O primeiro campo da lista ser atualizado com o contedo do primeiro elemento da matriz, o segundo campo ser atualizado com o segundo elemento, e assim sucessivamente. Comentrios Campos dos tipos Memo e Geral so ignorados em APPEND FROM ARRAY. Quando uma tabela aberta para uso compartilhado, APPEND FROM ARRAY bloqueia o cabealho da tabela enquanto os registros so adicionados. Caso a matriz seja unidimensional, APPEND FROM ARRAY adicionar um registro tabela. O contedo do primeiro elemento da matriz preenche o primeiro campo do registro recm-adicionado, o contedo do segundo elemento da matriz preenche o segundo campo do registro, e assim por diante. Caso o nmero de elementos da matriz unidimensional seja maior do que o nmero de campos da tabela, os elementos adicionais sero ignorados. Caso o nmero de campos da tabela seja maior do que o nmero de elementos da matriz, os campos adicionais sero inicializados com o valor vazio padro. A seguir, so apresentados os valores vazios padro para cada tipo de campo: Tipo de campo Valor padro

Caractere Espaos Numrico 0 Moeda 0 Flutuante 0 Inteiro 0 Duplo 0 Data Data vazia (ex.: CTOD('')) DataHora DataHora vazia (ex.: CTOT('')) Lgico Falso (.F.) Memo Vazio (sem contedo)
[Pg.: 31]

Caso a matriz seja bidimensional, APPEND FROM ARRAY adicionar um registro tabela para cada linha da matriz. Por exemplo, caso a matriz tenha quatro linhas, quatro novos registros sero includos na tabela. O contedo da primeira coluna da matriz preenche o primeiro campo dos registros recm-adicionados, a segunda coluna da matriz preenche o segundo campo dos novos registros, e assim sucessivamente. Por exemplo, se a matriz tiver quatro linhas e trs colunas, os elementos da primeira coluna da matriz preenchero o primeiro campo de cada um dos quatro novos registros includos na tabela. Caso o nmero de colunas da matriz bidimensional seja maior do que o nmero de campos da tabela, as colunas adicionais sero ignoradas. Caso o nmero de campos da tabela seja maior do que o nmero de colunas da matriz, os campos adicionais sero inicializados com valores vazios. APPEND FROM ARRAY pode preencher um campo, mesmo que o tipo de dado do elemento da matriz correspondente no corresponda ao tipo de dado do campo, desde que os dados do elemento de matriz sejam compatveis com o tipo de dado do campo correspondente. Caso os dados no sejam compatveis, o campo ser inicializado com um valor vazio. Exemplo de incompatibilidade nos tipos de dados Este exemplo cria uma tabela e, em seguida, utiliza APPEND FROM ARRAY para incluir um registro na nova tabela. LOCAL ARRAY aNewRec(3) * Criar uma tabela CREATE TABLE Test FREE (Object C(10), Color C(16), SqFt n(6,2)) SCATTER TO aNewRec BLANK && Cria uma nova matriz a partir da tabela aNewRec[1]="Box" && Preenche a matriz aNewRec[2]="Red" aNewRec[3]=12.5 APPEND FROM ARRAY aNewRec && Adiciona o registro contendo contedo da matriz && tabela APPEND FROM, comando Adiciona registros de outro arquivo no fim da tabela atualmente selecionada. Sintaxe APPEND FROM NomeArquivo | ? [FIELDS ListaCampos] [FIELDS ListaCampos] [[TYPE] [DELIMITED [WITH Delimitador | WITH BLANK | WITH TAB] | WITH CHARACTER Delimitador] | DIF | FW2 | MOD | PDOX | RPD | SDF | SYLK | WK1 | WK3 | WKS | WR1 | WRK | XLS | XL5]] [AS nPginaCdigo] Argumentos NomeArquivo Especifica o nome do arquivo a partir do qual deve ser feita a incluso. Se voc no incluir uma extenso de nome de arquivo, ser considerada uma tabela do Visual FoxPro e a extenso padro .DBF. Se a tabela de origem da incluso for do Visual FoxPro, os registros dessa tabela marcados para excluso sero includos, desconsiderando a definio de SET DELETED. ? Exibe a caixa de dilogo Abrir, onde voc pode selecionar uma tabela de origem para a incluso.
[Pg.: 32]

FIELDS ListaCampos Especifica para quais campos sero includos dados. FOR lExpresso Inclui um novo registro para cada registro da tabela selecionada atualmente para o qual lExpresso resulte em verdadeiro (.T.). Os registros so includos at chegar ao fim desta tabela. Se voc omitir FOR, o arquivo de origem inteiro ser includo na tabela. TYPE Especifica o tipo do arquivo a partir do qual est sendo feita a incluso. Embora seja necessrio especificar um tipo de arquivo se o arquivo a partir do qual a incluso estiver sendo feita no for uma tabela do Visual FoxPro, no ser necessrio incluir a palavra-chave TYPE. possvel fazer incluses a partir de uma ampla variedade de tipos de arquivos diferentes, inclusive arquivos de texto ASCII delimitados, onde voc pode especificar um delimitador de campo. Se o arquivo a partir do qual voc est fazendo a incluso no tiver a extenso padro usual para esse tipo de arquivo, o nome do arquivo dever incluir a respectiva extenso. Por exemplo, as planilhas do Microsoft Excel normalmente tm a extenso .XLS. Se a planilha do Excel a partir da qual voc est fazendo incluses tiver uma extenso diferente da extenso .XLS esperada, certifique-se de especificar essa extenso. Observao Ao fazer incluses a partir de uma planilha, os dados desta devem ser armazenados na ordem principal das linhas e no na ordem principal das colunas. Isso permite que os dados da planilha includa correspondam estrutura da tabela. DELIMITED Especifica que o arquivo de origem dos dados a serem includos na tabela atual do Visual FoxPro delimitado. Um arquivo delimitado um arquivo de texto ASCII em que cada registro termina com um retorno de carro e uma alimentao de linha. Considera-se, como padro, que os contedos do arquivo esto separados um do outro por vrgulas (no inclua espaos extras antes ou depois das vrgulas) e que os valores dos campos de caractere esto delimitados tambm por aspas. Por exemplo: "Smith",9999999,"TELEFONE" Considera-se que a extenso de arquivo .TXT para todos os arquivos delimitados. Voc poder importar datas de arquivos delimitados se as datas estiverem no formato apropriado. O formato de data assume o padro mm/dd/aa. A incluso da parte da data relativa ao sculo opcional. O Visual FoxPro importar uma data, como 12/25/95, que no inclui o sculo e ir considerar que a data est no sculo XX. Os delimitadores de data podem ser qualquer caractere no-numrico, exceto o delimitador que separa os campos no arquivo delimitado. As datas em outros formatos podero ser importadas se o seu formato corresponder a um formato de data disponvel em SET DATE. Para importar datas que no esto no formato padro, emita SET DATE com o formato de data correto antes de utilizar APPEND FROM. Para testar se um formato de data poder ser importado com sucesso, utilize-o com CTOD( ). Se a data for aceitvel para CTOD( ), ela ser importada corretamente. DELIMITED WITH Delimitador diferente de aspas. DELIMITED WITH BLANK vrgulas. DELIMITED WITH TAB vrgulas. Indica que os campos de caractere esto delimitados por um caractere

Especifica arquivos que contm campos separados por espaos em vez de

Especifica arquivos que contm campos separados por tabulaes em vez de

DELIMITED WITH CHARACTER Delimitador Especifica os arquivos que contm campos delimitados pelo caractere especificado com Delimitador. Se Delimitador for um ponto-e-vrgula (o caractere usado no Visual FoxPro para indicar a continuao da linha de comando), coloque o ponto-e-vrgula entre aspas. Voc tambm pode especificar as palavras-chaves BLANK e TAB para Delimitador. A clusula WITH Delimitador pode ser combinada com a clusula WITH CHARACTER. Por exemplo, o seguinte comando adiciona registros de um arquivo de texto com campos de caracteres delimitados com sublinhados e todos os campos delimitados com asteriscos:
[Pg.: 33]

APPEND FROM mytxt.txt DELIMITADO COM _ ; WITH CHARACTER * DIF Inclua DIF para importar dados de um arquivo .DIF (Data Interchange Format) do VisiCalc. Vetores (colunas) tornam-se campos da tabela selecionada atualmente e tuplas (linhas) tornam-se registros. Considera-se que os nomes de arquivos DIF tenham a extenso .DIF. FW2 Inclua FW2 para importar dados de um arquivo criado pelo Framework II. Considera-se que os nomes de arquivos FW2 tenham a extenso .FW2. MOD Inclua MOD para importar dados de um arquivo do Microsoft Multiplan verso 4.01. Os arquivos MOD so criados pelo Microsoft Multiplan verso 4.01, e considera-se que tenham a extenso .MOD. PDOX Inclua PDOX para importar dados de um arquivo de banco de dados do Paradox verses 3.5 ou 4.0. Considera-se que os nomes de arquivos do Paradox tenham a extenso .DB. RPD Inclua RPD para importar dados de um arquivo criado pelo RapidFile verso 1.2. Considera-se que os nomes de arquivos do RapidFile tenham a extenso .RPD. SDF Inclua SDF para importar dados de um arquivo System Data Format. Um arquivo SDF um arquivo de texto ASCII em que os registros tm um comprimento fixo e terminam com um retorno de carro e uma alimentao de linha. Os campos no so delimitados. Considera-se que a extenso de arquivos SDF seja .TXT. SYLK Inclua SYLK para importar dados de um arquivo de formato SYLK (Symbolic Link) de intercmbio. Os arquivos SYLK so utilizados no Microsoft MultiPlan. As colunas do arquivo SYLK tornam-se campos da tabela do Visual FoxPro, e as linhas tornam-se registros. Os nomes de arquivos SYLK no tm extenso. WK1 Inclua WK1 para importar dados de uma planilha do Lotus 1-2-3 verso 2.x. Cada coluna da planilha torna-se um campo da tabela; cada linha da planilha torna-se um registro da tabela. Uma extenso de nome de arquivo .WK1 atribuda a uma planilha criada pelo Lotus 1-2-3 reviso 2.x. WK3 Inclua WK3 para importar dados de uma planilha do Lotus 1-2-3. Cada coluna da planilha torna-se um campo da tabela; cada linha da planilha torna-se um registro da tabela. Uma extenso de nome de arquivo .WK3 atribuda a uma planilha criada pelo Lotus 1-2-3 reviso 3.x. WKS Inclua WKS para importar dados de uma planilha do Lotus 1-2-3 reviso 1-A. Cada coluna da planilha torna-se um campo da tabela; cada linha da planilha torna-se um registro da tabela. Uma extenso de nome de arquivo .WKS atribuda a uma planilha criada pelo Lotus 1-2-3 reviso 1-A. WR1 Inclua WR1 para importar dados de uma planilha do Lotus Symphony verso 1.1 ou 1.2. Cada coluna da planilha torna-se um campo da tabela, e cada linha torna-se um registro. Uma extenso de nome de arquivo .WR1 atribuda a uma planilha criada pelo Symphony verses 1.1 ou 1.2. WRK Inclua WRK para importar dados de uma planilha do Lotus Symphony verso 1.0. Cada coluna da planilha torna-se um campo da tabela, e cada linha torna-se um registro. Uma extenso de nome de arquivo .WRK atribuda a uma planilha criada pelo Symphony verso 1.0. XLS Inclua XLS para importar dados de uma planilha do Microsoft Excel. Cada coluna da planilha torna-se um campo da tabela, e cada linha torna-se um registro. A extenso .XLS atribuda a nomes de arquivos de planilha criados pelo Microsoft Excel. XL5 Inclua XL5 para importar dados do Microsoft Excel verso 5.0. As colunas da planilha se tornam campos da tabela, e as linhas tornam-se registros. Os arquivos de planilha criados no Microsoft Excel tm a extenso .XLS. AS nPginaCdigo Especifica a pgina de cdigo da tabela ou arquivo de origem. O Visual FoxPro copia o contedo da tabela ou arquivo de origem e, medida que copia os dados, converte-os automaticamente na pgina de cdigo da tabela atual.

[Pg.: 34]

Se voc especificar um valor para nPginaCdigo que no seja suportado, o Visual FoxPro ir gerar uma mensagem de erro. Pode-se utilizar GETCP( ) como nPginaCdigo para exibir a caixa de dilogo Pgina de cdigo, que permite especificar uma pgina de cdigo para a tabela ou arquivo includo. Se AS nPginaCdigo for omitido e o Visual FoxPro no conseguir determinar a pgina de cdigo da tabela ou arquivo de origem, ele copiar o contedo dessa tabela ou arquivo e, medida que copia os dados, ir convert-los automaticamente na pgina de cdigo atual do Visual FoxPro. Se SET CPDIALOG estiver ativado (ON), a tabela na rea de trabalho atualmente selecionada ser marcada com uma pgina de cdigo. Caso voc esteja fazendo a incluso a partir de uma tabela que no esteja marcada com uma pgina de cdigo, a caixa de dilogo Pgina de cdigo ser exibida, permitindo que voc selecione a pgina de cdigo da tabela a partir da qual est fazendo a incluso. A pgina de cdigo atual do Visual FoxPro pode ser determinada com CPCURRENT( ). Se AS nPginaCdigo for omitido e o Visual FoxPro conseguir determinar a pgina de cdigo da tabela ou do arquivo que est sendo includo, ele copiar o contedo da tabela ou do arquivo includo e, medida que copia os dados, ir convert-los automaticamente na pgina de cdigo da tabela atualmente selecionada. Se nPginaCdigo for 0, o Visual FoxPro ir considerar que a pgina de cdigo da tabela ou do arquivo que est sendo includo igual ao da tabela atualmente selecionada e no ser feita nenhuma converso para a pgina de cdigo atual do Visual FoxPro. Comentrios Se o arquivo do qual se faz a incluso for uma tabela criada pelo Visual FoxPro ou por uma verso anterior do FoxPro, ser considerada uma extenso .DBF. Se a tabela criada pelo Visual FoxPro ou por uma verso anterior do FoxPro no tiver a extenso .DBF, voc dever especificar a extenso. Caso o arquivo no seja uma tabela criada pelo Visual FoxPro ou por uma verso anterior do FoxPro, voc dever especificar o tipo de arquivo a partir do qual est fazendo a incluso. Antes de fazer uma incluso a partir de uma tabela criada no dBASE IV ou no dBASE V que contenha um campo Memo, voc deve abrir a tabela no Visual FoxPro com USE. Quando aparecer a opo para converter o arquivo, selecione Sim. Se voc fizer a incluso a partir de uma tabela criada pelo Visual FoxPro ou por uma verso anterior do FoxPro, essa tabela poder ser aberta em uma outra rea de trabalho. Os registros marcados para excluso nessa tabela sero desmarcados aps a sua incluso. APPEND FROM, exemplo do comando No exemplo a seguir, a tabela customer aberta, sua estrutura copiada para uma tabela denominada backup, e backup aberta. Em seguida, o Visual FoxPro inclui todos os registros da Finlndia da tabela customer. Estes registros so copiados para um novo arquivo delimitado denominado TEMP.TXT. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer COPY STRUCTURE TO backup USE backup APPEND FROM customer FOR country = 'Finlndia' COPY TO temp TYPE DELIMITED MODIFY FILE temp.txt USE DELETE FILE backup.dbf DELETE FILE temp.txt APPEND MEMO, comando Copia o contedo de um arquivo texto para um campo Memo.

[Pg.: 35]

Sintaxe APPEND MEMO NomeCampoMemo FROM NomeArquivo [OVERWRITE] [AS nPginaCdigo] Argumentos NomeCampoMemo Especifica o nome do campo Memo no qual o arquivo includo. FROM NomeArquivo Especifica o arquivo texto cujo contedo copiado para o campo Memo. Voc deve incluir o nome do arquivo texto inteiro, inclusive a extenso. OVERWRITE Substitui o contedo atual do campo Memo pelo contedo do arquivo. AS nPginaCdigo Especifica a pgina de cdigo do arquivo texto copiado para o campo Memo. O Visual FoxPro copia o contedo do arquivo texto e, medida que copia os dados para o campo Memo, converte-os automaticamente da pgina de cdigo especificada para a pgina de cdigo da tabela que contm o campo Memo. Se a tabela que contm o campo Memo no estiver marcada com uma pgina de cdigo, o Visual FoxPro converter automaticamente os dados da pgina de cdigo especificada para a pgina de cdigo atual do Visual FoxPro. Se voc especificar um valor para nPginaCdigo que no seja suportado, o Visual FoxPro ir gerar uma mensagem de erro. Voc pode utilizar GETCP( ) em nPginaCdigo para exibir a caixa de dilogo Pgina de cdigo, que permite especificar uma pgina de cdigo para a tabela ou o arquivo includo. Se voc omitir a clusula AS nPginaCdigo ou especificar 0 para nPginaCdigo, no haver nenhuma converso de pgina de cdigo no arquivo texto. Comentrios Todo o contedo do arquivo texto ser includo no contedo do campo Memo especificado no registro atual se a opo Overwrite for omitida. APPEND MEMO, exemplo do comando No exemplo a seguir, os contedos do campo Memo notes so copiados para um arquivo denominado TEST.TXT. TEST.TXT e includos no contedo do campo Memo. Finalmente, os contedos de TEST.TXT substituem o contedo atual do campo Memo. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE employee && Abre a tabela Employee WAIT WINDOW 'Observaes de funcionrios no campo Memo - pressione ESC' NOWAIT MODIFY MEMO notes NOEDIT && Abre o campo Memo notes COPY MEMO notes TO test.txt && Cria o arquivo de teste a partir do campo Memo WAIT WINDOW 'Arquivos texto TEST.TXT - pressione ESC' NOWAIT MODIFY FILE test.txt NOEDIT && Abre o arquivo texto WAIT WINDOW 'Observaes de funcionrios agora acrescentadas- pressione ESC' NOWAIT APPEND MEMO notes FROM test.txt && Adiciona contedo do arquivo texto MODIFY MEMO notes NOEDIT && Exibe campo Memo novamente WAIT WINDOW 'Sobrescreve observaes de funcionrio- pressione ESC' NOWAIT APPEND MEMO notes FROM test.txt OVERWRITE && Substitui notes MODIFY MEMO notes NOEDIT NOWAIT DELETE FILE test.txt APPEND PROCEDURES, comando Inclui procedimentos armazenados em um arquivo texto nos procedimentos armazenados no banco de dados atual.

[Pg.: 36]

Sintaxe APPEND PROCEDURES FROM NomeArquivo [AS nPginaCdigo] [OVERWRITE] Argumentos NomeArquivo Especifica o nome de um arquivo texto a partir do qual os procedimentos armazenados so includos. AS nPginaCdigo Especifica a pgina de cdigo do arquivo texto a partir do qual os procedimentos armazenados so includos. O Visual FoxPro copia o contedo do arquivo texto e, ao fazer isso, converte-o automaticamente na pgina de cdigo especificada. Se voc especificar um valor para nPginaCdigo que no seja suportado, o Visual FoxPro ir gerar uma mensagem de erro. Pode-se utilizar GETCP( ) em nPginaCdigo para exibir a caixa de dilogo Pgina de cdigo, que permite especificar uma pgina de cdigo para o arquivo texto a partir do qual os procedimentos armazenados so includos. Se voc omitir AS nPginaCdigo, o Visual FoxPro copiar o contedo do arquivo texto a partir do qual os procedimentos armazenados so includos e, ao fazer isso, ir convert-lo automaticamente na pgina de cdigo atual do Visual FoxPro. Para determinar a pgina de cdigo atual do Visual FoxPro, utilize CPCURRENT( ). Se nPginaCdigo for 0, o Visual FoxPro ir considerar que a pgina de cdigo do arquivo texto, a partir do qual os procedimentos armazenados so includos, a mesma pgina de cdigo do banco de dados atual, no ocorrendo nenhuma converso para a pgina de cdigo atual do Visual FoxPro. OVERWRITE Especifica que os procedimentos atuais armazenados no banco de dados so sobrescritos pelos do arquivo texto. Se voc omitir OVERWRITE, os procedimentos atuais armazenados no banco de dados no sero sobrescritos e os procedimentos armazenados no arquivo texto sero includos nos procedimentos j armazenados. Comentrios Utilize o comando APPEND PROCEDURES para modificar procedimentos armazenados em um banco de dados utilizando a linguagem de programao. Um banco de dados dever estar aberto e ativo quando APPEND PROCEDURES for emitido; caso contrrio, o Visual FoxPro ir gerar uma mensagem de erro. APPEND PROCEDURES, exemplo do comando O exemplo a seguir abre o banco de dados testdata. Uma tabela temporria, denominada mytablecom um nico campo Memo, criada; e REPLACE utilizado para colocar um procedimento armazenado denominado MyProcedure no campo Memo. COPY MEMO utilizado para criar um arquivo texto temporrio denominado MYTEMP.TXT, que contm o contedo do campo Memo. APPEND PROCEDURES utilizado para incluir o procedimento armazenado do arquivo texto temporrio no banco de dados. DISPLAY PROCEDURES exibe os procedimentos armazenados no banco de dados e, em seguida, a tabela e o arquivo texto temporrios so apagados. Observao: Para exibir ou editar procedimentos armazenados por meio da interface do usurio, utilize o Criador de bancos de dados. CLOSE DATABASES * Abre o banco de dados testdata OPEN DATABASE SYS(2004)+"\samples\data\testdata" * Cria uma tabela livre, temporria com um campo Memo denominado mProcedure CREATE TABLE mytable FREE (mProcedure M) APPEND BLANK && Adiciona um registro em branco a mytable * Adiciona o comando PROCEDURE, nome e retorno de carro /alimentao de linha ao
[Pg.: 37]

* campo Memo REPLACE mProcedure WITH "PROCEDURE MyProcedure" + CHR(13) + CHR(10) * Copia o contedo do campo Memo para um arquivo temporrio COPY MEMO mProcedure TO mytemp.txt USE && Fecha a tabela temporria APPEND PROCEDURES FROM mytemp.txt CLEAR && Copia o procedimento para o banco de dados

* Exibe os procedimentos associados com o banco de dados atual DISPLAY PROCEDURES DELETE FILE mytable.dbf && Apaga a tabela temporria DELETE FILE mytable.fpt && Apaga o arquivo memo da tabela temporria DELETE FILE mytemp.txt && Apaga o arquivo texto temporrio APPEND, comando Adiciona um ou mais registros novos ao fim de uma tabela. Sintaxe APPEND [BLANK] [IN nreaTrabalho | cAliasTabela] [NOMENU] Argumentos BLANK Adiciona um registro em branco ao fim da tabela atual. O Visual FoxPro no abre uma janela de edio quando voc emite APPEND BLANK. Voc pode editar o novo registro com BROWSE, CHANGE ou EDIT. IN nreaTrabalho Especifica a rea de trabalho da tabela na qual um novo registro ser includo. IN cAliasTabela Especifica o alias da tabela na qual um novo registro ser includo. Se voc omitir nreaTrabalho e cAliasTabela, um novo registro ser includo na tabela na rea de trabalho selecionada no momento. Se voc emitir APPEND, um registro em branco ser adicionado tabela especificada com nreaTrabalho ou cAliasTabela e a tabela ser automaticamente selecionada. Se voc emitir APPEND BLANK, um registro em branco ser adicionado tabela especificada com nreaTrabalho ou cAliasTabela e a tabela no ser selecionada. NOMENU Especifica que o ttulo do menu Tabela ser removido da barra de menus do sistema, evitando alteraes no formato da janela de edio. Comentrios Quando voc emite APPEND ou APPEND BLANK e uma tabela no est aberta na rea de trabalho selecionada no momento, a caixa de dilogo Abrir exibida, de forma que voc possa escolher uma tabela na qual inclua registros. APPEND abre uma janela de edio para que voc possa fornecer dados a um ou mais novos registros. Quando voc adiciona um novo registro, o Visual FoxPro atualiza todos os ndices abertos. APPEND, exemplo do comando

[Pg.: 38]

O exemplo a seguir utiliza APPEND BLANK para criar uma tabela com 10 registros contendo valores aleatrios e, em seguida, exibe os valores mximo e mnimo na tabela. CLOSE DATABASES CREATE TABLE Random (cValue N(3)) FOR nItem = 1 TO 10 && Inclui 10 registros APPEND BLANK REPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatrios ENDFOR CLEAR LIST && Exibe os valores gnMaximum = 1 && Inicializa valor mnimo gnMinimum = 100 && Inicializa valor mximo SCAN gnMinimum = MIN(gnMinimum, cValue) gnMaximum = MAX(gnMaximum, cValue) ENDSCAN ? 'O valor mnimo : ', gnMinimum && Exibe valor mnimo ? 'O valor mximo : ', gnMaximum && Exibe valor mximo APRINTERS( ), funo Coloca os nomes das impressoras atualmente instaladas no Gerenciador de Impresso do Windows em uma matriz de memria. Sintaxe APRINTERS(NomeMatriz) Tipos de retorno Numrico Argumentos NomeMatriz Especifica o nome da matriz que contm os nomes das impressoras instaladas e suas portas. Se a matriz includa no existir, o Visual FoxPro ir cri-la automaticamente. Se a matriz existir e no for grande o suficiente para conter todas as informaes sobre as impressoras, o Visual FoxPro aumentar automaticamente o tamanho da matriz para que comporte as informaes. Caso a matriz seja maior do que o necessrio, o Visual FoxPro ir trunc-la. Caso a matriz exista e APRINTERS( ) retorne 0, porque nenhuma impressora est instalada, a matriz permanecer inalterada. Se a matriz no existir e APRINTERS( ) retornar 0, a matriz no ser criada. Comentrios A funo APRINTERS( ) cria uma matriz bidimensional. A primeira coluna da matriz contm os nomes das impressoras atualmente instaladas e a segunda coluna contm as portas s quais as impressoras esto conectadas. APRINTERS( ) retorna o nmero de impressoras instaladas. Caso nenhuma impressora esteja instalada, ela retornar 0. O Visual FoxPro obtm os nomes das impressoras instaladas e suas portas no Windows. No entanto, o Visual FoxPro no verifica se as impressoras esto de fato conectadas mquina.

[Pg.: 39]

APRINTERS( ), exemplo da funo O exemplo a seguir utiliza APRINTERS( ) para criar uma matriz denominada gaPrinters que contm os nomes e as portas das impressoras instaladas. Em seguida, as impressoras e suas portas so exibidas. Se nenhuma impressora estiver instalada, ser exibida uma mensagem. IF APRINTERS(gaPrinters) > 0 && Se houver drivers de impressoras instalados CLEAR && Limpa a janela principal do Visual FoxPro DISPLAY MEMORY LIKE gaPrinters && Exibe as impressoras e portas ELSE && Caso contrrio, Nenhuma impressora instalada WAIT WINDOW ' Nenhuma impressora instalada.' ENDIF ASC( ), funo Retorna o valor ANSI para o caractere mais esquerda em uma expresso de caracteres. Sintaxe ASC(cExpresso) Tipos de retorno Numrico Argumentos cExpresso Especifica a expresso de caracteres que contm o caractere cujo valor ANSI retornado por ASC( ). Qualquer caractere aps o primeiro caractere em cExpresso ser ignorado por ASC( ). Comentrios ASC( ) retorna a posio do caractere na tabela de caracteres da pgina de cdigo atual. Cada caractere tem um valor ANSI exclusivo no intervalo de 0 a 255. ASC( ), exemplo da funo O exemplo a seguir exibe os caracteres A a J e utiliza ASC( ) para exibir seus valores ANSI correspondentes. STORE 'ABCDEFGHIJ' TO gcANSI && 10 caracteres CLEAR FOR nCOUNT = 1 TO 10 ? SUBSTR(gcANSI, nCount,1) && Exibe um caractere ?? ASC(SUBSTR(gcANSI, nCount)) && Exibe o valor ANSI ENDFOR ASCAN( ), funo Procura em uma matriz um elemento que contenha os mesmos dados e o mesmo tipo de dado de uma expresso. Sintaxe ASCAN(NomeMatriz, eExpresso [, nElementoInicial [, nElementosProcurados]]) Tipos de retorno Numrico Argumentos
[Pg.: 40]

NomeMatriz Especifica o nome da matriz na qual ser feita a procura. eExpresso Especifica a expresso geral a ser procurada. nElementoInicial Especifica o nmero do elemento em que a procura ir comear. O nmero do elemento especificado ser includo na procura. Se voc omitir nElementoInicial, a procura ser feita, como padro, na matriz inteira. nElementosProcurados Especifica o nmero de elementos em que ser feita a procura. Se voc omitir nElementoInicial e nElementosProcurados, a procura ter incio no primeiro elemento da matriz e continuar at o ltimo elemento. Observao Voc pode referir-se a um elemento de uma matriz de varivel bidimensional de duas maneiras. O primeiro mtodo utiliza dois ndices para especificar a posio do elemento na matriz em termos de linha e coluna; o outro mtodo utiliza um nmero de elemento. Esta funo e outras que manipulam matrizes bidimensionais exigem nmeros de elementos (nElementoInicial e nElementosProcurados). Utilize AELEMENT( ) para retornar o nmero do elemento a partir de ndices de linha e coluna em uma matriz bidimensional. Comentrios Caso seja localizada uma correspondncia, ASCAN( ) retornar o nmero do elemento que contm a expresso. Caso contrrio, ASCAN( ) retornar 0. Os critrios para uma correspondncia bem-sucedida de dados de caractere so determinados pela definio de SET EXACT. Se SET EXACT estiver ativado (ON), um elemento dever corresponder ao caractere da expresso de procura e ter o mesmo comprimento. Caso SET EXACT esteja desativado (OFF) e haja uma correspondncia entre um elemento e a expresso de procura at o final da expresso, a correspondncia ser bem-sucedida. Para obter maiores informaes sobre critrios de correspondncia para seqncias de caracteres, consulte a tabela de comparao de seqncias no tpico SET EXACT. ASCAN( ), exemplo da funo O exemplo a seguir cria e preenche uma matriz com nomes de empresa e depois utiliza ASCAN( ) para procurar determinado nome de empresa. Se o nome da empresa for localizado, ser removido da matriz. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer SELECT company FROM customer ; WHERE country = 'UK' ; INTO ARRAY gaCompanies gnCount = _TALLY gcName = 'Seven Seas Imports' CLEAR DISPLAY MEMORY LIKE gaCompanies* gnPos = ASCAN(gaCompanies, gcName) && Procura pela empresa IF gnPos != 0 *** Empresa encontrada, remova-a da matriz *** = ADEL(gaCompanies, gnPos) gnCount = gnCount - 1 ENDIF DISPLAY MEMORY LIKE gaCompanies ASIN( ), funo Retorna em radianos o arco seno de uma expresso numrica.
[Pg.: 41]

Sintaxe ASIN(nExpresso) Tipos de retorno Numrico Argumentos nExpresso Especifica a expresso numrica cujo arco seno retornado por ASIN( ). O valor de nExpresso pode variar de +1 at 1 e o valor retornado por ASIN( ) pode variar de pi/2 a +pi/2 ( 1,57079 a 1,57079). O nmero de casas decimais na exibio do resultado pode ser especificado com SET DECIMALS. Comentrios Utilize RTOD( ) para converter radianos em graus. ASIN( ), exemplo da funo CLEAR ? RTOD(ASIN(0)) && Retorna 0.00 STORE 1 to gnArcAngle ? RTOD(ASIN(gnArcAngle)) && Retorna 90.00 ? RTOD(ASIN(SQRT(2)/2)) && Retorna 45.00 ASORT( ), funo Classifica os elementos de uma matriz em ordem ascendente ou descendente. Sintaxe ASORT(NomeMatriz [, nElementoInicial [, nNmeroClassificados [, nOrdemClassificao]]]) Tipos de retorno Numrico Argumentos NomeMatriz Especifica o nome da matriz a ser classificada. nElementoInicial Especifica o elemento inicial da classificao. Se voc omitir nElementoInicial, a matriz ser classificada, como padro, a partir do primeiro elemento. Se a matriz for unidimensional, a classificao incluir nElementoInicial. Se ela for bidimensional, o elemento inicial nElementoInicial determinar a linha em que a classificao ir comear e a coluna que determina a ordem de classificao das linhas. Observao Voc pode referir-se a um elemento de uma matriz bidimensional de duas maneiras. O primeiro mtodo utiliza dois ndices para especificar a posio do elemento na matriz em termos de linha e coluna; o outro mtodo utiliza um nmero de elemento. Esta funo e outras que manipulam matrizes bidimensionais exigem nmeros de elementos (em ASORT( ), as expresses numricas nElementoInicial e nNmeroClassificados). Voc pode utilizar AELEMENT( ) para retornar o nmero do elemento a partir de ndices de linha e coluna em uma matriz bidimensional. O exemplo a seguir ilustra o fato de que o elemento inicial nElementoInicial determina o modo como as linhas em uma matriz bidimensional so classificadas. Uma matriz pequena denominada gaArray criada e classificada duas vezes. A primeira classificao comea no primeiro elemento de gaArray e as linhas so
[Pg.: 42]

classificadas com base nos valores contidos na primeira coluna da matriz. A segunda classificao comea no quarto elemento de gaArray e as linhas so classificadas com base nos valores contidos na segunda coluna. A primeira classificao comea na primeira linha. A segunda comea na segunda linha. Voc pode utilizar DISPLAY MEMORY para exibir o contedo da matriz; nestes exemplos, so utilizadas tabelas para exibir graficamente os resultados das classificaes. Os comandos abaixo criam a matriz denominada gaArray: DIMENSION gaArray(3,2) gaArray(1) = 'G' gaArray(2) = 'A' gaArray(3) = 'C' gaArray(4) = 'Z' gaArray(5) = 'B' gaArray(6) = 'N' gaArray tem a aparncia a seguir: Coluna 1 Linha 1 Linha 2 Linha 3 G C B Coluna 2 A Z N

Em seguida, ASORT( ) classifica a matriz a partir do primeiro elemento (1,1) da mesma. Os elementos da primeira coluna so colocados em ordem ascendente por meio de uma reorganizao das linhas da matriz. =ASORT(gaArray,1) Observe a nova ordem das linhas: Coluna 1 Linha 1 Linha 2 Linha 3 B C G Coluna 2 N Z A

Em seguida, a matriz classificada a partir do seu quarto elemento (2,2). Os elementos na segunda coluna so colocados em ordem por meio de uma reorganizao das linhas da matriz. =ASORT(gaArray,4) Observe a diferena na ordem das linhas: Coluna 1 Coluna 2

Linha 1 B N Linha 2 G A Linha 3 C Z nNmeroClassificados Especifica o nmero de elementos classificados em uma matriz unidimensional ou o nmero de linhas classificadas em uma matriz bidimensional. Por exemplo, se a matriz for unidimensional e nElementoInicial for 2, indicando que a classificao comea no segundo elemento da matriz, e nNmeroClassificados for 3, indicando que a classificao deve incluir trs elementos, o segundo, o terceiro e o quarto elementos da matriz sero classificados. Se nNmeroClassificados for 1 ou for omitido, todos os elementos da matriz, a partir do elemento inicial nElementoInicial at o ltimo elemento, sero classificados. Se a matriz for bidimensional, nNmeroClassificados designar o nmero de linhas que devem ser classificadas, a partir da linha que contm o elemento inicial nElementoInicial. Por exemplo, se nElementoInicial for 2 e nNmeroClassificados for 3, a linha que contm o segundo elemento de matriz e as duas linhas seguintes sero classificadas. Se nNmeroClassificados for 1 ou for omitido, todas as linhas da matriz, a partir da linha que contm o elemento inicial nElementoInicial at a ltima linha, sero classificadas.
[Pg.: 43]

nOrdemClassificao Especifica a ordem de classificao (ascendente ou descendente) dos elementos da matriz. Como padro, os elementos de matriz so classificados em ordem ascendente. Se nOrdemClassificao for 0 ou for omitida, os elementos de matriz sero classificados em ordem ascendente. Se nOrdemClassificao for 1 ou qualquer valor diferente de zero, os elementos de matriz sero classificados em ordem descendente. Comentrios Todos os elementos includos na classificao devem ter o mesmo tipo de dados. As matrizes unidimensionais so classificadas pelos seus elementos; as matrizes bidimensionais so classificadas pelas suas linhas. Quando uma matriz bidimensional classificada, a ordem das linhas na matriz alterada para que os elementos de uma coluna da matriz fiquem em ordem ascendente ou descendente. Se a classificao for bem-sucedida, ser retornado 1; caso contrrio, ser retornado 1. ASORT( ), exemplo da funo O exemplo a seguir copia o campo contact da tabela customer para uma matriz denominada gaContact. Os primeiros 20 contatos na matriz so exibidos, a matriz classificada e os contatos so exibidos novamente na ordem de classificao. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE Customer && Abre a tabela de clientes COUNT TO gnCount && Nmero de contatos DIMENSION gaContact(gnCount,1) && Cria uma matriz de contatos COPY TO ARRAY gaContact FIELD contact && Preenche a matriz CLEAR ? 'Contact names:' ? FOR nCount = 1 TO 20 ? gaContact(nCount) && Exibe os 20 primeiros contatos ENDFOR = ASORT(gaContact) && Classifica a matriz ? ? 'Sorted Contact names:' ? FOR nCount = 1 TO 20 ? gaContact(nCount) && Exibe os 20 primeiros contatos, classificados ENDFOR

ASSERT, comando Exibe uma caixa de mensagem quando uma expresso lgica avaliada como falsa (.F.). Sintaxe ASSERT lExpresso [MESSAGE cTextoMensagem] Argumentos

[Pg.: 44]

lExpresso Especifica a expresso lgica que avaliada. Se lExpresso resultar em um falso (.F.) lgico, uma caixa de dilogo de depurao ser exibida. Se lExpresso resultar em um verdadeiro (.T.) lgico, a caixa de dilogo no ser exibida. cTextoMensagem Especifica o texto exibido na caixa de dilogo de depurao. Se voc omitir cTextoMensagem, o texto padro ser exibido, indicando o nmero da linha na qual a declarao falhou e o procedimento contendo a declarao. Comentrios Esse comando ser ignorado se o comando SET ASSERTS for definido como OFF. A caixa de mensagem contm os botes Cancelar, Depurar, Ignorar e Ignorar todos. A tabela a seguir descreve a ao executada quando cada boto selecionado. Boto Ao Depurar A execuo do programa suspensa e a janela Depurar exibida com a janela Rastrear ativa. Cancelar A execuo do programa encerrada. IgnorarA execuo do programa continua com a linha aps o comando ASSERT. Ignorar Todos A execuo do programa continua com a linha aps o comando ASSERT e ASSERTS definido como OFF. Os comandos ASSERT subseqentes sero ignorados at que ASSERTS seja definido como ON. ASUBSCRIPT( ), funo Retorna o ndice de linha ou coluna de um elemento a partir do nmero do elemento. Sintaxe ASUBSCRIPT(NomeMatriz, nNmeroElemento, nndice) Tipos de retorno Numrico Argumentos NomeMatriz Especifica o nome da matriz. nNmeroElemento Especifica o nmero do elemento. nndice Determina se retornado o ndice de linha ou coluna. Se a matriz for unidimensional, inclua o nmero do elemento em nNmeroElemento e 1 em nndice. ASUBSCRIPT( ) retorna nNmeroElemento de forma idntica. Se a matriz for bidimensional, voc deve incluir o nmero do elemento nNmeroElemento e um valor 1 ou 2 em nndice. A especificao de 1 em nndice retorna o ndice de linha do elemento, e a especificao de 2 retorna o ndice de coluna. Para obter maiores informaes sobre como fazer referncia a elementos de uma matriz, consulte DIMENSION. Comentrios Voc pode referir-se a elementos de matrizes de varivel bidimensionais de duas maneiras. O primeiro mtodo utiliza dois ndices para especificar a posio do elemento na matriz em termos de linha e coluna. O segundo mtodo utiliza um nmero de elemento. Utilize ASUBSCRIPT( ) para obter o ndice de linha ou coluna de um elemento a partir do nmero do elemento.
[Pg.: 45]

No exemplo a seguir, criada uma matriz com duas linhas e trs colunas. DISPLAY MEMORY exibe o contedo dos elementos da matriz listados na ordem dos nmeros dos elementos. DIMENSION gaMyArray(2,3) DISPLAY MEMORY LIKE gaMyArray GAMYARRAY Pub A ( 1, 1) L .F. (elemento nmero 1) ( 1, 2) L .F. (elemento nmero 2) ( 1, 3) L .F. (elemento nmero 3) ( 2, 1) L .F. (elemento nmero 4) ( 2, 2) L .F. (elemento nmero 5) ( 2, 3) L .F. (elemento nmero 6) Os dois comandos abaixo armazenam a seqncia de caracteres INVOICE no mesmo elemento de matriz: STORE 'INVOICE' TO gaMyArray(2, 1) STORE 'INVOICE' TO gaMyArray(4) Em matrizes unidimensionais, o nmero de um elemento idntico ao seu ndice de linha nico. No necessrio utilizar ASUBSCRIPT( ) com matrizes unidimensionais. AT( ), funo Retorna a posio numrica inicial da primeira ocorrncia de uma expresso de caracteres ou campo Memo dentro de uma outra expresso de caracteres ou campo Memo, contando a partir do caractere mais esquerda. Sintaxe AT(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia]) Tipos de retorno Numrico Argumentos cExpressoProcurada Especifica a expresso de caracteres que AT( ) procura em cExpressoPesquisada. cExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura. Tanto cExpressoProcurada como cExpressoPesquisada podem ser campos Memo de qualquer tamanho. nOcorrncia Especifica qual ocorrncia (primeira, segunda, terceira e assim por diante) da cExpressoProcurada procurada na cExpressoPesquisada. Como padro, AT( ) procura a primeira ocorrncia da cExpressoProcurada (nOcorrncia = 1). A incluso de nOcorrncia permite que voc procure ocorrncias adicionais da cExpressoProcurada na cExpressoPesquisada. AT( ) retornar 0 se nOcorrncia for maior do que o nmero de vezes que a cExpressoProcurada ocorre na cExpressoPesquisada. Comentrios AT( ) procura a primeira ocorrncia da primeira expresso de caracteres na segunda expresso de caracteres. Em seguida, retorna um inteiro que indica a posio do primeiro caractere na expresso de caracteres localizada. Caso a expresso de caracteres no seja localizada, AT( ) retornar 0. A procura executada por AT( ) considera maisculas/minsculas. Para executar uma procura que no considere maisculas/minsculas, utilize ATC( ).

[Pg.: 46]

AT( ), exemplo da funo STORE 'Agora a hora da verdade' TO gcString STORE ' a' TO gcFindString CLEAR ? AT(gcFindString,gcString) && Exibe 5 STORE '' TO gcFindString ? AT(gcFindString,gcString) && Exibe 0, considera maisculas/minsculas AT_C( ), funo Retorna a posio numrica inicial da primeira ocorrncia de uma expresso de caracteres ou campo Memo dentro de uma outra expresso de caracteres ou campo Memo, contando a partir do caractere mais esquerda. Sintaxe AT_C(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia]) Tipos de retorno Numrico Argumentos cExpressoProcurada Especifica a expresso de caracteres que AT_C( ) procura em cExpressoPesquisada. CExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura. Tanto a cExpressoProcurada como a cExpressoPesquisada podem ser campos Memo de qualquer tamanho. nOcorrncia Especifica qual ocorrncia (primeira, segunda, terceira e assim por diante) da cExpressoProcurada procurada na cExpressoPesquisada. Como padro, AT_C( ) procura a primeira ocorrncia da cExpressoProcurada (nOcorrncia = 1). A incluso de nOcorrncia permite que voc procure ocorrncias adicionais de cExpressoProcurada em cExpressoPesquisada. AT_C( ) retornar 0 se nOcorrncia for maior do que o nmero de vezes que a cExpressoProcurada ocorre na cExpressoPesquisada. Comentrios AT_C( ) procura a primeira ocorrncia da primeira expresso de caracteres na segunda expresso de caracteres. Em seguida, retorna um inteiro que indica a posio do primeiro caractere na expresso de caracteres localizada. Caso a expresso de caracteres no seja localizada, AT_C( ) retornar 0. AT_C( ) foi criada para expresses que contm caracteres de byte duplo. Se a expresso contiver apenas caracteres de byte nico, AT_C( ) ser equivalente a AT( ). A procura executada por AT_C( ) considera maisculas/minsculas. Para executar uma procura que no considere maisculas/minsculas, utilize ATCC( ). ATAN( ), funo Retorna em radianos o arco tangente de uma expresso numrica. Sintaxe ATAN(nExpresso) Tipos de retorno
[Pg.: 47]

Numrico Argumentos nExpresso Especifica uma expresso numrica cujo arco tangente retornado por ATAN( ). nExpresso pode ser qualquer valor. O valor retornado por ATAN( ) pode variar de pi/2 a +pi/2 (1,57079 a 1,57079). O nmero de casas decimais exibidas no valor retornado por ATAN( ) determinado por SET DECIMALS. Comentrios Utilize RTOD( ) para converter radianos em graus. ATAN( ), exemplo da funo CLEAR ? ATAN(0) && Exibe 0.00 STORE PI( )/2 to gnAngle ? ATAN(gnAngle) && Exibe 1.00 ? ATAN(PI( )/2) && Exibe 1.00 ? ATAN(DTOR(90)) && Exibe 1.00 ATC( ), funo Retorna a posio numrica inicial da primeira ocorrncia de uma expresso de caracteres ou campo Memo dentro de uma outra expresso de caracteres ou campo Memo, sem considerar maisculas/minsculas nas duas expresses. Sintaxe ATC(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia]) Tipos de retorno Numrico Argumentos cExpressoProcurada Especifica a expresso de caracteres que ATC( ) procura em cExpressoPesquisada. cExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura. Tanto a cExpressoProcurada como a cExpressoPesquisada podem ser campos Memo de qualquer tamanho. nOcorrncia Especifica qual ocorrncia (primeira, segunda, terceira e assim por diante) da cExpressoProcurada ser procurada na cExpressoPesquisada. Como padro, ATC( ) procura a primeira ocorrncia da cExpressoProcurada (nOcorrncia = 1). A incluso de nOcorrncia permite que voc procure ocorrncias adicionais da cExpressoProcurada na cExpressoPesquisada. Comentrios ATC( ) procura a ocorrncia da primeira expresso de caracteres na segunda expresso de caracteres, sem considerar maisculas/minsculas nas duas expresses. Utilize AT( ) para executar uma procura que considere maisculas/minsculas. ATC( ) retorna um inteiro correspondente posio em que o primeiro caractere da expresso de caracteres foi localizado. Se a expresso de caracteres no for localizada, ATC( ) retornar 0.

[Pg.: 48]

ATC( ), exemplo da funo STORE ' Agora a hora da verdade ... ' TO gcString STORE ' A' TO gcFindString CLEAR ? ATC(gcFindString, gcString) && Exibe 5 STORE '' TO gcFindString ? ATC(gcFindString, gcString) && Exibe 5 ? ATC('now',gcString) && Exibe 1 ATCC( ), funo Retorna a posio numrica inicial da primeira ocorrncia de uma expresso de caracteres ou campo Memo dentro de outra expresso de caracteres ou campo Memo, sem considerar maisculas/minsculas nas duas expresses. Sintaxe ATCC(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia]) contact Tipos de retorno Numrico Argumentos cExpressoProcurada Especifica a expresso de caracteres que ATCC( ) procura em cExpressoPesquisada. cExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura. Tanto a cExpressoProcurada como a cExpressoPesquisada podem ser campos Memo de qualquer tamanho. nOcorrncia Especifica qual ocorrncia (primeira, segunda, terceira e assim por diante) da cExpressoProcurada ser procurada na cExpressoPesquisada. Como padro, ATCC( ) procura a primeira ocorrncia da cExpressoProcurada (nOcorrncia = 1). A incluso de nOcorrncia permite que voc procure ocorrncias adicionais da cExpressoProcurada na cExpressoPesquisada. Comentrios ATCC( ) foi criada para expresses que contm caracteres de byte duplo. Se a expresso contiver apenas caracteres de byte nico, ATCC( ) ser equivalente a ATC( ). ATCC( ) procura a ocorrncia da primeira expresso de caracteres na segunda expresso de caracteres, sem considerar maisculas/minsculas nas duas expresses. Utilize AT_C( ) para executar uma procura que considere maisculas/minsculas. ATCC( ) retorna um inteiro correspondente posio em que o primeiro caractere da expresso de caracteres foi localizado. Caso a expresso de caracteres no seja localizada, ATCC( ) retornar 0. ATCLINE( ), funo Retorna o nmero da linha da primeira ocorrncia de uma expresso de caracteres ou campo Memo dentro de uma outra expresso de caracteres ou campo Memo, sem considerar maisculas/minsculas nas duas expresses. Sintaxe ATCLINE(cExpressoProcurada, cExpressoPesquisada) Tipos de retorno

[Pg.: 49]

Numrico Argumentos cExpressoProcurada cExpressoPesquisada. Especifica a expresso de caracteres que ATCLINE( ) procura em

cExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura. Tanto a cExpressoProcurada como a cExpressoPesquisada podem ser campos Memo de qualquer tamanho. Utilize MLINE( ) para retornar a linha que contm a expresso de caracteres correspondente. Dica ATCLINE( ) oferece um mtodo conveniente para pesquisar em campos Memo. Comentrios Se a procura for bem-sucedida, ATCLINE( ) retornar o nmero da linha que contm a primeira expresso de caracteres. Caso contrrio, ATCLINE( ) retornar 0. O nmero de linha retornado por ATCLINE( ) determinado pelo valor de SET MEMOWIDTH, mesmo que a cExpressoPesquisada no seja um campo Memo. Para obter maiores informaes, consulte SET MEMOWIDTH na Ajuda. Utilize ATLINE( ) para executar uma procura que considere maisculas/minsculas. ATCLINE( ), exemplos da funo O exemplo 1 localiza a primeira ocorrncia de uma seqncia de caracteres em um campo Memo e exibe o nome e o sobrenome do funcionrio, e a linha do memo contendo a seqncia de caracteres. O exemplo 2 demonstra como a largura do Memo afeta ATCLINE( ). * Example 1 CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE employee && Abre tabela a employee CLEAR STORE 'JAPANESE' TO gcFindString && No considera maisculas/minsculas LOCATE FOR ATCLINE(gcFindString, notes) != 0 ? First_Name ?? Last_Name ? MLINE(notes, ATCLINE(gcFindString, notes)) * Example 2 STORE '1234567890ABCDEFGHIJ' TO gcString SET MEMOWIDTH TO 20 ? ATCLINE('AB', gcString) && Exibe 1 SET MEMOWIDTH TO 10 ? ATCLINE('AB', gcString) && Exibe 2 ATLINE( ), funo Retorna o nmero da linha da primeira ocorrncia de uma expresso de caracteres ou campo Memo dentro de uma outra expresso de caracteres ou campo Memo, contando a partir da primeira linha. Sintaxe ATLINE(cExpressoProcurada, cExpressoPesquisada) Tipos de retorno Numrico Argumentos
[Pg.: 50]

cExpressoProcurada cExpressoPesquisada.

Especifica a expresso de caracteres que o Visual FoxPro procura em

cExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura. Tanto a cExpressoProcurada como a cExpressoPesquisada podem ser campos Memo de qualquer tamanho. Utilize MLINE( ) para retornar a linha que contm a expresso de caracteres correspondente como uma seqncia de caracteres. Dica ATLINE( ) oferece um mtodo conveniente de procura de campos Memo. Comentrios ATLINE( ) procura a ocorrncia da primeira expresso de caracteres na segunda expresso de caracteres, sem considerar maisculas/minsculas em ambas expresses. Utilize ATCLINE( ) para executar uma procura que no considere maisculas/minsculas. Se a procura for bem-sucedida, ATLINE( ) retornar o nmero da linha em que ocorre a correspondncia. Caso contrrio, ATLINE( ) retornar 0. O nmero de linha retornado por ATLINE( ) determinado pelo valor de SET MEMOWIDTH, mesmo que a cExpressoPesquisada no seja um campo Memo. Para obter maiores informaes, consulte SET MEMOWIDTH na Ajuda. ATLINE( ), exemplos da funo O exemplo 1 localiza a primeira ocorrncia de uma seqncia de caracteres em um campo Memo e exibe o nome e o sobrenome do funcionrio, e a linha do memo contendo a seqncia de caracteres. O exemplo 2 demonstra como a largura do memo afeta ATLINE( ). * Example 1 CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE employee && Abre a tabela employee CLEAR STORE 'Japons' TO gcFindString && Considera maisculas/minsculas LOCATE FOR ATLINE(gcFindString, notes) != 0 ? First_Name ?? Last_Name ? MLINE(notes, ATLINE(gcFindString, notes)) * Example 2 STORE '1234567890ABCDEFGHIJ' TO gcString SET MEMOWIDTH TO 20 ? ATLINE('AB', gcSting) && Exibe 1 SET MEMOWIDTH TO 10 ? ATLINE('AB', gcString) && Exibe 2 ATN2( ), funo Retorna o arco tangente em todos os quatro quadrantes de valores especificados. Sintaxe ATN2(nCoordenadaY, nCoordenadaX)

[Pg.: 51]

Tipos de retorno Numrico Argumentos nCoordenadaY Especifica a coordenada y. nCoordenadaX Especifica a coordenada x. Comentrios ATN2( ) retorna o ngulo (em radianos) entre a linha y = 0 e a linha que conecta as coordenadas especificadas e a origem (0, 0) do sistema de coordenadas. ATN2( ) retorna um valor entre pi/2 e + pi/2. Para converter o valor retornado por ATN2( ) em graus, utilize RTOD( ). Para especificar o nmero de casas decimais exibidas no resultado, utilize SET DECIMALS. ATN2( ), exemplo da funo CLEAR ? PI( ) && Exibe 3.14 ? ATN2(0,-1) && Exibe 3.14 STORE COS(PI( )) TO gnXCoord STORE SIN(PI( )) TO gnYCoord ? ATN2(gnYCoord,gnXCoord) && Exibe 3.14 ? ATN2(gnYCoord,gnXCoord)/PI( ) && Exibe 1.00

AVERAGE, comando Calcula o mtodo aritmtico das expresses ou campos numricos. Sintaxe AVERAGE [ListaExpresses] [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [TO ListaVarMem | TO ARRAY NomeMatriz] [NOOPTIMIZE] Argumentos ListaExpresses Especifica as expresses para a mdia. ListaExpresses pode ser uma lista de campos a partir da tabela separada por vrgulas ou expresses numricas que envolvem campos dessa tabela. Escopo Especifica o registro ou o intervalo de registros para incluir na mdia. Apenas os registros includos no intervalo de registros especificados pelo escopo esto com mdia calculada. As clusulas do escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. O escopo padro para AVERAGE registros ALL. Os comandos que incluem Escopo operam apenas em tabelas na rea de trabalho ativa. FOR lExpresso1 Especifica uma condio pela qual so includos apenas os registros que satisfazem as condies lgicas de lExpresso. Esse argumento permite filtrar registros indesejveis. Rushmore otimiza uma consulta AVERAGE FOR se lExpresso for uma expresso de otimizao. Para obter um melhor desempenho, utilize uma expresso de otimizao da clusula FOR. Para obter maiores

[Pg.: 52]

informaes sobre expresses de otimizao Rushmore, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. WHILE lExpresso2 Especifica que, uma vez que a expresso lgica lExpresso2 resulta em verdadeiro (.T.), os registros esto includos na mdia. TO ListaVarMem Especifica a lista de variveis ou elementos de matriz para os quais os resultados da mdia so armazenados. TO ARRAY NomeMatriz Especifica a matriz unidimensional na qual os resultados da mdia so armazenados. A matriz unidimensional pode ser criada antes da execuo de AVERAGE. Se a matriz includa em AVERAGE no existir, o Visual FoxPro a criar automaticamente. Se a matriz existir e no for grande o suficiente para conter todos os resultados, o Visual FoxPro automaticamente aumentar o tamanho da matriz para acomodar as informaes. NOOPTIMIZE Desativa a otimizao Rushmore de AVERAGE. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. Comentrios Todos os campos numricos na tabela selecionada esto com mdias calculadas, a menos que voc inclua uma lista de expresses opcional. O resultado exibido na tela se SET TALK estiver ativado (ON). Se SET HEADINGS estiver ativado (ON), os nomes dos campos ou expresses envolvendo os nomes dos campos so exibidos acima dos resultados. AVERAGE, exemplo do comando CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE orders && Abre a tabela de pedidos CLEAR AVERAGE Order_Amt && Calcula as mdias de todos os pedidos AVERAGE Order_Amt TO gnAvg && Armazena a mdia na varivel de memria ? 'Quantidade mdia dos pedidos: ' ?? gnAvg && Exibe a mdia novamente TABELA de Cores A tabela a seguir lista valores tpicos de cor. Cor Valores RGB Valor de nCor

Branco255, 255, 255 16777215 Preto 0, 0, 0 0 Cinza 192, 192, 192 12632256 Cinza-escuro 128, 128, 128 8421504 Vermelho 255, 0, 0 255 Vermelho-escuro 128, 0, 0 128 Amarelo 255, 255, 0 65535 Amarelo-escuro 128, 128, 0 32896 Verde 0, 255, 0 65280 Verde-escuro 0, 128, 0 32768 Ciano 0, 255, 255 16776960 Ciano-escuro 0, 128, 128 8421376 Azul 0, 0, 255 16711680 Azul-escuro 0, 0, 128 8388608 Magenta 255, 0 ,255 16711935 Magenta-escuro 128, 0, 128 8388736
[Pg.: 53]

BETWEEN( ), funo Determina se o valor de uma expresso est entre os valores de duas outras expresses com mesmo tipo de dado. Sintaxe BETWEEN(eValorTeste, eValorMnimo, eValorMximo) Tipos de retorno Lgico ou valor nulo Argumentos eValorTeste Especifica a expresso cujo valor testado por BETWEEN( ). Se o valor de eValorTeste for maior que ou igual ao valor de eValorMnimo e menor que ou igual ao valor de eValorMximo, BETWEEN( ) retornar verdadeiro (.T.). Caso contrrio, BETWEEN( ) retornar falso (.F.). BETWEEN( ) retornar o valor nulo se eValorMnimo ou eValorMximo representarem um valor nulo. eValorMnimo Especifica o valor mais baixo no intervalo avaliado por BETWEEN( ). eValorMximo Especifica o valor mais alto no intervalo avaliado por BETWEEN( ). Comentrios BETWEEN( ) retornar um valor verdadeiro (.T.) se o valor de uma expresso do tipo caractere, data, data e hora, numrico, flutuante, inteiro, duplo ou moeda situar-se entre os valores de duas outras expresses com o mesmo tipo de dado. Caso contrrio, BETWEEN( ) retornar falso (.F.). BETWEEN( ) retornar o valor nulo se eValorMnimo ou eValorMximo representarem um valor nulo. BETWEEN( ), exemplo da funo O exemplo a seguir procura na tabela orders todos os registros no campo order_amt com valores entre 950 e 1000 inclusive e exibe o campo cust_id e o campo order_amt. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE orders && Abre a tabela Order CLEAR SCAN FOR BETWEEN(order_amt,950,1000) ? cust_id, order_amt ENDSCAN BINTOC( ), funo Converte um valor inteiro em uma representao de caracteres binrios. Sintaxe BINTOC(nExpresso [, nTamanho]) Tipos de retorno Caractere Argumentos nExpresso Especifica o valor inteiro a ser convertido.

[Pg.: 54]

nTamanho Especifica o tamanho em caracteres da seqncia de caracteres retornada. nTamanho tambm determina o valor que pode ser especificado para nExpresso. A tabela a seguir lista os valores aceitos para nTamanho e o intervalo correspondente de valores para nExpresso: nTamanho Intervalo nExpresso

1 -128 a 127 2 -32,768 a 32,767 4 (padro) -2,147,483,648 a 2,147,483,647 Se nTamanho for omitido, BINTOC( ) retornar uma seqncia de caracteres composta por quatro caracteres. Comentrios Utiliza-se BINTOC( ) para reduzir o tamanho dos ndices para campos numricos que contm dados inteiros. Por exemplo, um campo numrico denominado iPartCode pode conter um valor inteiro entre 1 e 127 que corresponde a um cdigo de classificao de peas. BINTOC( ) permite que voc converta o valor no campo numrico em uma representao de caracteres simples. Por exemplo, o comando a seguir cria um ndice com uma chave de ndice de um caractere: INDEX ON BINTOC(nPartCode,1) TAG PartCode BITAND( ), funo Retorna o resultado de uma operao AND em nvel de bit executada sobre dois valores numricos. Sintaxe BITAND(nExpresso1, nExpresso2) Tipos de retorno Numrico Argumentos nExpresso1, nExpresso2 Especifica os valores numricos sobre os quais a operao AND em nvel de bit executada. Se nExpresso1 e nExpresso2 no forem nmeros inteiros, sero convertidos em inteiros antes que a operao AND em nvel de bit seja executada. Comentrios BITAND( ) compara cada bit em nExpresso1 com o bit correspondente em nExpresso2. Se os bits em nExpresso1 e nExpresso2 forem ambos 1, o bit resultante correspondente ser definido como 1; caso contrrio, ser definido como 0. A tabela a seguir mostra o resultado de uma operao AND em nvel de bit em bits correspondentes de nExpresso1 e nExpresso2: Bit de nExpresso1 0 0 1 1 0 1 1 0 0 0 1 0 BITAND( ), exemplo da funo x = 3 && 0011 binrio y = 6 && 0110 binrio ? BITAND(x,y) && Retorna 2, 0010 binrio Bit de nExpresso2 Bit resultante

[Pg.: 55]

BITCLEAR( ), funo Limpa um bit especificado (define o bit como 0) em um valor numrico e retorna o valor resultante. Sintaxe BITCLEAR(nExpresso1, nExpresso2) Tipos de retorno Numrico Argumentos nExpresso1 Especifica o valor numrico em que um bit limpo. Se nExpresso1 no for um nmero inteiro, ser convertido em inteiro antes que o seu bit seja definido. nExpresso2 Especifica a posio do bit que limpo em nExpresso1. nExpresso2 pode estar no intervalo de 0 a 31; 0 o bit mais direita. BITCLEAR( ), exemplo da funo x = 7 && 0111 binrio y = 1 && 2a. posio de bit (0 = 1a. posio de bit) ? BITCLEAR(x,y) && Retorna 5, 0101 binrio BITLSHIFT( ), funo Retorna o resultado do deslocamento para a esquerda dos bits de um valor numrico, um nmero especificado de posies. Sintaxe BITLSHIFT(nExpresso1, nExpresso2) Tipos de retorno Numrico Argumentos nExpresso1 Especifica o valor numrico cujos bits so deslocados para a esquerda. Se nExpresso1 no for um nmero inteiro, ser convertido em inteiro antes que os respectivos bits sejam deslocados. nExpresso2 Especifica o nmero de posies de bits a serem deslocados. Se nExpresso2 no for um nmero inteiro, ser convertido. BITLSHIFT( ), exemplo da funo x = 5 && 0101 binrio y = 1 && Desloca os bits 1 posio para a esquerda ? BITLSHIFT(x,y) && Retorna 10, 1010 binrio

[Pg.: 56]

BITNOT( ), funo Retorna o resultado de uma operao NOT em nvel de bit executada sobre um valor numrico. Sintaxe BITNOT(nExpresso) Tipos de retorno Numrico Argumentos nExpresso Especifica o valor numrico sobre o qual a operao NOT em nvel de bit executada. Se nExpresso1 no for um nmero inteiro, ser convertido em inteiro antes que os respectivos bits sejam deslocados. Comentrios A funo BITNOT( ) retorna o complemento em nvel de bit de nExpresso. O valor numrico retornado por BITNOT( ) representa nExpresso com cada bit de valor 0 alternado para 1 e cada bit de valor 1 alternado para 0. A tabela a seguir mostra o resultado de uma operao NOT em nvel de bit em nExpresso: Bit de nExpresso 0 1 1 0 Bit resultante

BITNOT( ), exemplo da funo x = 5 && 0101 binrio ? BITNOT(x) && Retorna -6 BITOR( ), funo Retorna o resultado de uma operao OR inclusiva em nvel de bit executada sobre dois valores numricos. Sintaxe BITOR(nExpresso1, nExpresso2) Tipos de retorno Numrico Argumentos nExpresso1, nExpresso2 Especifica os valores numricos sobre os quais a operao OR inclusiva em nvel de bit executada. Se nExpresso1 e nExpresso2 no forem nmeros inteiros, sero convertidos em inteiros antes que a operao OR inclusiva em nvel de bit seja executada. Comentrios BITOR( ) compara cada bit em nExpresso1 com o bit correspondente em nExpresso2. Se um dos bits em nExpresso1 ou nExpresso2 for 1, o bit resultante correspondente ser definido como 1; caso contrrio, ser definido como 0. A tabela a seguir mostra o resultado de uma operao OR inclusiva sobre bits correspondentes em nExpresso1 e nExpresso2: Bit de nExpresso1 Bit de nExpresso2 Bit resultante
[Pg.: 57]

0 0 1 1

0 1 0 1

0 1 1 1 BITOR( ), exemplo da funo

x = 5 && 0101 binrio y = 6 && 0110 binrio ? BITOR(x,y) && Retorna 7, 0111 binrio BITRSHIFT( ), funo Retorna o resultado do deslocamento para a direita dos bits de um valor numrico, um nmero especificado de posies. Sintaxe BITRSHIFT(nExpresso1, nExpresso2) Tipos de retorno Numrico Argumentos nExpresso1 Especifica o valor numrico cujos bits so deslocados para a direita. Se nExpresso1 no for um nmero inteiro, ser convertido em inteiro antes que os respectivos bits sejam deslocados. nExpresso2 Especifica o nmero de posies de bits a serem deslocados. Se Expresso2 no for um nmero inteiro, ser convertido. BITRSHIFT( ), exemplo da funo x = 5 && 0101 binrio y = 1 && Desloca os bits 1 posio para a direita ? BITRSHIFT(x,y) && Retorna 2, 0010 binrio BITSET( ), funo Define o bit como 1 em um valor numrico e retorna o valor resultante. Sintaxe BITSET(nExpresso1, nExpresso2) Tipos de retorno Numrico Argumentos nExpresso Especifica o valor numrico em que um bit definido. Se nExpresso1 no for um nmero inteiro, ser convertido em inteiro antes que o seu bit seja definido. nExpresso Especifica a posio em nExpresso1 do bit que definido como 1. nExpresso2 pode estar no intervalo de 0 a 31; 0 o bit mais direita.

[Pg.: 58]

BITSET( ), exemplo da funo x = 5 && 0101 binrio y = 1 && 2a. posio de bit (0 = 1a. posio de bit) ? BITSET(x,y) && Retorna 7, 0111 binrio BITTEST( ), funo Retornar verdadeiro (.T.) se um bit especificado em um valor numrico estiver definido como 1; caso contrrio, retornar falso (.F.). Sintaxe BITTEST(nExpresso1, nExpresso2) Tipos de retorno Lgico Argumentos nExpresso1 Especifica o valor numrico em que um bit verificado. Se nExpresso1 no for um nmero inteiro, ser convertido em inteiro antes que o respectivo bit seja verificado. nExpresso2 Especifica a posio do bit que verificado em nExpresso1. nExpresso2 pode estar no intervalo de 0 a 31; 0 o bit mais direita. BITTEST( ), exemplo da funo O exemplo a seguir utiliza BITTEST( ) para determinar se uma srie de inteiros par. Se um inteiro for par, a funo IsEven retornar verdadeiro (.T.); caso contrrio, retornar falso (.F.). CLEAR ? '2 even? ' ?? IsEven(2) && par, retorna .T. ? '3 even? ' ?? IsEven(3) && No par, retorna .F. ? '0 even? ' ?? IsEven(0) && par, retorna .T. ? '-13 even? ' ?? IsEven(-13) && No par, retorna .F. Function IsEven PARAMETER nInteger RETURN NOT BITTEST(nInteger, 0) BITXOR( ), funo Retorna o resultado de uma operao OR exclusiva em nvel de bit executada sobre dois valores numricos. Sintaxe BITXOR(nExpresso1, nExpresso2) Tipos de retorno Numrico
[Pg.: 59]

Argumentos nExpresso1, nExpresso2 Especifica os valores numricos sobre os quais a operao OR exclusiva em nvel de bit executada. Se nExpresso1 e nExpresso2 no forem nmeros inteiros, sero convertidos em inteiros antes que a operao OR exclusiva em nvel de bit seja executada. Comentrios BITXOR( ) compara cada bit em nExpresso1 com o bit correspondente em nExpresso2. Se um bit for 0 e o outro bit for 1, o bit resultante correspondente ser definido como 1. Caso contrrio, ser definido como 0. A tabela a seguir mostra o resultado de uma operao OR exclusiva sobre bits correspondentes em nExpresso1 e nExpresso2: Bit de nExpresso1 0 0 1 1 0 1 0 1 0 1 1 0 Bit de nExpresso2 Bit resultante

BITXOR( ), exemplo da funo x = 5 && 0101 binrio y = 6 && 0110 binrio ? BITXOR(x,y) && Retorna 3, 0011 binrio BLANK, comando Limpa os dados de todos os campos do registro atual quando emitido sem argumentos adicionais. Sintaxe BLANK [FIELDS ListaCampos] [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [NOOPTIMIZE] Argumentos FIELDS ListaCampos Limpa apenas os campos especificados com ListaCampos. Como padro, se a clusula FIELDS for omitida, todos os campos de um registro sero limpos. Qualquer campo especificado em uma rea de trabalho no selecionada deve ser precedido pelo alias da rea de trabalho. Importante BLANK no ir limpar os dados dos campos de um registro em outra rea de trabalho relacionada se o ponteiro do registro estiver no final do arquivo na rea de trabalho do momento. O ponteiro dever estar em um registro na rea de trabalho atual para que BLANK atue sobre os campos do registro relacionado. Escopo Especifica um intervalo de registros a serem limpos. Somente os registros que estiverem dentro do intervalo sero limpos. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Para obter maiores informaes sobre as clusulas de escopo, consulte o tpico Clusulas de escopo. Os comandos que incluem Escopo operam somente na tabela na rea de trabalho ativa. O escopo padro para BLANK o registro atual (NEXT 1).
[Pg.: 60]

FOR lExpresso1 Limpa os dados dos campos dos registros para os quais lExpresso1 resulta em verdadeiro (.T.). Rushmore otimizar BLANK FOR se lExpresso1 for uma expresso otimizvel. Uma discusso sobre a otimizao Rushmore apresentada em Compreendendo a tecnologia Rushmore no captulo 15, Otimizando Aplicativos, no Guia do Desenvolvedor. WHILE lExpresso2 Especifica uma condio pela qual os dados dos campos dos registros sero limpos desde que a expresso lgica lExpresso2 resulte em verdadeiro (.T.). NOOPTIMIZE Evita a otimizao Rushmore de BLANK. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. Comentrios Utilize APPEND BLANK para adicionar um novo registro em branco ao final de uma tabela. Utilize ISBLANK( ) para determinar se um campo de um registro est em branco. BLANK, exemplo de comando O exemplo a seguir abre a tabela customer no banco de dados testdata. O contedo do primeiro registro exibido. Utiliza-se SCATTER para salvar o contedo do registro em uma matriz. Este limpo com BLANK, e o contedo do registro exibido novamente. Usa-se GATHER para restaurar o contedo do registro original, e o contedo do registro restaurado exibido novamente. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer CLEAR DISPLAY && Exibe o registro atual SCATTER TO gaCustomer && Cria matriz com o contedo do registro BLANK && Limpa o registro DISPLAY && Exibe o registro em branco GATHER FROM gaCustomer && Restaura o contedo do registro original DISPLAY && Exibe o registro restaurado BOF( ), funo Determina se o ponteiro do registro est posicionado no incio de uma tabela. Sintaxe BOF([nreaTrabalho | cAliasTabela]) Tipos de retorno Lgico Argumentos nreaTrabalho trabalho. Especifica o nmero da rea de trabalho para uma tabela aberta em uma outra rea de

cAliasTabela Especifica o alias de uma tabela aberta em uma outra rea de trabalho. Caso a tabela em que voc deseja testar a condio de incio do arquivo esteja aberta em uma rea de trabalho diferente da selecionada no momento, utilize estes argumentos opcionais para especificar o nmero da rea de trabalho ou o alias da tabela. Caso a tabela no esteja aberta na rea de trabalho especificada, BOF( ) retornar falso (.F.).

[Pg.: 61]

Comentrios Utilize BOF( ) para testar uma condio de incio do arquivo para uma tabela. BOF( ) retornar verdadeiro (.T.) se voc tiver tentado mover o ponteiro do registro para uma posio anterior ao primeiro registro da tabela. BOF( ), exemplo de funo O exemplo a seguir abre a tabela customer e lista o nome da empresa, uma pgina de cada vez, comeando pelo ltimo registro. A lista continua at o incio do arquivo ser alcanado ou at que se escolha Cancelar. CLOSE DATABASES CLEAR OPEN DATABASE (HOME() + "samples\data\testdata") USE customer GO BOTTOM local recCtr, btnValue recCtr = 0 btnValue = 1 DO WHILE btnValue = 1 AND NOT BOF() ? "Company : " + company recCtr = recCtr + 1 if (recCtr % 20) = 0 then btnValue =MESSAGEBOX ("Clique em OK para continuar, clique sobre Cancelar para sair.",33) clear endif Skip -1 && Move um registro acima ENDDO =MESSAGEBOX("Lista concluda.",48) BROWSE, comando Abre a janela Pesquisar e exibe registros da tabela selecionada no momento. Sintaxe BROWSE [FIELDS ListaCampos] [FONT cNomeFonte [, nTamanhoFonte]] [STYLE cEstiloFonte] [FOR lExpresso1 [REST]] [FORMAT] [FREEZE NomeCampo] [KEY eExpresso1 [, eExpresso2]] [LAST | NOINIT] [LOCK nNmeroDeCampos] [LPARTITION] [NAME NomeObjeto] [NOAPPEND] [NODELETE] [NOEDIT | NOMODIFY] [NOLGRID] [NORGRID] [NOLINK] [NOMENU] [NOOPTIMIZE] [NOREFRESH] [NORMAL] [NOWAIT] [PARTITION nNmeroColuna [LEDIT] [REDIT]]
[Pg.: 62]

[PREFERENCE NomePreferncia] [SAVE] [TIMEOUT nSegundos] [TITLE cTextoTtulo] [VALID [:F] lExpresso2 [ERROR cTextoMensagem]] [WHEN lExpresso3] [WIDTH nLarguraCampo] [[WINDOW NomeJanela1] [IN [WINDOW] NomeJanela2 | IN SCREEN] [COLOR SCHEME nNmeroEsquema] Argumentos FIELDS ListaCampos Especifica os campos exibidos na janela Pesquisar. Os campos so exibidos na ordem especificada em ListaCampos. Voc pode incluir campos de outras tabelas relacionadas na lista de campos. Quando um campo de uma tabela relacionada includo, antes do nome dele, deve ser colocado o alias de tabela e um ponto. Se voc omitir FIELDS, todos os campos da tabela sero exibidos na ordem em que aparecem na estrutura da tabela. FONT cNomeFonte [, nTamanhoFonte] Especifica a fonte e o tamanho da fonte da janela Pesquisar. A expresso de caracteres cNomeFonte especifica o nome da fonte e a expresso numrica nTamanhoFonte especifica o tamanho dela. Por exemplo, a clusula a seguir especifica uma fonte Courier de 16 pontos para os campos exibidos em uma janela Pesquisar: FONT 'Courier',16 Se voc incluir a clusula FONT, mas omitir o tamanho da fonte nTamanhoFonte, ser utilizada uma fonte de 10 pontos na janela Pesquisar. Se a clusula FONT for omitida, ser utilizada uma fonte MS Sans Serif de 8 pontos. Se a fonte especificada no estiver disponvel, ela ser substituda por outra com caractersticas semelhantes. STYLE cEstiloFonte Especifica o estilo da fonte da janela Pesquisar. Caso voc omita a clusula STYLE, ser utilizado o estilo de fonte Normal. Se o estilo de fonte especificado no estiver disponvel, ele ser substitudo por outro com caractersticas semelhantes, ou ser utilizada uma fonte estilo Normal. Caractere Estilo de fonte

B Negrito I Itlico N Normal O Contornado Q Opaco S Sombreado Riscado T Transparente U Sublinhado Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. O exemplo a seguir abre uma janela Pesquisar e utiliza uma fonte sublinhada: CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer IF _WINDOWS BROWSE FIELDS contact FONT 'System', 15 STYLE 'NU' ENDIF IF _MAC BROWSE FIELDS contact FONT 'Geneva', 14 STYLE 'NU' ENDIF
[Pg.: 63]

FOR lExpresso1 Especifica uma condio pela qual somente registros para os quais lExpresso1 verdadeira so exibidos na janela Pesquisar. Rushmore otimizar uma consulta especificada com um comando BROWSE FOR se lExpresso1 for uma expresso otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR. Para obter informaes sobre expresses otimizveis por Rushmore, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. Inclua FOR para mover o ponteiro do registro at o primeiro registro que corresponda condio. Inclua REST para manter o ponteiro do registro na sua posio atual. REST Impede que o ponteiro do registro seja movido da sua posio atual para o incio da tabela quando uma janela Pesquisar aberta com a clusula FOR. Caso contrrio, BROWSE, como padro, posiciona o ponteiro do registro no incio da tabela. FORMAT Especifica o uso de um arquivo de formatao para controlar a exibio e o formato da entrada de dados em uma janela Pesquisar. Primeiro, o arquivo de formatao deve ser aberto com SET FORMAT. As informaes a seguir so extradas do arquivo de formatao e aplicadas janela Pesquisar: A lista de campos a serem pesquisados Todas as clusulas VALID Todas as clusulas WHEN Todas as clusulas RANGE Tamanhos de campos (conforme especificado em clusulas PICTURE) Todas as expresses SAY (includas como campos BROWSE calculados)

O exemplo a seguir utiliza um arquivo de formatao para validar os dados digitados em uma janela Pesquisar. As posies especificadas com @ ... GET so ignoradas. A primeira linha cria um campo BROWSE (Cust_id) com 5 caracteres de largura e permite a entrada somente de letras e dgitos. A segunda linha cria um campo BROWSE ( Company) que no pode conter um valor em branco e pode conter um mximo de 20 caracteres alfabticos. A terceira linha cria um campo BROWSE (Contact) no qual s podero ser digitados dados quando o campo estiver em branco. A seguir apresentado o contedo do arquivo de formatao CUSTENTR.FMT, que utilizado para validar dados digitados na tabela 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) * Este o programa que utiliza o arquivo de formatao CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer SET FORMAT TO custentr.fmt BROWSE FORMAT FREEZE NomeCampo Permite que sejam feitas alteraes somente em um campo da janela Pesquisar. Este campo especificado com NomeCampo. Os demais campos so exibidos e no podem ser editados. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer BROWSE FIELDS phone :H = 'Telefone:' , ; company :H = 'Empresa:' ; FREEZE phone
[Pg.: 64]

KEY eExpresso1 [, eExpresso2] Limita o escopo de registros exibidos na janela Pesquisar. Com KEY, voc pode especificar um valor de chave de ndice (eExpresso1) ou um intervalo de valores de chaves (eExpresso1, eExpresso2) para os registros exibidos na janela Pesquisar. A tabela pesquisada deve estar indexada e o valor ou os valores de chave de ndice includos na clusula KEY devem ter o mesmo tipo de dados da expresso de ndice da marca ou arquivo de ndice principal. Por exemplo, a tabela customer inclui um campo de caractere que contm cdigos postais. Caso a tabela esteja indexada no campo de cdigo postal, voc poder especificar um intervalo deles na clusula KEY. No exemplo a seguir, somente registros com cdigos postais dentro do intervalo de 10.000 a 30.000 so exibidos na janela Pesquisar: CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer SET ORDER TO postalcode BROWSE KEY '10000', '30000' LAST | NOINIT Salva qualquer alterao na configurao feita na aparncia de uma janela Pesquisar. As alteraes so salvas no arquivo FOXUSER, podendo incluir alteraes feitas na lista de campos, no tamanho de cada campo e na localizao e tamanho da janela Pesquisar. Se BROWSE for emitido com a clusula LAST ou NOINIT, a janela Pesquisar ser aberta na mesma configurao que foi salva por ltimo no arquivo FOXUSER, caso SET RESOURCE esteja ativado (ON). Este procedimento restaura a configurao anterior da janela Pesquisar criada com o ltimo comando BROWSE. Caso o ltimo BROWSE emitido na janela Comando inclua uma lista extensa de clusulas, emita BROWSE com a opo LAST ou NOINIT para evitar a necessidade de digitar novamente o comando. Para obter maiores informaes sobre o arquivo FOXUSER, consulte SET RESOURCE na Ajuda. Caso a ltima janela Pesquisar tenha sido aberta com um BROWSE com uma clusula PREFERENCE, BROWSE LAST no ir restaurar a preferncia. As alteraes na configurao da janela Pesquisar feitas na sesso atual no sero salvas se voc sair de BROWSE pressionando as teclas CTRL+Q. As clusulas LAST e NOINIT so idnticas; NOINIT fornece compatibilidade com o dBASE. LOCK nNmeroDeCampos Especifica o nmero de campos que pode ser exibido na partio esquerda da janela Pesquisar sem tabular ou rolar. A partio esquerda automaticamente dimensionada para que possa exibir o nmero de campos especificado com nNmeroDeCampos. LPARTITION Especifica que o cursor colocado no primeiro campo na partio esquerda da janela Pesquisar. Como padro, o cursor colocado no primeiro campo na partio direita quando a janela Pesquisar aberta. NAME NomeObjeto Cria uma referncia de objeto para a janela Pesquisar, permitindo que voc manipule essa janela com as propriedades orientadas a objetos disponveis para o controle Grid. Para obter informaes adicionais sobre a programao orientada a objetos do Visual FoxPro, consulte o captulo 3, Programao orientada a objetos, no Guia do Desenvolvedor. Para obter informaes adicionais sobre as propriedades do controle Grid que podem ser especificadas para uma janela Pesquisar criada com a clusula NAME, consulte o tpico Grid, controle. NOAPPEND Impede que o usurio adicione registros tabela pressionando as teclas CTRL+Y ou selecionando Incluir registro no menu Tabela Important Including NOAPPEND doesnt prevent you from appending a record from within a routine (created with VALID, WHEN, or ON KEY LABEL) while in the Browse window. NODELETE Impede que os registros sejam marcados para excluso de dentro de uma janela Pesquisar. Como padro, um registro pode ser marcado para excluso pressionando-se as teclas CTRL+T, selecionandose Alternar excluso no menu Tabela ou clicando-se na coluna mais esquerda do registro a ser excludo.
[Pg.: 65]

Important Including NODELETE doesnt prevent you from marking a record for deletion from within a routine (created with VALID, WHEN, or ON KEY LABEL) while in the Browse window. NOEDIT | NOMODIFY Impede que um usurio modifique a tabela. NOEDIT e NOMODIFY so idnticas. Se voc incluir qualquer uma destas clusulas, poder pesquisar ou percorrer a tabela, mas no poder editla. No entanto, voc poder incluir e excluir registros. NOLGRID Remove as linhas de grade dos campos na partio esquerda da janela Pesquisar. NORGRID Remove as linhas de grade dos campos na partio direita da janela Pesquisar. NOLINK Desvincula as parties de uma janela Pesquisar. Como padro, as parties esquerda e direita da janela Pesquisar esto vinculadas de modo que quando voc percorre uma partio, a outra partio rolada. NOMENU Remove da Barra de menus do sistema o ttulo do menu Tabela, impedindo o acesso ao menu Pesquisar. NOOPTIMIZE Desativa a otimizao Rushmore de BROWSE. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore na Ajuda no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. NOREFRESH Impede que a janela Pesquisar seja atualizada. As janelas Pesquisar so atualizadas em intervalos determinados por SET REFRESH. NOREFRESH til com arquivos somente para leitura e melhora o desempenho. NORMAL Abre a janela Pesquisar com as definies padro normais, tais como as opes de cores, tamanho, posio, ttulo e controle (GROW, FLOAT, ZOOM e assim por diante). Se voc omitir NORMAL e a janela de sada atual for implementada pelo usurio com suas prprias definies, a janela Pesquisar tambm assumir as definies especificadas pelo usurio. NOWAIT Continua a execuo do programa logo depois da abertura da janela Pesquisar. O programa no aguarda o fechamento da janela Pesquisar, mas continua a execuo na linha de programa imediatamente aps a linha que contm BROWSE NOWAIT. Se voc omitir NOWAIT quando emitir BROWSE dentro de um programa, uma janela Pesquisar ser aberta e a execuo do programa ser colocada em pausa at que a janela Pesquisar seja fechada. NOWAIT est disponvel apenas dentro de um programa. A incluso de NOWAIT quando BROWSE emitido na janela Comando no tem qualquer efeito. PARTITION nNmeroColuna Divide uma janela Pesquisar em parties esquerda e direita com nNmeroColuna especificando o nmero da coluna da barra de diviso. Por exemplo, se nNmeroColuna for 20, a barra de diviso ser colocada na coluna 20 da janela Pesquisar. LEDIT Especifica que a partio esquerda da janela Pesquisar ser exibida no modo Editar REDIT Especifica que a partio direita da janela Pesquisar ser exibida no modo Editar. O exemplo a seguir abre uma janela Pesquisar com a barra de diviso colocada na coluna 20 e a partio direita aberta no modo Editar. Inclua as duas palavras-chave para abrir as duas parties no modo Editar. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer BROWSE PARTITION 20 REDIT PREFERENCE NomePreferncia Salva os atributos e as opes de uma janela Pesquisar para uso posterior. Ao contrrio de LAST, que restaura a janela Pesquisar como ela foi exibida na sesso anterior, PREFERENCE salva os atributos de uma janela Pesquisar indefinidamente no arquivo de recursos FOXUSER. As preferncias podem ser recuperadas a qualquer momento.
[Pg.: 66]

Na primeira vez que BROWSE emitido com o nome da preferncia especificado, criada uma entrada no arquivo FOXUSER que salva a configurao da janela Pesquisar. A emisso de BROWSE posteriormente com o mesmo nome da preferncia restaura a janela Pesquisar a esse estado de preferncia. Quando a janela Pesquisar fechada, a preferncia atualizada. Os nomes de preferncias podem ter at 10 caracteres, devem iniciar com uma letra ou um caractere sublinhado e podem conter qualquer combinao de letras, nmeros e caracteres sublinhados. Quando uma preferncia estiver como voc deseja, voc poder impedir que ela seja alterada. Feche a janela Pesquisar, emita SET RESOURCE OFF, abra o arquivo FOXUSER como uma tabela e altere o registro que contm a preferncia para somente para leitura, alterando o valor do campo lgico READONLY para verdadeiro (.T.). Para obter maiores informaes sobre o arquivo de recurso FOXUSER, consulte SET RESOURCE. Se voc sair de uma janela Pesquisar pressionando as teclas CTRL+Q, nenhuma alterao feita na janela Pesquisar ser salva no arquivo de recursos. SAVE Mantm a janela Pesquisar e qualquer uma de suas janelas de edio de texto de campo Memo ativas e visveis (abertas). Em seguida, voc poder retornar janela Pesquisar depois de percorrer as outras janelas abertas com o teclado ou o mouse. SAVE s est disponvel dentro de um programa, e no tem qualquer efeito quando includa com BROWSE na janela Comando, pois BROWSE SAVE sempre o padro no modo interativo. TIMEOUT nSegundos Especifica quanto tempo uma janela Pesquisar pode aguardar entrada. expresso numrica nSegundos especifica quantos segundos podem decorrer sem nenhuma entrada antes do fechamento automtico da janela Pesquisar. TIMEOUT s est disponvel dentro de um programa, no apresentando qualquer efeito quando BROWSE emitido na janela Comando. No exemplo a seguir, a janela Pesquisar ser fechada caso no ocorra nenhuma entrada dentro de 10 segundos. DEFINE WINDOW wBrowse FROM 1,1 TO 24,40 ; CLOSE ; GROW ; COLOR SCHEME 10 CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer BROWSE WINDOW wBrowse ; FIELDS phone :H = 'Phone Number:' , ; company :H = 'Company:' ; TIMEOUT 10 RELEASE WINDOW wBrowse TITLE cTextoTtulo Substitui o alias ou o nome de tabela padro exibido na barra de ttulo da janela Pesquisar pelo ttulo especificado com cTextoTtulo. Caso contrrio, o nome ou o alias da tabela que est sendo pesquisada ser exibido na barra de ttulo. Se BROWSE WINDOW for emitido para colocar a janela Pesquisar em outra, definida pelo usurio, o ttulo desta janela substituir o ttulo da outra. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer BROWSE; TITLE 'My Browse Window' ; FIELDS phone :H = 'Phone Number' , ; company :H = 'Company:'
[Pg.: 67]

VALID lExpresso2 Executa a validao em nvel de registro em uma janela Pesquisar. A clusula VALID s ser executada se houver uma alterao no registro e voc tentar mover o cursor para outro registro. A clusula VALID no ser executada se a nica alterao feita for em um campo Memo. Se VALID retornar um valor verdadeiro (.T.), o usurio poder mover o cursor para outro registro. Se VALID retornar um valor falso (.F.), o cursor permanecer no campo atual e o Visual FoxPro ir gerar uma mensagem de erro. Se VALID retornar 0, o cursor permanecer no campo atual e no ser exibida nenhuma mensagem de erro. A clusula VALID no deve ser confundida com a opo de verificao (:V), que permite a validao em nvel de campo. :F Fora a execuo da clusula VALID antes de o usurio mover o cursor para o registro seguinte. Nesse caso, VALID executada mesmo que o registro no seja alterado. ERROR cTextoMensagem Especifica uma mensagem de erro que substitui a mensagem de erro padro do sistema. O Visual FoxPro exibe cTextoMensagem quando VALID retorna falso (.F.). WHEN lExpresso3 Avalia uma condio quando o usurio move o cursor para outro registro. Se lExpresso3 resultar em verdadeiro (.T.), o usurio poder modificar o registro para o qual se moveu. Se lExpresso3 resultar em falso (.F.) ou 0, o registro para o qual o usurio se moveu se tornar somente para leitura e no poder ser modificado A clusula WHEN no executada quando outra janela est ativada. WIDTH nLarguraCampo Limita o nmero de caracteres exibidos para todos os campos em uma janela Pesquisar a nLarguraCampo. O contedo de um campo pode ser rolado horizontalmente, utilizando as teclas de Seta Direita e Seta Esquerda ou a barra de rolagem horizontal. A incluso da clusula WIDTH no altera o tamanho dos campos da tabela; ela altera somente a maneira como os campos so exibidos na janela Pesquisar. Caso uma largura tenha sido especificada para um campo individual com a clusula FIELDS, ela substituir a largura especificada com a clusula WIDTH para esse campo. WINDOW NomeJanela1 Especifica uma janela definida pelo usurio cujas caractersticas so assumidas pela janela Pesquisar. Por exemplo, se a janela definida pelo usurio for criada com a clusula FLOAT, a janela Pesquisar poder ser movida. A janela especificada no precisa estar ativa ou visvel, mas deve estar definida. IN [WINDOW] NomeJanela2 Especifica a janela pai dentro da qual a janela Pesquisar aberta. A janela Pesquisar no assume as caractersticas da janela pai. Uma janela Pesquisar ativada dentro de uma janela pai no pode ser deslocada para fora dela. Caso a janela pai seja movida, a janela Pesquisar a acompanhar. Para acessar a janela Pesquisar, a janela pai dever primeiro ser definida com DEFINE WINDOW e dever estar ativa e visvel. IN SCREEN Coloca explicitamente uma janela Pesquisar na janela principal do Visual FoxPro, quando uma definida pelo usurio est ativa. COLOR SCHEME nNmeroEsquema Especifica o nmero de um esquema de cores utilizado para as cores da janela Pesquisar. A janela Pesquisar assume o esquema de cores estabelecido com o uso da opo Cor do painel de controle do Windows. Comentrios Uma janela Pesquisar permite que voc visualize os registros de uma tabela, edite esses registros e inclua registros adicionais. O Visual FoxPro permite que vrias janelas Pesquisar fiquem abertas ao mesmo tempo.

[Pg.: 68]

Se voc pressionar ESC para sair da janela Pesquisar, as alteraes feitas no ltimo campo modificado sero descartadas. No entanto, se voc mover para outro registro aps modificar um campo, as alteraes feitas nele sero salvas. Para obter informaes sobre como navegar na janela Pesquisar, consulte o captulo 2, Criando tabelas e ndices, no Guia do usurio. A lista de campos pode especificar qualquer combinao de campos ou campos calculados. A sintaxe da lista de campo : FieldName1 [:R] [:nColumnWidth] [:V = lExpression1 [:F] [:E = cMessageText]] [:P = cFormatCodes] [:B = eLowerBound, eUpperBound [:F]] [:H = cHeadingText] [:W = lExpression2] [, FieldName2 [:R]...] Campos calculados A lista de campos pode conter instrues para a criao de campos calculados. Um campo calculado contm dados somente para leitura criados com uma expresso. Esta pode ter qualquer forma, mas deve ser do Visual FoxPro. O formato da instruo que voc utiliza para criar um campo calculado o seguinte: NomeCampoCalculado = eExpresso Este exemplo cria um campo calculado chamado location: CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer BROWSE FIELDS location = ALLTRIM(city) + ', ' + country City e Country so os nomes dos campos da tabela selecionada no momento. A lista de campos da clusula FIELDS inclui opes que permitem a manipulao especial dos campos exibidos em uma janela Pesquisar: :R Especifica que o campo somente para leitura. Os dados contidos no campo podem ser visualizados, mas no editados. No exemplo a seguir, uma janela Pesquisar aberta com os campos Cust_id e Company. O campo Cust_id somente para leitura e no pode ser alterado. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer BROWSE FIELDS Cust_id:R, Company :nLarguraColuna Especifica o tamanho de exibio para um campo em colunas. O valor de nLarguraColuna no afeta o tamanho do campo na tabela; apenas altera a forma de exibio do campo na janela Pesquisar. :V = lExpresso1 [:F] [:E = cTextoMensagem] Permite que voc execute validao de dados em nvel de campo dentro da janela Pesquisar. Se lExpresso1 resultar em verdadeiro (.T.) quando o cursor for movido de um campo, a entrada de dados nele ser considerada correta e o cursor se mover para o campo seguinte.

[Pg.: 69]

If lExpresso1 resultar em falso (.F.), a entrada de dados ser considerada incorreta, o cursor permanecer no campo e uma mensagem ser exibida. Se lExpresso1 resultar em 0, a entrada de dados ser considerada incorreta e o cursor permanecer no campo e nenhuma mensagem de erro ser exibida. A opo de verificao no executada para campos Memo. Como padro, lExpresso1 ser avaliada somente quando o campo for modificado. Para forar a verificao, inclua a opo :F. possvel exibir a sua prpria mensagem de erro, incluindo a opo :E descrita abaixo. :F Determina se a expresso na opo de verificao ser avaliada quando o cursor for movido para fora de um campo ou outra janela for ativada. Se a opo :F no estiver includa, lExpresso1 s ser avaliado se forem feitas alteraes no campo. Se a opo :F estiver includa, lExpresso1 ser avaliada mesmo se o campo no for modificado. :E = cTextoMensagem Se a expresso de validao :V = lExpresso1 resultar em verdadeiro (.T), o cursor deixar o campo normalmente. Se a expresso resultar em falso (.F.), o cursor permanecer no campo e o Visual FoxPro exibir uma mensagem de erro. Se a opo de erro (:E) for includa, cTextoMensagem aparecer no lugar da mensagem de erro do sistema. cTextoMensagem aparecer somente se SET NOTIFY estiver ativado (ON). A campainha soar se SET BELL estiver ativado (ON). Se :V = lExpresso1 resultar em 0, nenhuma mensagem ser exibida e o cursor permanecer no campo que est sendo validado. Esta opo permite que voc exiba as suas prprias mensagens de erro em rotinas de validao. O exemplo a seguir abre a tabela products e exibe os campos Product_id e Prod_name. O campo Product_id um campo numrico que aceitar at cinco nmeros. Para este exemplo, consideramos um campo Product_id maior que 100 como no-vlido. :V especifica os critrios de validao. :F fora a verificao da validao a ser executada se os dados forem alterados ou no. :E substitui a mensagem de erro do sistema do Visual FoxPro por uma definida pelo usurio. No Visual FoxPro, a mensagem de erro exibida na barra de status na parte inferior da janela principal. Pressione ESC para fechar a janela Pesquisar. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE products && Abre a tabela products IF _WINDOWS OR _MAC SET STATUS BAR ON ENDIF USE products BROWSE FIELDS in_stock :V = in_stock < 100 ; :F ; :E = 'O valor do estoque deve ser inferior a 100' :P = cCdigosFormato Se voc incluir uma clusula FIELDS, tambm poder especificar uma opo de figura (:P) para cada campo na lista. Ela permite que voc crie uma lista de cdigos que controle a exibio e a entrada de dados para cada campo em uma janela Pesquisar. cCdigosFormato a lista de cdigos. O exemplo a seguir utiliza a opo de figura para permitir apenas a insero de dados numricos em um formato especfico no campo unit_price: CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE products && Abre a tabela products BROWSE FIELDS unit_price :P = '99,999.99'
[Pg.: 70]

Consulte as propriedades Format e InputMask para obter maiores informaes sobre os cdigos de opo de figura. :B = eLigaoInferior eLigaoSuperior [:F] Especifica um conjunto de limites no qual os dados em um campo devem se encontrar. As expresses de limite eLigaoInferior e eLigaoSuperior devem corresponder ao tipo de dados do campo. Elas no podem ser funes definidas pelo usurio. Se os dados digitados no estiverem no intervalo entre eLigaoInferior e eLigaoSuperior, uma mensagem de erro do sistema ser exibida indicando onde os dados devem se encontrar. Como padro, os dados digitados s sero verificados com os valores de limite se voc alterar o contedo do campo. Para forar esta verificao, inclua a opo de validao forada (:F). O exemplo a seguir assegura que o valor no campo In_stock se encontre entre 1 e 100. Pressione ESC para fechar a janela Pesquisar. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE products && Abre a tabela products BROWSE FIELDS in_stock :B = 1, 100 :F :H = cTextoCabealho Substitui os nomes de campo padro pelos seus prprios cabealhos, que so especificados com cTextoCabealho. Como padro, os nomes de campos so utilizados como cabealhos de coluna na janela Pesquisar. O exemplo a seguir fornece cabealhos definidos pelo usurio para os campos exibidos. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE products && Abre a tabela products BROWSE FIELDS prod_name :H = 'Product Name:', ; unit_price :H = 'Price per Unit:' :W = lExpresso2 Determina se o cursor pode ser movido para um campo. Se lExpresso2 resultar em falso (.F.), ser proibido mover o cursor para o campo. Se lExpresso2 resultar em verdadeiro (.T.), o cursor poder ser movido para o campo. As funes definidas pelo usurio so suportadas em lExpresso2. Se for proibida a movimentao do cursor para todos os campos, o registro atual ser marcado como somente para leitura. Isto s ocorrer quando cada campo contiver uma clusula WHEN que resulte em falsa. Suporte SET SKIP SET SKIP permite que voc estabelea um relacionamento um-para-n entre duas tabelas. Para cada registro da tabela pai, podem existir vrios registros relacionados na tabela filho. Se voc criar um relacionamento um-para-n, poder utilizar BROWSE para visualizar registros das tabelas pai e filho. O registro pai exibido uma vez, junto com o primeiro registro correspondente da tabela filho. Os registros correspondentes subseqentes so exibidos nas linhas aps o registro pai e o primeiro registro filho correspondente. O caractere de preenchimento para informaes pai repetidas depende da fonte atual da janela Pesquisar. Caso o ponteiro do registro esteja posicionado em um registro pai, voc poder mov-lo entre os registros pai na janela Pesquisar, pressionando as teclas CTRL+SETA ABAIXO para mover-se para o prximo registro pai ou CTRL+SETA ACIMA para mover-se para o registro pai anterior. Para obter maiores informaes sobre como criar relacionamentos um-para-n, consulte SET SKIP. O exemplo a seguir utiliza SET SKIP para criar um relacionamento um-para-n entre duas tabelas. Na tabela pai (customer) existe um nico registro. A tabela filho (orders) contm vrios registros para cada registro da tabela pai. Depois de criado o relacionamento, aberta uma janela Pesquisar que exibe registros das tabelas pai e filho.

[Pg.: 71]

A lista de campos da clusula FIELDS contm registros das tabelas pai e filho. Os nomes dos campos so precedidos do respectivo alias de tabela (orders ou customer) e de um ponto. CLEAR CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer ORDER cust_id IN 0 && Tabela pai USE orders ORDER cust_id IN 0 && Tabela filho SELECT customer && Volta rea de trabalho pai SET RELATION TO cust_id INTO orders && Estabelece relacionamento SET SKIP TO orders && Relacionamento um-para-n WAIT WINDOW 'Role para ver as datas de expedio para cada cliente' NOWAIT BROWSE FIELDS customer.cust_id :H='Nmero do Cliente', ; customer.city :H='Cidade do Cliente', orders.shipped_on Funes teis Vrias funes do Visual FoxPro retornam informaes teis sobre uma janela Pesquisar. FunoDescrio VARREAD( ) Retorna o nome do campo onde se encontra o cursor na janela Pesquisar. RECNO( ) Retorna o nmero do registro selecionado na janela Pesquisar ativa. BUILD EXE, comando Cria um arquivo executvel a partir de um projeto. Sintaxe BUILD EXE NomeArquivoEXE FROM NomeProjeto [RECOMPILE] Argumentos NomeArquivoEXE Especifica o nome do arquivo executvel a ser criado. Caso exista um arquivo de aplicativo .APP com o mesmo nome de arquivo raiz do arquivo executvel independente, ele ser excludo. Se existir um arquivo executvel e voc criar um arquivo .APP com o mesmo nome, o arquivo executvel ser excludo. FROM NomeProjeto Especifica o nome do projeto a partir do qual o arquivo executvel criado. RECOMPILE Especifica que o projeto compilado antes da criao do arquivo executvel. Todos os arquivos de formato e de programa; formulrio, etiqueta, relatrio e cdigo de origem de biblioteca de classe visual, bem como procedimentos armazenados nos bancos de dados do projeto, so compilados. Comentrios Para obter informaes adicionais sobre a criao de arquivos executveis, consulte o captulo 25, Construindo um aplicativo para distribuio, no Guia do Desenvolvedor. Um arquivo executvel criado com BUILD EXE exige dois arquivos de suporte: VFP500.DLL e VFP5ENU.DLL (EN denota a verso em ingls). Esses arquivos devem ser colocados no mesmo diretrio que o arquivo executvel ou junto ao caminho do MS-DOS. Se o arquivo executvel contm as definies de classe OLEPUBLIC, BUILD EXE automaticamente registra as definies de classe OLEPUBLIC no registro do sistema. As definies de classe OLEPUBLIC aparecem na caixa de listagem Classes do servidor, na guia Servidores da caixa de dilogo Informaes sobre o projeto. BUILD EXE tambm cria arquivos .VBR (registro) e .TLB (biblioteca de tipos) com o mesmo nome do arquivo executvel. O arquivo .VBR permite registrar as definies de classe no registro do sistema quando o arquivo executvel movido para um computador diferente. O arquivo .TLB deve ser utilizado com pesquisadores de objeto.

[Pg.: 72]

Para obter maiores informaes sobre o registro das definies de classe OLEPUBLIC em um arquivo executvel, consulte Criando servidores OLE personalizados no captulo 16, Adicionando a OLE, no Guia do Desenvolvedor. BUILD PROJECT, comando Cria e constri um arquivo de projeto. Sintaxe BUILD PROJECT NomeArquivoProjeto FROM NomePrograma1 | NomeMenu1 | NomeRelatrio1 | NomeEtiqueta1 | NomeFormulrio1 | NomeBiblioteca1 [, NomePrograma2 | NomeMenu2 | NomeRelatrio2 | NomeEtiqueta2 | NomeFormulrio2 | NomeBiblioteca2 ...] Argumentos NomeArquivoProjeto Especifica o nome da tabela de projeto a ser criada. FROM NomePrograma1 | NomeMenu1 | NomeRelatrio1 | NomeEtiqueta1 | NomeFormulrio1 | NomeBiblioteca1 Especifica os arquivos a serem includos no projeto. possvel especificar um ou mais arquivos de programa, menu, relatrio, etiqueta, formulrio ou biblioteca e o projeto ir controlar esses arquivos, bem como as dependncias, referncias e conexes entre eles. Como padro, o primeiro arquivo de menu ou programa executvel na clusula FROM o arquivo de programa mestre do projeto. Comentrios BUILD PROJECT cria automaticamente uma tabela de projeto com uma extenso de nome de arquivo .PJX ao abrir e processar um ou mais arquivos de programa, menu, relatrio, etiqueta, formulrio ou biblioteca especificados. Voc pode utilizar o arquivo de projeto para criar um dentre dois tipos de programa: um arquivo de aplicativo com uma extenso .APP ou um arquivo executvel com uma extenso .EXE. A tabela de projeto controla todos os arquivos necessrios para a criao de um aplicativo, bem como as dependncias, referncias e conexes entre os arquivos. Uma vez que as partes do projeto forem especificadas, o Visual FoxPro certifica-se de que o aplicativo est baseado nos arquivos fonte mais recentes. Para obter maiores informaes sobre a criao de projetos, consulte o captulo 13, Compilando um aplicativo, no Guia do Desenvolvedor. Quando o Visual FoxPro encontra um arquivo de programa, menu ou formulrio ao criar um arquivo de projeto com BUILD PROJECT, ele procura seu arquivo compilado e compara a marca de data e hora dos dois arquivos. Caso a marca de data e hora do arquivo fonte seja posterior do arquivo compilado, o Visual FoxPro ir recompilar o arquivo fonte. Cada arquivo de projeto contm uma marca de data e hora para que voc possa atualiz-lo quando fizer alteraes nos arquivos do projeto ou quando as dependncias forem alteradas. Isso ajuda a garantir que qualquer aplicativo criado a partir de um arquivo de projeto sempre utilizar os arquivos fonte mais recentes. Para atualizar um arquivo de projeto, emita BUILD PROJECT sem a clusula opcional FROM. Em seguida, o Visual FoxPro atualizar o projeto especificado. Quando voc emite BUILD PROJECT, referncias no resolvidas e outros erros so reportados, mas no impedem que o arquivo de projeto seja criado. Isso permite criar um projeto mesmo que todas as partes necessrias no tenham sido de fato criadas ou no estejam disponveis no momento que o projeto criado. Referncias no resolvidas e outros problemas podero ser corrigidos atualizando-se o arquivo de projeto em uma data posterior ou modificando-se manualmente as informaes armazenadas no arquivo de projeto com MODIFY PROJECT.
[Pg.: 73]

IMPORTANTE : Como gerar um .EXE

. Criar o .PRG (Com um editor) . Executar o comando BUILD PROJECT nome-1 FROM nome-prg . Executar o comando BUILD EXE nome-exe FROM nome-1 nome

CALCULATE, comando Executa operaes financeiras e estatsticas em campos de uma tabela ou em expresses que envolvem campos. Sintaxe CALCULATE eListaExpresses [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [TO ListaVarMem | TO ARRAY NomeMatriz] [NOOPTIMIZE] Argumentos eListaExpresso Especifica as expresses que podem conter qualquer combinao das seguintes funes: AVG(nExpresso) CNT( ) MAX(eExpresso) MIN(eExpresso) NPV(nExpresso1, nExpresso2 [, nExpresso3]) STD(nExpresso) SUM(nExpresso) VAR(nExpresso) Na lista de expresses eListaExpresses, as funes so separadas por vrgulas. Essas funes so especficas do comando CALCULATE e sero descritas em maiores detalhes posteriormente nesta seo. Elas no devem ser confundidas com as funes independentes de mesmo nome. Por exemplo, CALCULATE MIN( ) no igual a MIN( ). Escopo Especifica um intervalo de registros utilizados no clculo. Apenas os registros dentro do intervalo so includos no clculo. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Para obter maiores informaes sobre as clusulas de escopo, consulte o tpico Clusulas de escopo. Os comandos que incluem Escopo operam somente na tabela da rea de trabalho ativa. O escopo padro para CALCULATE ALL, ou seja todos os registros. FOR lExpresso1 Especifica que somente os registros que satisfazem a condio lgica lExpresso1 sero includos no clculo. A incluso de uma clusula FOR resulta na incluso condicional dos registros no clculo, filtrando os registros indesejveis. Rushmore otimizar uma consulta CALCULATE ... FOR se lExpresso1 for uma expresso otimizvel. Para um melhor desempenho, use uma expresso otimizvel na clusula FOR. Para obter maiores informaes
[Pg.: 74]

sobre expresses otimizveis Rushmore, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. WHILE lExpresso2 Especifica uma condio pela qual os registros sero includos no clculo desde que a expresso lgica lExpresso2 resulte em verdadeiro (.T.). TO ListaVarMem Especifica uma ou mais variveis de memria nas quais os resultados do clculo so armazenados. Se voc especificar uma varivel de memria que no existe, o Visual FoxPro ir cri-la automaticamente com o nome especificado. TO ARRAY NomeMatriz Especifica um nome de matriz na qual os resultados do clculo podem ser armazenados. Se voc especificar um nome de matriz que no existe, o Visual FoxPro criar uma matriz automaticamente com o nome especificado. Se a matriz existir, mas no for grande o bastante para conter todos os resultados do clculo, o Visual FoxPro aumentar automaticamente o tamanho da matriz para abrir espao para as informaes. Se uma matriz existente for maior do que o necessrio, os elementos adicionais permanecero inalterados. Os resultados so armazenados nos elementos da matriz na ordem em que so especificados no comando CALCULATE. NOOPTIMIZE Desativa a otimizao Rushmore de CALCULATE. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. AVG(nExpresso) Calcula a mdia aritmtica de nExpresso. Somente os registros que correspondam ao Escopo e/ou condio opcional FOR ou WHILE sero includos no resultado. CNT( ) Retorna o nmero de registros da tabela. Somente os registros que correspondam ao Escopo e/ou condio opcional FOR ou WHILE sero includos no resultado. MAX(eExpresso) Retorna o valor mais alto ou mais recente de eExpresso. Na clusula MAX( ), pode ser especificado qualquer campo do tipo inteiro, numrico, flutuante, duplo, de caractere, de data, de datahora ou de moeda, ou qualquer expresso que utilize campos desses tipos. Somente os registros que correspondam ao Escopo e/ou condio opcional FOR ou WHILE sero includos no resultado. MIN(eExpresso) Retorna o valor mais baixo ou mais antigo de eExpresso. Qualquer campo de caractere, data, datahora, numrico, flutuante, inteiro, duplo ou de moeda, ou qualquer expresso vlida que utilize campos destes tipos pode ser includa em e Expresso. Apenas os registros que correspondam ao Escopo e/ou condio opcional FOR ou WHILE so includos no resultado. NPV(nExpresso1, nExpresso2 [, nExpresso3]) Calcula o valor presente lquido de uma srie de fluxos de caixa futuros descontados a uma taxa de juros peridica e constante. nExpresso1 especifica a taxa de juros expressa como um valor decimal. nExpresso2 especifica um campo, uma expresso de campo ou uma expresso numrica que representa uma srie de fluxos de caixa. Cada fluxo de caixa pode ser positivo ou negativo. Nos casos em que nExpresso2 for um campo, o valor de cada registro do campo ser considerado um fluxo de caixa. nExpresso3 especifica um investimento inicial opcional. Caso o investimento inicial no for includo, ser admitido que ele ocorra no final do primeiro perodo. Esse investimento inicial o primeiro registro do campo, sendo negativo a fim de representar uma sada de caixa. Somente os registros que correspondam ao Escopo e/ou condio opcional FOR ou WHILE sero includos no resultado. STD(nExpresso) Calcula o desvio padro de nExpresso. O desvio padro mede o grau em que os valores dos campos ou das expresses que envolvem campos diferem da mdia de todos os valores. Quanto menor for o desvio padro, menor ser a variao entre os valores e a mdia. Somente os registros que correspondam ao Escopo e/ou condio opcional FOR ou WHILE sero includos no resultado. SUM(nExpresso) Totaliza os valores de nExpresso. Somente os registros que correspondam ao Escopo e/ou condio opcional FOR ou WHILE sero includos no resultado. VAR(nExpresso) Calcula a varincia da mdia de nExpresso. A varincia o desvio padro elevado ao quadrado. Quanto menor for a varincia, menor ser a variao entre os valores e a mdia. Somente os registros que correspondam ao Escopo e/ou condio opcional FOR ou WHILE sero includos no resultado.
[Pg.: 75]

Comentrios Registros que contenham valores nulos no sero includos nas operaes executadas por CALCULATE. CALCULATE, exemplo do comando CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE orders && Abre a tabela Orders SET TALK ON CLEAR CALCULATE AVG(order_amt), MIN(order_amt), MAX(order_amt) CALCULATE STD(order_amt), VAR(order_amt) TO gnStd, gnVar CANCEL, comando Finaliza a execuo do arquivo de programa atual do Visual FoxPro. Sintaxe CANCEL Comentrios O controle retornar janela Comando quando o Visual FoxPro estiver sendo utilizado de forma interativa. Se um aplicativo distribudo em tempo de execuo estiver sendo executado, CANCEL terminar o aplicativo e o controle retorna ao Windows. Se um programa estiver sendo executado no Visual FoxPro na hora da criao, CANCEL terminar o programa e o controle retorna janela Comando. A execuo de CANCEL libera todas as variveis privadas. CANCEL, exemplo do comando O exemplo a seguir simula um loop de execuo do programa. Pelo loop, voc solicitado a informar se deseja continuar. Se pressionar o boto Cancelar, CANCEL pra a execuo do programa. DO WHILE .T. IF MESSAGEBOX("Deseja continuar?",36) <> 6 CANCEL ENDIF ENDDO CAPSLOCK( ), funo Retorna o modo atual da tecla CAPS LOCK ou ativa ou desativa o modo dessa tecla. Sintaxe CAPSLOCK([lExpresso]) Tipos de retorno Lgico Argumentos

[Pg.: 76]

lExpresso Includa para ativar ou desativar a tecla CAPS LOCK. CAPSLOCK(.T.) ativa CAPS LOCK e CAPSLOCK(.F.) desativa CAPS LOCK. Um valor lgico correspondente definio de CAPS LOCK emitido antes de CAPSLOCK(.T.) ou CAPSLOCK(.F.). Comentrios A emisso de CAPSLOCK( ) sem argumentos retornar verdadeiro (.T.), caso CAPS LOCK estiver ativado ou falso (.F.), caso CAPS LOCK estiver desativado. CAPSLOCK( ), exemplo da funo O cdigo a seguir armazena o estado de CAPSLOCK( ) para uma varivel do sistema. O comando = executa a funo CAPSLOCK( ) para ativar CAPS LOCK. Em seguida, o comando = executa a funo CAPSLOCK( ) para definir CAPS LOCK como seu estado anterior. glOldLock = CAPSLOCK( ) && Grava a definio original = CAPSLOCK(.T.) && Ativa CAPS LOCK *** Executar qualquer nmero de instrues *** = CAPSLOCK(glOldLock) && Retorna definio original *** ou, alterne CapsLock para o valor oposto e anterior *** = CAPSLOCK(!CAPSLOCK( )) WAIT WINDOW = CAPSLOCK(!CAPSLOCK( )) WAIT WINDOW = CAPSLOCK(glOldLock) && Retorna definio original CD | CHDIR, comando Altera o diretrio padro do Visual FoxPro para o diretrio especificado. Sintaxe CD cCaminho | CHDIR cCaminho Argumentos cCaminho Especifica um dos itens a seguir: Um designador de unidade de disco. Um designador de unidade de disco com um diretrio. Um diretrio filho. Qualquer opo acima usando a notao abreviada do MS-DOS ( \ ou ..). Quando voc inclui .. para alterar ao diretrio pai, deve acrescentar um espao entre CD ou CHDIR e os dois pontos. Comentrios Utilize CD ou CHDIR para especificar o diretrio padro do Visual FoxPro. O Visual FoxPro procura arquivos no diretrio padro do Visual FoxPro. Caso o Visual FoxPro no localize um arquivo no diretrio padro, ele ir procurar no caminho do Visual FoxPro, caso tenha sido especificado. Utilize SET PATH para especificar o caminho do Visual FoxPro. Se voc criar um arquivo e no especificar onde dever ser colocado, ele ser colocado no diretrio padro do Visual FoxPro.

[Pg.: 77]

CD | CHDIR, exemplo do comando O exemplo a seguir utiliza MKDIR para criar um novo diretrio denominado mytstdir. Em seguida, CHDIR utilizado para alterar o novo diretrio. GETDIR( ) utilizado para exibir a estrutura do diretrio e, em seguida, RMDIR para remover o diretrio mais recente. GETDIR( ) usado para exibir novamente a estrutura do diretrio. SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro MKDIR mytstdir && Cria um novo diretrio CHDIR mytstdir && Altera para o novo diretrio = GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro RMDIR mytstdir && Remove o novo diretrio = GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio CDOW( ), funo Retorna o dia da semana de uma determinada expresso de data ou de data e hora. Sintaxe CDOW(dExpresso | tExpresso) Tipos de retorno Caractere Argumentos dExpresso Especifica a data a partir da qual CDOW( ) retorna o dia. tExpresso Especifica a data e hora a partir da qual CDOW( ) retorna o dia. Comentrios CDOW( ) retorna o nome do dia da semana como uma seqncia no formato de nome prprio. CDOW( ), exemplo da funo STORE {02/16/95} TO gdDate Exibe quinta-feira CLEAR ? CDOW(gdDate) && CDX( ), funo Retorna o nome do arquivo de ndice composto aberto (.CDX) que tem o nmero de posio de ndice especificado. Sintaxe CDX(nNmerondice [, nreaTrabalho | cAliasTabela]) Tipos de retorno Caractere Argumentos
[Pg.: 78]

nNmerondice A descrio a seguir relativa a uma tabela com um ndice composto estrutural e um ou mais ndices compostos: nNmerondice Descrio

1 Retorna o nome do arquivo de ndice estrutural(que sempre o mesmo que o nome da tabela). 2 Retorna o primeiro nome de arquivo de ndice composto especificado na clusula INDEX de USE ou em SET INDEX. 3 Retorna o segundo nome de arquivo de ndice composto, se presente, e assim por diante. Maior que o nmero de arquivos .CDX abertos Retorna a seqncia vazia. A descrio a seguir relativa a uma tabela sem ndice composto estrutural e com um ou mais ndices compostos: nNmerondice Descrio 1 Retorna o primeiro nome de arquivo de ndice composto especificado na clusula INDEX de USE ou em SET INDEX. 2 Retorna o segundo nome de arquivo de ndice composto, se presente, e assim por diante. Maior que o nmero de arquivos .CDX abertos Retorna a seqncia vazia. nreaTrabalho Especifica o nmero da rea de trabalho de uma tabela, cujos nomes de arquivos de ndice composto abertos voc deseja que sejam retornados por CDX( ). cAliasTabela Especifica o alias de uma tabela, cujos nomes de arquivos de ndice composto abertos voc deseja que sejam retornados por CDX( ). Se voc omitir nreaTrabalho e cAliasTabela, sero retornados os nomes dos arquivos de ndice composto correspondentes tabela na rea de trabalho selecionada no momento. Comentrios A funo CDX( ) idntica funo MDX( ). Um ndice .CDX (composto) consiste em um arquivo fsico contendo vrias marcas de ndice. Cada marca uma referncia de ordem de ndice para a tabela associada. H dois tipos de arquivos .CDX: ndice composto padro (.CDX) e .CDX estrutural. Um ndice composto padro (.CDX) pode ter um nome diferente da tabela associada e pode residir em um diretrio diferente da tabela associada. Uma tabela pode ter vrios arquivos de ndice composto. Um ndice composto aberto com a clusula INDEX de USE ou com SET INDEX. Um .CDX estrutural deve ter o mesmo nome da tabela associada e residir no mesmo diretrio. Uma tabela pode ter somente um arquivo de ndice estrutural. Os arquivos .CDX estruturais so abertos e atualizados automaticamente quando a tabela associada aberta com USE. CDX( ) ignora qualquer arquivo .IDX (ndice compatvel com FoxBASE+ e FoxPro 1.0) especificados em USE ou SET INDEX. Utilize TAG( ) para retornar nomes de marcas individuais contidos em um .CDX e NDX( ) para retornar o nome dos arquivos .IDX abertos. Quando SET FULLPATH estiver ON, CDX( ) retornar o caminho e o nome de .CDX. Quando SET FULLPATH estiver OFF, CDX( ) retornar a unidade de disco e o nome de .CDX. CDX( ), exemplo da funo O exemplo a seguir abre a tabela customer no banco de dados testdata. FOR ... ENDFOR utilizado para criar um loop em que o nome de cada ndice estrutural exibido. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer CLEAR
[Pg.: 79]

FOR nCount = 1 TO 254 IF !EMPTY(TAG(nCount)) && Verifica marcas no ndice ? CDX(nCount) && Exibe nomes de ndice estrutural ELSE EXIT && Sai do loop quando no so mais encontradas marcas ENDIF ENDFOR CEILING( ), funo Retorna o prximo inteiro maior ou igual expresso numrica especificada. Sintaxe CEILING(nExpresso) Tipos de retorno Numrico Argumentos nExpresso Especifica o nmero cujo prximo inteiro maior retornado por CEILING( ). Comentrios CEILING arredonda um nmero com frao para o prximo inteiro maior. CEILING( ), exemplo de funo STORE 10.1 TO num1 STORE -10.9 TO num2 ? CEILING(num1) && Exibe 11 ? CEILING(num2) && Exibe -10 ? CEILING(10.0) && Exibe 10 ? CEILING(-10.0) && Exibe -10 CHANGE, comando Exibe campos para edio. Sintaxe CHANGE [FIELDS ListaCampos] [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [FONT cNomeFonte [,nTamanhoFonte]] [STYLE cEstiloFonte] [FREEZE NomeCampo] [KEY eExpresso1 [, eExpresso2]] [LAST | NOINIT] [LPARTITION] [NAME NomeObjeto] [NOAPPEND] [NOCLEAR] [NODELETE] [NOEDIT | NOMODIFY] [NOLINK]
[Pg.: 80]

[NOMENU] [NOOPTIMIZE] [NORMAL] [NOWAIT] [PARTITION nNmeroColuna [LEDIT] [REDIT]] [PREFERENCE NomePreferncia] [REST] [SAVE] [TIMEOUT nSegundos] [TITLE cTextoTtulo] [VALID [:F] lExpresso3 [ERROR cTextoMensagem]] [WHEN lExpresso4] [WIDTH nLarguraCampo] [WINDOW NomeJanela1] [IN [WINDOW] NomeJanela2 | IN SCREEN | IN MACDESKTOP]] [COLOR SCHEME nNmeroEsquema | COLOR ListaParesCores] Argumentos Os argumentos de CHANGE so iguais aos de EDIT. Consulte EDIT para obter uma descrio dos argumentos. Comentrios CHANGE funciona da mesma forma que EDIT. CHR( ), funo Retorna o caractere associado ao cdigo numrico ANSI especificado. Sintaxe CHR(nCdigoANSI) Tipos de retorno Caractere Argumentos nCdigoANSI CHR( ). Especifica um nmero entre 0 e 255, cujo caractere ANSI equivalente retornado por

Utilize ASC( ) para retornar o valor ANSI para um caractere especfico. Comentrios CHR( ) retorna um caractere nico correspondente posio numrica do caractere na tabela de caracteres da pgina de cdigo atual. CHR( ) pode ser utilizado para enviar cdigos de controle de impresso para a impressora. CHR( ), exemplo de funo O exemplo a seguir exibe os nmeros 65 a 75 e utiliza CHR( ) para exibir seus valores de caractere A a K correspondentes. CLEAR FOR nCOUNT = 65 TO 75 ? nCount && Exibe o valor numrico ?? ' ' + CHR(nCount) && Exibe o caractere ENDFOR
[Pg.: 81]

CHRSAW( ), funo Determina se um caractere est presente ou no no buffer de teclado. Sintaxe CHRSAW([nSegundos]) Tipos de retorno Lgico Argumentos nSegundos Especifica o tempo em segundos que CHRSAW( ) espera antes de verificar o buffer do teclado. O buffer do teclado ser verificado imediatamente se nSegundos for omitido. A incluso de nSegundos permite que voc utilize CHRSAW( ) para diversas atividades com intervalo de tempo determinado. Por exemplo, seu programa pode fechar um aplicativo se uma tecla no for pressionada aps um nmero especfico de segundos. Comentrios CHRSAW( ) retornar verdadeiro (.T.) se um caractere estiver presente no buffer do teclado; caso contrrio, retornar falso (.F.). CHRSAW( ) no afeta o contedo do buffer do teclado. CHRSAW( ), exemplo de funo No exemplo a seguir, o sistema exibe uma janela que contm campos de entrada criados com os comandos @... GET e espera 5 segundos para a entrada do teclado. Se uma tecla no for pressionada neste perodo de tempo, CHRSAW( ) resultar em falso (.F.) e o programa ser finalizado. SET TALK OFF DEFINE WINDOW wEnter FROM 7,10 to 13,70 PANEL ACTIVATE WINDOW wEnter @ 1,3 SAY 'Customer: ' GET gcCustomer DEFAULT SPACE(40) @ 3,3 SAY 'Address: ' GET gcAddress DEFAULT SPACE(40) WAIT WINDOW 'Waiting for input' NOWAIT IF NOT CHRSAW(5) DEACTIVATE WINDOW wEnter CLEAR GETS ELSE READ DEACTIVATE WINDOW wEnter ENDIF RELEASE WINDOW wEnter WAIT CLEAR CHRTRAN( ), funo Em uma expresso de caracteres, substitui cada caractere que corresponde a um caractere em uma segunda expresso pelo caractere correspondente em uma terceira expresso de caracteres. Sintaxe CHRTRAN(cExpressoProcurada, cExpressoProcura, cExpressoSubstituio) Tipos de retorno Caractere
[Pg.: 82]

Argumentos cExpressoProcurada Especifica a expresso na qual CHRTRAN( ) substitui caracteres. cExpressoProcura Especifica a expresso que contm os caracteres que CHRTRAN( ) procura em cExpressoProcurada. cExpressoSubstituio Especifica a expresso que contm os caracteres de substituio. Se um caractere em cExpressoProcura for localizado em cExpressoProcurada, o caractere em cExpressoProcurada ser substitudo pelo caractere de cExpressoSubstituio que estiver na mesma posio em cExpressoSubstituio que o respectivo caractere em cExpressoProcura. Se cExpressoSubstituio tiver menos caracteres do que cExpressoProcura, os caracteres adicionais em cExpressoProcura sero excludos de cExpressoProcurada. Se cExpressoSubstituio tiver mais caracteres do que cExpressoProcura, os caracteres adicionais em cExpressoSubstituio sero ignorados. Comentrios CHRTRAN( ) converte a expresso de caracteres cExpressoProcurada utilizando as expresses de converso cExpressoProcura e cExpressoSubstituio e retorna a seqncia de caracteres resultante. CHRTRAN( ), exemplo de funo ? CHRTRAN('ABCDEF', 'ACE', 'XYZ') && Exibe XBYDZF ? CHRTRAN('ABCD', 'ABC', 'YZ') && Exibe YZD ? CHRTRAN('ABCDEF', 'ACE', 'XYZQRST') && Exibe XBYDZF CHRTRANC( ), funo Em uma expresso de caracteres, substitui cada caractere que corresponde a um caractere em uma segunda expresso pelo caractere correspondente em uma terceira expresso de caracteres. Sintaxe CHRTRANC(cProcurado, cProcurarPor, cSubstituio) Tipos de retorno Caractere Argumentos cProcurada Especifica a expresso na qual CHRTRANC( ) substitui caracteres. cProcurarPor Especifica a expresso que contm os caracteres que CHRTRANC( ) procura em cProcurada. cSubstituio Especifica a expresso que contm os caracteres de substituio. Se um caractere em cProcurarPor for localizado em cProcurada, o caractere em cProcurada ser substitudo por um caractere de cSubstituio que estiver na mesma posio em cSubstituio que o respectivo caractere em cProcurarPor. Se cSubstituio tiver menos caracteres do que cProcurarPor, os caracteres adicionais em cProcurarPor sero excludos de cProcurado. Se cSubstituio tiver mais caracteres do que cProcurarPor, os caracteres adicionais em cSubstituio sero ignorados. Comentrios CHRTRANC( ) projetado para facilitar o trabalho com expresses que contenham caracteres de byte duplo. Utilize CHRTRANC( ) para substituir os caracteres de byte nico por caracteres de byte duplo ou vice-versa.
[Pg.: 83]

SE as expresses contiverem apenas caracteres de byte nico, o CHRTRANC( ) ser equivalente a CHRTRAN( ). CLEAR, comandos Libera o item ou itens especificados da memria. Sintaxe CLEAR [ALL | CLASS NomeClasse | CLASSLIB NomeBibliotecaClasses | DEBUG | DLLS | EVENTS | FIELDS | GETS | MACROS | MEMORY | MENUS | POPUPS | PROGRAM | PROMPT | READ [ALL] | RESOURCES [NomeArquivo] | TYPEAHEAD | WINDOWS] Argumentos ALL Libera da memria todas as matrizes e variveis de memria e todas as definies do usurio para barras de menus, menus e janelas. CLOSE ALL tambm fecha qualquer tabela, inclusive todos os arquivos de ndice, de formatao e memo associados, e seleciona a rea de trabalho 1. CLEAR ALL tambm remove da memria todas as funes de bibliotecas compartilhadas externas registradas por meio de DECLARE DLL. CLEAR ALL no libera variveis de memria do sistema e no limpa o buffer do programa compilado. Para limpar o buffer, utilize CLEAR PROGRAM. Se voc emitir CLEAR ALL dentro de um evento ou mtodo de um controle ou objeto ativo, o Visual FoxPro exibir uma mensagem de erro. Uma varivel de memria do tipo objeto no pode ser liberada da memria enquanto o controle ou objeto associado a ela estiver ativo. CLASS NomeClasse Limpa uma definio de classe da memria.Quando uma instncia de classe criada, o Visual FoxPro guarda a definio de classe na memria, mesmo depois que a instncia liberada. Utilize CLEAR CLASS para limpar uma definio de classe da memria depois que a instncia for liberada. CLASSLIB NomeBibliotecaClasses Limpa da memria todas as definies de classes contidas em uma biblioteca de classes visuais. Se existirem instncias de classes na biblioteca de classes, as definies de classes no so limpas da memria. Entretanto, todas as definies de classes que no tenham instncias so limpas da memria. DEBUG Limpa todos os pontos de interrupo no Depurador e restaura as janelas de depurao (Chamar Pilha, Rastrear, Observar etc.) s suas posies padro. Se Clear Debug for emitido quando o Depurador estiver fechado, o Depurador ser aberto com as janelas de depurao em suas posies padro. Trabalha no modo de moldura do depurador ou fox. DLLS Limpa da memria todas as bibliotecas compartilhadas externas com DECLARE - DLL. Consulte DECLARE -DLL para obter maiores informaes sobre como registrar as funes de bibliotecas compartilhadas externas. EVENTS Interrompe o processamento de eventos iniciado com READ EVENTS. Quando CLEAR EVENTS for executado, a execuo do programa continuar na linha do programa imediatamente aps READ EVENTS. FIELDS Libera uma lista criada com SET FIELDS e executa SET FIELDS OFF. A diferena entre CLEAR FIELDS e SET FIELDS TO que o primeiro libera todas as listas de campos de todas as reas de trabalho, e no apenas a lista de campos da rea de trabalho atual. Alm disso, SET FIELDS TO no emite um comando SET FIELDS OFF de forma implcita.

[Pg.: 84]

GETS Libera todos os controles @ ... GET pendentes. O comando CLEAR tambm libera todos os controles @ ... GET pendentes. MACROS Libera da memria todas as macros de teclado, inclusive todas as atribuies de teclas definidas com SET FUNCTION. As macros podem ser salvas em um arquivo de macros ou em um campo Memo atravs de SAVE MACROS e restauradas posteriormente com RESTORE MACROS. As macros padro tambm podem ser restauradas com RESTORE MACROS. MEMORY Libera da memria todas as matrizes e variveis de memria pblicas e privadas. As variveis de memria do sistema no so liberadas. MENUS Libera todas as definies de barras de menus da memria. POPUPS Libera da memria todas as definies de menus criadas com DEFINE POPUP. PROGRAM Limpa o buffer de programa compilado. O Visual FoxPro mantm um buffer dos ltimos programas executados. Em raras ocasies, o Visual FoxPro poder no reconhecer as alteraes feitas nos arquivos de programa no disco. CLEAR PROGRAM fora o Visual FoxPro a ler os programas no disco, em vez de ler no buffer de programa. O motivo mais comum para o Visual FoxPro no reconhecer as alteraes feitas nos arquivos de programa a utilizao de um editor externo ou residente (TSR) para fazer essas modificaes. Com exceo desta situao, no ser necessrio utilizar CLEAR PROGRAM. PROMPT Libera itens de menus criados com @ ... PROMPT. READ [ALL] Includo para manter a compatibilidade com verses anteriores. Utilize CLEAR EVENTS como substituto. RESOURCES [NomeArquivo] Especifica o nome de um arquivo de cone, cursor, fonte, figura ou bitmap no cache a ser limpo da memria. Se nenhum nome de arquivo for especificado, todos os arquivos de cone, cursor, fonte, figura e bitmap sero removidos da memria. Quando o Visual FoxPro exibe um recurso de fonte, cone, cursor, figura ou bitmap, o recurso fica na memria cache para otimizar o desempenho. Se um recurso com o mesmo nome for utilizado (por exemplo, um bitmap diferente com o mesmo nome de um j existente no cache de memria), o Visual FoxPro no recarregar o recurso. Limpar um arquivo de recurso til principalmente para remover uma imagem grfica da memria e fazer com que o Visual FoxPro recarregue uma imagem com o mesmo nome a partir do disco. Por exemplo, um relatrio pode exibir imagens grficas de um banco de dados, todas denominadas TEMP; no entanto, como todas possuem o mesmo nome, o Visual FoxPro no recarregar cada nova imagem grfica, a menos que uma j existente tenha sido limpa da memria utilizando o comando CLEAR RESOURCES. TYPEAHEAD Limpa o buffer de teclado. CLEAR TYPEAHEAD til quando voc deseja evitar que um campo receba entrada ou que um aviso seja respondido antes que o campo ou aviso seja exibido. WINDOWS Libera da memria todas as caractersticas de janelas definidas pelo usurio e limpa as janelas da janela principal do Visual FoxPro ou da janela ativa definida pelo usurio. Utilize SAVE WINDOW para salvar as definies de janelas em um arquivo ou campo Memo para uso posterior. CLEAR WINDOWS libera da memria qualquer referncia de variveis de memria aos formulrios. Por exemplo, os comandos a seguir criam uma referncia de varivel de memria para um formulrio e, em seguida, exibem informaes sobre a varivel: goMyForm = CREATEOBJECT('FORM') DISPLAY MEMORY LIKE goMyForm && Exibe GOMYFORM O FORM Ao se emitir CLEAR WINDOWS, a referncia da varivel de memria liberada e a varivel de memria passa a conter o valor nulo: CLEAR WINDOWS DISPLAY MEMORY LIKE goMyForm && Exibe GOMYFORM O .NULL.
[Pg.: 85]

Comentrios CLEAR apaga a janela principal do Visual FoxPro ou a janela atual definida pelo usurio e libera todos os controles @ ... GET pendentes da memria. Voc pode incluir CLEAR em arquivos de formatao. CLOSE, comandos Fecha diversos tipos de arquivos.

Sintaxe CLOSE [ALL | ALTERNATE | DATABASES [ALL] | DEBUGGER | FORMAT | INDEXES | PROCEDURE | TABLES [ALL]] Argumentos ALL Fecha todos os bancos de dados, tabelas e ndices abertos em todas as reas de trabalho e seleciona a rea de trabalho 1. CLOSE ALL tambm fecha todos os arquivos abertos com as funes de arquivo de nvel inferior FCREATE( ) e FOPEN( ). CLOSE ALL no fecha um arquivo aberto com SET PRINT. CLOSE ALL tambm fecha os itens: Criador de formulrios Gerenciador de projetos Criador de etiquetas Criador de relatrios Criador de consultas

CLOSE ALL no fecha os itens: janela Comando janela Depurar Ajuda janela Rastrear

CLOSE ALTERNATE Fecha um arquivo alternativo aberto com SET ALTERNATE. CLOSE DATABASES [ALL] Fecha o banco de dados atual e suas tabelas. Se no houver um banco de dados aberto no momento, todas as tabelas livres, ndices e arquivos de formatao abertos em todas as reas de trabalho so fechados e a rea de trabalho 1 selecionada. ALL Especifica que sero fechados os itens a seguir: Todos os bancos de dados abertos e suas respectivas tabelas. Todas as tabelas livres abertas. Todos os ndices e arquivos de formatao em todas as reas de trabalho. A rea de trabalho 1 selecionada. CLOSE DEBUGGER Fecha o depurador do Visual FoxPro. CLOSE FORMAT Fecha um arquivo de formatao da rea de trabalho atual aberto com SET FORMAT.

[Pg.: 86]

CLOSE INDEXES Fecha todos os arquivos de ndice abertos (arquivos .IDX de entrada simples e arquivos .CDX compostos independentes) na rea de trabalho atual. Um ndice composto estrutural (arquivos .CDX abertos automaticamente com a tabela) no fechado. CLOSE PROCEDURE Fecha um arquivo de procedimentos aberto com SET PROCEDURE. CLOSE TABLES [ALL] Fecha todas as tabelas de todos os bancos de dados abertos, mas deixa os bancos de dados abertos. Caso no haja um banco de dados aberto, CLOSE TABLES fechar todas as tabelas livres de todas as reas de trabalho. CLOSE TABLES no dever ser emitido quando uma transao estiver em andamento, pois o Visual FoxPro ir gerar uma mensagem de erro. ALL Especifica que todas as tabelas, inclusive as livres, sero fechadas em todas as reas de trabalho. Todos os bancos de dados permanecero abertos. CMONTH( ), funo Retorna o nome do ms de uma determinada expresso de data ou Data Hora. Sintaxe CMONTH(dExpresso | tExpresso) Tipos de retorno Caractere Argumentos dExpresso Especifica a expresso de data a partir da qual CMONTH( ) retorna o nome do ms. tExpresso Especifica a expresso DataHora a partir da qual CMONTH( ) retorna o nome do ms. Comentrios CMONTH( ) retorna o nome do ms como uma seqncia no formato de substantivo prprio. CMONTH( ), exemplo de funo ? CMONTH(DATE( )) STORE {02/16/95} TO gdDueDate ? 'Seu pagamento venceu em ', CMONTH(gdDueDate) STORE gdDueDate+60 TO gdFinalDate ? 'Voc deve pagar at ', CMONTH(gdFinalDate) ? | ??, comando Avalia expresses e exibe os resultados. Sintaxe ? | ?? Expresso1 [PICTURE cCdigosFormato] | [FUNCTION cCdigosFormato] | [VnLargura] [AT nColuna] [FONT cNomeFonte [, nTamanhoFonte] [STYLE cEstiloFonte | Expresso2]] [, Expresso3] ... Argumentos

[Pg.: 87]

? Expresso1 Avalia a expresso especificada por Expresso1 e envia um retorno de carro e alimentao de linha antes dos resultados da expresso. Os resultados so exibidos na prxima linha da janela principal do Visual FoxPro ou da janela ativa definida pelo usurio e so impressos na margem esquerda de uma pgina, a menos que um cdigo de funo cCdigosFormato ou a varivel do sistema _ALIGNMENT especifique o contrrio. Se voc omitir as expresses, uma linha em branco ser exibida ou impressa. Um espao ser colocado entre os resultados dessas expresses quando vrias expresses forem includas. ?? Expresso1 Avalia a expresso especificada por Expresso1 e exibe os resultados da expresso na linha atual na posio atual da janela principal do Visual FoxPro, de uma janela ativa definida pelo usurio ou da impressora. Um retorno de carro e alimentao de linha no so enviados antes dos resultados. PICTURE cCdigosFormato Especifica um formato de figura no qual exibido o resultado de Expresso1. cCdigosFormato pode consistir em cdigos de funo, cdigos de figura ou em uma combinao dos dois. possvel utilizar os mesmos cdigos disponveis nas propriedades Format e InputMask. Os cdigos de funo afetam o formato geral do resultado; os cdigos de figura agem sobre caracteres individuais no resultado. Se os cdigos de funo forem utilizados em cCdigosFormato, eles devero aparecer antes dos cdigos de figura e ser precedidos por @. Vrios cdigos de funo sem espaos incorporados podem aparecer logo depois de @. O ltimo cdigo de funo deve ser seguido de um ou mais espaos. O(s) espao(s) indicam o fim dos cdigos de funo e o incio dos cdigos de figura. FUNCTION cCdigosFormato Especifica um cdigo de funo a ser includo na sada ? e ??. Se a clusula de funo estiver includa, no coloque @ antes dos cdigos de funo. Os cdigos de funo devem ser precedidos por @ quando includos em PICTURE. VnLargura Especifica um cdigo de funo especial que permite que os resultados de uma expresso de caracteres se estendam verticalmente em um nmero limitado de colunas. nLargura especifica o nmero de colunas na sada. ? 'Este um exemplo de como o cdigo de funo V funciona.' ; FUNCTION 'V10' AT nColuna Especifica o nmero da coluna onde a sada exibida. Essa opo permite que voc alinhe a sada em colunas para criar uma tabela. A expresso numrica nColuna pode ser uma funo definida pelo usurio que retorne um valor numrico. FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte para a sada ? | ??. cNomeFonte especifica o nome da fonte e nTamanhoFonte especifica o tamanho em pontos. Por exemplo, o comando a seguir exibe a data do sistema na fonte Courier de 16 pontos: ? DATE( ) FONT 'Courier',16 Se voc incluir a clusula FONT, mas omitir o tamanho em pontos nTamanhoFonte, ser utilizada uma fonte de 10 pontos. Caso omita clusula FONT e a sada ? | ?? for colocada na janela principal do Visual FoxPro, a fonte da janela principal do FoxPro ser utilizada na sada. Caso omita a clusula FONT e a sada ? | ?? for colocada em uma janela definida pelo usurio, a fonte da janela definida pelo usurio ser utilizada na sada. Se a fonte especificada no estiver disponvel, ela ser substituda por outra fonte com caractersticas semelhantes. STYLE cEstiloFonte Especifica um estilo de fonte para a sada ? | ??. Se voc omitir a clusula STYLE, o estilo de fonte Normal ser utilizado. Se o estilo de fonte especificado no estiver disponvel, ele ser substitudo por um estilo de fonte com caractersticas semelhantes. Observao necessrio incluir a clusula FONT ao especificar um estilo de fonte com a clusula STYLE. Os estilos de fonte que podem ser especificados com cEstiloFonte so:
[Pg.: 88]

Caractere

Estilo de fonte

B Negrito I Itlico N Normal O Contorno Q Opaco S Sombreado Riscado T Transparente U Sublinhado Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. Por exemplo, o comando a seguir exibe a data do sistema em Courier Negrito Itlico: ? DATE( ) FONT 'COURIER' STYLE 'BI' Comentrios ? e ?? avaliam expresses e enviam os resultados para a janela principal do Visual FoxPro, para uma janela ativa definida pelo usurio ou para a impressora. Caso SET PRINTER estiver ativado (ON), os resultados da expresso sero direcionados para a impressora e para a janela principal do Visual FoxPro ou para uma janela ativa definida pelo usurio. Se SET PRINTER estiver ativado (ON) e SET CONSOLE estiver desativado (OFF), os resultados sero direcionados somente para a impressora. ? | ??, exemplo do comando ? 15 * (10+10) ? 'Bem-vindo ao ' PICTURE '@!' ?? 'Visual FoxPro' ???, comando Envia a sada diretamente para a impressora. Sintaxe ??? cExpresso Argumentos cExpresso Especifica os caracteres que so enviados para a impressora. Comentrios Um grupo de trs pontos de interrogao desconsidera o driver da impressora e envia o contedo de cExpresso diretamente para a impressora. cExpresso deve conter cdigos de impressora vlidos. Os cdigos de controle de impressora permitem reinicializar a impressora, alterar o tamanho e estilo de tipo grfico, bem como ativar ou desativar a impresso em negrito. Esses cdigos podem consistir em qualquer combinao de caracteres que podem ser ou no impressos e so especficos da impressora que est sendo utilizada. Existem vrias maneiras diferentes de direcionar cdigos de controle impressora: Utilizar combinaes de CHR( ) e seqncias entre aspas concatenadas com + para enviar caracteres ASCII diretamente impressora. Utilizar aspas para enviar uma seqncia contendo cdigos de impressora ou caracteres ASCII.
[Pg.: 89]

Os cdigos podem ser enviados para a impressora antes do incio e depois do trmino da impresso com as variveis do sistema _PSCODE e _PECODE. Para obter maiores informaes, consulte _PSCODE e _PECODE. Os cdigos de controle de impressora variam de impressora a impressora. A melhor fonte de informaes sobre os cdigos de controle de impressora o manual que acompanha a sua impressora. CONTINUE, comando D continuidade ao LOCATE anterior. Sintaxe CONTINUE Comentrios CONTINUE utilizado depois que LOCATE localiza um registro, a fim de continuar a operao de LOCATE. CONTINUE move o ponteiro do registro at o prximo registro para o qual a expresso lgica especificada no LOCATE anterior resultar verdadeiro (.T.). CONTINUE pode ser utilizado vrias vezes at o fim do arquivo ou do escopo especificado com LOCATE. Se CONTINUE localizar um registro, RECNO( ) retornar o nmero do registro, FOUND( ) retornar um valor verdadeiro (.T.) e EOF( ) retornar um valor falso (.F.). Se CONTINUE no localizar um registro, RECNO( ) retornar o nmero de registros da tabela mais um, FOUND( ) retornar falso (.F.) e EOF( ) retornar verdadeiro (.T.). CONTINUE, exemplo do comando No exemplo a seguir, todos os clientes da Frana so contados e o total ser exibido. Todos os registros so encontrados com a utilizao de um comando LOCATE seguido de um comando CONTINUE dentro de um loop. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer SET TALK OFF STORE 0 TO gnCount LOCATE FOR ALLTRIM(UPPER(country)) = 'FRANCE' DO WHILE FOUND( ) gnCount = gnCount + 1 CONTINUE ENDDO ? 'Total de clientes na Frana: '+ LTRIM(STR(gnCount)) COPY FILE, comando Duplica qualquer tipo de arquivo. Sintaxe COPY FILE NomeArquivo1 TO NomeArquivo2 Comentrios

[Pg.: 90]

COPY FILE cria uma duplicata do arquivo cujo nome especificado em NomeArquivo1. possvel utilizar COPY FILE para copiar qualquer tipo de arquivo. O arquivo a ser copiado no pode estar aberto. Voc deve incluir as extenses para o nome de arquivo de origem NomeArquivo1 e o nome de arquivo de destino NomeArquivo2. NomeArquivo1 e NomeArquivo2 pode conter caracteres curinga como * e ?. Por exemplo, para criar cpias de backup de todos os arquivos de programa com a extenso .PRG no diretrio ou pasta atual, emita COPY FILE *.PRG TO *.BAK. Se voc utilizar COPY FILE para criar uma cpia de backup de uma tabela, que possui um campo Memo, um ndice estrutural ou ambos, certifique-se de copiar tambm os arquivos .FPT e .CDX. COPY STRUCTURE, comando Cria uma nova tabela livre e vazia com a mesma estrutura da tabela selecionada no momento. Sintaxe COPY STRUCTURE TO NomeArquivo [FIELDS ListaCampos] [[WITH] CDX | [WITH] PRODUCTION] Argumentos NomeArquivo Especifica o nome da nova tabela vazia a ser criada. No Visual FoxPro, o suporte ao valor nulo e pgina de cdigo para a nova tabela livre so idnticos tabela selecionada atualmente. FIELDS ListaCampos Especifica que apenas os campos, cujos nomes esto indicados em ListaCampos, sero copiados para a nova tabela. Se voc omitir FIELDS ListaCampos, todos os campos sero copiados para a nova tabela. [WITH] CDX | [WITH] PRODUCTION Cria, para a nova tabela, um arquivo de ndice estrutural idntico ao da tabela existente. As marcas e as expresses de ndice do arquivo de ndice estrutural original so copiadas para o novo arquivo de ndice estrutural. As clusulas CDX e PRODUCTION so idnticas. No Visual FoxPro, um ndice primrio para a tabela selecionada no momento convertido em um ndice candidato para a nova tabela vazia. COPY STRUCTURE, exemplo do comando No exemplo a seguir, a tabela customer aberta, sua estrutura copiada para uma tabela denominada backup e a tabela backup aberta. APPEND FROM, em seguida, inclui registros na tabela backup a partir da tabela customer e uma janela Pesquisar aberta para a tabela backup. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer COPY STRUCTURE TO backup USE backup APPEND FROM customer FOR country = 'UK' BROWSE FIELDS contact, country USE DELETE FILE backup.dbf COPY STRUCTURE EXTENDED, comando

[Pg.: 91]

Cria uma nova tabela com campos contendo a estrutura da tabela selecionada no momento. Sintaxe COPY STRUCTURE EXTENDED TO NomeArquivo [DATABASE NomeBancoDeDados [NAME NomeTabelaExtenso]] [FIELDS ListaCampos] Argumentos NomeArquivo Especifica a nova tabela a ser criada. DATABASE NomeBancoDeDados Especifica um banco de dados ao qual a nova tabela ser adicionada. NAME NomeTabelaExtenso Especifica um nome extenso para a nova tabela. Os nomes extensos podem conter at 128 caracteres e podem ser utilizados no lugar de nomes de arquivo curtos no banco de dados. FIELDS ListaCampos Especifica que apenas os campos indicados em ListaCampos sero includos em um registro na nova tabela. Se voc omitir FIELDS ListaCampos, todos os campos tero um registro na nova tabela. Comentrios As informaes sobre cada campo da tabela selecionada no momento so copiadas para um registro na nova tabela. A estrutura da nova tabela tem um formato fixo e consiste em dezesseis campos. A tabela abaixo lista os nomes dos dezesseis campos e seu respectivo contedo. CampoTipo do campo Contedo

FIELD_NAME Caractere Nomes de campos da tabela selecionada (128 caracteres de largura) FIELD_TYPECaractere Tipos de campos: C = Caractere Y = Moeda N = Numrico F = Flutuante I = Inteiro B = Duplo D = Data T = DataHora L = Lgico M = Memo G = Geral FIELD_LEN Numrico Largura dos campos FIELD_DEC Numrico Nmero de casas decimais em campos numricos FIELD_NULL Lgico Suporte ao valor nulo do campo FIELD_NOCP Lgico No permitida a traduo da pgina de cdigo (somente campos do tipo caractere e memo) FIELD_DEFA Memo Valores padro do campo FIELD_RULE Memo Regras de validao do campo FIELD_ERR Memo Texto de validao do campo TABLE_RULE Memo Regra de validao da tabela TABLE_ERR Memo Texto de validao da tabela TABLE_NAME Caractere Nome de tabela extenso (somente o primeiro registro) INS_TRIG Memo Inserir expresso de disparo (somente o primeiro registro) UPD_TRIG Memo Atualizar expresso de disparo (somente o primeiro registro) DEL_TRIG Memo Excluir expresso de disparo (somente o primeiro registro) TABLE_CMTMemo Comentrio da tabela (somente o primeiro registro) Voc pode modificar a tabela recm-criada e utilizar CREATE FROM para criar uma nova tabela com uma estrutura diferente. COPY STRUCTURE e CREATE FROM permitem a alterao da estrutura de uma tabela atravs de programao.

[Pg.: 92]

A largura do campo FIELD_NAME de 10 caracteres em verses anteriores do Visual FoxPro, FoxPro para Windows e FoxPro para MS-DOS. Para utilizar CREATE FROM com uma tabela criada por COPY STRUCTURE EXTENDED no Visual FoxPro 4.0, deve-se alterar a largura do campo FIELD_NAME para 10 caracteres. COPY STRUCTURE EXTENDED, exemplo do comando O exemplo a seguir exibe a estrutura da tabela orders, copia a estrutura estendida para uma tabela temp, pesquisa temp, cria uma tabela backup a partir de temp e exibe a estrutura de backup. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE orders && Abre a tabela Orders CLEAR DISPLAY STRUCTURE WAIT WINDOW 'Estrutura da tabela orders' NOWAIT COPY STRUCTURE EXTENDED TO temp USE temp WAIT WINDOW 'A tabela temp - 1 linha por campo em orders' NOWAIT BROWSE CREATE backup FROM temp USE backup DISPLAY STRUCTURE WAIT WINDOW 'Backup.dbf possui a mesma estrutura que orders' NOWAIT USE DELETE FILE temp.dbf DELETE FILE backup.dbf COPY TAG, comando Cria um arquivo de ndice de entrada nica .IDX a partir de uma marca existente em um arquivo de ndice composto. Sintaxe COPY TAG NomeMarca [OF NomeArquivoCDX] TO NomeArquivondice Argumentos NomeMarca Especifica a marca utilizada para criar o arquivo de ndice de entrada nica .IDX. OF NomeArquivoCDX Especifica o arquivo de ndice composto que contm a marca. Inclua esta clusula se houver marcas com nomes iguais nos arquivos de ndice composto abertos. Se OF NomeArquivoCDX for omitido, o Visual FoxPro ir procurar a marca primeiro no arquivo de ndice estrutural. Se a marca no for encontrada nesse arquivo, o Visual FoxPro pesquisar todos os arquivos de ndice composto no-estrutural que estiverem abertos. TO NomeArquivondice Especifica o nome do arquivo de ndice de entrada nica .IDX a ser criado. Comentrios Utilize COPY TAG para criar um novo arquivo de ndice de entrada nica .IDX a partir de uma marca em um arquivo de ndice composto .CDX. O arquivo de ndice composto a partir do qual criado o arquivo de ndice de entrada nica .IDX deve estar aberto. Os arquivos de ndice composto estrutural so abertos automaticamente quando voc abre uma tabela.
[Pg.: 93]

Os ndices compostos no-estruturais devem ser explicitamente abertos com USE ... INDEX ou SET INDEX. Para obter maiores informaes sobre arquivos de ndice composto, consulte INDEX. Utilize COPY INDEX para criar marcas em arquivos de ndice composto a partir de arquivos de ndice de entrada nica .IDX. COPY TO ARRAY, comando Copia dados da tabela selecionada no momento para uma matriz. Sintaxe COPY TO ARRAY NomeMatriz [FIELDS ListaCampos] [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [NOOPTIMIZE] Argumentos NomeMatriz Especifica a matriz para a qual os dados da tabela so copiados. FIELDS ListaCampos Especifica que apenas os campos especificados em ListaCampos sero copiados para a matriz. Se voc omitir FIELDS ListaCampos, todos os campos sero copiados para a matriz, caso ela possua o nmero suficiente de colunas. Escopo Especifica um intervalo de registros a serem copiados para a matriz. Apenas os registros dentro do intervalo so copiados. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Para obter maiores informaes sobre clusulas de escopo, consulte o tpico Clusulas de Escopo. O escopo padro para COPY TO ARRAY ALL (todos os registros). FOR lExpresso1 Especifica que apenas os registros que satisfazem a condio lgica lExpresso1 sero copiados para a matriz. Ao incluir FOR, voc poder copiar os registros condicionalmente para a matriz, filtrando os registros indesejveis. Uma otimizao Rushmore ocorrer em uma consulta COPY TO ARRAY que inclui FOR lExpresso1 se lExpresso1 for uma expresso otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR. Para obter informaes sobre expresses otimizveis Rushmore, consulte SET OPTIMIZE e Compreendendo a Tecnologia Rushmore no captulo 15, Otimizando Aplicativos, no Guia do Desenvolvedor. WHILE lExpresso2 Especifica uma condio pela qual os registros sero copiados para a matriz desde que a expresso lgica lExpresso2 resulte em verdadeiro (.T.). NOOPTIMIZE Desativa a otimizao Rushmore de COPY TO ARRAY. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a Tecnologia Rushmore no captulo 15, Otimizando Aplicativos, no Guia do Desenvolvedor. Comentrios COPY TO ARRAY e SCATTER so semelhantes. COPY TO ARRAY copia vrios registros para uma matriz, enquanto SCATTER copia apenas um registro para uma matriz ou um conjunto de variveis de memria. COPY TO ARRAY e SCATTER criaro uma nova matriz caso no exista uma matriz com o nome especificado.
[Pg.: 94]

Para copiar um s registro para uma matriz, voc pode especificar uma matriz unidimensional. A matriz unidimensional especificada deve ter o mesmo nmero de elementos que os campos da tabela, sem contar os campos Memo. Os campos Memo so ignorados em COPY TO ARRAY. Se voc especificar uma matriz unidimensional, o primeiro campo do registro ser armazenado no primeiro elemento da matriz, o segundo campo ser armazenado no segundo elemento da matriz e assim por diante. Se uma matriz unidimensional possuir mais elementos do que a tabela possui campos, os elementos restantes permanecero inalterados. Caso o nmero de elementos da matriz seja menor do que o nmero de campos da tabela, os campos restantes sero ignorados. Para copiar vrios registros ou uma tabela inteira para uma matriz, especifique uma matriz bidimensional. O nmero de linhas na matriz corresponde ao nmero de registros que a matriz pode conter, e o nmero de colunas corresponde ao nmero de campos que ela pode conter. Cada registro armazenado em uma linha da matriz, e cada campo do registro armazenado em uma coluna da matriz. Para cada registro, o primeiro campo armazenado na primeira coluna da matriz, o segundo campo armazenado na segunda coluna e assim por diante. Se o nmero de colunas da matriz for maior do que o nmero de campos da tabela, as colunas restantes no sero alteradas. Se o nmero de colunas da matriz for menor do que o nmero de campos da tabela, os campos restantes no sero armazenados na matriz. Cada linha sucessiva na matriz preenchida com o contedo do registro seguinte na tabela. Se o nmero de linhas da matriz for maior do que o nmero de registros da tabela, as linhas restantes no sero alteradas. Se o nmero de linhas da matriz for menor do que o nmero de registros da tabela, os registros restantes no sero armazenados na matriz. Os dados podem ser copiados das matrizes para os novos registros de tabela com APPEND FROM ARRAY. Eles tambm podem ser copiados de uma matriz ou de um conjunto de variveis de memria para os registros de uma tabela, atravs de GATHER. COPY TO ARRAY, exemplo do comando No exemplo a seguir, a tabela customer aberta. Uma matriz bidimensional ento criada e os trs primeiros registros de customer so copiados para a matriz. DISPLAY MEMORY mostra os dados armazenados na matriz. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer DIMENSION gaTemp(3,10) COPY NEXT 3 TO ARRAY gaTemp DISPLAY MEMORY LIKE gaTemp COPY TO, comando Cria um novo arquivo a partir dos contedos da tabela selecionada no momento. Sintaxe COPY TO NomeArquivo [DATABASE NomeBancoDeDados [NAME NomeTabelaExtenso]] [FIELDS ListaCampos | FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura] [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [[WITH] CDX] | [[WITH] PRODUCTION] [NOOPTIMIZE] [[TYPE] [FOXPLUS | FOX2X | DIF | MOD
[Pg.: 95]

| SDF | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5 | DELIMITED [WITH Delimitador | WITH BLANK | WITH TAB | WITH CHARACTER Delimitador]]] [AS nPginaCdigo] Argumentos NomeArquivo Especifica o nome do novo arquivo criado por COPY TO. Se voc no incluir uma extenso com o nome do arquivo, ser atribuda a extenso padro do tipo de arquivo especificado. Se voc no especificar um tipo de arquivo, COPY TO criar uma nova tabela do Visual FoxPro e atribuir a extenso padro .DBF ao nome de arquivo da tabela. DATABASE NomeBancoDeDados Especifica um banco de dados ao qual a nova tabela ser adicionada. NAME NomeTabelaExtenso Especifica um nome extenso para a nova tabela. Os nomes extensos podem conter at 128 caracteres e podem ser utilizados no lugar de nomes de arquivo curtos no banco de dados. FIELDS ListaCampos Especifica os campos que sero copiados para o novo arquivo. Se voc omitir FIELDS ListaCampos, todos os campos sero copiados para o arquivo. Se o arquivo que voc est criando no for uma tabela, os campos Memo no sero copiados para o novo arquivo, mesmo que nomes de campos Memo tenham sido includos na lista de campos. FIELDS LIKE Estrutura Especifica que os campos da tabela original, correspondentes estrutura do arquivo estrutura, so includos no novo arquivo criado por COPY TO. FIELDS EXCEPT Estrutura Especifica que todos os campos, exceto os que correspondem ao estrutura do arquivo Estrutura, so includos no novo arquivo criado por COPY TO. A estrutura do campo Estrutura suporta caracteres curinga. Por exemplo, para especificar que todos os campos que comecem pelas letras A e P sejam includos no novo arquivo, Utilize: COPY TO mytable FIELDS LIKE A*,P* A clusula LIKE pode ser combinada com a clusula EXCEPT: COPY TO mytable FIELDS LIKE A*,P* EXCEPT PARTNO* Escopo Especifica um intervalo de registros a serem copiados para um arquivo. Apenas os registros dentro do intervalo so copiados. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Para obter maiores informaes sobre clusulas de escopo, consulte o tpico Clusulas de Escopo. FOR lExpresso1 Especifica que somente os registros para os quais a condio lgica lExpresso1 resulta em verdadeiro (.T.) so copiados para o arquivo. Inclua FOR lExpresso1 para copiar registros condicionalmente, filtrando os registros indesejveis. Uma otimizao Rushmore ocorrer em COPY TO com uma clusula FOR lExpresso1 se lExpresso1 for uma expresso otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR lExpresso1. Para obter informaes sobre expresses otimizveis Rushmore, consulte SET OPTIMIZE e Compreendendo a Tecnologia Rushmore no captulo 15, Otimizando Aplicativos, no Guia do Desenvolvedor. WHILE lExpresso2 Especifica uma condio pela qual os registros sero copiados, desde que a expresso lgica lExpresso2 resulte em verdadeiro (.T.). [WITH] CDX | [WITH] PRODUCTION Cria, para a nova tabela, um arquivo de ndice estrutural idntico ao da tabela existente. As marcas e as expresses de ndice do arquivo de ndice estrutural original so copiadas para o novo arquivo de ndice estrutural. As clusulas CDX e PRODUCTION so idnticas. No inclua CDX ou PRODUCTION, se a cpia estiver sendo feita para um arquivo que no pertence a uma nova tabela do Visual FoxPro.

[Pg.: 96]

NOOPTIMIZE Desativa a otimizao Rushmore de COPY TO. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a Tecnologia Rushmore no captulo 15, Otimizando Aplicativos, no Guia do Desenvolvedor . TYPE Especifica o tipo de arquivo, caso o arquivo criado no seja uma tabela do Visual FoxPro. Embora voc deva especificar um tipo de arquivo, no necessrio incluir a palavra-chave TYPE. FOXPLUS Os arquivos do tipo memo do Visual FoxPro possuem uma estrutura diferente daquela dos arquivos memo do FoxBASE+. Caso a tabela-fonte do Visual FoxPro contenha um campo Memo, inclua a clusula FOXPLUS para criar uma tabela que possa ser utilizada no FoxBASE+. O campo Memo do Visual FoxPro no pode conter dados binrios, pois o FoxBASE+ no suporta dados binrios em campos Memo. FOX2X Cria uma nova tabela que pode ser aberta em verses anteriores do FoxPro (verses 2.0, 2.5 e 2.6). Para campos do tipo Numrico, Flutuante, Inteiro, Duplo e Moeda, valores nulos na tabela-fonte so convertidos para zero na nova tabela. Para outros tipos de campo, valores nulos na tabela-fonte so deixados em branco na nova tabela. Para obter maiores informaes sobre valores em branco, consulte ISBLANK( ). A tabela abaixo lista os tipos de campo do Visual FoxPro que sero convertidos em tipos de campos diferentes na nova tabela, quando o argumento FOX2X for includo. Tipo de Campo do Visual FoxPro Moeda Flutuante DataHora Data Duplo Flutuante Inteiro Numrico DIF Cria um arquivo DIF (Data Interchange Format) do VisiCalc. Os campos da tabela do Visual FoxPro tornam-se vetores (colunas) e os registros tornam-se tuplas (linhas). O nome do novo arquivo receber a extenso .DIF, caso no seja includa uma extenso em NomeArquivo. MOD Cria um arquivo do Microsoft Multiplan verso 4.01. O nome do novo arquivo do Microsoft Multiplan receber a extenso .MOD, caso no seja includa uma extenso SDF Cria um arquivo SDF (System Data Format). Um arquivo SDF um arquivo de texto ASCII no qual os registros possuem um comprimento fixo e terminam com um retorno de carro e um comando de alimentao de linha. Os campos no so delimitados. O nome do arquivo SDF receber a extenso .TXT, caso no seja includa uma extenso. SYLK Cria um arquivo de intercmbio SYLK (Symbolic Link). Os arquivos SYLK so utilizados no Microsoft MultiPlan. Cada campo da tabela selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. Os nomes de arquivos SYLK no possuem extenso. WK1 Cria um arquivo de planilha do Lotus 1-2-3 verso 2.x. Cada campo da tabela selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A nova planilha recebe a extenso de nome de arquivo .WK1. WKS Cria um arquivo de planilha do Lotus 1-2-3 verso 1a. Cada campo da tabela selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A nova planilha recebe a extenso de nome de arquivo .WKS. WR1 Cria um arquivo de planilha do Lotus Symphony verso 1.1 ou 1.2. Cada campo da tabela selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A nova planilha recebe a extenso de nome de arquivo .WR1. WRK Cria um arquivo de planilha do Lotus Symphony verso 1.0. Cada campo da tabela selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A nova planilha recebe a extenso de nome de arquivo .WR1. XLS Cria um arquivo de planilha do Microsoft Excel verso 2.0. Cada campo da tabela selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A nova planilha receber a extenso .XLS, caso no seja includa uma extenso.
[Pg.: 97]

Tipo de Campo do FoxPro 2.X

XL5 Cria um arquivo de planilha do Microsoft Excel verso 5.0. Cada campo da tabela selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A nova planilha receber a extenso .XLS, caso no seja includa uma extenso. DELIMITED Cria um arquivo delimitado. Um arquivo delimitado um arquivo de texto ASCII no qual cada registro termina com um retorno de carro e um comando de alimentao de linha. O separador de campo padro a vrgula. Como os dados de caractere podem incluir vrgulas, os campos de caractere tambm podem ser delimitados por aspas. A menos que voc especifique outra coisa, a extenso .TXT ser atribuda a todos os arquivos do tipo DELIMITED recm-criados. DELIMITED WITH Delimitador Cria um arquivo delimitado com campos de caractere delimitados por um caractere que no seja as aspas. O caractere que delimita campos de caractere especificado com Delimitador. DELIMITED WITH BLANK Cria um arquivo delimitado com campos separados por espaos em vez de vrgulas. DELIMITED WITH TAB Cria um arquivo delimitado com campos separados por tabulaes em vez de vrgulas. DELIMITED WITH CHARACTER Delimitador Cria um arquivo delimitado com todos os campos delimitados pelo caractere especificado por Delimitador. Se Delimitador for um ponto-e-vrgula (o caractere utilizado no Visual FoxPro para indicar continuao de linha de comando), coloque o caractere de ponto-evrgula entre aspas. Voc tambm pode especificar as palavras-chave BLANK e TAB para Delimitador. Observe que a clusula WITH do Delimitador pode ser combinada com a clusula WITH CHARACTER. Por exemplo, o comando a seguir cria um arquivo de texto com campos de caracteres delimitados por caracteres de sublinhado e todos os campos delimitados por ponto-e-vrgula: COPY TO mytxt.txt DELIMITED WITH _ WITH CHARACTER ; AS nPginaCdigo Especifica a pgina de cdigo para a tabela ou arquivo criado por COPY TO. O Visual FoxPro copia o contedo da tabela selecionada no momento e, ao copiar os dados, converte-os automaticamente para a pgina de cdigo especificada para a nova tabela ou arquivo. Se for possvel, o Visual FoxPro marcar a tabela ou arquivo recm-criado com a pgina de cdigo especificada. Se voc especificar para nPginaCdigo um valor que no seja suportado, o Visual FoxPro gera uma mensagem de erro. Voc pode utilizar GETCP( ) em nPginaCdigo a fim de exibir a caixa de dilogo Pgina de cdigo, onde poder especificar uma pgina de cdigo para a tabela ou o arquivo criado pelo Visual FoxPro. Se voc omitir AS nPginaCdigo, a tabela ou o arquivo recm-criados sero convertidos para a pgina de cdigo atual do Visual FoxPro. Caso nPginaCdigo seja igual a 0, no ocorrer a converso de pgina de cdigo e a tabela ou arquivo recm-criados no sero marcados com uma pgina de cdigo. Comentrios Caso uma ordem de ndice seja definida, os registros sero copiados na ordem do ndice principal. COPY TO, exemplo do comando No exemplo a seguir, a tabela customer aberta e os trs registros seguintes so copiados para um novo arquivo de dados do tipo DELIMITED, denominado TEMP.TXT. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer COPY NEXT 3 TO temp TYPE DELIMITED WAIT WINDOW 'Este o arquivo de texto delimitado' NOWAIT
[Pg.: 98]

MODIFY FILE temp.txt DELETE FILE temp.txt COS( ), funo Retorna o co-seno de uma expresso numrica. Sintaxe COS(nExpresso) Tipos de retorno Numrico Argumentos nExpresso Especifica uma expresso numrica, cujo co-seno retornado por COS( ). nExpresso pode ser qualquer valor. Comentrios COS( ) retorna o co-seno de nExpresso em radianos. Utilize DTOR( ) para converter um ngulo de graus em radianos. O nmero de casas decimais que COS( ) retorna pode ser especificado com SET DECIMALS. O valor retornado por COS( ) varia entre 1 e 1. COS( ), funo exemplo CLEAR ? COS(0) && Exibe 1.00 ? COS(PI( )) && Exibe -1.00 ? COS(DTOR(180)) && Exibe -1.00 STORE PI( ) * 3 TO gnAngle ? COS(gnAngle) && Exibe -1.00 COUNT, comando Conta os registros de uma tabela. Sintaxe COUNT [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [TO NomeVarMem] [NOOPTIMIZE] Argumentos Escopo Especifica um intervalo de registros a serem includos na contagem. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Os comandos que incluem Escopo operam somente na tabela da rea de trabalho ativa. O escopo padro para COUNT ALL, ou seja, todos os registros. FOR lExpresso1 Especifica que apenas os registros que satisfaam a condio lgica lExpresso1 sero contados.Ao incluir FOR, voc poder contar os registros condicionalmente, filtrando os registros indesejveis.

[Pg.: 99]

Rushmore ir otimizar uma consulta COUNT FOR se lExpresso1 for uma expresso otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR. Para obter maiores informaes sobre expresses otimizveis, consulte SET OPTIMIZE, e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. WHILE lExpresso2 Especifica uma condio pela qual os registros sero contados, quando a expresso lgica lExpresso2 resulta em verdadeiro (.T.). TO NomeVarMem Especifica a matriz ou varivel de memria na qual a contagem de registros ser armazenada.Se a varivel de memria especificada no existir, o Visual FoxPro criar uma. NOOPTIMIZE Desativa a otimizao Rushmore de COUNT. Para obter maiores informaes, consulte SET OPTIMIZE, e Compreendendo a tecnologia Rushmore na Ajuda ou o captulo 17, Otimizando aplicativos, no Guia do Desenvolvedor. Comentrios COUNT conta os registros dentro de um escopo de registros para os quais a condio FOR ou WHILE seja verdadeira. Se SET TALK estiver ativo (ON), a contagem de registros exibida. Os registros marcados para excluso sero includos na contagem caso SET DELETE esteja desativado (OFF). COUNT, exemplo do comando O exemplo a seguir conta e exibe o nmero de clientes em Paris. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer CLEAR COUNT FOR UPPER(city) = 'PARIS' DISPLAY FIELDS company, contact FOR UPPER(city) = 'PARIS' CREATE COLOR SET, comando Cria um conjunto de cores a partir das definies de cores atuais. Sintaxe CREATE COLOR SET NomeConjuntoCores Argumentos NomeConjuntoCores Especifica o nome do conjunto de cores a ser criado. Comentrios Os conjuntos de cores no so aceitos no FoxPro para Macintosh; CREATE COLOR SET ser ignorado. Cada par de cores em cada esquema de cores salvo no conjunto de cores que voc criou. O nome de um conjunto de cores pode ter at 24 caracteres no Visual FoxPro (10 caracteres em verses anteriores do FoxPro) e pode conter nmeros e caracteres de sublinhado, mas no pode comear com um nmero. Uma vez criado um conjunto de cores, voc poder carreg-lo com SET COLOR SET. Os conjuntos de cores so salvos no arquivo de recurso do Visual FoxPro. Se j existir um conjunto de cores com o nome especificado, ele ser sobrescrito.
[Pg.: 100]

Para obter maiores informaes sobre esquemas de cores e pares de cores, consulte Viso Geral de Cores. CREATE DATABASE, comando Cria e abre um banco de dados. Sintaxe CREATE DATABASE [NomeBancoDados | ?] Argumentos NomeBancoDados Especifica o nome do banco de dados a ser criado. Caso SAFETY esteja ativado (ON) e o nome do banco de dados especificado tenha o mesmo caminho e o mesmo nome de um banco de dados existente, o Visual FoxPro exibir uma caixa de dilogo de aviso, solicitando a especificao de um novo caminho ou nome para o banco de dados. ? Exibe a caixa de dilogo Criar na qual voc pode especificar o nome do banco de dados a ser criado. Comentrios Um arquivo de banco de dados tem uma extenso .DBC. Os arquivos de memo do banco de dados associado tm uma extenso .DCT e os arquivos de ndice associados tm uma extenso .DCX. O banco de dados aberto em modo exclusivo, independente da definio de SET EXCLUSIVE. Como CREATE DATABASE abre o banco de dados aps a sua criao, no necessrio emitir um comando OPEN DATABASE subseqente. Caso CREATE DATABASE seja emitido sem nenhum de seus argumentos opcionais, a caixa de dilogo Criar ser exibida, permitindo que voc especifique um nome para o banco de dados. CREATE DATABASE, exemplo do comando Este exemplo cria um banco de dados chamado people. Uma tabela denominada friends criada e automaticamente adicionada ao banco de dados. DISPLAY TABLES utilizado para exibir as tabelas no banco de dados e DISPLAY DATABASES utilizado para exibir informaes sobre as tabelas no banco de dados. CREATE DATABASE people CREATE TABLE friends (FirstName C(20), LastName C(20)) CLEAR DISPLAY TABLES && Exibe as tabelas do banco de dados DISPLAY DATABASES && Exibe informaes sobre as tabelas CREATE FROM, comando Cria uma tabela a partir de um arquivo construdo com COPY STRUCTURE EXTENDED. Sintaxe CREATE [NomeArquivo1 [DATABASE NomeBancoDados [NAME NomeLongoTabela]]] FROM [NomeArquivo2] Argumentos

[Pg.: 101]

NomeArquivo1 Especifica o nome da nova tabela a ser criada. DATABASE NomeBancoDados Especifica um banco de dados em que a nova tabela ser adicionada. NAME NomeLongoTabela Especifica um nome longo para a nova tabela. Os nomes longos podem conter at 128 caracteres e podem ser utilizados em substituio aos nomes de arquivos reduzidos no banco de dados. NomeArquivo2 Especifica a tabela (criada com COPY STRUCTURE EXTENDED ou manualmente) a partir da qual a nova tabela ser criada. Comentrios Esta variao de CREATE pressupe que a tabela especificada em NomeArquivo2 tenha sido criada com COPY STRUCTURE EXTENDED ou manualmente. Uma nova tabela, NomeArquivo1, criada com a estrutura descrita em NomeArquivo2. A tabela recm-criada torna-se a tabela ativa. Se voc no incluir NomeArquivo1 ou NomeArquivo2 ou ambos, ser exibida uma caixa de dilogo, na qual voc poder especificar o arquivo a ser criado, o arquivo FROM ou ambos. Observe que todos os registros em NomeArquivo2, incluindo aqueles que esto marcados para excluso, so utilizados para criar NomeArquivo1. CREATE FROM, exemplo do comando O exemplo a seguir exibe a estrutura da tabela orders, copia a estrutura estendida para a tabela temp, pesquisa temp, cria uma tabela denominada backup a partir de temp e exibe a estrutura de backup. CLOSE DATABASES CLEAR SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dados USE orders DISPLAY STRUCTURE WAIT WINDOW 'Estrutur da tabela orders' NOWAIT COPY STRUCTURE EXTENDED TO temp USE temp WAIT WINDOW 'A tabela temporria contm 1 linha por campo em ORDERS' NOWAIT BROWSE CREATE backup FROM temp USE backup DISPLAY STRUCTURE WAIT WINDOW 'Backup.dbf tem a mesma estrutura que ORDERS' NOWAIT USE DELETE FILE temp.dbf DELETE FILE backup.dbf CREATE MENU, comando Abre o Criador de menus no Visual FoxPro. Sintaxe CREATE MENU [NomeArquivo | ?] [NOWAIT] [SAVE] [WINDOW NomeJanela1] [IN [WINDOW] NomeJanela2 | IN SCREEN] Argumentos
[Pg.: 102]

NomeArquivo Especifica o nome de arquivo para a tabela de menu. Caso no seja especificada uma extenso para o nome de arquivo, o Visual FoxPro atribuir automaticamente a extenso .MNX. ? Exibe a caixa de dilogo Criar, solicitando que voc digite um nome para o menu que est sendo criado. NOWAIT Continua a execuo do programa depois que o Criador de menus aberto. Oprograma no espera que o Criador de menus seja fechado, mas continua a execuona linha de programa imediatamente aps a linha que contm CREATE MENU NOWAIT.Caso voc omita NOWAIT quando CREATE MENU for emitido em um programa, oCriador de menus ser aberto e a execuo do programa interrompida at que oCriador de menus seja fechado. Se voc emitir CREATE MENU na janela Comando e incluir NOWAIT, no ser exibida a caixa de dilogo Novo menu. Esta caixa de dilogo permite que voc especifique o tipo de menu criado (padro ou de atalho). SAVE Faz com que o Criador de menus permanea aberto depois que outra janela ativada. Se voc omitir SAVE, o Criador de menus ser fechado quando outra janela forativada. A incluso de SAVE no tem efeito quando o comando emitido na janelaComando. WINDOW NomeJanela1 Especifica uma janela cujas caractersticas so adotadas peloCriador de menus. Por exemplo, se a janela for criada com a opo FLOAT de DEFINEWINDOW, o Criador de menus poder ser movido. No necessrio que a janela estejaativa ou visvel, mas ela deve estar definida. O Criador de menus possui um tamanho padro que pode ser maior que a janela cujascaractersticas ele assume. Nesse caso, o Criador de menus ainda adquire ascaractersticas da janela na qual posicionado. O canto superior esquerdo do Criador demenus posicionado nas mesmas coordenadas do canto superior esquerdo da janela ese estende alm das bordas da janela. IN [WINDOW] NomeJanela2 Especifica uma janela pai onde o Criador de menus aberto. O Criador de menus no adquire as caractersticas da janela pai e no pode sermovido para fora dela. Caso a janela pai seja movida, o Criador de menus tambm sermovido. A janela pai deve ser definida primeiramente com DEFINE WINDOW, e deve estar visvelpara que se possa acessar o Criador de menus. IN SCREEN Especifica que o Criador de menus seja explicitamente aberto na janelaprincipal do Visual FoxPro, depois de ter sido posicionado em uma janela pai. O Criadorde menus posicionado em uma janela pai com a incluso da clusula IN WINDOW. Comentrios A emisso de CREATE MENU sem argumentos adicionais abre o Criador de menus, noqual voc pode definir um sistema de menu. O nome MENU1 atribudo temporariamente tabela de definio de menu. Ao sair do Criador de menus, voc pode salvar a definio demenu com um nome diferente. Para obter maiores informaes sobre como criar menus, consulte Criando um sistema de menus e o captulo 11, Criando menus e barras de ferramentas, no Guia do Desenvolvedor. CREATE REPORT - Relatrio Rpido, comando Cria um relatrio utilizando a linguagem de programao. Sintaxe CREATE REPORT NomeArquivo1 | ? FROM NomeArquivo2 [FORM | COLUMN] [FIELDS ListaCampos] [ALIAS] [NOOVERWRITE] [WIDTH nColunas] Argumentos

[Pg.: 103]

NomeArquivo1 Especifica o nome de arquivo do relatrio. Caso no seja especificada uma extenso para o nome de arquivo, o Visual FoxPro atribuir automaticamente a extenso .FRX. ? Exibe a caixa de dilogo Criar, que solicita um nome para o relatrio que est sendo criado. FROM NomeArquivo2 precisa estar aberta. Especifica o nome da tabela a partir da qual o relatrio ser criado. A tabela no

FORM Especifica que o relatrio criado com os campos e seus nomes organizados de cima para baixo na faixa Detalhes. COLUMN Especifica que o relatrio seja criado com os campos organizados da esquerda para a direita da pgina na faixa Detalhes. Os nomes dos campos so localizados na faixa Cabealho de pgina. Caso voc omita FORM e COLUMN, o relatrio assume os padres para o formato de COLUMN. FIELDS ListaCampos Especifica os campos da tabela que aparecero no relatrio. Separa os campos em ListaCampos por vrgulas. ALIAS Especifica que o alias da tabela adicionado aos nomes dos campos no relatrio. NOOVERWRITE Especifica que um relatrio existente no sobrescrito. Caso j exista um relatrio com o nome especificado com NomeArquivo1, o relatrio no ser criado. WIDTH nColunas Especifica a largura da pgina do relatrio, em colunas. Comentrios Este formato de CREATE REPORT cria um relatrio rpido sem abrir o Criador de relatrios. O relatrio ser criado como se voc selecionar Relatrio rpido no menuRelatrio. Outra forma de CREATE REPORT, discutida no tpico anterior, abre o Criador de relatrios e permite criar um relatrio de forma interativa. Para obter outras informaes sobre relatrios e etiquetas, consulte Criando relatrios e etiquetas na seo Utilizando o Visual FoxPro e o captulo 7, Criando relatrios e etiquetas, no Guia do Usurio. CREATE TRIGGER, comando Cria um disparador de Excluso, Insero ou Atualizao para uma tabela. Sintaxe CREATE TRIGGER ON NomeTabela FOR DELETE | INSERT | UPDATE AS lExpresso Argumentos NomeTabela Especifica a tabela do banco de dados atual para a qual criado um disparador. FOR DELETE | INSERT | UPDATE Especifica o tipo de disparador criado pelo Visual FoxPro. Caso j exista um disparador do tipo especificado e SET SAFETY esteja ativado (ON), o Visual FoxPro perguntar se voc gostaria de sobrescrever o disparador existente. Caso SET SAFETY esteja desativado (OFF), o disparador existente ser automaticamente sobrescrito. AS lExpresso Especifica a expresso lgica avaliada quando o disparador ocorre. lExpresso pode ser uma funo definida pelo usurio ou um procedimento armazenado que retorna um valor lgico. Procedimentos armazenados so criados para uma tabela com MODIFY PROCEDURE.

[Pg.: 104]

Uma funo definida pelo usurio ou um procedimento armazenado pode utilizar AERROR( ) para determinar o nome da tabela para a qual o disparador ocorreu e o tipo de disparador. Caso lExpresso resulte em verdadeiro (.T.), o comando ou evento que provocou a ocorrncia do disparador ser executado. Caso lExpresso resulte em falso (.F.), o comando ou evento, que provocou a ocorrncia do disparador, no ser executado. Caso haja um procedimento ON ERROR em vigor, o procedimento ON ERROR ser executado em vez do comando ou evento. Caso no haja um procedimento ON ERROR em vigor, o comando ou evento no ser executado e o Visual FoxPro ir gerar uma mensagem de erro. Comentrios Utilize CREATE TRIGGER para interceptar eventos que fazem com que os registros de uma tabela sejam excludos, adicionados ou alterados. Os disparadores de Excluso, Insero ou Atualizao podem ser criados somente para uma tabela que tenha sido adicionada a um banco de dados. Utilize CREATE DATABASE para criar um banco de dados e ADD TABLE para adicionar uma tabela a um banco de dados. As listas abaixo descrevem os eventos que provocam a ocorrncia de um disparador de Excluso, Insero ou Atualizao. Disparador de excluso DELETE emitido. Um registro marcado para excluso a partir do menu Tabela em uma janela Pesquisar ou em uma janela Editar. Disparador de insero APPEND FROM emitido. APPEND FROM ARRAY emitido. APPEND BLANK emitido. Um registro includo a partir do menu Tabela em uma janela Pesquisar ou Editar. IMPORT emitido. INSERT - SQL emitido. RECALL emitido. Um registro reintegrado a partir do menu Tabela em uma janela Pesquisar ou Editar.

Disparador de atualizao GATHER emitido. REPLACE emitido. REPLACE FROM ARRAY emitido. UPDATE SQL emitido. outro evento que provoque uma modificao em um registro, como acontece a um Formulrio alterar o contedo de um campo. As regras a seguir aplicam-se a disparadores criados com CREATE TRIGGER: INSERT no pode ser emitido para uma tabela com um disparador. No entanto, INSERT - SQL pode ser utilizado. A emisso de PACK no provoca a ocorrncia de nenhum disparador. A emisso de ZAP no provoca a ocorrncia de um disparador de Excluso. No ocorrer nenhum disparador se voc atualizar um registro marcado para excluso. Um disparador poder no ocorrer imediatamente, dependendo do modo de utilizao do buffer atual: CREATE TRIGGER, exemplo de comando

[Pg.: 105]

O exemplo a seguir cria um disparador de Atualizao que impede que valores acima de 50 sejam digitados no campo maxordamt da tabela customer. Uma mensagem de erro gerada quando o primeiro comando REPLACE executado, pois o valor do campo maxordamt maior que 50. O segundo comando REPLACE no gera erro porque o valor do campo maxordamt menor ou igual a 50. CLOSE DATABASES OPEN DATABASE SYS(2004)+"samples\data\testdata" USE customer && Abre a tabela customer * Define o disparador no campo maxordamt para falhar com valores <= 50 CREATE TRIGGER ON customer FOR UPDATE AS maxordamt <= 50 ON ERROR && Restaura o gerenciador de erro do sistema WAIT WINDOW "Pressione uma tecla para testar o disparador com valor 60"+CHR(13); +"Quando voc receber a mensagem de erro, pressione Ignorar". REPLACE maxordamt WITH 60 && Exibe uma mensagem de erro ? maxordamt WAIT WINDOW "Pressione uma tecla para testar com valor 50". REPLACE maxordamt WITH 50 && O valor aceito ? maxordamt DELETE TRIGGER ON customer FOR UPDATE && Remove o disparador CREATE, comando Cria uma nova tabela do Visual FoxPro. Sintaxe CREATE [NomeArquivo | ?] Argumentos NomeArquivo Especifica o nome da tabela a ser criada. ? Exibe a caixa de dilogo Criar, solicitando que voc digite um nome para a tabela que est sendo criada. Comentrios No Visual FoxPro, se houver um banco de dados aberto, quando uma tabela for criada, a tabela ser automaticamente adicionada ao banco de dados. No Visual FoxPro, FoxPro para Windows e FoxPro para MS-DOS, no possvel criar uma tabela com o nome de um dispositivo do MS-DOS, como CON, NUL, PRN e COM1. Voc deve evitar utilizar hfens em um nome de tabela, pois os nomes de tabela hifenizados no aparecem na janela Visualizar e podem ser confundidos com o indicador de alias (->). Uma tabela criada definindo-se o nome, o tipo e o tamanho de cada campo. Depois que a estrutura da tabela estiver criada, voc poder adicionar os registros. Para obter maiores informaes sobre tabelas, consulte o captulo 2, Criando tabelas e ndices, no Guia do Usurio. CTOBIN( ), funo Converte uma representao de caractere binrio para um valor inteiro.

[Pg.: 106]

Sintaxe CTOBIN(cExpresso) Tipos de retorno Numrico Argumentos cExpresso Especifica a representao de caractere binrio a ser convertida.

Comentrios Utilize CTOBIN( ) para converter uma representao de caractere binrio criada com BINTOC( ) de volta ao seu valor inteiro. CTOD( ), funo Converte uma expresso de caracteres em uma expresso de data. Sintaxe CTOD(cExpresso) Tipos de retorno Data Argumentos cExpresso Especifica uma expresso de caracteres para a qual CTOD( ) retorna um valor do tipo Data. cExpresso deve resultar em uma data vlida de 1/1/100 a 12/31/9999. O formato padro para cExpresso mm/dd/aa. possvel utilizar SET DATE e SET CENTURY para alterar o formato padro. Se o sculo no for especificado quando uma data for digitada (como na expresso de caracteres 1/1/95), ser adotado o sculo XX. Comentrios CTOD( ), a funo de converso de caractere para data, retorna um valor do tipo Data a partir de uma expresso de caracteres. CTOD( ), exemplo da funo STORE '7/4/1776' TO gcthe_4th CLEAR ? CTOD(gcthe_4th) STORE DATE( ) TO gdtoday STORE CTOD('12/25/95') TO gdchristmas STORE STR(gdchristmas - gdtoday, 4) TO gddays_left ? 'Faltam', gddays_left, 'dias para o Natal'

[Pg.: 107]

CTOT( ), funo Retorna um valor de DataHora a partir de uma expresso de caracteres. Sintaxe CTOT(cExpressoCaracteres) Tipos de retorno DataHora Argumentos cExpressoCaracteres Especifica uma expresso de caracteres a partir da qual um valor de DataHora retornado. O formato adequado para cExpressoCaracteres determinado pelas definies atuais de SET DATE, SET HOURS e SET MARK. cExpressoCaracteres tem que retornar um valor de DataHora reconhecvel, caso contrrio o Visual FoxPro ir gerar um erro. A seguir so apresentados exemplos de expresses de caracteres vlidas: 02/16/95 2:00:00pm 02/16/95 2:00pm 02/16/95 14:00 02/16/95 14:00 Caso apenas uma parte relativa data ou hora seja especificada em cExpressoCaracteres, o Visual FoxPro adicionar automaticamente a hora padro de meia-noite (12:00:00 A.M.) ou a data padro de 12/30/1899 cExpressoCaracteres. possvel incluir o sculo em cExpressoCaracteres, mas ele somente ser retornado se SET CENTURY estiver ativado (ON). Caso no seja includo um sculo, ser adotado o sculo XX. CTOT( ), exemplo da funo O exemplo a seguir utiliza CTOT( ) para converter uma seqncia de caracteres para um valor de DataHora. Observe que CTOT( ) acrescenta automaticamente a hora de meia-noite (12:00:00 A.M.) seqncia de caracteres. ? BETWEEN(CTOT('02/16/95'), {02/15/95 11:00pm}, {02/16/95 1:00am}) ? CTOT('02/16/95') CURDIR( ), Funo Retorna o diretrio atual. Sintaxe CURDIR([cExpresso]) Tipos de retorno Caractere Argumentos

[Pg.: 108]

cExpresso Especifica a unidade de disco ou o volume para o qual CURDIR( ) retorna o diretrio ou pasta atual. Caso voc omita cExpresso, ser adotado o volume ou a unidade de disco padro atual. A seqncia vazia ser retornada se a unidade ou volume especificado em cExpresso no existir. Comentrios CURDIR( ) retorna, como seqncia de caracteres, o diretrio atual do MS-DOS em uma unidade especificada. CURDIR( ), exemplo de Funo O exemplo a seguir armazena o diretrio atual em uma varivel, define a padro para o diretrio no qual o Visual FoxPro foi criado, exibe o novo diretrio, retorna o padro para o diretrio original e exibe o diretrio original. CLEAR ? 'Diretrio atual: ', CURDIR( ) gcOldDir = SET('DEFAULT') + SYS(2003) SET DEFAULT TO (HOME( )) ? 'Diretrio do Visual FoxPro: ', CURDIR( ) SET DEFAULT TO (gcOldDir) ? 'Diretrio atual: ', CURDIR( ) DATE( ), funo Retorna a data do sistema atual, que controlada pelo sistema operacional. Sintaxe DATE( ) Tipos de Retorno: Data Comentrios Nenhum comando ou funo do Visual FoxPro pode alterar diretamente a data do sistema. O formato da seqncia de caracteres retornado por DATE( ) pode ser alterado com SET CENTURY, SET DATE e SET MARK TO. DATE( ),exemplo da funo O exemplo a seguir exibe a data do sistema atual com e sem o sculo. CLEAR SET CENTURY OFF ? DATE( ) && Exibe a data de hoje sem o sculo SET CENTURY ON ? DATE( ) && Exibe a data de hoje com o sculo DATETIME( ), funo Retorna a data e a hora atuais como um valor de DataHora. Sintaxe DATETIME( ) Tipos de Retorno: DataHora

[Pg.: 109]

Comentrios O formato do valor de DataHora retornado por DATETIME( ) depende das definies atuais de SET DATE, SET MARK, SET CENTURY, SET HOURS e SET SECONDS. Depende tambm das definies selecionadas no Painel de controle do sistema operacional. DATETIME( ), exemplo da funo Este exemplo armazena a data e hora para Ano Novo em uma varivel denominada tNewyear, e armazena a data e hora atual em uma varivel denominada tToday. O nmero de segundos entre a data e hora atual e Ano Novo ser ento exibido. tNewyear = {01/01/96 12:00am} && Ano Novo 1996 tToday = DATETIME( ) nSecondstonewyear = tNewyear - tToday CLEAR ? "There are " + ALLTRIM (STR(nSecondstonewyear)) ; + " seconds to the New Year." DAY( ), funo Retorna o nmero do dia do ms para uma dada expresso de data ou de data e hora. Sintaxe DAY(dExpresso | tExpresso) Tipos de Retorno: Argumentos dExpresso Especifica a data da qual DAY( ) retorna um dia do ms. dExpresso pode ser um literal de data, uma varivel de memria do tipo Data, um elemento de matriz ou um campo de data. tExpresso Especifica uma data ou hora da qual DAY( ) retorna um dia do ms. dExpresso pode ser um literal de data e hora, uma varivel de memria do tipo DataHora, um elemento de matriz ou um campo de data e hora. Comentrios DAY( ) retorna um nmero de 1 a 31. DAY( ), exemplo da funo STORE {03/05/95} TO gdBDate CLEAR ? CDOW(gdBDate) && Exibe Domingo ? DAY(gdBDate) && Exibe 5 ? 'That date is ', CMONTH(gdBDate),STR(DAY(gdBDate),2) DBC( ), funo Retorna o nome e o caminho do banco de dados atual. Sintaxe DBC( ) Tipos de Retorno: Caractere Numrico

[Pg.: 110]

Comentrios DBC( ) retornar a seqncia vazia caso no haja nenhum banco de dados atual. Utilize SET DATABASE para especificar o banco de dados atual. DBC( ), exemplo da funo O exemplo a seguir abre o banco de dados testdata e utiliza DBC( ) para exibir informaes sobre o banco de dados. CLOSE DATABASES OPEN DATABASE (SYS(2004) + "samples\data\testdata") && Abre o DBC. CLEAR ? DBC( ) && Exibe o caminho e o nome do banco de dados DBF( ), funo Retorna o nome de uma tabela aberta em uma rea de trabalho especificada ou um nome de tabela de um alias de tabela. Sintaxe DBF([cAliasTabela | nreaTrabalho]) Tipos de Retorno: Argumentos cAliasTabela Especifica o alias de tabela. nreaTrabalho Especifica o nmero da rea de trabalho. Se voc omitir cAliasTabela e nreaTrabalho, DBF( ) retornar o nome da tabela aberta na rea de trabalho atual. DBF( ) retornar uma seqncia vazia caso no esteja aberta uma tabela na rea de trabalho especificada. Caso uma tabela no tenha o alias especificado com cAliasTabela, o Visual FoxPro ir gerar uma mensagem de erro. Para obter informaes sobre como criar um alias para uma tabela, consulte USE. Comentrios Quando SET FULLPATH est ativado (ON), DBF( ) retorna o caminho da tabela com o nome da tabela. Quando SET FULLPATH est desativado (OFF), DBF( ) retorna a unidade de disco em que a tabela est residente com o nome da tabela. DBF( ), exemplo da funo O exemplo abaixo retorna o nome de uma tabela de sua rea de trabalho e seu alias e retorna a seqncia vazia aps o fechamento de todas as tabelas. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer IN 2 ALIAS mycust CLEAR ? DBF(2) && Exibe customer.dbf com seu caminho ? DBF('mycust') && Exibe customer.dbf com seu caminho CLOSE DATABASES
[Pg.: 111]

Caractere

? DBF( )

&& Exibe a seqncia vazia DBUSED( ), funo

Retorna verdadeiro (.T.) se o banco de dados especificado estiver aberto. Sintaxe DBUSED(cNomeBancoDados) Tipos de retorno: Argumentos cNomeBancoDados Especifica o nome do banco de dados para o qual DBUSED( ) retorna um valor lgico que indica se o banco de dados est ou no aberto. Comentrios A funo DBUSED( ) retornar verdadeiro (.T.) se o banco de dados especificado estiver aberto; caso contrrio, retornar falso (.F.). DBUSED( ), exemplo da funo O exemplo a seguir abre o banco de dados TESTDATA e, em seguida, utiliza DBUSED( ) para determinar se o banco de dados TESTDATA e um banco de dados definido TEST esto abertos. CLOSE DATABASES OPEN DATABASE (SYS(2004) + "samples\data\testdata") CLEAR ? 'Banco de dados Testdata est aberto? ' ?? DBUSED('testdata') && Exibe .T. ? 'Banco de dados Test est aberto? ' ?? DBUSED('test') && Exibe .F. DEACTIVATE MENU, comando Desativa uma barra de menu definida pelo usurio e remove-a da tela, mas no remove da memria a definio da barra de menus. Sintaxe DEACTIVATE MENU NomeMenu1 [, NomeMenu2 ...] | ALL Argumentos NomeMenu1 [, NomeMenu2 ...] Especifica os nomes das barras de menus a serem desativadas. possvel desativar um conjunto de barras de menus incluindo uma lista de nomes de barras de menus separados por vrgulas. ALL Desativa todos os menus ativos. Comentrios DEACTIVATE MENU remove uma barra de menus ativa ou um conjunto de barras de menus da janela principal do Visual FoxPro ou de uma janela definida pelo usurio sem remover a definio da barra de menus da memria. possvel ativar novamente uma barra de menus utilizando ACTIVATE MENU e o nome da barra de menus. Lgico

[Pg.: 112]

Dica Ao incluir a barra de menus do sistema (_MSYSMENU) em um aplicativo, no necessrio defini-la, ativ-la ou desativ-la. Em vez disso, emita SET SYSMENU AUTOMATIC. Para liberar uma barra de menus especfica ou um conjunto de barras de menus da memria, utilize RELEASE MENUS. Voc pode liberar todas as barras de menus da memria com CLEAR MENUS ou CLEAR ALL. O controle do programa ser retornado linha do programa imediatamente aps linha que ativou a barra de menus, a menos que DEFINE MENU BAR seja utilizado para criar a barra de menus ou que ACTIVATE MENU NOWAIT seja utilizado para ativ-la. DEACTIVATE MENU, exemplo do comando O exemplo a seguir utiliza DEACTIVATE MENU para desativar um menu e remov-lo da tela. A barra de menus do sistema atual salva na memria com SET SYSMENU SAVE e todos os ttulos de menu do sistema so removidos com SET SYSMENU TO. Dois ttulos de menu so criados com DEFINE PAD, e DEFINE POPUP cria um menu para cada ttulo de menu. DEFINE BAR cria itens de menu em cada um dos menus. Quando um ttulo de menu selecionado, ON PAD utiliza ACTIVATE POPUP para ativar o menu correspondente. ACTIVATE MENU exibe e ativa a barra de menus. Quando um item de um menu selecionado, executado o procedimento CHOICE. CHOICE exibe o nome do item selecionado e o nome do menu que contm o item. O controle do programa continua na linha aps ACTIVATE MENU. Finalmente, o menu desativado e removido da tela e, em seguida, liberado da memria com RELEASE MENUS EXTENDED. *** Nomeia este programa como DEACMENU.PRG *** CLEAR SET SYSMENU SAVE SET SYSMENU TO ON KEY LABEL ESC KEYBOARD CHR(13) DEFINE MENU example BAR AT LINE 1 DEFINE PAD convpad OF example PROMPT '\<Converses' COLOR SCHEME 3 ; KEY ALT+C, '' DEFINE PAD cardpad OF example PROMPT 'Informaes \<do carto' COLOR SCHEME 3 ; KEY ALT+I, '' ON PAD convpad OF example ACTIVATE POPUP conversion ON PAD cardpad OF example ACTIVATE POPUP cardinfo DEFINE POPUP conversion MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF conversion PROMPT 'r\<ea' ; KEY CTRL+E, '^E' DEFINE BAR 2 OF conversion PROMPT '\<Comprimento' ; KEY CTRL+O, '^O' DEFINE BAR 3 OF conversion PROMPT 'Ma\<ssa' ; KEY CTRL+S, '^S' DEFINE BAR 4 OF conversion PROMPT 'Velo\<cidade' ; KEY CTRL+V, '^V' DEFINE BAR 5 OF conversion PROMPT '\<Temperatura' ; KEY CTRL+T, '^T' DEFINE BAR 6 OF conversion PROMPT 'Te\<mpo' ; KEY CTRL+M, '^M' DEFINE BAR 7 OF conversion PROMPT 'Volu\<me' ; KEY CTRL+L, '^L' ON SELECTION POPUP conversion DO choice IN deacmenu WITH PROMPT( ), POPUP( ) DEFINE POPUP cardinfo MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF cardinfo PROMPT '\<Visualizar cobranas' ; KEY ALT+B, '' DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<pagamentos' ; KEY ALT+P, '' DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar\<w usurios' ;
[Pg.: 113]

KEY ALT+U, '' DEFINE BAR 4 OF cardinfo PROMPT '\-' DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranas' ON SELECTION POPUP cardinfo; DO choice IN deacmenu WITH PROMPT( ), POPUP( ) ACTIVATE MENU example DEACTIVATE MENU example RELEASE MENU example EXTENDED SET SYSMENU NOSAVE SET SYSMENU TO DEFAULT ON KEY LABEL ESC PROCEDURE choice PARAMETERS mprompt, mpopup WAIT WINDOW 'Voc escolheu ' + mprompt + ; ' do popup ' + mpopup NOWAIT DEACTIVATE WINDOW, comando Desativa as janelas definidas pelo usurio ou as janelas do sistema do Visual FoxPro e as remove da tela, mas no da memria. Sintaxe DEACTIVATE WINDOW NomeJanela1 [, NomeJanela2 ...] | ALL Argumentos NomeJanela1 [, NomeJanela2 ...] Especifica uma ou mais janelas a serem desativadas. possvel especificar janelas do sistema do Visual FoxPro como a janela Comando ou a janela de pesquisa. ALL Desativa todas as janelas ativas. Comentrios Mais de uma janela definida pelo usurio pode ser colocada na janela principal do Visual FoxPro ao mesmo tempo, mas a sada direcionada apenas janela definida pelo usurio mais recentemente ativada. Quando mais de uma janela definida pelo usurio for exibida, desativar a janela de sada atual definida pelo usurio limpar o contedo da janela, remover a janela da tela e envia a sada subseqente janela definida pelo usurio anteriormente ativada. Se no houver janela de sada, a sada ser direcionada para a janela principal do Visual FoxPro. Utilize CLEAR WINDOWS ou RELEASE WINDOWS para remover janelas tanto da tela quanto da memria. Para desativar uma janela do sistema e/ou uma barra de ferramentas (no Visual FoxPro), inclua o nome completo da janela ou barra de ferramentas do sistema entre aspas. Por exemplo, para desativar a Barra de ferramentas controles de relatrio no Visual FoxPro, emita o comando a seguir: DEACTIVATE WINDOW "Controles de relatrio" DEACTIVATE WINDOW, exemplo do comando No exemplo a seguir, uma janela denominada wOutput1 definida e ativada. Depois que um registro da tabela customer exibido, o programa espera que o usurio pressione uma tecla e, em seguida, desativa a janela. CLOSE DATABASES
[Pg.: 114]

OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer CLEAR DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Sada' ; CLOSE FLOAT GROW SHADOW ZOOM ACTIVATE WINDOW wOutput1 DISPLAY WAIT WINDOW 'Pressione uma tecla para desativar a janela' DEACTIVATE WINDOW wOutput1 RELEASE WINDOW wOutput1 DECLARE, comando Cria uma matriz unidimensional ou bidimensional. Sintaxe DECLARE NomeMatriz1 (nLinhas1 [, nColunas1]) [, NomeMatriz2 (nLinhas2 [, nColunas2])] ... Comentrios DECLARE idntico a DIMENSION em termos de operao e sintaxe. Para obter maiores informaes, consulte DIMENSION. DEFINE MENU, comando Cria uma barra de menus. Sintaxe DEFINE MENU NomeBarraMenus [BAR [AT LINE nLinha]] [IN [WINDOW] NomeJanela | IN SCREEN] [FONT cNomeFonte [, nTamanhoFonte]] [STYLE cEstiloFonte] [KEY RtuloTecla] [MARK cCaractereMarca] [MESSAGE cTextoMensagem] [NOMARGIN] [COLOR SCHEME nNmeroEsquema | COLOR ListaParesCores] Argumentos NomeBarraMenus Especifica o nome da barra de menus a ser criada. O nome da barra de menus permite que voc faa referncia barra de menus em outros comandos e funes. BAR [AT LINE nLinha] Cria uma barra de menus que age como a barra de menus do sistema do Visual FoxPro. A barra de menus possui as caractersticas a seguir: A barra de menus desenhada horizontalmente, com uma linha de altura, de um lado a outro da janela principal do Visual FoxPro ou da janela definida pelo usurio na qual est localizada A colocao dos ttulos de menus na barra de menus gerenciada automaticamente. Se o tamanho ou nmero de ttulos de menus definidos ultrapassar o tamanho da tela ou janela na qual a barra de menus est localizada, a barra de menus rola.
[Pg.: 115]

O nmero da linha especificado com nLinha. IN [WINDOW] NomeJanela Coloca a barra de menus em uma janela definida pelo usurio. Especifique o nome da janela na qual voc deseja colocar a barra de menus com NomeJanela. Se voc omitir IN WINDOW, a barra de menus ser colocada na janela principal do Visual FoxPro como padro, a menos que haja uma janela ativa definida pelo usurio. Nesse caso, a barra de menus ser colocada na janela ativa. IN SCREEN Coloca a barra de menus explicitamente na janela principal do Visual FoxPro. FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte padro para todos os ttulos de menus da barra de menus. Voc pode substituir a fonte padro de um ttulo de menu individual incluindo a clusula FONT em DEFINE PAD. cNomeFonte especifica o nome da fonte e cTamanhoFonte o tamanho em pontos. Por exemplo, o comando a seguir cria uma barra de menus com ttulos de menus na fonte Courier de 12 pontos: DEFINE MENU mnuExample FONT 'Courier', 12 Se a fonte especificada no estiver disponvel, uma fonte similar com caractersticas de fontes similares ir substitu-la. Se voc incluir a clusula FONT, mas omitir o tamanho em pontos de cTamanhoFonte, ser utilizada uma fonte de 10 pontos. A clusula FONT ser ignorada para ttulos de menus acrescentados ao menu do sistema do Visual FoxPro _MSYSMENU. Observe que o Criador de menus utiliza o menu do sistema do Visual FoxPro. STYLE cEstiloFonte Especifica um estilo de fonte padro para todos os ttulos de menus da barra de menus. Voc pode substituir o estilo padro de ttulos de menu individuais incluindo a clusula STYLE em DEFINE PAD. Se voc omitir a clusula STYLE ou se o estilo de fonte especificado no estiver disponvel, ser utilizado o estilo de fonte Normal. Os estilos de fonte que podem ser especificados com cEstiloFonte so os seguintes: Caractere B I N Q T U Estilo de fonte Negrito Itlico Normal Opaco Riscado Transparente Sublinhado

Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. Por exemplo, o comando a seguir especifica Negrito e Itlico: DEFINE MENU mnuExample STYLE 'BI' A clusula STYLE ser ignorada para ttulos de menu adicionados ao menu _MSYSMENU do sistema do Visual FoxPro. Observe que o Criador de menus utiliza o menu do sistema do Visual FoxPro. KEY RtuloTecla Especifica a tecla ou combinao de teclas utilizada para ativar a barra de menus. Para obter uma lista de teclas e combinaes de teclas disponveis e seus respectivos nomes de rtulos de tecla, consulte ON KEY LABEL. Incluir a clusula KEY equivalente a emitir o comando a seguir: ON KEY LABEL RtuloTecla ACTIVATE MENU NomeMenu Observao Se uma macro de teclado j estiver definida com o mesmo rtulo de tecla, ela ter prioridade e a barra de menus no poder ser ativada com a tecla ou combinao de teclas especificada.
[Pg.: 116]

MARK cCaractereMarca Especifica um caractere de marca exibido esquerda dos ttulos de menus na barra de menus. MARK pode ser includo para alterar o caractere de marca padro por um caractere especificado com cCaractereMarca. Se cCaractereMarca incluir mais de um caractere, somente o primeiro caractere ser utilizado como o caractere de marca. O caractere de marca padro uma verificao. A clusula MARK ignorada e o caractere de marca padro ser utilizada se a barra de menus for o menu do sistema do Visual FoxPro. Alm disso, a clusula MARK ser ignorada se FoxFont no for a fonte da janela principal do Visual FoxPro ou da janela definida pelo usurio na qual est localizada a barra de menus. Observao A especificao de um caractere de marca no marca os nomes de menus em uma barra de menus. Utilize SET MARK OF para marcar os ttulos de menus em uma barra de menus com o caractere especificado. Os caracteres de marca especificados com DEFINE PAD tm prioridade sobre os caracteres de marca especificados com a clusula MARK em DEFINE MENU. SET MARK OF utilizado para ativar ou desativar caracteres de marca, podendo tambm ser utilizado para especificar um caractere de marca para um item individual ou todos os itens de menu. MESSAGE cTextoMensagem Exibe uma mensagem quando voc seleciona um ttulo de menu. A mensagem colocada na barra de status grfica. Se a barra de status for desativada com SET STATUS BAR OFF, a mensagem ser centralizada na ltima linha da janela principal do Visual FoxPro. NOMARGIN Como padro, remove os espaos colocados esquerda e direita de cada nome de menu. COLOR SCHEME nNmeroEsquema Especifica as cores para uma barra de menus individual. COLOR ListaParesCores Especifica as cores para uma barra de menus individual. Por padro, as cores dos itens de menu so determinadas pelo esquema de cores 2 do conjunto atual de cores. Para obter maiores informaes sobre esquemas e pares de cores, consulte o tpico Viso geral de cores . Comentrios Utilize DEFINE MENU para criar a barra de menus para o sistema de menus de seu aplicativo. Utilize DEFINE PAD para criar cada um dos ttulos de menus (pads) na barra de menus. Utilize ON PAD ... ACTIVATE para especificar o menu que ser exibido embaixo de cada ttulo de menu. Utilize DEFINE POPUP para criar os menus embaixo de cada ttulo de menu. Utilize ACTIVATE MENU para ativar todo o sistema de menus. Se voc utilizar o Criador de menus para criar seu menu, talvez no tenha que utilizar nenhum desses comandos. O Criador de menus cria automaticamente os comandos para seu menu. Ele utiliza o menu do sistema do Visual FoxPro, que voc pode modificar adicionando seus prprios itens de menu. Para obter maiores informaes sobre a criao de menus, consulte Criando um sistema de menus, no captulo 11, Criando menus e barras de ferramentas, no Guia do Desenvolvedor. DEFINE MENU, exemplo do comando O exemplo a seguir utiliza DEFINE MENU para criar um sistema de menus definido pelo usurio. A barra de menus do sistema atual salva para memria com SET SYSMENU SAVE e, em seguida, os ttulos de menu do sistema so removidos com SET SYSMENU TO. DEFINE MENU cria a barra de menus e dois ttulos de menu so criados com DEFINE PAD. DEFINE POPUP cria um menu para cada ttulo de menu. DEFINE BAR cria itens em cada um dos menus. Quando um ttulo de menu escolhido, ON PAD utiliza ACTIVATE POPUP para ativar o menu correspondente. ACTIVATE MENU exibe e ativa a barra de menus. Quando um item escolhido a partir de um menu, o procedimento CHOICE executado. CHOICE exibe o nome do item escolhido e o nome do menu que contm o item.
[Pg.: 117]

*** Nomeie este programa como DEFIMENU.PRG *** CLEAR SET SYSMENU SAVE SET SYSMENU TO ON KEY LABEL ESC KEYBOARD CHR(13) DEFINE MENU example BAR AT LINE 1 DEFINE PAD convpad OF example PROMPT '\<Converses' COLOR SCHEME 3 ; KEY ALT+C, '' DEFINE PAD cardpad OF example PROMPT '\<Informaes do carto' COLOR SCHEME 3 ; KEY ALT+I, '' ON PAD convpad OF example ACTIVATE POPUP conversion ON PAD cardpad OF example ACTIVATE POPUP cardinfo DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4 DEFINE BAR 1 OF conversion PROMPT 'r\<ea' ; KEY CTRL+E, '^E' DEFINE BAR 2 OF conversion PROMPT 'C\<omprimento' ; KEY CTRL+O, '^O' DEFINE BAR 3 OF conversion PROMPT 'Ma\<ssa' ; KEY CTRL+S, '^S' DEFINE BAR 4 OF conversion PROMPT '\<Velocidade' ; KEY CTRL+V, '^V' DEFINE BAR 5 OF conversion PROMPT '\<Temperatura' ; KEY CTRL+T, '^T' DEFINE BAR 6 OF conversion PROMPT 'Te\<mpo' ; KEY CTRL+M, '^M' DEFINE BAR 7 OF conversion PROMPT 'Vo\<lume' ; KEY CTRL+L, '^L' ON SELECTION POPUP conversion DO choice IN defimenu WITH PROMPT( ), POPUP( ) DEFINE POPUP cardinfo MARGIN RELATIVE COLOR SCHEME 4 DEFINE BAR 1 OF cardinfo PROMPT 'Visualizar co\<branas' ; KEY ALT+B, '' DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<Pagamentos' ; KEY ALT+P, '' DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar\< Usurios' ; KEY ALT+U, '' DEFINE BAR 4 OF cardinfo PROMPT '\-' DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranas ' ON SELECTION POPUP cardinfo; DO choice IN defimenu WITH PROMPT( ), POPUP( ) ACTIVATE MENU example DEACTIVATE MENU example RELEASE MENU example EXTENDED SET SYSMENU TO DEFAULT ON KEY LABEL ESC PROCEDURE choice PARAMETERS mprompt, mpopup WAIT WINDOW 'Voc escolheu ' + mprompt + ; ' do popup ' + mpopup NOWAIT DEFINE PAD, comando Cria um ttulo de menu (pad) em uma barra de menus definida pelo usurio ou na barra de menus do sistema do Visual FoxPro. Sintaxe

[Pg.: 118]

DEFINE PAD TtuloMenu1 OF NomeBarraMenus PROMPT cTextoTtuloMenu [AT nLinha, nColuna] [BEFORE NomeMenu2 | AFTER NomeMenu3] [NEGOTIATE LEFT | NEGOTIATE MIDDLE | NEGOTIATE RIGHT] [FONT cNomeFonte [, nTamanhoFonte]] [STYLE cEstiloFonte] [KEY RtuloTecla [, cTextoTecla]] [MARK cCaractereMarca] [SKIP [FOR lExpresso]] [MESSAGE cTextoMensagem] [COLOR SCHEME nNmeroEsquema | COLOR ListaParesCores] Argumentos TtuloMenu1 Especifica o ttulo de menu a ser criado. O ttulo de menu permite fazer referncia ao ttulo de menu de outros comandos e funes. OF NomeBarraMenus Especifica o nome da barra de menus na qual o ttulo de menu est localizado. PROMPT cTextoTtuloMenu Especifica o texto exibido no ttulo de menu. Voc pode criar uma tecla de acesso para o ttulo de menu, colocando uma barra invertida e um sinal de menor que (\<) antes do caractere que voc gostaria que fosse a tecla de acesso. No exemplo a seguir, o usurio pode pressionar a tecla F para escolher Faturas no menu Receber e a tecla C para escolher Consulta no mesmo menu: DEFINE MENU mnuReceive DEFINE PAD padInvoice OF mnureceive PROMPT "\<Faturas" DEFINE PAD padInquire OF mnureceive PROMPT "\<Estoque" ACTIVATE MENU mnuReceive AT nLinha, nColuna Especifica onde o ttulo de menu exibido na barra de menus. nLinha , nColuna so as coordenadas do lado esquerdo do ttulo de menu na janela principal do Visual FoxPro ou em uma janela definida pelo usurio. Se voc omitir a clusula AT, o lado esquerdo do primeiro ttulo de menu ser colocado na linha 0 da janela principal do Visual FoxPro ou da janela definida pelo usurio. O prximo ttulo de menu ser colocado direita do primeiro nome na linha 0 e assim por diante. Observao Voc no pode incluir AT para especificar uma localizao para os ttulos de menus nas barras de menus criadas com a clusula BAR em DEFINE MENU. BEFORE NomeMenu2 Coloca o ttulo de menu na barra de menus esquerda do ttulo de menu especificado com NomeMenu2.A ordem em que os ttulos de menus so acessados pelo teclado corresponde localizao dos ttulos de menus na barra de menus. AFTER NomeMenu3 Coloca o ttulo de menu na barra de menus direita do ttulo de menu especificado com NomeMenu3. A ordem em que os ttulos de menus so acessados a partir do teclado corresponde localizao dos ttulos de menus na barra de menus. Voc deve criar primeiro o ttulo de menu especificado na clusula BEFORE ou AFTER. Se voc no crilo primeiro, a colocao do ttulo de menu na barra de menus ser determinada pela ordem na qual ele criado ou pela localizao especificada com a clusula AT. Para as barras de menus criadas sem BAR, a ordem em que os ttulos de menus so acessados pelo teclado determinada por BEFORE ou AFTER. A localizao de um ttulo de menu determinada pela localizao especificada com a clusula AT. Execute os dois exemplos a seguir e observe as diferenas na colocao do ttulo de menu e na ordem de acesso quando os ttulos de menus so definidos com e sem a clusula AT: *** Exemplo de Programa 1 sem ATs ***
[Pg.: 119]

DEFINE MENU mnuBefAft DEFINE PAD padOne OF mnuBefAft PROMPT '1111' DEFINE PAD padTwo OF mnuBefAft PROMPT '2222' DEFINE PAD padThree OF mnuBefAft PROMPT '3333' DEFINE PAD padFour OF mnuBefAft PROMPT '4444' BEFORE padTwo ACTIVATE MENU mnuBefAft *** Exemplo de Programa 2 com ATs *** DEFINE MENU mnuBefAft DEFINE PAD padOne OF mnuBefAft PROMPT '1111' AT 1,5 DEFINE PAD padTwo OF mnuBefAft PROMPT '2222' AT 1,15 DEFINE PAD padThree OF mnuBefAft PROMPT '3333' AT 1,25 DEFINE PAD padFour OF mnuBefAft PROMPT '4444' BEFORE padTwo AT 1,35 WAIT WINDOW 'Pressione ESC para apagar o menu' NOWAIT ACTIVATE MENU mnuBefAft NEGOTIATE LEFT | NEGOTIATE MIDDLE | NEGOTIATE RIGHT Especifica a localizao do ttulo de menu na barra de menus do Visual FoxPro quando ocorre a edio visual de OLE. NEGOTIATE LEFT especifica que o ttulo de menu colocado esquerda do Grupo de arquivos. NEGOTIATE MIDDLE especifica que o ttulo de menu colocado esquerda do Grupo de recipientes, aps o menu Editar. NEGOTIATE RIGHT especifica que o ttulo de menu colocado esquerda do Grupo de janelas. Se voc omitir a clusula NEGOTIATE, o ttulo de menu ser removido da barra de menus quando ocorre a edio visual de OLE. FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte para o ttulo de menu. cNomeFonte especifica o nome da fonte e cTamanhoFonte, o tamanho em pontos. Por exemplo, o comando a seguir cria um ttulo de menu na fonte Courier de 12 pontos: DEFINE PAD padPageAccts OF mnuReceive FONT 'Courier', 12 Se a fonte especificada no estiver disponvel, uma fonte similar com caractersticas de fonte similares ir substitu-la. Se voc incluir a clusula FONT mas omitir o tamanho em pontos de cTamanhoFonte, ser utilizada uma fonte de 10 pontos. A clusula FONT ser ignorada para ttulos de menus acrescentados ao menu do sistema do Visual FoxPro _MSYSMENU. Observe que o Criador de menus utiliza o menu do sistema do Visual FoxPro. STYLE cEstiloFonte Especifica um estilo de fonte para o item de menu. Se voc omitir a clusula STYLE ou se o estilo de fonte no estiver disponvel, o estilo de fonte Normal ser utilizado. Os estilos de fonte que podem ser especificados com cEstiloFonte so: Caractere B I N Q T U Estilo de fonte Negrito Itlico Normal Opaco Riscado Transparente Sublinhado

Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. Por exemplo, o comando a seguir especifica Negrito e Itlico:
[Pg.: 120]

DEFINE PAD padPageAccts OF mnuReceive STYLE 'BI' A clusula STYLE ser ignorada para os ttulos de menus adicionados ao menu _MSYSMENU do sistema do Visual FoxPro. Observe que o Criador de menus utiliza o menu do sistema do Visual FoxPro. KEY RtuloTecla [, cTextoTecla] Especifica uma tecla de acesso ou combinao de teclas para um ttulo de menu. Para obter uma lista de teclas e combinaes de teclas disponveis e seus respectivos nomes de rtulos de teclas, consulte ON KEY LABEL. Observao Se uma macro de teclado j estiver definida com o mesmo rtulo de tecla, ela ter prioridade e o item de menu no poder ser escolhido com a tecla ou combinao de teclas especificada. O rtulo de tecla colocado direita dos ttulos de menus nas barras de menus criadas sem a clusula BAR. O rtulo de tecla no exibido nas barras de menus criadas com a clusula BAR ou para os ttulos de menus da barra de menus do sistema do Visual FoxPro. Inclua cTextoTecla para substituir o rtulo de tecla pelo seu prprio texto. Voc pode utilizar qualquer caractere no parmetro cTextoTecla; por exemplo, o texto ^B pode ser utilizado para indicar um rtulo de tecla de CTRL+B. A incluso de KEY CTRL+B coloca o texto CTRL+B no menu, direita do nome do ttulo de menu. Ao especificar KEY CTRL+B, ^B, o texto ^+B ser colocado no menu. Voc pode suprimir a exibio de um rtulo de tecla, especificando a seqncia vazia para cTextoTecla. MARK cCaractereMarca Especifica um caractere de marca exibido esquerda do ttulo de menu. MARK pode ser includo para alterar o caractere de marca padro por um caractere especificado com cCaractereMarca. Se cCaractereMarca incluir mais de um caractere, somente o primeiro caractere ser utilizado como o caractere de marca. O caractere de marca padro uma verificao. A clusula MARK ser ignorada e o caractere de marca padro ser utilizado se a barra de menus que contm o ttulo de menu for o menu do sistema do Visual FoxPro. Alm disso, a clusula MARK ser ignorada se FoxFont no for a fonte da janela principal do Visual FoxPro ou da janela definida pelo usurio na qual est localizada a barra de menus que contm o ttulo de menu. Os caracteres de marca especificados com DEFINE PAD tm prioridade sobre os caracteres de marca especificados com a clusula MARK em DEFINE MENU. SET MARK OF utilizado para ativar ou desativar as marcas, podendo ser utilizado tambm para especificar um caractere de marca para um ttulo de menu individual ou para todos os ttulos de menus. Observao A especificao de um caractere de marca no marca o ttulo de menu. Utilize SET MARK OF para marcar um ttulo de menu com o caractere especificado. SKIP [FOR lExpresso] Especifica uma condio por meio da qual, se lExpresso resultar em verdadeiro (.T.), o ttulo de menu ser desativado, impedindo que o formulrio do usurio o escolha. Se lExpresso resultar em falso (.F.), o ttulo de menu ser ativado Voc pode tambm desativar um item de menu, colocando uma barra invertida (\) antes do texto do ttulo de menu. Por exemplo: DEFINE PAD padPageAccts OF mnuReceive PROMPT '\Age Accounts' O ttulo de menu padPageAccts exibido escurecido, indicando que no pode ser escolhido. Um ttulo de menu desativado pode ser exibido, mas no selecionado. Entretanto, uma mensagem especificada com a clusula MESSAGE exibida. MESSAGE cTextoMensagem Exibe uma mensagem quando voc seleciona um ttulo de menu. A mensagem colocada na barra de status grfica. Se a barra de status for desativada com SET STATUS BAR OFF, a mensagem ser centralizada na ltima linha da janela principal do Visual FoxPro.

[Pg.: 121]

COLOR SCHEME nNmeroEsquema Especifica as cores para um ttulo de menu individual, substituindo as cores padro ou as cores especificadas com DEFINE MENU. COLOR ListaParesCores Especifica as cores para um ttulo de menu individual, substituindo as cores padro ou as cores especificadas com DEFINE MENU. Como padro, as cores dos ttulos de menus nas barras de menus so determinadas pelo esquema de cores 2 do conjunto de cores atual. Para obter maiores informaes sobre esquemas e pares de cores, consulte o tpico Viso geral de cores. Comentrios Voc deve criar cada ttulo de menu localizado na barra de menus com seu prprio comando DEFINE PAD. A barra de menus deve ser definida com DEFINE MENU antes que se possam colocar ttulos de menus e voc deve incluir o nome da barra de menus em DEFINE PAD. Se voc utilizar o Criador de menus para criar seu menu, talvez no precise utilizar esses comandos. O Criador de menus cria automaticamente os comandos para seu menu. Ele utiliza o menu do sistema do Visual FoxPro, que voc pode modificar adicionando seus prprios itens de menu. Para obter maiores informaes sobre a criao de menus, consulte Criando um sistema de menus no captulo 11, Criando menus e barras de ferramentas, no Guia do Desenvolvedor. DEFINE PAD, exemplo do comando O exemplo a seguir utiliza DEFINE PAD para colocar os ttulos de menu na barra de menus do sistema do Visual FoxPro. A barra de menus do sistema atual salva para memria com SET SYSMENU SAVE e, em seguida, os ttulos de menu do sistema so removidos com SET SYSMENU TO. Muitos ttulos de menu do sistema so criados com DEFINE PAD. Quando um ttulo de menu escolhido, o procedimento CHOICE executado. CHOICE exibe o nome do ttulo de menu escolhido e o nome da barra de menus e ativa e desativa o caractere de marca de ttulo de menu. Se o ttulo de menu Sair escolhido, o menu do sistema original do Visual FoxPro restaurado. *** Nomeie este programa como DEFINPAD.PRG *** CLEAR SET TALK OFF SET SYSMENU SAVE SET SYSMENU TO PUBLIC markpad markpad = .T. DEFINE PAD syspad OF _MSYSMENU PROMPT '\<Sistema' COLOR SCHEME 3 ; KEY ALT+S, '' DEFINE PAD editpad OF _MSYSMENU PROMPT '\<Editar' COLOR SCHEME 3 ; KEY ALT+E, '' DEFINE PAD recordpad OF _MSYSMENU PROMPT '\<Registro' COLOR SCHEME 3 KEY ALT+R, '' DEFINE PAD windowpad OF _MSYSMENU PROMPT '\<Janela' COLOR SCHEME 3 ; KEY ALT+J, '' DEFINE PAD reportpad OF _MSYSMENU PROMPT 'Re\<latrios' COLOR SCHEME 3 ; KEY ALT+L, '' DEFINE PAD exitpad OF _MSYSMENU PROMPT 'Sa\<ir' COLOR SCHEME 3 ; KEY ALT+I, '' ON SELECTION MENU _MSYSMENU ; DO choice IN definpad WITH PAD( ), MENU( ) PROCEDURE choice PARAMETER mpad, mmenu WAIT WINDOW 'Voc escolheu ' + mpad + ; ' do menu ' + mmenu NOWAIT SET MARK OF PAD (mpad) OF _MSYSMENU TO ;
[Pg.: 122]

! MRKPAD('_MSYSMENU', mpad) markpad = ! markpad IF mpad = 'EXITPAD' SET SYSMENU TO DEFAULT ENDIF DEFINE POPUP, comando Cria um menu. Sintaxe DEFINE POPUP NomeMenu [FROM nLinha1, nColuna1] [TO nLinha2, nColuna2] [IN [WINDOW] NomeJanela | IN SCREEN] [FONT cNomeFonte [, nTamanhoFonte]] [STYLE cEstiloFonte] [FOOTER cTextoRodap] [KEY RtuloTecla] [MARGIN] [MARK cCaractereMarca] [MESSAGE cTextoMensagem] [MOVER] [MULTISELECT] [PROMPT FIELD NomeCampo | PROMPT FILES [LIKE EstruturaArquivo] | PROMPT STRUCTURE] [RELATIVE] [SCROLL] [SHORTCUT] [TITLE cTextoTtuloMenu] [COLOR SCHEME nNmeroEsquema | COLOR ListaParesCores] Argumentos NomeMenu Especifica o nome do menu a ser criado. FROM nLinha1, nColuna1 TO nLinha2, nColuna2 Especifica onde o menu colocado. nLinha1, nColuna1 especifica coordenadas para o canto superior esquerdo do menu. Se voc omitir a clusula FROM, o Visual FoxPro colocar o canto superior esquerdo do menu na primeira linha e coluna da janela principal do Visual FoxPro ou de uma janela definida pelo usurio. Para criar um menu com um tamanho especfico, voc pode tambm incluir TO nLinha2, nColuna2 para especificar a localizao do canto inferior direito do menu. Se voc incluir FROM nLinha1, nColuna1 e omitir TO nLinha2, nColuna2, o Visual FoxPro dimensionar automaticamente o menu. O menu tem a largura do item de menu mais longo contido nele (se os itens forem criados com DEFINE BAR) e a extenso necessria para exibir todos os itens de menu. O comprimento do menu limitado pelo tamanho da janela principal do Visual FoxPro ou da janela definida pelo usurio na qual o menu est localizado. Se o menu no for grande o suficiente para conter todos os itens de menu, ser exibida uma barra de rolagem para que voc possa percorrer os itens de menu. IN [WINDOW] NomeJanela Coloca o menu em uma janela definida pelo usurio especificada com NomeJanela. Se voc omitir essa clusula, o menu ser colocado na janela principal do Visual FoxPro como padro a menos que haja uma janela ativa definida pelo usurio. Se houver uma janela ativa definida pelo usurio, o menu ser colocado na janela ativa. IN SCREEN Coloca o menu explicitamente na janela principal do Visual FoxPro.

[Pg.: 123]

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte padro para o menu. Voc pode substituir a fonte padro de um item de menu individual, incluindo a clusula FONT em DEFINE BAR. cNomeFonte especifica o nome da fonte e cTamanhoFonte, o tamanho em pontos. Por exemplo, o comando a seguir cria um menu na fonte Courier de 12 pontos: DEFINE POPUP popMyPopup FONT 'Courier', 12 Se a fonte especificada no estiver disponvel, uma fonte similar com caractersticas de fonte similares ir substitu-la. Se voc incluir a clusula FONT, mas omitir o tamanho em pontos de cTamanhoFonte, ser utilizada uma fonte de 10 pontos. STYLE cEstiloFonte Especifica um estilo de fonte padro para o menu. Voc pode substituir o estilo padro de um item individual incluindo a clusula FONT em DEFINE BAR. Se voc omitir a clusula STYLE ou se o estilo de fonte especificado no estiver disponvel, o estilo de fonte Normal ser utilizado. Os estilos de fonte que podem ser especificados com cEstiloFonte so listados na tabela a seguir: Caractere B I N Q T U Estilo de fonte Negrito Itlico Normal Opaco Riscado Transparente Sublinhado

Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. Por exemplo, o comando a seguir especifica Negrito e Itlico: DEFINE MENU popMyPopup STYLE 'BI' FOOTER cTextoRodap borda inferior do menu. Cria um rodap com o texto especificado, com cTextoRodap centralizado na

KEY RtuloTecla Especifica uma tecla de acesso ou combinao de teclas para um menu. Para obter uma lista de teclas e combinaes de teclas disponveis e seus respectivos nomes de rtulos de tecla, consulte ON KEY LABEL. Incluir KEY equivalente a emitir o comando a seguir: ON KEY LABEL RtuloTecla ACTIVATE POPUP NomeMenu Observao Se uma macro de teclado j estiver definida com o mesmo rtulo de tecla, ela ter prioridade e o menu no poder ser ativado com a tecla ou combinao de teclas especificada. MARGIN Coloca um espao extra esquerda e direita de cada item de menu. Os caracteres de marca so exibidos no espao esquerda de um item e setas indicando submenus adicionais em cascata esto disponveis, sendo exibidos direita dos itens de menu. Se voc omitir MARGIN, os caracteres de marca iro sobrescrever o primeiro caractere dos nomes dos itens de menu; setas hierrquicas iro sobrescrever o ltimo caractere dos itens de menu. MARK cCaractereMarca Especifica um caractere exibido esquerda de um item de menu. O caractere de marca uma marca de verificao. A clusula MARK ser ignorada e o caractere de marca padro ser utilizado se o menu estiver integrado dentro do menu do sistema do Visual FoxPro. Alm disso, a clusula MARK ser ignorada se FoxFont no for a fonte da janela principal do FoxPro ou da janela definida pelo usurio na qual o menu est localizado.
[Pg.: 124]

MARK pode ser includo para alterar o caractere de marca padro por um caractere especificado com cCaractereMarca. Se cCaractereMarca incluir mais de um caractere, somente o primeiro caractere ser utilizado como o caractere de marca. Observao A especificao de um caractere de marca no marca um item de menu. Utilize SET MARK OF para marcar um item de menu. A clusula MARK define o caractere de marca para todos os itens do menu. Os caracteres de marca especificados com os comandos DEFINE BAR tm prioridade sobre os caracteres de marca especificados com a clusula MARK em DEFINE POPUP. SET MARK OF utilizado para ativar ou desativar os caracteres de marca, podendo ser utilizado tambm para especificar um caractere de marca para um item de menu individual ou para todos os itens de menu. MESSAGE cTextoMensagem Exibe uma mensagem quando voc seleciona um item de menu. A mensagem colocada na barra de status grfica. Se a barra de status baseada em caractere for ativada com SET STATUS ON, a mensagem ser centralizada na ltima linha da janela principal do Visual FoxPro. MOVER Coloca uma seta de duas pontas () na caixa de dilogo Deslocador esquerda do item selecionado no menu. Voc pode arrastar a seta de duas pontas a fim de mover um item para outra posio no menu. GETBAR( ) pode ser utilizado para determinar o posicionamento de cada item no menu. No possvel reorganizar itens em menus criados com a clusula PROMPT. MULTISELECT Permite que o usurio selecione vrios itens de um menu ao mesmo tempo. Quando o usurio escolhe o item de um menu, o caractere de marca colocado esquerda do item. No possvel fazer vrias selees a partir de um menu criado com a clusula PROMPT. MRKBAR( ) pode ser utilizado para determinar os itens que sero escolhidos a partir do menu. Se voc incluir MULTISELECT em DEFINE POPUP, poder incluir MARGIN para reservar espao em cada item para o caractere de marca. No exemplo a seguir, criado um menu denominado popFruits. MULTISELECT includo para criar um menu que permita que vrios itens sejam escolhidos. Cada um dos quatro itens tm um caractere de marca diferente. Quando o usurio escolhe itens do menu, eles so marcados e uma rotina denominada yourchoice exibe os itens escolhidos. CLEAR IF NOT _DOS MODIFY WINDOW SCREEN FONT 'foxfont', 12 ENDIF ACTIVATE SCREEN DEFINE POPUP popFruits FROM 5,5 ; MULTISELECT MARGIN && Cria um menu que permite vrias escolhas DEFINE BAR 1 OF popFruits ; PROMPT '\<Mas' MARK CHR(3) && Primeiro item DEFINE BAR 2 OF popFruits ; PROMPT '\<Bananas' MARK CHR(4) && Segundo item DEFINE BAR 3 OF popFruits ; PROMPT '\<Uvas' MARK CHR(5) && Terceiro item DEFINE BAR 4 OF popFruits ; PROMPT '\<Limes' MARK CHR(6) && Quarto item @ 12,5 SAY 'Suas escolhas:' ON SELECTION POPUP popFruits DO yourchoice && Rotina de escolha ACTIVATE POPUP popFruits PROCEDURE yourchoice && Executada quando a escolha feita @ 13,5 CLEAR FOR gnCount = 1 TO CNTBAR('popFruits') && Loop para n. de itens
[Pg.: 125]

IF MRKBAR('popFruits', gnCount) = .T. ? PRMBAR('popFruits', gnCount) AT 5 ENDIF NEXT

&& A opo marcada, && exibe legenda

PROMPT FIELD NomeCampo Especifica o nome de campo de uma tabela aberta cujos registros sero os itens do menu. O menu contm um item para cada registro da tabela. Quando o menu ativado, a rea de trabalho da tabela selecionada. Dica Voc pode beneficiar-se da otimizao de Rushmore se definir um filtro no campo especificado com PROMPT FIELD utilizado no menu. Para obter maiores informaes sobre a otimizao de Rushmore, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. NomeCampo pode tambm conter vrios nomes de campos e expresses concatenadas com o operador de adio (+). NomeCampo pode tambm ser o nome do campo de uma tabela aberta em outra rea de trabalho ou uma funo definida pelo usurio. No h limite para o nmero de entradas que podem ser exibidas em um menu criado com PROMPT FIELD. PROMPT FILES [LIKE EstruturaArquivo] Cria um menu que exibe os nomes dos arquivos disponveis no diretrio ou pasta atual. LIKE EstruturaArquivo permite especificar os arquivos a serem exibidos no menu utilizando curingas. Por exemplo, para criar um menu que exiba os nomes das tabelas na unidade ou diretrio padro, inclua o comando a seguir: PROMPT FILES LIKE *.DBF Voc pode criar um menu que exiba os nomes dos arquivos em outras unidades e em outros diretrios, incluindo uma especificao de unidade, de diretrio ou ambas. Por exemplo, para criar um menu que exiba os nomes dos arquivos de programa em um diretrio denominado PROGRAMS na unidade C, inclua o comando a seguir: PROMPT FILES LIKE C:\PROGRAMS\*.PRG PROMPT STRUCTURE Exibe os nomes dos campos da tabela atual no menu, de acordo com a estrutura dos campos da tabela. Quando o menu ativado, a rea de trabalho da tabela selecionada. RELATIVE Especifica a ordem de colocao dos itens no menu. Se voc criar um menu sem a clusula RELATIVE, um item ser posicionado no menu na ordem ditada pelo nmero da barra do item. O espao no menu reservado para itens indefinidos. Por exemplo, se o primeiro e terceiro itens forem definidos e o menu estiver ativado, uma linha em branco reservada para o segundo item ser colocada no menu. Se voc criar um menu com RELATIVE, os itens sero exibidos no menu na ordem em que foram definidos. O espao no menu no reservado para itens indefinidos. A definio de um menu com RELATIVE tambm permite que voc utilize as clusulas BEFORE e AFTER em DEFINE BAR para posicionar os itens de um menu em relao a outros itens. Se um menu for criado sem RELATIVE, a incluso de BEFORE ou AFTER em DEFINE BAR gerar um erro. Execute os dois exemplos de programas a seguir e compare a colocao dos itens em cada menu. *** Exemplo de RELATIVE *** DEFINE POPUP popRelatYes RELATIVE FROM 1,1 DEFINE BAR 4 OF popRelatYes PROMPT '4444' DEFINE BAR 3 OF popRelatYes PROMPT '3333' DEFINE BAR 2 OF popRelatYes PROMPT '2222'
[Pg.: 126]

DEFINE BAR 1 OF popRelatYes PROMPT '1111' DEFINE BAR 6 OF popRelatYes PROMPT '6666' BEFORE 4 ACTIVATE POPUP popRelatYes *** Exemplo de NON-RELATIVE *** DEFINE POPUP popRelatNo FROM 1,1 DEFINE BAR 4 OF popRelatNo PROMPT '4444' DEFINE BAR 3 OF popRelatNo PROMPT '3333' DEFINE BAR 2 OF popRelatNo PROMPT '2222' DEFINE BAR 1 OF popRelatNo PROMPT '1111' DEFINE BAR 6 OF popRelatNo PROMPT '6666' ACTIVATE POPUP popRelatNo SCROLL Coloca uma barra de rolagem direita do menu criado. Essa barra somente exibida quando h mais itens do que o menu pode conter ou se o menu for longo demais para a janela principal do Visual FoxPro ou para uma janela definida pelo usurio na qual est localizado. SHORTCUT Cria um menu de atalho. Um menu de atalho exibido tipicamente quando um boto de seleo, barra de ferramentas ou barra de tarefas clicado com o boto direito do mouse. O menu de atalho lista comandos que pertencem rea da tela na qual o mouse foi clicado com o boto direito. Voc pode incluir MROW( ) e MCOL( ) na clusula FROM para ativar o popup na localizao onde o mouse clicado. TITLE cTextoTtuloMenu especifica o ttulo do menu. Exibe um ttulo no centro da borda superior do menu. cTextoTtuloMenu

COLOR SCHEME nNmeroEsquema Especifica as cores de todos os elementos do menu. Como padro, as cores dos menus criadas com DEFINE POPUP so controladas pelo esquema de cores 2. COLOR ListaParesCores Especifica as cores de todos os elementos do menu. Para obter maiores informaes sobre esquemas e pares de cores, consulte o tpico Viso geral de cores. Comentrios Para colocar um conjunto de itens definidos no menu, utilize uma srie de comandos DEFINE BAR. Para colocar registros, arquivos ou campos no menu utilize as opes PROMPT FIELD, PROMPT FILES ou PROMPT STRUCTURE de DEFINE POPUP. Quando o menu exibido e ativado com ACTIVATE POPUP, voc pode escolher um dos itens do menu. Dependendo do item escolhido, uma rotina poder ser executada ou outro menu poder ser exibido e ativado. Um menu que exibe outro menu quando um item escolhido denominado submenu em cascata. Para obter maiores informaes sobre a criao de submenus, consulte ON BAR. Se voc utilizar o Criador de menus para criar seu menu, talvez no precise utilizar esses comandos. O Criador de menus cria automaticamente os comandos para seu menu. Ele utiliza o menu do sistema do Visual FoxPro, que voc pode modificar adicionando seus prprios itens de menu. Para obter maiores informaes sobre a criao de menus, consulte Criando um sistema de menus, no captulo 11, Criando menus e barras de ferramentas, no Guia do Desenvolvedor. DEFINE POPUP, exemplo do comando O exemplo a seguir utiliza DEFINE POPUP para criar menus que esto ativos quando um ttulo de menu na barra de menus escolhido. A barra de menus do sistema atual salva para memria com SET SYSMENU SAVE e, em seguida, os ttulos de menu do sistema so removidos com SET SYSMENU TO. Dois ttulos novos de menu do sistema so criados com DEFINE PAD e DEFINE POPUP cria um menu suspenso para cada ttulo de menu. DEFINE BAR cria itens em cada um dos menus. Quando um ttulo de menu escolhido, ON PAD utiliza ACTIVATE POPUP para ativar o menu correspondente.

[Pg.: 127]

Quando um item escolhido a partir de um menu, ON SELECTION POPUP utiliza PROMPT( ) e POPUP( ) para passar o nmero do item e o nome do menu para o procedimento CHOICE. CHOICE exibe o texto do item escolhido e o nome do menu que contm o item. Se o item Sada for escolhido de um menu Informaes de carto, o menu do sistema do Visual FoxPro restaurado. *** Nomeie este programa como DEFINPOP.PRG *** CLEAR SET SYSMENU SAVE SET SYSMENU TO DEFINE PAD convpad OF _MSYSMENU PROMPT '\<Converses' COLOR SCHEME 3 ; KEY ALT+C, '' DEFINE PAD cardpad OF _MSYSMENU PROMPT '\<Informaes do Carto' COLOR SCHEME 3 ; KEY ALT+I, '' ON PAD convpad OF _MSYSMENU ACTIVATE POPUP conversion ON PAD cardpad OF _MSYSMENU ACTIVATE POPUP cardinfo DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4 DEFINE BAR 1 OF conversion PROMPT 'r\<ea' KEY CTRL+E, '^E' DEFINE BAR 2 OF conversion PROMPT 'C\<omprimento' ; KEY CTRL+O, '^O' DEFINE BAR 3 OF conversion PROMPT 'Ma\<ssa' ; KEY CTRL+S, '^S' DEFINE BAR 4 OF conversion PROMPT '\<Velocidade' ; KEY CTRL+V, '^V' DEFINE BAR 5 OF conversion PROMPT '\<Temperatura' ; KEY CTRL+T, '^T' DEFINE BAR 6 OF conversion PROMPT 'Te\<mpo' ; KEY CTRL+M, '^M' DEFINE BAR 7 OF conversion PROMPT 'Vo\<lume' ; KEY CTRL+L, '^L' ON SELECTION POPUP conversion; DO choice IN definpop WITH PROMPT( ), POPUP( ) DEFINE POPUP cardinfo MARGIN RELATIVE COLOR SCHEME 4 DEFINE BAR 1 OF cardinfo PROMPT 'Visualizar co\<branas' ; KEY ALT+B, '' DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<Pagamentos' ; KEY ALT+P, '' DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar \<Usurios' ; KEY ALT+U, '' DEFINE BAR 4 OF cardinfo PROMPT '\-' DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranas ' DEFINE BAR 6 OF cardinfo PROMPT '\-' DEFINE BAR 7 OF cardinfo PROMPT 'Sa\<ir ' ON SELECTION POPUP cardinfo; DO choice IN definpop WITH PROMPT( ), POPUP( ) PROCEDURE choice PARAMETERS mprompt, mpopup WAIT WINDOW 'Voc escolheu ' + mprompt + ; ' do popup ' + mpopup NOWAIT IF mprompt = 'Sada' SET SYSMENU TO DEFAULT ENDIF DEFINE WINDOW, comando Cria uma janela e especifica seus atributos.

[Pg.: 128]

Sintaxe DEFINE WINDOW NomeJanela1 FROM nLinha1, nColuna1 TO nLinha2, nColuna2 | AT nLinha3, nColuna3 SIZE nLinha4, nColuna4 [IN [WINDOW] NomeJanela2 | IN SCREEN | IN DESKTOP [NAME ObjectName] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [FOOTER cFooterText] [TITLE cTitleText] [HALFHEIGHT] [DOUBLE | PANEL | NONE | SYSTEM | cBorderString] [CLOSE | NOCLOSE] [FLOAT | NOFLOAT] [GROW | NOGROW] [MDI | NOMDI] [MINIMIZE | NOMINIMIZE] [ZOOM | NOZOOM] [ICON FILE FileName1] [FILL cFillCharacter | FILL FILE FileName2] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList] Argumentos NomeJanela1 Especifica o nome da janela a ser criada. Os nomes das janelas podem ter at 254 caracteres de extenso no Visual FoxPro (10 caracteres nas verses anteriores do FoxPro). Eles devem comear com uma letra ou caractere de sublinhado e no podem comear com um nmero. Eles podem conter qualquer combinao de letras, nmeros e caracteres de sublinhado. FROM nLinha1, nColuna1 TO nLinha2, nColuna2 Especifica a posio e o tamanho da janela definida pelo usurio na janela principal do Visual FoxPro. FROM nLinha1, nColuna1 especifica a posio do canto superior esquerdo da janela definida pelo usurio na janela principal do Visual FoxPro. TO nLinha2, nColuna2 especifica a posio do canto inferior direito da janela definida pelo usurio na janela principal do Visual FoxPro. Uma janela pode ser definida com as coordenadas que esto fora da borda da janela do Visual FoxPro e pode ser maior que a janela principal do Visual FoxPro. A localizao e o tamanho da janela so determinados pela fonte da janela pai. A janela pai pode ser outra janela definida pelo usurio ou a janela principal do Visual FoxPro. AT nLinha3, nColuna3 SIZE nLinha4, nColuna4 Especifica a posio e o tamanho de uma janela definida pelo usurio. AT nLinha3, nColuna3 especifica a posio do canto superior esquerdo da janela definida pelo usurio na janela principal do Visual FoxPro. Essa posio determinada pela fonte atual da janela pai. Como a clusula AT idntica clusula FROM em todos os aspectos, as duas clusulas podem ser utilizadas de forma intercambivel. SIZE nLinha4, nColuna4 especifica em linhas e colunas o tamanho da janela definida pelo usurio e assegura que o texto exibido em uma fonte especfica caber na janela criada. Voc pode especificar uma fonte e um estilo de fonte para uma janela definida pelo usurio, incluindo as clusulas FONT e STYLE. Se voc especificar uma fonte para a janela e incluir a clusula SIZE, o tamanho da fonte ser determinado pela largura e altura da fonte da janela. Se voc no especificar a fonte para uma janela, ser utilizada a fonte padro do sistema, a fonte FoxFont de 10 pontos.

[Pg.: 129]

IN [WINDOW] NomeJanela2 Coloca uma janela definida pelo usurio em uma janela pai. A janela definida pelo usurio torna-se a janela filho e no pode ser movida para fora da janela pai. Se a janela pai for movida, a janela filho ser movida junto com ela. Quando uma janela filho colocada em uma janela pai, as coordenadas da janela filho especificadas com as clusulas FROM e TO ou AT e SIZE tero relao com a janela pai, no com a janela principal do Visual FoxPro. No exemplo a seguir, uma janela pai, wParent, criada. Uma janela filho, wChild, colocada na janela pai. CLEAR DEFINE WINDOW wParent ; FROM 1, 1 TO 20, 30 ; TITLE "Pai" && Janela pai. ACTIVATE WINDOW wParent DEFINE WINDOW wChild ; FROM 1, 1 TO 20, 20 ; TITLE "Filho" ; IN WINDOW wParent && Janela filho. ACTIVATE WINDOW wChild ACTIVATE SCREEN WAIT WINDOW 'Pressione uma tecla para limpar as janelas' RELEASE WINDOW wParent, wChild CLEAR IN SCREEN Coloca a janela definida pelo usurio explicitamente na janela principal do Visual FoxPro. Se voc omitir IN SCREEN, a janela definida pelo usurio ser colocada na janela principal do Visual FoxPro, como padro. Voc pode incluir a clusula IN WINDOW em ACTIVATE WINDOW para colocar a janela em outra janela definida pelo usurio e substituir a clusula IN SCREEN. IN DESKTOP Coloca uma janela definida pelo usurio na rea de trabalho do Microsoft Windows, fora da janela principal do Visual FoxPro. A posio da janela est relacionada com a rea de trabalho do Windows e com a fonte atual da janela principal do Visual FoxPro. NAME NomeObjeto Cria uma referncia de objeto para a janela, permitindo que voc manipule a janela com as propriedades orientadas a objetos disponveis para o objeto do formulrio. Para obter informaes adicionais sobre a programao orientada a objetos no Visual FoxPro, consulte o captulo 3, Programao orientada a objetos, no Guia do Desenvolvedor. Para obter informaes adicionais sobre as propriedades do objeto do formulrio que podem ser especificadas para uma janela criada com a clusula NAME, consulte o tpico Form, objeto. FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte para o texto colocado na janela. cNomeFonte especifica o nome da fonte, e cTamanhoFonte, o tamanho em pontos. Se voc omitir nTamanhoFonte, ser utilizada uma fonte de 9 pontos. Por exemplo, este comando cria uma janela que exibe a sada enviada para a janela na fonte Courier de 16 pontos: DEFINE WINDOW wDisplayFont FROM 2,2 TO 12,22 FONT 'Courier', 16 Se voc omitir a clusula FONT, ser utilizada a fonte FoxFont de 10 pontos. Se a fonte especificada no estiver disponvel, ser utilizada uma fonte com caractersticas semelhantes em substituio. STYLE cEstiloFonte Especifica um estilo de fonte para o texto colocado na janela. cEstiloFonte especifica a fonte. Se voc omitir a clusula STYLE ou se o estilo de fonte especificado no estiver disponvel, o estilo de fonte Normal ser utilizado. A tabela a seguir lista estilos de fonte e seus caracteres correspondentes.
[Pg.: 130]

Caractere B I N Q T U

Estilo de fonte Negrito Itlico Normal Opaco Riscado Transparente Sublinhado

Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. No Visual FoxPro, os comandos a seguir especificam os estilos Negrito e Itlico: DEFINE WINDOW wDisplayStyle FROM 2, 2 TO 12, 22 STYLE 'BI'

TITLE cTextoTtulo Atribui um ttulo com a clusula TITLE. cTextoTtulo especifica o texto do ttulo e centralizado na borda superior da janela. Se o ttulo for mais largo do que a janela, ser truncado. HALFHEIGHT Cria uma janela com uma barra de ttulo de meia altura. Isso fornece compatibilidade para as janelas criadas nas verses anteriores do FoxPro que so importadas para o Visual FoxPro. Quando voc utiliza DEFINE WINDOW para criar uma janela, uma barra de ttulo de meia altura utilizada, a menos que voc inclua a palavra-chave SYSTEM ou uma clusula FONT. Se voc incluir a palavra-chave HALFHEIGHT, a barra de ttulo de meia altura ser utilizada independentemente da clusula SYSTEM ou FONT estar includa. DOUBLE | PANEL | NONE | SYSTEM | cSeqnciaBorda Especifica um estilo de borda para uma janela definida pelo usurio. A borda padro uma nica linha. Argumento Descrio

DOUBLE Especifica uma borda com linha dupla em volta da janela. PANEL Especifica uma borda larga em volta da janela. NONE Suprime completamente a borda. SYSTEM Especifica que a janela definida pelo usurio dever ter a aparncia de uma janela do sistema. Quando certas clusulas diferentes (GROW, ZOOM etc.) so includas, os controles apropriados da janela so colocados na sua borda. cSeqnciaBorda Especifica uma borda personalizada. Para obter maiores informaes sobre a definio de uma borda personalizada, consulte SET BORDER. A incluso de DOUBLE ou de uma seqncia de borda personalizada cria uma janela com a borda PANEL. A incluso das clusulas CLOSE, FLOAT, GROW, ZOOM ou MINIMIZE coloca os controles apropriados na janela, mesmo que a clusula SYSTEM de definio da janela no seja includa. CLOSE Permite fechar uma janela definida pelo usurio utilizando o teclado ou mouse. Ao fechar uma janela, ela removida da janela principal do Visual FoxPro ou de uma janela pai definida pelo usurio e sua definio removida da memria. Se omitir CLOSE, voc no poder fechar a janela utilizando a interface; a janela dever ser fechada utilizando um comando em um programa ou na janela Comando. NOCLOSE Impede que a janela seja fechada exceto ao utilizar um comando em um programa ou na janela Comando. FLOAT Permite que a janela seja movida, utilizando o teclado ou mouse. Se omitir FLOAT, voc no poder mover a janela, a menos que utilize o comando MOVE WINDOW em um programa ou na janela Comando. NOFLOAT Impede que a janela seja movida, exceto quando utilizar o comando MOVE WINDOW em um programa ou na janela Comando.
[Pg.: 131]

GROW Permite que voc dimensione uma janela definida pelo usurio, utilizando o teclado ou mouse. Se omitir GROW, voc no poder dimensionar a janela exceto ao utilizar o comando SIZE WINDOW em um programa ou na janela Comando. NOGROW Impede que voc dimensione uma janela exceto ao utilizar o comando SIZE WINDOW em um programa ou na janela Comando. MDI Cria uma janela definida pelo usurio em conformidade com MDI. MDI (interface de mltiplos documentos) uma especificao que permite janelas com vrios documentos e determina suas estruturas e procedimentos. Se voc omitir MDI, a janela criada no estar em conformidade com MDI. Quando uma janela em conformidade com MDI maximizada: A janela considera o tamanho da janela principal do Visual FoxPro. Os controles da janela desaparecem e a caixa do menu Controle exibida na barra de menus do sistema do Visual FoxPro. O boto Restaurar da janela tambm colocado na barra de menus do sistema do Visual FoxPro. O ttulo da janela colocado na barra de ttulos do Visual FoxPro e separado do ttulo do Visual FoxPro por um hfen. Se voc ativar outra janela em conformidade com MDI, ela ser automaticamente maximizada. NOMDI Cria uma janela que no est em conformidade com MDI. MINIMIZE Permite minimizar uma janela definida pelo usurio utilizando o teclado ou mouse. NOMINIMIZE Impede que as janelas sejam minimizadas. ZOOM Permite que a janela seja maximizada utilizando o teclado ou mouse. Voc pode tambm restaurar a janela ao seu tamanho original. NOZOOM Impede que a janela seja maximizada. ICON FILE NomeArquivo Especifica o cone exibido quando a janela minimizada. preciso incluir a palavra-chave MINIMIZE em DEFINE WINDOW. Voc pode especificar somente um arquivo de cone (.ICO); no possvel especificar um arquivo bitmap (.BMP). FILL FILE NomeArquivo2 Especifica um papel de parede (o segundo plano) para a janela. A janela exibida lado a lado, com o NomeArquivo2 especificado. Voc especifica um arquivo bitmap .BMP. COLOR SCHEME nNmeroEsquema Especifica as cores para a janela definida pelo usurio. Como padro, as cores das janelas criadas com DEFINE WINDOW so controladas pelo esquema de cores 1. COLOR ListaParesCores Especifica as cores para a janela definida pelo usurio. Para obter maiores informaes sobre esquemas e pares de cores, consulte o tpico Viso geral de cores. Comentrios Depois que as janelas definidas pelo usurio forem criadas com DEFINE WINDOW, elas podero ser exibidas na janela principal do Visual FoxPro com ACTIVATE WINDOW ou SHOW WINDOW. O nmero de janelas definidas pelo usurio que podem ser criadas limitado somente pela quantidade de memria disponvel e pelos recursos do sistema. As janelas ativadas permanecem na janela principal do Visual FoxPro at que DEACTIVATE WINDOW ou HIDE WINDOW seja emitido. DEACTIVATE WINDOW e HIDE WINDOW removem janelas da janela principal do Visual FoxPro, mas no removem as definies das janelas da memria. As janelas podem ser colocadas de volta na janela principal do Visual FoxPro com ACTIVATE WINDOW ou SHOW WINDOW. Utilize CLEAR WINDOWS ou RELEASE WINDOWS para remover janelas da janela principal do Visual FoxPro e as definies das janelas da memria. As janelas cujas definies foram removidas da memria devem ser recriadas com DEFINE WINDOW para serem exibidas novamente.

[Pg.: 132]

DEFINE WINDOW, exemplo do comando No exemplo a seguir, uma janela denominada Sada criada e ativada. O programa espera voc pressionar uma tecla e, em seguida, oculta a janela. O programa espera voc pressionar uma tecla novamente e, em seguida, exibe a janela mais uma vez. CLEAR DEFINE WINDOW output FROM 2,1 TO 13,75 TITLE 'Sada' ; CLOSE FLOAT GROW ZOOM ACTIVATE WINDOW output WAIT WINDOW 'pressione qualquer tecla para ocultar a janela Sada' HIDE WINDOW output WAIT WINDOW 'pressione qualquer tecla para exibir a janela Sada' SHOW WINDOW output WAIT WINDOW 'pressione qualquer tecla para liberar a janela Sada' RELEASE WINDOW output DELETE DATABASE, comando Exclui um banco de dados do disco. Sintaxe DELETE DATABASE NomeBancoDados | ? [DELETETABLES] [RECYCLE] Argumentos NomeBancoDados Especifica o nome do banco de dados a ser excludo do disco. O banco de dados especificado no poder ser aberto. NomeBancoDados pode incluir o caminho do banco de dados com o nome dele. ? Exibe a caixa de dilogo Excluir onde voc pode especificar o nome do banco de dados a ser excludo do disco. DELETETABLES Exclui do disco as tabelas contidas no banco de dados e o banco de dados que contm as tabelas. RECYCLE Especifica que o banco de dados no excludo imediatamente do disco e colocado na Lixeira do Windows 95. Comentrios Utilize sempre DELETE DATABASE para excluir um banco de dados do disco. Ao contrrio de outros utilitrios de manipulao do sistema operacional, DELETE DATABASE remove referncias do banco de dados das tabelas do banco de dados. Caso SET SAFETY esteja ativado (ON), o Visual FoxPro perguntar se voc gostaria de excluir o banco de dados especificado. Caso SET SAFETY esteja desativado (OFF), o banco de dados ser excludo automaticamente do disco. DELETE DATABASE, exemplo do comando Este exemplo cria um banco de dados denominado people. Uma tabela denominada friends criada e automaticamente adicionada ao banco de dados. DISPLAY TABLES utilizado para exibir as tabelas no banco de dados e DISPLAY DATABASES utilizado para exibir as informaes sobre as tabelas no banco de dados. DELETE DATABASE utilizado com a opo DELETETABLES para remover o banco de dados e sua tabela friends do disco. CLOSE ALL CREATE DATABASE people
[Pg.: 133]

CREATE TABLE friends (FirstName C(20), LastName C(20)) CLEAR DISPLAY TABLES && Exibe as tabelas no banco de dados DISPLAY DATABASES && Exibe as informaes da tabela CLOSE ALL DELETE DATABASE people DELETETABLES DELETE FILE, comando Exclui um arquivo de um disco. Sintaxe DELETE FILE [NomeArquivo | ?] [RECYCLE] Argumentos NomeArquivo Especifica o arquivo a ser excludo. NomeArquivo pode conter caracteres curingas como * e ?. Por exemplo, para excluir os arquivos de backup com a extenso .BAK no diretrio ou pasta atual, emita DELETE FILE *.BAK. ? Exibe a caixa de dilogo Excluir do qual voc pode escolher um arquivo a ser excludo. RECYCLE Especifica que o banco de dados no excludo imediatamente do disco e colocado na Lixeira do Windows 95. Cuidado Qualquer arquivo excludo com este comando no pode ser recuperado. Mesmo se SET SAFETY estiver ativado (ON), voc no ser avisado antes de o arquivo ser excludo. Comentrios O arquivo que voc deseja excluir no pode estar aberto quando DELETE FILE emitido. O nome do arquivo deve incluir um caminho se estiver em uma unidade de disco ou volume diferente, ou em um diretrio ou pasta diferente do padro e a extenso do nome do arquivo deve estar includa. O nome do arquivo no pode conter curingas. Antes de excluir uma tabela de um banco de dados, emita REMOVE TABLE com o nome da tabela para remover as referncias tabela do banco de dados. Se voc excluir uma tabela que tenha um arquivo memo .FPT associado, certifique-se de excluir o arquivo memo. DELETE FILE, exemplo do comando No exemplo a seguir, a estrutura de CUSTOMER.DBF e todos os registros no qual o pas EUA so copiados para uma tabela denominada backup. Os dados em backup so, em seguida, copiados para um arquivo de texto, temp, que aberto e, em seguida, excludo quando fechado. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer COPY STRUCTURE TO backup USE backup APPEND FROM customer FOR country = 'EUA' COPY TO temp TYPE DELIMITED WAIT WINDOW 'Pressione Esc para fechar e apaga temp.txt' NOWAIT MODIFY FILE temp.txt NOEDIT DELETE FILE temp.txt
[Pg.: 134]

? IIF(FILE('temp.txt'),'Arquivo no excludo','Arquivo excludo') USE DELETE FILE backup.dbf DELETE TRIGGER, comando Remove um disparador de excluso, insero ou atualizao de uma tabela do banco de dados atual. Sintaxe DELETE TRIGGER ON NomeTabela FOR DELETE | INSERT | UPDATE Argumentos NomeTabela Especifica o nome da tabela da qual o disparador est excludo. FOR DELETE | INSERT | UPDATE Especifica o disparador a ser excludo. Inclui FOR DELETE para remover o Disparador de excluso, FOR INSERT para remover o Disparador de insero e FOR UPDATE para remover o Disparador de atualizao. Comentrios Utilize CREATE TRIGGER para criar um disparador de excluso, insero ou atualizao de uma tabela. DELETE TRIGGER, exemplo do comando Os exemplos a seguir criam um Disparador de atualizao que impede que valores maiores que 50 sejam digitados no campo maxordamt na tabela customer. DISPLAY DATABASE utilizado para exibir o Disparador de atualizao. Em seguida, DELETE TRIGGER utilizado para remover o Disparador de atualizao e DISPLAY DATABASE emitido novamente para verificar a remoo do Disparador de atualizao. CLOSE DATABASES OPEN DATABASE SYS(2004) + 'samples\data\testdata' && Abre o banco de dados do testdata USE CUSTOMER && Abre a tabela Customer CREATE TRIGGER ON customer FOR UPDATE AS maxordamt <= 50 CLEAR DISPLAY DATABASE DELETE TRIGGER ON customer FOR UPDATE DISPLAY DATABASE DELETE, comando Marca registros para excluso. Sintaxe DELETE [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [IN nreaTrabalho | cAliasTabela] [NOOPTIMIZE] Argumentos Escopo Especifica um intervalo de registros a serem marcados para excluso. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST.

[Pg.: 135]

Para obter maiores informaes sobre as clusulas de escopo, consulte o tpico Clusulas de escopo. O escopo padro para DELETE o registro atual (NEXT 1). FOR lExpresso1 Especifica uma condio atravs da qual somente os registros que satisfazem condio lgica lExpresso1 so marcados para excluso. Rushmore otimizar uma consulta especificada com DELETE ... FOR se lExpresso1 for uma expresso otimizvel e a tabela for indexada em DELETED( ). Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR. Para obter informaes sobre expresses otimizveis Rushmore, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore, no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. WHILE lExpresso2 Especifica uma condio atravs da qual os registros sero marcados para serem excludos quando lExpresso2 resultar em verdadeiro (.T.). IN nreaTrabalho Especifica a rea de trabalho da tabela onde os registros so marcados para excluso. IN cAliasTabela Especifica o alias da tabela onde os registros so marcados para excluso. Se voc omitir nreaTrabalho e cAliasTabela, os registros sero marcados para excluso na tabela da rea de trabalho atualmente selecionada. NOOPTIMIZE Desativa a otimizao de Rushmore de DELETE. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore, no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. Comentrios Os registros marcados para excluso no so removidos fisicamente da tabela at que PACK seja emitido. Os registros marcados para excluso podem ser reintegrados (desmarcados) com RECALL. DELETE, exemplo do comando O exemplo a seguir abre a tabela customer no banco de dados testdata. DELETE utilizado para marcar todos os registros para excluso onde o campo country contm EUA. Todos os registros marcados para excluso so exibidos. RECALL ALL utilizado para desmarcar todos os registros marcados para excluso. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer DELETE FOR country = 'EUA' && Marca para excluso CLEAR LIST FIELDS company, country FOR DELETED( ) && Lista os registros marcados RECALL ALL && Desmarca todos os registros marcados para excluso DELETED( ), funo Retorna um valor lgico que indica se o registro atual est marcado para excluso. Sintaxe DELETED([cAliasTabela | nreaTrabalho]) Tipos de retorno: Argumentos cAliasTabela | nreaTrabalho Voc pode verificar o status do registro atual de uma tabela aberta em outra rea de trabalho especificando o nmero da rea de trabalho com nreaTrabalho ou o alias da tabela com
[Pg.: 136]

Lgico

cAliasTabela. Se uma tabela no estiver aberta na rea de trabalho especificada, DELETED( ) retornar falso. Se voc omitir cAliasTabela e nreaTrabalho, o status de excluso ser retornado para o registro atual da rea de trabalho atual. Comentrios Se o registro estiver marcado para excluso, DELETED( ) retornar verdadeiro (.T.); caso contrrio, DELETED( ) retornar falso (.F.). possvel marcar registros para excluso com DELETE e DELETE - SQL e desmarc-los com RECALL. Rushmore otimiza consultas que testam o status de excluso dos registros se a tabela estiver indexada por DELETED( ). Para obter informaes sobre como utilizar a otimizao de Rushmore para consultas, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore, no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. DELETED( ), exemplo da funo O exemplo a seguir abre a tabela customer no banco de dados testdata. DELETE - SQL utilizado para marcar todos os registros a serem excludos, onde o campo country que contm USA. DELETED( ) utilizado para exibir todos os registros marcados para excluso. RECALL ALL utilizado para desmarcar todos os registros a serem excludos. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer DELETE FROM customer WHERE country = 'USA' && Marca para excluso CLEAR LIST FIELDS company, country FOR DELETED( ) && Lista os registros marcados RECALL ALL && Desmarca todos os registros a serem excludos DIFFERENCE( ), funo Retorna um nmero inteiro de 0 a 4 que representa a diferena fontica relativa entre duas expresses de caracteres. Sintaxe DIFFERENCE(cExpresso1, cExpresso2) Tipos de retorno: Argumentos cExpresso1, cExpresso2 DIFFERENCE( ). Especifica as expresses de caracteres que so comparadas por Comentrios DIFFERENCE( ) til para procurar tabelas quando a ortografia exata de uma entrada no conhecida. Quanto mais parecida for a ortografia de duas expresses, maior ser o nmero retornado por DIFFERENCE( ). Se a ortografia das expresses de caracteres for muito semelhante, DIFFERENCE( ) retornar 4. Para duas expresses de caracteres com poucas semelhanas fonticas, DIFFERENCE( ) retornar 0. DIFFERENCE( ), exemplo da funo Numrico

[Pg.: 137]

STORE 'Smith' TO gcName1 STORE 'Smythe' TO gcName2 STORE 'Smittie' TO gcName3 STORE '' TO gcName4 CLEAR ? DIFFERENCE(gcName1, gcName2) && Exibe 4 ? DIFFERENCE(gcName1, gcName3) && Exibe 4 ? DIFFERENCE(gcName1, gcName4) && Exibe 1 DIMENSION, comando Cria uma matriz uni ou bidimensional de variveis de memria. Sintaxe DIMENSION NomeMatriz1 (nLinhas1 [, nColunas1]) [, NomeMatriz2 (nLinhas2 [, nColunas2])] ... Argumentos NomeMatriz1 Especifica o nome da matriz. Podem ser criadas vrias matrizes com um nico comando DIMENSION, incluindo nomes de matrizes adicionais (NomeMatriz2, NomeMatriz3 etc.). nLinhas1 [, nColunas1] Especifica o tamanho da matriz a ser criada. Se voc incluir apenas nLinhas1, ser criada uma matriz unidimensional. Esse tipo de matriz apresenta uma coluna e nLinhas1 linhas. Por exemplo, o comando a seguir cria uma matriz unidimensional denominada gaArrayOne que contm uma coluna e dez linhas. DIMENSION gaArrayOne(10) Para criar uma matriz bidimensional, inclua os argumentos nLinhas1 e nColunas1. nLinhas1 especifica o nmero de linhas da matriz e nColunas1 especifica o nmero de colunas. O exemplo a seguir cria uma matriz bidimensional denominada gaArrayTwo que contm duas linhas e quatro colunas: DIMENSION gaArrayTwo(2,4) preciso especificar um tamanho para cada matriz criada com DIMENSION. No exemplo a seguir, so criadas trs matrizes: gaArrayOne e gaArrayTwo, a partir dos exemplos anteriores, e uma terceira matriz denominada gaArrayThree: DIMENSION gaArrayOne(10), gaArrayTwo(2,4), gaArrayThree(3,3) Voc pode colocar as expresses em DIMENSION ou DECLARE entre colchetes ou parnteses. Por exemplo, os dois comandos a seguir criam matrizes idnticas: DIMENSION gaArrayOne(10), gaArrayTwo[2,4], gaArrayThree(3,3) DIMENSION gaArrayOne[10], gaArrayTwo(2,4), gaArrayThree[3,3] Comentrios DIMENSION idntico, em operao e sintaxe, a DECLARE. Elementos da matrizO tamanho de uma matriz determina a quantidade de elementos que ela pode conter. Cada elemento de uma matriz pode armazenar um nico item de informao. Para determinar quantos elementos uma matriz contm e a quantidade de informaes que pode armazenar, multiplique seu nmero de linhas (nLinhas1) pelo seu nmero de colunas (nColunas1). Os elementos de uma matriz podem conter qualquer tipo de dados e so inicializados com o valor falso (.F.) na primeira vez que a matriz criada. Voc pode inicializar todos os elementos de uma matriz com o mesmo valor utilizando STORE se SET COMPATIBLE estiver definido como FOXPLUS ou OFF (a definio padro). Por exemplo:
[Pg.: 138]

DIMENSION gaArray(10,3) STORE 'initial' TO gaArray ndices de matrizPara se fazer referncia aos elementos de uma matriz, empregam-se os respectivos ndices. Cada elemento de matriz possui um ndice numrico exclusivo que o identifica. Se a matriz for unidimensional, o ndice de um elemento ser igual ao seu nmero de linha. Por exemplo, o ndice correspondente ao elemento da terceira linha de uma matriz unidimensional 3. Para se fazer referncia aos elementos de matrizes bidimensionais, utilizam-se dois ndices. O primeiro indica a localizao da linha do elemento e o segundo, a localizao da coluna. Por exemplo, os ndices correspondentes ao elemento da terceira linha e quarta coluna de uma matriz bidimensional so 3,4. Para obter uma discusso mais ampla sobre os ndices de elementos de matriz, consulte ASUBSCRIPT( ). O(s) ndice(s) do primeiro elemento de uma matriz sempre comeam com 1. Caso uma matriz seja bidimensional, ela tambm poder ser referenciada por um nico ndice. Utilize AELEMENT( ) para retornar esse ndice nico a partir de um par de ndices de linha e de coluna de uma matriz. Utilize ASUBSCRIPT( ) para retornar os ndices de linha e de coluna a partir de um nico ndice. Redimensionando matrizesPara alterar o tamanho e as dimenses de uma matriz, emita o comando DIMENSION novamente. O tamanho de uma matriz pode ser aumentado ou diminudo, matrizes unidimensionais podem ser convertidas em duas dimenses e matrizes bidimensionais podem ser reduzidas a uma dimenso. Se o nmero de elementos de uma matriz for aumentado, o contedo de todos os elementos da matriz original ser copiado para a matriz recm-redimensionada. Os elementos adicionais so inicializados com o valor falso (.F.). Exemplo de redimensionamento de matrizes O Exemplo 1 mostra o resultado do aumento do tamanho de uma matriz unidimensional. (Observe que se voc digitar esses comandos na janela Comando, a matriz ser pblica (PUBLIC), mas se copi-los para um programa e execut-lo, a matriz ser privada (PRIVATE)). Se o nmero de elementos em uma matriz estiver reduzido, os elementos e qualquer dos dados contidos neles sero excludos. Quando uma matriz unidimensional remanejada para duas dimenses, o contedo da matriz original copiado para a nova matriz em uma ordem elemento para linha. No Exemplo 2, uma matriz unidimensional convertida em uma matriz bidimensional. O contedo dos elementos da matriz unidimensional copiado para a primeira linha da nova matriz, seguido da segundo linha e, assim, sucessivamente. Os elementos adicionais so inicializados com o valor falso (.F.). Quando uma matriz bidimensional convertida em uma dimenso, seu contedo copiado para a nova matriz em uma ordem linha-para-elemento. O primeiro elemento da primeira linha torna-se o primeiro elemento da matriz unidimensional, o segundo elemento da primeira linha torna-se o segundo elemento e, assim, sucessivamente. Utilize ADEL( ) ou AINS( ) para excluir ou inserir elementos de matriz, linhas e colunas. Utilize APPEND FROM ARRAY, COPY TO ARRAY, SCATTER e GATHER para transferir dados entre registros e matrizes da tabela. No Exemplo 3, uma matriz bidimensional criada e carregada com os dados. Os elementos de matriz e os dados contidos neles so exibidos. * Exemplo 1 DIMENSION marray(2) STORE 'A' TO marray(1) STORE 'B' TO marray(2) CLEAR DISPLAY MEMORY LIKE marray DIMENSION marray(4) DISPLAY MEMORY LIKE marray WAIT WINDOW * Exemplo 2 DIMENSION marrayone(4) STORE 'E' TO marrayone(1)
[Pg.: 139]

STORE 'F' TO marrayone(2) STORE 'G' TO marrayone(3) STORE 'H' TO marrayone(4) CLEAR DISPLAY MEMORY LIKE marrayone DIMENSION marrayone(2,3) DISPLAY MEMORY LIKE marrayone WAIT WINDOW * Exemplo 3 DIMENSION sample(2,3) STORE 'Goodbye' TO sample(1,2) STORE 'Hello' TO sample(2,2) STORE 99 TO sample(6) STORE .T. TO sample(1) CLEAR DISPLAY MEMORY LIKE sample DIR ou DIRECTORY, comando Exibe informaes sobre arquivos em um diretrio ou pasta. Sintaxe DIR | DIRECTORY [ON Unidade] [[LIKE] [Caminho] [EstruturaArquivo]] [TO PRINTER [PROMPT] | TO FILE NomeArquivo] Argumentos ON Unidade Especifica o nome da unidade de disco ou do volume onde est localizado o diretrio ou pasta. [LIKE] [Caminho] [EstruturaArquivo] Especifica o caminho para o diretrio ou pasta que contm os arquivos. O caminho poder incluir o nome da unidade de disco ou do volume se voc omitir ON Unidade. Inclua EstruturaArquivo para exibir informaes sobre tipos de arquivo que no as tabelas. EstruturaArquivo uma estrutura de especificao de arquivo que aceita curingas. Por exemplo, para listar todos os arquivos de programa no diretrio ou pasta atual, emita o comando a seguir: DIR *.PRG No Visual FoxPro, voc pode emitir o comando a seguir para listar todos os arquivos sem as extenses: DIR *. TO PRINTER [PROMPT] Envia a sada de DIRECTORY para uma impressora. No Visual FoxPro, voc pode incluir a clusula PROMPT opcional para exibir uma caixa de dilogo de impresso antes do incio da impresso. Nessa caixa de dilogo, voc pode ajustar as definies da impressora, incluindo o nmero de cpias e de pginas a serem impressas. As definies da impressora que podem ser ajustadas dependem do driver de impressora instalado no momento. Coloque a palavra-chave PROMPT logo aps TO PRINTER. TO FILE NomeArquivo Envia a sada de DIR para o arquivo especificado com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado (ON), ser exibida uma pergunta para saber se voc deseja ou no sobrescrever o arquivo.. Comentrios Use DIR para exibir informaes sobre arquivos.
[Pg.: 140]

DIR sem a clusula LIKE ou uma estrutura exibe o seguinte: Nomes de todas as tabelas do diretrio ou pasta. O nmero de registros em cada tabela. A data em que cada tabela foi atualizada pela ltima vez. O tamanho de cada tabela em bytes (as tabelas no formato FoxBASE original so assim registradas). Se cada tabela faz parte de um banco de dados. O tamanho total em bytes ocupado pelas tabelas no disco (no incluindo arquivos de memo .FPT associados). O nmero de tabelas exibidas. O nmero total de bytes restantes no disco.

As informaes da tabela para a unidade de disco padro ou volume e o diretrio ou pasta so exibidas, a menos que sejam especificadas de forma diferente com Unidade, Caminho ou ambos. DIR ou DIRECTORY, exemplo de comando CLEAR DIR && Exibe as tabelas no diretrio ou pasta atual DIR *.CDX && Exibe os arquivos de ndice no diretrio ou pasta atual DIR A*.DBF && Exibe as tabelas que comeam com A DIR *.* && Exibe todos os arquivos, incluindo aqueles sem extenses DIRECTORY( ) , funo Retorna verdadeiro (.T.) se o diretrio especificado for encontrado em disco. Sintaxe DIRECTORY(cNomeDiretrio) Tipos de retorno: Argumentos cNomeDiretrio Especifica o nome do diretrio a ser localizado. Se voc no incluir um caminho absoluto para o diretrio especificado, o Visual FoxPro ir procurar aquele em relao ao diretrio padro do Visual FoxPro. Comentrios O diretrio padro do Visual FoxPro especificado com SET DEFAULT. DISKSPACE( ), funo Retorna o nmero de bytes disponvel na unidade ou volume de disco padres ou especificados. Sintaxe DISKSPACE([cNomeVolume]) Tipos de retorno: Argumentos Numrico Lgico

[Pg.: 141]

cNomeVolume Especifica o nome da unidade de disco ou do volume para o qual o espao disponvel retornado. Se cNomeVolume for omitido, o espao disponvel ser retornado para o volume ou unidade de disco padro. Comentrios Esta funo til para determinar se h espao suficiente em disco para fazer cpias de reserva de arquivos ou executar comandos, como SORT, que precisam de espao adicional em disco para arquivos de trabalho temporrio. A unidade de disco ou o volume padro so especificados com SET DEFAULT. DISKSPACE( ) retorna -1 se houver um erro na leitura da unidade de disco ou volume. Em algumas redes, o valor retornado por DISKSPACE( ) pode no ser exato para grandes unidades de rede. DISKSPACE( ), exemplo de funo O exemplo a seguir utiliza DISKSPACE( ) para determinar se h espao suficiente em disco disponvel para executar uma classificao. *** Check DISKSPACE before sort *** CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer *** Get size of table header *** gnTableHead = HEADER( ) *** Calculate size of table *** gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1) IF DISKSPACE( ) > (gnFileSize * 3) WAIT WINDOW 'Espao suficiente em disco para classificao.' ELSE WAIT WINDOW 'Espao insuficiente em disco. A classificao no pode ser feita.' ENDIF DISPLAY DATABASE, comando Exibe informaes sobre bancos de dados ou campos atuais, conexes definidas, tabelas ou visualizaes do banco de dados atual. Sintaxe DISPLAY DATABASE [TO PRINTER [PROMPT] | TO FILE NomeArquivo] [NOCONSOLE] Argumentos TO PRINTER [PROMPT] Direciona a sada de DISPLAY DATABASE para uma impressora. No Visual FoxPro, voc pode incluir a clusula opcional PROMPT para exibir a caixa de dilogo Imprimir antes do incio da impresso. Coloque PROMPT logo depois de TO PRINTER. TO FILE NomeArquivo Direciona a sada de DISPLAY DATABASE para o arquivo especificado com NomeArquivo. Caso o arquivo j exista e SET SAFETY esteja ativado (ON), o Visual FoxPro exibir um aviso perguntando se voc deseja sobrescrever o arquivo.

[Pg.: 142]

NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usurio. Comentrios Utilize DBGETPROP( ) para retornar maiores informaes sobre o banco de dados atual. DISPLAY DATABASE, exemplo de comando O exemplo a seguir cria um banco de dados denominado people. Uma tabela denominada friends criada, sendo automaticamente acrescentada ao banco de dados. DISPLAY TABLES utilizado para exibir as tabelas do banco de dados e DISPLAY DATABASES usado para exibir informaes sobre essas tabelas. CREATE DATABASE people CREATE TABLE friends (FirstName C(20), LastName C(20)) CLEAR DISPLAY TABLES && Exibe as tabelas do banco de dados DISPLAY DATABASES && Exibe informaes sobre as tabelas DISPLAY FILES, comando Exibe informaes sobre arquivos. Sintaxe DISPLAY FILES [ON Unidade] [LIKE EstruturaArquivo] [TO PRINTER [PROMPT] | TO FILE NomeArquivo] Argumentos ON Unidade Especifica a unidade ou volume onde residem os arquivos. LIKE EstruturaArquivo Especifica uma condio que faz com que o Visual FoxPro exiba informaes apenas sobre arquivos com padro correspondentes da estrutura EstruturaArquivo. O padro da estrutura pode conter curingas como ? e *. TO PRINTER [PROMPT] Inclua TO PRINTER para enviar a sada de DISPLAY FILES para a impressora. No Visual FoxPro, voc pode incluir a clusula opcional PROMPT para exibir uma caixa de dilogo antes do incio da impresso. Nela, voc pode ajustar as definies da impressora, incluindo o nmero de cpias e de pginas a serem impressas. As definies da impressora que podem ser ajustadas dependem do driver de impressora instalado atualmente. Coloque a palavra-chave PROMPT logo aps TO PRINTER. TO FILE NomeArquivo Inclua TO FILE NomeArquivo para enviar a sada de DISPLAY FILES para o arquivo especificado com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado (ON), ser exibida uma pergunta para saber se voc deseja ou no substitu-lo. Comentrios Utilize DISPLAY FILES para exibir informaes sobre arquivos em um disco. Voc pode exibir informaes sobre todos os arquivos de uma determinada unidade de disco, volume, diretrio ou pasta, ou apenas arquivos que correspondam a um padro de estrutura que contenha curingas como ? e *. A emisso de DISPLAY FILES sem qualquer argumento exibe informaes sobre as tabelas do diretrio atual. As informaes exibidas incluem : O nome da tabela. O nmero de registros na tabela. Data e hora da ltima atualizao da tabela. O tamanho de cada tabela em bytes.
[Pg.: 143]

Se cada tabela faz parte de um banco de dados. DISPLAY FILES, exemplo de comando

O exemplo a seguir exibe os nomes dos bancos de dados do diretrio EXEMPLOS\DADOS. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') CLEAR DISPLAY FILES LIKE *.DBC DISPLAY MEMORY, comando Exibe o contedo atual das matrizes e variveis de memria. Sintaxe DISPLAY MEMORY [LIKE EstruturaArquivo] [TO PRINTER [PROMPT] | TO FILE NomeArquivo] [NOCONSOLE] Argumentos LIKE EstruturaArquivo Exibe informaes sobre variveis e matrizes que correspondem a EstruturaArquivo do padro de estrutura. Se voc incluir LIKE EstruturaArquivo, o Visual FoxPro exibir apenas o contedo das matrizes e variveis de memria que correspondam a EstruturaArquivo. EstruturaArquivo aceita curingas como ? e *. Por exemplo, para exibir todas as variveis de memria que comecem com a letra A, emita: DISPLAY MEMORY LIKE A* TO PRINTER [PROMPT] Direciona a sada de DISPLAY MEMORY para a impressora. Voc pode incluir a clusula PROMPT opcional para exibir uma caixa de dilogo antes do incio da impresso. Nessa caixa de dilogo, voc pode ajustar as definies da impressora, incluindo o nmero de cpias e de pginas a serem impressas. As definies da impressora a serem ajustadas dependem do driver de impressora atualmente instalado. Coloque a palavra-chave PROMPT logo aps TO PRINTER. TO FILE NomeArquivo Direciona a sada de DISPLAY MEMORY para o arquivo especificado com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado, ser exibida uma pergunta para saber se voc deseja ou no sobrescrever o arquivo. NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela definida pelo usurio que est ativa. Comentrios DISPLAY MEMORY exibe o nome, tipo, contedo e status de todas as matrizes de variveis e variveis definidas atualmente. Alm disso, exibe o nmero de variveis definidas, o nmero de bytes utilizados e o nmero de variveis adicionais disponveis. Observe que o nmero de bytes utilizados representa a memria utilizada por variveis do tipo caractere. As variveis do tipo de caractere so o nico tipo de variveis que precisam de memria adicional, alm daquela alocada pela contagem de variveis especificada com o item de configurao MVCOUNT. Tambm so exibidas informaes sobre variveis do sistema, menus, barras de menus, ttulos de menus e janelas.

[Pg.: 144]

DISPLAY MEMORY, exemplo do comando No exemplo a seguir, muitas variveis so criadas e atribudas a valores. DISPLAY MEMORY exibe primeiro todas as variveis que comeam com sam e, em seguida, exibe todas as variveis que contm cinco letras e terminam com exit. STORE 'Adeus' TO sample1 STORE 'Al' TO sample2 STORE .T. TO texit STORE .F. TO mexit CLEAR DISPLAY MEMORY LIKE sam* DISPLAY MEMORY LIKE ?exit

DISPLAY STATUS, comando Exibe o status do ambiente do Visual FoxPro. Sintaxe DISPLAY STATUS [TO PRINTER [PROMPT] | TO FILE NomeArquivo] [NOCONSOLE] Argumentos TO PRINTER [PROMPT] Direciona a sada de DISPLAY STATUS para uma impressora. Voc pode incluir a clusula PROMPT opcional para exibir uma caixa de dilogo de impresso antes do incio da impresso. Nessa caixa de dilogo, voc pode ajustar as definies da impressora, incluindo o nmero de cpias e de pginas a serem impressas. As definies da impressora que podem ser ajustadas dependem do driver de impressora atualmente instalado. Coloque a palavra-chave PROMPT logo aps TO PRINTER. TO FILE NomeArquivo Direciona a sada de DISPLAY STATUS para o arquivo especificado com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado, ser exibida uma pergunta para saber se voc deseja ou no sobrescrever o arquivo. NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usurio. Comentrios Esse formulrio de DISPLAY lista informaes sobre o ambiente atual do Visual FoxPro. As categorias de informaes e as informaes sobre cada categoria so as seguintes. Informaes sobre arquivos de ndice e tabelas: Tabelas abertas Arquivos memo abertos Aliases de tabela Pginas de cdigo de tabela Relacionamentos de tabela ndices ativos Chaves de arquivos de ndice A marca ou arquivo de ndice controlador Arquivos compostos estruturais abertos
[Pg.: 145]

Marcas de ndice compostas abertas O status do atributo compartilhado de cada tabela aberta Os registros bloqueados atualmente em cada tabela A definio EXCLUSIVE de uso A definio LOCK A definio MULTILOCKS O valor SET REFRESH O valor SET REPROCESS

Informaes sobre o arquivo de baixo nvel aberto: Arquivos de baixo nvel abertos O nmero do identificador de arquivo para cada arquivo de baixo nvel A posio do ponteiro de arquivo para cada arquivo de baixo nvel Atributos de leitura e gravao para cada arquivo de baixo nvel

Informaes adicionais sobre o ambiente do Visual FoxPro: O arquivo de procedimentos em uso O tipo de processador O caminho do Visual FoxPro O diretrio ou pasta padro do Visual FoxPro O destino da impresso A definio das margens A rea de trabalho atual Definies do comando SET Mdulos binrios carregados atualmente Informaes de DDE no Visual FoxPro Pgina de cdigo atual Seqncia de ordenao atual Pgina de cdigo do compilador Formato de data atual Combinao de teclas da macro de teclado Modo como os parmetros UDF so passados Opes de MesclagemTexto Funes registradas da biblioteca compartilhada, como aquelas das bibliotecas de vnculo dinmico (DLLs, Dynamic-Link Libraries) do Windows ou das bibliotecas Apple Shared Library Manager (ASLM) ou Code Fragment Manager (CFM) do Macintosh. DISPLAY STRUCTURE, comando Exibe a estrutura de um arquivo de tabela. Sintaxe DISPLAY STRUCTURE [IN nreaTrabalho| cAliasTabela] [TO PRINTER [PROMPT] | TO FILE NomeArquivo] [NOCONSOLE] Argumentos IN nreaTrabalho| cAliasTabela Exibe a estrutura da tabela em uma rea de trabalho diferente das reas de trabalho atuais. nreaTrabalho especifica o nmero da rea de trabalho e cAliasTabela, o alias da tabela. TO PRINTER [PROMPT] Direciona a sada de DISPLAY STRUCTURE para a impressora.

[Pg.: 146]

Voc pode incluir a clusula PROMPT opcional para exibir uma caixa de dilogo antes do incio da impresso. Nessa caixa de dilogo, voc pode ajustar as definies da impressora, incluindo o nmero de cpias e de pginas a serem impressas. As definies da impressora que podem ser ajustadas dependem do driver de impressora instalado atualmente. Coloque a palavra-chave PROMPT logo aps TO PRINTER. TO FILE NomeArquivo Direciona a sada de DISPLAY STRUCTURE para o arquivo especificado com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado, ser exibida uma pergunta para saber se voc deseja ou no sobrescrever o arquivo. NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usurio. Comentrios Utilize DISPLAY STRUCTURE para exibir a estrutura dos campos de uma tabela. O nome de cada campo da tabela exibido junto com seu tipo e comprimento. Se um campo for do tipo Numrico, Duplo ou Flutuante, ser exibido o nmero de casas decimais do campo. Tambm ser exibido o valor nulo aceito em cada campo. DISPLAY STRUCTURE tambm exibe o nmero atual de registros na tabela e a data de sua ltima atualizao. Se a tabela tiver um campo Memo associado, ser exibido o tamanho de bloco do campo Memo. O comprimento total de todos os campos tambm ser exibido, assim como a pgina de cdigo da tabela. A tabela pode ter um ndice composto estrutural que aberto com a tabela. Se uma marca desse ndice tiver o mesmo nome que um campo da tabela, a ordem da marca (ascendente ou descendente) e a seqncia de ordenao da marca sero exibidas prximas ao nome do campo. Se SET FIELDS for utilizado para limitar o acesso aos campos da tabela, um colchete (>) ser exibido ao lado dos nomes dos campos que podem ser acessados. DISPLAY STRUCTURE, exemplo do comando No exemplo a seguir, a tabela customer no banco de dados testdata aberta. DISPLAY STRUCTURE utilizado para exibir a estrutura da tabela. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer CLEAR DISPLAY STRUCTURE DISPLAY TABLES, comando Exibe nomes e informaes sobre todas as tabelas contidas no banco de dados atual. Sintaxe DISPLAY TABLES [TO PRINTER [PROMPT] | TO FILE NomeArquivo] [NOCONSOLE] Argumentos TO PRINTER [PROMPT] Direciona a sada de DISPLAY TABLES para uma impressora. Voc pode incluir PROMPT para exibir a caixa de dilogo Imprimir antes do incio da impresso. Coloque a palavra-chave PROMPT logo aps TO PRINTER.

[Pg.: 147]

TO FILE NomeArquivo Direciona a sada de DISPLAY TABLES para o arquivo em disco especificado com NomeArquivo. Caso o arquivo j exista e SET SAFETY esteja ativado (ON), o Visual FoxPro exibir um aviso perguntando se voc deseja sobrescrever o arquivo. NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usurio. Comentrios As informaes retornadas formam um subconjunto de informaes exibidas com DISPLAY STATUS. No entanto, as informaes exibidas com DISPLAY TABLES contm apenas informaes relacionadas a tabelas, exibindo as informaes, independente de as tabelas estarem ou no abertas. As seguintes informaes so exibidas: Nome da tabela Caminho da tabela

DISPLAY TABLES, exemplo do comando O exemplo a seguir abre a tabela customer no banco de dados testdata. DISPLAY TABLES utilizado para exibir informaes sobre as tabelas do banco de dados. CLOSE DATABASES SET PATH TO (SYS(2004) + 'samples\data\') && Define o caminho para o banco de dados OPEN DATABASE testdata && Abre o banco de dados testdata CLEAR DISPLAY TABLES && Exibe informaes sobre as tabelas no banco de dados DISPLAY, comando Exibe informaes sobre a tabela atual na janela principal do Visual FoxPro ou em uma janela definida pelo usurio. Sintaxe DISPLAY [[FIELDS] ListaCampos] [Escopo] [FOR lExpresso1] [WHILE Expresso2] [OFF] [NOCONSOLE] [NOOPTIMIZE] [TO PRINTER [PROMPT] | TO FILE NomeArquivo] Argumentos FIELDS ListaCampos Especifica os campos a serem exibidos. Se voc omitir FIELDS ListaCampos, todos os campos da tabela sero exibidos, como padro. O contedo do campo Memo no exibido, a menos que o nome deste campo esteja explicitamente includo na lista de campos. Sua largura apresentada determinada por SET MEMOWIDTH Escopo Especifica o intervalo de registros a serem exibidos. Apenas os registros dentro do intervalo sero exibidos. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Os comandos que incluem Escopo operam apenas na tabela da rea de trabalho ativa. Para obter maiores informaes sobre as clusulas de escopo, consulte o tpico Clusulas de escopo.
[Pg.: 148]

O escopo-padro para DISPLAY o registro atual (NEXT 1). FOR lExpresso1 Especifica que apenas os registros que satisfazem a condio lgica lExpresso1 sero exibidos. Isso permite que voc extraia os registros no desejados. Rushmore otimiza consultas criadas com DISPLAY ... FOR se lExpresso1 for uma expresso otimizvel. Para obter o melhor desempenho, utilize uma expresso otimizvel na clusula FOR. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor. WHILE lExpresso2 Especifica uma condio atravs da qual os registros sero exibidos quando a expresso lgica lExpresso2 resultar em verdadeiro (.T.). OFF Suprime a exibio dos nmeros de registro. Se voc omitir OFF, o nmero de registro ser exibido antes de cada registro. NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usurio. NOOPTIMIZE Desativa a otimizao Rushmore de DISPLAY. Para maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. TO PRINTER [PROMPT] Envia a sada de DISPLAY para a impressora No Visual FoxPro, , voc pode incluir a clusula PROMPT opcional para exibir uma caixa de dilogo antes do incio da impresso. Nela, voc pode ajustar as definies da impressora, incluindo o nmero de cpias e de pginas a serem impressas. As definies da impressora que podem ser ajustadas dependem do driver de impressora instalado no momento. Coloque PROMPT logo aps TO PRINTER. TO FILE NomeArquivo Envia a sada de DISPLAY para o arquivo especificado com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado (ON), ser exibida uma pergunta para saber se voc deseja ou no sobrescrever o arquivo. Comentrios DISPLAY exibe o contedo dos registros e os resultados de expresses para a tabela atual. Se houver mais informaes do que podem ser exibidas na janela, a primeira tela de informaes ser exibida e o Visual FoxPro, colocado em pausa. Pressione qualquer tecla ou clique sobre qualquer local para ver a prxima tela de informaes. DISPLAY semelhante a LIST, com exceo de que LIST exibe as mesmas informaes em um fluxo contnuo sem ser colocado em pausa. DISPLAY tambm pode ser utilizado para exibir os resultados de expresses, que podem consistir em combinaes de literais, variveis de memria, elementos de matriz, campos e campos Memo. Os nomes de campos e as expresses sero exibidas se SET HEADINGS estiver ativado (ON). DISPLAY, exemplo de comando O exemplo a seguir abre a tabela customer do banco de dados testdata. O contedo do primeiro registro exibido. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer CLEAR DISPLAY FIELD cust_id, company, contact OFF NEXT 10

[Pg.: 149]

DMY( ), funo Retorna uma expresso de caractere no formato dia-ms-ano(por exemplo, 31 Maio 1996) a partir de uma expresso de data ou data e hora. O nome do ms no abreviado. Sintaxe DMY(dExpresso | tExpresso) Tipos de retorno: Argumentos dExpresso Especifica a expresso de data a partir da qual a funo DMY( ) retorna uma seqncia de caracteres no formato dia-ms-ano. tExpresso Especifica a expresso de data e hora a partir da qual a funo DMY( ) retorna uma seqncia de caracteres no formato dia-ms-ano. Comentrios Se SET CENTURY estiver desativado (OFF), DMY( ) retornar uma seqncia de caracteres no formato dd ms yy ano (por exemplo, 16 Fevereiro 96). Se SET CENTURY estiver ativado (ON), o formato ser ddms-aaaa (por exemplo, 16 Fevereiro 1996). DMY( ), exemplo da funo CLEAR SET CENTURY OFF ? DMY(DATE( )) SET CENTURY ON ? DMY(DATE( )) DO CASE ... ENDCASE, comando Executa o primeiro conjunto de comandos cuja expresso condicional resulta em verdadeiro (.T.). Sintaxe DO CASE CASE lExpresso1 Comandos [CASE lExpresso2 Comandos ... CASE lExpressoN Comandos] [OTHERWISE Comandos] ENDCASE Argumentos CASE lExpresso1 Comandos ... Quando a primeira expresso CASE verdadeira (.T.) localizada, o conjunto de comandos que a acompanha executado. A execuo do conjunto de comandos continua at que a prxima clusula CASE ou ENDCASE seja localizada. A execuo retomada, ento, pelo primeiro comando seguinte a ENDCASE. Se uma expresso CASE for falsa (.F.), o conjunto de comandos seguintes a ela at a prxima clusula CASE ser ignorado.
[Pg.: 150]

Caractere

Apenas um conjunto de comandos executado. o primeiro conjunto de comandos cuja expresso CASE resulta em verdadeiro (.T.). Qualquer expresso CASE verdadeira (.T.) posterior ser ignorada. OTHERWISE Comandos Se todas as expresses CASE resultarem em falso (.F.), OTHERWISE determinar se um conjunto de comandos adicionais ser executado. Se voc incluir OTHERWISE, os comandos que acompanham OTHERWISE sero executados e a execuo saltar para o primeiro comando que acompanha ENDCASE. Se voc omitir OTHERWISE, a execuo saltar para o primeiro comando que acompanha ENDCASE. Comentrios DO CASE utilizado para executar um conjunto de comandos do Visual FoxPro, baseado no valor de uma expresso lgica. Quando DO CASE executado, as expresses lgicas sucessivas so avaliadas; os valores das expresses determinam o conjunto de comandos que ser executado. Podem ser colocados comentrios na mesma linha, aps DO CASE e ENDCASE. Os comentrios so ignorados durante a compilao e execuo do programa. DO CASE ... ENDCASE, exemplo de comando Neste exemplo, o Visual FoxPro avalia cada clusula CASE at que a varivel MONTH seja encontrada em uma das listas. A seqncia apropriada armazenada na varivel rpt_title e a estrutura DO CASE fechada. STORE CMONTH(DATE( )) TO month && O ms atual DO CASE && Comea o loop CASE INLIST(month,'Janeiro','Fevereiro','Maro') STORE 'Ganhos no primeiro trimestre' TO rpt_title CASE INLIST(month,'Abril','Maio','Junho') STORE 'Ganhos no segundo trimestre' TO rpt_title CASE INLIST(month,'Julho','Agosto','Setembro') STORE 'Ganhos no terceiro trimestre' TO rpt_title OTHERWISE STORE 'Ganhos no quarto trimestre' TO rpt_title ENDCASE && Finaliza o loop WAIT WINDOW rpt_title NOWAIT DO WHILE ... ENDDO, comando Executa um conjunto de comandos em um loop condicional. Sintaxe DO WHILE lExpresso Comandos [LOOP] [EXIT] ENDDO Argumentos lExpresso Especifica uma expresso lgica cujo valor determina se os comandos entre DO WHILE e ENDDO so executados. Se lExpresso for verdadeiro (.T.), o conjunto de comandos ser executado.

[Pg.: 151]

Comandos Especifica o conjunto de comandos do Visual FoxPro a ser executado se lExpresso for verdadeiro (.T.). LOOP Retorna o controle do programa diretamente para DO WHILE. LOOP pode ser colocado em qualquer lugar entre DO WHILE e ENDDO. EXIT Transfere o controle do programa de dentro do loop DO WHILE para o primeiro comando aps ENDDO. EXIT pode ser colocado em qualquer lugar entre DO WHILE e ENDDO. Comentrios Os comandos entre DO WHILE e ENDDO so executados enquanto a expresso lgica lExpresso permanecer como verdadeira (.T.). Cada instruo DO WHILE deve ter uma instruo ENDDO correspondente. Os comentrios podem ser colocados depois de DO WHILE e ENDDO na mesma linha. Os comentrios sero ignorados durante a compilao e execuo do programa. DO WHILE ... ENDDO, exemplo do comando No exemplo a seguir, o nmero de produtos em estoque com preos acima de $20 totalizado no loop DO WHILE at que seja encontrado o final do arquivo (EOF). O loop DO WHILE executado e o total exibido. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE products && Abre a tabela Products SET TALK OFF gnStockTot = 0 DO WHILE .T. && Inicia o loop IF EOF( ) EXIT ENDIF IF unit_price < 20 SKIP LOOP ENDIF gnStockTot = gnStockTot + in_stock SKIP ENDDO && Finaliza o loop CLEAR ? 'O total de itens em estoque so avaliados em aproximadamente 20 dlares:' ?? gnStockTot DO, comando Executa um procedimento ou programa do Visual FoxPro. Sintaxe DO NomePrograma1 | NomeProcedimento [IN NomePrograma2] [WITH ListaParmetros] Argumentos NomePrograma1 Especifica o nome do programa a ser executado.
[Pg.: 152]

Se voc no incluir uma extenso com o programa que executar, o Visual FoxPro procurar e executar essas verses do programa na seguinte ordem: .EXE (verso executvel) .APP (um aplicativo) .FXP (verso compilada) .PRG (programa)

Para utilizar DO, a fim de executar um programa de menu, um programa de formulrio ou uma consulta especfica, voc deve incluir as respectivas extenses (.MPR, .SPR ou .QPR). NomeProcedimento Especifica o nome de um procedimento a ser executado. O Visual FoxPro primeiro procura o procedimento no programa atualmente em execuo. Se o procedimento no estiver localizado nesse programa, o Visual FoxPro procurar o procedimento em um arquivo de procedimentos aberto com SET PROCEDURE. Voc pode incluir a clusula IN NomePrograma2, avisando ao Visual FoxPro para procurar o procedimento no arquivo que voc especificar. Os procedimentos mltiplos, dentro de uma verso executvel (.EXE) ou de um aplicativo (.APP), podem ter o mesmo nome. Quando voc utiliza DO para iniciar um procedimento em uma verso executvel ou em um aplicativo, o Visual FoxPro procura apenas o programa principal do aplicativo ou verso executvel do procedimento especificado. IN NomePrograma2 Executa um procedimento no arquivo de programa especificado com NomePrograma2. Quando o arquivo localizado, o procedimento executado. Se o arquivo de programa no puder ser localizado, ser exibida a mensagem Arquivo inexistente. Se o arquivo de programa for localizado mas o procedimento especificado no estiver nesse arquivo, ser exibida a mensagem Procedimento no localizado. WITH ListaParmetros Especifica os parmetros a serem passados ao programa ou procedimento. Os parmetros listados em ListaParmetros so expresses, variveis de memria, literais, campos ou funes definidas pelo usurio. Como padro, os parmetros so passados aos programas e procedimentos por referncia. Voc pode passar um parmetro por valor, colocando-o entre parnteses. Consulte SET UDFPARMS para obter informaes sobre como passar parmetros por valor ou referncia. O nmero mximo de parmetros, que podem ser passados a um programa ou procedimento 27. Para obter maiores informaes sobre como passar parmetros, consulte LPARAMETERS e PARAMETERS. Comentrios DO executa um procedimento ou programa do Visual FoxPro em um programa ou arquivo de procedimentos. O prprio arquivo de programa pode conter comandos DO adicionais, permitindo que voc aninhe os comandos DO em at 128 nveis. Quando voc utiliza DO para executar um programa, os comandos contidos no arquivo de programa so executados at que ocorra uma das opes a seguir: RETURN encontrado. CANCEL executado. Outro comando DO emitido. O fim do arquivo atingido. QUIT executado.

Quando a execuo do programa for concluda, o controle ser retornado para um dos locais a seguir: O programa de chamada. A janela Comando.
[Pg.: 153]

O sistema operacional.

Se voc escolher Executar no menu Programa e executar um programa em um diretrio em uma unidade de disco diferente do diretrio ou unidade de disco atual, o Visual FoxPro alterar automaticamente a unidade de disco e o diretrio padro para o diretrio e unidade de disco que contm o programa. DOW( ), funo Retorna um valor numrico de dia da semana a partir de uma expresso de Data ou DataHora. Sintaxe DOW(dExpresso | tExpresso [, nPrimeiroDiaSemana]) Tipos de retorno: Argumentos dExpresso Especifica a expresso de Data da qual DOW( ) retorna o nmero do dia. tExpresso Especifica a expresso de DataHora da qual DOW( ) retorna o nmero do dia. nPrimeiroDiaSemana Especifica o primeiro dia da semana. nPrimeiroDiaSemana pode ser um dos valores a seguir. NPrimeiroDiaSemanaDescrio 0 DOW( ) utiliza qualquer dia atualmente selecionado na caixa de listagem Comear semana em, exibida na guia Regional da caixa de dilogo Opes. 1 Domingo. Esse o padro quando nPrimeiroDiaSemana omitido, alm de ser o primeiro dia da semana utilizado nas verses anteriores do FoxPro. 2 Segunda-feira 3 Tera-feira 4 Quarta-feira 5 Quinta-feira 6 Sexta-feira 7 Sbado DOW( ), exemplo da funo STORE DATE( ) TO gdDayNum CLEAR ? DOW(gdDayNum) ? CDOW(gdDayNum) DROP TABLE, comando Remove uma tabela do banco de dados atual e a exclui do disco. Sintaxe DROP TABLE NomeTabela | NomeArquivo | ? [RECYCLE] Definies NomeTabela Especifica a tabela a ser removida do banco de dados atual e excluda do disco.
[Pg.: 154]

Numrico

NomeArquivo Especifica uma tabela livre a ser excluda do disco. ? Exibe a caixa de dilogo Remover da qual voc pode selecionar uma tabela a ser removida do banco de dados atual e excluda do disco. RECYCLE Especifica que a tabela no seja imediatamente excluda do disco e seja colocada na Lixeira do Windows 95. Comentrios Quando DROP TABLE emitido, todos os ndices principais, valores padro e regras de validao associados tabela tambm so removidos. DROP TABLE tambm afeta outras tabelas no banco de dados atual se as tabelas possurem regras ou relaes associadas tabela sendo removidas. As regras e relaes no estaro mais vlidas quando a tabela for removida do banco de dados. Qualquer tabela excluda com esse comando no pode ser recuperada. Mesmo que SET SAFETY esteja ativado (ON), voc no ser avisado quando a tabela for excluda. DTOC( ), funo Retorna uma data tipo Caractere a partir de uma expresso Data ou DataHora. Sintaxe DTOC(dExpresso | tExpresso [, 1]) Tipos de retorno: Argumentos dExpresso Especifica uma varivel de Data, elemento de matriz ou campo para os quais a funo DTOC( ) retorna uma data tipo Caractere. tExpresso Especifica uma varivel de DataHora, elemento de matriz ou campo para os quais a funo DTOC( ) retorna uma data do tipo Caractere. 1 Retorna a data em formato adequado para indexao. Isto til para manter os registros de tabelas em seqncia cronolgica. Por exemplo, para ordenar os registros da tabela em uma seqncia de entrada, voc pode emitir este comando: INDEX ON DTOC(gdInvDate, 1) + gnInvTime TAG Timeindx gdInvDate e gnInvTime so campos que contm a data e a hora em que os dados foram inseridos no registro. Comentrios DTOC( ) retorna uma seqncia de caracteres que corresponde expresso Data ou DataHora. O formato de data determinado por SET CENTURY e SET DATE. DTOC( ), exemplo da funo STORE CTOD('10/31/95') TO gdThisDate CLEAR ? DTOC(gdThisDate) STORE DTOC({10/31/95}+90) TO gcExpireDate ? 'Sua garantia de 90 dias expirou ', gcExpireDate ? DTOC({10/31/95},1) Caractere

[Pg.: 155]

DTOR( ), funo Converte graus em radianos. Sintaxe DTOR(nExpresso) Tipos de retorno: Argumentos nExpresso Especifica a expresso numrica cujo valor voc deseja converter em radianos. Um ngulo expresso no formato grau:minuto:segundo deve ser convertido no seu equivalente decimal. Comentrios DTOR( ) converte o valor de uma expresso numrica determinada em graus em um valor equivalente em radianos. DTOR( ) til para trabalhar com estas funes trigonomtricas do Visual FoxPro: ACOS( ), ASIN( ), COS( ), SIN( ) e TAN( ). Utilize RTOD( ) para converter radianos em graus. DTOR( ), exemplo da funo CLEAR ? DTOR(0) && Exibe 0.00 ? DTOR(45) && Exibe 0.79 ? DTOR(90) && Exibe 1.57 ? DTOR(180) && Exibe 3.14 ? COS(DTOR(90)) && Exibe 0.00 DTOS( ), funo Retorna uma data de seqncia de caracteres no formato aaaammdd a partir de uma expresso Data ou DataHora especificada. Sintaxe DTOS(dExpresso | tExpresso) Tipos de retorno: Argumentos dExpresso dgitos. Especifica a expresso Data que DTOS( ) converte em uma seqncia de caracteres de oito Caractere Numrico

tExpresso Especifica a expresso DataHora que DTOS( ) converte em uma seqncia de caracteres de oito dgitos. Comentrios Essa funo til para indexar tabelas em um campo Data ou DataHora. equivalente a DTOC( ) quando o argumento opcional 1 includo. A seqncia de caracteres retornada por DTOS( ) no afetada por SET DATE ou SET CENTURY.
[Pg.: 156]

DTOS( ), exemplo da funo CLEAR ? DTOS(DATE( )) DTOT( ), funo Retorna um valor de DataHora a partir de uma expresso Data. Sintaxe DTOT(dExpressoData) Tipos de retorno: Argumentos DataHora

dExpressoData Especifica a expresso Data da qual retornado um valor de DataHora. Comentrios O formato do valor de DataHora retornado por DTOT( ) depende das definies atuais de SET DATE e SET MARK. Se no for dado um sculo, ser utilizado o sculo vinte. DTOT( ) adiciona uma hora padro de meia-noite (12:00:00 A.M.) data para produzir um valor de DataHora vlido. DTOT( ), exemplo da funo ? DTOT({02/16/95}) && Exibe 02/16/95 12:00:00am EDIT, comando Exibe campos para edio. Sintaxe EDIT [FIELDS ListaCampos] [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [FONT cNomeFonte [, nTamanhoFonte]] [STYLE cEstiloFonte] [FREEZE NomeCampo] [KEY eExpresso1 [, eExpresso2]] [LAST | NOINIT] [LPARTITION] [NAME NomeObjeto] [NOAPPEND] [NODELETE] [NOEDIT | NOMODIFY] [NOLINK] [NOMENU] [NOOPTIMIZE] [NORMAL] [NOWAIT] [PARTITION nNmeroColuna [LEDIT] [REDIT]] [PREFERENCE NomePreferncia]
[Pg.: 157]

[REST] [SAVE] [TIMEOUT nSegundos] [TITLE cTextoTitulo] [VALID [:F] lExpresso3 [ERROR cTextoMensagem]] [WHEN lExpresso4] [WIDTH nLarguraCampo] [WINDOW NomeJanela1] [IN [WINDOW] NomeJanela2 | IN SCREEN] [COLOR SCHEME nNmeroEsquema] Argumentos FIELDS ListaCampos Especifica os campos que iro aparecer na janela Editar. Os campos so exibidos na ordem especificada na ListaCampos. Voc pode incluir campos de outras tabelas relacionadas na lista de campos. Ao incluir um campo de uma tabela relacionada, coloque o alias da tabela e um ponto antes do nome do campo. Se voc omitir FIELDS, todos os campos da tabela sero exibidos na ordem em que aparecem na estrutura da tabela. A lista de campos pode especificar qualquer combinao de campos ou campos calculados, incluindo campos de tabelas abertas em outras reas de trabalho. A sintaxe da lista de campos : NomeCampo1 [:R] [:nLarguraColuna] [:V = lExpresso1 [:F] [:E = cTextoMensagem]] [:P = cCdigosFormato] [:B = eLimiteInferior, eLimiteSuperior [:F]] [:H = cTextoCabealho] [:W = lExpressao2] [, NomeCampo2 [:R]...] Campos calculados A lista de campos pode conter instrues para a criao de campos calculados. Um campo calculado contm dados somente para leitura criados com uma expresso. Essa expresso pode assumir qualquer forma, mas precisa ser uma expresso vlida do Visual FoxPro. A sintaxe da instruo utilizada para criar um campo calculado : NomeCampoCalculado = eExpresso Este exemplo cria um campo calculado chamado location: CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer EDIT FIELDS location = ALLTRIM(city) + ', ' + country A lista de campos da clusula FIELDS inclui oito opes, o que permite um gerenciamento especial dos campos exibidos na janela Editar. :nLarguraColuna Especifica o tamanho para exibio de um campo em colunas. O valor de : nLarguraColuna no afeta o tamanho do campo na tabela; ele s altera a forma de exibio do campo na janela Editar :R No exemplo a seguir, a janela Editar aberta com os campos cust_id e company. O campo cust_id somente para leitura, no podendo ser alterado. CLOSE DATABASES
[Pg.: 158]

OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer EDIT FIELDS cust_id:R, company :V = lExpresso1 Especifica uma opo de verificao que executa validao de dados em nvel de campos na janela Editar. Se lExpresso1 retornar verdadeiro (.T.) quando voc mover o cursor para fora do campo, a entrada de dados no campo ser considerada correta e o cursor passar para o prximo campo. Se lExpresso1 retornar falso (.F.), a entrada de dados ser considerada incorreta, o cursor permanecer no campo e ser exibida uma mensagem. Se lExpresso1 retornar 0, a entrada de dados ser considerada incorreta e o cursor permanecer no campo, mas no ser exibida uma mensagem de erro. Como padro, lExpresso1 s avaliada quando o campo modificado. Para forar uma verificao, inclua a opo :F. Voc pode exibir sua prpria mensagem de erro incluindo a opo :E. A opo de verificao no executada para campos Memo. :F Especifica uma opo de validao forada que determina se a expresso na opo de verificao (lExpresso1) ser avaliada quando voc mover o cursor para fora de um campo. Se :F no for includo, lExpresso1 s ser avaliada se forem feitas alteraes no campo. Se :F for includo, lExpresso1 ser avaliada, mesmo que o campo no seja modificado :E = cTextoMensagem Exibe uma mensagem de erro especificada com cTextoMensagem em vez da mensagem padro do sistema. Se a expresso de validao :V = lExpresso1 for verdadeira (.T.), o cursor sair normalmente do campo. Se a expresso for falsa (.F.), o cursor permanecer no campo e uma mensagem de erro ser exibida. Se a expresso de validao :V = lExpresso1 for 0, no ser exibida uma mensagem de erro e o cursor permanecer no campo que est sendo validado, permitindo que voc exiba suas prprias mensagens de erro em rotinas de validao. A mensagem de erro s ser exibida se SET NOTIFY estiver ativado (ON). Uma campainha ser ouvida se SET BELL estiver ativado (ON). O exemplo a seguir abre a tabela products e exibe os campos product_id e prod_name. Digite um valor superior a 100 no campo product_id para executar a validao do campo. :V especifica o critrio de validao. :F fora a verificao da validao, quer os dados sejam ou no alterados. :E substitui a mensagem de erro do sistema do Visual FoxPro por uma mensagem de erro definida pelo usurio. No Visual FoxPro, a mensagem de erro exibida na barra de status, na parte inferior da janela principal do Visual FoxPro. Pressione ESC para fechar a janela Editar. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE products && Abre a tabela products IF _WINDOWS OR _MAC SET STATUS BAR ON ENDIF USE products EDIT FIELDS in_stock :V = in_stock < 100 ; :F ; :E = 'The stock amount must be less than 100'

[Pg.: 159]

:P = cCdigosFormato Especifica uma opo de figura que permite criar um modelo de edio especificado com cCdigosFormato, que controla a exibio e entrada de dados para cada campo em uma janela Editar. Para obter maiores informaes sobre a utilizao de cdigos de edio de figuras, consulte as propriedades Format e InputMask. O exemplo a seguir utiliza a opo de figura para permitir que somente dados numricos em um formato especfico sejam digitados no campo unit_price: CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE products && Abre a tabela products EDIT FIELDS unit_price :P = '99,999.99' :B = eLimiteInferior, eLimiteSuperior [:F] Especifica um conjunto de limites entre os quais os dados precisam estar. As expresses de limite eLimiteInferior e eLimiteSuperior precisam corresponder ao tipo de dados do campo e no podem ser nomes de funes definidas pelo usurio. Se os dados digitados no estiverem entre eLimiteInferior e eLimiteSuperior, uma mensagem do sistema ser exibida, indicando o intervalo entre o qual os dados precisam estar. Como padro, os dados digitados s sero comparados com os valores dos limites se voc alterar o contedo do campo. Para forar uma comparao com os valores dos limites, inclua a opo de validao forada (:F). O exemplo a seguir garante que o valor do campo in_stock fique entre 1 e 100. Pressione ESC para fechar a janela Editar. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE products && Abre a tabela products EDIT FIELDS in_stock :B = 1, 100 :F :H = cTextoCabealho Especifica uma opo de cabealho (:H) que permite a substituio dos nomes de campo padro por seus prprios cabealhos, especificados com cTextoCabealho. Como padro, os nomes de campos so posicionados do lado esquerdo dos campos na janela Editar. O exemplo a seguir fornece cabealhos definidos pelo usurio para os campos exibidos. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE products && Abre a tabela products EDIT FIELDS prod_name :H = 'Nome Produto:', ; unit_price :H = 'Preo por Unidade:' :W = lExpresso2 Especifica uma opo WHEN que permite impedir, condicionalmente, que o cursor seja movido para um campo baseado no valor da expresso lgica lExpresso . (:W) avalia lExpresso. Se lExpresso2 retornar um valor falso, (.F.), voc no poder mover o cursor para o campo. Se lExpresso2 retornar um valor verdadeiro (.T.), voc poder mover o cursor para o campo. Funes definidas pelo usurio so aceitas em lExpresso2. proibido mover o cursor em todos os campos se o campo atual estiver marcado como somente para leitura. Isso ocorre somente quando todos os campos contm uma clusula WHEN cujo retorno falso. Escopo Especifica um intervalo de registros exibido na janela Editar. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Comandos que incluem Escopo funcionam somente na tabela da rea de trabalho ativa. O escopo padro para EDIT ALL, isto , todos os registros. Para obter maiores informaes, consulte Clusulas de escopo. FOR lExpresso1 Especifica que somente os registros que satisfazem a condio lgica lExpresso1 so exibidos na janela Editar. Isso permite que voc exclua os registros indesejados. Rushmore otimizar uma consulta EDIT FOR se lExpresso1 for uma expresso otimizvel. Para obter melhor desempenho, utilize uma expresso otimizvel na clusula FOR.
[Pg.: 160]

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. WHILE lExpresso2 Especifica uma condio em que os registros so exibidos na janela Editar enquanto a expresso lgica lExpresso2 retorna um valor verdadeiro (.T.). FONT cNomeFonte [, nTamanhoFonte] Especifica o nome e o tamanho da fonte da janela Editar. A expresso de caracteres cNomeFonte especifica o nome da fonte e a expresso numrica nTamanhoFonte especifica o tamanho da fonte. Por exemplo, a clusula a seguir especifica a fonte Courier de 16 pontos para os campos exibidos na janela Editar: FONT 'Courier',16 Se voc incluir a clusula FONT, mas omitir o tamanho da fonte nTamanhoFonte, uma fonte de 10 pontos ser utilizada na janela Editar. Se voc omitir a clusula FONT, a fonte MS Sans Serif de 8 pontos ser utilizada. Se a fonte especificada no estiver disponvel, uma fonte com caractersticas semelhantes ser utilizada em seu lugar. STYLE cEstiloFonte Especifica o estilo da fonte da janela Editar no Visual FoxPro. Se voc omitir a clusula STYLE, o estilo de fonte normal ser utilizado. Se o estilo da fonte especificado no estiver disponvel, um estilo de fonte com caractersticas semelhantes ser utilizado em seu lugar. Caractere B I N O Q S T U Estilo da fonte Negrito Itlico Normal Contorno Opaco Sombra Riscado Transparente Sublinhado

Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. O exemplo a seguir abre a janela Editar e utiliza uma fonte sublinhada: CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer IF _WINDOWS EDIT FIELDS contact FONT 'System', 15 STYLE 'NU' ENDIF IF _MAC EDIT FIELDS contact FONT 'Geneva', 14 STYLE 'NU' ENDIF FREEZE NomeCampo Permite que alteraes sejam feitas somente em um campo especificado com NomeCampo na janela Editar. Os campos restantes so exibidos, mas no podem ser editados. KEY eExpresso1 [, eExpresso2] Limita o escopo dos registros exibidos na janela Editar. Com KEY, voc pode especificar um valor-chave de ndice (eExpresso1) ou um intervalo de valores-chave (eExpresso1, eExpresso2) para os registros exibidos na janela Editar. A tabela tem que ser indexada e o valor ou valoreschave de ndice includos na clusula KEY devem ter o mesmo tipo de dados que a expresso de ndice do arquivo de ndice mestre ou marca mestre.

[Pg.: 161]

No exemplo a seguir, somente registros com cdigos postais entre 10.000 e 30.000 so exibidos na janela Editar: CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer SET ORDER TO postalcode EDIT KEY '10000', '30000' LAST | NOINIT Salva qualquer alterao de configurao feita na aparncia de uma janela Editar. As alteraes so salvas no arquivo FOXUSER e podem incluir alteraes feitas na lista de campos, no tamanho de cada campo e na localizao e tamanho da janela Editar. Para obter maiores informaes sobre este arquivo, consulte SET RESOURCE. Se voc emitir EDIT com a clusula LAST, a janela Editar ser aberta com a mesma configurao que foi salva pela ltima vez no arquivo FOXUSER. Isso restaura a janela Editar anterior, criada com o ltimo EDIT. Se o ltimo comando EDIT emitido na janela Comando tiver includo uma longa lista de clusulas, emita EDIT LAST para no precisar digitar o comando novamente. Alteraes na configurao da janela Editar feitas na sesso atual no sero salvas se voc sair de EDIT pressionando CTRL+Q. LPARTITION Coloca o cursor no primeiro campo da partio esquerda da janela Editar. Pode-se dividir a janela Editar nas parties esquerda e direita, incluindo-se a clusula PARTITION. Como padro, o cursor ser colocado no primeiro campo da partio direita quando a janela Editar for aberta. O cursor ser posicionado na partio direita da janela Editar se voc incluir LPARTITION sem a clusula PARTITION. NAME NomeObjeto Cria uma referncia de objeto para a janela Editar, permitindo a voc manipular a janela Editar com propriedades orientadas a objetos disponveis para o controle Grid. Para obter informaes adicionais sobre programao orientada a objetos no Visual FoxPro, consulte o captulo 3, Programao orientada a objetos, no Guia do Desenvolvedor. Para obter maiores informaes sobre as propriedades do controle Grid que podem ser especificadas para uma janela Editar criada com a clusula NAME, consulte o tpico Controle Grid. NOAPPEND Impede que o usurio adicione registros tabela pressionando CTRL+Y ou escolhendo Modo de incluso no menu Exibir. Importante A incluso de NOAPPEND no impede que voc inclua o registro de uma rotina (criada com VALID, WHEN ou ON KEY LABEL) enquanto estiver na janela Editar. NODELETE Impede que registros sejam marcados para excluso na janela Editar. Como padro, um registro pode ser marcado para excluso quando voc pressiona CTRL+T, escolhe Alternar marca de excluso ou clica na coluna mais esquerda do registro a ser excludo. Importante A incluso de NODELETE no impede que voc marque um registro para excluso em uma rotina (criada com VALID, WHEN ou ON KEY LABEL) enquanto estiver na janela Editar. NOEDIT | NOMODIFY Impede que um usurio modifique a tabela. NOEDIT e NOMODIFY so idnticos. Se voc incluir uma dessas clusulas, poder pesquisar ou procurar registros na tabela, mas no poder edit-la. No entanto, poder incluir e excluir registros. NOLINK Desvincula parties na janela Editar. Como padro, as parties esquerda e direita da janela Editar esto vinculadas; quando voc rola uma partio, a outra partio tambm rolada. NOMENU Remove da barra de menus do sistema o ttulo de menu Tabela do Visual FoxPro, impedindo o acesso ao menu Editar. NOOPTIMIZE Desativa a otimizao Rushmore de EDIT.
[Pg.: 162]

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore na Ajuda ou o captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. NORMAL Abre a janela Editar com suas definies padro normais, como cores, tamanho, posio, ttulo e opes de controle (GROW, FLOAT, ZOOM e assim por diante). Se voc omitir NORMAL e a janela de sada atual for uma janela definida pelo usurio com suas prprias definies, a janela Editar tambm assumir as definies feitas pelo usurio. NOWAIT Continua a execuo do programa quando a janela Editar aberta. O programa no espera que a janela Editar seja fechada, mas continua executando na linha do programa, imediatamente aps a linha do programa que contm EDIT NOWAIT. Se voc omitir NOWAIT, quando EDIT for emitido em um programa, uma janela Editar ser aberta e a execuo do programa ser interrompida at que ela seja fechada. NOWAIT s pode ser acessado a partir de um programa. A incluso de NOWAIT ao emitir EDIT na janela Comando no tem efeito. PARTITION nNmeroColuna Divide uma janela Editar nas parties esquerda e direita com nNmeroColuna especificando o nmero da coluna da barra de diviso. Por exemplo, se nNmeroColuna for 20, a barra de diviso ser posicionada na coluna 20 da janela Editar. LEDIT Especifica que a partio esquerda da janela Editar aparece no modo Pesquisa. REDIT Especifica que a partio direita da janela Editar aparece no modo Pesquisa. O exemplo a seguir abre uma janela Editar, com a barra de diviso posicionada na coluna 20 e a partio direita aberta no modo Pesquisa. Inclua as duas palavras-chave para abrir ambas as parties no modo Pesquisa. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer EDIT PARTITION 30 REDIT PREFERENCE NomePreferncia Salva os atributos e opes de uma janela Editar para utilizao posterior. Ao contrrio de LAST, que restaura a janela Editar da maneira como apareceu na sesso anterior, PREFERENCE salva os atributos de uma janela Editar indefinidamente, no arquivo de recursos FOXUSER. As preferncias podem ser recuperadas sempre que desejado. Para obter maiores informaes sobre o arquivo de recursos FOXUSER, consulte SET RESOURCE. Se voc emitir EDIT pela primeira vez com o nome de preferncia NomePreferncia especificado, ser criada uma entrada no arquivo FOXUSER que salva a configurao da janela Editar. Se voc emitir EDIT posteriormente, com o mesmo nome de preferncia, a janela Editar retornar quele estado de preferncia. Quando a janela Editar for fechada, o estado de preferncia ser atualizado. Os nomes das preferncias podem ter at 10 caracteres, tm que comear com uma letra ou um caractere de sublinhado e podem conter qualquer combinao de letras, nmeros e caracteres de sublinhado. Quando voc conseguir estabelecer uma preferncia, poder impedir que ela seja alterada. Feche a janela Editar, emita SET RESOURCE OFF, abra o arquivo FOXUSER como uma tabela e altere o arquivo que contm a preferncia para somente para leitura, mudando o valor do campo lgico READONLY para verdadeiro (.T.). Para obter maiores informaes sobre o arquivo de recursos FOXUSER, consulte SET RESOURCE. REST Impede que o ponteiro do registro seja movido de sua posio atual para o topo da tabela. Como padro, EDIT posiciona o ponteiro do registro no topo da tabela. SAVE Mantm ativa e visvel (aberta) a janela Editar e qualquer de suas janelas de edio de texto de campos Memo. Voc pode, ento, retornar para a janela Editar aps percorrer outras janelas abertas com o teclado ou mouse.
[Pg.: 163]

SAVE s pode ser acessado a partir de um programa. SAVE no tem efeito quando includo com EDIT na janela Comando, pois EDIT SAVE sempre o padro no modo interativo. TIMEOUT nSegundos Especifica o tempo que uma janela Editar espera por entrada. A expresso numrica nSegundos especifica quantos segundos podem se passar sem entrada antes que a janela Editar se feche automaticamente. TIMEOUT s pode ser acessado a partir de um programa; no tem efeito quando EDIT emitido a partir da janela Comando. No exemplo a seguir, a janela Editar ser fechada se no houver entrada em 10 segundos. DEFINE WINDOW wEdit FROM 1,1 TO 24,40 ; CLOSE ; GROW ; COLOR SCHEME 10 CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer EDIT WINDOW wEdit ; FIELDS phone :H = 'Nmero Telefone:' , ; company :H = 'Empresa:' ; TIMEOUT 10 RELEASE WINDOW wEdit TITLE cTextoTitulo Substitui o nome ou alias padro da tabela, exibido na barra de ttulo da janela Editar pelo ttulo especificado com cTextoTitulo. Do contrrio, o nome ou alias da tabela que est sendo pesquisada aparece na barra de ttulo. Se voc emitir EDIT WINDOW para colocar a janela Editar em uma janela definida pelo usurio, o ttulo da janela Editar substituir o ttulo da janela definida pelo usurio. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer EDIT; TITLE 'Minha Janela Editar' ; FIELDS phone :H = 'Nmero Telefone' , ; company :H = 'Empresa:' VALID lExpresso3 Executa a validao no nvel de registros na janela Editar. A clusula VALID s ser executada se uma alterao for feita no registro e voc mover o cursor para outro registro. A clusula VALID no ser executada se forem feitas alteraes somente em um campo Memo. Se VALID retornar verdadeiro (.T.), voc poder mover o cursor para outro registro. Se VALID retornar falso (.F.), o cursor permanecer no campo atual e o Visual FoxPro exibir uma mensagem de erro. Voc poder exibir sua prpria mensagem de erro quando VALID retornar falso, incluindo a clusula ERROR. A expresso de caracteres cTextoMensagem exibida como mensagem de erro. Se VALID retornar 0, o cursor permanecer no campo atual e no ser exibida uma mensagem de erro. A clusula VALID no deve ser confundida com a opo de verificao (:V), que permite validao dos campos. :F Faz com que a clusula VALID seja executada antes que o usurio mova o cursor para o registro seguinte. Nesse caso, VALID ser executada mesmo que o registro no seja alterado. ERROR cTextoMensagem Especifica uma mensagem de erro que substitui o padro do sistema e cujo contedo especificado por cTextoMensagem. O Visual FoxPro exibe sua mensagem de erro quando VALID retorna falso (.F.). WHEN lExpresso4 Avalia uma condio quando o usurio move o cursor para outro registro. Se lExpresso4 retornar verdadeiro (.T.), o usurio poder modificar o registro para onde foi movido. Se
[Pg.: 164]

lExpresso4 retornar falso (.F.) ou 0, o registro em que o usurio estiver passar a ser somente para leitura e no poder ser modificado. A clusula WHEN no ser executada quando outra janela estiver ativada. WIDTH nLarguraCampo Limita o nmero de caracteres exibidos para todos os campos em uma partio da janela editar a nLarguraCampo. A incluso da clusula WIDTH no altera o tamanho dos campos na tabela em si, apenas a forma de exibio dos campos na janela Editar. Se uma largura tiver sido especificada para um nico campo com a clusula FIELDS, ela substituir a largura especificada com a clusula WIDTH para aquele campo. WINDOW NomeJanela1 Especifica uma janela definida pelo usurio cujas caractersticas so assumidas pela janela Editar. Por exemplo, se a janela definida pelo usurio for criada com a clusula FLOAT, a janela Editar poder ser movida. A janela especificada no precisa estar ativa ou visvel, mas precisa estar definida. IN [WINDOW] NomeJanela2 Especifica a janela pai NomeJanela2 na qual a janela Editar aberta. A janela Editar no assume as caractersticas da janela pai. Uma janela Editar ativada dentro de uma janela pai no pode ser movida para fora desta. Se a janela pai for movida, a janela Editar ser movida junto com ela. Para acessar a janela Editar, a janela pai tem que ser definida como DEFINE WINDOW e estar ativa e visvel. IN SCREEN Posiciona uma janela Editar de forma explcita na janela principal do Visual FoxPro quando uma janela definida pelo usurio est ativa. COLOR SCHEME nNmeroEsquema Especifica o nmero de um esquema de cores utilizado para as cores da janela Editar. No Visual FoxPro, a janela Editar assume o esquema de cores definido utilizando o Painel de controle de cores. Comentrios EDIT possibilita a edio da tabela selecionada em uma janela. EDIT funciona de forma idntica a CHANGE. Se voc pressionar ESC para sair da janela Editar, as alteraes feitas no ltimo campo modificado so descartadas. No entanto, se voc mover outro registro aps modificar um campo, as alteraes feitas no campo sero salvas. Em um programa, utilize DEACTIVATE WINDOW para salvar suas alteraes e fechar uma janela Editar. Inclua o nome da janela Editar em DEACTIVATE WINDOW. Para obter maiores informaes sobre os nomes da janela Editar, consulte WTITLE( ). Suporte SET SKIP SET SKIP permite que voc estabelea um relacionamento um-para-n entre duas tabelas (veja o exemplo). Para cada registro da tabela pai, podem existir diversos registros relacionados na tabela filho. Se voc criar um relacionamento um-para-n, poder utilizar EDIT para visualizar registros das tabelas pai e filho. O registro pai aparece uma vez, juntamente com o primeiro registro correspondente da tabela filho. Qualquer registro correspondente subseqente exibido nas linhas que vm aps o registro pai e o primeiro registro filho correspondente. No FoxPro para MS-DOS, blocos sombreados so exibidos em qualquer coluna que contenha informaes da tabela pai alm do primeiro registro correspondente. No Visual FoxPro, caractere de preenchimento para informaes pai repetidas depende da atual fonte da janela Editar. Para obter maiores informaes, consulte SET SKIP. Suporte COL( ) e ROW( ) Utilize COL( ) e ROW( ) para retornar a linha da tela e posio da coluna em que se encontra o cursor em uma janela Editar. Se uma janela Editar estiver aberta na janela principal do Visual FoxPro, a posio do
[Pg.: 165]

cursor retornada ser relativa janela principal do Visual FoxPro, no janela Editar em si. Se uma janela Editar estiver aberta em uma janela definida pelo usurio, COL( ) e ROW( ) retornaro a posio do cursor em relao janela definida pelo usurio. EJECT PAGE, comando Envia um comando de avano de pgina condicional para a impressora. Sintaxe EJECT PAGE

Comentrios Utilize EJECT PAGE para avanar o fluxo de sada. O avano depende do valor de _PADVANCE e se uma rotina ON PAGE est em andamento. Se _PADVANCE estiver configurada para FORMFEED e uma rotina ON PAGE no estiver em andamento, EJECT PAGE far o seguinte: Enviar um comando de alimentao de pgina para a impressora, se ela estiver on-line. Enviar comandos de alimentao de linha, como foi determinado pelas variveis de memria do sistema _PLENGTH e _PLINENO, para a tela, um arquivo alternativo ou ambos. Incrementar _PAGENO em 1. Configurar _PLINENO para 0. Se a varivel de memria do sistema _PADVANCE estiver configurada para INEFEEDS e uma rotina ON PAGE estiver em andamento e _PLINENO for menor do que o nmero da linha da pgina especificado na rotina ON PAGE, EJECT PAGE enviar para a impressora, para a janela principal do Visual FoxPro ou para um arquivo alternativo (ou ambos) tantos comandos de alimentao de linha quantos forem necessrios para avanar at o incio da pgina seguinte. Se uma rotina ON PAGE no estiver em andamento ou se _PADVANCE estiver configurada para LINEFEEDS e _PLINENO for maior do que o nmero da linha da pgina especificado com ON PAGE, EJECT PAGE far o seguinte: Enviar comandos de alimentao de linha, conforme determinado pelas variveis de memria do sistema _PLENGTH e _PLINENO, para a impressora, para a janela principal do Visual FoxPro ou para um arquivo alternativo (ou ambos). Incrementar _PAGENO em 1. Configurar _PLINENO para 0. EJECT, comando Envia um comando de alimentao de pgina para a impressora. Sintaxe EJECT Comentrios EJECT faz com que a impressora avance para o incio da pgina seguinte. EJECT enviar um comando de alimentao de pgina para a impressora se a varivel de memria do sistema _PADVANCE estiver configurada para FORMFEED. Se _PADVANCE estiver configurada para LINEFEEDS, EJECT enviar comandos de alimentao de linha para avanar at o incio da pgina seguinte.
[Pg.: 166]

EJECT redefine os valores PCOL( ) e PROW( ) para a posio atual de coluna e de linha do cabeote de impresso da impressora, mas no afeta o valor das variveis do sistema _PAGENO e _PLINENO. EJECT, exemplo do comando No exemplo a seguir, os campos company e phone na tabela customer sero impressos. (Certifique-se de que h uma impressora anexada e ligada para esse exemplo.) Quando o nmero de linhas impressas for maios do que 62, a pgina ser ejetada. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer SET DEVICE TO PRINTER SET PRINT ON DO WHILE NOT EOF( ) @ PROW( )+1,10 SAY 'Company: ' + company @ PROW( )+1,10 SAY 'Phone: ' + phone @ PROW( )+1,1 SAY '' IF PROW( ) > 62 EJECT ENDIF SKIP ENDDO SET PRINT OFF SET DEVICE TO SCREEN EMPTY( ), funo Determina se uma expresso retorna um valor vazio. Sintaxe EMPTY(eExpresso) Tipos de Retorno: Argumentos eExpresso Especifica a expresso retornada pela funo EMPTY( ). A expresso includa pode ser de caracteres, data, numrica ou lgica, bem como o nome de um campo Memo ou geral de uma tabela aberta. EMPTY( ) retorna verdadeiro (.T.) quando as expresses retornam um dos valores a seguir: Tipo de expresso Retorna este valor Lgico

Caractere Seqncia vazia, espaos, tabulaes, retornos de carro, alimentaes de linha ou qualquer combinao dos mesmos. Numrica 0 Moeda 0 Flutuante 0 Nmero inteiro 0 Dupla 0 Data Vazio (e.g. CTOD('')) DataHora Vazio (e.g. CTOT('')) Lgica Falso (.F.) Memo Vazio (sem contedo)
[Pg.: 167]

Geral Vazio (sem objeto OLE) Figura Vazio (nenhuma figura) EMPTY( ) no pode ser utilizada para determinar se uma referncia a um objeto de varivel de memria vazia. Por exemplo, uma varivel de memria pode conter uma referncia de objeto para um formulrio. Se o formulrio for fechado a partir da caixa de menu Controle do formulrio ou com CLEAR WINDOWS, a varivel de memria conter o valor nulo. O exemplo de programa a seguir mostra como utilizar TYPE( ) e ISNULL( ) para determinar se uma referncia a um objeto de varivel de memria vlida. goMyForm = CREATEOBJECT('Form') WAIT WINDOW IIF(TYPE('goMyForm') = 'O' AND !ISNULL(goMyForm), ; 'goMyForm has valid object reference',; 'goMyForm does not have valid object reference') Comentrios EMPTY( ) retornar verdadeiro (.T.) se a expresso eExpresso retornar um valor vazio; caso contrrio, EMPTY( ) retornar falso (.F.). EMPTY( ), exemplo da funo O exemplo a seguir abre a tabela customer do banco de dados testdata. FOR ... ENDFOR utilizado para criar um loop em que EMPTY( ) utilizado para determinar se TAG( ) retorna a seqncia vazia. O nome de cada marca de ndice estrutural exibida com seu status de candidato. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer FOR nCount = 1 TO 254 IF !EMPTY(TAG(nCount)) && Verifica se h uma seqncia vazia ? TAG(nCount) && Exibe o nome da marca ? CANDIDATE(nCount) && Exibe o status de candidato ELSE EXIT && Sai do loop quando mais nenhuma marca for encontrada ENDIF ENDFOR EOF( ), funo Determina se o ponteiro do registro est posicionado aps o ltimo registro na tabela atual ou especificada. Sintaxe EOF([nreaTrabalho | cAliasTabela]) Tipos de Retorno: Argumentos nreaTrabalho Especifica o nmero da rea de trabalho da tabela. cAliasTabela Especifica o alias da tabela. EOF( ) retornar falso (.F.) se uma tabela no estiver aberta na rea de trabalho que voc especificou. Lgico

[Pg.: 168]

Se voc no especificar uma rea de trabalho ou alias, a tabela que estiver aberta na rea de trabalho selecionada no momento ser testada para o final da condio de tabela. Comentrios EOF( ) retornar verdadeiro (.T.) se o ponteiro do registro alcanar o final do arquivo de tabela (EOF). O final da tabela alcanado quando o ponteiro do registro passa pelo ltimo registro da tabela. Por exemplo, quando os comandos FIND, LOCATE ou SEEK no tm xito, o Visual FoxPro move o ponteiro do registro para depois do ltimo registro e EOF( ) retorna verdadeiro (.T.). EOF( ) retornar falso (.F.) se o ponteiro do registro no estiver no final da tabela. EOF( ), exemplo da funo O exemplo a seguir abre a tabela customer e lista o nome da empresa, uma pgina de cada vez at o final do arquivo ser alcanado ou at voc selecionar Cancelar. CLOSE DATABASES CLEAR OPEN DATABASE (HOME() + "samples\data\testdata") USE customer GO TOP local recCtr, btnValue recCtr = 0 btnValue = 1 DO WHILE btnValue = 1 AND NOT EOF() ? "Empresa : " + company recCtr = recCtr + 1 if (recCtr % 20) = 0 then btnValue =MESSAGEBOX ("Click OK to continue, ; Cancel to quit.",33) clear endif Skip 1 && Move um registro para baixo ENDDO =MESSAGEBOX("Listing complete.",48) ERASE, comando Apaga um arquivo do disco. Sintaxe ERASE NomeArquivo | ? [RECYCLE] Argumentos NomeArquivo Especifica o arquivo a ser apagado. Inclua o caminho com o nome do arquivo se o arquivo estiver em uma unidade de disco ou diretrio diferente da unidade de disco ou diretrio atual. NomeArquivo pode conter caracteres curinga como * e ?. Por exemplo, para excluir arquivos de backup com ERASE *.BAK. ? Exibe a caixa de dilogo Excluir, a partir da qual voc pode escolher um arquivo a ser apagado. RECYCLE Especifica que o arquivo no seja imediatamente excludo do disco e seja colocado na Lixeira do Windows 95.

[Pg.: 169]

Cuidado Ateno ao utilizar ERASE. Os arquivos apagados com esse comando no podero ser recuperados. Voc no ser avisado antes do arquivo ser apagado, mesmo que SET SAFETY esteja ativado (ON). ERASE, exemplo do comando No exemplo a seguir, a estrutura de CUSTOMER.DBF e todos os registros nos quais o pas Estados Unidos so copiados para uma tabela denominada backup. Os dados em backup so, ento, copiados para um arquivo texto, temp, que aberto e, em seguida, excludo ao ser fechado. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela customer COPY STRUCTURE TO backup USE backup APPEND FROM customer FOR country = 'USA' COPY TO temp TYPE DELIMITED WAIT WINDOW 'Press Esc to close and erase temp.txt' NOWAIT MODIFY FILE temp.txt NOEDIT ERASE temp.txt ? IIF(FILE('temp.txt'),'File not deleted','File deleted') USE ERASE backup.dbf ERROR( ), funo Retorna o nmero do erro que disparou uma rotina ON ERROR. Sintaxe ERROR( ) Tipos de retorno: Numrico Comentrios ERROR( ) retorna o nmero do erro mais recente. Uma rotina ON ERROR deve estar ativa para que ERROR( ) retorne um valor diferente de 0. Quando um erro interceptado durante a execuo de um programa, o tipo de erro pode ser retornado por ERROR( ) em uma rotina ON ERROR. A mensagem de erro correspondente pode ser retornada por MESSAGE( ). O valor retornado por ERROR( ) redefinido por RETURN ou RETRY. Para obter uma listagem numrica de todos os nmeros de erro e as mensagens de erro correspondentes, consulte Mensagens de erro na seo Referncia tcnica. ERROR( ), exemplo da funo O exemplo a seguir demonstra uma rotina de gerenciamento de erro simples que exibe uma mensagem quando ocorre um erro. CLEAR ON ERROR DO errhand WITH ERROR( ), MESSAGE( ) *** The next line generates an error - there is no BRWSE command
[Pg.: 170]

BRWSE ON ERROR RETURN *** Error handler *** PROCEDURE errhand PARAMETER errnum,message ? Message ? 'Error number: '+ ALLTRIM(STR(Errnum)) RETURN ERROR, comando Gera um erro do Visual FoxPro. Sintaxe ERROR nNmeroErro | nNmeroErro, cTextoMensagem1 | [cTextoMensagem2] Argumentos nNmeroErro Especifica o nmero do erro a ser gerado. A mensagem de erro padro do Visual FoxPro ser utilizada quando um nmero de erro for especificado. Para obter uma lista de mensagens de erro do Visual FoxPro e os respectivos nmeros de erro, consulte Mensagens de erro. cTextoMensagem1 Especifica o texto a ser exibido em mensagens de erro que fornecem informaes adicionais sobre o erro. Por exemplo, se voc fizer referncia a uma varivel de memria que no existe, o Visual FoxPro fornecer o nome da varivel de memria na mensagem de erro. cTextoMensagem2 Especifica o texto exibido na mensagem de erro. Quando cTextoMensagem2 for especificado em vez de nNmeroErro, o nmero de erro 1098 (erro definido pelo usurio) do Visual FoxPro ser gerado. Utilize um retorno de carro (CHR(13)) em cTextoMensagem2 para mover uma parte da mensagem de erro para a prxima linha. Comentrios ERROR pode ser utilizado para testar rotinas de gerenciamento de erro ou para exibir mensagens de erro personalizadas. Se uma rotina de gerenciamento de erro ON ERROR estiver ativa quando ERROR for emitido, o Visual FoxPro executar a rotina ON ERROR. Se ocorrer um erro para um objeto, o evento Error desse objeto ser executado. Se voc emitir ERROR a partir da janela Comando e uma rotina de gerenciamento de erro ON ERROR no estiver ativa, o Visual FoxPro exibir a mensagem de erro. Se ERROR for emitido em um programa e uma rotina de gerenciamento de erro ON ERROR no estiver ativa, o Visual FoxPro exibir a mensagem de erro e permitir que voc cancele ou suspenda o programa ou ignore o erro. ERROR, exemplo do comando O exemplo a seguir gera trs mensagens de erro. A primeira mensagem de erro Varivel no encontrada do Visual FoxPro (nmero de erro 12). A segunda mensagem de erro torna a gerar o erro 12, incluindo o

[Pg.: 171]

nome de varivel Myvariable. A ltima mensagem de erro definida pelo usurio (nmero de erro 1089) Minha mensagem de erro. ERROR 12 && Gera o erro do Visual FoxPro "Varivel no encontrada" ERROR 12, 'Myvariable' && Erro varivel 'Myvariable' no encontrada ERROR 'My error message' && Gera o erro 'Minha mensagem de erro' EVALUATE( ), funo Avalia uma expresso de caracteres e retorna o resultado. Sintaxe EVALUATE(cExpresso)

Tipos de retorno: Argumentos

Caractere, Numrico, Moeda, Data, DataHora, Lgico ou Memo

cExpresso Especifica a expresso a ser avaliada. cExpresso pode ser uma seqncia de caracteres literal ou uma expresso, uma varivel de memria, um elemento de matriz ou campo de qualquer tipo de dados vlidos do Visual FoxPro includos entre delimitadores de seqncia de caracteres. cExpresso no pode exceder 255 caracteres. Sempre que possvel, utilize EVALUATE( ) ou uma expresso de nome para trocar uma substituio de macro utilizando &. EVALUATE e expresses de nome so executadas mais rapidamente do que a substituio de macro. Comentrios EVALUATE( ) semelhante a TYPE( ), mas retorna o resultado de uma expresso em vez do tipo da expresso. Uma expresso que contenha EVALUATE( ) no pode ser otimizada por Rushmore. EXIT, comando Sai de um loop DO WHILE, FOR ou SCAN. Sintaxe EXIT Comentrios EXIT transfere o controle de dentro de um loop DO WHILE ... ENDDO, FOR ... ENDFOR ou SCAN ... ENDSCAN para o comando imediatamente aps ENDDO, ENDFOR ou ENDSCAN. EXIT, exemplo do comando No exemplo a seguir, o nmero de produtos em estoque com preo acima de 20 dlares totalizado no loop DO WHILE at que o final do arquivo (EOF) seja encontrado. O loop DO WHILE fechado e o total, exibido. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE products && Abre a tabela Products SET TALK OFF
[Pg.: 172]

gnStockTot = 0 DO WHILE .T. && Incio do loop IF EOF( ) EXIT ENDIF IF unit_price < 20 SKIP LOOP ENDIF gnStockTot = gnStockTot + in_stock SKIP ENDDO && Fim do loop CLEAR ? 'Total dos items em estoque com preo acima de 20 dlares:' ?? gnStockTot EXP( ), funo Retorna o valor de e^x onde x uma expresso numrica especificada. Sintaxe EXP(nExpresso) Tipos de retorno: Argumentos nExpresso Especifica o expoente, x, na expresso exponencial e^x. Comentrios O valor de e, a base de logaritmos naturais, aproximadamente 2,71828. O nmero de casas decimais retornadas por EXP( ) especificado com SET DECIMALS. EXP( ), exemplo da funo ? EXP(0) && Exibe 1.00 ? EXP(1) && Exibe 2.72 EXPORT, comando Copia dados de uma tabela do Visual FoxPro para um arquivo em um formato diferente. Sintaxe EXPORT TO NomeArquivo [TYPE] DIF | MOD | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5 [FIELDS ListaCampos] [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [NOOPTIMIZE] [AS nPginaCdigo] Numrico

[Pg.: 173]

Argumentos NomeArquivo Especifica o nome do arquivo para o qual o Visual FoxPro exporta dados. Se voc no incluir uma extenso com o nome do arquivo, ser atribuda a extenso padro para o tipo de arquivo especificado. TYPE Especifica o tipo de arquivo a ser criado. A palavra-chave TYPE opcional, mas preciso especificar um dos tipos a seguir. Tipo de arquivo Descrio

DIF Cada campo de uma tabela do Visual FoxPro torna-se um vetor (coluna) e cada registro torna-se uma tupla (linha) em um arquivo DIF (Data Interchange Format) utilizado por VisiCalc. Ser atribuda uma extenso .DIF ao nome do novo arquivo se no for includa uma extenso em NomeArquivo. MOD Utilize a clusula MOD para exportar para um arquivo do Microsoft Multiplan verso 4.01 formato MOD. Ser atribuda uma extenso .MOD se no for includa uma extenso em NomeArquivo. SYLK Um formato de intercmbio Symbolic Link (utilizado pelo Microsoft Multiplan) no qual cada campo de uma tabela do Visual FoxPro torna-se uma coluna da planilha e cada registro torna-se uma linha. Como padro, nomes de arquivos SYLK no possuem extenso. WK1 Inclua essa opo para criar uma planilha eletrnica do Lotus 1-2-3 a partir de uma tabela do Visual FoxPro. atribuda uma extenso .WK1 ao nome do arquivo de planilha eletrnica para ser utilizado com o Lotus 1-2-3 reviso 2.x. Cada campo da tabela torna-se uma coluna na nova planilha eletrnica e cada registro da tabela torna-se uma linha na planilha. WKS Inclua essa opo para criar uma planilha eletrnica do Lotus 1-2-3 a partir de uma tabela do Visual FoxPro. atribuda uma extenso .WKS ao nome do arquivo de planilha eletrnica para ser utilizado com o Lotus 1-2-3 reviso 1-A. Cada campo da tabela torna-se uma coluna na nova planilha eletrnica e cada registro torna-se uma linha na planilha. WR1 Inclua essa opo para criar uma planilha eletrnica do Lotus Symphony a partir de uma tabela do Visual FoxPro. Uma extenso .WR1 atribuda planilha para ser utilizada com o Symphony verso 1.01. Cada campo da tabela torna-se uma coluna na nova planilha eletrnica e cada registro torna-se uma linha na planilha. WRK Inclua essa opo para criar uma planilha eletrnica do Lotus Symphony a partir de uma tabela do Visual FoxPro. Uma extenso WRK atribuda ao nome do arquivo de planilha eletrnica para ser utilizado com o Symphony verso 1.10. Cada campo da tabela torna-se uma coluna na nova planilha eletrnica e cada registro torna-se uma linha na planilha. XLS Inclua essa opo para criar uma planilha eletrnica do Microsoft Excel a partir de uma tabela do Visual FoxPro. Cada campo da tabela selecionada torna-se uma coluna da planilha eletrnica e cada registro torna-se uma linha. Ser atribuda uma extenso de nome de arquivo .XLS ao ltimo arquivo de planilha criado, a no ser que voc especifique uma extenso diferente. XL5 Inclua essa opo para criar um arquivo de planilha do Microsoft Excel verso 5.0 a partir de uma tabela do Visual FoxPro. Cada campo da tabela selecionada torna-se uma coluna na planilha eletrnica e cada registro torna-se uma linha. Ser atribuda uma extenso .XLS nova planilha se voc no incluir uma extenso de arquivo. FIELDS ListaCampos Especifica os campos copiados para o novo arquivo. Se voc omitir a clusula FIELDS, todos os campos sero copiados para o novo arquivo. Campos Memo e Geral no so copiados para o novo arquivo, mesmo que seus nomes estejam includos na lista de campos. Escopo Especifica um intervalo de registros a serem copiados para o novo arquivo. Escopo Especifica um intervalo de registros a serem copiados para o novo arquivo. Apenas os registros que estejam no intervalo so copiados para o novo arquivo. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Para obter maiores informaes sobre clusulas de escopo, consulte Clusulas de escopo . Os comandos que incluem Escopo operam somente na tabela da rea de trabalho ativa. O escopo padro para EXPORT so todos os registros. FOR lExpresso1 Especifica que somente os registros que satisfazem condio lgica lExpresso1 so copiados para o novo arquivo. Isso permite extrair os registros no desejados. Um comando EXPORT ... FOR lExpresso1 ter otimizao Rushmore se a lExpresso1 for uma expresso otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR..
[Pg.: 174]

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore, no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor . WHILE lExpresso2 Especifica uma condio de acordo com a qual os registros so copiados para o novo arquivo enquanto a expresso lgica lExpresso2 retornar um valor verdadeiro (.T.). NOOPTIMIZE Desativa a otimizao Rushmore de EXPORT. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore, no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. AS nPginaCdigo Especifica a pgina de cdigo do arquivo criada por EXPORT. O Visual FoxPro copia o contedo da tabela atualmente selecionada e, medida que copia os dados, converte-os automaticamente na pgina de cdigo especificada para o novo arquivo. Se possvel, o Visual FoxPro marcar o arquivo recmcriado com a pgina de cdigo especificada. Caso voc especifique um valor para nPginaCdigo que no seja suportado, o Visual FoxPro ir gerar uma mensagem de erro. possvel utilizar GETCP( ) para nPginaCdigo a fim de exibir a caixa de dilogo Pgina de cdigo, que permite especificar uma pgina de cdigo para o arquivo criado pelo Visual FoxPro. Caso AS nPginaCdigo for omitida, no ocorrer a converso de pgina de cdigo. Se possvel, o Visual FoxPro marcar o arquivo recm-criado com a pgina de cdigo da tabela da qual os dados so copiados. Se nPginaCdigo for 0, no ocorrer converso de pgina e o arquivo recm-criado no ser marcado com uma pgina de cdigo. Comentrios Utilize EXPORT para empregar os dados do Visual FoxPro em outros pacotes de software. Se a tabela da qual voc est exportando estiver indexada, o novo arquivo ser criado na ordem indexada. FCHSIZE( ), funo Altera o tamanho de um arquivo aberto com uma funo de arquivo de nvel inferior. Sintaxe FCHSIZE(nIdentificadorArquivo, nNovoTamanhoArquivo) Tipos de retorno: Argumentos nIdentificadorArquivo Especifica o identificador do arquivo cujo tamanho voc deseja alterar. O identificador de arquivo retornado por FOPEN( ) quando voc abre o arquivo ou por FCREATE( ) quando voc cria o arquivo. Caso um arquivo seja aberto com FOPEN( ), ele deve ser aberto com permisso para gravao ou para leitura e gravao para que o seu tamanho possa ser alterado. nNovoTamanhoArquivo Especifica o novo tamanho do arquivo em bytes. Se nNovoTamanhoArquivo for menor do que o tamanho do arquivo original, o arquivo ser truncado. Se nNovoTamanhoArquivo for maior do que o tamanho do arquivo original, o tamanho do arquivo ser aumentado. Comentrios Utilize a funo FCHSIZE( ) para aumentar o tamanho do arquivo ou para trunc-lo aps um byte especificado. Quando aumenta-se o tamanho de um arquivo, o Visual FoxPro aloca setores para este arquivo na unidade em que ele est aberto. Visto que FCHSIZE( ) no inicializa o novo espao do arquivo, este espao poder conter dados anteriores. Certifique-se de gerenciar o novo espao do arquivo.
[Pg.: 175]

Numrico

retornado o tamanho final do arquivo em bytes. O Visual FoxPro retornar 1 caso FCHSIZE( ) no consiga alterar o tamanho do arquivo se, por exemplo, for especificado um identificador de arquivo invlido por causa de espao insuficiente no disco ou se o arquivo for somente para leitura. Dica Pode-se utilizar esta funo para truncar um arquivo para o comprimento 0. FCLOSE( ), funo Descarrega e fecha um arquivo ou uma porta de comunicao aberta com uma funo de arquivo de nvel inferior. Sintaxe FCLOSE(nIdentificadorArquivo) Tipos de retorno: Argumentos Lgico

nIdentificadorArquivo Especifica o identificador do arquivo de nvel inferior a ser fechado. O identificador de arquivo numrico retornado quando voc cria o arquivo com FCREATE( ) ou abre o arquivo com FOPEN( ). Comentrios Caso o fechamento do arquivo seja bem-sucedido, FCLOSE( ) retornar verdadeiro (.T.) e liberar o identificador de arquivo. Caso no seja possvel fechar o arquivo, FCLOSE( ) retornar falso (.F.). A funo CLOSE ALL tambm fecha arquivos de nvel inferior. FCOUNT( ), funo Retorna o nmero de campos em uma tabela. Sintaxe FCOUNT([nreaTrabalho| cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho campos. Especifica a rea de trabalho da tabela para a qual FCOUNT( ) retorna o nmero de Numrico

A funo FCOUNT( ) retornar 0 caso no esteja aberta nenhuma tabela na rea de trabalho especificada. cAliasTabela Especifica o alias da tabela para a qual FCOUNT( ) retorna o nmero de campos. O Visual FoxPro gerar uma mensagem de erro se voc especificar um alias de tabela inexistente. Comentrios Se voc omitir os argumentos opcionais, FCOUNT( ) retornar o nmero de campos da tabela aberta na rea de trabalho atualmente selecionada.

[Pg.: 176]

FCOUNT( ), exemplo da funo CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer SELECT 0 USE employee && Abre a tabela employee CLEAR ? FCOUNT('CUSTOMER') && Exibe 13, nmero de campos na tabela Customer ? FCOUNT('EMPLOYEE') && Exibe 22, nmero de campos na tabela Employee CREATE( ), funo Cria e abre um arquivo de nvel inferior. Sintaxe FCREATE(cNomeArquivo [, nAtributoArquivo]) Tipos de retorno: Argumentos cNomeArquivo Especifica o nome do arquivo a ser criado. Pode-se incluir um designador de unidade e um caminho com o nome do arquivo. Caso no seja includo um designador de unidade ou um caminho, o arquivo ser criado no diretrio padro. Observao O Visual FoxPro no reconhecer um nome de caminho de maneira apropriada se um nome de diretrio ou disco contiver um ponto de exclamao (!). nAtributoArquivo Especifica os atributos do arquivo criado. A tabela a seguir lista os atributos de arquivo que podem ser especificados. nAtributoArquivo 0 1 2 3 4 5 6 7 Atributos de arquivo (Padro) Leitura e gravao Somente para leitura Oculto Somente para leitura/Oculto Sistema Somente para leitura /Sistema Sistema/Oculto Somente para leitura /Oculto/Sistema Numrico

Observe que um arquivo criado com um nAtributoArquivo diferente de 0 no poder ser gravado com FPUTS( ) ou FWRITE( ) at que o arquivo seja fechado e aberto novamente. Utilize DISPLAY STATUS ou LIST STATUS para exibir ou imprimir informaes sobre arquivos criados e abertos com FCREATE( ). DISPLAY STATUS e LIST STATUS fornecem as informaes a seguir sobre cada arquivo aberto ou criado com uma funo de arquivo de nvel inferior: A unidade, o diretrio e o nome do arquivo O nmero do identificador de arquivo A posio do ponteiro do arquivo Os atributos de leitura e gravao Comentrios

[Pg.: 177]

Caso j exista um arquivo com o nome especificado, ele ser sobrescrito sem aviso. A funo FCREATE( ) atribui ao arquivo um nmero de identificador de arquivo que pode ser utilizado para identific-lo em outras funes de arquivo de nvel inferior do Visual FoxPro. FCREATE( ) retorna o nmero do identificador de arquivo quando o arquivo criado ou retorna 1 caso no seja possvel criar o arquivo. Dica Atribua o nmero do identificador de arquivo a uma varivel de memria para que voc possa acessar o arquivo pela varivel de memria em outras funes de arquivo de nvel inferior. Voc no pode abrir uma porta de comunicao com FCREATE( ). Para tal, utilize FOPEN( ). FCREATE( ), exemplo da funo IF FILE('errors.txt') && O arquivo existe? gnErrFile = FOPEN('errors.txt',12) && Caso exista, abra leitura e gravao ELSE gnErrFile = FCREATE('errors.txt') && Caso contrrio, crie um ENDIF IF gnErrFile < 0 && Verifica erros no arquivo de abertura WAIT 'no possvel abrir ou criar um arquivo de sada' WINDOW NOWAIT ELSE && Se no houver erros, grave no arquivo =FWRITE(gnErrFile , 'Informao de erro a ser gravada aqui') ENDIF =FCLOSE(gnErrFile ) && Fecha o arquivo IF gnErrFile > 0 MODIFY FILE errors.txt NOWAIT && Abre o arquivo na janela de edio ENDIF FDATE( ), funo Retorna a data da ltima modificao de um arquivo. Sintaxe FDATE(cNomeArquivo) Tipos de retorno: Argumentos cNomeArquivo Especifica o nome do arquivo cuja data da ltima modificao retornada por FDATE( ). cNomeArquivo pode incluir um caminho com o nome do arquivo. Se no houver nenhum caminho includo com o nome do arquivo, o Visual FoxPro ir procurar o arquivo no diretrio e pasta padro e nos diretrios e pastas especificados por SET PATH. Comentrios A data retornada por FDATE( ) atribuda ao arquivo pelo sistema operacional. O formato do valor retornado por FDATE( ) determinado pelas definies atuais de SET DATE, SET MARK e SET CENTURY. Utilize LUPDATE( ) para determinar a data da ltima modificao para uma tabela aberta. FDATE( ), exemplo da funo O exemplo a seguir utiliza FDATE( ) para exibir a data da ltima modificao em FOXUSER.DBF, arquivo de recursos do Visual FoxPro.
[Pg.: 178]

Data

? FDATE('FOXUSER.DBF') && Exibe a data da ltima modificao FEOF( ), funo Determina se o ponteiro do arquivo est ou no posicionado no fim de um arquivo. Sintaxe FEOF(nIdentificadorArquivo) Tipos de retorno: Argumentos nIdentificadorArquivo Especifica o nmero do identificador do arquivo no qual deve ser verificada a condio de fim de arquivo. FEOF( ) sempre retornar verdadeiro (.T.) se voc especificar um nmero de identificador de arquivo de uma porta de comunicao aberta com FOPEN( ). Comentrios Esta funo de arquivo de nvel inferior retornar verdadeiro (.T.) se o ponteiro do arquivo estiver posicionado no fim de um arquivo aberto com uma funo de arquivo de nvel inferior. FEOF( ) retornar falso (.F.) se o ponteiro no estiver no fim do arquivo. FEOF( ), exemplo da funo *** Abre o arquivo test.txt *** gnFileHandle = FOPEN('test.txt') *** Move o ponteiro do arquivo para BOF *** gnPosition = FSEEK(gnFileHandle, 0) *** Se o ponteiro do arquivo estiver em BOF e EOF, o arquivo estar vazio *** *** Caso contrrio o arquivo deve conter alguma coisa *** IF FEOF(gnFileHandle) WAIT WINDOW 'Este arquivo est vazio!' NOWAIT ELSE WAIT WINDOW 'Este arquivo contm alguma coisa!' NOWAIT ENDIF = FCLOSE(gnFileHandle) FERROR( ), funo Retorna um nmero correspondente ao erro na funo de arquivo de nvel inferior mais recente. Sintaxe FERROR( ) Tipos de retorno: Numrico Comentrios Lgico

[Pg.: 179]

A funo FERROR( ) retornar 0 caso a funo de arquivo de nvel inferior seja executada com sucesso. Um valor positivo ser retornado caso a execuo da funo seja mal-sucedida. A tabela a seguir lista o nmero de cada erro retornado por FERROR( ) e a causa do erro. Nmero do erro 2 4 5 6 8 25 29 31 Causa do erro Arquivo no localizado Nmero excessivo de arquivos abertos (identificadores de arquivo esgotados) Acesso negado Identificador de arquivo invlido fornecido Memria esgotada Erro na pesquisa (impossvel pesquisar antes do incio de um arquivo) Disco cheio Erro na abertura do arquivo FFLUSH( ), funo Descarrega no disco um arquivo aberto com uma funo de nvel inferior. Sintaxe FFLUSH(nIdentificadorArquivo) Tipos de retorno: Argumentos nIdentificadorArquivo Especifica o identificador do arquivo a ser descarregado no disco. Comentrios A funo FFLUSH( ) tambm libera a memria utilizada pelo buffer do arquivo. A funo FLUSH diferente de FFLUSH( ). FLUSH no opera em arquivos de nvel inferior, mas em tabelas e ndices. FFLUSH( ), exemplo da funo O exemplo a seguir abre e grava um arquivo denominado INPUT.DAT. Depois de gravar as primeiras duas seqncias, o programa descarrega os buffers para garantir que as seqncias sejam gravadas no disco. Em seguida, ele grava as duas prximas seqncias, descarrega os buffers novamente e fecha o arquivo. IF FILE('input.dat') gnTestFile = FOPEN('input.dat',2) ELSE gnTestFile = FCREATE('input.dat') ENDIF gnIOBytes = FWRITE(gnTestFile,'Testar sada') gnIOBytes = FWRITE(gnTestFile,' para arquivo E/S de nvel inferior') glFlushOk = FFLUSH(gnTestFile) gnIOBytes = FWRITE(gnTestFile,'Testar sada2') gnIOBytes = FWRITE(gnTestFile,' para arquivo E/S de nvel inferior') glFlushOk = FFLUSH(gnTestFile) glCloseOk = FCLOSE(gnTestFile) MODIFY FILE input.dat NOWAIT NOEDIT FGETS( ), funo
[Pg.: 180]

Lgico

Retorna uma srie de bytes de um arquivo ou de uma porta de comunicao aberta com uma funo de arquivo de nvel inferior at localizar um retorno de carro. Sintaxe FGETS(nIdentificadorArquivo [, nBytes]) Tipos de retorno: Argumentos nIdentificadorArquivo Especifica o identificador de arquivo numrico da porta de comunicao ou do arquivo a partir do qual FGETS( ) retorna dados. nBytes Especifica o nmero de bytes que FGETS( ) retorna. FGETS( ) retornar nBytes bytes, a menos que antes seja localizado um retorno de carro. FGETS( ) retornar os dados entre a posio inicial do ponteiro do arquivo e o retorno de carro, caso seja localizado um retorno de carro dentro dos nBytes bytes. Se voc omitir nBytes, FGETS( ) retornar um mximo de 254 bytes como padro. Comentrios Voc pode ler linha por linha de um arquivo emitindo-se uma srie de FGETS( ). A funo FGETS( ) retorna uma srie de bytes como uma seqncia de caracteres. O retorno dos dados feito a partir da posio atual do ponteiro do arquivo e continua at localizar um retorno de carro. Em seguida, o ponteiro do arquivo posicionado no byte seguinte ao retorno de carro. O retorno de carro no retornado como parte da seqncia e as alimentaes de linha so ignoradas. FGETS( ), exemplo da funo *** TEST.TXT deve existir *** STORE FOPEN('test.txt') TO gnFileHandle && Abre o arquivo STORE FSEEK(gnFileHandle, 0, 2) TO gnEnd && Move o ponteiro a EOF STORE FSEEK(gnFileHandle, 0) TO gnTop && Move o ponteiro a BOF IF gnEnd <= 0 && O arquivo est vazio? WAIT WINDOW 'Este arquivo est vazio!' NOWAIT ELSE && Caso no esteja gcString = FGETS(gnFileHandle, gnEnd) && Armazene o contedo ? gcString ENDIF = FCLOSE(gnFileHandle) && Fecha o arquivo FIELD( ), funo Retorna o nome de um campo de uma tabela ao qual feita referncia pelo nmero. Sintaxe FIELD(nNmeroCampo [, nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nNmeroCampo Especifica o nmero do campo. Caso nNmeroCampo seja 1, ser retornado o nome do primeiro campo da tabela; caso nNmeroCampo seja 2, ser retornado o nome do segundo campo, e assim sucessivamente. A seqncia vazia ser retornada se nNmeroCampo for maior do que o nmero de campos. Os nomes dos campos so retornados em letras maisculas.
[Pg.: 181]

Caractere

Caractere

nreaTrabalho Especifica a rea de trabalho da tabela para a qual FIELD( ) retorna os nomes dos campos. A funo FIELD( ) retornar a seqncia vazia caso no esteja aberta nenhuma tabela na rea de trabalho especificada. cAliasTabela Especifica o alias da tabela para a qual FIELD( ) retorna os nomes dos campos. O Visual FoxPro gerar uma mensagem de erro se voc especificar um alias de tabela inexistente. Comentrios Se voc omitir os argumentos opcionais, FIELD( ) retornar os nomes dos campos da tabela aberta na rea de trabalho atualmente selecionada. FIELD( ), exemplo da funo CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer CLEAR FOR gnCount = 1 TO FCOUNT( ) && Realiza um loop para nmeros de campos ? FIELD(gnCount) && Exibe cada campo NEXT ? ? 'Nmero de campos: ' + ALLTRIM(STR(gnCount -1)) FILE( ), funo Retorna verdadeiro (.T.), se o arquivo especificado for encontrado em disco. Sintaxe FILE(cNomeArquivo) Tipos de retorno: Argumentos cNomeArquivo Especifica o nome do arquivo a ser localizado. cNomeArquivo deve incluir a extenso do arquivo. O Visual FoxPro procura no diretrio ou pasta padro pelo arquivo. Se o arquivo no for encontrado nestes locais, o Visual FoxPro procura pelo prprio caminho estabelecido com SET PATH. Voc pode incluir um caminho ao nome do arquivo para procurar por um arquivo em um diretrio ou em uma unidade diferentes dos atuais. Comentrios Utilize FILE( ) para localizar um arquivo em disco. FILE( ) retorna (.T.) se o arquivo puder ser localizado; caso contrrio FILE( ) retorna (.F.) falso. FILE( ), exemplo da funo O exemplo a seguir exibe uma mensagem indicando se o arquivo de recursos do Visual FoxPro est presente na pasta ou diretrio de inicializao do Visual FoxPro. SET PATH TO HOME( )
[Pg.: 182]

Lgico

CLEAR IF FILE('foxuser.dbf') WAIT WINDOW 'Arquivo de recursos do Visual FoxPro presente' ELSE WAIT WINDOW 'Arquivo de recursos do Visual FoxPro no presente' ENDIF FILTER( ), funo Retorna a expresso de filtragem de tabela especificada em SET FILTER. Sintaxe FILTER([nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho filtragem. Caractere Especifica a rea de trabalho da tabela para a qual FILTER( ) retorna a expresso de

FILTER( ) retornar a seqncia vazia caso nenhuma tabela esteja aberta na rea de trabalho especificada. cAliasTabela Especifica o alias da tabela para a qual FILTER( ) retorna a expresso de filtragem. O Visual FoxPro ir gerar uma mensagem de erro se voc especificar um alias de tabela inexistente. Comentrios Se voc omitir os argumentos opcionais, FILTER( ) retornar a expresso de filtragem da tabela aberta na rea de trabalho atualmente selecionada. Para obter maiores informaes sobre como criar um filtro, consulte SET FILTER. FILTER( ), exemplo da funo CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer SET TALK ON SET FILTER TO SUBSTR(cust_id,1) = 'B' CLEAR ? FILTER( ) && Exibe a expresso de filtro STORE FILTER('customer') TO gcOldFilter && Grava a expresso de filtro SET FILTER TO country = 'USA' ? FILTER( ) && Exibe a expresso de filtro SET FILTER TO &gcOldFilter && Restaura a expresso de filtro ? FILTER( ) && Exibe a expresso de filtro LIST FIELDS cust_id, contact && Demonstra a condio de filtro FKLABEL( ), funo Retorna o nome da tecla de funo (F1, F2, F3 ...) a partir do nmero da tecla de funo correspondente. Sintaxe FKLABEL(nNmeroTeclaFuno)
[Pg.: 183]

Tipos de retorno: Argumentos

Caractere

nNmeroTeclaFuno Especifica o nmero da tecla de funo. O valor de nNmeroTeclaFuno deve estar entre 0 e o nmero de teclas de funo menos 1. FKLABEL( ) retornar a seqncia vazia se nNmeroTeclaFuno for maior do que o nmero de teclas de funo menos 1. O nmero de teclas de funo pode ser determinado com FKMAX( ). Comentrios Pode-se programar teclas de funo com SET FUNCTION. O valor retornado por FKLABEL( ) afetado por SET COMPATIBLE. Quando COMPATIBLE for definido para FOXPLUS (padro), FKLABEL( ) retorna as teclas de funo. Quando COMPATIBLE for definido para DB4, FKLABEL( ) retorna a tecla de funo e as combinaes de teclas de funo (F1, CTRL+F1, SHIFT+F1, F2, CTRL+F2, SHIFT+F2, ...). FKLABEL( ), exemplo da funo CLEAR SET COMPATIBLE OFF ? 'COMPATIBLE OFF' ? FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de funo ? FKLABEL(nCount) && Exibe as teclas programveis de funo ENDFOR SET COMPATIBLE ON ? ? 'COMPATIBLE ON' ? FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de funo ? FKLABEL(nCount) && Exibe as teclas programveis de funo ENDFOR FKMAX( ), funo Retorna o nmero de teclas de funo ou combinaes de teclas de funo programveis em seu teclado. Sintaxe FKMAX( ) Tipos de retorno: Numrico Comentrios O valor retornado por FKMAX( ) afetado por SET COMPATIBLE. Quando SET COMPATIBLE definido para FOXPLUS (padro), FKMAX( ) retorna o nmero de teclas de funo. Quando SET COMPATIBLE definido para DB4, FKMAX( ) retorna o nmero de teclas de funo e combinaes de teclas de funo (F1, CTRL+F1, SHIFT+F1, F2, CTRL+F2, SHIFT+F2, ...). FKMAX( ), exemplo da funo CLEAR SET COMPATIBLE OFF
[Pg.: 184]

? 'COMPATIBLE OFF' ? FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de funo ? FKLABEL(nCount) && Exibe as teclas programveis de funo ENDFOR SET COMPATIBLE ON ? ? 'COMPATIBLE ON' ? FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de funo ? FKLABEL(nCount) && Exibe as teclas programveis de funo ENDFOR FLOCK ( ), funo Tenta bloquear a tabela atual ou a tabela especificada. Sintaxe FLOCK([nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho Especifica a rea de trabalho da tabela que FLOCK( ) tenta bloquear. A funo FLOCK( ) retornar falso (.F.) caso nenhuma tabela esteja aberta na rea de trabalho especificada. cAliasTabela Especifica o alias da tabela que FLOCK( ) tenta bloquear. O Visual FoxPro ir gerar uma mensagem de erro se voc especificar um alias de tabela inexistente. Comentrios A funo FLOCK( ) retornar verdadeiro (.T.) se o bloqueio da tabela for bem-sucedido e retornar falso (.F.) se a tabela ou um registro da tabela j estiver bloqueado por outro usurio. Se voc omitir os argumentos opcionais, FLOCK( ) tentar bloquear a tabela aberta na rea de trabalho atualmente selecionada. Observao Caso a funo FLOCK( ) no consiga bloquear uma tabela, ela retornar falso (.F.) e no ir gerar um erro. Como resultado, no ser possvel utilizar FLOCK( ) para disparar uma rotina ON ERROR. Quando uma tabela est bloqueada, o usurio que a bloqueou tem acesso a ela para leitura e gravao. Os outros usurios da rede tm acesso tabela somente para leitura. Para obter informaes sobre como bloquear uma tabela e impedir que outros usurios tenham acesso a ela, consulte SET EXCLUSIVE e USE. A tabela permanece bloqueada at que o usurio altere isto. possvel desbloquear a tabela emitindo UNLOCK, fechando-a ou saindo do Visual FoxPro. As tabelas podem ser fechadas com USE, CLEAR ALL ou CLOSE DATABASES. Como padro, a funo, FLOCK( ) tenta bloquear a tabela uma vez. Utilize SET REPROCESS para repetir automaticamente o bloqueio de uma tabela caso a primeira tentativa falhe. SET REPROCESS determina o nmero de tentativas de bloqueio ou o perodo de tempo durante o qual so feitas essas tentativas, caso a inicial seja malsucedida. Para obter maiores informaes, consulte SET REPROCESS. Lgico

[Pg.: 185]

possvel estabelecer relaes entre duas ou mais tabelas com SET RELATION. A colocao de um bloqueio de arquivo em uma tabela relacionada a uma ou mais tabelas no coloca um bloqueio de arquivo nas tabelas relacionadas. Voc deve colocar os bloqueios nelas e remov-los explicitamente. Para obter maiores informaes sobre bloqueio de registro e arquivo e sobre como compartilhar tabelas em uma rede, consulte o captulo 17, Programando para acesso compartilhado, no Guia do desenvolvedor. FLOCK( ), exemplo de funo CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE produtos && Abre tabelas de produtos SET REPROCESS TO 3 SECONDS SELECT * FROM produtos INTO TABLE novoproduto IF FLOCK( ) *** Inicilizao de produto novo *** REPLACE ALL in_stock WITH 0.00 REPLACE ALL on_order WITH 0.00 WAIT 'Inicializao completa' WINDOW NOWAIT ELSE *** Arquivos esto bloqueados, avisar usurio *** WAIT WINDOW 'Impossvel abrir arquivos de produtos; tente novamente mais tarde!' NOWAIT ENDIF BROWSE FIELDS in_stock, on_order && Exibe tabela newprods USE ERASE novoprods.dbf FLOOR( ), funo Retorna o nmero inteiro mais prximo que seja menor ou igual expresso numrica especificada. Sintaxe FLOOR(nExpresso) Tipos de retorno: Argumentos nExpresso Especifica a expresso numrica para a qual FLOOR( ) retorna o nmero inteiro mais prximo que seja menor ou igual expresso numrica. FLOOR( ), exemplo de funo STORE 10.9 TO gnNumber1 STORE -10.1 TO gnNumber2 CLEAR ? FLOOR(gnNumber1) && Exibe 10 ? FLOOR(gnNumber2) && Exibe -11 ? FLOOR(10.0) && Exibe 10 ? FLOOR(-10.0) && Exibe 10 Numrico

[Pg.: 186]

FLUSH, comando Salva no disco as modificaes feitas em um ndice ou em uma tabela. Sintaxe FLUSH Comentrios O comando FLUSH assegura que as modificaes feitas em todas as tabelas e ndices abertos sero salvas no disco. O Visual FoxPro salva automaticamente as alteraes no disco quando: Voc fecha uma tabela com USE, CLOSE ALL ou CLOSE DATABASES. Apenas as informaes do arquivo ou arquivos fechados sero descarregadas no disco. Voc desbloqueia um registro ou um arquivo. Apenas as informaes do registro ou do arquivo desbloqueado sero descarregadas no disco. FONTMETRIC( ), funo Retorna os atributos das fontes do sistema operacional atualmente instaladas. Sintaxe FONTMETRIC(nAtributo [, cNomeFonte, nTamanhoFonte [, cEstiloFonte]]) Tipos de retorno: Argumentos nAtributo Determina atributo de fonte que FONTMETRIC( ) retorna. Se voc omitir cNomeFonte, nTamanhoFonte e cEstiloFonte, FONTMETRIC( ) retornar o atributo da fonte atual da janela de sada ativa. A tabela a seguir lista valores para nAtributo e os atributos de fonte correspondentes retornados. NAtributo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Atributo Altura do caractere em pixels Sinal ascendente de caractere (unidades acima da linha de base) em pixels Sinal descendente de caractere (unidades abaixo da linha de base) em pixels Espaos (entre linhas) em pixels Espaos extras em pixels Largura mdia do caractere em pixels Largura mxima do caractere em pixels Peso da fonte. Itlico (0 =no, diferente de zero =sim) Sublinhado (0 = no, diferente de zero = sim) Riscado (0 = no, diferente de zero = sim) Primeiro caractere definido na fonte ltimo caractere definido na fonte Caractere padro (substitudo por caracteres no contidos na fonte) Caractere de quebra de texto. Pitch e famlia Conjunto de caracteres Projeo(largura extra adicionada) Aspecto horizontal para dispositivo de fonte Aspecto vertical para dispositivo de fonte Numrico

* Estes atributos no esto disponveis no Visual FoxPro para Macintosh e retornam sempre 0.
[Pg.: 187]

Para obter maiores informaes sobre os valores numricos retornados por FONTMETRIC( ), consulte a funo TEXTMETRIC no Guia de Referncia do Programador do Microsoft Windows. cNomeFonte Especifica o nome de uma fonte instalada. nTamanhoFonte Especifica o tamanho em pontos de uma fonte especificada com cNomeFonte. cEstiloFonte Especifica um cdigo de estilo de fonte para a fonte especificada com cNomeFonte. Se voc omitir cEstiloFonte, FONTMETRIC( ) retornar o atributo do estilo de fonte Normal. cEstiloFonte pode ser um caractere ou uma combinao de caracteres listados na tabela de estilos de fonte abaixo. Por exemplo, a combinao BI especifica o estilo de fonte Negrito Itlico. Caractere B I N O Q S T U Estilo de fonte Negrito Itlico Normal Delineado Opaco Sombreado Riscado Transparente Sublinhado Comentrios A funo FONTMETRIC( ) retorna atributos da fonte atual da janela de sada ativa. Pode-se utilizar. WFONT( ) para determinar a fonte da janela atual. Para obter maiores informaes sobre como instalar ou remover fontes, consulte o captulo Painel de Controle no Guia do Usurio do Microsoft Windows. FOPEN( ), funo Abre um arquivo ou porta de comunicao para uso com funes de arquivo de baixo nvel. Sintaxe FOPEN(cNomeArquivo [, nAtributo]) Tipos de retorno: Argumentos cNomeArquivo Especifica o nome do arquivo ou porta de comunicao a ser aberta. Se cNomeArquivo um nome de arquivo, pode incluir um caminho para arquivos abertos nos diretrios, pastas, unidades de disco ou volumes atualmente inexistentes no caminho de procura do Visual FoxPro. Se o caminho no est includo, o Visual FoxPro procura pelo arquivo nos locais abaixo: Diretrio ou pasta padro Caminho estabelecido com SET PATH Numrico

Observao O Visual FoxPro poder no reconhecer o caminho ou nome da propriedade se o disco ou nome do diretrio contiver um ponto de exclamao (!). nAtributo Especifica privilgios de leitura e gravao ou um esquema de utilizao de buffer para o arquivo que voc abriu. A tabela a seguir lista cada nmero includo em nAtributo e os privilgios de leitura e gravao do arquivo e esquema de utilizao de buffer que ele estabelece. nAtributo 0 1 Privilgio de leitura e gravao (Padro) Somente para leitura Somente para gravao Utilizando buffer/no utilizando buffer Utilizando buffer Utilizando buffer
[Pg.: 188]

2 10 11 12

Leitura e gravao Somente para leitura Somente para gravao Leitura e gravao

Utilizando buffer No utilizando buffer No utilizando buffer No utilizando buffer

Se nAtributo no estiver includo ou se nAtributo resultar em 0, o arquivo ser aberto somente para leitura e utilizar buffer. As portas de comunicao devem estar sempre abertas sem uso do buffer. Observao O Visual FoxPro no reconhecer apropriadamente um caminho se um nome de disco ou diretrio contiver um ponto de exclamao (!). Comentrios Se FOPEN( ) conseguir abrir o arquivo ou a porta de comunicao, o nmero do identificador do arquivo ou da porta ser retornado. Caso contrrio, FOPEN( ) retornar o valor 1. Dica Atribua o nmero do identificador de arquivo a uma varivel de memria para que voc possa acessar o arquivo ou a porta de comunicao pela varivel de memria em outras funes de arquivo de baixo nvel. As informaes abaixo sobre arquivos abertos com FOPEN( ) podem ser exibidas ou enviadas para uma impressora utilizando-se DISPLAY STATUS ou LIST STATUS. Unidade de disco e diretrio, ou volume e pasta e nome de arquivo Nmero do identificador de arquivo Posio do ponteiro do arquivo Atributos de leitura e gravao FOPEN( ), exemplo da funo IF FILE('errors.txt') && Existe o arquivo? gnErrFile = FOPEN('errors.txt',12) && Caso sim, abrir leitura e gravao ELSE gnErrFile = FCREATE('errors.txt') && Caso no, cri-lo ENDIF IF gnErrFile < 0 && Verificar erros na abertura de arquivos WAIT 'Impossvel abrir ou criar arquivo de sada' WINDOW NOWAIT ELSE && Caso no haja erro, gravar o arquivo =FWRITE(gnErrFile, 'Informao de erro a ser gravada aqui') ENDIF =FCLOSE(gnErrFile) && Fechar arquivo MODIFY FILE errors.txt NOWAIT && Abrir arquivo na janela editar FOR ... ENDFOR, comando Executa um conjunto de comandos, um determinado nmero de vezes. Sintaxe FOR Var = nValorInicial TO nValorFinal [STEP nIncremento] Comandos [EXIT] [LOOP] ENDFOR | NEXT Argumentos Var Especifica uma varivel ou um elemento de matriz que atue como contador. No necessrio que a varivel ou o elemento de matriz j exista antes da execuo de FOR ... ENDFOR.

[Pg.: 189]

nValorInicial TO nValorFinal nValorInicial o valor inicial do contador e nValorFinal o valor final do contador. STEP nIncremento nIncremento o valor incrementado ou decrementado do contador. Caso nIncremento seja negativo, o contador ser decrementado. Se voc omitir STEP, o contador ser incrementado de 1. Comandos Especifica os comando do Visual FoxPro a serem executados. Comandos pode incluir qualquer nmero de comandos. EXIT Transfere o controle do loop FOR ... ENDFOR para o comando logo depois de ENDFOR. EXIT pode ser colocado em qualquer parte entre FOR e ENDFOR. LOOP Retorna o controle diretamente para a clusula FOR sem executar as instrues entre LOOP e ENDFOR. O contador incrementado ou decrementado como se ENDFOR tivesse sido atingido. LOOP pode ser colocado em qualquer parte entre FOR e ENDFOR. Comentrios Utiliza-se uma varivel de memria ou um elemento de matriz como um contador para especificar quantas vezes os comandos do Visual FoxPro dentro do loop FOR ... ENDFOR so executados. Os comandos do Visual FoxPro depois de FOR so executados at ENDFOR ou NEXT ser atingido. Em seguida, o contador NomeVarMem incrementado do valor de nIncremento. Se voc omitir a clusula STEP, o contador ser incrementado em 1. Em seguida, o contador comparado ao nValorFinal. Se ele for menor ou igual ao nValorFinal, os comandos depois da clusula FOR sero executados novamente. Se for maior que o nValorFinal, o loop FOR ... ENDFOR ser abandonado e a execuo do programa continuar com o primeiro comando depois de ENDFOR ou NEXT. Observao Os valores de nValorInicial, nValorFinal e nIncremento so, inicialmente, somente para leitura. No entanto, uma alterao no valor do contador NomeVarMem dentro do loop afeta o nmero de vezes que o loop executado. Se o valor de nIncremento for negativo e o valor inicial nValorInicial for maior que o valor final nValorFinal, o contador ser decrementado a cada execuo do loop. FOR ... ENDFOR, exemplos do comando No exemplo 1, os nmeros de 1 a 10 so exibidos. P exemplo 2 utiliza variveis de memria para valores os inicial, final e STEP para exibir tudo, inclusive registros pares de 2 a 10 em customer. * Exemplo 1 CLEAR FOR gnCount = 1 TO 10 ? gnCount ENDFOR * Example 2 SET TALK OFF CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre tabela Customer STORE 2 TO gnI && Valor inicial STORE 10 TO gnJ && Valor final STORE 2 TO K && Valor Step FOR gnCount = gnI TO gnJ STEP K GOTO gnCount && Move o ponteiro do registro DISPLAY company && Exibe o nome da empresa ENDFOR

[Pg.: 190]

FOR EACH ENDFOR, comando Executa um conjunto de comandos para cada elemento em uma matriz ou coleo do Visual FoxPro. Sintaxe FOR EACH Var IN Group Comandos [EXIT] [LOOP] ENDFOR | NEXT [Var] Definio Var Uma varivel ou elemento de matriz utilizado para interagir por meio dos elementos de Grupo. Uma matriz do Visual FoxPro, uma matriz OLE, uma coleo do Visual FoxPro ou uma coleo

Grupo OLE.

Comandos Especifica os comandos Visual FoxPro a serem executados para cada elemento em Grupo. Comandos pode incluir qualquer quantidade de comandos. EXIT Transfere o controle do loop FOR EACH ... ENDFOR para o comando imediatamente aps ENDFOR. Pode-se colocar EXIT em qualquer parte entre FOR EACH e ENDFOR. LOOP Retorna o controle diretamente para a clusula FOR EACH sem executar as instrues entre LOOP e ENDFOR. LOOP pode ser colocado em qualquer parte entre FOR EACH e ENDFOR. Exemplos O exemplos a seguir demonstram como FOR EACH utilizado para enumerar elementos em uma matriz do Visual FoxPro, matriz OLE e um conjunto de botes de comando atribudos em uma matriz de objeto. No exemplo a seguir, uma matriz varivel do Visual FoxPro criada e FOR EACH utilizado para exibir contedos para cada elemento da matriz. DIMENSION cMyArray(3) cMyArray[1] = A cMyArray[2] = B cMyArray[3] = C FOR EACH cMyVar IN cMyArray ? cMyVar ENDFOR No exemplo a seguir, uma instncia do Microsoft Excel criada e um novo livro adicionado. FOR EACH utilizado para exibir o nome de cada planilha na pasta de trabalho. Este exemplo requer que o Microsoft Excel seja instalado corretamente na mquina onde o exemplo est sendo executado. oExcel = CREATE("Excel.Application") oExcel.Workbooks.ADD FOR EACH oMyVar IN oExcel.sheets ? oMyVar.name NEXT oMyVar No exemplo a seguir, cinco botes de comando so colocados em um formulrio. FOR EACH utilizado para exibir os botes em formulrios e especifica legendas, estilos de fontes e posies de cada boto. PUBLIC oMyObject oMyObject = CREATEOBJECT("frmTest")
[Pg.: 191]

oMyObject.SHOW DEFINE CLASS frmTest AS FORM Height = 200 DIMENSION MyArray[5] PROCEDURE Init FOR i = 1 to 5 THIS.AddObject('THIS.MyArray[i]',; 'COMMANDBUTTON') ENDFOR ****** FOR EACH - NEXT ****** FOR EACH oButton IN THIS.MyArray oButton.Visible = .T. NEXT ****** elemento FOR EACH - NEXT ****** FOR EACH oButton IN THIS.MyArray oButton.FontBold = .T. NEXT obutton j=1 ****** FOR EACH - ENDFOR ****** FOR EACH oButton IN THIS.MyArray oButton.top = j * 30 j=j+1 ENDFOR ****** elemento FOR EACH - ENDFOR ****** FOR EACH oButton IN THIS.MyArray oButton.FontItalic = .T. ENDFOR obutton j=1 ****** EXIT ****** FOR EACH oButton IN THIS.MyArray oButton.Caption = "teste" + str(j) j = j+1 IF j > 3 EXIT ENDIF NEXT j=1 ****** LOOP ****** FOR EACH oButton IN THIS.MyArray IF j > 3 LOOP ENDIF j=j+1 oButton.Left = 25 NEXT ENDPROC ENDDEFINE

[Pg.: 192]

FOR( ), funo Retorna a expresso de filtragem de ndice de um arquivo de ndice de entrada nica (.IDX) aberto ou uma marca de ndice. Sintaxe FOR([nNmerondice [, nreaTrabalho | cAliasTabela]]) Tipos de retorno: Argumentos Se voc no incluir nenhum dos argumentos opcionais, FOR( ) retornar a expresso de filtragem de ndice para a marca de ndice ou o arquivo de ndice mestre. Se uma marca de ndice ou um arquivo de ndice mestre no estiver em andamento (por exemplo, voc emitiu SET ORDER TO para colocar a tabela na ordem de registro natural), FOR( ) retornar a seqncia vazia. nNmerondice Especifica o arquivo ou a marca de ndice para o qual a expresso de filtragem retornada. FOR( ) retorna expresses de filtragem na ordem a seguir, visto que nNmerondice aumenta de 1 ao nmero total de marcas de ndice composto independente e estrutural e de arquivos de entrada nica abertos: 1. Primeiramente, so retornadas as expresses de filtragem de arquivos de ndice de entrada nica (caso algum esteja aberto). A ordem em que os arquivos de ndice de entrada nica so includos em USE ou SET INDEX determinar a ordem de retorno das expresses de filtragem. 2. Em seguida, so retornadas as expresses de filtragem para cada marca no ndice composto estrutural (caso haja algum). As expresses de filtragem so retornadas das marcas na ordem em que estas so criadas no ndice estrutural. 3. Por ltimo, so retornadas as expresses de filtragem para cada marca em qualquer ndice composto independente aberto. As expresses de filtragem so retornadas das marcas na ordem em que estas so criadas nos ndices compostos independentes. A seqncia vazia ser retornada se uma marca de ndice ou um ndice for criado sem a clusula FOR ou se nNmerondice for maior do que o nmero total de marcas de ndice composto independente e estrutural e de arquivos de entrada nica abertos. nreaTrabalho Especifica a rea de trabalho da tabela para a qual FOR( ) retorna as expresses de filtragem de ndice. A funo FOR( ) retornar a seqncia vazia caso nenhuma tabela esteja aberta na rea de trabalho especificada. cAliasTabela Especifica o alias da tabela para a qual FOR( ) retorna as expresses de filtragem de ndice. O Visual FoxPro ir gerar uma mensagem de erro se voc especificar um alias de tabela inexistente. Comentrios possvel criar ndices filtrados no Visual FoxPro. Se voc incluir a clusula opcional FOR lExpresso em INDEX, o arquivo de ndice atuar como um filtro na tabela. Somente os registros correspondentes expresso de filtragem lExpresso estaro disponveis para exibio e acesso. So criadas chaves de ndice no arquivo de ndice apenas para os registros correspondentes expresso de filtragem. USE e SET INDEX suportam uma lista de nomes de arquivo de ndice, permitindo que se abra vrios arquivos de ndice para uma tabela. Qualquer combinao de nomes de arquivo de ndice de entrada nica e de nomes de arquivo de ndice composto independente ou estrutural pode ser includa na lista de nomes de arquivo de ndice. A funo FOR( ) idntica a SYS(2021), sendo fornecida para manter a compatibilidade com o dBASE IV. Caractere

[Pg.: 193]

FOUND( ), funo Retornar verdadeiro (.T.) se CONTINUE, FIND, LOCATE ou SEEK obtiver xito. Sintaxe FOUND([nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho Especifica a rea de trabalho da tabela para a qual FOUND( ) retorna um valor indicando o xito do ltimo CONTINUE, FIND, LOCATE ou SEEK. FOUND( ) retornar falso (.F.) se uma tabela no for aberta na rea de trabalho especificada. cAliasTabela Especifica o alias da tabela para a qual FOUND( ) retorna um valor indicando o xito do ltimo CONTINUE, FIND, LOCATE ou SEEK. O Visual FoxPro gera uma mensagem de erro se for especificado um alias de tabela que no existe. Comentrios FOUND( ) retorna um valor lgico que indica se o CONTINUE, FIND, LOCATE ou SEEK executado mais recentemente obteve xito ou se o ponteiro do registro foi movido em uma tabela relacionada. FOUND( ) retornar verdadeiro (.T.) se a procura obtiver xito; caso contrrio, FOUND( ) retornar falso (.F.). Se voc omitir os argumentos opcionais, FOUND( ) retornar um valor indicando o xito do ltimo CONTINUE, FIND, LOCATE ou SEEK para a tabela aberta na rea de trabalho selecionada atualmente. Dica Esta funo pode ser utilizada para determinar se uma tabela filho tem algum registro correspondente ao registro pai. FOUND( ), exemplo da funo No exemplo a seguir, todos os clientes da GERMANY foram contados. SET TALK OFF CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abrir tabela Customer STORE 0 TO gnCount LOCATE FOR UPPER(country) = 'GERMANY' DO WHILE FOUND( ) gnCount = gnCount + 1 CONTINUE ENDDO WAIT WINDOW 'Total de clientes da Alemanha: ' ; + LTRIM(STR(gnCount)) NOWAIT FPUTS( ), funo Grava uma seqncia de caracteres, um retorno de carro e uma alimentao de linha em um arquivo ou em uma porta de comunicao aberta com uma funo de arquivo de baixo nvel. Lgico

[Pg.: 194]

Sintaxe FPUTS(nIdentificadorArquivo, cExpresso [, nCaracteresGravados]) Tipos de retorno: Argumentos nIdentificadorArquivo Especifica o nmero do identificador do arquivo ou da porta de comunicao em que FPUTS( ) grava dados. cExpresso Especifica a expresso de caracteres que FPUTS( ) grava no arquivo ou na porta. nCaracteresGravados Especifica o nmero de caracteres em cExpresso para gravar no arquivo ou na porta. FPUTS( ) grava toda a expresso de caracteres cExpresso para o arquivo ou porta se nCaracteresGravados for omitido. Se voc incluir nCaracteresGravados, os caracteres de nCaracteresGravados sero gravados em um arquivo ou porta. Se nCaracteresGravados for menor que o nmero de caracteres em cExpresso, somente os caracteres de nCaracteresGravados sero gravados no arquivo ou na porta. Toda a cExpresso gravada em arquivos ou portas, se nCaracteresGravados for igual ou maior que o nmero de caracteres em cExpresso. Comentrios FPUTS( ) retornar o nmero de bytes gravados para o arquivo ou porta. 0 ser retornado se, por algum motivo, FPUTS( ) no puder gravar no arquivo ou porta. FREAD( ), funo Retorna um nmero especificado de bytes a partir de um arquivo ou de uma porta de comunicao aberta com uma funo de nvel inferior. Sintaxe FREAD(nIdentificadorArquivo, nBytes) Tipos de retorno: Argumentos nIdentificadorArquivo Especifica o nmero do identificador de arquivo para o arquivo ou a porta de comunicao a partir de onde FREAD( ) retorna os dados. nBytes Especifica o nmero de bytes retornados por FREAD( ). FREAD( ). FREAD( ) retorna os dados comeando na posio atual do ponteiro do arquivo e prossegue at retornar nBytes bytes ou encontrar o fim do arquivo. FREAD( ), exemplo de funo O exemplo a seguir utiliza FREAD( ) para exibir o contedo de um arquivo. Se o arquivo estiver vazio, uma mensagem ser exibida. * TEST.TXT deve existir -- voc pode criar este arquivo * utilizando Notepad. Local gnFileHandle,nSize,cString gnFileHandle = FOPEN("test.txt") * Procure o fim do arquivo para determinar o nmero de bytes no arquivo nSize = FSEEK(gnFileHandle, 0, 2) && Move o ponteiro para EOF IF nSize <= 0 * Se o arquivo estiver vazio, exibe uma mensagem de erro WAIT WINDOW "Este arquivo est vazio!" NOWAIT ELSE
[Pg.: 195]

Numrico

Caractere

* Se o arquivo no estiver vazio, o programa armazena seu contedo * na memria, em seguida exibe o texto na janela principal do Visual FoxPro = FSEEK(ggnFileHandle, 0, 0) && Move o ponteiro para BOF cString = FREAD(gnFileHandle, nSize) ? cString ENDIF = FCLOSE(gnFileHandle) && Fecha o arquivo FREE TABLE, comando Remove de uma tabela uma referncia a banco de dados. Sintaxe FREE TABLE NomeTabela Argumentos NomeTabela Especifica o nome da tabela a partir da qual a referncia ao banco de dados removida.

Comentrios Caso um banco de dados seja excludo acidentalmente do disco, as referncias a ele permanecem nas tabelas que existiam no banco de dados. FREE TABLE exclui de uma tabela as referncias a banco de dados, permitindo que voc abra a tabela ou adicione-a a um outro banco de dados. FREE TABLE nunca deve ser emitido para excluir uma tabela de um banco de dados quando este existe em disco. Neste caso, FREE TABLE pode inutilizar o banco de dados. Em seu lugar, utilize REMOVE TABLE. Ao contrrio de FREE TABLE, REMOVE TABLE remove do banco de dados todas as referncias a ndices primrios, valores padro e regras de validao associados tabela. FSEEK( ), funo Move o ponteiro do arquivo em um arquivo aberto com uma funo de nvel inferior. Sintaxe FSEEK(nIdentificadorArquivo, nBytesMovidos[, nPosioRelativa]) Tipos de retorno: Argumentos nIdentificadorArquivo Especifica o identificador do arquivo no qual FSEEK( ) move o ponteiro do arquivo. Um nmero de identificador de arquivo retornado por FCREATE( ) ou FOPEN( ) quando o arquivo criado ou aberto. nBytesMovidos Especifica o nmero de bytes para mover o ponteiro do arquivo. O ponteiro do arquivo ser movido em direo ao fim do arquivo se nBytesMovidos for positivo, e em direo ao incio do arquivo se nBytesMovidos for negativo. nPosioRelativa Move o ponteiro do arquivo at uma posio relativa no arquivo. Como padro, o ponteiro do arquivo movido em relao ao incio do arquivo. Voc pode tambm mover o ponteiro em relao ao ponteiro do arquivo atual ou ao fim do arquivo, incluindo nPosioRelativa.
[Pg.: 196]

Numrico

A tabela a seguir lista os valores para nPosioRelativa e a partir de onde o ponteiro do arquivo movido. nPosioRelativa 0 1 2 Move o ponteiro do arquivo para um posio relativa

Ao incio do arquivo (padro). posio do ponteiro do arquivo atual Ao fim do arquivo Comentrios

Aps mover o ponteiro do arquivo, FSEEK( ) retorna o nmero de bytes em que o ponteiro do arquivo posicionado a partir do incio do arquivo. O ponteiro do arquivo pode tambm ser movido com FREAD( ) e FWRITE( ). FSEEK( ), exemplo de funo A funo definida pelo usurio a seguir utiliza FSEEK( ) para retornar o tamanho de um arquivo. Se voc no passar parmetros para a funo definida pelo usurio, ela retornar 2. Se o arquivo no puder ser localizado, a funo definida pelo usurio retornar 1. FUNCTION fsize2 PARAMETERS gcFileName && Arquivo a ser verificado PRIVATE pnHandle,pnSize IF PARAMETERS( ) = 0 RETURN -2 && Retorna -2 se nenhum parmetro for passado ELSE IF !FILE(gcFileName) RETURN -1 && Retorna -1 se o arquivo no existir ENDIF ENDIF pnHandle = FOPEN(gcFileName) && Abre o arquivo pnSize = FSEEK(pnHandle,0,2) && Determina o tamanho do arquivo, atribui a pnSize =FCLOSE(pnHandle) && Fecha o arquivo RETURN pnSize && Retorna um valor FSIZE( ), funo Retorna o tamanho em bytes de um campo ou arquivo especificado. Sintaxe FSIZE(cNomeCampo [, nreaTrabalho | cAliasTabela] | cNomeArquivo) Tipos de retorno: Argumentos cNomeCampo Especifica o nome do campo. nreaTrabalho Especifica a rea de trabalho da tabela para a qual FSIZE( ) retorna um tamanho de campo. FSIZE( ) retorna 0 se no houver uma tabela aberta na rea de trabalho que voc especificar. cAliasTabela Especifica o alias da tabela para a qual FSIZE( ) retorna um tamanho de campo. O Visual FoxPro gera uma mensagem de erro caso voc especifique um alias de tabela que no existe. cNomeArquivo Especifica um arquivo para o qual FSIZE( ) retorna o tamanho em bytes. Numrico

[Pg.: 197]

Comentrios A definio atual de SET COMPATIBLE determina se FSIZE( ) retorna o tamanho de um campo ou de um arquivo. Caso SET COMPATIBLE seja determinado com OFF ou FOXPLUS (padro), FSIZE( ) retorna o tamanho de um campo. Se SET COMPATIBLE for determinado com ON ou DB4, FSIZE( ) retorna o tamanho de um arquivo. A tabela a seguir mostra o tamanho padro (em bytes) para cada tipo de campo. Tipo de campo Moeda Data DataHora Duplo Inteiro Lgico Memo Geral Tamanho de campo padro (em bytes) 8 8 14 8 4 1 4 4

O tamanho do campo pode ser exibido com DISPLAY STRUCTURE e LIST STRUCTURE. Se voc omitir os argumentos opcionais nreaTrabalho e cAliasTabela, FSIZE( ) retornar o tamanho de campo para um campo da rea de trabalho e da tabela atuais. FSIZE( ), exemplo de funo O exemplo a seguir utiliza FSIZE( ) para retornar o tamanho de dois campos na tabela customer. SET COMPATIBLE OFF CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer CLEAR ? FSIZE('contact') && Exibe 30 ? FSIZE('cust_id') && Exibe 6 FTIME( ), funo Retorna a hora da ltima modificao de um arquivo. Sintaxe FTIME(cNomeArquivo) Tipos de retorno: Argumentos cNomeArquivo Especifica o nome do arquivo cuja hora da ltima modificao retornada por FTIME( ). cNomeArquivo pode incluir um caminho com o nome do arquivo. Se no houver nenhum caminho includo com o nome do arquivo, o Visual FoxPro procurar pelo arquivo no diretrio ou pasta padro e nos diretrios ou pastas especificados por SET PATH. Comentrios A hora retornada por FTIME( ) atribuda ao arquivo pelo sistema operacional. Caractere

[Pg.: 198]

FTIME( ), exemplo de funo O exemplo a seguir utiliza FTIME( ) para exibir a hora da ltima modificao em FOXUSER.DBF, o arquivo de recursos do Visual FoxPro. ? FTIME('FOXUSER.DBF') && Exibe a hora da ltima modificao FULLPATH( ), funo Retorna o caminho para um arquivo especificado ou o caminho relativo a um outro arquivo. Sintaxe FULLPATH(cNomeArquivo1 [, nCaminhoMSDOS | cNomeArquivo2]) Tipos de retorno: Argumentos cNomeArquivo1 Especifica o arquivo a ser procurado pelo Visual FoxPro. Certifique-se de incluir a extenso do nome do arquivo. Se o arquivo estiver localizado no caminho do Visual FoxPro, o caminho retornado com o nome do arquivo. O caminho do Visual FoxPro pode ser especificado com SET PATH. nCaminhoMSDOS Especifica que o caminho do MS-DOS procurado, em vez do caminho do Visual FoxPro. nCaminhoMSDOS pode ter qualquer valor numrico. Caso o arquivo no possa ser localizado no caminho do MS-DOS, um caminho e um nome de arquivo so retornados, como se o arquivo tivesse sido encontrado no diretrio ou na pasta padro atual. cNomeArquivo2 Especifica um segundo nome de arquivo a ser procurado. Certifique-se de incluir a extenso do nome do arquivo. FULLPATH( ) retorna o caminho para o primeiro arquivo em relao ao segundo arquivo. STRTRAN( ), funo Procura uma expresso de caracteres ou um campo Memo para ocorrncias de uma segunda expresso de caracteres ou campo Memo e, em seguida, substitui cada ocorrncia com uma terceira expresso de caracteres ou campo Memo. Sintaxe STRTRAN(cProcurado, cProcurarPor [, cSubstituio] [, nIniciarOcorrncia] [, nNmerodeOcorrncias]) Tipos de retorno: Argumentos cProcurado Especifica a expresso de caractere que procurada. cProcurado pode ser um campo Memo. cProcurarPor Especifica a expresso de caractere que procurada em cProcurado. A procura considera maisculas/minsculas. cProcurar pode ser um campo Memo. cSubstituio Especifica a expresso de caracteres que substitui cada ocorrncia de cProcurarPor em cProcurado. Se voc omitir cSubstituio, cada ocorrncia de cProcurarPor substituda com a seqncia vazia. nIniciarOcorrncia Especifica qual ocorrncia de cProcurarPor a primeira a ser substituda. Por exemplo, se nIniciarOcorrncia for 4, a substituio comea com a quarta ocorrncia de cProcurarPor em cProcurado,
[Pg.: 199]

Caractere

Caractere

e a primeira das trs ocorrncias de cProcurarPor permanece inalterada. A ocorrncia onde a substituio comea padronizar a primeira ocorrncia de cProcurarPor se voc omitir nIniciarOcorrncia. nNmerodeOcorrncias Especifica o nmero de ocorrncias de cProcurarPor a serem substitudas. Se voc omitir nNmerodeOcorrncias, todas as ocorrncias de cProcurarPor iniciando com a ocorrncia especificada com nIniciarOcorrncia sero substitudas. Comentrios Voc pode especificar onde a substituio comea e quantas substituies so feitas. STRTRAN( ) retorna a seqncia de caracteres existente. STRTRAN( ), exemplo da funo STORE 'abracadabra' TO gcString ? STRTRAN(gcString, 'a', 'z') && Exibe zbrzczdzbrz ? STRTRAN(gcString, 'a', 'q', 2, 3) && Exibe abrqcqdqbra SYSMETRIC( ), funo Retorna o tamanho dos elementos de tela do sistema operacional. Sintaxe SYSMETRIC(nElementoTela) Tipos de retorno: Argumentos nElementoTela Especifica um elemento de tela. A tabela a seguir mostra valores de nElementoTela e o elemento de tela correspondente: nElementoTela 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Elemento de tela Numrico

Largura da tela Altura da tela. Largura da moldura dimensionvel da janela Altura da moldura dimensionvel da janela Largura das setas de rolagem na barra de rolagem vertical Altura das setas de rolagem na barra de rolagem vertical Largura das setas de rolagem na barra de rolagem horizontal Altura das setas de rolagem na barra de rolagem horizontal Altura do ttulo da janela Largura da moldura no dimensionvel da janela Altura da moldura no dimensionvel da janela Largura da moldura da janela DOUBLE ou PANEL Altura da moldura da janela DOUBLE ou PANEL Largura da caixa de rolagem na barra de rolagem horizontal nas janelas de edio de texto Altura da caixa de rolagem na barra de rolagem vertical nas janelas de edio de texto Largura do cone da janela minimizada Altura do cone da janela minimizada Largura mxima do ponto de insero Altura mxima do ponto de insero Altura da barra de menus de linha simples Largura da janela maximizada Altura da janela maximizada Altura da janela Kanji Largura mnima dimensionvel da janela
[Pg.: 200]

25 26 27 28 29 30 31 32

Altura mnima dimensionvel da janela Largura mnima da janela Altura mnima da janela Largura dos controles da janela Altura dos controles da janela 1 se houver hardware do mouse; do contrrio 0 1 para verso de depurao do Microsoft Windows; do contrrio 0 1 se os botes do mouse estiverem trocados; do contrrio 0 Comentrios

SYSMETRIC( ) retorna o tamanho dos elementos de tela. Estes elementos so: menus, janelas, controles da janela e o ponto de insero. Os valores so retornados em pixels a menos que se diga o contrrio e podem variar para diferentes exibies, unidades de disco de exibio e hardware do vdeo. Para obter informaes adicionais sobre os elementos de tela, consulte a funo GetSystemMetrics no Guia de Referncia do Programador do Microsoft Windows. SYSMETRIC( ) permite determinar o tamanho dos menus, das janelas e dos controles da janela criados no Visual FoxPro. As janelas e os menus criados com DEFINE WINDOW e DEFINE MENU utilizam os mesmos tamanhos do elemento de tela das janelas e menus do sistema operacional.

FUNCTION, comando Identifica o incio de uma definio para uma funo definida pelo usurio. Sintaxe FUNCTION NomeFuno Comandos [RETURN [eExpresso]] ENDFUNC Argumentos NomeFuno No Visual FoxPro, os nomes de funo podem ter at 254 caracteres. Para distinguir entre um nome de arquivo de programa com mais de 10 caracteres e uma funo que comea com os mesmos 10 caracteres nesses dois produtos, coloque o nome de arquivo de programa entre aspas ou inclua uma extenso depois do nome de arquivo de programa. Comentrios Em muitos programas, certas rotinas so repetidas com freqncia. Definir as rotinas comumente utilizadas como funes separadas reduz o tamanho e a complexidade do programa e facilita a sua manuteno. FUNCTION NomeFuno uma instruo dentro de um programa. Designa o incio de uma funo em um programa e identifica a funo pelo nome. FUNCTION NomeFuno seguido de uma srie de comandos do Visual FoxPro que compem a funo. Voc pode incluir RETURN em qualquer lugar da funo para retornar controle ao programa de chamada ou a outro programa e para definir um valor retornado pela funo definida pelo usurio. Se voc no incluir um comando RETURN, um RETURN implcito automaticamente executado quando a funo fechada. Se o comando RETURN no incluir um valor de retorno (ou se um RETURN implcito for executado), o Visual FoxPro atribuir .T. (Verdadeiro) como valor de retorno. A funo finalizada com o comando ENDFUNC. Esse comando opcional, a funo fechada quando encontra outro comando FUNCTION, um comando PROCEDURE ou o final do arquivo de programa.

[Pg.: 201]

Os comentrios podem ser colocados na mesma linha depois de FUNCTION e ENDFUNC. Esses comentrios so ignorados durante a compilao e a execuo do programa. Voc no pode incluir um cdigo de programa executvel normal em um arquivo de programa depois de utilizar as funes definidas pelo usurio; somente funes definidas pelo usurio, procedimentos e definies de classe podem seguir o primeiro comando FUNCTION ou PROCEDURE no arquivo. Quando voc emite DO com um nome de funo, o Visual FoxPro procura a funo em uma ordem especfica, da forma a seguir: 1. O Visual FoxPro procura no arquivo que contm o comando DO. 2. Caso a funo no seja encontrada ali, o Visual FoxPro procura nos arquivos de procedimentos abertos. Os arquivos de procedimentos so abertos com SET PROCEDURE. 3. Caso a funo no seja encontrada em um arquivo de procedimentos aberto, o Visual FoxPro procura nos programas da seqncia de execuo. Os arquivos de programa so procurados desde o ltimo at o primeiro programa executado. 4. Caso a funo ainda no tenha sido encontrada, o Visual FoxPro procura um programa independente. Se um arquivo de programa correspondente for encontrado, o programa executado. Caso contrrio, o Visual FoxPro gera uma mensagem de erro. A clusula IN deve ser includa em DO para executar uma funo em um arquivo especfico. Como padro, os parmetros so passados para as funes por valor. Para obter informaes sobre a passagem de parmetros para funes por referncia, consulte SET UDFPARMS. possvel passar no mximo 27 parmetros para uma funo. Os parmetros podem ser passados para uma funo incluindo uma instruo PARAMETERS ou LPARAMETERS na funo ou colocando uma lista de parmetros imediatamente depois de FUNCTION NomeFuno. Coloque a lista de parmetros entre parnteses e separe os parmetros com vrgulas. FV( ), funo Retorna o valor futuro de um investimento financeiro. Sintaxe FV(nPagamento, nTaxaJuros, nPerodos) Tipos de retorno: Argumentos nPagamento Especifica o pagamento peridico e constante (que pode ser negativo ou positivo). nTaxaJuros Especifica a taxa de juros peridica. Se a taxa de juros for anual mas os pagamentos forem feitos mensalmente, divida a taxa de juros anual por 12. nPerodos Especifica o nmero de perodos durante os quais os pagamentos so feitos. FV( ) considera que os pagamentos peridicos so feitos no final de cada perodo. Comentrios FV( ) calcula o valor futuro de uma srie de pagamentos peridicos e constantes com juros compostos fixos. O valor futuro constitudo pelo total de todos os pagamentos acrescidos de juros. FV( ), exemplo de funo Numrico

[Pg.: 202]

STORE 500 TO gnPayment && Pagamento mensal STORE .075/12 TO gnInterest && Taxa de juros anual - 7,5% STORE 48 TO gnPeriods && Quatro anos (48 meses) CLEAR ? FV(gnPayment, gnInterest, gnPeriods) && Exibe 27887.93 FWRITE( ), funo Grava uma seqncia de caracteres em um arquivo ou em uma porta de comunicao aberta com uma funo de arquivo de nvel inferior. Sintaxe FWRITE(nIdentificadorArquivo, cExpresso [, nCaracteresGravados]) Tipos de retorno: Argumentos nIdentificadorArquivo Especifica o nmero do identificador de arquivo para o arquivo ou a porta de comunicao em que FWRITE( ) executa a gravao. cExpresso Especifica a expresso de caracteres que FWRITE( ) grava no arquivo ou porta especificada com nIdentificadorArquivo. nCaracteresGravados FWRITE( ) grava a expresso de caracteres inteira no arquivo ou porta, a menos que voc inclua nCaracteresGravados. Quando voc inclui nCaracteresGravados, so gravados nCaracteresGravados caracteres no arquivo ou porta. Se nCaracteresGravados for menor do que o nmero de caracteres em cExpresso, sero gravados apenas nCaracteresGravados caracteres no arquivo ou porta. Todos os caracteres em cExpresso sero gravados no arquivo ou porta se nCaracteresGravados for igual ou maior que o nmero de caracteres em cExpresso. Comentrios Diferente de FPUTS( ), FWRITE( ) no coloca um retorno de carro e uma alimentao de linha no fim da seqncia de caracteres. FWRITE( ) retorna o nmero de bytes gravados no arquivo ou porta de comunicao. Se FWRITE( ) no puder executar a gravao no arquivo ou porta, ser retornado 0. GATHER, comando Substitui os dados do registro atual para a tabela atualmente selecionada com dados de uma matriz, um conjunto de variveis ou um objeto. Sintaxe GATHER FROM NomeMatriz | MEMVAR | NAME NomeObjeto [FIELDS ListaCampo | FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura] [MEMO] Argumentos FROM NomeMatriz Especifica a matriz cujos dados substituem aqueles do registro atual. O contedo dos elementos da matriz, comeando do primeiro elemento, substitui o contedo dos campos correspondentes do registro. O contedo do primeiro elemento da matriz substitui o primeiro campo do registro, o contedo do segundo elemento da matriz substitui o segundo campo e assim por diante. Numrico

[Pg.: 203]

Se a matriz tiver menos elementos do que a tabela tem campos, os campos adicionais sero ignorados. Se a matriz tiver mais elementos do que a tabela tem campos, os elementos adicionais sero ignorados. MEMVAR Especifica as variveis de memria ou a matriz de onde os dados so copiados para o registro atual. Os dados so transferidos da varivel de memria para o campo que possui o mesmo nome da varivel de memria. O contedo do campo no ser substitudo se no existir uma varivel de memria com o mesmo nome do campo. Dica Voc pode criar variveis de memria com os mesmos nomes dos campos incluindo MEMVAR ou BLANK em SCATTER. NAME NomeObjeto Especifica um objeto cujas propriedades possuem os mesmos nomes dos campos da tabela. O contedo de cada campo substitudo pelo valor da propriedade com os mesmos nomes dos campos. O contedo de um campo no ser substitudo se no existir uma propriedade com o mesmo nome do campo. FIELDS ListaCampos Especifica os campos cujo contedo substitudo pelo contedo dos elementos da matriz ou das variveis. Somente o campo especificado com ListaCampos tem seu contedo substitudo. FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura Voc pode substituir de forma seletiva os campos com os contedos de elementos de matriz ou de variveis de memria incluindo as clusulas LIKE ou EXCEPT, ou ambas. Se voc incluir a Estrutura LIKE, o Visual FoxPro substituir os campos que correspondem Estrutura. Se incluir Estrutura EXCEPT, o Visual FoxPro substituir todos os campos exceto os que correspondam Estrutura. Estrutura suporta caracteres curinga (* e ?). Por exemplo, para substituir todos os campos que comeam com as letras A e P, utilize: GATHER FROM gamyarray FIELDS LIKE A*,P* MEMO Especifica que o contedo dos campos Memo substitudo pelo contedo de elementos de matriz ou de variveis de memria. Se voc omitir MEMO, os campos Memo sero ignorados quando GATHER substituir o contedo dos campos pelo contedo de uma matriz ou de uma varivel de memria. Os campos do tipo geral ou de figura so sempre ignorados em GATHER, mesmo que voc inclua a palavra-chave MEMO. GATHER, exemplo de comando Exemplo 1 Este exemplo utiliza GATHER para copiar dados para um registro novo na tabela. Aps a criao da tabela Test, SCATTER ser utilizado para criar conjunto de variveis baseados em campos de tabela. Para cada campo ser, ento, atribudo um valor e um novo registro em branco adicionado tabela. CREATE TABLE Test FREE ; (Object C(10), Color C(16), SqFt n(6,2)) SCATTER MEMVAR BLANK m.Object="Caixa" m.Color="Vermelho" m.SqFt=12.5 APPEND BLANK GATHER MEMVAR BROWSE Exemplo 2 Este exemplo utiliza GATHER junto clusula NAME para copiar dados para um registro novo na tabela. Aps a criao da tabela Test, SCATTER utilizado para criar um objeto com propriedades baseadas em campos na tabela. Atribui-se, ento, valores propriedade do objeto e adiciona-se um novo registro em branco tabela. CREATE TABLE Test FREE ;
[Pg.: 204]

(Object C(10), Color C(16), SqFt n(6,2)) SCATTER NAME oTest BLANK oTest.Object="Caixa" oTest.Color="Vermelho" oTest.SqFt=12.5 APPEND BLANK GATHER NAME oTest RELEASE oTest BROWSE GETCOLOR( ), funo Exibe a caixa de dilogo Cor do Windows e retorna o nmero da cor escolhida. Sintaxe GETCOLOR([nNmeroCorPadro]) Tipos de retorno: Argumentos nNmeroCorPadro Especifica a cor inicialmente selecionada quando a caixa de dilogo Cor exibida. Se nNmeroCorPadro no corresponder a uma cor da caixa de dilogo Cor, a primeira cor dessa caixa de dilogo ser selecionada. Se voc omitir nNmeroCorPadro, a cor preta ser selecionada. Comentrios GETCOLOR( ) retornar 1 se voc sair da caixa de dilogo Cor pressionando ESC, selecionando o boto Cancelar ou selecionando Fechar no menu Controle. GETCOLOR( ), exemplo de funo O exemplo a seguir exibe a caixa de dilogo Cor do ambiente Windows com a cor vermelha selecionada. O nmero correspondente cor escolhida exibido quando voc sai da caixa de dilogo. CLEAR ? GETCOLOR(255) GETDIR( ), funo Exibe a caixa de dilogo Selecionar diretrio, a partir da qual possvel selecionar um diretrio ou uma pasta. Sintaxe GETDIR([cDiretrio [, cTexto]]) Tipos de retorno: Argumentos cDiretrio Especifica o diretrio ou pasta inicialmente exibido na caixa de dilogo. Quando cDiretrio no especificado, a caixa de dilogo abre com o padro de diretrio ou pasta do Visual FoxPro exibida. cTexto Especifica o texto para a lista de diretrio ou pasta na caixa de dilogo. No Windows 3.1, o texto aparece como legenda na barra de ttulos da caixa de dilogos. No Windows 95, o texto aparece abaixo da barra de ttulos, dentro da caixa de dilogo.
[Pg.: 205]

Numrico

Caractere

Comentrios GETDIR( ) retorna como seqncia de caracteres o nome do diretrio ou pasta selecionado. Se voc no escolher um diretrio ou pasta (clicar Cancelar, pressionar ESC ou escolher Fechar no menu Controle), GETDIR( ) retorna a seqncia vazia. GETENV( ), funo Retorna o contedo da varivel de ambiente do MS-DOS especificada. Sintaxe GETENV(cNomeVarivel) Tipos de retorno: Caractere

Argumentos cNomeVarivel Especifica o nome da varivel de ambiente do MS-DOS. A seqncia vazia ser retornada se a varivel de ambiente do MS-DOS especificada no existir. Voc pode localizar o diretrio Windows com a varivel de ambiente WINDIR, definida pelo Windows quando ele inicializado. Comentrios Duas variveis de ambiente esto sempre disponveis: COMSPEC e PATH. possvel criar variveis de ambiente personalizadas com o comando SET do MS-DOS. Para obter maiores informaes sobre a criao de variveis de ambiente, consulte o manual do MS-DOS. GETENV( ), exemplo de funo CLEAR ? GETENV('PATH') && Exibe o diretrio do MS-DOS GETFILE( ), funo Exibe a caixa de dilogo Abrir e retorna o nome do arquivo selecionado. Sintaxe GETFILE([cExtensesArquivos] [, cTexto] [,cLegendaBotoAbrir] [,nTipoBoto]) Tipos de retorno: Argumentos cExtensesArquivos Especifica as extenses dos arquivos exibidos na lista rolvel quando o item de menu Todos os arquivos no escolhido. Se passar um valor como literal, inclua-o entre aspas. No inclua um ponto (.) na frente de extenses de arquivos. cExtensesArquivos pode apresentar diversos formatos: Se cExtensesArquivos contiver uma nica extenso (por exemplo, .PRG), sero exibidos apenas os arquivos com essa extenso. Se cExtensesArquivos for uma seqncia vazia, todos os arquivos do diretrio ou pasta atual sero exibidos, se cTipoCriador no estiver includo.
[Pg.: 206]

Caractere

cExtensesArquivos tambm pode conter caracteres curinga (* e ?). Todos os arquivos com extenses que correspondam aos critrios dos caracteres curinga so exibidos. Por exemplo, se cExtensesArquivos for ?X?, todos os arquivos com extenso .FXP, .EXE e TXT sero exibidos. No Visual FoxPro para Windows, cExtensesArquivos pode conter uma descrio de arquivo seguida de uma extenso de arquivo ou uma lista de extenses de arquivos separados por vrgulas. A descrio do arquivo aparece na caixa de listagem Tipos de arquivo. Separe a descrio de arquivos da extenso de arquivo ou lista de extenses com dois pontos (:). Separe descries mltiplas de arquivo com ponto e vrgula (;). Por exemplo, se cExtensesArquivos Text:TXT a descrio do arquivo Text aparece na caixa de listagem Tipos de arquivo e todos os arquivos com a extenso .TXT so exibidos. Se cExtensesArquivos Tabelas:DBF; Arquivos: TXT,BAK a descrio dos arquivos Tabelas e Arquivos aparece na caixa de listagem Tipos de arquivo. Quando Tabelas escolhida na caixa de listagem Arquivos do tipo, todos os arquivos com uma extenso .DBF so exibidos. Quando Arquivos escolhido da caixa de listagem Tipos de arquivo, todos os arquivos com extenso .TXT e .BAK so exibidos. cTexto Especifica o texto de uma lista de diretrios ou pastas na caixa de dilogo Abrir. No ambiente Windows 95, o texto aparece abaixo da lista de arquivos e longas seqncias de texto podem ser truncadas. No Macintosh, o texto aparece dentro da caixa de dilogo. cLegendaBotoAbrir Especifica uma legenda para o boto OK. nTipoBoto Especifica o nmero e o tipo dos botes que aparecem na caixa de dilogo Abrir. Os botes a seguir sero exibidos na caixa de dilogo quando nTipoBoto for 0, 1 ou 2. nTipoBoto Botes

0 (ou omitido) OK Cancelar 1 OK Novo Cancelar 2 OK Nenhum Cancelar Sem Ttulo retornado com o caminho especificado na caixa de dilogo Abrir se nTipoBoto 1 e o usurio escolhe o boto Novo. A seqncia vazia retornada nTipoBoto 2 e o usurio escolhe o boto Nenhum. Comentrios GETFILE( ) retornar a seqncia vazia se voc exibir a caixa de dilogo Abrir, pressionando ESC, escolhendo Cancelar ou escolhendo Fechar, no menu Controle. GETFILE( ), exemplo de funo CLOSE DATABASES SELECT 0 gcTable = GETFILE('DBF', 'Procurar ou criar um.DBF:', 'Procurar',1) DO CASE CASE 'Sem ttulo' $ gcTable CREATE (gcTable) CASE EMPTY(gcTable) RETURN OTHERWISE
[Pg.: 207]

USE (gcTable) BROWSE ENDCASE GETFLDSTATE( ), funo Retorna um valor numrico indicando se um campo em uma tabela ou em um cursor foi editado, se um registro foi includo ou se o status excludo do registro atual foi alterado. Sintaxe GETFLDSTATE(cNomeCampo | nNmeroCampo[,cAliasTabela | nreaTrabalho]) Tipos de retorno: Argumentos cNomeCampo | nNmeroCampo Especifica o nome ou o nmero do campo para o qual o status de edio retornado. O nmero de campo nNmeroCampo corresponde posio do campo na estrutura da tabela ou cursor. DISPLAY STRUCTURE ou FIELD( ) podem ser utilizados para determinar o nmero de um campo. possvel especificar 1 para que nNmeroCampo retorne uma seqncia de caracteres que consista de valores de status de edio e excluso para todos os campos na tabela ou cursor. Por exemplo, se uma tabela apresentar cinco campos e apenas o primeiro tiver sido editado, GETFLDSTATE( ) retornar: 121111 O nmero 1 na primeira posio indica que o status de excluso no foi alterado. Voc pode, tambm, incluir 0 em nNmeroCampo para determinar se o status de excluso do registro atual foi alterado desde a abertura da tabela ou cursor. Observao Utilizando GETFLDSTATE( ) determina apenas se o status de excluso do registro atual foi alterado. Por exemplo, se voc marcar um registro para ser excludo e tornar a cham-lo, GETFLDSTATE( ) indicar se o status de excluso foi alterado, mesmo que o status de excluso do registro tenha retornado ao seu estado original. Utilize DELETED( ) para determinar o status de excluso de um registro. cAliasTabela Especifica o alias da tabela ou do cursor para o qual o status de excluso de registro ou edio de campo retornado. nreaTrabalho Especifica a rea de trabalho da tabela ou do cursor para o qual o status de excluso de registro ou edio de campo retornado. Se um alias ou uma rea de trabalho no forem especificados, GETFLDSTATE( ) retornar um valor para um campo na tabela ou no cursor selecionado no momento. Comentrios A tabela a seguir lista os valores de retorno de caractere e o status de edio ou excluso correspondente. Valor de retorno Status de edio ou excluso Numrico

1 O campo no foi editado ou o status de excluso no foi alterado. 2 O campo foi editado ou o status de excluso foi alterado. 3 O campo em um registro includo no foi editado ou o status de excluso no foi alterado para o registro includo. 4 O campo em um registro includo foi editado ou o status de excluso foi alterado para o registro includo.

[Pg.: 208]

A utilizao de buffer de linha ou de tabela deve ser ativada com CURSORSETPROP( ) para que GETFLDSTATE( ) opere em tabelas locais. O status de excluso ou edio ser retornado para a tabela ou cursor que estiver aberto na rea de trabalho selecionada no momento, se GETFLDSTATE( ) for emitido sem os argumentos opcionais cAliasTabela ou nreaTrabalho. GETFLDSTATE( ), exemplo de funo O exemplo a seguir demonstra como utilizar a funo GETFLDSTATE( ) para determinar se o contedo de um campo foi alterado. MULTILOCKS ativado (ON), um requerimento para utilizao de buffer de tabela. A tabela customer no banco de dados testdata aberto e CURSORSETPROP( ) , ento, utilizado para ajustar o modo de utilizao do buffer para utilizao de buffer de tabela otimista (5). GETFLDSTATE( ) emitido para exibir um valor correspondente (1) para o estado no modificado do campo cust_id, antes que o mesmo seja modificado. O campo cust_id modificado com REPLACE e GETFLDSTATE( ) emitido novamente para exibir um valor correspondente (2) e modificar o estado do campo cust_id. TABLEREVERT( ) utilizado para retornar a tabela ao seu estado original e GETFLDSTATE( ) emitido novamente para exibir um valor correspondente (1) ao estado original do campo cust_id. CLOSE DATABASES CLEAR SET MULTILOCKS ON && Permite utilizao de buffer de tabela OPEN DATABASE SYS(2004)+"samples\data\testdata" USE Customer && Abre tabela customer =CURSORSETPROP("Utilizao do buffer",5,"cliente") && Ativa utilizao de buffer de tabela * Obtm estado do campo no campo original cust_id e exibe estado nState=GETFLDSTATE("cust_id") DO DisplayState WITH nState * Altera contedo do campo e exibe estado REPLACE cust_id WITH "***" nState=GETFLDSTATE("cust_id") DO DisplayState WITH nState * Descarta alterao de tabela e exibe estado = TABLEREVERT(.T.) && Descarta todas alteraes de tabela nState=GETFLDSTATE("cust_id") DO DisplayState WITH nState PROCEDURE DisplayState PARAMETER nState DO CASE CASE nState=1 =MESSAGEBOX("Campo no foi modificado ",0,"Resultados") OTHERWISE =MESSAGEBOX("Campo foi modificado ",0,"Resultados") ENDCASE GETFONT( ), funo Exibe a caixa de dilogo Fonte e retorna o nome da fonte selecionada. Sintaxe GETFONT( )

[Pg.: 209]

Tipos de retorno:

Caractere Comentrios

GETFONT( ) retorna o nome, o tamanho e o estilo da fonte selecionada. Sua escolha retornada como uma seqncia de caracteres com o nome, o tamanho e o estilo da fonte separados por vrgulas. GETFONT( ) retorna a seqncia vazia quando voc sai da caixa de dilogo Fonte selecionando Cancelar ou Fechar, no menu Controle, ou pressionando ESC. Observao Os comandos e funes do Visual FoxPro podem ser abreviados para quatro caracteres. No caso de GETFONT( ) e GETFILE( ), em que ambos comeam com as mesmas quatro letras, a precedncia dada para GETFILE( ). Ao emitir GETF( ), a caixa de dilogo Abrir emitida. GETNEXTMODIFIED( ), funo Retorna o nmero de registro do registro modificado que segue em um buffer de tabela ou cursor. Sintaxe GETNEXTMODIFIED(nNmeroRegistro[,cAliasTabela | nreaTrabalho]) Tipos de retorno: Numrico Argumentos nNmeroRegistro Especifica o nmero de registro aps o qual GETNEXTMODIFIED( ) procura o registro modificado seguinte. Especifique 0 em nNmeroRegistro para determinar o primeiro registro modificado na tabela ou no cursor. cAliasTabela Especifica o alias da tabela ou cursor para o qual GETNEXTMODIFIED( ) retorna o nmero do prximo registro modificado. nreaTrabalho Especifica a rea de trabalho da tabela ou cursor para o qual GETNEXTMODIFIED( ) retorna o nmero do prximo registro modificado. Se voc no especificar um alias ou uma rea de trabalho, GETNEXTMODIFIED( ) retornar o nmero de registro correspondente ao prximo registro modificado na tabela ou cursor selecionados no momento. Comentrios GETNEXTMODIFIED( ) retornar 0 se no houver nenhum registro modificado depois daquele que voc especificou. Um registro ser considerado modificado se o contedo de qualquer um de seus campos sofrer qualquer tipo de alterao (mesmo se o contedo original do campo for restaurado) ou o status de excluso do registro for alterado. GETNEXTMODIFIED( ) pode operar somente em tabelas e cursores para os quais a utilizao de buffer de tabela estiver ativada. A utilizao de buffer de tabela ativada com CURSORSETPROP( ). GETNEXTMODIFIED( ), exemplo da funo O exemplo a seguir demonstra como se pode utilizar GETNEXTMODIFIED( ) para determinar quais registros em uma tabela foram alterados. MULTILOCKS ajustado para ON, um requerimento para utilizao de buffer de tabela. A tabela customer no banco de dados testdata aberta, e CURSORSETPROP( ) , ento utilizada para ajustar o modo de utilizao do buffer para utilizao de buffer otimista (5). SKIP emitido para mover o ponteiro do registro para o segundo registro, e o campo cust_id modificado com REPLACE. GETNEXTMODIFIED(0) utilizado para exibir um nmero de registro do registro seguinte modificado (2, o segundo registro), iniciando a partir do incio da tabela. TABLEREVERT( ) utilizado para retornar a tabela ao seu estado original, e GETNEXTMODIFIED(0) novamente utilizado
[Pg.: 210]

para exibir o nmero do registro do registro seguinte modificado (0, indicando que no h registros modificados). CLOSE DATABASES CLEAR OPEN DATABASE SYS(2004)+"samples\data\testdata" SET MULTILOCKS ON && Permite utilizao de buffer de tabela UTILIZE Customer && Abre a tabela customer =CURSORSETPROP("Utilizao de tabela", 5, "cliente") && ativa utilizao de buffer de tabela SKIP && Move o registro do ponteiro para o segundo registro * Altera o contedo dos campos REPLACE cust_id WITH "***" * Chama a funo MESSAGEBOX com resultados de GETNEXTMODIFIED =MESSAGEBOX("Registro " + ALLTRIM(STR(GETNEXTMODIFIED(0))) + ; " alterado.",0,"Resultados") * Retorna a tabela e exibe resultados com MESSAGEBOX =TABLEREVERT(.T.) && Descarta todas as alteraes de tabela nChange=GETNEXTMODIFIED(0) IF nChange=0 =MESSAGEBOX("Registro(s) foram revertidos.",0,"Resultados") ELSE =MESSAGEBOX("Registro " + ALLTRIM(STR(GETNEXTMODIFIED(0))) + ; " alterado.",0,"Resultados") ENDIF GETPAD( ), funo Retorna o ttulo de menu para uma dada posio na barra de menus. Sintaxe GETPAD(cNomeBarraMenus, nPosioBarraMenus) Tipos de retorno: Argumentos cNomeBarraMenus Especifica o nome da barra de menus. nPosioBarraMenus Especifica uma posio na barra de menus. nPosioBarraMenus pode variar de 1 (o nome situado mais esquerda na barra de menus) at o nmero de ttulos de menus na barra de menus. Comentrios Os nomes de menus em uma barra de menus podem ser adicionados, removidos ou reorganizados. Utilize DEFINE PAD para adicionar um nome de menu a uma barra de ttulos ou RELEASE PAD para remover um ttulo de menu. GETPAD( ), exemplo da funo O programa a seguir utiliza GETPAD( ) para testar se o nome do menu Editar uma barra de menu do sistema no Visual FoxPro. Caso afirmativo, GETPAD( ) retornar o nome do menu. (Para retornar a barra de menu Editar ao seu estado padro, emita o comando SET SYSMENU TO DEFAULT.) Caractere

[Pg.: 211]

FOR gnCount = 1 TO CNTPAD('_msysmenu') && Nmero de pads IF PRMPAD('_msysmenu', GETPAD('_msysmenu', gnCount)) = 'Edit' RELEASE PAD (GETPAD('_msysmenu', gnCount)) OF _msysmenu EXIT ENDIF ENDFOR GO | GOTO, comando Move o ponteiro do registro para o nmero de registro especificado. Sintaxe GO [RECORD] nNmeroRegistro [IN nreaTrabalho | IN cAliasTabela] Ou GO TOP | BOTTOM [IN nreaTrabalho | IN cAliasTabela] Ou GOTO [RECORD] nNmeroRegistro [IN nreaTrabalho | IN cAliasTabela] Ou GOTO TOP | BOTTOM [IN nreaTrabalho | IN cAliasTabela] Argumentos RECORD nNmeroRegistro Especifica o nmero do registro fsico para o qual o ponteiro do registro deve ser movido. Voc pode omitir GO ou GOTO totalmente e especificar apenas o nmero do registro. Caso especifique apenas o nmero do registro, voc poder mover o ponteiro do registro somente dentro da rea de trabalho atual. IN nreaTrabalho Especifica a rea de trabalho da tabela na qual o ponteiro do registro movido. IN cAliasTabela Especifica o alias da tabela na qual o ponteiro do registro movido. TOP Posiciona o ponteiro do registro no primeiro registro na tabela. Caso a tabela esteja utilizando um ndice ascendente, o primeiro registro ser o que apresenta o menor valor-chave. Se o ndice estiver em ordem descendente, o primeiro registro ser o que apresenta o maior valor-chave. BOTTOM Posiciona o ponteiro do registro no ltimo registro da tabela. Caso a tabela esteja utilizando um ndice ascendente, o ltimo registro ser o que apresenta o maior valor-chave. Se o ndice estiver em ordem descendente, o ltimo registro ser o que apresenta o menor valor-chave. Comentrios GO e GOTO podem ser utilizados alternativamente. Estes comandos operam na rea de trabalho atual da tabela, a menos que voc especifique outra rea de trabalho com a clusula IN. GO | GOTO, exemplo do comando CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') UTILIZE products && Abre tabela de produtos UTILIZE customer IN 0 && Abre tabela Customer GO BOTTOM IN products CLEAR ? RECNO('produtos') GO TOP ? RECNO( ) && Exibe 1 GO 5 ? RECNO( ) && Exibe 5

[Pg.: 212]

GOMONTH( ), funo Retorna a data que indica um nmero de meses especificado antes ou depois de uma determinada expresso de data ou de data e hora. Sintaxe GOMONTH(dExpresso | tExpresso, nNmeroDeMeses) Tipos de retorno: Argumentos dExpresso Especifica uma expresso de data para a qual GOMONTH( ) retorna a data. tExpresso Especifica uma expresso de data e hora para a qual GOMONTH( ) retorna a data. NNmeroDeMeses Especifica o nmero de meses da data ou data e hora. Especifica o nmero de meses da data ou da data e hora. Se nNmeroDeMeses for positivo, GOMONTH( ) retornar uma data correspondente a nNmeroDeMeses meses depois da data ou data e hora. Se nNmeroDeMeses for negativo, GOMONTH( ) retornar uma data correspondente a nNmeroDeMeses meses antes da data ou data e hora. GOMONTH( ), exemplo da funo SET CENTURY ON STORE GOMONTH({08/02/95}, 5) TO gdDeadLine CLEAR ? gdDeadLine && Exibe 01/02/1996 ? GOMONTH({12/31/95}, 2) && Exibe 02/29/1996 ? GOMONTH({12/31/95}, -2) && Exibe 10/31/1995 HEADER( ), funo Retorna o nmero de bytes no cabealho do arquivo de tabela atual ou especificado. Sintaxe HEADER([nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho | cAliasTabela Retorna o tamanho do cabealho de uma tabela aberta em uma outra rea de trabalho. nreaTrabalho especifica o nmero da rea de trabalho e cAliasTabela especifica o alias da tabela. Se a rea de trabalho e o alias forem omitidos, HEADER( ) retornar o tamanho do cabealho da tabela aberta na rea de trabalho atual. HEADER( ) retornar 0 se no houver uma tabela aberta na rea de trabalho especificada. Se uma tabela no possuir o alias especificado, o Visual FoxPro exibir uma mensagem de erro. Comentrios Um cabealho de tabela contm informaes sobre a prpria tabela, como os tamanhos e nomes de campo e a presena de um arquivo de memo ou ndice estrutural. Numrico Data

[Pg.: 213]

HELP, comando Abre a janela da Ajuda. Sintaxe HELP [Tpico | ID nIDContexto] [IN [WINDOW] NomeJanela | IN [WINDOW] SCREEN | IN [WINDOW]] [NOWAIT] Argumentos Tpico Especifica o tpico da Ajuda a ser exibido. Se voc incluir somente um trecho de um ttulo de tpico, o Visual FoxPro abre a janela da Ajuda e exibe o tpico com o ttulo que mais corresponde ao trecho includo. ID nIDContexto Especifica o tpico da Ajuda a exibir, com base na ID de contexto do tpico. Ao utilizar a Ajuda no estilo .DBF, nIDContexto ser um valor no campo Contextid da tabela da ajuda. O campo Contextid dever ser o primeiro campo da tabela. Ao utilizar a Ajuda no estilo grfico, nIDContexto ser um nmero de contexto na seo MAP do arquivo de projeto da Ajuda. IN [WINDOW] NomeJanela Abre a janela da Ajuda dentro de uma janela pai. A janela da Ajuda no assume as caractersticas da janela pai onde colocada. Se a janela da Ajuda for ativada dentro de uma janela pai, no poder ser movida para fora da janela pai. Se a janela pai for movida, a janela da Ajuda ser movida com ela. Para abrir a janela da Ajuda de dentro de uma janela pai, necessrio que a janela pai seja primeiro definida com DEFINE WINDOW. IN [WINDOW] SCREEN Coloca a janela da Ajuda explicitamente na janela principal do Visual FoxPro. NOWAIT Na Ajuda do estilo .DBF, especifica que a execuo do programa deve continuar depois da janela da Ajuda ser aberta. Caso voc omita NOWAIT ao utilizar a Ajuda do estilo .DBF, a execuo do programa ser suspensa na linha que contm o comando HELP at que a janela da Ajuda seja fechada. Na Ajuda do estilo grfico, o argumento NOWAIT no tem efeito e a execuo do programa sempre continua depois que o comando HELP emitido. Comentrios Para obter maiores informaes sobre a criao do seu prprio sistema de Ajuda, consulte a parte 7, Criando arquivos de ajuda, no Guia do Desenvolvedor. HIDE MENU, comando Oculta uma ou mais barras de menus ativas ou definidas pelo usurio. Sintaxe HIDE MENU NomeBarraMenu1 [, NomeBarraMenu2 ...] | ALL [SAVE] Argumentos NomeBarraMenu1 [, NomeBarraMenu2 ...] Especifica o nome da barra de menus ou uma lista de barras de menus (separadas por vrgulas) a serem ocultadas.
[Pg.: 214]

ALL Oculta todas as barras de menus definidas. SAVE Coloca uma imagem de uma barra de menus na tela ou em uma janela. Colocar uma imagem de uma barra de menus na tela til durante o desenvolvimento e teste de um programa. Imagens de barras de menus podem ser retiradas da janela principal do Visual FoxPro ou de uma janela definida pelo usurio com CLEAR. Comentrios HIDE MENU remove a barra de menus especificada, um conjunto de barras de menus ou todas as barras de menus da janela principal do Visual FoxPro ou de uma janela definida pelo usurio sem remover a definio de menu da memria. Para que uma barra de menus possa ser ocultada, ela deve primeiro ser criada com DEFINE MENU. Ocultar uma barra de menus no a mesma coisa que desativ-la. Quando uma barra de menus est oculta, ela fica residente na memria e pode ser exibida na janela principal do Visual FoxPro ou em uma janela definida pelo usurios com ACTIVATE MENU ou SHOW MENU. HIDE POPUP, comando Oculta um ou mais menus ativos criados com DEFINE POPUP. Sintaxe HIDE POPUP NomeMenu1 [, NomeMenu2 ...] | ALL [SAVE] Argumentos NomeMenu1 [, NomeMenu2 ...] Especifica o nome do menu ou da lista de menus (separados por vrgula) a serem ocultados. ALL Oculta todos os menus definidos. SAVE Coloca uma imagem de um menu na janela principal do Visual FoxPro ou em uma janela definida pelo usurio. Colocar uma imagem de um menu na tela til durante o desenvolvimento e teste do programa. As imagens de menu podem ser retiradas da janela principal do Visual FoxPro ou de uma janela definida pelo usurio com CLEAR. Comentrios HIDE POPUP remove o menu especificado, um conjunto de menus ou todos os menus da janela principal do Visual FoxPro ou de uma janela definida pelo usurio sem remover as definies de menu da memria. Para que um menu possa ser ocultado, ele deve primeiro ser criado com DEFINE POPUP. Ocultar um menu no a mesmo coisa que desativ-lo. Quando um menu ocultado, ele fica residente na memria e pode ser exibido na janela principal do Visual FoxPro ou em uma janela definida pelo usurio com ACTIVATE POPUP ou SHOW POPUP. HIDE WINDOW, comando Oculta uma janela ativa definida pelo usurio ou uma janela do sistema do Visual FoxPro. Sintaxe HIDE WINDOW NomeJanela1 [, NomeJanela2 ... ] | ALL | SCREEN [ IN [WINDOW] NomeJanelaN | IN [WINDOW] SCREEN | IN [WINDOW]] [BOTTOM | TOP | SAME]

[Pg.: 215]

Argumentos NomeJanela1 [, NomeJanela2 ...] Especifica o nome da janela ou uma lista de janelas (separadas por vrgulas) a serem ocultadas. Caso voc emita HIDE WINDOW sem argumentos, a janela ativa ser ocultada. No Visual FoxPro, possvel especificar o nome de uma barra de ferramentas a ser ocultada. Consulte SHOW WINDOW para obter uma lista dos nomes das barras de ferramentas do Visual FoxPro. ALL Oculta todas as janelas. SCREEN Oculta a janela principal do Visual FoxPro. Para exibi-la novamente, emita ACTIVATE WINDOW SCREEN ou SHOW WINDOW SCREEN. IN [WINDOW] NomeJanelaN Oculta a janela em uma janela-pai. IN [WINDOW] SCREEN Oculta explicitamente uma janela na janela principal do Visual FoxPro. BOTTOM | TOP | SAME Especifica a posio em que as janelas esto ocultas em relao a outras janelas. BOTTOM coloca uma janela atrs de todas as outras. TOP (padro) coloca uma janela em frente a todas as outras. SAME oculta uma janela sem afetar sua colocao frontal ou posterior. Para preservar as posies relativas de vrias janelas ocultas quando elas so reexibidas com SHOW WINDOW ALL, inclua a palavrachave SAME ao ocultar as janelas. Comentrios HIDE WINDOW HIDE WINDOW remove uma janela ou um conjunto de janelas da janela principal do Visual FoxPro ou de uma janela definida pelo usurio. possvel utilizar HIDE WINDOW para ocultar janelas do sistema como a janela Comando, a janela Sesso de dados e assim por diante. Ocultar uma janela no o mesmo que fech-la. Ao ser ocultada, a janela permanece na memria e continua ativa. A sada pode ser enviada para uma janela oculta, mas no possvel visualiz-la. Liberar uma janela remove-a da memria. As janelas removidas da memria devem ser redefinidas para serem exibidas novamente. Uma janela pode ser exibida com ACTIVATE WINDOW ou SHOW WINDOW. Para ocultar uma janela do sistema ou uma barra de ferramentas (no Visual FoxPro), coloque a janela do sistema inteira ou o nome da barra de ferramentas entre aspas. Por exemplo, para ocultar a barra de ferramentas Controles de relatrio no Visual FoxPro, emita o comando: HIDE WINDOW Controles de Relatrio HIDE WINDOW, exemplo de comando No exemplo a seguir, uma janela denominada wOutput1 definida e ativada. O programa espera que voc pressione uma tecla para, em seguida, ocultar a janela. O programa espera que voc pressione uma tecla novamente para, depois, exibir a janela. O pressionamento de uma tecla pela terceira vez remove a janela da tela e da memria. DEFINE WINDOW wOutput1 FROM 6,1 TO 19,75 TITLE 'Output' ; CLOSE FLOAT GROW SHADOW ZOOM ACTIVATE WINDOW wOutput1 WAIT WINDOW 'Press a key to hide this window' HIDE WINDOW wOutput1 WAIT WINDOW 'Press a key to see the window again' SHOW WINDOW wOutput1 WAIT WINDOW 'Press a key to remove the window from memory' DEACTIVATE WINDOW wOutput1 RELEASE WINDOW wOutput1
[Pg.: 216]

HOME( ), funo Retorna o nome do diretrio de onde o Visual FoxPro foi inicializado. Sintaxe HOME( ) Tipos de Retorno: Caractere Comentrios HOME( ) retorna o nome do diretrio de onde o Visual FoxPro foi inicializado. HOME( ) idntico a SYS(2004) e fornecido para manter a compatibilidade com o dBASE IV. HOME( ), exemplo de funo ? 'Diretrio de inicializao do Visual FoxPro : ', HOME( ) HOUR( ), funo Retorna a parte da hora de uma expresso DataHora. Sintaxe HOUR(tExpresso) Argumentos tExpresso Especifica uma expresso DataHora da qual HOUR( ) retorna a hora. Tipos de Retorno: Numrico Comentrios HOUR( ) retorna um valor numrico baseado em um formato de 24 horas e no afetado pela definio atual de SET HOURS. Por exemplo, se SET HOURS 12 ou 24, o comando a seguir retorna 13: ? HOUR({02/16/95 1:00pm}) HOUR( ), exemplo de funo O exemplo a seguir exibe a parte de hora do horrio atual e a parte de hora de um horrio especfico. CLEAR ? HOUR(DATETIME( )) ? HOUR({10:42am}) && Exibe 10 IF... ENDIF, comando Executa condicionalmente um conjunto de comandos baseados no valor de uma expresso lgica. Sintaxe IF lExpresso [THEN]
[Pg.: 217]

Comandos [ELSE Comandos] ENDIF Argumentos lExpresso Especifica a expresso lgica avaliada. Caso lExpresso resulte em verdadeiro (.T.), todos os comandos depois de IF ou THEN e antes de ELSE ou ENDIF (aquele que ocorrer primeiro) sero executados. Se lExpresso for falso (.F.) e ELSE for includo, todos os comandos depois de ELSE e antes de ENDIF sero executados. Se lExpresso for falso (.F.) e ELSE no for includo, todos os comandos entre IF e ENDIF sero ignorados. Neste caso, a execuo do programa continuar com o primeiro comando depois de ENDIF. Comentrios possvel aninhar um bloco IF... ENDIF dentro de outro bloco IF... ENDIF. Os comentrios precedidos por && podem ser colocados na mesma linha depois de IF, THEN, ELSE e ENDIF. Esses comentrios so ignorados durante a compilao e a execuo do programa. IF... ENDIF, exemplo do comando CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE Customer && Abre a tabela customer GETEXPR 'Digite a condio para localizar ' TO gcTemp; TYPE 'L' DEFAULT 'EMPRESA = ""' LOCATE FOR &gcTemp && Digita a expresso LOCATE IF FOUND( ) && Foi encontrado? DISPLAY && Em caso positivo, exibe o registro ELSE && Em caso negativo ? 'Condio ' + gcTemp + ' no encontrada ' && Exibe a mensagem ENDIF USE IIF( ), funo Retorna um de dois valores, dependendo do valor de uma expresso lgica. Sintaxe IIF(lExpresso, eExpresso1, eExpresso2) Tipos de retorno: Argumentos lExpresso Especifica a expresso lgica que IIF( ) avalia. eExpresso1, eExpresso2 Se lExpresso resultar em verdadeiro (.T.), ser retornado eExpresso1. Se lExpresso resultar em falso (.F.), ser retornado eExpresso2. Comentrios Caractere, Numrico, Moeda, Data ou DataHora

[Pg.: 218]

Esta funo, tambm conhecida como IF Imediato, avalia uma expresso lgica e, em seguida, retorna uma de duas expresses. Se a expresso lgica resultar em verdadeiro (.T.), IIF( ) retornar a primeira expresso. Se a expresso lgica resultar em falso (.F.), IIF( ) retornar a segunda expresso. Dica Pode-se utilizar esta funo no lugar de IF ... ENDIF com expresses condicionais simples. Ela especialmente til em expresses de relatrio e etiqueta que especificam condicionalmente contedos de campos. A execuo da funo IIF( ) tambm consideravelmente mais rpida do que a execuo de uma funo IF ... ENDIF equivalente. IIF( ), exemplo da funo O exemplo a seguir utiliza IIF( ) para verificar se o campo Notes na tabela employee est vazio. Se estiver vazio, Nenhuma descrio ser exibida; caso contrrio, os contedos do campo Memo sero exibidos. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE employee && Abre a tabela Employee CLEAR SCAN ? IIF(EMPTY(notes), 'Nenhuma observao', notes) ENDSCAN IMPORT, comando Importa dados de um formato de arquivo externo para criar uma nova tabela do Visual FoxPro. Sintaxe IMPORT FROM NomeArquivo [DATABASE NomeBancoDados [NAME NomeTabelaLongo]] [TYPE] FW2 | MOD | PDOX | RPD | WK1 | WK3 | WKS | WR1 | WRK | XLS | XL5 [SHEET cNomeFolha] [AS nPginaCdigo] Argumentos NomeArquivo Especifica o nome do arquivo do qual os dados devem ser importados. Se voc no incluir uma extenso no nome de arquivo, ser considerada a extenso padro para o tipo de arquivo especificado. DATABASE NomeBancoDados Especifica um banco de dados para o qual a nova tabela adicionada. NAME NomeTabelaLongo Especifica um nome longo para a nova tabela. Nomes longos podem conter at 128 caracteres e podem ser utilizados no lugar de nomes curtos de arquivos no banco de dados. TYPE A palavra-chave TYPE opcional, mas voc deve incluir um dos tipos de arquivo descritos abaixo: Tipo de arquivo Descrio && Campo Memo vazio?

FW2 Incluir FW2 para importar arquivos FW2, criados pelo Framework II. MOD Incluir MOD para importar arquivos MOD, criados pelo Microsoft Multiplan verso 4.1. PDOX Incluir PDOX para importar arquivos do Paradox. Os arquivos de bancos de dados do Paradox verses 3.5 e 4.0 da Borland podem ser importados ao incluir a opo PDOX. RPD Incluir RPD para importar arquivos RPD criados pelo RapidFile. WK1 | WK3 | WKS Incluir WK1 para importar dados de uma planilha do Lotus 1, 2 e 3. As colunas da planilha se tornam campos na tabela e as linhas, registros na tabela. atribuda uma extenso .WK1 a planilhas criadas no Lotus 1, 2 e 3 revises 2.x; uma extenso .WK3 a planilhas criadas no Lotus1, 2 e 3 revises 3.x; e uma extenso .WKS a planilhas criadas no Lotus1, 2 e 3, reviso 1-A. WR1 | WRK Incluir WR1 para importar dados de uma planilha do Lotus Symphony. As colunas e as linhas da planilha tornam-se respectivamente campos e registros na tabela. atribuda uma extenso .WR1 a
[Pg.: 219]

planilhas criadas no Symphony verso 1.10 e atribuda uma extenso .WRK a planilhas criadas no Symphony verso 1.1. XLS Incluir XLS para importar dados de planilhas do Microsoft Excel verses 2.0, 3.0 e 4.0. As colunas e as linhas da planilha tornam-se respectivamente campos e registros na tabela. Os arquivos de planilhas criados no Microsoft Excel tm a extenso .XLS. XL5 [SHEET cNomeFolha] Incluir XL5 para importar dados do Microsoft Excel verso 5.0. As colunas e as linhas da planilha tornam-se respectivamente campos e registros na tabela. Os arquivos de planilhas criados no Microsoft Excel tm a extenso .XLS. Se voc omitir a clusula SHEET, os dados em Plan1 sero importados. Para importar dados de uma folha especfica, incluir a palavra-chave SHEET e especificar o nome da folha com cNomeFolha. AS nPginaCdigo Especifica a pgina de cdigo do arquivo importado. O Visual FoxPro copia o contedo do arquivo importado e, medida que copia os dados, converte automaticamente os dados para a pgina de cdigo atual do Visual FoxPro. Caso voc especifique um valor para nPgina Cdigo que no seja suportado, o VisualFoxPro exibir uma mensagem de erro. Para que nPginaCdigo possa exibir uma caixa de dilogo Pgina de cdigo, com a qual voc define uma pgina para o arquivo importado, utilize o GETCP(). Se AS nPginaCdigo for omitida e o Visual FoxPro no conseguir determinar a pgina de cdigo do arquivo importado, ele copiar o contedo do arquivo importado e, medida que copia os dados, converter automaticamente os dados para a pgina de cdigo atual do Visual FoxPro. Se AS nPginaCdigo for omitida e o Visual FoxPro conseguir determinar a pgina de cdigo do arquivo importado, ele converter automaticamente os dados do arquivo importado da pgina de cdigo dos dados para a pgina de cdigo atual do Visual FoxPro. Utilize CPCURRENT( ) para determinar a pgina de cdigo atual do Visual FoxPro. Se nPginaCdigo for igual a 0, o Visual FoxPro ir considerar que a pgina de cdigo do arquivo importado a mesma e atual do Visual FoxPro e no ser feita nenhuma converso de pgina de cdigo. Comentrios A maioria dos pacotes de software armazena seus dados em um formato de arquivo que no pode ser aberto diretamente no Visual FoxPro. IMPORT cria uma nova tabela do Visual FoxPro a partir dos dados armazenados em formatos de arquivo que o Visual FoxPro no consegue ler diretamente. Uma nova tabela criada com o mesmo nome do arquivo do qual os dados so importados. A extenso .DBF atribuda tabela recm-criada. INDEX, comando Cria um arquivo de ndice para exibir e acessar registros de tabelas em uma ordem lgica. Sintaxe INDEX ON eExpresso TO NomeArquivoIDX | TAG NomeMarca [OF NomeArquivoCDX] [FOR lExpresso] [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE] Argumentos eExpresso Especifica uma expresso de ndice que pode incluir o nome de um ou mais campos a partir da tabela atual. Uma chave de ndice com base na expresso de ndice criada no arquivo de ndice para cada registro da tabela. O Visual FoxPro utiliza estas chaves para exibir e acessar registros da tabela. Observao No utilize uma varivel, um elemento de matriz , um campo ou expresso de campo de uma tabela em uma outra rea de trabalho para eExpresso. Se voc acessar um ndice que contenha uma varivel ou um campo inexistente ou que no possa ser localizado, o Visual FoxPro ir gerar uma mensagem de erro.

[Pg.: 220]

Campos Memo no podem ser utilizados sozinhos em expresses de arquivo de ndice; devem ser combinados com outras expresses de caracteres. Se voc incluir um campo precedido por um alias de tabela ou letra de rea de trabalho na expresso de ndice, o Visual FoxPro gera uma mensagem de erro. Embora voc possa otimizar clusulas FOR com a tecnologia Rushmore caso sejam includos campos de alias, ainda assim, insistimos que se evite o uso de campos de alias na criao de ndices. Em diversos casos (USE ... AGAIN, buscas SQL, e assim por diante), um alias diferente atribudo automaticamente a uma tabela e o ndice pode no estar atualizado ou ser utilizado de forma adequada. Para obter maiores informaes sobre a tecnologia Rushmore, consulte Compreendendo a tecnologia Rushmore, no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. Se voc tentar construir um ndice com uma chave com tamanho varivel, ela ser preenchida com espaos. O Visual FoxPro no suporta chaves de ndice de tamanho varivel. possvel criar uma chave de ndice de comprimento zero. Por exemplo, este tipo de chave criado quando a expresso de ndice uma subseqncia de um campo Memo vazio. Essa chave gera uma mensagem de erro. Quando o Visual FoxPro cria um ndice, ele avalia campos no primeiro registro da tabela. Se um campo estiver vazio, talvez seja necessrio inserirem-se dados temporrios no primeiro registro, a fim de impedir a ocorrncia de uma chave de ndice de comprimento zero. O comprimento de uma chave de ndice para um ndice .IDX deve estar entre 1 e 100 caracteres. Para um ndice .CDX , esta deve estar entre 1 e 240 caracteres. TO NomeArquivoIDX Cria um arquivo de ndice .IDX. O arquivo de ndice recebe a extenso padro .IDX, que pode ser substituda incluindo-se uma extenso diferente ou alterando-se a extenso de ndice padro no arquivo de configurao do Visual FoxPro. As regras padro do MS-DOS para nomes de arquivos devem ser observadas na denominao de arquivos de ndice. TAG NomeMarca [OF NomeArquivoCDX] Cria um arquivo de ndice composto. Trata-se de um arquivo de ndice nico que consiste em qualquer nmero de marcas separadas (entradas de ndice). Cada marca identificada pelo seu nome exclusivo. Os nomes devem comear com uma letra ou um sublinhado e podem consistir em qualquer combinao de at 10 letras, dgitos ou sublinhados. O nmero de marcas em um arquivo de ndice composto limitado apenas pelo espao em disco e pela memria disponveis. Os arquivos de ndice composto de vrias entradas so sempre compactados. No necessrio incluir COMPACT ao criar um desses arquivos. Seus nomes recebem a extenso .CDX. possvel criar dois tipos de arquivos de ndice composto: estrutural e no-estrutural. Se voc excluir a clusula opcional OF NomeArquivoCDX de TAG NomeMarca, voc cria um arquivo de ndice composto estrutural. Este tem sempre o mesmo nome base da tabela e aberto automaticamente quando ela aberta. Caso no seja possvel localizar o arquivo de ndice composto estrutural de uma tabela ou ele tiver sido excludo ou renomeado, uma caixa de dilogo aparecer quando voc tentar abrir a tabela. Se voc selecionar o boto padro Cancelar, a tabela no ser aberta. Se selecionar Ignorar, ela ser aberta e ser removido o sinalizador existente no cabealho da tabela e que indica a presena de um arquivo de ndice composto estrutural associado. Dica Para associar novamente um ndice composto estrutural, emita o comando a seguir: USE NomeTabela INDEX NomeArquivoCDX Se voc incluir a clusula opcional OF NomeArquivoCDX aps TAG NomeMarca, voc cria um arquivo de ndice composto no estrutural. Ao contrrio de um arquivo de ndice composto estrutural, o no-estrutural deve ser aberto explicitamente com SET INDEX ou com a clusula INDEX em USE. Caso o arquivo de ndice composto j tenha sido criado e aberto, a emisso de INDEX com TAG NomeMarca adicionar uma marca ao arquivo de ndice composto.
[Pg.: 221]

NomeArquivoCDX o nome do ndice composto estrutural associado. Certifique-se de reindexar a tabela caso ela tenha sido modificada depois que o ndice composto estrutural foi desassociado. FOR lExpresso Especifica uma condio pela qual somente os registros que satisfazem a expresso de filtragem lExpresso estaro disponveis para exibio e acesso; chaves de ndice so criadas no arquivo de ndice apenas para os registros correspondentes expresso de filtragem. Rushmore otimiza um comando INDEX ... FOR lExpresso caso isto seja possvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. COMPACT Cria um arquivo .IDX compactado. ASCENDING Especifica uma ordem crescente para o arquivo .CDX. Como padro, as marcas .CDX so criadas em ordem crescente (voc pode incluir ASCENDING como um lembrete da ordem do arquivo de ndice). possvel indexar uma tabela em ordem inversa incluindo DESCENDING. DESCENDING Especifica uma ordem decrescente para o arquivo .CDX. No possvel incluir DESCENDING na criao de arquivos de ndice .IDX. No entanto, possvel especificar uma ordem decrescente para um arquivo de ndice .IDX com SET INDEX e SET ORDER. UNIQUE Especifica que apenas o primeiro registro localizado com um valor de chave de ndice especfico ser includo em um arquivo .IDX ou em uma marca .CDX. Pode-se utilizar UNIQUE para impedir a exibio de registros duplicados ou o acesso a eles. Todos os registros adicionados com chaves de ndice duplicadas so excludos do arquivo de ndice. Utilizar a opo UNIQUE de INDEX a mesma coisa que executar SET UNIQUE ON antes de emitir INDEX ou REINDEX. Quando uma marca de ndice ou um ndice UNIQUE esto ativos e um registro duplicado alterado de uma forma que altere a sua chave de ndice, a marca de ndice ou o ndice so atualizados. No entanto, o prximo registro duplicado com a chave de ndice original somente poder ser acessado ou exibido depois que o arquivo for reindexado com REINDEX. CANDIDATE Cria uma marca de ndice estrutural candidato. Pode-se incluir a palavra-chave CANDIDATE apenas na criao de uma marca de ndice estrutural; caso contrrio, o Visual FoxPro gera uma mensagem de erro. A marca de ndice candidato impede valores duplicados no campo ou em uma combinao de campos especificada na expresso de ndice eExpresso. O termo candidato refere-se ao tipo de ndice; visto que ndices candidatos impedem valores duplicados, eles se qualificam como candidato a ndice primrio. O Visual FoxPro gera um erro se voc criar uma marca de ndice candidato para um campo ou uma combinao de campos que j contenha valores duplicados. Para obter maiores informaes sobre marcas de ndice primrio e candidato, consulte Definindo um ndice primrio ou candidato no captulo 7, Trabalhando com tabelas, no Guia do Desenvolvedor. ADDITIVE Mantm aberto qualquer arquivo de ndice anteriormente aberto. Se voc omitir a clusula ADDITIVE ao criar um ou mais arquivos de ndice para uma tabela com INDEX, todos os arquivos de ndice anteriormente abertos (exceto o ndice composto estrutural) sero fechados. Comentrios Os registros de uma tabela que tem um arquivo de ndice so exibidos e acessados na ordem especificada pela expresso de ndice. A ordem fsica dos registros na tabela no alterada por um arquivo de ndice.

[Pg.: 222]

Se SET TALK estiver ativado (ON), o Visual FoxPro relatar quantos registros so indexados durante o processo de indexao. O intervalo de exibio destes registros durante a indexao pode ser especificado com SET ODOMETER. Utilize DISPLAY STATUS para exibir maiores informaes sobre arquivos de ndice abertos. Estas informaes incluem os nomes de todos os arquivos de ndice abertos, seus tipos (estrutural, .CDX, .IDX), suas expresses de ndice, suas seqncias de ordenao e o nome da marca principal ou do arquivo de ndice principal. O nmero de arquivos de ndice (.IDX ou .CDX) que voc pode abrir limitado apenas pelos recursos do sistema e memria. No Visual FoxPro, no FoxPro para Windows e no FoxPro para MS-DOS, o nmero total de arquivos que podem ser abertos determinado na definio FILES do arquivo de configurao CONFIG.SYS do MS-DOS. Para obter maiores informaes sobre a definio FILES, consulte o manual do MS-DOS. Tipos de ndice O Visual FoxPro permite a criao de dois tipos de arquivos de ndice: Arquivos de ndice composto .CDX que contm vrias entradas de ndice denominadas marcas Arquivos de ndice .IDX que contm uma entrada de ndice

Voc pode tambm criar um arquivo de ndice composto estrutural, que automaticamente aberto com a tabela. Dica Devido aos arquivos de ndice composto estrutural serem automaticamente abertos quando a tabela aberta, eles correspondem ao tipo de ndice prefervel. Inclua COMPACT para criar arquivos de ndice .IDX compactos. Arquivos de ndice compostos sempre so compactados. Atualizao e ordem de ndice Apenas um arquivo de ndice (o de ndice principal) ou marca (marca principal) controla a ordem em que a tabela ser exibida ou acessada. Determinados comandos (SEEK, por exemplo) utilizam o arquivo de ndice principal ou marca para procurar registros. Entretanto, todos os arquivos de ndice .IDX e .CDX abertos so atualizados, conforme as alteraes so feitas nas tabelas. possvel designar o arquivo de ndice principal ou marca com a clusula INDEX de USE ou com SET INDEX e SET ORDER. Funes definidas pelo usurio Embora uma expresso de ndice possa conter uma funo definida pelo usurio, voc no dever utilizar funes definidas pelo usurio em uma expresso de ndice. Isto aumenta o tempo que as funes levam para criar ou atualizar o ndice. Alm disso, as atualizaes de ndice no podem ocorrer quando uma funo definida pelo usurio utilizada para uma expresso de ndice. Caso uma funo definida pelo usurio seja utilizada em uma expresso de ndice, o Visual FoxPro dever ser capaz de localizar a funo definida pelo usurio. Quando o Visual FoxPro cria um ndice, a expresso de ndice gravada no arquivo de ndice, mas apenas uma referncia funo definida pelo usurio includa naquela expresso. Index, exemplos O Exemplo 1 abre a tabela customer e cria um arquivo de ndice denominado complist , o qual exibe e processa registros em ordem alfabtica do campo Company. No Exemplo 2, a tabela customer novamente aberta e um arquivo de ndice denominado citycomp criado a partir de uma subseqncia dos primeiros cinco caracteres do campo City, e os primeiros seis caracteres do campo Company. Quando esse arquivo de ndice utilizado, os registros na tabela so ordenados, em primeiro lugar, de acordo com o campo City, e ,em segundo lugar, de acordo com o campo Company. No Exemplo 3, as marcas de ndice so criadas. A primeira marca uma marca de ndice composto estrutural para address. A segunda criada em um arquivo de ndice no estrutural denominado custcdx. * Exemplo 1 CLOSE DATABASES
[Pg.: 223]

OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE Customer && Abre a tabela customer INDEX ON company TO complist CLEAR DISPLAY STATUS * Exemplo 2 CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE Customer && Abre a tabela customer INDEX ON SUBSTR(city,1,5) + SUBSTR(company,1,6) TO citycomp CLEAR DISPLAY STATUS * Exemplo 3 CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE Customer && Abre a tabela customer INDEX ON address TAG address INDEX ON company TAG company OF custcdx CLEAR DISPLAY STATUS

INKEY( ), funo Retorna um nmero correspondente ao primeiro clique com o mouse ou ao primeiro pressionamento de tecla no buffer de teclado. Sintaxe INKEY([nSegundos] [, cOcultarCursor]) Tipos de retorno: Argumentos nSegundos Especifica quantos segundos INKEY( ) aguarda um pressionamento de tecla. Caso nSegundos no seja includo, INKEY( ) retornar imediatamente um valor para um pressionamento de tecla. INKEY( ) aguardar indefinidamente um pressionamento de tecla se nSegundos for 0. cOcultarCursor Exibe ou oculta o cursor, ou procura um clique com o mouse. Para Exibir o cursor, inclua S em cOcultarCursor. Para ocult-lo, inclua H em cOcultarCursor. Caso S e H sejam includos em cOcultarCursor, o ltimo caractere em cOcultarCursor ter preferncia. Como padro, INKEY( ) no detecta um clique com o mouse. Para procurar um clique com o mouse, inclua M em cOcultarCursor. Se M for includo em cOcultarCursor, INKEY( ) retornar o valor 151 para um nico clique com o mouse click. Consulte o segundo exemplo na tabela a seguir para ver como voc pode procurar um clique duplo. Para procurar um clique com o mouse e exibir o cursor, inclua M e S. Para procurar um clique com o mouse e ocultar o cursor, inclua H e M. Quando uma macro de teclado est atribuda a uma tecla ou a uma combinao de teclas, voc pode incluir E em cOcultarCursor para expandir a macro de teclado. Quando E est includo, INKEY( ) retorna um valor correspondente ao primeiro pressionamento de tecla atribudo macro de teclado. Voc pode retornar valores sucessivos para cada pressionamento de tecla, executando repetidas vezes INKEY( ) com E includo. Se voc omitir E, INKEY( ) retornar o valor da tecla ou da combinao de teclas que dispara a macro de teclado.
[Pg.: 224]

Numrico

Qualquer outro caractere diferente de H, M, S e E em cOcultarCursor ignorado. A tabela a seguir lista valores de retorno da funo INKEY( ) para teclas sozinhas e em combinao com as teclas SHIFT, CTRL, e ALT Um travesso () indica que uma combinao de teclas retornar nenhum valor. Tecla Sozinha F1 28 F2 -1 F3 -2 F4 -3 F5 -4 F6 -5 F7 -6 F8 -7 F9 -8 F10 -9 F11 133 F12 134 1 49 2 50 3 51 4 52 5 53 6 54 7 55 8 56 9 57 0 48 a 97 b 98 c 99 d 100 e 101 f 102 g 103 h 104 i 105 j 106 k 107 l 108 m 109 n 110 o 111 p 112 q 113 r 114 s 115 t 116 u 117 v 118 w 119 x 120 y 121 z 122 INS 22 HOME1 DEL 7 END 6 84 85 86 87 88 89 90 91 92 93 135 136 33 64 35 36 37 94 38 42 40 41 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 22 55 7 49 SHIFT CTRL ALT/+OPO 94 95 96 97 98 99 100 101 102 103 137 138 1 2 3 4 5 6 7 127 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 146 29 147 23 104 105 106 107 108 109 110 111 112 113 139 140 120 121 122 123 124 125 126 127 128 19 30 48 46 32 18 33 34 35 23 36 37 38 50 49 24 25 16 19 31 20 22 47 17 45 21 44 162 151 163 159
[Pg.: 225]

PAGE UP 18 57 31 PAGE DOWN 3 51 SETA ACIMA 5 56 SETA ABAIXO 24 50 SETA DIREITA 4 52 SETA ESQUERDA 19 ESC 27 /27 */27 */1 ENTER 13 13 10 BACKSPACE 127 127 TAB 9 15 148/* * BARRA DE ESPAOS 32

153 30 141 145 2 54

161 152 160 157 26

155

/166 127 14 32 32/ 57

Pressionamento de teclas reservado pelo Windows. Comentrios A funo INKEY( ) retornar 0 se nenhuma tecla for pressionada. Caso existam vrias teclas no buffer de teclado, INKEY( ) retornar o valor da primeira tecla inserida no buffer. INLIST( ), funo Determina se uma expresso corresponde a outra expresso em um conjunto de expresses. Sintaxe INLIST(eExpresso1, eExpresso2 [, eExpresso3 ...]) Tipos de retorno: Argumentos eExpresso1 Especifica a expresso que INLIST( ) procura no conjunto de expresses. eExpresso2 [, eExpresso3 ...] Especifica o conjunto de expresses na qual a procura deve ser feita. Voc deve incluir, no mnimo, uma expresso (eExpresso2) e, no mximo, 24 expresses (eExpresso2, eExpresso3 e assim sucessivamente). Todas as expresses no conjunto de expresses devem ter o mesmo tipo de dado. Comentrios A funo INLIST( ) retornar verdadeiro (.T.) se localizar a expresso no conjunto de expresses; caso contrrio INLIST( ) retornar falso (.F.). O valor nulo retornado se eExpresso1 for o valor zero. O valor nulo tambm retornado se eExpresso1 no for o valor nulo, eExpresso1 no corresponder a outra expresso, e pelo menos uma das outras expresses for o valor nulo. INLIST( ), exemplo da funo Neste exemplo, INLIST( ) determina o quarto do ano para o ms atual. O ms atual armazenado na varivel gcMonth. Cada instruo CASE utiliza INLIST( ) para determinar se o contedo de gcMonth pode ser localizado na lista de nome de meses. O nome do quarto retornado armazenado na varivel gcReporTitle. SET TALK ON STORE CMONTH(DATE( )) TO gcMonth DO CASE CASE INLIST(gcMonth,'Janeiro','Fevereiro','Maro') STORE 'Primeiro quarto' TO gcReporTitle CASE INLIST(gcMonth,'Abril','Maio','Junho')
[Pg.: 226]

Lgico ou valor nulo

STORE 'Segundo quarto' TO gcReporTitle CASE INLIST(gcMonth,'Julho','Agosto','Setembro') STORE 'Terceiro quarto' TO gcReporTitle OTHERWISE STORE 'Quarto quarto' TO gcReporTitle ENDCASE WAIT WINDOW gcReporTitle INSMODE( ), funo Retorna o modo de insero atual ou ativa/desativa o modo de insero. Sintaxe INSMODE([lExpresso]) Tipos de retorno: Argumentos lExpresso Ativa ou desativa o modo de insero. INSMODE(.T.) ativa e INSMODE(.F.) desativa o modo de insero. retornado um valor lgico correspondente definio do modo de insero antes da emisso de INSMODE(.T.) ou INSMODE(.F.). Comentrios Se voc omitir o argumento opcional e o modo de insero estiver ativado (os caracteres so inseridos antes do cursor), INSMODE( ) retornar verdadeiro (.T.). Se o modo de insero estiver desativado (os caracteres so sobrescritos na posio do cursor), INSMODE( ) retornar falso (.F.). INSMODE( ), exemplo da funo O exemplo a seguir utiliza INSMODE( ) para ativar o modo de insero e, em seguida, alterna o modo de insero para o estado oposto. SET TALK ON =INSMODE(.T.) && Alterna o modo de insero para on ? INSMODE( ) = INSMODE(!INSMODE( )) && Alterna o modo de insero para o estado oposto ? INSMODE( ) INT( ), funo Avalia uma expresso numrica e retorna a parte inteira da expresso. Sintaxe INT(nExpresso) Tipos de retorno: Argumentos nExpresso Especifica a expresso numrica para qual a funo INT( ) retorna a parte inteira. INT( ), exemplo da funo Numrico Lgico

[Pg.: 227]

CLEAR ? INT(12.5) && Exibe 12 ? INT(6.25 * 2) && Exibe 12 ? INT(-12.5) && Exibe -12 STORE -12.5 TO gnNumber ? INT(gnNumber) && Exibe -12 ISALPHA( ), funo Determina se o caractere mais esquerda em uma expresso de caracteres alfabtico. Sintaxe ISALPHA(cExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres que ISALPHA( ) avalia. Todos os caracteres depois do primeiro caractere em cExpresso so ignorados. Lgico

Comentrios ISALPHA( ) retorna verdadeiro (.T.) se o caractere mais esquerda na expresso especificada um caractere alfabtico; caso contrrio, ISALPHA( ) retorna falso(.F.). ISALPHA( ), exemplo da funo CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE Customer && Abrir tabela de cliente CLEAR DISPLAY contact ? ISALPHA(contact) && Exibe .T. DISPLAY maxordamt ? ISALPHA(cust_id) && Exibe .F. ISBLANK( ), funo Determina se uma expresso est vazia. Sintaxe ISBLANK(eExpresso) Tipos de retorno: Argumentos eExpresso Especifica a expresso que ISBLANK( ) avalia. eExpresso pode ser um campo de uma tabela, uma varivel ou elemento de matriz ou uma expresso. Para um campo, ISBLANK( ) retorna verdadeiro (.T.) se o campo contiver os valores a seguir.
[Pg.: 228]

Lgico

Tipo

Contedo Seqncia vazia, espaos ou sem valor (registro vazio recm-includo ou limpo com BLANK) Sem valor (registro vazio recm-includo ou limpo com BLANK) Sem valor (registro vazio recm-includo ou limpo com BLANK) Data em branco ({ / / }) ou sem valor (registro vazio recm-includo ou limpo com BLANK) Data e hora em branco ({ / / : : }) ou sem valor (registro vazio recm-includo ou limpo com BLANK) Sem valor (registro vazio recm-includo ou limpo com BLANK) Vazio (sem contedo memo) Vazio (sem objeto OLE) Vazio (sem figura) Comentrios

Caractere Numrico Flutuante Data DataHora Lgico Memo Geral Figura

ISBLANK( ) retorna verdadeiro(.T.) se a expresso eExpresso estiver vazia; caso contrrio, ISBLANK( ) retorna falso(.F.). Utiliza-se APPEND BLANK e BLANK para criar um registro vazio. Pode-se tambm utilizar BLANK para limpar dados de campos em um registro. ISBLANK( ) pode determinar se um campo est vazio. Observe que as expresses do tipo Currency, Integer e Double nunca esto vazias, e ISBLANK( ) sempre retorna falso(.F.) para esses tipos de dados. ISBLANK( ) difere de EMPTY( ) e ISNULL( ). Por exemplo, EMPTY( ) retornar verdadeiro (.T.) se uma expresso de caracteres contiver qualquer combinao de valores nulos, espaos, tabulaes, retornos de carro ou alimentaes de linha; ISBLANK( ) retornar verdadeiro (.T.) se uma expresso de caracteres contiver somente a seqncia vazia ou espaos. ISBLANK( ), exemplo da funo No exemplo a seguir, uma tabela denominada mytable criada e um registro vazio includo. ISBLANK( ) retorna verdadeiro (.T.) porque myfield est vazio. Um valor colocado em myfield, e ISBLANK( ) retorna falso (.F.) myfield no est mais vazio. CREATE TABLE mytable FREE (myfield C(20)) APPEND BLANK && Adicionar novo registro vazio CLEAR ? ISBLANK(myfield) && Exibe .T. REPLACE myfield WITH 'John Smith' && Insere um valor no campo ? ISBLANK(myfield) && Exibe .F. ISCOLOR( ), funo Determina se o computador pode exibir cor. Sintaxe ISCOLOR( ) Tipos de retorno: Lgico Comentrios ISCOLOR( ) retorna verdadeiro (.T.) se o seu computador tem recurso de cor (mesmo que o monitor em utilizao no seja colorido). Se o seu computador no permite o uso de cor, ISCOLOR( ) retorna falso (.F.). ISDIGIT( ), funo Determina se o caractere mais esquerda da expresso de caracteres especificada um dgito (de 0 a 9).

[Pg.: 229]

Sintaxe ISDIGIT(cExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres testada por ISDIGIT( ). Todos os caracteres depois do primeiro caractere em cExpresso so ignorados. Comentrios ISDIGIT( ) retorna verdadeiro (.T.) se o caractere mais esquerda da expresso de caracteres especificada um dgito (de 0 a 9); caso contrrio, ISDIGIT( ) retorna falso (.F.). ISDIGIT( ), exemplo da funo CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE orders && Tabelas de pedidos abertas CLEAR DISPLAY cust_id ? ISDIGIT(cust_id) && Exibe .F. DISPLAY order_dsc ? ISDIGIT(ALLTRIM(STR(order_dsc))) && Exibe .T. ISEXCLUSIVE( ), funo Retorna verdadeiro (.T.) se a tabela ou o banco de dados forem abertos para uso exclusivo; caso contrrio, retorna falso(.F.). Sintaxe ISEXCLUSIVE([cAliasTabela | nreaTrabalho | cNomeBancoDados [, nTipo]]) Tipos de retorno: Argumentos cAliasTabela Especifica o alias da tabela para a qual retornado o status de utilizao exclusiva. O Visual FoxPro gera uma mensagem de erro se voc especificar um alias de tabela inexistente. nreaTrabalho Especifica a rea de trabalho da tabela para a qual retornado o status de utilizao exclusiva. ISEXCLUSIVE( ) retorna falso (.F.) se no houver uma tabela aberta na rea de trabalho especificada. cNomeBancoDados retornado. Especifica o nome do banco de dados para o qual o status de utilizao exclusiva Lgico Lgico

nTipo Especifica se o status exclusivo retornado para uma tabela ou banco de dados. A tabela a seguir lista os valores para nTipo e o status retornado correspondente. nTipo Status exclusivo retornado 1 2 Tabela Banco de dados

Para determinar o status exclusivo de um banco de dados, necessrio atribuir o valor 2 a nTipo.

[Pg.: 230]

Comentrios ISEXCLUSIVE( ) retorna um valor para a tabela aberta na rea de trabalho atualmente selecionada se forem omitidos os argumentos opcionais cAliasTabela, nreaTrabalho, ou cNomeBancoDados. Uma tabela aberta para utilizao exclusiva incluindo a palavra-chave EXCLUSIVE em USE, ou selecionando SET EXCLUSIVE para ON antes que a tabela seja aberta. Um banco de dados aberto para utilizao exclusiva incluindo a palavra-chave EXCLUSIVE no OPEN DATABASE. ISEXCLUSIVE( ), exemplo da funo No exemplo a seguir, a funo ISEXCLUSIVE( ) verifica que a tabela foi aberta para utilizao exclusiva. A tabela no ser reindexada pois a rea de trabalho atual no foi aberta para utilizao exclusiva. cExclusive = SET('EXCLUSIVE') SET EXCLUSIVE OFF SET PATH TO (SYS(2004) + 'SAMPLES\DATA\') OPEN DATA testdata && Abre o banco de dados de teste USE customer && No foi aberto exclusivamente USE employee IN 0 EXCLUSIVE && Aberto exclusivamente em outra rea de trabalho IF ISEXCLUSIVE( ) REINDEX && Somente pode ser feito se a tabela for aberta exclusivamente ELSE WAIT WINDOW 'A tabela no pode ser aberta exclusivamente' ENDIF SET EXCLUSIVE &cExclusive ISFLOCKED( ), funo Retorna o status de bloqueio da tabela. Sintaxe ISFLOCKED([nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho Especifica o nmero da rea de trabalho da tabela para a qual o status de bloqueio foi retornado. Se voc omitir cAliasTabela e nreaTrabalho, o status de bloqueio ser retornado para uma tabela aberta na rea de trabalho atual. cAliasTabela Especifica o alias da tabela para qual o status de bloqueio foi retornado. Comentrios ISFLOCKED( ) retorna verdadeiro (.T.) se a tabela estiver bloqueada; caso contrrio, um falso (.F.) retornado. ISFLOCKED( ) similar ao SYS(2011), mas retorna um valor lgico que no requer localizao para aplicativos internacionais. ISLOWER( ), funo Determina se o caractere mais a esquerda da expresso de caracteres especificada um caractere alfabtico minsculo. Sintaxe Lgico

[Pg.: 231]

ISLOWER(cExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres que ISLOWER( ) testa. ISLOWER( ) ignora qualquer caractere aps o primeiro caractere em cExpresso. Comentrios ISLOWER( ) retorna verdadeiro (.T.) se o caractere mais a esquerda da expresso de caracteres especificada um caractere alfabtico minsculo, caso contrrio, ISLOWER( ) retorna falso (.F.). ISLOWER( ), exemplo da funo CLEAR ? ISLOWER('redmond') && Exibe .T. ? ISLOWER('Redmond') && Exibe .F. ISNULL( ), funo Retorna verdadeiro (.T.) se uma expresso resulta em um valor nulo; caso contrrio, ISNULL( ) retorna falso (.F.). Sintaxe ISNULL(eExpresso) Tipos de retorno: Argumentos eExpresso Especifica a expresso a ser avaliada. Comentrios Utilize ISNULL( ) para determinar se o contedo de um campo, varivel de memria ou elemento de matriz contm um valor nulo ou se uma expresso resulta em um valor nulo. ISNULL( ), exemplo da funo No exemplo a seguir, ISNULL( ) utilizado para verificar um valor nulo. STORE .NULL. TO mNullvalue && Armazene um valor nulo em uma varivel de memria CLEAR ? mNullvalue && Exibe o valor de uma varivel de memria ? ISNULL(mNullvalue) && Retorna .T., indicando um valor nulo ? TYPE('mNullvalue') && Retorna L, indicando um valor lgico ? (mNullvalue = .NULL.) && Retorna .NULL., teste ruim para valores nulos ISREADONLY( ), funo Determina se uma tabela est aberta somente para leitura. Lgico Lgico

[Pg.: 232]

Sintaxe ISREADONLY([nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho | cAliasTabela Retorna o status somente para leitura de uma tabela aberta em uma outra rea de trabalho. nreaTrabalho especifica o nmero da rea de trabalho e cAliasTabela especifica o alias da rea de trabalho ou da tabela. ISREADONLY( ) retorna falso (.F.) se no houver tabela aberta na rea de trabalho especificada. Se voc no especificar um nmero de rea de trabalho ou um alias de tabela ou de rea de trabalho, o status somente para leitura ser retornado para a tabela aberta na rea de trabalho ativa. Comentrios ISREADONLY( ) retorna verdadeiro (.T.) se a tabela est aberta somente para leitura; caso contrrio, ISREADONLY( ) retorna falso (.F.). Voc pode abrir uma tabela somente para leitura incluindo a opo NOUPDATE ao abri-la com USE, marcando a caixa de verificao Somente para leitura ao abri-la na caixa de dilogo Abrir ou atribuindo a ela atributos somente para leitura do MS-DOS. Um cursor criado com o comando SELECT - SQL sempre somente para leitura. ISREADONLY( ), exemplo da funo CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer NOUPDATE && Abre a tabela customer somente para leitura CLEAR ? ISREADONLY('customer') && Retorna .T. ISRLOCKED( ), funo Retorna o status de bloqueio do registro. Sintaxe ISRLOCKED([nNmeroRegistro, [nreaTrabalho | cAliasTabela]]) Tipos de retorno: Argumentos nNmeroRegistro Especifica o nmero do registro para o qual o status do bloqueio retornado. Se nNmeroRegistro omitido, o status de bloqueio do registro retornado para o registro atual. nreaTrabalho Especifica um nmero de rea de trabalho de uma tabela para a qual o status de bloqueio de registro retornado. Se for omitido cAliasTabela e nreaTrabalho, o status de bloqueio do registro retornado para a tabela aberta na rea de trabalho atual. cAliasTabela Especifica o alias da tabela para a qual o status de bloqueio do registro retornado. Comentrios Lgico Lgico

[Pg.: 233]

ISRLOCKED( ) retorna verdadeiro (.T.) se o registro estiver bloqueado, caso contrrio ser retornado falso (.F.). ISUPPER( ), funo Determina se o primeiro caractere em uma expresso de caracteres um caractere alfabtico maisculo. Sintaxe ISUPPER(cExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres que ISUPPER( ) avalia. Todos os caracteres depois do primeiro caractere em cExpresso so ignorados. Comentrios ISUPPER( ) retorna verdadeiro (.T.) se o primeiro caractere em uma expresso de caracteres um caractere alfabtico maisculo; caso contrrio, ISUPPER( ) retorna falso(.F.). ISUPPER( ), exemplo da funo ? ISUPPER('Redmond') && Exibe .T. ? ISUPPER('redmond') && Exibe .F. KEY( ), funo Retorna a expresso de chave de ndice para uma marca de ndice ou arquivo de ndice. Sintaxe KEY([NomeArquivoCDX,] nNmerondice [, nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos NomeArquivoCDX Especifica o nome de um arquivo de ndice composto. KEY( ) retorna as expresses de chave de ndice das marcas de ndice dos arquivos .CDX. O arquivo de ndice composto especificado pode ser o arquivo de ndice composto estrutural automaticamente aberto com a tabela ou um arquivo de ndice composto independente. nNmerondice Especifica a chave de expresso de ndice a ser retornada. USE e SET INDEX suportam uma lista de arquivos de ndice que permitem que voc abra vrios ndices para uma tabela. Qualquer combinao de arquivos de ndice .IDX de entrada nica, arquivos de ndice composto estruturais ou arquivos de ndice composto independentes pode ser includa na lista de arquivos de ndice. A expresso numrica nNmerondice especifica a expresso de ndice a ser retornada a partir dos arquivos de ndice abertos. KEY( ) retorna expresses de ndice a partir de arquivos de ndice abertos na ordem a seguir medida que nNmerondice aumenta a partir de 1 at o nmero total de arquivos .IDX de entrada nica abertos e marcas de ndice composto independente e estrutural: 1. As expresses de ndice de arquivos de ndice .IDX de entrada nica (se houver algum aberto) so retornadas em primeiro lugar. A ordem de incluso destes arquivos de ndice de entrada nica em USE ou SET INDEX determina a forma como as expresses de ndice so retornadas. Caractere Lgico

[Pg.: 234]

2. As expresses de ndice para cada marca no ndice composto estrutural (se houver algum) so retornadas em seguida. As expresses de ndice so retornadas a partir das marcas na ordem em que as marcas so criadas no ndice composto estrutural. 3. As expresses de ndice para cada marca em qualquer ndice composto independente aberto so retornadas por ltimo. As expresses de ndice so retornadas a partir das marcas na ordem em que as marcas so criadas nos ndices compostos independentes. A seqncia vazia retornada caso nNmerondice seja maior que o nmero total de arquivos .IDX de entrada nica abertos e marcas de ndice composto independentes e estruturais. nreaTrabalho Especifica o nmero da rea de trabalho da tabela cujas expresses de chave de ndice devem ser retornadas por KEY( ). Se no houver uma tabela aberta na rea de trabalho especificada, KEY( ) retornar a seqncia vazia. cAliasTabela KEY( ). Especifica o alias da tabela cujas expresses de chave de ndice devem ser retornadas por

Se nenhuma tabela possuir o alias especificado, o Visual FoxPro ir gerar uma mensagem de erro. Se nreaTrabalho e cAliasTabela forem omitidos, as expresses de chave de ndice sero retornadas para a tabela aberta na rea de trabalho atual. Comentrios Uma expresso de chave de ndice especificada quando uma marca de ndice ou um arquivo de ndice criado com INDEX. A expresso de chave de ndice determina como uma tabela ser exibida e acessada quando a marca de ndice ou o arquivo de ndice for aberto como o arquivo ou a marca de ndice controlador principal. Para obter maiores informaes sobre como criar marcas de ndice, arquivos de ndice e expresses de chave de ndice, consulte INDEX. KEY( ), exemplo da funo O exemplo a seguir abre a tabela customer no banco de dados testdata. FOR ... ENDFOR utilizado para criar um loop no qual KEY( ) utilizado para exibir a expresso de ndice de cada marca de ndice no ndice estrutural customer. O nome de cada marca de ndice estrutural exibido com a sua expresso de ndice. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE Customer && Abre a tabela customer CLEAR FOR nCount = 1 TO 254 IF !EMPTY(TAG(nCount)) && Verifica se h marcas no ndice ? TAG(nCount) + ' ' && Exibe o nome da marca ?? KEY(nCount) && Exibe a expresso de ndice ELSE EXIT && Sai do loop quando no forem localizadas mais marcas ENDIF ENDFOR KEYBOARD, comando Coloca a expresso de caracteres especificada no buffer de teclado. Sintaxe KEYBOARD cValorTeclado [PLAIN] [CLEAR]
[Pg.: 235]

Argumentos cValorTeclado Especifica a expresso de caracteres que colocada no buffer de teclado. A expresso de caracteres pode ser uma seqncia de caracteres, um rtulo de tecla, um conjunto de rtulos de tecla ou uma funo definida pelo usurio que retorna uma expresso de caractere. Se cValorTeclado for um rtulo de tecla, dever ser includo entre chaves e aspas simples. Por exemplo: KEYBOARD '{CTRL+LEFTARROW}' Para obter uma lista de rtulos de tecla, consulte ON KEY LABEL. O buffer de teclado pode ser preenchido com at 128 caracteres. Uma vez que o buffer de teclado estiver cheio, os caracteres adicionais so ignorados. PLAIN Se houver macros de teclado definidas ou comandos ON KEY LABEL ativos, voc poder incluir PLAIN para ignorar estas atribuies de tecla. PLAIN preenche o teclado com o caractere de tecla literal, no com a atribuio de tecla. Por exemplo, se voc tiver atribudo um comando tecla A com ON KEY LABEL e A estiver includo em cValorTeclado, utilize PLAIN para colocar a letra A no buffer de teclado. O comando ON KEY LABEL atribudo a A no executado. CLEAR Esvazia o buffer de teclado antes que ele seja preenchido com cValorTeclado. Comentrios Use KEYBOARD para colocar caracteres no buffer de teclado. Os caracteres permanecem no buffer at que o Visual FoxPro procure uma entrada de teclado. Nessa etapa, os caracteres so lidos e trabalhados como se tivessem sido digitados diretamente a partir do teclado. possvel utilizar KEYBOARD para criar sistemas de demonstrao auto-executveis para os aplicativos. LASTKEY( ), funo Retorna um nmero inteiro correspondente ltima tecla pressionada. Sintaxe LASTKEY( ) Tipos de retorno: Numrico Comentrios Os valores retornados por LASTKEY( ) so iguais aos valores retornados por INKEY( ). Para obter uma lista de teclas e seus valores de retorno, consulte INKEY( ). LASTKEY( ) atualizado quando voc se movimenta por controles. Obs : Veja a funcao INKEY( ) Lista de valores das teclas LEFT( ), funo Retorna um nmero especificado de caracteres de uma expresso de caractere, a partir do caractere mais esquerda.

[Pg.: 236]

Sintaxe LEFT(cExpresso, nExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caractere a partir da qual LEFT( ) retorna caracteres. nExpresso Especifica o nmero de caracteres retornados da expresso de caractere. Caso nExpresso seja maior que o comprimento de cExpresso, ser retornada toda a expresso de caractere. A seqncia vazia ser retornada se nExpresso for negativa ou 0. A funo LEFT( ) idntica a SUBSTR( ) com uma posio inicial 1. LEFT( ), exemplo da funo CLEAR ? LEFT('Redmond, WA', 4) && Exibe Redmond LEFTC( ), funo Retorna um nmero especificado de caracteres de uma expresso de caractere, a partir do caractere mais esquerda. Caractere

Sintaxe LEFTC(cExpresso, nExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres a partir da qual LEFTC( ) retorna caracteres. nExpresso Especifica o nmero de caracteres retornados da expresso de caracteres. Caso nExpresso seja maior que o comprimento de cExpresso, ser retornada toda a expresso de caracteres. A seqncia vazia ser retornada se nExpresso for negativa ou 0. Comentrios LEFTC( ) foi elaborada para expresses contendo caracteres de byte duplo. Se a expresso contiver apenas caracteres de byte nico, LEFTC( ) ser equivalente a LEFT( ). LEFTC( ) retorna um nmero especificado de caracteres de uma expresso de caracteres, contendo qualquer combinao de caracteres de bytes nico ou duplo. A funo LEFTC( ) idntica a SUBSTRC( ) com uma posio inicial 1. LEN( ), funo Retorna o nmero de caracteres em uma expresso de caracteres. Caractere

[Pg.: 237]

Sintaxe LEN(cExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres para a qual LEN( ) retornar o nmero de caracteres. Comentrios Utilize LEN( ) para determinar o comprimento de uma expresso de caracteres. LEN( ), exemplo da funo O exemplo a seguir abre a tabela customer no banco de dados testdata. LEN( ) utilizada para exibir as larguras dos campos cust_id e contact. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE Customer && Abre a tabela customer CLEAR ? 'Largura do campo contact: ' ?? LEN(contact) ? 'Largura do campo cust_id: ' ?? LEN(cust_id) LENC( ), funo Retorna o nmero de caracteres em uma expresso de caracteres ou campo Memo. Sintaxe LENC(cExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres para a qual LENC( ) retornar o nmero de caracteres. Comentrios LENC( ) foi elaborada para expresses contendo caracteres de byte duplo. Se a expresso contiver apenas caracteres de byte nico, LENC( ) ser equivalente a LEN( ). LENC( ) retorna o nmero de caracteres em uma expresso de caracteres ou campo Memo que contenha qualquer combinao de caracteres de byte nico e duplo. LIKE( ), funo Determina se uma expresso de caracteres corresponde a outra expresso de caracteres. Sintaxe Numrico Numrico

[Pg.: 238]

LIKE(cExpresso1, cExpresso2) Tipos de retorno: Argumentos cExpresso1 Especifica a expresso de caracteres que LIKE( ) compara cExpresso2. cExpresso1 pode conter caracteres curingas como * e ?. O ponto de interrogao (?) corresponde a qualquer caractere simples na cExpresso2 e o asterisco (*) corresponde a qualquer nmero de caracteres. Voc pode misturar qualquer quantidade de caracteres curinga em qualquer combinao na cExpresso1. cExpresso2 Especifica a expresso de caracteres que LIKE( ) compara cExpresso1. A cExpresso2 deve corresponder cExpresso1, letra por letra, para que LIKE( ) retorne verdadeiro (.T.). Comentrios LIKE( ) retorna verdadeiro (.T.) se cExpresso1 corresponder a cExpresso2; caso contrrio, retorna falso (.F.). SET COMPATIBLE determina o modo como LIKE( ) avalia a cExpresso1 e cExpresso2. Se SET COMPATIBLE estiver ativado (ON) ou definido como DB4, todos os espaos direita de cExpresso1 e cExpresso2 sero removidos antes que elas sejam comparadas. Se SET COMPATIBLE estiver desativado (OFF) ou estiver definido como FOXPLUS, todos os espaos direita em cExpresso1 e cExpresso2 sero utilizados na comparao. LIKE( ), exemplo da funo No exemplo a seguir, todos os nomes de produtos na tabela products que iniciarem com as letras Ch sero exibidos. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE products && Abre a tabela Products CLEAR ? 'Todos os nomes de produtos iniciando com as letras Ch:' ? SCAN FOR LIKE('Ch*', prod_name) ? prod_name ENDSCAN USE LIKEC( ), funo Determina se uma expresso de caracteres corresponde a outra expresso de caracteres. Sintaxe LIKEC(cExpresso1, cExpresso2) Tipos de retorno: Argumentos cExpresso1 Especifica a expresso de caractere que LIKEC( ) compara cExpresso2. cExpresso1 pode conter caracteres curinga como * e ?. O ponto de interrogao (?) corresponde a qualquer caractere simples na cExpresso2 e um asterisco (*) corresponde a qualquer nmero de caracteres. Voc pode misturar qualquer nmero de caracteres curinga em qualquer combinao na cExpresso1. Lgico Lgico

[Pg.: 239]

cExpresso2 Especifica a expresso de caractere que LIKEC( ) compara cExpresso1. A cExpresso2 deve corresponder cExpresso1, caractere por caractere, para que LIKE( ) retorne verdadeiro (.T.). Comentrios LIKEC( ) foi elaborada para expresses que contenham caracteres de byte duplo. Se a expresso contiver apenas caracteres de byte nico, LIKEC( ) ser equivalente a LIKE( ). LIKEC( ) determina se uma expresso de caracteres corresponde a outra expresso de caracteres. LIKEC( ) retorna verdadeiro (.T.) se a cExpresso1 corresponder cExpresso2; caso contrrio, retorna falso (.F.). SET COMPATIBLE determina como LIKEC( ) compara os espaos em branco contidos em cExpresso1 e cExpresso2. Se SET COMPATIBLE estiver ativado (ON) ou definido como DB4, todos os espaos direita de cExpresso1 e cExpresso2 sero removidos antes que elas sejam comparadas. Se SET COMPATIBLE estiver desativado (OFF) ou estiver definido FOXPLUS, todos os espaos direita na cExpresso1 e cExpresso2 sero utilizados na comparao. LINENO( ), funo Retorna o nmero de uma linha em execuo em um programa em relao primeira linha do programa principal. Sintaxe LINENO([1]) Tipos de retorno: Argumentos 1 Retorna o nmero da linha em relao primeira linha do programa ou procedimento atual. Se voc omitir o argumento 1, o nmero da linha ser retornado em relao primeira linha do programa principal. Comentrios As linhas do programa so contadas a partir do incio do programa. As linhas de comentrios, as linhas de continuao e as linhas em branco so includas na contagem do nmero de linhas. Se um programa for suspenso durante a execuo, LINENO( ) retornar o nmero da linha em que a execuo do programa foi suspensa. LINENO( ) retornar 0 se um programa for cancelado. Como padro, os nmeros das linhas so retornados em relao ao incio do programa principal. Caso seja chamado um procedimento, a numerao das linhas ser retomada do incio do programa de chamada. LINENO( ) til para depurar programas. Voc pode definir um ponto de interrupo para parar a execuo do programa em um nmero de linha especfico, emitindo o comando abaixo na janela Depurar: LINENO( ) = nExpresso A execuo do programa ser suspensa quando o valor de LINENO( ) for igual a nExpresso. LINENO( ), exemplo da funo O exemplo a seguir faz parte de uma rotina simples de manipulao de erro. ON ERROR DO bug_proc WITH LINENO( ) BRWS && Provoca um erro ON ERROR *** Bug_Proc error handler *** PROCEDURE bug_proc
[Pg.: 240]

Numrico

PARAMETERS gnBadLine WAIT WINDOW 'Erro ocorrido na linha: ' + ALLTRIM(STR(gnBadLine)) RETURN LIST DATABASE, comando Exibe informaes sobre o banco de dados atual de modo contnuo. Sintaxe LIST DATABASE [TO PRINTER [PROMPT] | TO FILE NomeArquivo] [NOCONSOLE] Argumentos TO PRINTER [PROMPT] Direciona a sada de LIST DATABASE para uma impressora. No Visual FoxPro, voc pode incluir a clusula opcional PROMPT para exibir uma caixa de dilogo Imprimir antes de iniciar a impresso. Coloque PROMPT logo aps TO PRINTER. TO FILE NomeArquivo Direciona a sada de LIST DATABASE para o arquivo especificado com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado (ON), o Visual FoxPro exibir um aviso perguntando se voc deseja sobrescrever o arquivo. NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usurio. Comentrios Utilize DBGETPROP( ) para retornar outras informaes sobre o banco de dados atual. LIST DATABASE, exemplo do comando O exemplo a seguir cria um banco de dados denominado people. Uma tabela denominada friends criada e automaticamente adicionada ao banco de dados. DISPLAY TABLES utilizado para exibir as tabelas no banco de dados e LIST DATABASES utilizado para listar informaes sobre as tabelas no banco de dados. CREATE DATABASE people CREATE TABLE friends (FirstName C(20), LastName C(20)) CLEAR DISPLAY TABLES && Exibe as tabelas no banco de dados LIST DATABASE && Lista informaes das tabelas LIST TABLES, comando Exibe todas as tabelas e informaes sobre as tabelas contidas no banco de dados atual sem interrupo. Sintaxe LIST TABLES [TO PRINTER [PROMPT] | TO FILE NomeArquivo] [NOCONSOLE] Argumentos TO PRINTER [PROMPT] Direciona as informaes retornadas de LIST TABLES para uma impressora.
[Pg.: 241]

Voc pode incluir PROMPT para exibir uma caixa de dilogo Imprimir antes de iniciar a impresso. Coloque a palavra-chave PROMPT logo aps TO PRINTER. TO FILE NomeArquivo Direciona a sada de LIST TABLES para o arquivo de disco especificado com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado (ON), o Visual FoxPro exibir um aviso perguntando se voc deseja sobrescrever o arquivo. NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usurio. Comentrios As informaes retornadas incluem os caminhos e nomes das tabelas e constituem um subconjunto das informaes apresentadas quando se utiliza LIST STATUS. Entretanto, as informaes fornecidas por meio de LIST TABLES so relativas somente a tabelas, sendo exibidas independentemente de as tabelas estarem ou no abertas. LIST TABLES, exemplo de comando O exemplo a seguir abre a tabela customer no banco de dados testdata. LIST TABLES utilizado para listar informaes sobre as tabelas no banco de dados. CLOSE DATABASES SET PATH TO (SYS(2004) + 'samples\data\') && Define o caminho para o banco de dados OPEN DATABASE testdata && Abre o banco de dados testdata CLEAR LIST TABLES && Lista informaes sobre tabelas no banco de dados LIST, comandos Exibe informaes do ambiente ou da tabela de modo contnuo. Sintaxe LIST [FIELDS ListaCampos] [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [OFF] [NOCONSOLE] [NOOPTIMIZE] [TO PRINTER [PROMPT] | TO FILE NomeArquivo] Ou LIST FILES [ON Unidade] [LIKE EstruturaArquivo] [TO PRINTER [PROMPT] | TO FILE NomeArquivo] Ou LIST MEMORY [LIKE EstruturaArquivo] [NOCONSOLE] [TO PRINTER [PROMPT] | TO FILE NomeArquivo] Ou LIST STATUS [NOCONSOLE] [TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[Pg.: 242]

Ou LIST STRUCTURE [IN nreaTrabalho | cAliasTabela] [NOCONSOLE] [TO PRINTER [PROMPT] | TO FILE NomeArquivo] Comentrios Esses comandos LIST so idnticos aos comandos DISPLAY, com exceo das diferenas a seguir: O escopo para LIST tem como padro os registros ALL. LIST no emite um aviso depois de preencher a janela principal do Visual FoxPro ou uma janela definida pelo usurio com informaes. LIST no exibe os registros sinalizados para excluso quando SET DELETED est ativado (ON).

Para obter maiores informaes sobre os comandos LIST, consulte os comandos correspondentes em DISPLAY.

LOCAL, comando Cria variveis e matrizes de variveis locais. Sintaxe LOCAL ListaVar Ou LOCAL [ARRAY] NomeMatriz1(nLinhas1 [, nColunas1]) [, NomeMatriz2(nLinhas2 [, nColunas2])] ... Argumentos ListaVar Especifica uma ou mais variveis locais a serem criadas. [ARRAY] NomeMatriz1 (nLinhas1 [, nColunas1]) [, NomeMatriz2 (nLinhas2 [, nColunas2])] ... Especifica uma ou mais matrizes locais a serem criadas. Consulte DIMENSION para obter uma descrio de cada argumento. Comentrios As variveis e as matrizes de variveis locais s podem ser utilizadas e modificadas dentro do procedimento ou funo em que so criadas, e no podem ser acessadas por programas de nvel mais alto ou baixo. As matrizes e variveis locais so liberadas quando concluda a execuo do procedimento ou funo que as contm. As variveis e matrizes criadas com LOCAL so inicializadas com um valor falso (.F.). Qualquer varivel de memria ou matriz que voc deseje declarar como local deve ser declarada local antes de ter um valor atribudo. O Visual FoxPro gera uma mensagem de erro quando voc atribui um valor a uma varivel ou matriz e posteriormente a declara local utilizando LOCAL. As variveis locais podem ser passadas por referncia. No abrevie LOCAL porque LOCAL e LOCATE possuem as primeiras quatro letras iguais. LOCATE, comando
[Pg.: 243]

Procura seqencialmente na tabela o primeiro registro correspondente expresso lgica especificada. Sintaxe LOCATE FOR lExpressao1 [Escopo] [WHILE] [NOOPTIMIZE] Argumentos FOR lExpressao1 procura seqencialmente na tabela atual o primeiro registro correspondente expresso lgica lExpressao1. Rushmore otimizar uma consulta criada com LOCATE FOR se lExpressao1 for uma expresso otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. Escopo Especifica um intervalo de registros a serem localizados. Apenas os registros que estiverem dentro do intervalo sero localizados. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Os comandos que incluem Escopo operam apenas na tabela da rea de trabalho ativa. O escopo padro de LOCATE ALL, isto , todos os registros. WHILE lExpresso2 Especifica uma condio por meio da qual os registros so procurados, desde que a expresso lgica lExpresso2 resulte em verdadeiro (.T.). NOOPTIMIZE Desativa a otimizao Rushmore de LOCATE. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, "Otimizando aplicativos", no Guia do Desenvolvedor. Comentrios A tabela no precisa ser indexada. Se LOCATE localizar um registro correspondente, voc poder utilizar RECNO( ) para retornar o nmero do registro correspondente. Se um registro correspondente for localizado, FOUND( ) retornar verdadeiro (.T.) e EOF( ) retornar falso (.F.). Se SET TALK estiver ativado (ON), ser exibido o nmero do registro correspondente. Aps LOCATE localizar um registro correspondente, voc pode emitir CONTINUE para procurar os registros correspondentes adicionais no resto da tabela. Quando CONTINUE executado, o processo de procura retorna, iniciando pelo registro logo aps o registro correspondente. Voc pode emitir CONTINUE vrias vezes at o final do escopo ou at chegar ao fim da tabela. Se uma correspondncia no for localizada, RECNO( ) retornar o nmero de registros na tabela mais 1, FOUND( ) retornar falso (.F.) e EOF( ) retornar verdadeiro (.T.). LOCATE e CONTINUE so especficos da rea de trabalho atual. Se uma outra rea de trabalho for selecionada, o processo de procura original poder continuar quando a rea de trabalho original for novamente selecionada. LOCATE, exemplo do comando No exemplo a seguir so localizados registros de clientes da Alemanha. Em seguida, a contagem total exibida. CLOSE DATABASES
[Pg.: 244]

OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer SET TALK OFF STORE 0 TO gnCount LOCATE FOR ALLTRIM(UPPER(customer.country)) = 'ALEMANHA' DO WHILE FOUND( ) gnCount = gnCount + 1 ? company CONTINUE ENDDO ? 'Total de empresas na Alemanha: '+ LTRIM(STR(gnCount)) LOCFILE( ), funo Localiza um arquivo no disco e retorna o nome do arquivo com o seu caminho. Sintaxe LOCFILE(cNomeArquivo [, cExtensesArquivo] [, cLegendaDilogo]) Tipos de retorno Caractere Argumentos cNomeArquivo Especifica o nome do arquivo a ser localizado. Se cNomeArquivo incluir somente um nome de arquivo, LOCFILE( ) ir pesquisar primeiro a pasta ou o diretrio padro do Visual FoxPro. Caso o arquivo no seja localizado na pasta ou no diretrio padro, o caminho do Visual FoxPro ser pesquisado a seguir. Utilize SET PATH para especificar o caminho do Visual FoxPro. Se cNomeArquivo incluir um caminho e um nome de arquivo, a localizao especificada ser pesquisada. Se o arquivo no puder ser encontrado na localizao especificada, LOCFILE( ) ir pesquisar a pasta ou o diretrio padro do Visual FoxPro e, em seguida, o caminho do Visual FoxPro. Se o arquivo for localizado, LOCFILE( ) retornar o nome do arquivo e o caminho. cExtensesArquivo Especifica as extenses do arquivo a ser localizado. Se o nome de arquivo especificado com cNomeArquivo no incluir uma extenso, o Visual FoxPro aplicar as extenses de arquivo listadas em cExtensesArquivo ao nome do arquivo e ir procurar novamente o arquivo. cExtensesArquivo tambm especifica as extenses dos nomes dos arquivos exibidos na caixa de dilogo Abrir, quando no for possvel localizar o arquivo especificado. cExtensesArquivo pode assumir diversas formas: Se cExtensesArquivo contiver uma nica extenso (por exemplo, .PRG), somente os arquivos com essa extenso sero exibidos. cExtensesArquivo pode tambm conter curingas (* e ?). Todos os arquivos com extenses correspondentes aos critrios de caracteres curinga sero exibidos. Por exemplo, se cExtensesArquivo for ? X?, todos os arquivos com a extenso .FXP, .EXE ou .TXT sero exibidos. No Visual FoxPro para Windows, cExtensesArquivo pode conter uma descrio de arquivo seguida por uma extenso de arquivo ou uma lista de extenses separadas por vrgulas. A descrio do arquivo aparece na caixa de listagem Arquivos do tipo. Separa a descrio de arquivo da extenso de arquivo ou lista das extenses de arquivo com dois pontos (:). Separa mltiplas descries de arquivo e suas extenses com um ponto e vrgula (;).

[Pg.: 245]

Por exemplo, se cExtensesArquivo for Texto:TXT a descrio do arquivo Texto aparecer na caixa de listagem Arquivos do tipo e todos os arquivos com uma extenso .TXT sero exibidos. Se cExtensesArquivo for Tabelas:DBF; Arquivos:TXT,BAK as descries do arquivo de Tabelas e Arquivos aparecero na caixa de listagem Arquivos do tipo. Quando Tabelas for escolhido a partir da caixa de listagem Arquivos do tipo, todos os arquivos com uma extenso .DBF sero exibidos. Quando Arquivos for escolhido a partir da caixa de listagem Arquivos do tipo, todos os arquivos com extenses .TXT e .BAK sero exibidos. cLegendaDilogo Especifica o texto que voc deseja utilizar para avisar o usurio. O texto exibido na caixa de dilogo Abrir. Comentrios A caixa de dilogo Abrir ser exibida se no for possvel localizar o arquivo na pasta ou no diretrio padro, no caminho do Visual FoxPro ou em uma localizao especificada. A caixa de dilogo Abrir pode ser utilizada para localizar o arquivo. Quando um arquivo selecionado na caixa de dilogo Abrir, o nome do arquivo retornado com o seu caminho. Se voc sair da caixa de dilogo Abrir selecionando Cancelar, pressionando ESC ou selecionando Fechar no menu Controle, o Visual FoxPro ir gerar uma mensagem de erro e LOCFILE( ) no ir retornar um valor. LOCK( ), funo Tenta bloquear um ou mais registros em uma tabela. Sintaxe LOCK([nreaTrabalho | cAliasTabela] | [cListaNmeroRegistro, nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho | cAliasTabela Tenta bloquear o registro atual em uma tabela aberta de uma rea de trabalho especfica. nreaTrabalho especifica o nmero da rea de trabalho, enquanto que cAliasTabela especifica o alias da tabela. Se uma rea de trabalho ou um alias de tabela no for especificado, LOCK( ) tentar bloquear o registro atual na tabela da rea de trabalho atual. cListaNmeroRegistro Especifica a lista de um ou mais nmeros de registros que se deve incluir para tentar bloquear registros mltiplos. SET MULTILOCKS deve estar ativado (ON) e voc deve incluir a rea de trabalho ou o alias da tabela para o qual est tentando colocar bloqueios de registros mltiplos. LOCK( ) tenta bloquear todos os registros especificados. Os nmeros dos registros especificados com cListaNmeroRegistro so separados por vrgulas. Por exemplo, para tentar bloquear os quatro primeiros registros de uma tabela, cListaNmeroRegistro dever conter 1,2,3,4. Voc pode, tambm, bloquear registros mltiplos, movendo o ponteiro do registro para o registro que gostaria de bloquear, emitindo LOCK( ) ou RLOCK( ) e, em seguida, repetindo essas etapas para cada registro adicional. No Visual FoxPro, 0 pode ser especificado como um nmero de registro. Isso permite que se tente bloquear o cabealho da tabela. Importante Mantenha o cabealho da tabela bloqueado durante o menor tempo possvel pois outros usurios no podero adicionar registros tabela enquanto o cabealho estiver bloqueado. Libere o bloqueio do cabealho da tabela com UNLOCK RECORD 0, UNLOCK ou UNLOCK ALL.
[Pg.: 246]

Lgico

Se todos os registros especificados em cNmerosRegistros forem bloqueados com xito, LOCK( ) retornar verdadeiro (.T.). Mesmo que um registro especificado com cNmerosRegistros no possa ser bloqueado, LOCK( ) retornar falso (.F.) e nenhum registro ser bloqueado. Entretanto, todos os bloqueios de registros existentes permanecero no seu lugar. O bloqueio de registros mltiplos um processo aditivo. Os bloqueios de registros adicionais no liberam os bloqueios em outros registros. O nmero mximo de registros que podem ser bloqueados em cada rea de trabalho de aproximadamente 8.000. sempre mais fcil bloquear toda a tabela do que um nmero pequeno de registros. Comentrios LOCK( ) idntico a RLOCK( ). Se o bloqueio ou os bloqueios forem feitos com xito, LOCK( ) retornar verdadeiro (.T.). Os registros bloqueados esto disponveis para o usurio que fez os bloqueios para acesso de leitura e gravao; esto disponveis a todos os outros usurios da rede para acesso somente para leitura. A execuo de LOCK( ) no garante que o bloqueio ou os bloqueios de registros sejam feitos com xito. No se pode fazer um bloqueio em um registro j bloqueado por outro usurio ou em uma tabela bloqueada por outro usurio. Se, por algum motivo, no for possvel fazer bloqueio ou bloqueios dos registros, LOCK( ) retornar falso (.F.). Como padro, LOCK( ) faz uma tentativa para bloquear um registro. Utilize SET REPROCESS para repetir, automaticamente, o bloqueio do registro quando a primeira tentativa falhar. SET REPROCESS determina o nmero de tentativas de bloqueio ou a durao das tentativas de bloqueio quando a tentativa inicial no for bem sucedida. Para obter maiores informaes, consulte SET REPROCESS. SET MULTILOCKS determina se possvel bloquear os registros mltiplos de uma tabela. Se SET MULTILOCKS estiver desativado (OFF) - o padro -, voc poder bloquear apenas um nico registro em uma tabela. Quando SET MULTILOCKS est ativado (ON), voc pode bloquear registros mltiplos em uma tabela. Para obter maiores informaes, consulte SET MULTILOCKS. Desbloqueando registros Um registro da tabela pode ser desbloqueado apenas pelo usurio que fez o bloqueio. Para liberar os bloqueios de registros, utilize UNLOCK, fechando a tabela ou saindo do Visual FoxPro. UNLOCK pode ser utilizado para liberar os bloqueios de registros na rea de trabalho atual, em uma rea de trabalho especfica ou em todas as reas de trabalho. Para obter maiores informaes, consulte UNLOCK. A alternncia de ativado (ON) para desativado (OFF) ou vice-versa em SET MULTILOCKS executa implicitamente UNLOCK ALL todos os bloqueios de registros em todas as reas de trabalho so liberados. As tabelas podem ser fechadas com USE, CLEAR ALL ou CLOSE DATABASES. Para obter maiores informaes sobre como bloquear arquivos e registros e compartilhar tabelas em uma rede, consulte o captulo 17, Programando para acesso compartilhado, no Guia do Desenvolvedor. LOCK( ), exemplo da funo O exemplo a seguir bloqueia e desbloqueia os primeiros quatro registros nas tabelas customer e employee. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') SET REPROCESS TO 3 AUTOMATIC STORE '1,2,3,4' TO gcRecList gcOldExc = SET('EXCLUSIVO') SET EXCLUSIVE OFF SELECT 0
[Pg.: 247]

USE employee && Abre a tabela Employee SELECT 0 USE customer && Abre a tabela Customer ? LOCK('1,2,3,4', 'customer') && Bloqueia os primeiros 4 registros em customer ? RLOCK(gcRecList, 'employee') && Bloqueia os primeiros 4 registros em employee UNLOCK IN customer UNLOCK IN employee SET EXCLUSIVE &gcOldExc LOG( ), funo Retorna o logaritmo natural (base e) da expresso numrica especificada. Sintaxe LOG(nExpresso) Tipos de retorno: Argumentos nExpresso Especifica a expresso numrica para a qual LOG( ) retorna o valor de x na equao e^x = nExpresso. nExpresso deve ser maior que 0. Comentrios A base do logaritmo natural a constante e. O nmero de casas decimais retornado no resultado especificado como SET DECIMALS. LOG( ), exemplo da funo CLEAR ? LOG(1) && Exibe 0.00 STORE EXP(2) TO gneSquare ? LOG(gneSquare) && Exibe 2.00 LOG10( ), funo Retorna o logaritmo comum (base 10) da expresso numrica especificada. Sintaxe LOG10(nExpresso) Tipos de retorno: Argumentos nExpresso Especifica a expresso numrica para a qual LOG10( ) retorna o valor de x na equao 10^x = nExpresso. nExpresso deve ser maior que 0. Comentrios Numrico Numrico

[Pg.: 248]

A base do logaritmo comum 10. O nmero de casas decimais retornado no resultado especificado como SET DECIMALS. LOG10( ), exemplo da funo CLEAR ? LOG10(10) && Exibe 1.00 STORE 100 TO gnBaseTen ? LOG10(gnBaseTen) && Exibe 2.00 ? LOG10(gnBaseTen^2) && Exibe 4.00 LOOKUP( ), funo Procura em uma tabela o primeiro registro com um campo correspondente expresso especificada. Sintaxe LOOKUP(CampoRetorno, eExpressoPesquisa, CampoPesquisado [, cNomeMarca]) Tipos de retorno: Argumentos CampoRetorno Especifica o campo cujo contedo retornado por LOOKUP( ) quando a procura bem sucedida. Se a procura no obtiver xito, LOOKUP( ) retornar uma seqncia de caracteres vazia, do mesmo tamanho e com mesmo tipo de dados que CampoRetorno. eExpressoPesquisa Especifica a expresso de pesquisa. A expresso de pesquisa , geralmente, composta pelo contedo de um campo da tabela ou pode corresponder expresso do ndice ativo ou marca de ndice composto. CampoPesquisado Especifica o campo a ser pesquisado. Se a tabela no tiver um ndice ativo, LOOKUP( ) executar uma pesquisa seqencial atravs do campo especificado com CampoPesquisado. Se um arquivo ou marca de ndice, cuja expresso de chave de ndice eqivale ao campo de pesquisa especificado, estiver aberta, LOOKUP( ) utilizar o arquivo ou marca de ndice para executar uma pesquisa mais rpida. cNomeMarca Especifica o nome de uma marca de ndice composto para ser utilizado por LOOKUP( ) na pesquisa. A pesquisa de um ndice composto a pesquisa mais rpida que LOOKUP( ) pode executar. Comentrios Se a pesquisa obtiver xito, LOOKUP( ) mover o ponteiro do registro para o registro correspondente e retornar o contedo de um campo especificado no registro. Se a expresso de pesquisa no for localizada, LOOKUP( ) retornar uma seqncia de caracteres vazia, de mesmo tamanho e com mesmo tipo de dados que CampoRetorno. O ponteiro do registro est posicionado no fim do arquivo. Se LOOKUP( ) for utilizado para pesquisar uma tabela pai, os ponteiros dos registros de todas as tabelas filho relacionadas sero movidas para os registros relacionados. Esta funo no pode ser otimizada com Rushmore. LOOKUP( ), exemplo da funo Caractere, Numrico, Moeda, Flutuante, Nmero inteiro, Duplo, Data, DataHora ou Lgico

[Pg.: 249]

No exemplo a seguir, LOOKUP( ) utiliza a marca de ndice company para pesquisar a primeira ocorrncia da seqncia Ernst Handel. Se a pesquisa obtiver xito, LOOKUP( ) retornar o contedo do campo contact e @ ... SAY exibir o valor de retorno. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer ORDER company && Abre a tabela Customer CLEAR @ 2,2 SAY LOOKUP(contact, 'Ernst Handel', company, 'company') LOWER( ), funo Retorna uma expresso de caracteres especificada em letras minsculas. Sintaxe LOWER(cExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres convertida por LOWER( ). Comentrios LOWER( ) converte todas as letras maisculas (AZ) na expresso de caracteres para letras minsculas (a z). Todos os outros caracteres na expresso de caracteres permanecem inalterados. LOWER( ), exemplo da funo STORE 'FOX' TO gcName CLEAR ? LOWER(gcName) && Exibe fox LPARAMETERS, comando Atribui dados passados de um programa de chamada para matrizes ou variveis locais. Sintaxe LPARAMETERS ListaParmetros Argumentos ListaParmetros atribudos. Especifica os nomes de matrizes ou variveis de memria locais aos quais os dados so Caracteres

Os parmetros em ListaParmetros so separados por vrgulas. A instruo LPARAMETERS deve ter pelo menos o mesmo nmero de parmetros que a instruo DO ... WITH. Se mais variveis ou matrizes forem listadas na instruo PARAMETERS do que passadas por DO ... WITH, as variveis ou matrizes restantes sero inicializadas com um valor falso (.F.). Podem ser passados no mximo 27 parmetros. Voc pode utilizar PARAMETERS( ) para determinar o nmero de parmetros passados para o programa, funo definida pelo usurio ou procedimento executado mais recentemente. Comentrios

[Pg.: 250]

LPARAMETERS cria variveis ou matrizes locais em um programa, funo definida pelo usurio ou procedimento chamado. Utilize PARAMETERS para criar matrizes ou variveis particulares. LPARAMETERS dever ser a primeira instruo executvel no programa, funo definida pelo usurio ou procedimento chamado se voc passar valores, variveis ou matrizes para um deles. Como padro, DO ... WITH passa variveis e matrizes para procedimentos por referncia. Quando um valor for alterado no programa chamado, o novo valor ser repassado para a varivel ou matriz associada no programa de chamada. Se voc desejar passar uma varivel ou matriz por valor, coloque-a entre parnteses na lista de parmetros de DO ... WITH. As alteraes feitas no parmetro do programa chamado no so repassadas para o programa de chamada. Como padro, as variveis so passadas por referncia para um procedimento e por valor para uma funo definida pelo usurio. Utilize SET UDFPARMS TO REFERENCE para passar variveis para um procedimento ou funo definida pelo usurio por referncia. LTRIM( ), funo Retorna a expresso de caracteres especificada sem os espaos esquerda. Sintaxe LTRIM(cExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres cujos espaos esquerda so removidos por LTRIM( ). Comentrios Esta funo especialmente til para remover os espaos esquerda inseridos quando STR( ) utilizado para converter um valor numrico em uma seqncia de caracteres. LTRIM( ), exemplo da funo STORE 'Redmond' TO gcCity STORE ' Washington' TO gcState CLEAR ? gcCity, gcState && Exibe Redmond Washington ? gcCity, LTRIM(gcState) && Exibe Redmond Washington LUPDATE( ), funo Retorna a data da ltima vez em que uma tabela foi atualizada. Sintaxe LUPDATE([nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho | cAliasTabela Retorna a ltima atualizao feita em uma tabela aberta em uma outra rea de trabalho. nreaTrabalho especifica o nmero da rea de trabalho e cAliasTabela especifica o alias de
[Pg.: 251]

Caractere

Data

tabela. LUPDATE( ) retornar a data da ltima atualizao feita na tabela na rea de trabalho atualmente selecionada, caso voc omita nreaTrabalho e cAliasTabela. Se nenhuma tabela estiver aberta na rea de trabalho especificada, LUPDATE( ) retornar uma data em branco. Se nenhuma tabela possuir o alias especificado, o Visual FoxPro ir gerar uma mensagem de erro. Comentrios Esta funo til em procedimentos de atualizao. LUPDATE( ), exemplo da funo CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer CLEAR ? LUPDATE( ) && Exibe a data da ltima atualizao MAX( ), funo Avalia um conjunto de expresses e retorna a expresso com o valor mximo. Sintaxe MAX(eExpresso1, eExpresso2 [, eExpresso3...]) Tipos de retorno: Argumentos eExpresso1, eExpresso2 [, eExpresso3...] Especifica as expresses a partir das quais voc deseja que MAX( ) retorne a expresso com o maior valor. Todas as expresses devem ser do mesmo tipo de dados. MAX( ), exemplo da funo O exemplo a seguir utiliza APPEND BLANK para criar uma tabela com 10 registros contendo valores aleatrios e, em seguida, utiliza MIN( ) e MAX( ) para exibir os valores mximos e mnimos na tabela. CLOSE DATABASES CREATE TABLE Random (cValue N(3)) FOR nItem = 1 TO 10 && Inclui 10 registros, APPEND BLANK REPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatrios ENDFOR CLEAR LIST && Exibe os valores gnMaximum = 1 && Inicializa o valor mnimo gnMinimum = 100 && Inicializa o valor mximo SCAN gnMinimum = MIN(gnMinimum, cValue) gnMaximum = MAX(gnMaximum, cValue) ENDSCAN ? 'O valor mnimo : ', gnMinimum && Exibe o valor mnimo ? 'O valor mximo : ', gnMaximum && Exibe o valor mximo
[Pg.: 252]

Caractere, Numrico, Moeda, Duplo, Flutuante, Data ou Data e Hora

MD | MKDIR, comando Sintaxe MD cCaminho | MKDIR cCaminho Argumentos cCaminho Especifica um caminho (com um designador de unidade de disco e diretrios) ou um diretrio. Se cCaminho for um diretrio sem um designador de unidade de disco, o diretrio ser criado como um subdiretrio do diretrio padro atual do Visual FoxPro. Comentrios O Visual FoxPro ir gerar uma mensagem de erro se voc tentar criar um diretrio j existente. MD | MKDIR, exemplo do comando O exemplo a seguir utiliza MKDIR para criar um novo diretrio denominado mytstdir, em seguida CHDIR utilizado para alterar ao novo diretrio. GETDIR( ) utilizada para exibir a estrutura do diretrio e, em seguida, RMDIR utilizado para remover o diretrio recentemente criado. GETDIR( ) utilizada para exibir novamente a estrutura do diretrio. SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro MKDIR mytstdir && Cria um novo diretrio CHDIR mytstdir && Altera ao novo diretrio = GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro RMDIR mytstdir && Remove o novo diretrio = GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio

MDX( ), funo Retorna o nome do arquivo de ndice composto .CDX aberto que contm o nmero da posio de ndice especificada. Sintaxe MDX(nNmerondice [, nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nNmerondice Especifica o nome de arquivo de ndice composto a ser retornado. Se a tabela possui um arquivo de ndice composto estrutural e nNmerondice 1, o nome do arquivo de ndice composto estrutural (que sempre igual ao nome da tabela) retornado. Se nNmerondice 2, o nome do primeiro arquivo de ndice composto especificado com USE ou SET INDEX retornado. Se nNmerondice 3, o segundo nome do arquivo de ndice composto retornado e assim por diante. Se nNmerondice maior do que o nmero de arquivos de ndice composto abertos, uma seqncia vazia retornada. Se a tabela no possui um arquivo de ndice composto estrutural e nNmerondice 1, o nome do primeiro arquivo de ndice composto especificado com USE ou SET INDEX retornado. Se nNmerondice 2, o Caractere

[Pg.: 253]

segundo nome de arquivo de ndice composto retornado e assim por diante. Se nNmerondice maior do que o nmero de arquivos de ndice composto abertos, uma seqncia vazia retornada. nreaTrabalho Especifica o nmero da rea de trabalho para arquivos de ndice composto abertos em reas de trabalho diferentes da que est sendo utilizada no momento. Se voc omitir este argumento opcional, os nomes de arquivos de ndice composto sero retornados para a rea de trabalho atual. cAliasTabela Especifica o alias de tabela para arquivos de ndice composto abertos em reas de trabalho diferentes da que est sendo utilizada no momento. Se voc omitir este argumento opcional, os nomes de arquivos de ndice composto sero retornados para a rea de trabalho atual. Comentrios MDX( ) idntico a CDX( ). Os arquivos de ndice podem ser abertos para uma tabela com a clusula INDEX do comando USE ou com SET INDEX. Um arquivo de ndice composto estrutural automaticamente aberto com a sua tabela. MDX ( ) ignora todos os arquivos de ndice .IDX especificados com USE ou SET INDEX. Utilize TAG( ) para retornar nomes de marca a partir de um arquivo de ndice composto; utilize NDX( ) para retornar o nome de um arquivo de ndice .IDX aberto. No Visual FoxPro for Windows, quando SET FULLPATH est ativado (ON), MDX( ) retorna o caminho para o arquivo .CDX com o nome de arquivo .CDX. Quando SET FULLPATH est desativado (OFF), MDX( ) retorna a unidade onde se encontra o arquivo .CDX com o nome de arquivo .CDX. No Visual FoxPro for Macintosh, MDX( ) ignora a definio de FULLPATH e sempre retorna o caminho para o arquivo .CDX com o nome de arquivo .CDX. MDY( ), funo Retorna a expresso de data e hora ou data especificada em formato ms-dia-ano, com o nome do ms escrito por extenso. Sintaxe MDY(dExpresso | tExpresso) Tipos de retorno: Caractere Argumentos dExpresso Especifica a expresso de data para retornar em formato ms-dia-ano. tExpresso Especifica a expresso de data e hora para retornar em formato ms-dia-ano. Comentrios Se SET CENTURY estiver desativado (OFF), a expresso de caractere ser retornada em um formato ms, dd, aa. Se SET CENTURY estiver ativado (ON), o formato ser ms, dd, aaaa. MDY( ), exemplo da funo O exemplo a seguir cria uma funo definida pelo usurio que retorna uma data com o dia da semana correspondente. SET CENTURY OFF CLEAR
[Pg.: 254]

? Longdate({02/16/95}) && Exibe quinta-feira, fevereiro 16, 95 SET CENTURY ON ? Longdate({02/16/95}) && Exibe quinta-feira, fevereiro 16, 1995 *** LongDate *** FUNCTION longdate PARAMETERS gdDate RETURN CDOW(gdDate) + ', ' + MDY(gdDate) MEMORY( ), funo Retorna a quantidade de memria disponvel para executar um programa externo. Sintaxe MEMORY( ) Tipos de retorno: Numrico Comentrios No Visual FoxPro, MEMORY( ) sempre retorna 640. MEMORY( ) semelhante a SYS(12), com duas excees: MEMORY( ) retorna a quantidade de memria disponvel em kilobytes; SYS(12) retorna a quantidade de memria em bytes. MEMORY( ) retorna uma expresso numrica. SYS(12) retorna seu valor como uma seqncia de caracteres.

MENU( ), funo Retorna o nome da barra de menus ativa como uma seqncia de caracteres maisculos. Sintaxe MENU( ) Tipos de retorno: Caractere Comentrios MENU( ) retorna uma seqncia vazia se no houver menu ativo. Utilize o Criador de menus para criar um menu e ativ-lo. MENU( ), exemplo da funo O exemplo a seguir utiliza MENU( ) para passar o nome de uma barra de menus para um procedimento. A barra de menus do sistema atual gravada na memria com SET SYSMENU SAVE e todos os ttulos de menus do sistema so removidos com SET SYSMENU TO.

[Pg.: 255]

Vrios ttulos de menus so criados com DEFINE PAD. Quando voc escolhe um ttulo de menu, MENU( ) passa o nome da barra de menus do sistema do Visual FoxPro, _MSYSMENU, para o procedimento choice. O procedimento choice exibe o nome do ttulo de menu escolhido e o nome da barra de menus do sistema. Se voc escolher o menu Sair, o menu do sistema do Visual FoxPro original ser restaurado. *** Save this program as MENUEXAM.PRG in the default VFP directory.*** CLEAR SET SYSMENU SAVE SET SYSMENU TO DEFINE PAD padSys OF _MSYSMENU PROMPT '\<System' COLOR SCHEME 3 ; KEY ALT+S, '' DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Edit' COLOR SCHEME 3 ; KEY ALT+E, '' DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Record' COLOR SCHEME 3 ; KEY ALT+R, '' DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Window' COLOR SCHEME 3 ; KEY ALT+W, '' DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<ports' COLOR SCHEME 3 KEY ALT+P, '' DEFINE PAD padExit OF _MSYSMENU PROMPT 'E\<xit' COLOR SCHEME 3 ; KEY ALT+X, '' ON SELECTION MENU _MSYSMENU ; DO choice IN menuexam WITH PAD(), MENU() PROCEDURE choice PARAMETER gcPad, gcMenu WAIT WINDOW 'You chose ' + gcPad + ; ' from menu ' + gcMenu NOWAIT IF gcPad = 'PADEXIT' SET SYSMENU TO DEFAULT ENDIF MESSAGE( ), funo Retorna a mensagem de erro atual como uma seqncia de caracteres ou o contedo da linha do programa que causou o erro. Sintaxe MESSAGE([1]) Tipos de retorno: Argumentos 1 Se MESSAGE( ) for utilizado em uma rotina ON ERROR, inclua este argumento para retornar o cdigo de origem do programa que causou o erro. Se o cdigo de origem do programa no estiver disponvel, MESSAGE(1) retornar um dos seguintes itens: do programa se a linha for substituda por macro. Um comando se a linha contiver um comando sem clusulas adicionais. Um comando seguido de trs pontos (...) se a linha contiver um comando e clusulas adicionais. Comentrios Ao contrrio de ERROR( ), MESSAGE( ) no redefinido por RETURN ou RETRY. MESSAGE( ), exemplo da funo O exemplo a seguir exibe sadas de MESSAGE( ) e MESSAGE(1). Caractere

[Pg.: 256]

ON ERROR DO Errhand *** The next line should generate an error *** USE Nodatabase ON ERROR && restaura o gerenciador de erros do sistema PROCEDURE Errhand ? 'Line of code with error: ' + MESSAGE(1) ? 'Error number: ' + STR(ERROR( )) ? 'Error message: ' + MESSAGE( ) MIN( ), funo Avalia um conjunto de expresses e retorna a expresso de menor valor. Sintaxe MIN(eExpresso1, eExpresso2 [, eExpresso3 ...]) Tipos de retorno: Argumentos eExpresso1, eExpresso2 [, eExpresso3 ...] Especifica o conjunto de expresses de onde voc quer que MIN( ) retorne a expresso de menor valor. Todas as expresses devem ser do mesmo tipo. MIN( ), exemplo da funo O exemplo a seguir utiliza APPEND BLANK para criar uma tabela com 10 registros que contenham valores aleatrios e, em seguida, utiliza MIN( ) e MAX( ) para exibir os valores mximo e mnimo na tabela. CLOSE DATABASES CREATE TABLE Random (cValue N(3)) FOR nItem = 1 TO 10 && Inclui 10 registros, APPEND BLANK REPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatrios ENDFOR CLEAR LIST && Exibe os valores gnMaximum = 1 && Inicializa valor mnimo gnMinimum = 100 && Inicializa valor mximo SCAN gnMinimum = MIN(gnMinimum, cValue) gnMaximum = MAX(gnMaximum, cValue) ENDSCAN ? 'The minimum value is: ', gnMinimum && Exibe valor mnimo ? 'The maximum value is: ', gnMaximum && Exibe valor mximo MINUTE( ), funo Retorna a parte dos minutos de uma expresso DataHora. Sintaxe MINUTE(tExpresso)
[Pg.: 257]

Caractere, Numrico, Moeda, Duplo, Flutuante, Data ou DataHora

Tipos de Retorno: Argumentos

Numrico

tExpresso Especifica a expresso DataHora da qual a parte dos minutos ser retornada. MINUTE( ), exemplo da funo O exemplo a seguir exibe a parte dos minutos da hora atual e a parte dos minutos de uma determinada hora. CLEAR ? MINUTE(DATETIME( )) ? MINUTE({10:42am}) && Exibe 42 MLINE( ), funo Retorna uma determinada linha de um campo memo como uma seqncia de caracteres. Sintaxe MLINE(NomeCampoMemo, nNmeroLinha [, nNmeroDeCaracteres]) Tipos de retorno: Argumentos NomeCampoMemo Especifica o nome do campo memo a partir do qual MLINE( ) retorna uma linha. Se o campo memo est em uma tabela aberta em uma rea de trabalho que no a atual, coloque um ponto e o alias da tabela antes do nome do campo memo. nNmeroLinha Especifica o nmero da linha a ser retornada do campo memo. Uma seqncia vazia ser retornada se nNmeroLinha for negativo, igual a 0 ou maior do que o nmero de linhas existentes no campo memo.. nNmeroDeCaracteres Especifica o nmero de caracteres desde o incio do campo memo depois dos quais MLINE( ) retorna a linha especificada. A varivel de memria do sistema _MLINE normalmente utilizada para nNmeroDeCaracteres. _MLINE automaticamente ajustado toda vez que MLINE( ) chamado. Em procedimentos recorrentes que retornam linhas de campos memo grandes, possvel obter um melhor desempenho incluindo-se _MLINE como nNmeroDeCaracteres. Comentrios MLINE( ) remove qualquer espao subseqente da linha especificada com nNmeroLinha. O tamanho e o nmero das linhas no campo memo so determinados pelo valor atual de SET MEMOWIDTH (o tamanho de linha padro de 50 caracteres). Nenhum caractere adicional ser retornado se for encontrado um retorno de carro. A definio _WRAP atual determina como a linha do campo memo ser exibida. Ao procurar uma seqncia de caracteres em um campo memo, voc pode utilizar ATLINE( ) ou ATCLINE( ) para retornar o nmero da linha em que a seqncia de caracteres se encontra. Utilize esse nmero de linha em MLINE( ) para retornar o contedo da linha do campo memo. MLINE( ), exemplo da funo Caractere

[Pg.: 258]

No exemplo a seguir, so utilizados dois mtodos para retornar linhas de um campo memo. Dois loops utilizam MLINE( ) para retornarem linhas de campo memo. Observe a melhoria no desempenho no segundo loop quando a varivel do sistema _MLINE utilizada em MLINE( ). CLEAR SET TALK OFF SET MEMOWIDTH TO 50 CLOSE DATABASES CREATE TABLE tmemo (name c(10), notes m) APPEND BLANK && Adiciona um registro WAIT WINDOW 'Filling memo field - takes several seconds' NOWAIT *** Fill the memo field *** FOR gnOuterLoop = 1 TO 5 && loop 5 vezes FOR gnAlphabet = 65 TO 75&& letras A a H REPLACE notes WITH REPLICATE(CHR(gnAlphabet), 10) ; + CHR(13) ADDITIVE NEXT NEXT *** Display all lines from the memo field *** STORE MEMLINES(notes) TO gnNumLines && Nmero de linhas em campo memo STORE SECONDS( ) TO gnBegin && Hora inicial FOR gnCount = 1 TO gnNumLines && Loop para nmero de linhas em campos memo ? MLINE(notes, gnCount) && Exibe cada linha NEXT ? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds' && Tempo total *** Preferable method using _MLINE in MLINE( ) *** *** Display all lines from the memo field *** WAIT 'Press a key to see the preferred method' WINDOW CLEAR STORE 0 TO _MLINE && Redefine _MLINE como zero STORE SECONDS( ) TO gnBegin && Hora inicial FOR count = 1 TO gnNumLines && Loop para nmero de linhas em campo memo ? MLINE(notes, 1, _MLINE) && Exibe cada linha NEXT ? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds' && Tempo total SET TALK ON CLOSE DATABASES ERASE tmemo.dbf ERASE tmemo.fpt MOD( ), funo Divide uma expresso numrica por outra expresso numrica e retorna o restante. Sintaxe MOD(nDividendo, nDivisor) Tipos de retorno: Argumentos nDividendo Especifica o dividendo. O nmero de casas decimais em nDividendo determina o nmero de casas decimais no valor de retorno. nDivisor Especifica o divisor. Um nmero positivo ser retornado se nDivisor for positivo e um nmero negativo ser retornado se nDivisor for negativo. Numrico

[Pg.: 259]

Comentrios A funo de mdulo MOD( ) e o operador % retornam resultados idnticos. MOD( ), exemplo da funo CLEAR ? MOD(36,10) && Exibe 6 ? MOD((4*9), (90/9)) && Exibe 6 ? MOD(25.250,5.0) && Exibe 0.250 ? IIF(MOD(YEAR(DATE( )), 4) = 0, ' Olimpadas de Vero este ano'; , 'No h Olimpadas de Vero este ano') MODIFY COMMAND, comando Abre uma janela de edio para que voc possa modificar ou criar um arquivo de programa. Sintaxe MODIFY COMMAND [NomeArquivo | ?] [NOEDIT] [NOMENU] [NOWAIT] [RANGE nCaractereInicial, nCaractereFinal] [[WINDOW NomeJanela1] [IN [WINDOW] NomeJanela2 | IN SCREEN]] [AS nPginaCdigo] [SAME] [SAVE] Argumentos NomeArquivo Especifica o nome de arquivo do programa a ser aberto ou criado. Se voc no especificar uma extenso para um novo arquivo de programa, o Visual FoxPro atribuir automaticamente uma extenso .PRG. MODIFY COMMAND suporta um estrutura de arquivo que contm os curingas asterisco (*) e ponto de interrogao (?). Uma janela de edio aberta para cada programa cujo nome de arquivo corresponde ao estrutura de arquivo. Se voc omitir o nome de arquivo, ser aberta uma janela de edio para um arquivo inicialmente denominado PROG1.PRG. Quando fechar a janela de edio, voc poder salvar o arquivo com um nome diferente. ? Exibe a caixa de dilogo Abrir. Selecione um dos programas existentes ou digite o nome de um novo programa a ser criado. NOEDIT Especifica que o arquivo de programa no pode ser alterado, mas pode ser visualizado e copiado para a rea de transferncia. NOMENU Remove o ttulo do menu Formatar da barra de menu do sistema do Visual FoxPro, impedindo alteraes de fonte, tamanho de fonte, espao entre linhas e recuo. NOWAIT Continua a execuo do programa aps ser aberta a janela de edio. O programa no aguarda o fechamento da janela de edio, mas continua a execuo na linha do programa imediatamente seguinte linha que contm MODIFY COMMAND NOWAIT. Se voc omitir NOWAIT quando MODIFY COMMAND for utilizado em um programa, uma janela de edio ser aberta e a execuo do programa ser colocada em pausa at o fechamento desta janela.

[Pg.: 260]

NOWAIT s tem efeito dentro de um programa. Ele no tem qualquer efeito em MODIFY COMMAND quando emitido na janela Comando. Um NOWAIT implcito ocorrer se voc abrir mais de uma janela de edio com um nico comando MODIFY COMMAND. Por exemplo: MODIFY COMMAND *.PRG. RANGE nCaractereInicial, nCaractereFinal Especifica um intervalo de caracteres selecionados quando a janela de edio aberta. Os caracteres so selecionados a partir da posio especificada com nCaractereInicial at (mas no inclusive) a posio do nCaractereFinal. Se nCaractereInicial for igual a nCaractereFinal, nenhum caractere ser selecionado e o cursor ser colocado na posio especificada com nCaractereInicial. WINDOW NomeJanela1 Especifica uma janela cujas caractersticas so assumidas pela janela de edio. Por exemplo, se a janela for criada com a opo FLOAT de DEFINE WINDOW, a janela de edio poder ser movida. A janela no precisa estar ativa ou visvel, mas ela deve estar definida. IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edio aberta. A janela de edio no assume as caractersticas da janela pai e no pode ser movida para fora da janela pai. Se voc mover a janela pai, mover a janela de edio junto com ela. A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW e deve estar visvel para o acesso janela de edio. IN SCREEN Abre explicitamente a janela de edio na janela principal do Visual FoxPro, aps ser colocada na janela pai. Uma janela de edio colocada em uma janela pai ao incluir a clusula IN WINDOW. AS nPginaCdigo Converte automaticamente caracteres acentuados em um arquivo de programa criado em uma outra plataforma do Visual FoxPro. A expresso numrica nPginaCdigo especifica a pgina de cdigo da plataforma do Visual FoxPro em que o arquivo de programa foi criado. O arquivo ser salvo nesta pgina de cdigo a menos que voc selecione Salvar como no menu Arquivo para salvar o arquivo em uma pgina de cdigo diferente. SAME Impede que a janela de edio seja trazida para a frente como a janela ativa. Caso esteja oculta, ela ser exibida, mas no se tornar a janela ativa. SAVE Deixa a janela de edio aberta depois que uma outra janela ativada. Se voc omitir SAVE, a janela de edio ser fechada quando uma outra janela for ativada. A incluso de SAVE no tem qualquer efeito quando emitido da janela Comando. Comentrios Quando voc faz modificaes em um arquivo de programa, o arquivo atualizado gravado no disco. No Visual FoxPro, um arquivo backup com a extenso .BAK ser criado se voc selecionar a caixa de verificao Criar cpia de backup na guia Editar da caixa de dilogo Opes, que aparece quando voc seleciona Opes no menu Ferramentas. O editor interno do Visual FoxPro ser utilizado, a menos que voc especifique um editor externo com TEDIT no arquivo de configurao. MODIFY DATABASE, comando Abre o Criador de bancos de dados, possibilitando a modificao interativa do banco de dados atual. Sintaxe

[Pg.: 261]

MODIFY DATABASE [NomeBancoDados | ?] [NOWAIT] [NOEDIT] Argumentos NomeBancoDados Especifica o nome do banco de dados a ser modificado. ? Exibe a caixa de dilogo Abrir, onde voc pode especificar o nome do banco de dados a ser modificado. NOWAIT Continua a execuo do programa aps a abertura do Criador de bancos de dados. O programa no aguarda o fechamento do Criador de bancos de dados, mas continua a execuo na linha do programa imediatamente seguinte linha que contm MODIFY DATABASE NOWAIT. Se voc omitir NOWAIT quando MODIFY DATABASE for emitido em um programa, o Criador de bancos de dados ser aberto e a execuo do programa ser colocada em pausa at o seu fechamento. NOWAIT s tem efeito quando emitido dentro de um programa. Ele no tem qualquer efeito em MODIFY CLASS quando emitido na janela Comando. NOEDIT Evita alteraes no banco de dados. Comentrios Para obter maiores informaes sobre como modificar de forma interativa um banco de dados com o Criador de bancos de dados, consulte os tpicos Criador de bancos de dados e Barra de ferramentas criador de bancos de dados e o captulo 3, Reunindo tabelas em um banco de dados, no Guia do Usurio. MODIFY DATABASE, exemplo do comando O seguinte exemplo exibe o Criador de bancos de dados com as tabelas no banco de dados testdata. CLOSE DATABASES SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dados MODIFY DATABASE testdata && Abre o banco de dados testdata

MODIFY FILE, comando Abre uma janela de edio para que voc possa modificar ou criar um arquivo de texto. Sintaxe MODIFY FILE [NomeArquivo | ?] [NOEDIT] [NOMENU] [NOWAIT] [RANGE nCaractereInicial, nCaractereFinal] [[WINDOW NomeJanela1] [IN [WINDOW] NomeJanela2 | IN SCREEN]] [AS nPginaCdigo] [SAME] [SAVE] Argumentos NomeArquivo Especifica o nome do arquivo de texto. Se voc no especificar uma extenso junto com o nome do novo arquivo texto, o Visual FoxPro automaticamente atribuir uma extenso .TXT. MODIFY FILE suporta uma estrutura de arquivo que pode conter os curingas asterisco (*) e ponto de interrogao (?). Uma janela de edio aberta para cada arquivo de texto cujo nome corresponda estrutura de arquivo.
[Pg.: 262]

Se voc omitir o nome de arquivo, ser aberta uma janela de edio para um arquivo inicialmente denominado FILE1. Quando fechar a janela de edio, voc poder salvar o arquivo com um nome diferente. ? Exibe a caixa de dilogo Abrir na qual voc pode selecionar um arquivo de texto. NOEDIT Especifica que o arquivo de texto no pode ser alterado, mas pode ser visualizado e copiado para a rea de transferncia. NOMENU Remove o ttulo do menu Formatar da barra de menu do sistema do Visual FoxPro, impedindo alteraes de fonte, tamanho de fonte, espao entre linhas e recuo. NOWAIT Continua a execuo do programa aps a abertura da janela de edio. O programa no aguarda o fechamento da janela de edio, mas continua a execuo na linha do programa imediatamente seguinte linha que contm MODIFY FILE NOWAIT. Se voc omitir NOWAIT , quando emitir MODIFY FILE em um programa, a janela de edio ser aberta e a execuo do programa ser colocada em pausa at o seu fechamento. NOWAIT s tem efeito dentro de um programa. Ele no tem qualquer efeito em MODIFY FILE quando emitido na janela Comando. Um NOWAIT implcito ocorrer se voc abrir mais de uma janela de edio com um nico comando MODIFY FILE. Por exemplo: MODIFY FILE *.TXT RANGE nCaractereInicial, nCaractereFinal Especifica um intervalo de caracteres selecionado, quando voc abre uma janela de edio. Os caracteres so selecionados a partir da posio especificada com nCaractereInicial at (mas no inclusive) a posio do nCaractereFinal. Se nCaractereInicial for igual a nCaractereFinal, no ser selecionado nenhum caractere e o cursor ser colocado na posio especificada com nCaractereInicial . WINDOW NomeJanela1 Especifica uma janela cujas caractersticas so assumidas pela janela de edio. Por exemplo, se a janela for criada com a opo FLOAT de DEFINE WINDOW, a janela de edio poder ser movida. A janela no precisa estar ativa ou visvel, mas ela deve estar definida. IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edio aberta. A janela de edio no assume as caractersticas da janela pai e no possvel mov-la para fora dela. Se voc mover a janela pai, mover a janela de edio junto com ela. A janela pai deve, em primeiro lugar, ser definida com DEFINE WINDOW e deve estar visvel para o acesso janela de edio. IN SCREEN Abre explicitamente a janela de edio na janela principal do Visual FoxPro, aps ser colocada na janela pai. Uma janela de edio colocada em uma janela pai ao incluir a clusula IN WINDOW. AS nPginaCdigo Converte automaticamente caracteres acentuados em um arquivo de texto criado em uma outra plataforma do Visual FoxPro. A expresso numrica nPginaCdigo especifica a pgina de cdigo da plataforma do Visual FoxPro em que o arquivo de texto foi criado. O arquivo ser salvo nesta pgina de cdigo a menos que voc selecione Salvar como no menu Arquivo para salvar o arquivo em uma pgina de cdigo diferente. SAME Impede que a janela de edio seja adiantada como a janela ativa. Caso esteja oculta, ela ser exibida, mas no se tornar a janela ativa. SAVE Deixa a janela de edio aberta depois que uma outra janela ativada. Se voc omitir SAVE, a janela de edio ser fechada quando uma outra janela for ativada. A incluso de SAVE no tem qualquer efeito quando emitido na janela Comando.
[Pg.: 263]

Comentrios Quando so feitas modificaes em um arquivo de texto, o arquivo atualizado gravado no disco. No Visual FoxPro, um arquivo backup com a extenso .BAK ser criado se voc selecionar a caixa de verificao Criar cpia de backup na guia Editar da caixa de dilogo Opes, que aparecem quando voc seleciona Opes no menu Ferramentas. Nas verses anteriores do FoxPro, um arquivo backup com a extenso .BAK ser criado se voc selecionar a caixa de verificao Backup na caixa de dilogo Preferncias, que aparece ao selecionar Preferncias no menu Editar. O editor do Visual FoxPro ser utilizado, a menos que voc especifique um editor externo com TEDIT no arquivo de configurao. MODIFY GENERAL, comando Abre janelas de edio de campos gerais do registro atual. Sintaxe MODIFY GENERAL CampoGeral1 [, CampoGeral2 ...] [NOMODIFY] [NOWAIT] [[WINDOW NomeJanela1] [IN [WINDOW] NomeJanela2 | IN SCREEN]] Argumentos CampoGeral1 [, CampoGeral2 ...] Especificam os nomes dos campos gerais que devem ser abertos. Para abrir uma janela de edio para um campo Geral de uma tabela aberta em uma rea de trabalho, que no seja a atual, inclua o alias de tabela com o nome do campo. Para abrir vrios campos gerais no registro atual, inclua uma lista de campos gerais separados por vrgulas. NOMODIFY Especifica que o objeto de OLE contido no campo Geral no pode ser alterado, mas pode ser visualizado e copiado para a rea de transferncia. NOWAIT Continua a execuo do programa aps a abertura da janela de edio de campo Geral. O programa no aguarda o fechamento desta janela, mas continua a execuo na linha do programa imediatamente seguinte linha que contm MODIFY GENERAL NOWAIT. Se voc omitir NOWAIT, quando emitir MODIFY GENERAL em um programa, ser aberta uma janela de edio e a execuo do programa ser colocada em pausa at o fechamento desta janela. NOWAIT s tem efeito quando emitido dentro de um programa. Ele no tem qualquer efeito em MODIFY GENERAL quando emitido na janela Comando. WINDOW NomeJanela1 Especifica uma janela cujas caractersticas so assumidas pela janela de edio de campo Geral. Por exemplo, se a janela for criada com a opo FLOAT de DEFINE WINDOW, a janela de edio de campo Geral poder ser movida. A janela no precisa estar ativa ou visvel, mas ela deve estar definida. IN [WINDOW] NomeJanela2 Especifica uma janela pai na qual a janela de edio de campo Geral aberta. A janela de campo Geral no assume as caractersticas da janela pai e no possvel mov-la para fora desta janela. Se voc mover a janela pai, mover a janela de campo Geral tambm. A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW e deve estar visvel para o acesso janela de campo Geral. IN SCREEN Abre explicitamente a janela de campo Geral na janela principal do Visual FoxPro, aps ser colocada na janela pai. Uma janela de campo Geral colocada em uma janela pai ao incluir a clusula IN WINDOW.

[Pg.: 264]

Comentrios Quando uma janela de edio est aberta, voc pode inserir, modificar ou excluir um objeto de OLE. Para obter maiores informaes sobre objetos de OLE no Visual FoxPro, consulte Adicionando objetos de OLE a tabelas no captulo 16, Adicionando a OLE, no Guia do Desenvolvedor. MODIFY MEMO, comando Abre uma janela de edio de um campo Memo no registro atual. Sintaxe MODIFY MEMO CampoMemo1 [, CampoMemo2 ...] [NOEDIT] [NOMENU] [NOWAIT] [RANGE nCaractereInicial, nCaractereFinal] [[WINDOW NomeJanela1] [IN [WINDOW] NomeJanela2 | IN SCREEN]] [SAME] [SAVE] Argumentos CampoMemo1 [, CampoMemo2 ...] Especifica os nomes dos campos Memo que sero editados. Para abrir uma janela de edio de um campo Memo, contido em uma tabela aberta em uma outra rea de trabalho, inclua o alias de tabela junto com o nome do campo. NOEDIT Especifica que o campo Memo aberto no pode ser alterado, mas pode ser visualizado e copiado para a rea de transferncia. NOMENU Remove o ttulo do menu Formatar da barra de menu do sistema do Visual FoxPro, impedindo alteraes de fonte, tamanho de fonte, espao entre linhas e recuo. NOWAIT Continua a execuo do programa aps a abertura da janela de edio. O programa no aguarda o fechamento da janela de edio, mas continua a execuo na linha do programa imediatamente seguinte linha que contm MODIFY MEMO NOWAIT. Se voc omitir NOWAIT, quando emitir MODIFY MEMO em um programa, uma janela de edio ser aberta e a execuo do programa ser colocada em pausa at o seu fechamento. NOWAIT s tem efeito dentro de um programa. Ele no tem qualquer efeito em MODIFY MEMO quando emitido na janela Comando. RANGE nCaractereInicial, nCaractereFinal Especifica um intervalo de caracteres selecionados quando a janela de edio aberta. Os caracteres so selecionados a partir da posio especificada com nCaractereInicial at (mas no inclusive) a posio do nCaractereFinal. Se nCaractereInicial for igual a nCaractereFinal, no ser selecionado nenhum caractere e o cursor ser colocado na posio especificada com nCaractereInicial. WINDOW NomeJanela1 Especifica uma janela cujas caractersticas a janela de edio assume. Por exemplo, se a janela for criada com a opo FLOAT de DEFINE WINDOW, a janela de edio poder ser movida. A janela no precisa estar ativa ou visvel, mas ela deve estar definida. IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edio aberta. A janela de edio no assume as caractersticas da janela pai e no possvel mov-la para fora desta janela. Se voc mover a janela pai, mover a janela de edio tambm. A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW, e deve estar visvel para o acesso da janela de edio.

[Pg.: 265]

IN SCREEN Abre explicitamente a janela de edio na janela principal do Visual FoxPro, aps ser colocada na janela pai. Uma janela de edio colocada em uma janela pai ao incluir a clusula IN WINDOW. SAME Impede que a janela de edio seja adiantada como a janela ativa. Caso esteja oculta, ela ser exibida, mas no se tornar a janela ativa. SAVE Deixa a janela de edio aberta aps uma outra janela ser ativada. Se voc omitir SAVE, a janela de edio ser fechada quando uma outra janela for ativada. A incluso de SAVE no tem qualquer efeito quando emitido na janela Comando. Comentrios possvel visualizar ou alterar o contedo do campo Memo na janela de edio. Em uma tabela aberta para acesso compartilhado em uma rede, o registro atual bloqueado automaticamente quando a edio comea em um de seus campos Memo. MODIFY MEMO, exemplo do comando O seguinte exemplo abre o campo Memo notes para o primeiro registro em employee em uma janela de edio com um intervalo realado. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE employee && Abre a tabela Employee MODIFY MEMO notes NOEDIT RANGE 1,10 && Os primeiros 10 caracteres selecionados USE MODIFY MENU, comando Abre o Criador de menus para que voc possa modificar ou criar um sistema de menus. Sintaxe MODIFY MENU [NomeArquivo | ?] [[WINDOW NomeJanela1] [IN [WINDOW] NomeJanela2 | IN SCREEN]] [NOWAIT] [SAVE] Argumentos NomeArquivo Especifica o nome do arquivo para o menu. Caso uma extenso para o nome de arquivo no seja especificada, o Visual FoxPro atribui automaticamente uma extenso .MNX. ? Exibe a caixa de dilogo Abrir na qual voc pode selecionar um arquivo de menu existente ou digitar o nome de um novo menu a ser criado. WINDOW NomeJanela1 Especifica a janela cujas caractersticas o Criador de menus assume. Por exemplo, se a janela for criada com a opo FLOAT de DEFINE WINDOW, o Criador de menus poder ser movido. A janela no precisa estar ativa ou visvel, mas deve estar definida. IN [WINDOW] NomeJanela2 Especifica uma janela pai em que o Criador de menus aberto. O Criador de menus no assume as caractersticas da janela pai e no possvel mov-lo para fora dessa janela. Se voc mover a janela pai, mover o Criador de menus junto com ela. A janela pai deve, em primeiro lugar, ser definida com DEFINE WINDOW e deve estar visvel para o acesso ao Criador de menus.

[Pg.: 266]

IN SCREEN Abre explicitamente o Criador de menus na janela principal do Visual FoxPro, aps ser colocado em uma janela pai. O Criador de menus colocado em uma janela pai ao incluir a clusula IN WINDOW. NOWAIT Continua a execuo do programa aps a abertura do Criador de menus. O programa no aguarda o fechamento do Criador de menus, mas continua a execuo na linha do programa imediatamente a seguir da linha que contm MODIFY MENU NOWAIT. Se voc omitir NOWAIT quando emitir MODIFY MENU em um programa, o Criador de menus ser aberto e a execuo do programa ser colocada em pausa at o seu fechamento. NOWAIT somente tem efeito quando emitido dentro de um programa. Ele no tem nenhum efeito em MODIFY MENU quando emitido na janela Comando. Se voc emitir MODIFY MENU a partir da janela Comando sem um nome de menu e incluir NOWAIT, o dilogo Novo menu no ser exibido. O dilogo Novo menu permite que voc especifique o tipo de menu (padro ou tecla de atalho) criado. SAVE Deixa o Criador de menus aberto depois que uma outra janela ativada. Se voc omitir SAVE, o Criador de menus ser fechado quando uma outra janela for ativada. A incluso de SAVE no tem nenhum efeito quando emitido na janela Comando. Comentrios Para obter maiores informaes sobre a criao de menus, consulte Criando um sistema de menus, no captulo 11, Criando menus e barras de ferramentas, no Guia do Desenvolvedor. MODIFY STRUCTURE, comando Exibe o Criador de tabelas, permitindo modificar a estrutura de uma tabela. Sintaxe MODIFY STRUCTURE Comentrios Em verses anteriores do FoxPro, MODIFY STRUCTURE abre a caixa de dilogo Estrutura da tabela. Caso uma tabela no esteja aberta atualmente na rea de trabalho selecionada, ser exibida a caixa de dilogo Abrir que permite selecionar uma tabela a ser modificada. As alteraes que podem ser feitas na estrutura de uma tabela incluem adicionar e excluir campos; modificar nomes, tamanhos e tipos de dados de campos; adicionar, excluir ou modificar marcas de ndice e especificar suporte de valor nulo para campos. Voc pode tambm modificar a estrutura de uma tabela utilizando a interface. Para obter maiores informaes, consulte Modificando tabelas no captulo 2, Criando tabelas e ndices, no Guia do Usurio. Cuidado Se voc alterar o tipo de dado de um campo para outro tipo de dado, o contedo do campo poder no ser transferido corretamente, ou poder nem mesmo ser transferido. Por exemplo, se voc converter um campo de data para um tipo numrico, o contedo do campo no ser transferido. O Visual FoxPro faz automaticamente uma cpia de backup da tabela atual antes de voc alterar a estrutura da tabela. Depois de concludas as modificaes, os dados contidos na cpia de backup da tabela so includos na estrutura da tabela recm-modificada. Se a tabela tiver um campo Memo, tambm ser criado um arquivo de backup de memo. O arquivo de backup da tabela tem a extenso .BAK e o arquivo de backup de memo tem a extenso .TBK. Se voc aceitar as alteraes feitas na estrutura e, em seguida, interromper o processo de cpia dos dados, o novo arquivo no conter todos os registros da tabela original.
[Pg.: 267]

Lembre-se de que o Visual FoxPro cria um arquivo .BAK para o arquivo da tabela original e, se a tabela tiver um campo memo, uma cpia .TBK do arquivo de memo original. Em caso de problemas com MODIFY STRUCTURE, exclua o(s) novo(s) arquivo(s) e renomeie o arquivo .BAK e o arquivo .TBK, se houver algum, com as extenses de arquivo originais (.DBF and .FPT). Quando voc modifica a estrutura de uma tabela que tem um campo memo, o tamanho de bloco do arquivo de memo definido como a definio de tamanho de bloco atual. Voc pode especificar o tamanho de bloco do arquivo de memo com SET BLOCKSIZE. MODIFY WINDOW, comando Modifica uma janela definida pelo usurio ou a janela principal do Visual FoxPro. Sintaxe MODIFY WINDOW NomeJanela | SCREEN [FROM nLinha1, nColuna1 TO nLinha2, nColuna2 | AT nLinha3, nColuna3 SIZE nLinha4, nColuna4] [FONT cNomeFonte [, nTamanhoFonte]] [STYLE cEstiloFonte] [TITLE cTextoTtulo] [HALFHEIGHT] [DOUBLE | PANEL | NONE | SYSTEM] [CLOSE | NOCLOSE] [FLOAT | NOFLOAT] [GROW | NOGROW] [MINIMIZE | NOMINIMIZE] [SHADOW | NOSHADOW] [ZOOM | NOZOOM] [ICON FILE NomeArquivo1] [FILL FILE NomeArquivo2] [COLOR SCHEME nNmeroEsquema | COLOR ListaParesCores] Argumentos NomeJanela Especifica a janela definida pelo usurio a ser modificada. Primeiro necessrio criar a janela especificada com DEFINE WINDOW. SCREEN Especifica a janela principal do Visual FoxPro como a janela a ser modificada. No abrevie SCREEN, caso contrrio, o Visual FoxPro gerar uma mensagem de erro. Para retornar a janela principal do Visual FoxPro sua configurao de inicializao, emita o comando abaixo sem nenhuma clusula adicional: MODIFY WINDOW SCREEN Dica: Utilize MODIFY WINDOW SCREEN NOCLOSE para evitar que voc mesmo finalize acidentalmente o Visual FoxPro antes da hora. Para obter maiores informaes sobre as clusulas MODIFY WINDOW, consulte DEFINE WINDOW. Comentrios MODIFY WINDOW altera os atributos de uma janela existente definida pelo usurio (uma janela criada com DEFINE WINDOW) ou a janela principal do Visual FoxPro. MODIFY WINDOW no pode ser utilizado para alterar os atributos de janelas do sistema do Visual FoxPro (como as janelas Comando e Pesquisar). Utilize MODIFY WINDOW para alterar a localizao, a fonte padro, o ttulo, a borda, os controles, o cone, o papel de parede e a cor de uma janela definida pelo usurio ou da janela principal do Visual FoxPro. Voc pode alterar qualquer um desses atributos ao incluir as clusulas opcionais para o comando MODIFY WINDOW. (Observe que se alterar as cores, voc deve utilizar CLEAR para aplicar as alteraes.)
[Pg.: 268]

Por exemplo, inclua as clusulas FROM e TO ou AT e SIZE para especificar uma nova localizao ou um novo tamanho para uma janela definida pelo usurio ou para a janela principal do Visual FoxPro. Para evitar que uma janela definida pelo usurio ou a janela principal do Visual FoxPro sejam movidas, inclua a palavrachave NOFLOAT. MODIFY WINDOW, exemplo do comando O exemplo a seguir altera o contedo da barra de ttulo da janela principal do Visual FoxPro. MODIFY WINDOW SCREEN TITLE 'Meu aplicativo' MONTH( ), funo Retorna o nmero do ms de uma expresso de Data ou de DataHora especificada. Sintaxe MONTH(dExpresso | tExpresso) Tipos de retorno: Argumentos dExpresso ms. Especifica a expresso de Data para a qual voc deseja que MONTH( ) retorne o nmero do Numrico

tExpresso Especifica a expresso de DataHora para a qual voc deseja que MONTH( ) retorne o nmero do ms. Comentrios MONTH( ) retorna um nmero de 1 a 12. Janeiro o ms 1 e dezembro o ms 12. MONTH( ), exemplo da funo CLEAR ? DATE( ) && Exibe a data atual ? MONTH(DATE( )) && Exibe o nmero do ms STORE {05/03/95} TO gdBuy STORE MONTH(gdBuy + 31) TO gdMonth ? gdMonth MOVE POPUP, comando Move um menu definido pelo usurio criado com DEFINE POPUP para uma nova localizao. Sintaxe MOVE POPUP NomeMenu TO nLinha1, nColuna1 | BY nLinha2, nColuna2 Argumentos NomeMenu Especifica o menu a ser movido. No Visual FoxPro, no possvel mover o menu do sistema. TO nLinha1, nColuna1 Move o menu para uma localizao especificada por nLinha1, nColuna1 , em uma janela definida pelo usurio ou na janela principal do Visual FoxPro. BY nLInha2, nColuna2 Move o menu para uma localizao relativa sua posio atual. nLinha2 especifica o nmero de linhas que o menu deve ser movido (para baixo se nLinha2 for positiva, para cima se for
[Pg.: 269]

negativa). A expresso numrica nColuna2 especifica o nmero de colunas que o menu deve ser movido (para a direita se nColuna2 for positiva, para a esquerda se for negativa). Comentrios possvel mover um menu para uma posio especfica ou para uma posio relativa sua posio atual. Se estiver definido, o menu poder ser movido; no necessrio que ele esteja ativo ou visvel. MOVE POPUP, exemplo do comando prximo exemplo define e ativa um menu e, em seguida, move e altera seu tamanho.

CLOSE DATABASE CLEAR DEFINE POPUP popMovIn FROM 2,2 TO 7, 14 PROMPT FILES LIKE *.PRG ; TITLE 'Programas' ACTIVATE POPUP popMovIn NOWAIT =CHRSAW(2) MOVE POPUP popMovIn BY 5,5 && Move o menu para baixo =CHRSAW(2) SIZE POPUP popMovIn BY 5,5 && Aumenta o menu =CHRSAW(2) SIZE POPUP popMovIn BY -5,-5 && Diminui o menu =CHRSAW(2) MOVE POPUP popMovIn BY -5,-5 && Move o menu para cima =CHRSAW(2) DEACTIVATE POPUP popMovIn RELEASE POPUP popMovIn MOVE WINDOW, comando Move uma janela definida pelo usurio criada com DEFINE WINDOW ou uma janela do sistema do Visual FoxPro (como a janela Comando ou a janela Pesquisar) para uma nova localizao. Sintaxe MOVE WINDOW NomeJanela TO nLinha1, nColuna1 | BY nLinha2, nColuna2 | CENTER Argumentos NomeJanela Especifica o nome da janela a ser movida. TO nLinha1, nColuna1 Move a janela para uma localizao, especificada por nLinha1, nColuna1, na janela principal do Visual FoxPro ou em uma janela definida pelo usurio. BY nLinha2, nColuna2 Move a janela para uma localizao relativa sua posio atual. A expresso numrica nLinha2 especifica o nmero de linhas que a janela deve ser movida (para baixo se nLinha2 for positiva, para cima se for negativa). A expresso numrica coluna nColuna2 especifica o nmero de colunas que a janela deve ser movida (para a direita se nColuna2 for positiva, para a esquerda se for negativa). CENTER Centraliza uma janela na janela principal do Visual FoxPro ou na sua janela pai. Comentrios possvel mover uma janela para uma posio especfica ou para uma posio relativa sua posio atual. Se estiver definida, a janela poder ser movida; no necessrio que ela esteja ativa ou visvel.

[Pg.: 270]

Para mover uma janela do sistema ou uma barra de ferramentas (no Visual FoxPro), coloque o nome da janela ou da barra de ferramentas entre aspas. Por exemplo, para mover a barra de ferramentas Controles de relatrio (quando no est ancorada) no Visual FoxPro, emita o comando a seguir: MOVE WINDOW "Controles de relatrio" BY 1,1 MOVE WINDOW, exemplo do comando No exemplo a seguir, aps a definio e ativao da janela denominada wEnter, a janela ser movida. DEFINE WINDOW wEnter FROM 10,4 TO 15,54 SYSTEM ; TITLE "Nomadic Window" ACTIVATE WINDOW wEnter WAIT WINDOW 'Pressione qualquer tecla para mover a janela' MOVE WINDOW wEnter TO 20,15 WAIT WINDOW 'Pressione qualquer tecla para centralizar a janela' MOVE WINDOW wEnter CENTER WAIT WINDOW 'Pressione qualquer tecla para liberar a janela' RELEASE WINDOW wEnter MTON( ), funo Retorna um valor Numrico de uma expresso de Moeda. Sintaxe MTON(mExpresso) Tipos de retorno: Argumentos mExpresso Especifica uma expresso de Moeda cujo valor retornado por MTON( ). mExpresso deve resultar em um valor Moeda vlido; caso contrrio, o Visual FoxPro gera um erro. Os valores do tipo Moeda so criados colocando-se um cifro ($) imediatamente antes de um valor Numrico. Numrico

Comentrios MTON( ) retorna um valor Numrico com quatro casas decimais. MTON( ), exemplo da funo O exemplo abaixo cria uma varivel de tipo Moeda denominada gyMoney. TYPE( ) exibe Y, indicando que a varivel de tipo Moeda. MTON( ) utilizada para converter a varivel a um tipo Numrico e TYPE( ) agora exibe N, indicando que a varivel de tipo Numrico aps a converso. STORE $24.95 TO gyMoney && Cria uma varivel de memria tipo Moeda CLEAR ? "gyMoney do tipo: " ?? TYPE('gyMoney') && Exibe Y, valor de tipo Moeda gyMoney = MTON(gyMoney) && Converte gyMoney para um valor Numrico ? "gyMoney agora do tipo: " ?? TYPE('gyMoney') && Exibe N, valor de tipo Numrico

[Pg.: 271]

NDX, funo ( ) Retorna o nome de um arquivo de ndice aberto (.IDX) para a tabela atual ou especificada. Sintaxe NDX(nNmerondice [, nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nNmerondice Especifica qual nome de arquivo .IDX ser retornado. USE e SET INDEX suportam uma lista de arquivos de ndice que permite que voc abra arquivos .IDX para uma tabela. A ordem dos nomes de arquivos nessa lista determina o nome do arquivo .IDX retornado por NDX( ). Por exemplo, se nNmerondice for igual a 1, NDX( ) retornar o nome do primeiro arquivo .IDX na lista de arquivos de ndice, se nNmerondice for igual a 2, NDX( ) retornar o nome do segundo arquivo .IDX, e assim por diante. NDX( ) ignora os nomes dos arquivos de ndice composto (.CDX) na lista de arquivos de ndice. NDX( ) retornar uma seqncia vazia se nNmerondice for maior do que o nmero de arquivos .IDX na lista de arquivos de ndice. nreaTrabalho Especifica o nmero da rea de trabalho para arquivos .IDX abertos em uma rea de trabalho diferente da atual. NDX( ) retornar uma seqncia vazia se nenhuma tabela estiver aberta na rea de trabalho especificada. Se voc omitir nreaTrabalho, NDX( ) retornar os nomes dos arquivos .IDX abertos com a tabela na rea de trabalho atual. cAliasTabela Especifica o alias de tabela para os arquivos .IDX abertos em uma rea de trabalho diferente da atual. Caso nenhuma tabela apresente o alias que voc incluiu, o Visual FoxPro exibir uma mensagem de erro. Se voc omitir cAliasTabela, NDX( ) retornar os nomes dos arquivos .IDX abertos com a tabela na rea de trabalho atual. Comentrios As funes CDX( ) e MDX( ) podem ser utilizadas para retornar os nomes dos arquivos de ndice composto abertos (.CDX). No Visual FoxPro para Windows, quando SET FULLPATH est ativado (ON), NDX( ) retorna o caminho do arquivo .IDX junto com o nome do arquivo .IDX. Quando SET FULLPATH est desativado (OFF), NDX( ) retorna a unidade de disco onde o arquivo .IDX reside junto com o nome de arquivo .IDX. NORMALIZE( ), funo Converte uma expresso de caracteres, fornecida por um usurio, de uma forma que pode ser comparada com os valores de retorno de funo do Visual FoxPro. Sintaxe NORMALIZE(cExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres a ser normalizada. Comentrios Caractere Caractere

[Pg.: 272]

NORMALIZE( ) retorna uma seqncia de caracteres a partir da expresso de caracteres cExpresso com as seguintes alteraes:: A expresso de caracteres convertida em maisculas. Contudo, as seqncias embutidas no so alteradas. Um exemplo de uma seqncia embutida "Al" na expresso de caracteres "LEFT('Al',1)". As palavras-chave abreviadas do Visual FoxPro na expresso de caracteres so expandidas, ficando escritas por extenso. Os operadores -> separando aliases de nomes de campos so convertidos em pontos. A sintaxe de qualquer comando ou funo do Visual FoxPro dentro da expresso de caracteres verificada, embora a expresso no seja avaliada. Se a sintaxe no estiver correta, o Visual FoxPro ir gerar um erro de sintaxe. NORMALIZE( ) no verifica a existncia de campos, tabelas, variveis de memria, funes definidas pelo usurio ou outras referncias na expresso de caracteres. Por exemplo, um usurio pode digitar no Construtor de expresses uma expresso de ndice igual seguinte: UPPE(cust->lname) + UPPE(cust->fname) Embora seja uma expresso de chave de ndice vlida do Visual FoxPro, difcil compar-la com os valores de retorno de uma funo do Visual FoxPro como KEY( ).NORMALIZE( ) retorna a seguinte seqncia de caracteres para a expresso acima: UPPER(CUST.LNAME) + UPPER(CUST.FNAME) Ela pode ser facilmente comparada com o valor retornado por uma funo como KEY( ), permitindo que voc, neste exemplo, determine se j existe um ndice ou marca de ndice com a expresso de ndice fornecida pelo usurio. NOTE, comando Indica o incio de uma linha de comentrio no executvel em um arquivo de programa. Sintaxe NOTE [Comentrios] Argumentos Comentrio Especifica o comentrio.

Comentrios Coloque um ponto-e-vrgula (;) no final de cada linha de comentrio que continua na linha seguinte. NOTE, exemplo do comando NOTE Inicializa o nmero de pgina; variable. STORE 1 to gnPageNum * Inicializa o Loop DO WHILE gnPageNum <= 25 && loop 25 vezes gnPageNum = gnPageNum + 1 ENDDO && DO WHILE gnPageNum <= 25 NTOM( ), funo Retorna um valor Moeda com quatro casas decimais a partir de uma expresso numrica.
[Pg.: 273]

Sintaxe NTOM(nExpresso) Tipos de retorno: Argumentos nExpresso Especifica uma expresso numrica cujo valor Moeda retornado por NTOM( ). Se nExpresso tiver mais de quatro casas decimais, ele ser arredondado para quatro casas decimais. Se nExpresso tiver menos de 4 casas decimais, ser preenchido com zeros at que sejam criadas quatro casas decimais. NTOM( ), exemplo da funo O exemplo que se segue cria uma varivel de tipo numrico denominada gnNumeric. TYPE( ) exibe N, indicando que a varivel um tipo numrico. NTOM( ) utilizado para converter a varivel em um tipo de moeda e TYPE( ) agora exibe Y, indicando que a varivel um tipo de moeda aps a converso. STORE 24.95 TO gnNumeric && Cria uma varivel de memria tipo numrica CLEAR ? "gnNumeric digitado: " ?? TYPE('gnNumeric') && Exibe N, tipo valor numrico gnNumeric= NTOM(gnNumeric) && Converte gnNumrico para um valor atual ? "gnNumeric agora digitado: " ?? TYPE('gnNumeric') && Exibe Y, valor tipo atual NUMLOCK( ), funo Retorna o modo atual da tecla NUM LOCK ou define o modo da tecla NUM LOCK como ativada ou desativada. Sintaxe NUMLOCK([lExpresso]) Tipos de retorno: Argumentos lExpresso Define a tecla NUM LOCK como ativada ou desativada. Se lExpresso for verdadeiro (.T.), a tecla NUM LOCK ser ativada; se lExpresso for falso (.F.), a tecla NUM LOCK ser desativada. NUMLOCK( ) retornar um valor lgico correspondente definio da tecla NUM LOCK antes da emisso de NUMLOCK(.T.) ou NUMLOCK(.F.). Comentrios NUMLOCK( ) retornar verdadeiro (.T.) se a tecla NUM LOCK estiver ativada (pressionar uma tecla no teclado numrico retorna um nmero), ou falso (.F.) se NUM LOCK estiver desativada (pressionar uma tecla no teclado numrico move o cursor). No Visual FoxPro for Macintosh, a definio da tecla NUM LOCK pode ser alterada pressionando-se SHIFT+CLEAR. NUMLOCK( ), exemplo da funo Lgico Moeda

[Pg.: 274]

No exemplo a seguir, o sinal de igual (=) utilizado para executar NUMLOCK( ) sem retornar um valor. gcOldLock = NUMLOCK( ) && Salva configurao original WAIT WINDOW 'Pressione uma tecla para ativar NumLock' = NUMLOCK(.T.) && Ativa NumLock WAIT WINDOW 'Pressione uma tecla para desativar NumLock' = NUMLOCK(!NUMLOCK( )) && Alterna NumLock para valor oposto WAIT WINDOW 'Pressione uma tecla para recuperar a definio original de NumLock' = NUMLOCK(gcOldLock) && Retorna definio original NVL( ), funo Retorna um valor no-nulo a partir de duas expresses. Sintaxe NVL(eExpresso1, eExpresso2) Tipos de retorno: Argumentos eExpresso1, eExpresso2 NVL( ) retornar eExpresso2 se eExpresso1 resultar em um valor nulo. NVL( ) retornar eExpresso1se eExpresso1 no for um valor nulo. eExpresso1 e eExpresso2 podem ser formados por qualquer tipo de dados. NVL( ) retornar .NULL. se tanto eExpresso1 e eExpresso2 resultarem em valor nulo. Comentrios Utilize NVL( ) para remover valores nulos de clculos ou operaes onde valores nulos no so suportados ou no so relevantes. NVL( ), exemplo da funo O exemplo a seguir cria uma varivel de memria denominada glMyNull que contm o valor nulo. NVL( ) utilizada para retornar um valor no nulo a partir de glMyNull e outra expresso. STORE .NULL. TO glMyNull && Uma varivel de memria que contm um valor nulo CLEAR ? NVL(.T., glMyNull) && Exibe .T. ? NVL(glMyNull, glMyNull) && Exibe .NULL. OCCURS( ), funo Retorna o nmero de vezes que uma expresso de caracteres ocorre dentro de uma outra expresso de caracteres. Sintaxe OCCURS(cExpressoProcurada, cExpressoPesquisada) Tipos de retorno: Argumentos cExpressoProcurada cExpressoPesquisada. CExpressoPesquisada cExpressoProcurada. Especifica uma expresso de caracteres que OCCURS( ) procura dentro da Especifica a expresso de caracteres em que OCCURS( ) procura a Numrico Caractere, Data, DataHora, Numrico, Moeda, Lgico ou valor nulo

[Pg.: 275]

Comentrios OCCURS( ) retornar 0 (zero) se a cExpressoProcurada no for localizada na cExpressoPesquisada. OCCURS( ), exemplo da funo STORE 'abracadabra' TO gcstring CLEAR ? OCCURS('a', gcstring) && Exiba 5 ? OCCURS('b', gcstring) && Exiba 2 ? OCCURS('c', gcstring) && Exiba 1 ? OCCURS('e', gcstring) && Exiba 0 OLDVAL( ), funo Retorna valores originais de campos que foram modificados, mas no atualizados. Sintaxe OLDVAL(cExpresso [, cAliasTabela | nreaTrabalho]) Tipos de retorno: Argumentos cExpresso Especifica uma expresso cujo valor original retornado por OLDVAL( ) a partir de uma tabela ou uma fonte remota de dados. cExpresso normalmente um campo ou expresso que consiste em um conjunto de campos da tabela ou da fonte remota de dados. cAliasTabela retornados. Especifica o alias da tabela ou cursor a partir do qual os valores originais do campo so Caractere, Moeda, Data, DataHora, Duplo, Flutuante, Inteiro, Lgico, Numrico ou Memo

nreaTrabalho Especifica a rea de trabalho da tabela ou do cursor a partir do qual os valores originais do campo so retornados.

Comentrios OLDVAL( ) retorna os valores originais de campo para os registros de uma tabela ou cursor do Visual FoxPro que apresente a utilizao do buffer de linha ou de tabela ativada com CURSORSETPROP( ). Se uma tabela de um banco de dados ou um cursor possuir regras de validao, a funo OLDVAL( ) no exigir que a utilizao do buffer de linha ou de tabela seja ativada para retornar os valores originais do campo. Se o ponteiro do registro for movido para um registro diferente quando a utilizao do buffer de linha for ativada, ou se TABLEUPDATE( ) for emitida para executar alteraes no registro, ou se houver uma outra ao que cause uma atualizao, como o finalizar de uma transao, os campos sero atualizados e os seus valores originais no estaro mais disponveis. O tipo de dado do valor que OLDVAL( ) retorna determinado pela expresso especificada em cExpresso. Os valores originais do campo sero retornados para a tabela ou cursor aberto na rea de trabalho selecionada atualmente se OLDVAL( ) for emitida sem os argumentos opcionais cAliasTabela ou nreaTrabalho.

[Pg.: 276]

OLDVAL( ), exemplo da funo O exemplo que se segue demonstra como OLDVAL( ) utilizado para retornar o valor original dos campos em uma tabela com utilizao de buffer. Uma tabela denominada employees criada e INSERT - SQL utilizada para inserir o valor Smith no campo cSobrenome. MULTILOCKS definido como ON, uma exigncia para utilizao de buffer de tabela. CURSORSETPROP( ) utilizado para definir o modo de utilizao do buffer de tabela otimista (5). O valor original do campo cSobrenome (Smith) exibido e, em seguida, o campo cSobrenome ser modificado com REPLACE. O novo valor do campo cSobrenome (Jones) ser exibido. O valor original do campo cSobrenome (Smith) ser exibido como OLDVAL( ). TABLEUPDATE( ) , ento, utilizado para executar alteraes na tabela. O valor atualizado no campo cSobrenome (Jones) ser ento exibido. CLOSE DATABASES CLEAR * Cria uma nova tabela e adiciona um registro vazio CREATE TABLE employee (cLastName C(10)) APPEND BLANK * Insere um valor inicial INSERT INTO employee (cLastName) VALUES ("Smith") * Ative e defina a utilizao do buffer de tabela SET MULTILOCKS ON && Permita a utilizao do buffer de tabela =CURSORSETPROP("Utilizao do buffer", 5, "employee" ) && Ative a utilizao do buffer de tabela * Exibe o valor inicial =MESSAGEBOX("Valor original de cSobrenome: "+ cSobrenome, 0, "Resultados") * Altera o valor do registro e exiba resultados REPLACE cLastName WITH "Jones" =MESSAGEBOX("Valor modificado cSobrenome: "+ cLastName, 0, "Resultados") * Armazena o valor anterior do campo na varivel cTemp e exiba resultados cTemp=OLDVAL("cSobrenome", "employee") =MESSAGEBOX("Valor original cSobrenome: "+ cTemp, 0, "Resultados") * Atualiza a tabela e exibe o valor final =TABLEUPDATE(.T.) =MESSAGEBOX("Valor final de cSobrenome: "+ cSobrenome, 0, "Resultados") * Fecha e elimina o arquivo da tabela de exemplo USE DELETE FILE employee.dbf ON ERROR, comando Especifica um comando que executado quando um erro ocorre. Sintaxe ON ERROR [Comando] Argumentos Comando Especifica o comando do Visual FoxPro a ser executado. Aps a execuo do comando, a execuo do programa retomada na linha logo aps que provocou o erro. No entanto, se o procedimento de gerenciamento de erros incluir RETRY, a linha do programa que provocou o erro ser executada novamente. Caso o comando especifique um procedimento a ser executado quando ocorrer um erro, voc poder utilizar ERROR( ), MESSAGE( ), LINENO( ) e PROGRAM( ) para passar o nmero do erro, a mensagem de erro, o
[Pg.: 277]

nmero da linha do programa e o nome do programa para o procedimento. Estas informaes podem ser utilizadas para corrigir a causa do erro. Comentrios Quando ocorre um erro durante a execuo do programa, o Visual FoxPro executa o comando especificado com ON ERROR. Normalmente, ON ERROR utiliza DO para executar um procedimento de gerenciamento de erros. Utilize ON ERROR sem um comando para restaurar o Gerenciador de erros padro do Visual FoxPro. Os procedimentos ON ERROR no podem ser aninhados. Caso ON ERROR seja emitido a partir de um procedimento, o Gerenciador de erros padro do Visual FoxPro ser restaurado. ON ERROR, exemplo do comando ON ERROR DO errhand WITH ; ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( ) *** A prxima linha deve causar um erro *** USE nodatabase ON ERROR && recupera o Gerenciador de erro do sistema PROCEDURE errhand PARAMETER merror, mess, mess1, mprog, mlineno CLEAR ? 'Nmero de erros: ' + LTRIM(STR(merror)) ? 'Mensagem de erro: ' + mess ? 'Linha de cdigo com erro: ' + mess1 ? 'Nmero de linhas com erro: ' + LTRIM(STR(mlineno)) ? 'Programa com erro: ' + mprog ON ESCAPE, comando Especifica um comando que executado quando a tecla ESC pressionada, durante a execuo de um programa ou comando. Sintaxe ON ESCAPE [Comando] Argumentos Comando Especifica o comando do Visual FoxPro a ser executado. Aps a execuo do comando, a execuo do programa retomada na linha logo aps do programa que estava em execuo quando a tecla ESC foi pressionada. No entanto, se um procedimento especificado com ON ESCAPE incluir RETRY, a linha do programa que estava em execuo quando a tecla ESC foi pressionada ser executada novamente. Comentrios Normalmente, ON ESCAPE utiliza DO para executar um procedimento. Se ON ESCAPE e ON KEY estiverem ativados e voc pressionar a tecla ESC, o Visual FoxPro executar o comando especificado com ON ESCAPE. Utilize ON ESCAPE sem um comando para que nenhum comando seja executado quando a tecla ESC for pressionada (o padro). Observao (OFF). O Visual FoxPro no executa uma rotina ON ESCAPE se SET ESCAPE estiver desativado
[Pg.: 278]

ON ESCAPE, exemplo do comando O exemplo a seguir define um loop infinito, mas define uma rotina ON ESCAPE para sair dele. SET ESCAPE ON ON ESCAPE DO stopit WAIT WINDOW 'Pressione ESC para parar loop' NOWAIT glMoreLoop = .T. DO WHILE glMoreLoop ENDDO RETURN PROCEDURE stopit glMoreLoop = .F. RETURN ON KEY LABEL, comando Especifica um comando que executado quando voc pressiona uma tecla ou uma combinao especfica de teclas ou clica com o boto do mouse. Sintaxe ON KEY [LABEL NomeRtuloChave] [Comando] Argumentos LABEL NomeRtuloChave Especifica o nome do rtulo atribudo tecla. O NomeRtuloChave a letra ou dgito que aparece na tecla ou um nome especial atribudo tecla. A tabela a seguir lista os nomes de rtulos de teclas especiais. Atribuies de rtulos de teclas do Visual FoxPro Para esta tecla Especifique este valor NomeRtuloChave LEFTARROW RIGHTARROW UPARROW DNARROW HOMEHOME END END PAGE UP PGUP PAGE DOWN PGDN DEL DEL BACKSPACEBACKSPACE SPACEBAR SPACEBAR INS INS TAB TAB SHIFT+TAB BACKTAB ENTER ENTER F1 to F12 F1, F2, F3 ... CTRL+F1 to CTRL+F12 CTRL+F1, CTRL+F2 ... SHIFT+F1 to SHIFT+F12 SHIFT+F1, SHIFT+F2 ... ALT+F1 to ALT+F12 ALT+F1, ALT+F2, ALT+F3 ... ALT+0 to ALT+9 ALT+0, ALT+1, ALT+2 ... ALT+A to ALT+Z ALT+A, ALT+B, ALT+C ... CTRL+LEFT ARROW CTRL+LEFTARROW
[Pg.: 279]

CTRL+RIGHT ARROW CTRL+RIGHTARROW CTRL+HOME CTRL+HOME CTRL+END CTRL+END CTRL+PAGE UP CTRL+PGUP CTRL+PAGE DOWN CTRL+PGDN CTRL+A TO CTRL+Z CTRL+A, CTRL+B, CTRL+C ... CTRL+0 CTRL+0 RIGHT MOUSE BUTTON RIGHTMOUSE LEFT MOUSE BUTTON LEFTMOUSE MOUSE BUTTON MOUSE ESC ESC Comando Especifica o comando que ser executado quando a tecla ou combinao especificada de teclas for pressionada ou quando o boto do mouse for clicado. Voc pode incluir expresso de parmetros ou parmetro ao comando atribudo tecla, como no seguinte exemplo: ON KEY LABEL ALT+V WAIT WINDOW "Verso: " + VERSION() Voc pode incluir variveis na atribuio, mas estas devem ser pblicas. Por exemplo: PUBLIC message message = "Unidade padro: " + SYS(5) ON KEY LABEL ALT+D WAIT WINDOW message Comentrios Normalmente, ON KEY LABEL utiliza DO para executar um procedimento. ON KEY LABEL executa o comando imediatamente durante a execuo de READ, BROWSE, EDIT, CHANGE e menus definidos pelo usurio. Se um programa estiver sendo executado quando voc pressionar a tecla ou clicar no boto do mouse, o Visual FoxPro executar a linha do programa atual e, em seguida, o comando ON KEY LABEL. Qualquer atribuio de tecla com ON KEY LABEL criada em um programa permanece em vigor aps a execuo do programa. Voc pode tambm criar atribuies de teclas na janela Comando. Para retornar o comportamento de uma tecla especfica ao normal, emita ON KEY LABEL NomeRtuloChave. Para retornar todas as teclas para o comportamento padro, emita ON KEY. Dica Para evitar a ocorrncia de chamadas repetidas durante a execuo de um procedimento ON KEY LABEL, inclua PUSH KEY CLEAR no incio do procedimento para desativar todos os comandos ON KEY LABEL ativos. Execute POP KEY no final do procedimento para ativar os comandos ON KEY LABEL. As atribuies de teclas feitas com ON KEY LABEL no entraro em vigor na barra de menus do sistema do Visual FoxPro, bem como nos menus do sistema, caixas de dilogo, alertas e assim por diante. As atribuies de teclas entraro em vigor nas janelas do sistema do Visual FoxPro no editor de texto do Visual FoxPro, na janela Comando, na janela Rastrear etc. Ao contrrio do que acontece com ON KEY, podem existir vrios comandos ON KEY LABEL ativos. Por exemplo, voc pode atribuir um comando a cada uma das teclas de direo e a um boto do mouse. Observe que a execuo de um comando ON KEY LABEL redefine PARAMETERS( ) como 0. Para obter maiores informaes, consulte PARAMETERS( ). No Visual FoxPro, certos eventos no podem ser interceptados porque esto sob o controle do Windows. Em especial, ON KEY LABEL MOUSE, ON KEY LABEL LEFTMOUSE e ON KEY LABEL RIGHTMOUSE no sero executados quando voc clicar em um controle do Windows como uma barra de rolagem, um menu Controle ou um item semelhante. Observe ainda que CTRL+0 suportado em ON KEY LABEL no Visual FoxPro, permitindo que voc redefina a combinao de teclas utilizadas para digitar um valor nulo em um campo.

[Pg.: 280]

ON KEY LABEL, exemplo do comando O exemplo a seguir exibe uma mensagem quando uma tecla de direo pressionada. CLEAR PUBLIC msg msg = CHR(13) + CHR(13) + "Pressione F9 para " + ; "restaurar a definio chave padro". ON KEY LABEL RIGHTARROW Wait Window "Seta direita " + msg NOWAIT ON KEY LABEL LEFTARROW Wait Window "Seta esquerda " + msg NOWAIT ON KEY LABEL UPARROW Wait Window "Seta acima " + msg NOWAIT ON KEY LABEL DNARROW Wait Window "Seta abaixo " + msg NOWAIT * Pressione F9 para limpar os atributos ON KEY LABEL ON KEY LABEL F9 ON KEY ON PAD, comando Especifica a barra de menu ou menu ativado quando voc seleciona um ttulo especfico do menu. Sintaxe ON PAD NomeTtuloMenu OF NomeBarraMenus1 [ACTIVATE POPUP NomeMenu | ACTIVATE MENU NomeBarraMenus2 Argumentos NomeTtuloMenu OF NomeBarraMenus1 menu atribudo. Especifica o ttulo do menu para o qual uma barra de menu ou

ACTIVATE POPUP NomeMenu Especifica o menu a ser ativado quando o ttulo do menu selecionado. Utilize ON PAD NomeTtuloMenu OF NomeBarraMenus1 sem ACTIVATE POPUP para liberar um menu de um ttulo do menu. Se voc especificar a barra de menu do sistema _MSYSMENU para NomeBarraMenus1, NomeMenu no poder especificar um menu criado com a clusula DEFINE POPUP PROMPT. ACTIVATE MENU NomeBarraMenus2 Especifica o nome da barra de menu a ser ativado quando o ttulo do menu selecionado. Utilize ON PAD NomeTtuloMenu OF NomeBarraMenus1 sem ACTIVATE MENU para liberar uma barra de menu de um nome de menu. Comentrios Utilize ON SELECTION PAD para executar um comando quando um ttulo de menu selecionado. ON PAGE, comando Especifica um comando a ser executado quando a impresso alcana um nmero de linha especificado em um relatrio ou quando voc emite EJECT PAGE. Sintaxe ON PAGE [AT LINE nNmeroLinha [Comando]] Argumentos

[Pg.: 281]

AT LINE nNmeroLinha [Comando] Especifica o comando a ser executado no nmero de linha designado. O comando especificado executado quando _PLINENO, a varivel do sistema que mantm a trilha do nmero de linha atual em um relatrio, se torna maior que o nmero de linha especificado com nNmeroLinha. O comando especificado com ON PAGE tambm executado quando voc emite EJECT PAGE. Para obter maiores informaes, consulte EJECT PAGE. Comentrios Normalmente, ON PAGE utiliza DO a fim de executar um procedimento para o tratamento de quebras de pgina, cabealhos e rodaps. A execuo de ON PAGE sem a clusula AT LINE limpa o comando ON PAGE. ON SELECTION MENU, comando Especifica um comando que executado quando voc seleciona um ttulo de menu em uma barra de menus. Sintaxe ON SELECTION MENU NomeBarraMenus | ALL [Comando] Argumentos NomeBarraMenus Especifica o nome da barra de menus para a qual um comando atribudo. O comando executado quando qualquer ttulo de menu selecionado na barra de menus. Voc pode especificar o nome de uma barra de menus definida pelo usurio criada com DEFINE MENU ou com a barra de menus do sistema do Visual FoxPro, _MSYSMENU. ALL Executa um comando quando qualquer ttulo de menu selecionado em qualquer barra de menus. Comando Especifica o comando a ser executado quando um ttulo de menu for selecionado. Utilize ON SELECTION MENU sem um comando para liberar um comando atribudo a uma barra de menus. Comentrios Ao criar e ativar uma barra de menus, coloque ON SELECTION MENU entre DEFINE MENU e ACTIVATE MENU. Utilize ON SELECTION PAD para executar um comando quando um item de menu especfico for selecionado. ON SELECTION PAD prevalece sobre ON SELECTION MENU. Utilize ON PAD para ativar um menu ou uma barra de menus quando um ttulo de menu especfico for selecionado. Utilize ON SELECTION MENU sem um comando para liberar um comando atribudo a uma barra de menus. ON SELECTION MENU, exemplo do comando No exemplo a seguir, ON SELECTION MENU utilizado para executar um procedimento quando um ttulo de menu selecionado na barra de menus do sistema do Visual FoxPro. A atual barra de menus do sistema gravada na memria com SET SYSMENU SAVE e todos os ttulos de menu do sistema so removidos com SET SYSMENU TO. DEFINE PAD cria vrios ttulos de menu do sistema. Quando voc seleciona um ttulo de menu, o procedimento choice, atribudo barra de menus com ON SELECTION MENU, executado. O procedimento choice exibe o nome do ttulo de menu selecionado e o nome da barra de menus. Se voc selecionar o ttulo do menu Sair, o menu original do sistema do Visual FoxPro ser restaurado. *** Nomeie este programa como ONMENU.PRG *** CLEAR
[Pg.: 282]

SET SYSMENU SAVE SET SYSMENU TO DEFINE PAD padSys OF _MSYSMENU PROMPT '\<Sistema' COLOR SCHEME 3 ; KEY ALT+S, '' DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Editar' COLOR SCHEME 3 ; KEY ALT+E, '' DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Registro' COLOR SCHEME 3 ; KEY ALT+R, '' DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Janela' COLOR SCHEME 3 ; KEY ALT+J, '' DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<latrios' COLOR SCHEME 3 KEY ALT+L, '' DEFINE PAD padExit OF _MSYSMENU PROMPT 'S\<air' COLOR SCHEME 3 ; KEY ALT+A, '' ON SELECTION MENU _MSYSMENU ; DO choice IN onmenu WITH PAD( ), MENU( ) PROCEDURE choice PARAMETER gcPad, gcMenu WAIT WINDOW 'Voc escolhe ' + gcPad + ; ' no menu ' + gcMenu NOWAIT IF gcPad = 'PADEXIT' SET SYSMENU TO DEFAULT ENDIF ON SELECTION PAD, comando Especifica um comando que executado quando voc seleciona um ttulo de menu especfico em uma barra de menus. Sintaxe ON SELECTION PAD NomeTtuloMenu OF NomeBarraMenus [Comando] Argumentos NomeTtuloMenu OF NomeBarraMenus atribudo. Especifica o nome do ttulo de menu ao qual o comando

Comando Especifica o comando do Visual FoxPro a ser executado quando o ttulo de menu especificado for selecionado. Comentrios Quando voc selecionar o ttulo de menu especificado, o Visual FoxPro executar o comando especificado com ON SELECTION PAD. Normalmente, ON SELECTION PAD utiliza DO para executar um procedimento ou um programa quando um ttulo de menu especfico selecionado na barra de menus. Ao criar e ativar a barra de menus, coloque ON SELECTION PAD entre DEFINE MENU e ACTIVATE MENU. Utilize ON SELECTION MENU para executar um comando quando selecionar qualquer ttulo de menu em uma barra de menus. Utilize ON PAD para ativar um menu ou uma barra de menus quando selecionar um ttulo de menu especfico em uma barra de menus. Utilize ON SELECTION PAD sem um comando para liberar um comando atribudo ao ttulo de menu. ON SELECTION POPUP, comando

[Pg.: 283]

Especifica um comando a ser executado quando voc selecionar qualquer item em um menu especificado ou em todos os menus. Sintaxe ON SELECTION POPUP NomeMenu | ALL [Comando] Argumentos NomeMenu Especifica o menu ao qual o comando atribudo. ALL Se voc incluir ALL em vez de um nome de menu, o Visual FoxPro executar o comando quando um item de menu for selecionado em qualquer menu. Comando Especifica o comando a ser executado quando um item de menu for selecionado. Comentrios Quando voc seleciona qualquer item em um menu, o Visual FoxPro executa o comando especificado com ON SELECTION POPUP. Ao criar e ativar o menu, coloque ON SELECTION POPUP entre DEFINE POPUP e ACTIVATE POPUP. Utilize ON SELECTION BAR para executar um comando quando selecionar um item de menu especfico. ON SELECTION BAR prevalece sobre ON SELECTION POPUP. Utilize ON BAR para ativar um menu ou uma barra de menus quando selecionar um item de menu especfico. Utilize ON SELECTION POPUP sem um comando para liberar um comando atribudo a um item de menu com um ON SELECTION POPUP anterior. ON SHUTDOWN, comando Especifica um comando a ser executado quando voc tentar sair do Visual FoxPro ou Microsoft Windows. Sintaxe ON SHUTDOWN [Comando] Argumentos Emita ON SHUTDOWN sem Comando para liberar o comando ON SHUTDOWN atual. Comentrios O comando especificado em ON SHUTDOWN ser executado se voc tentar sair do Visual FoxPro. Se voc tentar sair do Microsoft Windows a partir do Gerenciador de programas, enquanto o Visual FoxPro estiver aberto, o controle ser retornado ao Visual FoxPro e o comando especificado em ON SHUTDOWN ser executado. Normalmente, o comando ON SHUTDOWN um comando DO que executa uma rotina para exibir uma caixa de dilogo. A caixa de dilogo pergunta se voc tem certeza de que deseja sair do aplicativo atual e do Visual FoxPro. Se voc quiser sair do aplicativo, a rotina poder fechar arquivos abertos, limpar o ambiente do Visual FoxPro e, em seguida, executar QUIT. Caso voc no queira sair do aplicativo atual, a rotina poder retornar o controle novamente para o aplicativo. ON( ), funo

[Pg.: 284]

Retorna o comando atribudo a cada um dos seguintes comandos de gerenciamento de eventos: ON ERROR, ON ESCAPE, ON KEY LABEL, ou ON PAGE. Sintaxe ON(cComandoON [, NomeRtuloTecla]) Tipos de retorno: Argumentos cComandoON Especifica um dos comandos de gerenciamento de eventos. A seguir so apresentados os comandos e as expresses de caracteres correspondentes a serem utilizados com ON( ): Comando cComandoON Caractere

ON ERROR ERROR ON ESCAPE ESCAPE ON KEY LABEL KEY ON PAGE PAGE Por exemplo, para retornar o comando atribudo atualmente a ON ERROR, utilize ? ON('ERROR') NomeRtuloTecla Utilizado em ON KEY LABEL para especificar uma tecla ou uma combinao de teclas qual o comando atribudo. Especifique KEY em cComandoON e o nome do rtulo da tecla ou da combinao de teclas em NomeRtuloTecla. Para obter uma lista completa dos nomes de rtulos de teclas, consulte ON KEY LABEL. Por exemplo, para retornar o comando atribudo atualmente tecla de funo F7 com ON KEY LABEL, utilize ? ON('KEY', 'F7') Comentrios Quando ocorre um evento que interceptado por um dos comandos de gerenciamento de eventos, o comando atribudo pelo comando de gerenciamento de eventos executado. ON( ) retorna o comando atribudo a um comando de gerenciamento de eventos. ON( ) retornar uma seqncia vazia se nenhum comando estiver atribudo atualmente ao comando de gerenciamento de eventos especificado. ON( ), exemplo da funo O seguinte exemplo utiliza ON( ) para exibir as definies de ON ERROR e ON KEY LABEL. ON ERROR DO errorhand ON KEY LABEL CTRL+F2 WAIT WINDOW 'Voc pressionou ^F2' ON KEY LABEL ALT+Z DISPLAY MEMORY CLEAR ? ON('ERROR') && Exibe DO errorhand ? ON('KEY', 'CTRL+F2') && Exibe WAIT WINDOW 'Voc pressionou ^F2' ? ON('KEY', 'ALT+Z') && Exibe DISPLAY MEMORY ON ERROR ON KEY LABEL CTRL+F2 ON KEY LABEL ALT+Z OPEN DATABASE, comando Abre um banco de dados.

[Pg.: 285]

Sintaxe OPEN DATABASE [NomeArquivo | ?] [EXCLUSIVE | SHARED] [NOUPDATE] [VALIDATE] Argumentos NomeArquivo Especifica o nome do banco de dados a ser aberto. Se voc no especificar uma extenso para o nome do arquivo, o Visual FoxPro atribuir automaticamente a extenso .DBC. Se omitir NomeArquivo, a caixa de dilogo Abrir ser exibida. Voc pode especificar um nome de caminho como parte do nome do banco de dados. Observao O Visual FoxPro no ir reconhecer um nome de caminho adequado se um nome de diretrio ou disco contiver um ponto de exclamao (!). ? Exibe a caixa de dilogo Abrir, na qual voc poder escolher um banco de dados j existente ou digitar o nome de um novo Formulrio a ser criado. EXCLUSIVE Abre o banco de dados no modo exclusivo. Se voc abrir o banco de dados no modo exclusivo, outros usurios no podero acess-lo e recebero uma mensagem de erro se tentarem fazer isso. Se voc no incluir EXCLUSIVE nem SHARED, a definio atual de SET EXCLUSIVE determinar como o banco de dados ser aberto. SHARED Abre o banco de dados no modo compartilhado. Se voc abrir o banco de dados para uso compartilhado, outros usurios podero acess-lo. Se voc no incluir EXCLUSIVE nem SHARED, a definio atual de SET EXCLUSIVE determinar como o banco de dados ser aberto. NOUPDATE Especifica que o banco de dados no pode ser alterado. Em outras palavras, o banco de dados somente para leitura. Se voc omitir NOUPDATE, o banco de dados ser aberto com acesso para leitura e gravao. As tabelas contidas no banco de dados no so afetadas por NOUPDATE. Para evitar alteraes em uma tabela do banco de dados, inclua NOUPDATE em USE ao abrir a tabela. VALIDATE Especifica que o Visual FoxPro assegura que as referncias no banco de dados so vlidas. O Visual FoxPro verifica se as tabelas e os ndices aos quais feita referncia no banco de dados esto disponveis em disco. O Visual FoxPro tambm verifica se os campos e as marcas de ndice aos quais feita referncia existem nas tabelas e ndices. Comentrios Enquanto o banco de dados est aberto, todas as tabelas nele contidas esto disponveis. Contudo, as tabelas no esto implicitamente abertas. Voc dever abri-las com USE. Quando USE executado, o Visual FoxPro procura a tabela dentro do banco de dados aberto no momento. Se a tabela no for encontrada, o Visual FoxPro procurar por uma tabela fora do banco de dados. Isso significa que, se uma tabela fora do banco de dados tiver o mesmo nome de outra dentro do banco de dados, esta ser encontrada primeiro. Voc no pode abrir um banco de dados que foi aberto exclusivamente por outro usurio. OPEN DATABASE, exemplo do comando No exemplo a seguir, OPEN DATABASE utilizado para abrir o banco de dados testdata. DISPLAY DATABASE utilizado para exibir informaes sobre as tabelas do banco de dados. CLOSE DATABASES SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dados OPEN DATABASE testdata && Abre o banco de dados testdata DISPLAY DATABASE && Exibe informaes da tabela
[Pg.: 286]

ORDER( ), funo Retorna o nome da marca ou do arquivo de ndice de controle para a tabela atual ou especificada. Sintaxe ORDER([nreaTrabalho | cAliasTabela [, nCaminho]]) Tipos de Retorno: Argumentos nreaTrabalho Especifica a rea de trabalho de uma tabela cujo nome do arquivo de ndice de controle ou nome da marca de controle retornado por ORDER( ). cAliasTabela Especifica o alias de tabela cujo nome do arquivo de ndice de controle ou nome da marca de controle retornado por ORDER( ). nCaminho Especifica que a unidade de disco e o diretrio so retornados junto com o nome do arquivo de ndice composto ou de entrada nica. A expresso numrica nCaminho pode ter qualquer valor. Comentrios Uma tabela pode ter vrios arquivos de ndice abertos simultaneamente. No entanto, apenas um arquivo de ndice de entrada nica (o arquivo de ndice de controle) ou uma marca de um arquivo de ndice composto (a marca de controle) controla a ordem de exibio ou de acesso da tabela. Determinados comandos, como SEEK, utilizam o arquivo de ndice de controle ou a marca de controle para procurar registros. Esta funo retorna o nome do arquivo de ndice de controle ou da marca de controle. USE e SET INDEX suportam a abertura de mais de um ndice com uma lista de arquivos de ndice. Um arquivo de ndice de controle ou uma marca de controle pode ser designado nesta lista de arquivos de ndice. possvel tambm utilizar SET ORDER para designar um ndice ou uma marca de controle. Como padro, ORDER( ) retorna o nome do arquivo de ndice de controle ou o nome da marca de controle para a rea de trabalho atual. A funo ORDER( ) retorna a seqncia vazia se uma ordem no for definida (SET ORDER TO emitida ou no h nenhum arquivo ou marca de ndice de controle). ORDER( ), exemplo da funo O exemplo a seguir exibe arquivos e marcas de ndice. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer ORDER cust_id && Abre a tabela Customer ? ORDER( ) && Exibe CUST_ID ? ORDER('customer', 1) && Exibe CUSTOMER.CDX OS( ), funo Retorna o nome e o nmero da verso do sistema operacional onde o Visual FoxPro est sendo executado. Sintaxe OS([1]) Caractere

[Pg.: 287]

Tipos de Retorno: Argumentos

Caractere

1 Utilize OS(1) para retornar o nmero da verso do software do sistema operacional. Comentrios Se o argumento 1 opcional for omitido, ser retornado o nome e o nmero da verso do sistema operacional. No Visual FoxPro para Windows, utilize OS( ) para retornar a verso do MS-DOS (por exemplo, MS-DOS 6.22). OS( ), exemplo da funo ? OS( ) ? OS(1) PACK DATABASE, comando Remove os registros marcados para excluso do banco de dados atual. Sintaxe PACK DATABASE Comentrios Um banco de dados contm registros marcados para excluso depois que uma tabela ou visualizao removida do banco de dados ou se a estrutura de uma tabela do banco de dados modificada. O banco de dados deve ser aberto com exclusividade e nenhuma tabela ou visualizao no banco de dados pode ser aberta. PACK DATABASE, exemplo do comando No exemplo a seguir, PACK DATABASE utilizado para compactar o banco de dados testdata, removendo os registros marcados para excluso. CLOSE DATABASES SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho do banco de dados OPEN DATABASE testdata && Abre o banco de dados PACK DATABASE && Compacta o banco de dados atual PACK, comando Remove de modo permanente todos os registros marcados para excluso na tabela atual e reduz o tamanho de um arquivo de Memo associado tabela. Sintaxe PACK [MEMO] [DBF] Argumentos MEMO Remove o espao no utilizado do arquivo de Memo, mas no remove da tabela os registros marcados para excluso. As informaes contidas em campos Memo so armazenadas em um arquivo de Memo associado. Um arquivo de Memo tem o mesmo nome da tabela e uma extenso .FPT.

[Pg.: 288]

DBF Remove da tabela os registros marcados para excluso, mas no afeta o arquivo de Memo. Comentrios Quando o comando PACK utilizado, o Visual FoxPro copia para uma tabela temporria todos os registros no marcados para excluso. Depois de concluda a execuo de PACK, o Visual FoxPro exclui a tabela original do disco e renomeia a tabela temporria com o nome da tabela original. Se voc pressionar ESC para interromper PACK, a tabela temporria ser excluda e a tabela original permanecer inalterada. A tabela original tambm ser recuperada se voc ficar sem espao em disco enquanto PACK estiver em execuo. Quando voc emite PACK sem as clusulas MEMO e DBF, PACK afeta tanto a tabela como o arquivo de Memo. PACK requer uso exclusivo da tabela. Para obter maiores informaes sobre como abrir uma tabela com exclusividade em uma rede, consulte SET EXCLUSIVE. Caso a tabela atual tenha um ou mais ndices abertos, PACK ir reconstruir os arquivos de ndice. Importante Tenha o cuidado de marcar somente os registros desnecessrios. No h como recuperar registros excludos depois da utilizao de PACK. PAD( ), funo Retorna o ltimo ttulo de menu selecionado em uma barra de menus como uma seqncia de caracteres maisculos. Sintaxe PAD( ) Tipos de retorno: Caractere Comentrios Para que PAD( ) retorne um ttulo de menu, necessrio que uma barra de menus esteja definida e ativa. As barras de menus so criadas e ativadas com DEFINE MENU e ACTIVATE MENU. Tambm possvel utilizar PAD( ) com a barra de menus do sistema do Visual FoxPro. PAD( ) retorna uma seqncia vazia quando uma barra de menus no est definida e ativa ou se voc emite PAD( ) na janela Comando. PAD( ), exemplo da funo Neste exemplo, PAD( ) utilizada para passar um ttulo de menu a um procedimento. A barra de menus do sistema Visual FoxPro atual gravada para a memria com SET SYSMENU SAVE e todos os ttulos de menu do sistema so removidos com SET SYSMENU TO. Vrios ttulos de menu do sistema so criados com DEFINE PAD. Quando um ttulo de menu for selecionado, PAD( ) ser utilizado para passar o ttulo de menu ao procedimento denominado choice. choice exibir o ttulo de menu selecionado e o nome da barra de menus. Se o ttulo de menu Sair for selecionado, o menu original do sistema Visual FoxPro ser restaurado. *** Nomeie este programa como PADEXAM.PRG *** CLEAR SET SYSMENU SAVE SET SYSMENU TO DEFINE PAD padSys OF _MSYSMENU PROMPT '\<Sistema' COLOR SCHEME 3 ; KEY ALT+S, ''
[Pg.: 289]

DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Editar' COLOR SCHEME 3 ; KEY ALT+E, '' DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Registro' COLOR SCHEME 3 ; KEY ALT+R, '' DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Janela' COLOR SCHEME 3 ; KEY ALT+J, '' DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<latrios' COLOR SCHEME 3 KEY ALT+L, '' DEFINE PAD padExit OF _MSYSMENU PROMPT 'Sa\<ir' COLOR SCHEME 3 ; KEY ALT+I, '' ON SELECTION MENU _MSYSMENU ; DO choice IN padexam WITH PAD( ), MENU( ) PROCEDURE choice PARAMETERS gcPad, gcMenu WAIT WINDOW 'Voc escolhe' + gcPad + ; ' do menu ' + gcMenu NOWAIT IF gcPad = 'PADEXIT' SET SYSMENU TO DEFAULT ENDIF PADL( ) | PADR( ) | PADC( ), funes Retorna uma seqncia de uma expresso preenchida com espaos ou caracteres at o comprimento especificado no lado direito, esquerdo ou nos dois lados. Sintaxe PADL(eExpresso, nTamanhoResultado [, cCaracterePreenchimento]) Ou PADR(eExpresso, nTamanhoResultado [, cCaracterePreenchimento]) Ou PADC(eExpresso, nTamanhoResultado [, cCaracterePreenchimento]) Tipos de retorno: Argumentos eExpresso Especifica a expresso a ser preenchida. Esta expresso pode ser de qualquer tipo, exceto expresso lgica ou um campo de figura ou geral. nTamanhoResultado Especifica o nmero total de caracteres na expresso depois que ela foi preenchida. cCaracterePreenchimento Especifica o valor a ser utilizado no preenchimento. Este valor repetido, de acordo com a necessidade, para preencher a expresso at o nmero especificado de caracteres. Se voc omitir cCaracterePreenchimento, espaos (caractere ASCII 32) sero utilizados no preenchimento. Comentrios PADL( ) insere preenchimento esquerda, PADR( ) insere preenchimento direita e PADC( ) insere preenchimento nos dois lados. PADL( ) | PADR( ) | PADC( ), exemplo das funes STORE 'TITLE' TO gcString CLEAR ? PADL(gcString, 40, '=') ? PADR(gcString, 40, '=') ? PADC(gcString, 40, '=') Caractere

[Pg.: 290]

PARAMETERS( ), funo Retorna o nmero de parmetros passados para o procedimento, para a funo definida pelo usurio ou para o programa chamado mais recentemente. Sintaxe PARAMETERS( ) Tipos de retorno: Numrico Comentrios PARAMETERS( ) til para determinar o nmero de parmetros passados para um programa, um procedimento ou uma funo definida pelo usurio. Observao O valor retornado por PARAMETERS( ) redefinido sempre que um procedimento, uma funo definida pelo usurio ou um programa chamado ou quando o comando ON KEY LABEL executado. PARAMETERS( ), exemplos de funo O exemplo 1 chama um procedimento e exibe o nmero de parmetros passados em uma janela de espera. O exemplo 2 utilize um procedimento para exibir a mdia de 4 valores. * Exemplo 1 DO testpar WITH 1,2,3 PROCEDURE testpar PARAMETERS gn1,gn2,gn3 gcMessage = 'PARAMETERS( ) ='+ALLTRIM(STR(PARAMETERS( ))) WAIT WINDOW (gcMessage) RETURN * Exemplo 2 SET TALK OFF gnVal1 = 10 gnVal2 = 20 gnVal3 = 30 gnVal4 = 15 gnMin = getavg(gnVal1, gnVal2, gnVal3, gnVal4) ? 'O valor mdio ' ?? gnMin * Esta funo definida pelo usurio permite at 9 parmetros a serem passados. * Usa a funo PARAMETERS( ) para determinar quantos * foram passados e retorna o valor mdio. FUNCTION getavg PARAMETERS gnPara1,gnPara2,gnPara3,gnPara4,gnPara5, ; gnPara6,gnPara7,gnPara8,gnPara9 IF PARAMETERS( ) = 0 RETURN 0 ENDIF gnResult = 0 FOR gnCount = 1 to PARAMETERS( ) gcCompare = 'gnPara' +(STR(gnCount,1)) gnResult = gnResult + EVAL(gcCompare) ENDFOR gnResult = gnResult / (gnCount - 1) RETURN gnResult
[Pg.: 291]

PARAMETERS, comando Atribui dados passados de um programa de chamada para matrizes ou variveis de memria privadas. Sintaxe PARAMETERS ListaParmetro Argumentos ListaParmetro atribudos. Especifica os nomes das matrizes ou das variveis de memria s quais os dados so

Os parmetros da ListaParmetros so separados por vrgulas. Na instruo PARAMETERS deve haver, pelo menos, o mesmo nmero de parmetros existentes na instruo DO ... WITH. Se o nmero de variveis ou matrizes listado na instruo PARAMETERS for superior ao nmero passado por DO ... WITH, as demais variveis ou matrizes sero inicializadas com um valor falso (.F.). Um limite mximo de 27 parmetros podem ser passados. PARAMETERS( ) retorna o nmero de parmetros passados para a ltima rotina executada. Comentrios Quando PARAMETERS for utilizado com DO ... WITH, esta deve ser a primeira instruo executada no programa, procedimento ou funo definida chamada pelo usurio. Como padro, DO ... WITH passa variveis e matrizes para procedimentos por referncia. Quando um valor alterado no procedimento chamado, o novo valor retornado varivel ou matriz associada, no programa de chamada. Para passar uma varivel ou matriz a um procedimento por valor, coloque-as entre parnteses na lista de parmetros DO ... WITH. Qualquer alterao feita no parmetro do procedimento chamado no retornada ao programa de chamada. Como padro, as variveis so passadas por referncia a um procedimento e por valor a uma funo definida pelo usurio. Utilize SET UDFPARMS TO REFERENCE para passar por referncia variveis para uma funo definida pelo usurio. PARAMETERS, exemplo de comando O exemplo abaixo passa parmetros para uma rotina de tratamento de erro. ON ERROR DO errhand WITH ERROR( ), MESSAGE( ), ; MESSAGE(1),PROGRAM( ),LINENO( ) USE nodatabase ON ERROR && restaura a rotina de tratamento de erro do sistema PROCEDURE errhand PARAMETERS gnError, gcMess, gnMess1, gcProg, gnLineNo ? 'Nmero do erro: ' + LTRIM(STR(gnError)) ? 'Mensagem do erro: ' + gcMess ? 'Linha de cdigo com erro: ' + gnMess1 ? 'Nmero da linha com erro: '+ LTRIM(STR(gnLineNo)) ? 'Programa com erros: ' + gcProg PAYMENT( ), funo Retorna o valor de cada pagamento peridico sobre um emprstimo com juros fixos.

[Pg.: 292]

Sintaxe PAYMENT(nPrincipal, nTaxaJuros, nPagamentos) Tipos de retorno: Argumentos nPrincipal Especifica o principal inicial do emprstimo. nTaxaJuros Especifica a taxa de juros fixa por perodo. Se o emprstimo for saldado com pagamentos mensais, mas a taxa de juros for anual, divida a taxa de juros anual por 12. nPagamentos Especifica o nmero total de pagamentos que sero efetuados sobre o emprstimo. Comentrios PAYMENT( ) considera uma taxa de juros peridica constante e considera que os pagamentos sero efetuados no fim de cada perodo. PCOL( ), funo Retorna a posio de coluna atual do cabeote de impresso da impressora. Sintaxe PCOL( ) Tipos de retorno: Numrico Comentrios O valor retornado por PCOL( ) relativo definio atual da margem esquerda da impressora. Para definir a margem esquerda, utilize SET MARGIN ou armazene um valor na varivel de memria do sistema _PLOFFSET. A funo PCOL( ) especialmente til no endereamento relativo do texto impresso. Voc pode utilizar o operador $ em vez de PCOL( ). PCOL( ), exemplo da funo CLEAR @ PROW( ), PCOL( )+12 SAY 'Contato' @ PROW( ), $+12 SAY 'Contato' PCOUNT( ), funo Retorna o nmero de parmetros passados para o programa atual, procedimento ou funo definida pelo usurio. Sintaxe PCOUNT( ) Tipos de retorno: Numrico Comentrios Numrico

[Pg.: 293]

PCOUNT( ) til para determinar quantos parmetros so passados para o programa atual, procedimento ou funo definida pelo usurio. Observao O valor retornado por PCOUNT( ) redefinido cada vez que um programa, procedimento ou funo definida pelo usurio solicitada ou quando ON KEY LABEL executado. PCOUNT( ), exemplos da funo O exemplo 1 solicita um procedimento e exibe uma janela de espera para o nmero de parmetros passados. O exemple 2 utiliza um procedimento para exibir a mdia de 4 valores. * Exemplo 1 DO testpar WITH 1,2,3 PROCEDURE testpar PARAMETERS gn1,gn2,gn3 gcMessage = 'PCOUNT( ) ='+ALLTRIM(STR(PCOUNT( ))) WAIT WINDOW (gcMessage) RETURN * Exemplo 2 SET TALK OFF gnVal1 = 10 gnVal2 = 20 gnVal3 = 30 gnVal4 = 15 gnMin = getavg(gnVal1, gnVal2, gnVal3, gnVal4) ? 'O valor mdio ' ?? gnMin * Esta funo definida pelo usurio permite que at 9 parmetros sejam passados. * Utiliza a funo PCOUNT( ) para determinar quantos * foram passados e retornar o valor mdio. FUNCTION getavg PARAMETERS gnPara1,gnPara2,gnPara3,gnPara4,gnPara5, ; gnPara6,gnPara7,gnPara8,gnPara9 IF PCOUNT( ) = 0 RETURN 0 ENDIF gnResult = 0 FOR gnCount = 1 to PARAMETERS( ) gcCompare = 'gnPara' +(STR(gnCount,1)) gnResult = gnResult + EVAL(gcCompare) ENDFOR gnResult = gnResult / (gnCount - 1) RETURN gnResult PI( ), funo Retorna o pi constante numrico. Sintaxe PI( ) Tipos de retorno: Numrico Comentrios O pi constante numrico (3,141592) o grau de circunferncia de um crculo em relao aos seu dimetro.
[Pg.: 294]

O nmero de casas decimais exibido no valor retornado por PI( ) determinado por SET DECIMALS. PI( ), exemplo da funo CLEAR ? PI( ) && Exibe 3.14 STORE 2.30 TO gnRadius STORE PI( ) * gnRadius^2 TO gnArea ? gnArea && Exibe 16.6190 POPUP( ), funo Retorna como uma seqncia o nome do menu ativo ou um valor lgico que indica se um menu foi definido. Sintaxe POPUP([cNomeMenu]) Tipos de retorno: Argumentos cNomeMenu Retorna um valor lgico que indica se cNomeMenu foi definido. POPUP( ) retornar verdadeiro (.T.), se o menu especificado tiver sido definido; caso contrrio, POPUP( ) retornar falso (.F.). Comentrios A funo POPUP( ) retornar o nome do menu ativo como uma seqncia de caracteres se voc omitir o argumento opcional cNomeMenu. Para que POPUP( ) retorne o nome de um menu, este deve estar definido e ativo. Os menus so criados e ativados com DEFINE POPUP e ACTIVATE POPUP. O menu pode ser, tambm, um menu do sistema do Visual FoxPro. POPUP( ) retornar uma seqncia vazia se um menu no estiver definido e ativo ou se voc emitir POPUP( ) a partir da janela Comando. PRINTSTATUS( ), funo Retornar verdadeiro (.T.) se a impressora ou dispositivo de impresso estiver on-line; caso contrrio, retornar falso (.F.). Sintaxe PRINTSTATUS( ) Tipos de retorno: Lgico Comentrios A funo PRINTSTATUS( ) semelhante a SYS(13), com a exceo de que SYS(13) retorna READY em vez de verdadeiro (.T.) ou OFFLINE em vez de falso (.F.). No Visual FoxPro, PRINTSTATUS( ) sempre retornar verdadeiro (.T.) se a impressora estiver conectada atravs do Painel de controle do Windows. PRINTSTATUS( ), exemplo de funo ? PRINTSTATUS( ) *** Exemplo do Programa *** STORE PRINTSTATUS( ) TO glReady
[Pg.: 295]

Caracteres ou Lgico

IF NOT glReady WAIT 'Certifique-se de que a impressora esteja conectada e ligada!' WINDOW ELSE WAIT 'Impressora est pronta!' WINDOW ENDIF PRIVATE, comando Oculta do programa atual matrizes ou variveis de memria que foram definidas em um programa de chamada a partir do programa atual. Sintaxe PRIVATE ListaVar Ou PRIVATE ALL [LIKE Estrutura | EXCEPT Estrutura] Argumentos ListVar Especifica as matrizes ou as variveis de memria que devem ser declaradas privadas . ALL LIKE Estrutura Faz com que PRIVATE oculte todas as matrizes e variveis de memria cujos nomes correspondam a Estrutura, que pode conter os curingas ponto de interrogao (?) e asterisco (*). ALL EXCEPT Estrutura Faz com que PRIVATE oculte todas as matrizes ou variveis de memria, a menos que os seus nomes coincidam com Estrutura, que pode conter os curingas ponto de interrogao (?) e asterisco (*). Comentrios Ocultar variveis criadas em programas de nvel mais alto permite que variveis com o mesmo nome das variveis privadas sejam manipuladas no programa atual sem afetarem os valores das variveis ocultas. Uma vez concluda a execuo do programa que contm PRIVATE, todas as matrizes e variveis de memria declaradas privadas ficaro novamente disponveis. O comando PRIVATE no cria variveis, ele simplesmente oculta do programa atual variveis declaradas em programas de nvel mais alto. PRIVATE , exemplo de comando *** Exemplo do programa demonstrando PRIVATE *** SET TALK OFF val1 = 10 val2 = 15 DO down ? val1, val2 && Exibe 10, 100 PROCEDURE down PRIVATE val1 val1 = 50 val2 = 100 ?' Val1 Val2' ? val1, val2 && Exibe 50, 100 RETURN PRMPAD( ), funo

[Pg.: 296]

Retorna o texto de um ttulo de menu. Sintaxe PRMPAD(NomeBarraMenu, NomeTtuloMenu) Tipos de retorno: Argumentos NomeBarraMenu Especifica o nome da barra de menus que contm o ttulo de menu. NomeTtuloMenu Especifica o ttulo do menu. Comentrios As barras de menus so criadas com DEFINE MENU, que cria a barra de menus, e com DEFINE PAD, que cria os ttulos de menus da barra de menus. PRMPAD( ) funciona, tambm, com o sistema de menus do Visual FoxPro. A barra de menus no precisa estar ativa para que PRMPAD( ) retorne o texto de um ttulo de menu. Caso um ttulo de menu tenha sido criado utilizando-se os caracteres barra invertida e menor que (\<) para criar uma tecla de acesso, ou uma barra invertida (\) para desativar o ttulo do menu, PRMPAD( ) retornar somente o texto do ttulo do menu, no incluindo os caracteres especiais. PRMPAD( ), exemplo de funo No exemplo a seguir, uma barra de menus denominada mnuExemplo criada com trs ttulos de menu. Os designadores de opo desativada e tecla de acesso no so retornados a partir dos ttulos de menu denominados ttulo Dois e ttulo Trs. A barra de menus ativada para exibir os ttulos de menu e eliminada da tela e da memria quando um ttulo de menu selecionado. CLEAR SET TALK OFF STORE 'mnuExemplo' TO gcPopName DEFINE MENU mnuExample BAR AT LINE 1 DEFINE PAD titleOne OF mnuExample PROMPT 'Isto ser retornado' DEFINE PAD titleTwo OF mnuExample PROMPT '\<O mesmo acontecendo com isto' DEFINE PAD titleThree OF mnuExample PROMPT '\E com isto tambm' =messagebox( PRMPAD('mnuExemplo', 'ttuloUm') ) =messagebox( PRMPAD('mnuExemplo', 'ttuloDois') ) =messagebox( PRMPAD(gcPopNome, 'ttuloTrs') ) ACTIVATE MENU mnuExample DEACTIVATE MENU mnuExample RELEASE MENU mnuExample PROCEDURE, comando Identifica o incio de um procedimento em um arquivo de programa. Sintaxe PROCEDURE NomeProcedimento Comandos [RETURN [eExpresso ]] ENDPROC Argumentos Caractere

[Pg.: 297]

NomeProcedimento Especifica o nome do procedimento a ser criado. Comentrios PROCEDURE uma instruo dentro de um arquivo de programa que especifica o incio de cada procedimento neste arquivo e define o nome do procedimento. Os nomes dos procedimentos devem comear com uma letra ou com um sublinhado e podem conter qualquer combinao de letras, nmeros e sublinhados No Visual FoxPro para Windows, os nomes dos procedimentos podem ter at 254 caracteres. Os comentrios podem ser colocados na mesma linha depois de PROCEDURE e ENDPROC. Estes comentrios so ignorados durante a compilao e a execuo do programa. A instruo PROCEDURE seguida de uma sries de comandos que compem o procedimento. Voc pode incluir RETURN em qualquer lugar do procedimento para retornar um controle ao programa de chamada ou a um outro programa e para definir um valor retornado pelo procedimento. Se voc no incluir um comando RETURN, um RETURN implcito ser automaticamente executado quando a funo sair. Se o comando RETURN no incluir um valor de retorno (ou se um RETURN implcito for executado), o Visual FoxPro atribuir .T. (Verdadeiro) como o valor de retorno. O procedimento encerra-se com o comando ENDPROC. Este comando opcional; o procedimento sai quando encontra um outro comando PROCEDURE, um comando FUNCTION ou o final do arquivo de programa. Observao Voc no pode ter cdigo de programa normal executvel includo em um arquivo de programa depois de procedimentos; apenas procedimentos, funes definidas pelo usurio e definio de classe podem seguir o primeiro comando PROCEDURE ou FUNCTION no arquivo. Ao executar um procedimento com DO NomeProcedimento, o Visual FoxPro procura o procedimento em uma ordem especfica. O Visual FoxPro procura: 1. O programa que contm DO NomeProcedimento. 2. O banco de dados atual. 3. Os arquivos de procedimento abertos com SET PROCEDURE. 4. Os programas na cadeia de execuo. Ele procura arquivos de programa comeados com o programa executado por ltimo at o primeiro programa executado. 5. Um arquivo de programa independente. Se for localizado um arquivo de programa com o mesmo nome do arquivo especificado com DO, o Visual FoxPro executar o programa. Se no for localizado um nome de arquivo de programa correspondente, o Visual FoxPro retornar uma mensagem de erro. Inclua a clusula IN em DO para executar um procedimento em um arquivo especfico. Como padro, os parmetros so passados aos procedimentos por valor. Para obter informaes sobre como passar parmetros para procedimentos por referncia, consulte SET UDFPARMS. Podem ser passados no mximo 27 parmetros para um procedimento. Os parmetros podem ser passados a um procedimento pela incluso de uma instruo PARAMETERS ou LPARAMETERS no procedimento ou colocando uma lista de parmetros imediatamente aps PROCEDURE NomeProcedimento. Inclua a lista de parmetros entre parnteses e separe os parmetros com vrgulas. PROCEDURE, exemplo de comando O exemplo a seguir ilustra como um procedimento pode ser chamado para realizar uma tarefa discreta como, por exemplo, fazer uma entrada em um arquivo de resumo. O procedimento abre o arquivo de resumo (que se supe existir no exemplo), constri uma entrada com base nas informaes passadas nos parmetros, grava a entrada e fecha o arquivo. O procedimento chamado com um comando DO semelhante ao comando na parte superior do programa. DO MakeLogEntry WITH "Efetuou log on", "jsmith" PROCEDURE MakeLogEntry PARAMETERS message, username pnHandle = FOPEN("LOG2.TXT",2) pnSize = FSEEK(pnHandle,0,2)

&& Considera que o arquivo existe && Vai para o final do arquivo
[Pg.: 298]

logEntry = dtoc(date())+","+hora()+","+nomeusurio+","+mensagem =FPUTS(pnHandle, logEntry) =FCLOSE(pnHandle) && Fecha o arquivo ENDPROC O exemplo a seguir mostra como um procedimento pode ser chamado para retornar um valor. SET CENTURY ON ? longdate(({02/16/95})) && Exibe quinta-feira, 16 de fevereiro, 1995

PROCEDURE longdate PARAMETER mdate RETURN CDOW(mdate) + ", " + MDY(mdate) ENDPROC PROGRAM( ), funo Retorna o nome do programa atualmente em execuo ou o nome do programa em execuo quando ocorreu um erro. Sintaxe PROGRAM([nNvel]) Tipos de retorno: Argumentos nNvel Especifica quantos nveis de programa para trs do nome do programa devero ser localizados. Esse parmetro pode variar de 0 at a profundidade de aninhamento de programas. Um programa pode executar outro programa, que pode executar um outro e assim sucessivamente. Os programas podem ser aninhados at 128 nveis. Se voc especificar 0 ou 1 em nNvel, a funo PROGRAM( ) retornar o nome do programa mestre (o programa de nvel mais alto). Se nNvel ultrapassar a profundidade de aninhamento de programas, PROGRAM( ) retornar uma seqncia vazia. Comentrios PROGRAM( ) ajuda o programa a recuperar-se de erros. Essa funo semelhante a SYS(16). Se utilizada sem argumentos, PROGRAM( ) retorna o nome do programa atualmente em execuo. PROGRAM( ), exemplo da funo ON ERROR DO errhand WITH PROGRAM( ) *** A prxima linha deve gerar um erro *** USE nodatabase ON ERROR && Retorna rotina de gerenciamento de erro padro do sistema PROCEDURE errhand PARAMETERS gcProgram WAIT 'Ocorreu um erro no programa ' + gcProgram WINDOW PROMPT( ), funo Caractere

[Pg.: 299]

Retorna o texto de um ttulo de menu selecionado em uma barra de menus ou de um item de menu selecionado em um menu. Sintaxe PROMPT( ) Tipos de retorno: Caractere Comentrios PROMPT( ) retorna o texto do ltimo ttulo de menu selecionado de uma barra de menus ou o ltimo item de menu selecionado de um menu. A barra de menus ou o menu podem ser definidos pelo usurio ou podem ser do sistema do Visual FoxPro. Se uma barra de menus ou um menu no estiver ativo ou se voc pressionar ESC para sair de uma barra de menus ou de um menu, PROMPT( ) retornar uma seqncia vazia. Uma barra de menus criada com DEFINE MENU, e cada ttulo de menu na barra de menus criado com DEFINE PAD. Um menu criado com DEFINE POPUP, e os itens de menu so criados com DEFINE BAR. possvel utilizar MENU( ) e POPUP( ) para retornar o nome da barra de menus ou do menu a partir do qual o ttulo ou o item de menu selecionado. PROPER( ), funo Retorna uma seqncia em maisculas a partir de uma expresso de caracteres, conforme apropriado, de nomes prprios. Sintaxe PROPER(cExpresso) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres a partir da qual PROPER( ) retorna uma seqncia de caracteres convertidos para maisculas. PROPER( ), exemplo da funo STORE 'Visual FoxPro' TO gcExpr1 CLEAR ? PROPER(gcExpr1) && Exibe "Visual FoxPro" STORE 'VISUAL FOXPRO' TO gcExpr2 ? PROPER(gcExpr2) && Exibe "Visual FoxPro" PROW( ), funo Retorna o atual nmero da linha do cabeote de impresso da impressora. Sintaxe PROW( ) Tipos de retorno: Numrico Comentrios Se voc emitir EJECT, o Visual FoxPro redefinir PROW( ) com 0.
[Pg.: 300]

Caractere

PROW( ) especialmente til para o endereamento relativo ao texto impresso. PROW( ), exemplo da funo No exemplo a seguir, os dois comandos retornam o mesmo resultado. Voc pode utilizar o operador $ em vez de PCOL( ). Tanto $ quanto PCOL( ) retornam a atual posio da impressora na coluna. @ PROW( ), PCOL( ) + 12 SAY 'Contato' @ PROW( ), $+12 SAY 'Contato' PRTINFO( ), funo Retorna a definio atual da impressora especificada. Sintaxe PRTINFO(nDefinioImpressora [, cNomeImpressora]) Tipos de retorno: Argumentos nDefinioImpressora Especifica a definio de impressora do Visual FoxPro que ser retornada. As tabelas a seguir listam os valores de retorno das definies de impressora. Observao Se PRTINFO(2) retornar - 1 ou um valor diferente daqueles listados na tabela a seguir, utilize PRTINFO(3) e PRTINFO(4) para retornar o tamanho do papel. Se nDefinioImpressora for igual a 1 (PRT_ORIENTATION em FOXPRO.H), PRTINFO( ) retornar a orientao do papel: Valores de retorno 1 0 1 Definio Numrico

Informao no disponvel Retrato Paisagem

Se nDefinioImpressora for igual a 2 (PRT_PAPERSIZE em FOXPRO.H), PRTINFO( ) retornar o tamanho do papel: Valores de retorno Definio

1 ou um valor diferente daqueles listados a seguir Informao no disponvel. Utilize nDefinioImpressora = 3 e nDefinioImpressora = 4 para determinar o tamanho do papel. 1 Carta, 8 1/2 x 11 pol 2 Carta pequeno, 8 1/2 x 11 pol 3 Tablide, 11 x 17 pol 4 Ledger, 17 x 11 pol 5 Ofcio, 8 1/2 x 14 pol 6 Statement, 5 1/2 x 8 1/2 pol 7 Executivo, 7 1/4 x 10 1/2 pol 8 A3, 297 x 420 mm 9 A4, 210 x 297 mm 10 A4, Small 210 x 297 mm 11 A5, 148 x 210 mm 12 B4, 250 x 354 mm 13 B5, 182 x 257 mm 14 Folio, 8 1/2 x 13 pol
[Pg.: 301]

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

Quarto, 215 x 275 mm 10 x 14 pol 11 x 17 pol Nota, 8 1/2 x 11 pol Envelope #9, 3 7/8 x 8 7/8 pol Envelope #10, 4 1/8 x 9 1/2 pol Envelope #11, 4 1/2 x 10 3/8 pol Envelope #12, 4 1/2 x 11 pol Envelope #14, 5 x 11 1/2 pol Folha tamanho C Folha tamanho D Folha tamanho E Envelope DL, 110 x 220 mm Envelope C5, 162 x 229 mm Envelope C3, 324 x 458 mm Envelope C4, 229 x 324 mm Envelope C6, 114 x 162 mm Envelope C65, 114 x 229 mm Envelope B4, 250 x 353 mm Envelope B5, 176 x 250 mm Envelope B6, 176 x 125 mm Envelope, 110 x 230 mm Envelope Monarch, 3 7/8 x 7.5 pol 6 3/4 Envelope, 3 5/8 x 6 1/2 pol Fanfold padro norte-americano, 14 7/8 x 11 pol Fanfold padro alemo, 8 1/2 x 12 pol Fanfold ofcio alemo, 8 1/2 x 13 pol

Se nDefinioImpressora for igual a 3 (PRT_PAPERLENGTH em FOXPRO.H), PRTINFO( ) retornar o tamanho do papel em incrementos de 0,1mm. Se nDefinioImpressora for igual a 4 (PRT_PAPERWIDTH em FOXPRO.H), PRTINFO( ) retornar a largura do papel em incrementos de 0,1mm. Se nDefinioImpressora for igual a 5 (PRT_SCALE em FOXPRO.H), PRTINFO( ) retornar o fator pelo qual a sada impressa dimensionada. Se nDefinioImpressora for igual a 6 (PRT_COPIES em FOXPRO.H), PRTINFO( ) retornar o nmero de cpias a serem impressas. Se nDefinioImpressora for igual a 7 (PRT_DEFASOURCE em FOXPRO.H), PRTINFO( ) retornar a origem do papel padro: Valores de retorno 1 2 3 4 5 6 7 8 9 10 11 14 Definio

Compartimento superior Compartimento inferior Compartimento central Alimentao manual Compartimento de envelope Envelope de alimentao manual Seleo automtica Pinos de trao Formato pequeno Formato grande Grande capacidade Cassete

Se nDefinioImpressora for igual a 8 (PRT_PRTQUAL em FOXPRO.H), PRTINFO( ) retornar um valor positivo indicando a resoluo horizontal em pontos por polegada (DPI, Dots Per Inch) ou um valor negativo indicando a qualidade da impresso: Valores de retorno Definio
[Pg.: 302]

-1 -2 -3 -4

Rascunho Baixa Mdia Alta

Se nDefinioImpressora for igual a 9 (PRT_COLOR em FOXPRO.H), PRTINFO( ) retornar um valor que indica se uma impressora colorida gera sada colorida ou monocromtica: Valores de retorno 1 2 Definio

Colorida Monocromtica

Se nDefinioImpressora for igual a 10 (PRT_DUPLEX em FOXPRO.H), PRTINFO( ) retornar o modo duplex: Valores de retorno 1 2 3 Definio

Impresso simplex Duplex vertical Duplex horizontal

Se nDefinioImpressora for igual a 11 (PRT_YRESOLUTION em FOXPRO.H), PRTINFO( ) retornar a resoluo vertical em DPI. Se essa informao no estiver disponvel, ser retornado -1. Se nDefinioImpressora for igual a 12 (PRT_TTOPTION em FOXPRO.H), PRTINFO( ) retornar um valor que indica como as fontes TrueType sero impressas: Valores de retorno 1 2 3 Definio

Imprime como grficos de bitmap Descarrega como fontes de software Substitui fontes do dispositivo

Se nDefinioImpressora for igual a 13, PRTINFO( ) retornar um valor que indica se a sada est ordenada: Valores de retorno 0 1 Definio

Sem ordenao Ordenada

cNomeImpressora Especifica o nome da impressora sobre a qual so retornadas informaes. Se cNomeImpressora for omitido, sero retornadas informaes para a impressora padro. Comentrios As definies de impressora do Visual FoxPro so definidas na caixa de dilogo Configurar pgina. Selecione Configurar pgina no menu Arquivo para exibir a caixa de dilogo Configurar pgina do Visual FoxPro. PUBLIC, comando Define variveis ou matrizes globais. Sintaxe PUBLIC ListaVarMem Ou PUBLIC [ARRAY] NomeMatriz1(nLinhas1 [, nColunas1]) [, NomeMatriz2(nLinhas2 [, nColunas2])] ... Argumentos

[Pg.: 303]

ListaVarMem globais.

Especifica uma ou mais variveis de memria a serem inicializadas e designadas como

[ARRAY] NomeMatriz1 (nLinhas1 [, nColunas1]) [, NomeMatriz2 (nLinhas2 [, nColunas2])] ... Especifica uma ou mais matrizes a serem inicializadas e designadas como globais. Consulte DIMENSION para obter uma descrio de cada argumento. Comentrios possvel utilizar e modificar matrizes e variveis globais a partir de qualquer programa executado durante a sesso atual do Visual FoxPro. Variveis e matrizes criadas com PUBLIC so inicializadas com falso (.F.), exceto as variveis pblicas FOX e FOXPRO, que so inicializadas com verdadeiro (.T.). As variveis pblicas FOX e FOXPRO podem ser utilizadas para executar condicionalmente um cdigo baseado no produto que est sendo executado. Qualquer varivel ou matriz criada na janela Comando automaticamente se torna pblica. Qualquer varivel ou matriz que voc queira declarar como pblica deve ser declarada pblica antes de voc atribuir um valor a ela. O Visual FoxPro ir gerar um erro de sintaxe se, dentro de um programa, voc atribuir um valor a uma matriz ou a uma varivel e, posteriormente, declar-la pblica com PUBLIC. PUBLIC, exemplo do comando SET TALK OFF PUBLIC val1,val2 val1 = 10 val2 = 15 DO down ? val1 ? val2 RELEASE ALL && Libera somente variveis privadas DISPLAY MEMORY LIKE val? RELEASE val1,val2 && Variveis pblicas devem ser liberadas explicitamente DISPLAY MEMORY LIKE val? PROCEDURE down PRIVATE val1 val1 = 50 val2 = 100 ? val1 ? val2 RETURN PUSH POPUP, comando Coloca na memria uma definio de menu em uma pilha de definies de menus. Sintaxe PUSH POPUP NomeMenu Argumentos NomeMenu Especifica o nome do menu cuja definio colocada na pilha. O menu tambm pode ser um menu do sistema do Visual FoxPro.

[Pg.: 304]

Comentrios Quando utilizado com POP POPUP, PUSH POPUP permite que voc salve uma definio de menu, faa alteraes nessa definio e, em seguida, restaure-a ao seu estado original. As definies de menus so colocadas e removidas da pilha na ordem ltimo a entrar, primeiro a sair. PUSH POPUP, exemplo do comando No exemplo a seguir, criado um menu denominado popExam. A definio do menu adicionada pilha e, ento, modificada. Em seguida, o menu original restaurado ao ser retirado da pilha. DEFINE POPUP popExam FROM 5,5 DEFINE BAR 1 OF popExam PROMPT 'Um' DEFINE BAR 2 OF popExam PROMPT 'Dois' DEFINE BAR 3 OF popExam PROMPT 'Trs' DEFINE BAR 4 OF popExam PROMPT 'Quatro' ACTIVATE POPUP popExam NOWAIT PUSH POPUP popExam WAIT 'Popup original' WINDOW RELEASE BAR 2 OF popExam WAIT 'Popup modificado. O popup original colocado em uma pilha.' WINDOW POP POPUP popExam WAIT 'Popup original restaurado' WINDOW DEACTIVATE POPUP popExam RELEASE POPUP popExam PUTFILE( ), funo Chama a caixa de dilogo Salvar como e retorna o nome do arquivo especificado. Sintaxe PUTFILE([cTextoPersonalizado] [, cNomeArquivo] [, cExtensoArquivo]) Tipos de retorno: Argumentos cTextoPersonalizado Especifica o texto personalizado que deve aparecer na caixa de dilogo Salvar como. No Windows 3.x, o texto aparece como o ttulo da caixa de dilogo. No Windows 95, o texto personalizado substitui o rtulo Nome do arquivo. No Macintosh, o texto personalizado substitui o rtulo Salvar como. Observe que, no Windows 95, as legendas longas podem estar truncadas. cNomeArquivo Especifica o nome de arquivo padro exibido na caixa de texto. cExtensoArquivo Especifica extenses de nomes de arquivo. Somente nomes de arquivo com a extenso especificada sero exibidos na lista rolvel da caixa de dilogo Salvar como quando a caixa de verificao Todos os arquivos for limpa. A primeira extenso em cExtensoArquivo ser automaticamente adicionada ao nome do arquivo digitado se no houver uma extenso includa junto ao nome do arquivo. Para obter uma lista de extenses de arquivo do Visual FoxPro e os tipos de criadores correspondentes, consulte Extenses e tipos de arquivos. A expresso de caractere cExtensoArquivo pode assumir uma das formas a seguir: cExtensoArquivo pode conter uma nica extenso, como .PRG, e apenas os nomes de arquivo com essa extenso sero exibidos. Caractere

[Pg.: 305]

cExtensoArquivo pode conter uma lista de extenses de nome de arquivo separadas por ponto-evrgula. Por exemplo, se voc incluir PRG;FXP, o Visual FoxPro exibir todos os nomes de arquivo com as extenses .PRG e .FXP. Se os nomes de arquivo tiverem o mesmo nome raiz, mas extenses diferentes (por exemplo, CUSTOMER.PRG e CUSTOMER.FXP), o Visual FoxPro exibir somente o nome de arquivo com a extenso que aparece primeiro em cExtensoArquivo. cExtensoArquivo pode conter uma lista de extenses de nome de arquivo separadas por barras verticais, como PRG|FXP. Nesse caso, o Visual FoxPro exibe todos os nomes de arquivo com as extenses listadas, mesmo que os arquivos tenham o mesmo nome raiz. Se cExtensoArquivo contiver somente um ponto-e-vrgula (;), o Visual FoxPro exibir todos os nomes de arquivo sem extenso. Se cExtensoArquivo for uma seqncia vazia, o Visual FoxPro exibir os nomes de todos os arquivos do diretrio ou pasta atual. Se cExtensoArquivo contiver curingas do MS-DOS, como o ponto de interrogao (?) e o asterisco (*), o Visual FoxPro exibir todos os nomes de arquivo com extenses correspondentes aos critrios de caracteres curinga. Por exemplo, se cExtensoArquivo for ?X?, sero exibidos todos os nomes de arquivo com as extenses .FXP, .EXE, .TXT, e assim por diante. Comentrios Utilize PUTFILE( ) para escolher um nome de arquivo existente ou especificar um novo nome de arquivo. PUTFILE( ) retornar o nome de arquivo com o seu caminho. Se voc no digitar um nome de arquivo, PUTFILE( ) retornar o nome de arquivo (especificado com cNomeArquivo) e a extenso padro (especificada por cExtensoArquivo). Se voc escolher Cancelar ou pressionar ESC, PUTFILE( ) retornar uma seqncia vazia. possvel utilizar o nome do arquivo retornado por PUTFILE( ) para nomear um arquivo e salv-lo no disco. PUTFILE( ), exemplo da funo O exemplo a seguir cria um arquivo de dados delimitado a partir de qualquer tabela existente selecionada pelo usurio. GETFILE( ) utilizada para localizar e abrir uma tabela e PUTFILE( ), para retornar o nome do arquivo de destino. gcTableName = GETFILE('DBF', 'Abre tabela:') USE (gcTableName) gcDelimName = ALIAS( ) + '.DLM' gcDelimFile = PUTFILE('Arquivo delimitado:', gcDelimName, 'DLM') IF EMPTY(gcDelimFile) && Esc pressionada CANCEL ENDIF COPY TO (gcDelimFile) DELIMITED && Cria arquivo delimitado MODIFY FILE (gcDelimFile) NOEDIT

PV( ), funo Retorna o valor atual de um investimento. Sintaxe PV(nPagamento, nTaxaJuros, nPagamentosTotais) Tipos de retorno: Argumentos Numrico

[Pg.: 306]

nPagamento Especifica o valor de pagamentos peridicos. nPagamento pode resultar em um nmero positivo ou negativo. PV( ) considera que os pagamentos sero efetuados ao final de cada perodo. nTaxaJuros Especifica a taxa de juros peridica. Se a taxa de juros de um investimento for anual e os pagamentos forem efetuados mensalmente, divida a taxa de juros anual por 12. nPagamentosTotais Especifica o nmero total de pagamentos. Comentrios PV( ) calcula o valor atual de um investimento com base em uma srie de pagamentos peridicos iguais a uma taxa de juros peridica constante. PV( ), exemplo da funo STORE 500 to gnPayment && Pagamentos peridicos efetuados mensalmente STORE .075/12 TO gnInterest && Taxa de juros anual de 7,5% STORE 48 TO gnPeriods && Quatro anos (48 meses) CLEAR ? PV(gnPayment, gnInterest, gnPeriods) && Exibe 20679.19 QUIT, comando Finaliza a sesso ativa do Visual FoxPro e retorna o controle ao sistema operacional. Sintaxe QUIT Comentrios No Visual FoxPro para Windows, voc retorna ao Windows. Importante Utilize QUIT sempre que for terminar uma sesso do Visual FoxPro. Se desligar o computador sem emitir QUIT, poder haver perda de dados, os arquivos abertos podero ser danificados e os arquivos de trabalho temporrios que normalmente so excludos podero ser deixados em disco. RAND( ), funo Retorna um nmero aleatrio entre 0 e 1. Sintaxe RAND([nValorOriginal]) Tipos de retorno: Argumentos nValorOriginal Especifica o valor original que determina a seqncia de valores que o RAND( ) retorna. RAND( ) retornar a mesma seqncia de nmeros aleatrios se voc utilizar o mesmo valor original para nValorOriginal na primeira vez que emitir RAND( ), seguido pela funo RAND( ) sem nValorOriginal. Se nValorOriginal for negativo na primeira vez que voc emitir RAND( ), um valor original do cronmetro do sistema ser utilizado. Para ativar a seqncia de nmeros mais aleatria, emita RAND( ) inicialmente com um argumento negativo e, em seguida, emita RAND( ) sem um argumento.
[Pg.: 307]

Numrico

Se voc omitir nValorOriginal, RAND( ) utilize um valor original padro de 100001. RAND( ), exemplo da funo O primeiro exemplo abaixo utiliza RAND( ) para criar uma tabela com 10 registros que contm valores aleatrios, depois utiliza MIN( ) e MAX( ) para exibir os valores mximo e mnimo na tabela. O segundo exemplo abaixo exibe um nmero aleatrio que fica entre os valores 1 e 10. CLOSE DATABASES CREATE TABLE Random (cValue N(3)) FOR nItem = 1 TO 10 && Incluir 10 registros, APPEND BLANK REPLACE cValue WITH 1 + 100 * RAND( ) && Inserir valores aleatrios ENDFOR CLEAR LIST && Exibe os valores gnMaximum = 1 && Inicializa o valor mnimo gnMinimum = 100 && Inicializa o valor mximo SCAN gnMinimum = MIN(gnMinimum, cValue) gnMaximum = MAX(gnMaximum, cValue) ENDSCAN ? 'O valor mnimo : ', gnMinimum && Exibe o valor mnimo ? 'O valor mximo : ', gnMaximum && Exibe o valor mximo CLEAR gnLower = 1 gnUpper = 10 ? INT((gnUpper - gnLower + 1) * RAND( ) + gnLower) RAT( ), funo Retorna a posio numrica da ltima ocorrncia de uma expresso de caracteres ou campo memo contido em outra expresso de caracteres ou campo memo. Sintaxe RAT(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia]) Tipos de retorno: Argumentos cExpressoProcurada Especifica a expresso de caracteres que RAT( ) procura na cExpressoPesquisada. A expresso de caracteres pode se referir a um campo memo de qualquer tamanho. cExpressoPesquisada Especifica a expresso de caracteres em que RAT( ) faz a procura. A expresso de caracteres pode se referir a um campo memo de qualquer tamanho. nOcorrncia Especifica a ocorrncia, da direita para a esquerda, de cExpressoProcura procurada por RAT( ) em cExpressoPesquisada. Como padro, RAT( ) procura a ltima ocorrncia de cExpressoProcurada (nOcorrncia = 1). Se nOcorrncia for 2, RAT( ) ir procurar pela penltima ocorrncia e assim por diante.
[Pg.: 308]

Numrico

Comentrios RAT( ), a funo AT( ) invertida, procura na expresso de caracteres cExpressoPesquisada, da direita para a esquerda, pela ltima ocorrncia de outra expresso de caracteres, cExpressoProcurada. RAT( ) retorna um nmero inteiro, indicando a posio do primeiro caractere de cExpressoProcurada em cExpressoPesquisada. RAT( ) retorna 0 se cExpressoProcurada no for encontrada em cExpressoPesquisada ou se nOcorrencia for maior que o nmero de vezes que cExpressoProcurada ocorre em cExpressoPesquisada. A procura executada por RAT( ) considera maisculas/minsculas. RAT( ), exemplo da funo STORE 'abracadabra' TO string STORE 'a' TO find_str CLEAR ? RAT(find_str,string) && Exibe 11 ? RAT(find_str,string,3) && Exibe 6 RATC( ), funo Retorna a posio numrica da ltima ocorrncia de uma expresso de caracteres o campo memo dentro de outra expresso de caracteres ou campo memo Sintaxe RATC(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia]) Tipos de retorno: Argumentos cExpressoProcurada Especifica a expresso de caracteres que RATC( ) procura na cExpressoPesquisada. cExpressoPesquisada Especifica a expresso de caracteres em que RATC( ) faz a procura. As expresses de caracteres cExpressoProcurada e cExpressoPesquisada podem ser campos memo de qualquer tamanho. nOcorrncia Especifica a ocorrncia, da direita para a esquerda, de cExpressoProcura procurada por RATC( ) em cExpressoPesquisada. Como padro, RATC( ) procura a ltima ocorrncia de cExpressoProcurada (nOcorrncia = 1). Se nOcorrncia for 2, RAT( ) ir procurar pela penltima ocorrncia e assim por diante. Numrica

Comentrios RATC( ) destina-se a expresses que contm caracteres de byte duplo. Se a expresso contiver apenas caracteres de byte nico, RATC( ) ser equivalente a RAT( ). RATC( ) retorna a posio numrica da ltima ocorrncia de uma expresso de caracteres ou campo memo dentro de outra expresso de caracteres ou campo memo. As expresses de caracteres ou campos memo podem conter qualquer combinao de caracteres de byte duplo e nico. RATC( ) a funo invertida AT_C( ): procura da direita para a esquerda. RATC( ) retorna um nmero inteiro, indicando a posio do primeiro caractere de cExpressoProcurada em cExpressoPesquisada. RATC( ) retorna 0 se cExpressoProcurada no for encontrada em
[Pg.: 309]

cExpressoPesquisada ou se nOcorrncia for maior que o nmero de vezes que cExpressoProcurada ocorre em cExpressoPesquisada. A procura executada por RATC( ) considera maisculas/minsculas. RATLINE( ), funo Retorna o nmero da linha da ltima ocorrncia de uma expresso de caracteres dentro de uma outra expresso de caracteres ou campo memo, contando a partir da ltima linha. Sintaxe RATLINE(cExpressoProcurada, cExpressoPesquisada) Tipos de retorno: Argumentos cExpressoProcurada cExpressoPesquisada. Especifica a expresso de caracteres que RATLINE( ) procura na Numrico

cExpressoPesquisada Especifica a expresso de caracteres em que RATLINE( ) faz a procura. As expresses de caracteres cExpressoProcurada e cExpressoPesquisada podem ser campos memo de qualquer tamanho. Utilize MLINE( ) para retornar a linha que contm cExpressoProcurada. Dica A funo RATLINE( ) oferece uma forma conveniente para pesquisar em campos memo. Comentrios RATLINE( ), a funo ATLINE( ) invertida, procura a ocorrncia da cExpressoProcura em uma expresso de caracteres cExpressoPesquisada, a partir do ltimo caractere de cExpressoPesquisada. Caso a procura seja bem-sucedida, RATLINE( ) retornar o nmero da linha em que ocorre a correspondncia. Caso a procura seja malsucedida, RATLINE( ) retornar 0. A procura executada por RATLINE( ) considera maisculas/minsculas. Importante O nmero da linha que RATLINE( ) retorna determinado pelo valor de SET MEMOWIDTH, mesmo que cExpressoPesquisada no seja um campo memo. Para obter maiores informaes, consulte SET MEMOWIDTH. RATLINE( ), exemplo da funo No exemplo a seguir, RATLINE( ) retorna o nmero da linha para a ltima linha no campo memo notes que contm a palavra graduado. MLINE( ) usa este valor para retornar o contedo da linha. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE employee && Abre a tabela Employee STORE 'graduado' TO gcString STORE MLINE(notes, RATLINE(gcString, notes)) TO gnFileLine ? gnFileLine RD | RMDIR, comando Remove um diretrio ou pasta do disco. Sintaxe RD cCaminho | RMDIR cCaminho Argumentos cCaminho Especifica o nome e a localizao do diretrio ou pasta a ser removido do disco.
[Pg.: 310]

Comentrios O Visual FoxPro ir gerar uma mensagem de erro se voc tentar remover um diretrio que no esteja vazio. RD | RMDIR, exemplo do comando O exemplo a seguir utiliza MKDIR para criar um novo diretrio denominado mytstdir, em seguida CHDIR utilizado para mudar para o novo diretrio. GETDIR( ) utilizado para exibir a estrutura do novo diretrio e, em seguida, RMDIR utilizado para remover o diretrio que acabou de ser criado. GETDIR( ) utilizado para exibir a estrutura do diretrio novamente. SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro MKDIR mytstdir && Cria um novo diretrio CHDIR mytstdir && Muda para o novo diretrio = GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro RMDIR mytstdir && Remove o novo diretrio = GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio RECALL, comando Desmarca registros marcados para excluso na tabela selecionada. Sintaxe RECALL [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [NOOPTIMIZE] Argumentos Escopo Especifica um intervalo de registros a ser reintegrado. Somente os registros dentro do intervalo especificado sero reintegrados. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. O escopo padro para RECALL o registro atual (NEXT 1). FOR lExpresso1 Especifica que apenas os registros para os quais lExpresso1 resulta em verdadeiro (.T.) sero reintegrados. Isto permite filtrar registros indesejveis. Rushmore otimizar RECALL FOR se lExpresso1 for uma expresso otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor. WHILE lExpresso2 Especifica uma condio pela qual os registros sero reintegrados, desde que lExpresso2 resulte em verdadeiro (.T.). NOOPTIMIZE Evita a otimizao Rushmore de RECALL. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no Captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor. Comentrios RECALL pode ser utilizado para recuperar registros, desde que no se tenha emitido PACK ou ZAP.
[Pg.: 311]

Importante Depois de compactar um arquivo com o comando PACK, todos os registros marcados para excluso sero excludos permanentemente. Para marcar registros para excluso, emita DELETE ou DELETE - SQL ou selecione Excluir registros no menu Tabela, quando uma janela Pesquisar ou Editar estiver ativa. Para reintegrar registros, emita RECALL ou selecione Reintegrar registros no menu Registro, quando uma janela Pesquisar ou Editar estiver ativa. RECALL, exemplo de comando O exemplo a seguir abre a tabela customer no banco de dados testdata. DELETE - SQL utilizado para marcar todos os registros a serem excludos onde o campo country contm USA. Todos os registros marcados para excluso so exibidos. RECALL ALL utilizado para desmarcar todos os registros marcados para excluso. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer DELETE FROM customer WHERE country = 'USA' && Marcar para excluso CLEAR LIST FIELDS company, country FOR DELETED( ) && Lista registros marcados RECALL ALL && Desmarca todos os registros marcados para excluso RECCOUNT( ), funo Retorna o nmero de registros da tabela atual ou da tabela especificada. Sintaxe RECCOUNT([nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho trabalho. Especifica o nmero da rea de trabalho de uma tabela aberta em uma outra rea de Numrico

A funo RECCOUNT( ) retornar 0 nenhuma tabela estiver aberta na rea de trabalho especificada. cAliasTabela Especifica o alias de uma tabela aberta em uma outra rea de trabalho. Comentrios O valor que RECCOUNT( ) retorna no afetado por SET DELETED e SET FILTER. RECCOUNT( ) sem os argumentos opcionais nreaTrabalho ou cAliasTabela retorna o nmero de registros existentes na tabela aberta da rea de trabalho atualmente selecionada. RECCOUNT( ), exemplo de funo No exemplo a seguir, o Visual FoxPro compara o espao disponvel em disco com a quantidade necessria para classificar customer. *** Verifica o ESPAO EM DISCO antes de uma CLASSIFICAO *** CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer *** Obtm o tamanho do cabealho da tabela ***
[Pg.: 312]

gnTableHead = HEADER( ) *** Calcule o tamanho da tabela *** gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1) IF DISKSPACE( ) > (gnFileSize * 3) WAIT WINDOW 'Espao em disco suficiente para classificar.' ELSE WAIT WINDOW 'Espao em disco insuficiente. Impossvel realizar classificao.' ENDIF RECNO( ), funo Retorna o nmero do registro atual na tabela em uso ou na tabela especificada. Sintaxe RECNO([nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho Especifica o nmero da rea de trabalho para uma tabela aberta em outra rea de trabalho. RECNO( ) retorna 0 se uma tabela no estiver aberta na rea de trabalho especificada. cAliasTabela Especifica o alias de uma tabela aberta em uma outra rea de trabalho. Comentrios O registro atual aquele em que o ponteiro do registro est posicionado. RECNO( ) retornar nmeros negativos para registros includos em um buffer da tabela. A funo RECNO( ) retornar um valor maior do que o nmero de registros existentes na tabela se o ponteiro estiver posicionado depois do ltimo registro da tabela. RECNO( ) retornar 1 se o ponteiro estiver posicionado antes do primeiro registro da tabela ou se a tabela no tiver registros. Caso uma tabela no tenha registros, EOF( ) retornar sempre verdadeiro (.T.). RECNO( ) emitida sem os argumentos opcionais nreaTrabalho ou cAliasTabela retorna o nmero do registro atual da tabela aberta na rea de trabalho atualmente selecionada. Se voc emitiu SEEK sem sucesso em uma tabela indexada, poder especificar 0 para que a nreaTrabalho utilize a lgica de pesquisa de software para retornar o nmero do registro correspondente mais prximo. RECNO(0) retorna 0 se no localizar uma correspondncia prxima. O Visual FoxPro gerar uma mensagem de erro se GO RECNO(0) for emitido quando essa correspondncia no encontrada. RECNO( ), exemplo de funo O exemplo a seguir procura a tabela customer para o nome de uma empresa e, se esse nome no for localizado, utiliza RECNO(0) para retornar a empresa com a correspondncia mais prxima. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer SET ORDER TO company SEEK 'Ernst' IF FOUND( ) DISPLAY company, contact
[Pg.: 313]

Numrico

ELSE GOTO RECNO(0) CLEAR ? 'A empresa com a correspondncia mais prxima ' + empresa ? 'Nmero do registro: ' + ALLTRIM(STR(RECNO( ))) ENDIF RECSIZE( ), funo Retorna o tamanho (largura) de um registro de tabela. Sintaxe RECSIZE([nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho Especifica o nmero da rea de trabalho de uma tabela aberta em uma outra rea de trabalho. RECSIZE( ) retornar 0 caso no esteja aberta nenhuma tabela na rea de trabalho especificada. cAliasTabela Especifica o alias de uma tabela aberta em uma outra rea de trabalho. Comentrios A funo RECSIZE( ) emitida sem os argumentos opcionais nreaTrabalho ou cAliasTabela retorna o tamanho do registro da tabela aberta na rea de trabalho atualmente selecionada. RECSIZE( ), exemplo de funo No exemplo a seguir, o Visual FoxPro compara o espao em disco disponvel com a quantidade necessria para classificar customer. *** Verifique DISKSPACE antes de uma SORT *** CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Abre a tabela Customer *** Obtenha o tamanho do cabealho da tabela *** gnTableHead = HEADER( ) *** Calcule o tamanho da tabela *** gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1) IF DISKSPACE( ) > (gnFileSize * 3) WAIT WINDOW 'Espao em disco suficiente para classificar.' ELSE WAIT WINDOW 'Espao em disco insuficiente. Classificao no pode ser feita.' ENDIF REGIONAL, comando Cria matrizes e variveis de memria regionais. Sintaxe #REGION nNmeroRegio REGIONAL ListaVar Argumentos Numrico

[Pg.: 314]

#REGION nNmeroRegio Cria uma regio. As variveis regionais devem ser declaradas antes de serem utilizadas em um programa. Observe que #REGION uma diretiva de compilador e no um comando. nNmeroRegio especifica um nmero de regio de 0 a 31. REGIONAL ListaVar Declara as variveis para a regio criada com a diretiva #REGION. ListaVarMem uma lista de matrizes e variveis de memria separadas por vrgulas. Durante a compilao do programa, se uma outra varivel regional com nome idntico j tiver sido compilada quando uma declarao regional for localizada, a segunda ocorrncia do nome da varivel se tornar exclusiva para garantir que no haja conflitos com a varivel regional declarada anteriormente. Para que o nome de uma varivel se torne exclusivo, preencha o nome da varivel regional at 10 caracteres com sublinhados e o nmero da regio atual. Esta substituio ocorre inteiramente durante a compilao do programa e no tem qualquer efeito sobre a velocidade da execuo. Quando o nome de uma varivel for modificado, utilize DISPLAY MEMORY para exibir o nome modificado. Para controlar a varivel na janela Depurar, utilize o seu nome modificado. Como a janela Rastrear utiliza o cdigo fonte de programa original, ela exibir o nome original da varivel (e no o nome modificado criado pelo compilador). Comentrios No haver interferncia entre variveis de memria ou matrizes com nomes idnticos se os seus valores estiverem protegidos dentro de uma regio. Variveis regionais so semelhantes a variveis privadas. REGIONAL, exemplo de comando No exemplo a seguir, dois conjuntos de variveis regionais so criados. Na regio 1, so criadas as variveis gcA, gcB, gcC e gcD e a seqncia de caracteres Um armazenada para cada uma. Na regio 2, as variveis gcC, gcD, gcE e gcF so criadas e a seqncia de caracteres Dois armazenada para cada uma. As variveis gcC and gcD so comuns a ambas as regies. A seguir, a sada de DISPLAY MEMORY exibida. Os nomes das variveis gcC e gcD so modificados na segunda regio. gcC se torna GCC________2 e gcD se torna GCD________2. Todas as variveis so particulares e podem ser acessadas por programas de baixo nvel. #REGION 1 REGIONAL gcA,gcB,gcC,gcD STORE 'Um' to gcA,gcB,cgC,gcD #REGION 2 REGIONAL gcC,gcD,gcE,gcF STORE 'Dois' to gcC,gcD,gcE,gcF DO showmemory PROCEDURE showmemory DISPLAY MEMORY LIKE g*

&& gcC e gcD so comuns para ambas as regies

REINDEX, comando Reconstri arquivos de ndice abertos. Sintaxe REINDEX [COMPACT] Argumentos COMPACT Converte arquivos de ndice nico (.IDX) regulares para arquivos .IDX compactados.
[Pg.: 315]

Comentrios Os arquivos de ndice ficam desatualizados quando se abre uma tabela sem abrir seus arquivos de ndice correspondentes e so feitas alteraes nos campos de chave dos arquivos de ndice. Quando os arquivos de ndice ficam desatualizados, possvel atualiz-los atravs de uma reindexao. O comando REINDEX atualiza todos os arquivos de ndice abertos na rea de trabalho selecionada. O Visual FoxPro reconhece cada tipo de arquivo de ndice (arquivos de ndice composto (.CDX), arquivos .CDX estruturais e arquivos de ndice nico (.IDX)) e faz a reindexao conformemente. Ele atualiza todas as marcas nos arquivos .CDX e atualiza arquivos .CDX estruturais, que so abertos automaticamente com a tabela. Qualquer arquivo de ndice criado com a palavra-chave UNIQUE do comando INDEX ou com SET UNIQUE ON mantm o status UNIQUE quando reindexado. Para reindexar (REINDEX) arquivos de ndice desatualizados, emita os comandos abaixo: USE TableName INDEX OutdatedIndexNames REINDEX REINDEX, exemplo de comando No exemplo a seguir, ISEXCLUSIVE( ) comprova que a tabela customer foi aberta para uso exclusivo. A tabela no reindexada visto que a que est na rea atual no foi aberta para uso exclusivo. cExclusive = SET('EXCLUSIVO') SET EXCLUSIVE OFF SET PATH TO (SYS(2004) + 'SAMPLES\DATA\') OPEN DATA testdata && Abre o banco de dados de teste USE Customer && No foi aberta para uso exclusivo USE Employee IN 0 EXCLUSIVE && Aberta para uso exclusivo em outra rea de trabalho IF ISEXCLUSIVE( ) REINDEX && S pode ser feito se a tabela for aberta para uso exclusivo ELSE WAIT WINDOW 'A tabela tem que ser aberta para uso exclusivo' ENDIF SET EXCLUSIVE &cExclusive RELEASE MENUS, comando Remove da memria barras de menus definidas pelo usurio. Sintaxe RELEASE MENUS [ListaNomesBarrasMenus [EXTENDED]] Argumentos ListaNomesBarrasMenus Especifica as barras de menus que sero removidas da memria. Separe os nomes das barras de menus com vrgulas. EXTENDED Libera uma barra de menus e todos os menus, ttulos e itens subordinados, alm de todos os comandos ON SELECTION BAR, ON SELECTION MENU, ON SELECTION PAD e ON SELECTION POPUP associados. Comentrios
[Pg.: 316]

Barras de menus ativas tm que ser desativadas com DEACTIVATE MENU antes que possam ser liberadas da memria. Se RELEASE MENUS for emitido sem argumentos adicionais, todas as barras de menus definidas pelo usurio sero removidas da memria. RELEASE PAD, comando Remove um ttulo de menu especfico ou todos os ttulos de menu da memria. Sintaxe RELEASE PAD NomeTtuloMenu OF NomeBarraMenus | ALL OF NomeBarraMenus Argumentos NomeTtuloMenu OF NomeBarraMenus Especifica o ttulo de menu a ser removido da memria. Voc pode remover um ttulo da barra de menus do sistema do Visual FoxPro, especificando seu nome em NomeTtuloMenu. Por exemplo, o comando RELEASE PAD _MEDIT OF _MSYSMENU remove o ttulo de menu Editar da barra de menus do sistema do Visual FoxPro. ALL OF NomeBarraMenus Especifica que todos os ttulos de uma barra de menus definida pelo usurio sero removidos da memria. A clusula ALL no pode ser utilizada para remover ttulos da barra de menus do sistema do Visual FoxPro. RELEASE PAD, exemplo de comando Os comandos a seguir removem o ttulo de menu Janela da barra de menus do sistema: PUSH MENU _MSYSMENU RELEASE PAD _MSM_WINDO OF _MSYSMENU && Remove o ttulo de menu Janela WAIT WINDOW ' Pressione uma tecla para restaurar o menu padro ' POP MENU _MSYSMENU && Restaura o sistema de menu padro do Visual FoxPro RELEASE POPUPS, comandos Remove da memria um menu especfico ou todos os menus. Sintaxe RELEASE POPUPS [ListaNomeMenu [EXTENDED]] Argumentos ListaNomeMenu vrgulas. Especifica os menus a serem liberados da memria. Separe os nomes de menus com

Os menus do sistema do Visual FoxPro que aparecem na barra de menus do sistema do Visual FoxPro podem tambm ser liberados. Para liberar um menu do sistema do Visual FoxPro, inclua o nome interno do menu do sistema (_MFILE, _MEDIT, _MDATA etc). Utilize SET SYSMENU TO DEFAULT para restaurar os menus do sistema e a barra de menus padro do sistema. EXTENDED Libera um menu, seus itens e todos os comandos associados a ON SELECTION POPUP e ON SELECTION BAR.
[Pg.: 317]

Comentrios Um menu ativo deve ser ativado com DEACTIVATE POPUP antes que possa se liberado da memria. Se RELEASE POPUPS for emitido sem argumentos adicionais, todos os menus definidos pelo usurio sero removidos da memria. RELEASE PROCEDURE, comando Fecha os arquivos de procedimento abertos com SET PROCEDURE. Sintaxe RELEASE PROCEDURE NomeArquivo1 [, NomeArquivo2 ] Argumentos NomeArquivo1 [, NomeArquivo2 ] especifica o nome do arquivo de procedimento ou um conjunto de arquivos de procedimento a ser fechado. Comentrios Os arquivos de procedimento so abertos com SET PROCEDURE. Uma vez que o arquivo aberto, os procedimentos dentro do arquivo esto disponveis para programas e a partir da janela Comando. Para fechar todos os arquivos de procedimento abertos, edite SET PROCEDURE TO sem qualquer argumento adicional. RELEASE WINDOWS, comando Remove da memria janelas definidas pelo usurio ou janelas do sistema do Visual FoxPro. Sintaxe RELEASE WINDOWS [ListaNomesJanelas] | Argumentos ListaNomesJanelas Especifica as janelas liberadas da memria. ListaNomesJanelas pode incluir janelas definidas pelo usurio e janelas do sistema do Visual FoxPro. Os nomes de janelas devem ser separados por vrgulas. Se ListaNomesJanelas no estiver includo, a janela definida pelo usurio e ativada no momento ser liberada. RELEASE WINDOWS pode ser utilizado para remover janelas do sistema do Visual FoxPro encontradas na janela principal do Visual FoxPro ou em uma janela pai, definida pelo usurio. A lista a seguir inclui janelas do sistema que podem ser liberadas da janela principal do Visual FoxPro ou de uma janela pai. Comando Depurar Rastrear Visualizar

Para liberar um janela de sistema e/ou uma barra de ferramentas (no

[Pg.: 318]

Visual FoxPro), coloque o nome completo da janela do sistema ou barra de ferramentas entre aspas. Por exemplo, para liberar a Barra de ferramentas controles de relatrio no Visual FoxPro, emita o comando: RELEASE WINDOW "Controles de Relatrio" Utilize ACTIVATE WINDOW para posicionar uma janela do sistema na janela principal do Visual FoxPro ou em uma janela definida pelo usurio. RELEASE, comando Remove da memria variveis de memria e matrizes. Sintaxe RELEASE ListaVarMemt Ou RELEASE ALL [EXTENDED] [LIKE Estrutura | EXCEPT Estrutura] Argumentos RELEASE ListaVarMem Especifica as variveis de memria e matrizes liberadas da memria. Os nomes de variveis de memria e matrizes so separados por vrgulas. RELEASE ALL Libera da memria todas as variveis de memria e matrizes. EXTENDED Quando emitido em um programa, especifica que todas as variveis pblicas sero liberadas. RELEASE ALL, RELEASE ALL LIKE ou RELEASE ALL EXCEPT no libera variveis pblicas quando emitido em um programa. LIKE Estrutura | EXCEPT Estrutura Libera da memria todas as variveis de memria e matrizes que correspondam estrutura especificada ou todas as variveis de memria e matrizes exceto aquelas que correspondam estrutura especificada. Estrutura pode incluir os curingas ? e *. REMOVE TABLE, comando Remove uma tabela do banco de dados atual. Sintaxe REMOVE TABLE NomeTabela | ? [DELETE] [RECYCLE] Argumentos NomeTabela Especifica a tabela a ser excluda do banco de dados atual. ? Exibe a caixa de dilogo Remover na qual voc pode escolher uma tabela no banco de dados atual a ser removida. DELETE Especifica que a tabela removida do banco de dados e do disco. Cuidado Qualquer tabela removida do disco com esta instruo no pode ser removida. Mesmo se SET SAFETY estiver ON, voc no ser advertido antes da tabela ser removida do disco. RECYCLE Especifica que a tabela no imediatamente excluda do disco e colocada no Windows 95 Recycle Bin.
[Pg.: 319]

Comentrios Quando uma tabela removida do banco de dados, ela se torna uma tabela livre e pode ser adicionada a outro banco de dados. As tabelas so adicionadas a um banco de dados com ADD TABLE. Quando REMOVE TABLE emitido, todos os ndices primrios, valores padro e regras de validao associados tabela tambm so removidos. Se SET SAFETY estiver ON, o Visual FoxPro exibir um aviso perguntando se voc tem certeza de que deseja remover a tabela do banco de dados. Importante REMOVE TABLE afeta outras tabelas no banco de dados atual se estas tabelas possuem regras ou relaes associadas tabela que est sendo removida. As regras e as relaes no so mais vlidas quando a tabela removida do banco de dados. REMOVE TABLE, exemplo de comando O exemplo a seguir cria dois bancos de dados denominados mydbc1 e mydbc2 e uma tabela denominada tabela 1. A tabela adicionada a mydbc1 quando ela criada. A tabela em seguida fechada e removida de mydbc1. ADD TABLE utilizado para adicionar a tabela a mydbc2. RENAME TABLE utilizado para alterar o nome da tabela de table1 para table2. CREATE DATABASE mydbc1 CREATE DATABASE mydbc2 SET DATABASE TO mydbc1 CREATE TABLE table1 (cField1 C(10), n N(10)) && Adiciona tabela a mydbc1 CLOSE TABLES && Uma tabela deve estar fechada para ser removida de um banco de dados REMOVE TABLE table1 SET DATABASE TO mydbc2 ADD TABLE table1 RENAME TABLE table1 TO table2 RENAME TABLE, comando Renomeia uma tabela no banco de dados atual. Sintaxe RENAME TABLE NomeTabela1 TO NomeTabela2 Argumentos NomeTabela1 Especifica o nome da tabela a ser renomeada. NomeTabela2 Especifica o novo nome da tabela.

Comentrios RENAME TABLE no pode ser utilizado para alterar o nome de uma tabela livre; em vez disso, utilize RENAME. RENAME TABLE, exemplo de comando O exemplo a seguir cria dois bancos de dados denominados mydbc1 e mydbc2 e uma tabela denominada tabela 1. A tabela adicionada a mydbc1 quando criada. A tabela , em seguida, fechada e removida de mydbc1. ADD TABLE utilizado para adicionar a tabela a mydbc2. RENAME TABLE utilizada para alterar o nome da tabela da table1 para table2.
[Pg.: 320]

CLOSE DATABASES CREATE DATABASE mydbc1 CREATE DATABASE mydbc2 SET DATABASE TO mydbc1 CREATE TABLE table1 (cField1 C(10), n N(10)) && Adiciona a tabela a mydbc1 CLOSE TABLES && Uma tabela deve ser fechada para ser removida de um banco de dados REMOVE TABLE table1 SET DATABASE TO mydbc2 ADD TABLE table1 RENAME TABLE table1 TO table2 RENAME, comando Altera o nome de um arquivo para um novo nome. Sintaxe RENAME NomeArquivo1 TO NomeArquivo2 Argumentos NomeArquivo1 TO NomeArquivo2 Especifica o nome do arquivo a ser alterado e o novo nome. Inclui uma extenso de arquivo para cada arquivo. Se as extenses no forem includas, os arquivos assumiro a extenso padro .DBF. Se voc renomear uma tabela livre que tenha um arquivo de memo .FPT associado, certifique-se de renomear o arquivo de memo. Inclua um ponto (.) aps o nome do arquivo para renomear um arquivo que no possua uma extenso. No utilize RENAME para alterar o nome de uma tabela em um banco de dados; RENAME no serve para isso. Utilize RENAME TABLE para alterar o nome de uma tabela em um banco de dados. Inclua os caminhos com os nomes de arquivos caso estes no estejam na unidade de disco e diretrio padro. Se NomeArquivo1 e NomeArquivo2 estiverem em diretrios ou pastas diferentes, NomeArquivo1 ser movido para o diretrio ou pasta de NomeArquivo2. Quando voc emitir RENAME, NomeArquivo2 no poder ser um nome de arquivo existente e NomeArquivo1 dever existir e no poder estar aberto. NomeArquivo1 e NomeArquivo2 podem conter caracteres curingas como, por exemplo, * e ?. Por exemplo, para renomear todos os arquivos de programa com a extenso .PRG na pasta ou diretrio atual para fazer backup de arquivos com extenso .BAK, emita RENAME *.PRG TO *.BAK. REPLACE FROM ARRAY, comando Atualiza dados em campos com valores de uma matriz de varivel. Sintaxe REPLACE FROM ARRAY NomeMatriz [FIELDS ListaCampos] [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [NOOPTIMIZE] Argumentos NomeMatriz Especifica o nome da matriz cujos valores substituem os dados dos campos.
[Pg.: 321]

FIELDS ListaCampos Especifica que somente os campos em ListaCampos so substitudos pelo contedo da matriz. Os campos nas reas de trabalho no selecionadas devem ser antecedidos de seus aliases de tabela. Escopo Especifica um intervalo de registros a serem substitudos pelo contedo da matriz. Apenas os registros dentro do intervalo so substitudos. A substituio ocorre at o final do escopo ou da matriz. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. O escopo padro para REPLACE FROM ARRAY o registro atual (NEXT 1). FOR lExpresso1 Especifica que os campos sero substitudos somente nos registros para os quais lExpresso1 resulta em verdadeiro (.T.). A incluso de FOR permite que se substitua os registros condicionalmente, filtrando aqueles que no deseja. A substituio ocorre em todos os registros para os quais lExpresso1 resulta em verdadeiro (.T.) ou at que se alcance o fim da matriz. Rushmore otimizar REPLACE FROM ARRAY FOR se lExpresso1 for uma expresso otimizvel. Para um melhor desempenho, utilize uma expresso otimizvel na clusula FOR. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor. WHILE lExpresso2 Especifica uma condio de acordo com a qual os campos em registros sero substitudos pelo contedo da matriz quando a expresso lgica lExpresso2 resultar em verdadeiro (.T.). NOOPTIMIZE Evita a otimizao Rushmore. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor. Comentrios Os campos do tipo memo e geral so ignorados em REPLACE FROM ARRAY. Para importar dados para estes campos, utilize GATHER e APPEND GENERAL. Comeando pelo primeiro elemento, os elementos de matriz substituem os campos correspondentes do registro. O primeiro elemento de matriz substitui o primeiro campo do registro, o segundo elemento substitui o segundo campo e assim por diante. Se o nmero de elementos da matriz for menor do que o nmero de campos da tabela, os campos adicionais sero ignorados. Se ocorrer o contrrio, os elementos de matriz adicionais sero ignorados. Observao Nenhuma substituio ocorrer se o ponteiro do registro estiver no fim do arquivo da rea de trabalho atual e voc especificar um campo de outra rea de trabalho.

REPLACE, comando Atualiza os registros da tabela. Sintaxe REPLACE NomeCampo1 WITH eExpresso1 [ADDITIVE] [, NomeCampo2 WITH eExpresso2 [ADDITIVE]] ... [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [IN nreaTrabalho | cAliasTabela] [NOOPTIMIZE]

[Pg.: 322]

Argumentos NomeCampo1 WITH eExpresso1 [, NomeCampo2 WITH eExpresso2 ... ] Especifica que os dados em NomeCampo1 sero substitudos pelo valor da expresso eExpresso1; que os dados em NomeCampo2 sero substitudos pelo valor da expresso eExpresso2 e assim por diante. Quando um valor de expresso for maior do que a largura de um campo numrico, REPLACE far com que o valor caiba no campo por meio das etapas a seguir: 1. 2. 3. Primeiro, REPLACE truncar as casas decimais, arredondando a parte decimal restante do campo. Se o valor ainda no couber, REPLACE armazenar o contedo do campo utilizando a notao cientfica. Se o valor ainda no couber, REPLACE substituir o contedo do campo por asteriscos.

ADDITIVE Inclui as substituies no final dos campos memo. ADDITIVE aplica-se somente s substituies nos campos memo. Se voc omitir ADDITIVE, o campo memo ser sobrescrito com o valor da expresso. Escopo Especifica um intervalo de registros a serem substitudos. Apenas os registros dentro do intervalo so substitudos. As clusulas de escopo so: ALL, NEXT nRegistros , RECORD nNmeroRegistro e REST. O escopo padro para REPLACE o registro atual (NEXT 1). FOR lExpresso1 Especifica que os campos designados sero substitudos somente nos registros para os quais lExpresso1 resultar em verdadeiro (.T.). A incluso de FOR permite que voc substitua os registros condicionalmente, filtrando os que no deseja substituir. Rushmore otimizar REPLACE FOR se lExpresso1 for uma expresso otimizvel. Para um melhor desempenho, utilize uma expresso otimizvel na clusula FOR. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor. WHILE l Expresso2 Especifica uma condio de acordo com a qual os campos sero substitudos quando a expresso lgica lExpresso2 resultar em verdadeiro (.T.). IN nreaTrabalho Especifica a rea de trabalho em que os registros so atualizados. IN cAliasTabela Especifica o alias da tabela em que os registros so atualizados. Se voc omitir nreaTrabalho e cAliasTabela, os registros sero atualizados na tabela da rea de trabalho selecionada no momento. NOOPTIMIZE Evita a otimizao Rushmore. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor. Comentrios REPLACE substitui dados em um campo pelo valor em uma expresso. Os campos nas reas de trabalho no selecionadas devem ser antecedidos de seus aliases. Observao Se a clusula IN for omitida, nenhuma substituio ocorrer se o ponteiro do registro estiver no fim do arquivo da rea de trabalho atual e voc especificar um campo de outra rea de trabalho. REPLACE, exemplo de comando O exemplo a seguir cria uma tabela com 10 registros. REPLACE utilizado para colocar valores aleatrios em um campo. MIN( ) e MAX( ) exibem os valores mximo e mnimo na tabela.
[Pg.: 323]

CLOSE DATABASES CREATE TABLE Random (cValue N(3)) FOR nItem = 1 TO 10 && Inclui 10 registros, APPEND BLANK REPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatrios ENDFOR CLEAR LIST && Exibe os valores gnMaximum = 1 && Inicializa o valor mnimo gnMinimum = 100 && Inicializa o valor mximo SCAN gnMinimum = MIN(gnMinimum, cValue) gnMaximum = MAX(gnMaximum, cValue) ENDSCAN ? 'O valor mnimo : ', gnMinimum && Exibe o valor mnimo ? 'O valor mximo : ', gnMaximum && Exibe o valor mximo REPLICATE( ), funo Retorna uma seqncia de caracteres que contenha uma expresso de caracteres especificada, repetida um determinado nmero de vezes. Sintaxe REPLICATE(cExpresso, nVezes) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres que repetida. nVezes Especifica o nmero de vezes que a expresso de caracteres repetida. Comentrios No Visual FoxPro, o comprimento mximo da seqncia de caracteres resultante restringido pelo espao de memria disponvel. REPLICATE( ), exemplo de funo CLEAR ? REPLICATE('HELLO ',4) && Exibe HELLO HELLO HELLO HELLO REPORT command Exibe ou imprime um relatrio sob o controle de um arquivo de definio de relatrio, criado com MODIFY REPORT ou CREATE REPORT. Sintaxe REPORT FORM NomeArquivo1 | ? [ENVIRONMENT] [Escopo] [FOR lExpresso1] [WHILE lExpresso2] [HEADING cTextoCabealho] [NOCONSOLE]
[Pg.: 324]

Caractere

[NOOPTIMIZE] [PLAIN] [RANGE nPginaInicial [, nPginaFinal]] [PREVIEW [WINDOW NomeJanela] [NOWAIT]] [TO PRINTER [PROMPT] | TO FILE NomeArquivo2 [ASCII]] [NAME NomeObjeto] [SUMMARY] Argumentos NomeArquivo 1 Especifica o nome do arquivo de definio de relatrio a ser impresso. ? Exibe a caixa de dilogo Abrir, na qual se pode escolher um arquivo de relatrio. ENVIRONMENT Includo para compatibilidade com verses anteriores de relatrios 2.x. A fim de restaurar o ambiente de dados associado a um relatrio do Visual FoxPro, defina a propriedade AutoOpenTables do ambiente de dados para verdadeiro (.T.), o valor padro. Para garantir que o ambiente do relatrio seja fechado ao fim da impresso do relatrio, defina a propriedade AutoCloseTables do ambiente de dados para verdadeiro (.T.), tambm o valor padro. Para relatrios convertidos a partir de verses anteriores do FoxPro, a incluso de ENVIRONMENT abre e restaura todas as tabelas e relaes do Ambiente de Dados, mesmo que AutoOpenTables esteja definida como falso (.F.). Ao criar ou modificar relatrios, voc pode salvar o ambiente de dados atual do Visual FoxPro com o arquivo de definio de relatrio. Quando se salva o ambiente de dados do Visual FoxPro, registros adicionais so colocados na tabela de definio de relatrios para todos os arquivos de tabela e ndice abertos, a ordem do ndice e quaisquer relacionamentos entre as tabelas. Escopo Especifica um intervalo de registros a serem includos no relatrio. Somente os registros dentro do intervalo so includos no relatrio. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Para obter maiores informaes sobre clusulas de escopo, consulte Clusulas de escopo. O escopo padro para REPORT ALL (todos os registros). FOR lExpresso1 Imprime dados somente nos registros para os quais lExpresso1 resulta em verdadeiro (.T.). A incluso de FOR permite que voc filtre os registros que no deseja imprimir. Rushmore otimizar REPORT FOR se lExpresso1 for uma expresso otimizvel. Para um melhor desempenho, utilize uma expresso otimizvel na clusula FOR. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor. WHILE lExpresso2 Especifica uma condio de acordo com a qual os dados sero impressos quando a expresso lgica lExpresso2 resultar em verdadeiro (.T.). HEADING cTextoCabealho Especifica um texto para que um cabealho adicional seja colocado em cada pgina do relatrio. A clusula PLAIN ter a precedncia se voc incluir HEADING e PLAIN. NOCONSOLE Suprime o eco de um relatrio para a janela principal do Visual FoxPro ou para uma janela definida pelo usurio quando o relatrio est sendo impresso ou enviado a um arquivo. NOOPTIMIZE Para evitar a otimizao Rushmore de REPORT, inclua NOOPTIMIZE. Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor.
[Pg.: 325]

PLAIN Especifica que um cabealho de pgina aparecer somente no incio do relatrio. RANGE nPginaInicial [, nPginaFinal] Especifica um intervalo de pginas a ser impresso. nPginaInicial especifica a primeira pgina impressa; nPginaFinal especifica a ltima pgina impressa. Se nPginaFinal for omitida, o padro da ltima pgina impressa ser 9.999. PREVIEW [WINDOW NomeJanela] Exibe o relatrio no modo de visualizao de pgina em vez de envilo para a impressora. Para imprimir um relatrio, deve-se emitir REPORT com TO PRINTER. Observe que as variveis de memria do sistema so ignoradas quando voc inclui PREVIEW. A clusula opcional WINDOW pode ser includa para especificar uma janela onde o relatrio ser exibido no modo visualizao de pgina. NomeJanela pode ser o nome de uma janela criada com DEFINE WINDOW ou um formulrio. Voc pode incluir a clusula opcional NOWAIT para que, em tempo de execuo, o Visual FoxPro no espere que a janela de visualizao de pgina seja fechada antes de prosseguir com a execuo do programa. Em vez disso, o Visual FoxPro continuar a execuo do programa com a janela de visualizao de pgina aberta. Em aplicativos distribudos, verifique se o menu Exibir est disponvel. Se a Barra de ferramentas visualizar impresso estiver fechada, ela no poder ser restaurada a menos que o menu Exibir esteja disponvel. TO PRINTER [PROMPT] Envia um relatrio impressora. No Visual FoxPro, FoxPro para Windows e FoxPro para Macintosh, voc pode incluir a clusula opcional PROMPT para exibir a caixa de dilogo Configurao da impressora antes de iniciar a impresso. As definies da impressora que podem ser ajustadas dependem do driver de impressora instalado. Coloque PROMPT imediatamente aps TO PRINTER. TO FILE NomeArquivo 2 [ASCII] Especifica o arquivo de texto para o qual um relatrio enviado. O driver atual de impressora utilizado quando o relatrio enviado ao arquivo de texto. O arquivo criado quando voc inclui TO FILE possui a extenso padro .TXT. Voc pode incluir a clusula opcional ASCII para criar um arquivo de texto em ASCII a partir do arquivo de definio de relatrio. Sem a clusula ASCII, PostScript e outros cdigos de impressora so gravados no arquivo de texto. Os grficos, as linhas, os retngulos e/ou os retngulos com bordas arredondadas contidos na definio de relatrio no aparecem no arquivo de texto em ASCII. O nmero de linhas e colunas de cada pgina do arquivo de texto em ASCII determinado pelo contedo das variveis de memria do sistema _ASCIICOLS e _ASCIIROWS. Os valores-padro para _ASCIICOLS e _ASCIIROWS so 80 colunas 63 linhas, respectivamente. Esses valores correspondem a uma pgina padro na posio retrato. NAME NomeObjeto Especifica um nome de varivel de objeto para o ambiente de dados de um relatrio. O ambiente de dados e os objetos do mesmo possuem propriedades e mtodos, como AddObject, que precisam ser definidos ou chamados em tempo de execuo. A varivel de objeto oferece acesso a essas propriedades e mtodos. Se voc no especificar NAME, o Visual FoxPro utilizar como padro o nome do arquivo de relatrio do cdigo associado aos eventos. SUMMARY Suprime a impresso detalhada de linha. Apenas os totais e subtotais sero impressos. Comentrios A extenso padro para um arquivo de definio de relatrio .FRX. Se o arquivo de definio de relatrio no estiver no diretrio padro, o caminho tambm ter de ser includo com o nome do arquivo. RESTORE FROM, comando Recupera variveis de memria e matrizes de variveis de memria salvas em um arquivo de variveis de memria ou campo Memo. Em seguida, posiciona tais variveis na memria. Sintaxe

[Pg.: 326]

RESTORE FROM NomeArquivo | MEMO NomeCampoMemo [ADDITIVE] Argumentos NomeArquivo Especifica o arquivo de varivel de onde as variveis de memria e matrizes so restauradas. A extenso .MEM atribuda aos arquivos de varivel de memria. MEMO NomeCampoMemo restauradas. Especifica o campo Memo de onde as variveis de memria e matrizes so

ADDITIVE Evita que qualquer varivel de memria ou matriz atualmente em memria seja apagada. Se ao nmero de variveis ou matrizes que estiverem sendo acrescentadas com ADDITIVE soma-se o nmero de variveis existentes, excedendo o limite de varivel de memria, o Visual FoxPro trar o mximo possvel de variveis e matrizes para a memria, a partir do arquivo de varivel de memria ou do campo Memo. Se voc restaurar uma varivel de memria ou matriz, cujo nome seja igual ao de uma varivel de memria ou matriz existente, o valor da varivel de memria ou matriz existente ser sobrescrito com o valor da varivel de memria ou matriz restaurada. Comentrios Quando RESTORE FROM emitido em um programa, todas as variveis de memria e matrizes PUBLIC e PRIVATE so restauradas como PRIVATE. J as variveis de memria e matrizes LOCAL so restauradas como LOCAL. Se RESTORE for emitido na janela Comando, as variveis de memria e matrizes PUBLIC e PRIVATE sero restauradas como PUBLIC; as variveis de memria e matrizes LOCAL so restauradas como LOCAL. RESTORE FROM limpa da memria as variveis de memria ou matrizes existentes no momento, a menos que voc inclua a palavra-chave ADDITIVE. RESTORE FROM no afeta as variveis de memria do sistema. Observe que as variveis de tipo de objeto no podem ser restauradas a partir de um arquivo de varivel ou campo Memo. RESTORE FROM, exemplo do comando No exemplo a seguir, duas variveis so criadas. Elas so salvas em um arquivo varivel e restauradas sem eliminar as variveis existentes. gnVal1 = 50 gcVal2 = 'Al' SAVE TO temp CLEAR MEMORY gdVal3 = DATE( ) RESTORE FROM temp ADDITIVE CLEAR DISPLAY MEMORY LIKE g* RESTORE SCREEN, comando Restaura a janela principal do Visual FoxPro ou uma janela definida pelo usurio salva anteriormente no buffer da tela, em uma varivel de memria ou em um elemento de matriz. Sintaxe RESTORE SCREEN [FROM NomeVarMem] Argumentos

[Pg.: 327]

FROM NomeVarMem Especifica o nome de uma varivel de memria ou elemento de matriz do qual voc deseja restaurar a imagem da tela ou da janela. Comentrios Utilize SAVE SCREEN para colocar a janela principal do Visual FoxPro ou janela definida pelo usurio atual no buffer da tela, em uma varivel de memria ou em um elemento de matriz. As variveis de memria ou elementos de matriz que contm imagens de telas ou de janelas armazenadas apresentam um tipo de dado S quando so visualizados com DISPLAY ou LIST MEMORY. A janela principal do Visual FoxPro ou as janelas definidas pelo usurio salvas em variveis de memria ou elementos de matriz podem tambm ser salvas em arquivos de variveis de memria com SAVE TO e restauradas com RESTORE FROM. Se emitido sem a clusula FROM, RESTORE SCREEN restaura a janela principal do Visual FoxPro ou janela definida pelo usurio a partir do buffer de tela. RESTORE WINDOW, comando Restaura para a memria as definies e os status de janelas salvos em um arquivo de janela ou campo Memo. Sintaxe RESTORE WINDOW ListaNomesJanelas | ALL FROM NomeArquivo | FROM MEMO NomeCampoMemo Argumentos ListaNomesJanelas Especifica uma ou mais janelas a serem restauradas. Separe os nomes das janelas com vrgulas. ALL Restaura todas as definies de janelas no arquivo de janela ou campo Memo. FROM NomeArquivo Especifica o arquivo de janela a partir do qual as janelas so restauradas. Os arquivos de janela tm a extenso .WIN. Se for atribuda outra extenso ao arquivo quando ele for salvo, voc dever inclu-la em NomeArquivo. FROM MEMO NomeCampoMemo Especifica o campo Memo a partir do qual as janelas so restauradas. Comentrios Utilize SAVE WINDOW para armazenar as definies de janelas em um arquivo de janela ou em um campo Memo. As janelas na memria com nomes iguais aos das que so restauradas sero sobrescritas. O status de uma janela (oculto, ativo, entre outros), quando ela salva, ser preservado quando ela for restaurada. RESTORE WINDOW, exemplo da comando No exemplo a seguir, uma janela denominada wOutput1 definida e salva como uma varivel. Todas as janelas so limpas e a janela denominada wOutput1 restaurada e ativada. CLEAR DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Sada' ; CLOSE FLOAT GROW SHADOW ZOOM SAVE WINDOW wOutput1 TO temp CLEAR WINDOWS RESTORE WINDOW wOutput1 FROM temp ACTIVATE WINDOW wOutput1
[Pg.: 328]

WAIT "A janela wOutput1 foi restaurada" WINDOW RELEASE WINDOW wOutput1 RESUME, comando Continua a execuo de um programa interrompido. Sintaxe RESUME Comentrios Utilize SUSPEND para interromper a execuo de um programa. O programa ser reiniciado a partir da linha onde a execuo foi interrompida. SUSPEND e RESUME so excelentes ferramentas de depurao. Voc pode interromper um programa para examinar o status atual do ambiente do Visual FoxPro, incluindo definies de menus, barras de menus, janelas ou variveis de memria. Importante Para evitar que os comandos que so executados quando um programa interrompido interfiram na sada do programa subseqente, emita CLEAR para limpar a janela principal do Visual FoxPro ou a janela ativa definida pelo usurio antes de retomar a execuo do programa. RETRY, comando Executa novamente o comando anterior. Sintaxe RETRY Comentrios RETRY retorna o controle para o programa de chamada e executa novamente a ltima linha executada no programa. A diferena entre RETRY e RETURN que RETURN executa a linha seguinte no programa de chamada. RETRY til nas rotinas de gerenciamento de erros. utilizado freqentemente para executar novamente um comando at que uma funo de bloqueio de arquivo ou de registro consiga fazer o bloqueio. Voc pode utilizar SET REPROCESS para controlar as tentativas da funo de bloqueio. Prefere-se SET REPROCESS na maioria das situaes de rede.

RETURN, comando Retorna o controle do programa para o programa que originou a chamada. Sintaxe RETURN [eExpresso | TO MASTER | TO NomeProcedimento] Argumentos

[Pg.: 329]

eExpresso Especifica uma expresso retornada para o programa que originou a chamada. Se voc omitir RETURN ou a expresso de retorno, verdadeiro (.T.) ser retornado automaticamente para o programa de chamada. TO MASTER Retorna o controle para o programa de chamada de nvel mais alto. TO NomeProcedimento Especifica o programa para o qual o controle retornado. Comentrios RETURN finaliza a execuo de um programa, procedimento ou funo e retorna o controle para o programa que originou a chamada, o programa que originou a chamada de nvel mais alto, outro programa ou a janela Comando. O Visual FoxPro libera variveis de memria PRIVATE quando RETURN executado. Normalmente, RETURN colocado no fim de um programa, procedimento ou funo para retornar o controle para um programa de nvel mais alto. No entanto, um RETURN implcito ser executado se voc omitir esse comando. RETURN, exemplo do comando No exemplo a seguir, a funo longdate retorna uma seqncia de caracteres que adequada para a impresso a partir de uma data. SET CENTURY ON ? longdate({02/16/95}) && Exibe quinta-feira, 16 de fevereiro, 1995 FUNCTION longdate PARAMETER mdate RETURN CDOW(mdate) + ', ' + MDY(mdate) RGB( ), funo Retorna um nico valor de cor a partir de um conjunto de componentes das cores vermelha, verde e azul. Sintaxe RGB(nValorVermelho, nValorVerde, nValorAzul) Argumentos nValorVermelho Especifica a intensidade do componente de cor vermelha. nValorVermelho pode variar de 0 a 255. 0 a menor intensidade de cor; 255 a maior intensidade de cor. nValorVerde Especifica a intensidade do componente de cor verde. nValorVerde pode variar de 0 a 255. n nValorAzul Especifica a intensidade do componente de cor azul. nValorAzul pode variar de 0 a 255. Comentrios O valor retornado por RGB( ) pode ser utilizado para definir as propriedades de cores, como BackColor e ForeColor. RGBSCHEME( ), funo Retorna uma lista de par de cores RGB ou par de cores RGB a partir de um esquema de cores especificado.

[Pg.: 330]

Sintaxe RGBSCHEME(nNmero EsquemaCores [, nPosioParesCores]) Tipos de retorno: Argumentos nNmeroEsquemaCores Especifica o nmero do esquema de cores para o qual voc deseja completar uma listagem de cores RGB. RGBSCHEME( ) retorna 10 pares de cores RGB. nPosioPareCores Retorna um nico par de cores RGB a partir de um esquema de cores. nPosioParesCores especifica a posio do par de cores RGB no esquema de cores. Por exemplo, se nPosioParesCores for 4, o quarto par de cores RGB ser retornado. Comentrios Utilize SCHEME( ) para retornar uma lista de par de cores ou um par de cores tradicional a partir de um esquema de cores. O par de cores RGB utiliza valores numricos para especificar as cores. Os pares de cores tradicionais utilizam letras para especificar as cores. RGBSCHEME( ), exemplo da funo O exemplo a seguir exibe o terceiro par de cores RGB a partir do esquema de cores nmero 4. CLEAR ? RGBSCHEME(4,3) RIGHT( ), funo Retorna o nmero especificado dos caracteres extrema direita de uma seqncia de caracteres. Sintaxe RIGHT(cExpresso, nCaracteres) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres cujos caracteres extrema direita so retornados. nCaracteres Especifica o nmero de caracteres retornados da expresso de caracteres. RIGHT( ) retornar toda a expresso de caracteres se nCaracteres for maior do que o comprimento de cExpresso. RIGHT( ) retornar uma seqncia vazia se nCaracteres for negativa ou 0. Caractere Caractere

Comentrios Os caracteres so retornados a partir do ltimo caractere direita seguido por um nmero especificado de caracteres. RIGHT( ), exemplo de funo CLEAR ? RIGHT('Redmond, WA', 2) && Exibe WA

[Pg.: 331]

RIGHTC( ), funo Retorna o nmero especificado dos caracteres extrema direita de uma seqncia de caracteres. Sintaxe RIGHTC(cExpresso, nCaracteres) Tipos de retorno: Argumentos cExpresso Especifica a expresso de caracteres cujos caracteres extrema direita so retornados. nCaracteres Especifica o nmero de caracteres retornados da expresso de caracteres. RIGHTC( ) retornar toda a expresso de caracteres se nCaracteres for maior do que o comprimento de cExpresso. RIGHTC( ) retornar uma seqncia vazia se nCaracteres for negativa ou 0. Comentrios RIGHTC( ) destina-se a expresses que contm caracteres de byte duplo. Se a expresso contiver apenas caracteres de byte nico, RIGHTC( ) ser equivalente a RIGHT( ). Os caracteres so retornados partindo do ltimo caractere direita e seguido por nCaracteres. RLOCK( ), funo Tenta bloquear o(s) registro(s) de uma tabela. Sintaxe RLOCK([nreaTrabalho | cAliasTabela] | [cListaNmerosRegistro, nreaTrabalho | cAliasTabela]) Tipos de retorno: Argumentos nreaTrabalho | cAliasTabela Especifica o nmero da rea de trabalho ou alias de tabela para uma tabela aberta em outra rea de trabalho. Se voc no especificar a rea de trabalho ou alias, RLOCK( ) ir tentar bloquear o registro atual da tabela na rea de trabalho selecionada no momento. cListaNmerosRegistro Especifica que RLOCK( ) tenta bloquear vrios registros. A expresso de caractere cListaNmerosRegistro especifica um ou mais nmeros de registro, separados por vrgulas, que RLOCK( ) tenta bloquear. Por exemplo, para tentar bloquear os primeiros quatro registros de uma tabela, cListaNmerosRegistro deve conter 1, 2, 3, 4. Para bloquear vrios registros, voc deve ativar SET MULTILOCKS e incluir o nmero da rea de trabalho (nreaTrabalho) ou o alias (cAliasTabela) da tabela onde tentou bloquear vrios registros. Tambm possvel bloquear vrios registros movendo o ponteiro do registro at aquele que pretende bloquear. A seguir, emita RLOCK( ) ou LOCK( ) e repita este processo para registros adicionais. No Visual FoxPro, voc pode especificar 0 como um nmero de registro. Esta especificao permite que voc bloqueie o cabealho da tabela. Importante Mantenha o cabealho da tabela bloqueado pelo menor tempo possvel, pois outros usurios no podero acrescentar registros tabela enquanto aquele estiver bloqueado.
[Pg.: 332]

Caractere

Lgico

Para liberar o bloqueio do cabealho da tabela, utilize UNLOCK RECORD 0, UNLOCK ou UNLOCK ALL. Se o bloqueio de todos os registros especificados em cListaNmerosRegistro for bem-sucedido, RLOCK( ) retornar verdadeiro (.T.). Se um ou mais registros especificados em cListaNmerosRegistro no puderem ser bloqueados, RLOCK( ) retornar falso (.F.) e nenhum registro ser bloqueado. Em ambos os casos, os bloqueios de registros existentes permanecem na mesma posio. O bloqueio de vrios registros um processo adicional o posicionamento de bloqueios adicionais no libera os bloqueios existentes. Quanto ao desempenho, sempre mais rpido bloquear a tabela inteira do que bloquear at mesmo um pequeno nmero de registros. Comentrios RLOCK( ) idntico a LOCK( ). Se o(s) bloqueio(s) for(em) bem-sucedido(s), RLOCK( ) retornar verdadeiro (.T.). Os registros bloqueados encontram-se disponveis para o acesso de leitura e gravao pelo usurio que posicionou os bloqueios. J para os demais usurios da rede, a disponibilidade de acesso somente para leitura. A execuo de RLOCK( ) no garante que a(s) tentativa(s) de bloqueio de registro tenha(m) sido bemsucedida(s). Um bloqueio de registro no pode ser posicionado em um registro ou em uma tabela j bloqueados por outro usurio. Se, por qualquer motivo, o(s) bloqueio(s) de registro no puder(em) ser posicionado(s), RLOCK( ) retornar falso (.F.). Como padro, RLOCK( ) tenta bloquear u