74039361 Visual FoxPro Comandos e Funcoes

472
SR.V .VISITANTE ISITANTE ! ! Preparamos esta apostila, especialmente para servir de auxilio aos que estão migrando do CLIPPER. Muito pouco é o material existente a respeito desta poderosa linguagem, e desta forma acreditamos que nossa contribuição possa ser importante. Utilizando-nos do Visual FoxPro, desenvolvemos um aplicativo chamado VISUAL SCREEN, e este já vem recebendo uma excelente aceitação por sua versatilidade na criação 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 Inácio Kreutz / Lajeado RS [email protected] Dinarte Inácio Kreutz Dinarte Inácio Kreutz Agradecimentos especiais ao colega MARCELO MACEDO, pela ajuda na preparação deste trabalho [Pág.: 1]

Transcript of 74039361 Visual FoxPro Comandos e Funcoes

Page 1: 74039361 Visual FoxPro Comandos e Funcoes

SSRR.V.VISITANTEISITANTE ! !

Preparamos esta apostila, especialmente para servir de auxilio aos que estão migrando do CLIPPER. Muito pouco é o material existente a respeito desta poderosa linguagem, e desta forma acreditamos que nossa contribuição possa ser importante.Utilizando-nos do Visual FoxPro, desenvolvemos um aplicativo chamado VISUAL SCREEN, e este já vem recebendo uma excelente aceitação por sua versatilidade na criação 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 paraDinarte Inácio Kreutz / Lajeado RS

[email protected]

Dinarte Inácio KreutzDinarte Inácio Kreutz

Agradecimentos especiais ao colega MARCELO MACEDO, pela ajuda na preparação deste trabalho

[Pág.: 1]

Page 2: 74039361 Visual FoxPro Comandos e Funcoes

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

INDICEINDICE

Sr.Visitante !.......................................................................................................................................................................................1Comandos e Funções............................................................................................................................................................................10

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

[Pág.: 2]

Page 3: 74039361 Visual FoxPro Comandos e Funcoes

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

[Pág.: 3]

Page 4: 74039361 Visual FoxPro Comandos e Funcoes

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

[Pág.: 4]

Page 5: 74039361 Visual FoxPro Comandos e Funcoes

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

[Pág.: 5]

Page 6: 74039361 Visual FoxPro Comandos e Funcoes

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

[Pág.: 6]

Page 7: 74039361 Visual FoxPro Comandos e Funcoes

RLOCK( ), função......................................................................................................................................................................332ROUND( ), função.....................................................................................................................................................................334RTOD( ), função.........................................................................................................................................................................334RTRIM( ), função.......................................................................................................................................................................335RUN | !, comando.......................................................................................................................................................................335SAVE SCREEN, comando.........................................................................................................................................................337SAVE WINDOWS, comando....................................................................................................................................................337SCAN ... ENDSCAN, comando.................................................................................................................................................338SCATTER, comando..................................................................................................................................................................340SCHEME( ), função...................................................................................................................................................................342SCOLS( ), função.......................................................................................................................................................................342SCROLL, comando....................................................................................................................................................................342SEC( ) , função...........................................................................................................................................................................343SECONDS( ), função.................................................................................................................................................................343SEEK( ), função..........................................................................................................................................................................344SEEK, comando..........................................................................................................................................................................345SELECT( ), função.....................................................................................................................................................................346SELECT, comando.....................................................................................................................................................................347

Comandos SET...................................................................................................................................................................................347SET ALTERNATE, comando....................................................................................................................................................347SET ASSERTS, comando..........................................................................................................................................................348SET AUTOSAVE, comando......................................................................................................................................................348SET BELL, comando.................................................................................................................................................................349SET BLOCKSIZE, comando.....................................................................................................................................................349SET CARRY, comando..............................................................................................................................................................350SET CENTURY, comando.........................................................................................................................................................350SET CLOCK, comando..............................................................................................................................................................351SET COLLATE, comando.........................................................................................................................................................352SET COLOR OF SCHEME, comando.......................................................................................................................................353SET COMPATIBLE, comando..................................................................................................................................................354SET CONFIRM, comando.........................................................................................................................................................355SET CONSOLE, comando.........................................................................................................................................................355SET COVERAGE, comando......................................................................................................................................................356SET CPDIALOG, comando.......................................................................................................................................................356SET CURRENCY, comando......................................................................................................................................................357SET CURSOR, comando...........................................................................................................................................................358SET DATABASE, comando......................................................................................................................................................358SET DATE, comando.................................................................................................................................................................359SET DEBUG, comando..............................................................................................................................................................360SET DEBUGOUT, comando.....................................................................................................................................................360SET DECIMALS, comando.......................................................................................................................................................360SET DEFAULT, comando.........................................................................................................................................................361SET DELETED, comando.........................................................................................................................................................362SET DEVELOPMENT, comando..............................................................................................................................................362SET DEVICE, comando.............................................................................................................................................................363SET DISPLAY, comando...........................................................................................................................................................364SET ECHO, comando.................................................................................................................................................................364SET ESCAPE, comando.............................................................................................................................................................365SET EXACT, comando..............................................................................................................................................................365SET EXCLUSIVE, comando.....................................................................................................................................................366SET FDOW, comando................................................................................................................................................................367SET FIELDS, comando..............................................................................................................................................................368SET FILTER, comando..............................................................................................................................................................369SET FIXED, comando................................................................................................................................................................369SET FULLPATH, comando.......................................................................................................................................................370SET FUNCTION, comando.......................................................................................................................................................370SET FWEEK, comando..............................................................................................................................................................371SET HEADINGS, comando.......................................................................................................................................................371SET HELP, comando.................................................................................................................................................................372SET HELPFILTER, comando....................................................................................................................................................372SET HOURS, comando..............................................................................................................................................................372SET INDEX, comando...............................................................................................................................................................373SET KEY, comando...................................................................................................................................................................374SET KEYCOMP, comando........................................................................................................................................................375SET LOCK, comando.................................................................................................................................................................376SET LOGERRORS, comando....................................................................................................................................................377SET MARGIN, comando...........................................................................................................................................................377SET MARK TO, comando.........................................................................................................................................................378SET MEMOWIDTH, comando..................................................................................................................................................378SET MESSAGE, comando.........................................................................................................................................................379SET MULTILOCKS, comando..................................................................................................................................................379SET NEAR, comando.................................................................................................................................................................380SET NOTIFY, comando.............................................................................................................................................................381

[Pág.: 7]

Page 8: 74039361 Visual FoxPro Comandos e Funcoes

SET NULLDISPLAY, comando................................................................................................................................................381SET ODOMETER, comando.....................................................................................................................................................381SET OPTIMIZE, comando.........................................................................................................................................................382SET ORDER, comando..............................................................................................................................................................383SET PALETTE, comando..........................................................................................................................................................384SET PATH, comando.................................................................................................................................................................385SET PDSETUP, comando..........................................................................................................................................................385SET POINT, comando................................................................................................................................................................386SET PRINTER, comando...........................................................................................................................................................387SET READBORDER, comando................................................................................................................................................389SET REFRESH, comando..........................................................................................................................................................389SET RELATION OFF, comando...............................................................................................................................................390SET RELATION, comando.......................................................................................................................................................390SET REPROCESS, comando.....................................................................................................................................................392SET SAFETY, comando............................................................................................................................................................393SET SECONDS, comando.........................................................................................................................................................394SET SKIP OF, comando.............................................................................................................................................................395SET SKIP, comando...................................................................................................................................................................396SET STEP, comando..................................................................................................................................................................398SET SYSFORMATS, comando.................................................................................................................................................398SET SYSMENU, comando........................................................................................................................................................399SET TALK, comando.................................................................................................................................................................400SET TEXTMERGE, comando...................................................................................................................................................401SET TOPIC, comando................................................................................................................................................................403SET TYPEAHEAD, comando...................................................................................................................................................403SET UDFPARMS, comando......................................................................................................................................................404SET UNIQUE, comando............................................................................................................................................................405SET( ), função.............................................................................................................................................................................405SETFLDSTATE( ), função.........................................................................................................................................................407SHOW MENU, comando...........................................................................................................................................................408SHOW POPUP, comando..........................................................................................................................................................408SHOW WINDOW, comando.....................................................................................................................................................409SIGN( ), função..........................................................................................................................................................................410SIN( ), função.............................................................................................................................................................................411SIZE POPUP, comando..............................................................................................................................................................411SIZE WINDOW, comando.........................................................................................................................................................412SKIP, comando...........................................................................................................................................................................413SKPPAD( ), função....................................................................................................................................................................413SORT, comando.........................................................................................................................................................................414SOUNDEX( ), função................................................................................................................................................................416SPACE( ), função.......................................................................................................................................................................416SROWS( ), função......................................................................................................................................................................417STORE, comando.......................................................................................................................................................................417STR( ), função............................................................................................................................................................................418STUFF( ), função........................................................................................................................................................................418STUFFC( ), função.....................................................................................................................................................................419SUBSTR( ), função.....................................................................................................................................................................419SUBSTRC( ), função..................................................................................................................................................................420SUM, comando...........................................................................................................................................................................421SUSPEND, comando..................................................................................................................................................................422

Comandos SYS(???)...........................................................................................................................................................................423SYS(0) - Informações do computador da rede...........................................................................................................................423SYS(1) - Dia do sistema Juliano.................................................................................................................................................423SYS(2) - Segundos desde a meia-noite......................................................................................................................................423SYS(3) - Nome de arquivo válido..............................................................................................................................................424SYS(5) - Volume ou unidade de disco padrão...........................................................................................................................424SYS(6) - Dispositivo de impressora atual..................................................................................................................................424SYS(7) - Arquivo de formato atual............................................................................................................................................425SYS(9) - Número serial do Visual FoxPro.................................................................................................................................425SYS(10) - Seqüência a partir do número de dia juliano.............................................................................................................425SYS(11) - Número de dia juliano...............................................................................................................................................425SYS(12) - Memória disponível em bytes...................................................................................................................................426SYS(13) - Status da impressora..................................................................................................................................................426SYS(14) - Expressão de índice...................................................................................................................................................427SYS(16) - Nome de arquivo do programa em execução............................................................................................................428SYS(17) - Processador em uso...................................................................................................................................................428SYS(21) - Controlando o número do índice...............................................................................................................................429SYS(22) - Controlando nome ou marca de índice .....................................................................................................................429SYS(23) - Utilização de memória EMS do FoxPro...................................................................................................................430SYS(24) - Limite de memória EMS...........................................................................................................................................430SYS(100) - Definição da console...............................................................................................................................................430SYS(101) - Definição do dispositivo..........................................................................................................................................430SYS(102) - Definição da impressora..........................................................................................................................................431

[Pág.: 8]

Page 9: 74039361 Visual FoxPro Comandos e Funcoes

SYS(103) - Definição da comunicação......................................................................................................................................431SYS(1001) - Memória do Visual FoxPro...................................................................................................................................431SYS(1016) - Uso da memória de objeto do usuário...................................................................................................................432SYS(1023) - Ativar modo de diagnóstico da Ajuda...................................................................................................................432SYS(1024) - Desativar o modo de diagnóstico da Ajuda...........................................................................................................432SYS(1500) - Ativar um item de menu do sistema......................................................................................................................433SYS(2000) - correspondência curinga de nome do arquivo.......................................................................................................433SYS(2001) - SET ... status do comando.....................................................................................................................................434SYS(2002) - ativar ou desativar ponto de inserção....................................................................................................................434SYS(2003) - diretório atual........................................................................................................................................................434SYS(2004) - diretório inicial do Visual FoxPro.........................................................................................................................435SYS(2006) - placa de vídeo atual...............................................................................................................................................435SYS(2007) - Valor da soma de verificação................................................................................................................................435SYS(2010) - Definições do arquivo CONFIG.SYS...................................................................................................................435SYS(2011) - Status de bloqueio atual.........................................................................................................................................436SYS(2012) - Tamanho do bloco do campo Memo.....................................................................................................................436SYS(2013) - Seqüência de nomes do menu do sistema.............................................................................................................437SYS(2014) - Caminho mínimo...................................................................................................................................................437SYS(2018) - Parâmetro da mensagem de erro...........................................................................................................................438SYS(2019) - Nome e localização do arquivo de configuração..................................................................................................438SYS(2020) - Tamanho padrão de disco......................................................................................................................................439SYS(2021) - Expressão de índice filtrada..................................................................................................................................439SYS(2022) - Tamanho do grupo no disco..................................................................................................................................440SYS(2023) - caminho temporário...............................................................................................................................................440SYS(2029) - Tipo de tabela........................................................................................................................................................440SYS(3050) - Definir tamanho do buffer de memória.................................................................................................................441SYS(3051) - Definir o intervalo de tentativa de bloqueio..........................................................................................................442TABLEREVERT( ), função.......................................................................................................................................................443TABLEUPDATE( ), função.......................................................................................................................................................444TAG( ), função...........................................................................................................................................................................446TAN( ), função...........................................................................................................................................................................447TEXT ... ENDTEXT, comando..................................................................................................................................................448TIME( ), função..........................................................................................................................................................................449TOTAL, comando......................................................................................................................................................................449TRANSFORM( ), função...........................................................................................................................................................450TRIM( ), função..........................................................................................................................................................................451TTOC( ), função.........................................................................................................................................................................452TTOD( ), função.........................................................................................................................................................................452TXTWIDTH( ), função...............................................................................................................................................................453TYPE( ), função..........................................................................................................................................................................454TYPE, comando..........................................................................................................................................................................455UNLOCK, comando...................................................................................................................................................................456UPPER( ), função.......................................................................................................................................................................457USE, comando............................................................................................................................................................................457USED( ), função.........................................................................................................................................................................460VAL( ), função...........................................................................................................................................................................461VALIDATE DATABASE, comando.........................................................................................................................................461VERSION( ), função..................................................................................................................................................................462SYS( ), visão geral das funções..................................................................................................................................................463WAIT, comando.........................................................................................................................................................................465WFONT( ), função.....................................................................................................................................................................466WITH ... ENDWITH, comando.................................................................................................................................................467WTITLE( ), função.....................................................................................................................................................................468YEAR( ), função.........................................................................................................................................................................469ZAP, comando............................................................................................................................................................................469ZOOM WINDOW, comando.....................................................................................................................................................470APENDICE PRÁTICO..............................................................................................................................................................472COMANDOS QUE RETORNAM COM OS VALORES DA RESOLUÇÃO DE VIDEO EM USO.....................................472

[Pág.: 9]

Page 10: 74039361 Visual FoxPro Comandos e Funcoes

COMANDOS E FUNÇÕES

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 documentação do MS-DOS para obter maiores informações sobre os comandos disponíveis.

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 (não substitua N por um valor numérico nem inclua K) para executar outro aplicativo do Windows.

Comentários

É possível 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 diretório atual ou esse arquivo deverá estar localizado onde o parâmetro MS-DOS COMSPEC possa encontrá-lo. Para obter maiores informações sobre COMSPEC, consulte a documentação do MS-DOS.

Cuidado Não utilize RUN para executar programas de reorganização de disco, como o CHKDSK, a partir do Visual FoxPro. Esses programas modificam o conteúdo 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 não possuir uma extensão, 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 execução de um programa não Windows no Windows. Você poderá especificar parâmetros para o programa, ou seja, se ele é executado em uma janela ou na tela inteira, o total de memória alocado para o programa etc.

Se o PIF for encontrado, o programa nele especificado será executado com os parâmetros PIF. Caso contrário, será feita uma procura no caminho do MS-DOS para encontrar um arquivo executável com o nome que você indicar.

Quando um PIF não é encontrado, o Visual FoxPro utiliza o FOXRUN.PIF, um PIF instalado no diretório do Visual FoxPro. O FOXRUN.PIF é configurado para executar o programa em uma janela. É possível modificar o FOXRUN.PIF para que execute programas com outra configuração.

FOXRUN.PIF O FOXRUN.PIF permite a execução de programas e comandos do MS-DOS e do Windows a partir do Visual FoxPro. O FOXRUN.PIF deve estar no mesmo diretório que VFP.EXE no Visual FoxPro.

[Pág.: 10]

Page 11: 74039361 Visual FoxPro Comandos e Funcoes

/N significa NOWAIT. Inclua a letra N (não substitua N por um valor numérico nem inclua K) para executar outro aplicativo do Windows. Por exemplo, a instrução a seguir abre o acessório 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 através 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 operações padrão do Windows.

Para especificar como o aplicativo do Windows será aberto, inclua um valor numérico opcional imediatamente após /N. Não inclua espaços entre /N e o valor numérico. A tabela a seguir lista os valores numéricos que podem ser incluídos e descreve o estado do aplicativo do Windows quando ele é aberto.

Valor Atributos do aplicativo

1 Ativo e tamanho normal2 Ativo e minimizado3 Ativo e maximizado4 Inativo e tamanho normal7 Inativo e minimizado

Executando programas do MS-DOS no Visual FoxPro Como padrão, o FOXRUN.PIF executa o programa do MS-DOS externo especificado em uma janela. Enquanto o programa ou comando do MS-DOS é executado, o título da janela é Executar Comando do FoxPro. No Visual FoxPro, a janela Executar Comando do FoxPro é fechada após a execução 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 (padrão no Visual FoxPro) usando a caixa de verificação Fechar janela ao sair. Também é possível abrir programas externos em uma tela inteira selecionando Tela inteira, Alocar memória para o programa, etc.

Considerações de memória Como padrão, o FOXRUN.PIF aloca um mínimo de 256K de memória para a execução de um comando ou programa externo. Se você não tiver 256K de memória 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 memória adicional.· Edite o FOXRUN.PIF para reduzir o total exigido de memória 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 memória necessário na caixa de texto KB Requerido.

$, operador

Retorna verdadeiro (.T.) se uma expressão de caracteres estiver contida em outra expressão de caracteres; caso contrário, retorna falso (.F.).

Sintaxe

cProcurarPor $ cProcurarEm

[Pág.: 11]

Page 12: 74039361 Visual FoxPro Comandos e Funcoes

Tipos de retorno

Lógico

Argumentos

cProcurarPor Especifica a expressão procurada em cProcurarEm.

cProcurarEm Especifica a expressão procurada para ver se ela contém cProcurarPor.

Se cProcurarPor for localizado em cProcurarEm, $ retornará verdadeiro (.T.); caso contrário, retornará falso (.F.). cProcurarPor e cProcurarEm podem ser variáveis do tipo Caractere ou elementos de matriz, campos do tipo Caractere, literais de seqüência de caracteres ou campos Memo de qualquer tamanho.

Os campos Memo podem ser manipulados como expressões de caracteres, campos em tabelas, variáveis ou elementos de matriz. Por exemplo, se MEMO_FLD for um campo Memo, a linha abaixo será aceitável:

LIST FOR 'FOX' $ UPPER(memo_fld)

Comentários

Se a expressão de caracteres não for localizada, será retornado falso (.F.). O operador $ considera maiúsculas/minúsculas e não é otimizado por Rushmore.

%, operador

Retorna o resto (módulo) obtido pela divisão de uma expressão numérica por outra.

Sintaxe

nDividendo % nDivisor

Argumentos

nDividendo Especifica o dividendo (a expressão numérica que está sendo dividida). O número de casas decimais em nDividendo determina o número de casas decimais no resultado.

nDivisor Especifica o divisor (a expressão numérica que divide o dividendo nDividendo). Se nDivisor for positivo, será retornado um número positivo; se nDivisor for negativo, será retornado um número negativo. nDivisor não pode ser zero.

Comentários

O operador de módulo (%) e MOD( ) retornam resultados idênticos.

O operador de módulo (%) é um operador aritmético. Outros operadores aritméticos são: + (adição), - (subtração), * (multiplicação), / (divisão) e ^ (exponenciação). Quando esses operadores forem combinados em uma expressão numérica, % terá a mesma precedência que * e /.

&&, comando

Indica o início de um comentário não-executável em uma linha de um arquivo de programa.

[Pág.: 12]

Page 13: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

&& [Comentários]

Argumentos

Comentários Indica que o texto que se segue é um comentário em uma linha. Por exemplo:

STORE (20*12) TO gnPayments && 20 anos de pagamentos mensais

A inserção de comentários em uma linha para denotar o fim dos comandos de programação estruturada IF ... ENDIF, DO e FOR ... ENDFOR melhora consideravelmente a legibilidade dos programas.

Comentários

Coloque um ponto-e-vírgula (;) no final de cada linha de comentário que continue na linha seguinte. Não é possível colocar && e um comentário depois do ponto-e-vírgula utilizado para continuar uma linha de comando em uma linha adicional.

*, comando

Indica o início de uma linha de comentário não-executável em um arquivo de programa.

Sintaxe

* [Comentários]

Argumentos

Comentários Especifica o comentário na linha de comentário. Por exemplo:

* Isto é um comentário

Comentários

Coloque um ponto-e-vírgula (;) no final de cada linha de comentário que continue na próxima linha.

@ ... CLEAR, comando

Limpa uma parte da janela principal do Visual FoxPro ou de uma janela definida pelo usuário.

Sintaxe

@ nLinha1, nColuna1 [CLEAR | CLEAR TO nLinha2, nColuna2]

Argumentos

@ nLinha1, nColuna1 CLEAR Limpa uma área retangular cujo canto superior esquerdo começa em nLinha1 e nColuna1 e continua até o canto inferior direito da janela principal do Visual FoxPro ou de uma janela definida pelo usuário.

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.

[Pág.: 13]

Page 14: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

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 SCREENCLEAR@ 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 usuário 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 direção na qual a área retangular será movida. Se uma cláusula de direção for omitida, a área será movida para cima.

BY nQuantidadeMovida Especifica o número de linhas ou colunas que a área retangular será movida. Se BY nQuantidadeMovida for omitido, a região 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 alimentação de linha.

\\LinhaTexto Quando você utiliza \\, a linha de texto não é precedida por um retorno de carro e uma alimentação de linha.

Qualquer espaço antes de \ e \\ não é incluído na linha de saída, mas os espaços após \ e \\ são incluídos.

[Pág.: 14]

Page 15: 74039361 Visual FoxPro Comandos e Funcoes

Você pode incorporar uma expressão à linha de texto. Se a expressão estiver entre delimitadores de mesclagem de textos (<< >>, como padrão) e SET TEXTMERGE estiver ativado (ON), a expressão será avaliada e seu valor será fornecido como texto.

Comentários

Os comandos \ e \\ facilitam a mesclagem de textos no Visual FoxPro. A mesclagem de textos permite que você oriente a saída do texto para um arquivo para criar cartas-formulário ou programas.

Utilize \ e \\ para orientar a saída de uma linha de texto para o atual arquivo de saída da mesclagem de textos e para a tela. SET TEXTMERGE é utilizado para especificar o arquivo de saída da mesclagem de textos. Se a mesclagem de textos não for direcionada a um arquivo, a linha de texto será fornecida apenas para a janela principal do Visual FoxPro ou para a janela de saída ativa definida pelo usuário. SET TEXTMERGE NOSHOW suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

\ | \\, exemplo do comando

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE Customer && Abre tabela customerSET TEXTMERGE ONSET TEXTMERGE TO letter.txt\<<CDOW(DATE( ))>>, <<CMONTH(DATE( ))>>\\ <<DAY(DATE( ))>>, <<YEAR(DATE( ))>>\\\Caro <<contact>>\Texto adicional\\Grato,\\Companhia XYZCLOSE ALLMODIFY FILE letter.txt NOEDIT

=, comando

Avalia uma ou mais expressões.

Sintaxe

= Expressão1 [, Expressão2 ...]

Argumentos

Expressão1 [, Expressão2 ...] Especifica a expressão ou as expressões avaliadas pelo comando =.

Comentários

O comando = avalia uma ou mais expressões, Expressão1, Expressão2 ... e descarta os valores de retorno. Essa opção é particularmente útil quando uma função do Visual FoxPro ou uma função definida pelo usuário tem um efeito desejado, mas não há necessidade de atribuir o valor de retorno da função a uma variável, elemento de matriz ou campo.

Por exemplo, para ativar o modo de inserção, você pode emitir o comando:

[Pág.: 15]

Page 16: 74039361 Visual FoxPro Comandos e Funcoes

= INSMODE(.T.)

INSMODE normalmente retorna um valor verdadeiro (.T.) ou falso (.F.). No exemplo acima, a função é executada, mas o valor de retorno é descartado.Se apenas uma expressão (Expressão1) for incluída, o sinal de igualdade será opcional.

Observação O sinal de igualdade (=) pode ser utilizado de duas formas não-relacionadas. Pode-se utilizá-lo como um operador em expressões lógicas para fazer uma comparação ou para atribuir valores a variáveis e a elementos de matriz. Nesses dois casos, o sinal de igualdade (=) é um operador e não um comando.

ABS( ), função

Retorna o valor absoluto da expressão numérica especificada.

Sintaxe

ABS(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica a expressão numérica cujo valor absoluto a função ABS( ) retorna.

ABS( ), exemplo da função

? ABS(-45) && Exibe 45? ABS(10-30) && Exibe 20? ABS(30-10) && Exibe 20STORE 40 TO gnNumber1STORE 2 TO gnNumber2? ABS(gnNumber2-gnNumber1) && Exibe 38

ACOS( ), função

Retorna o arco co-seno de uma expressão numérica especificada.

Sintaxe

ACOS(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica uma expressão numérica cujo arco co-seno a função ACOS( ) retorna. O valor de nExpressão pode variar de –1 a +1. O valor retornado por ACOS( ) varia de 0 a pi (3,141592). O número de casas decimais retornado por ACOS( ) é determinado por SET DECIMALS.

Utilize RTOD( ) para converter radianos para graus.

[Pág.: 16]

Page 17: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

O arco co-seno é retornado em radianos.

ACOS( ), exemplo da função

CLEAR? RTOD(ACOS(0)) && Exibe 90.00STORE -1 to gnArcAngle? RTOD(ACOS(gnArcAngle)) && Exibe 180.00? RTOD(ACOS(SQRT(2)/2)) && Exibe 45.00

ACTIVATE SCREEN, comando

Envia toda a saída subseqüente para a janela principal do Visual FoxPro, em vez de enviar para a janela definida pelo usuário que está ativa.

Sintaxe

ACTIVATE SCREEN

Comentários

Utilize o comando ACTIVATE WINDOW para direcionar a saída para uma janela definida pelo usuário.

ACTIVATE WINDOW, comando

Exibe e ativa uma ou mais janelas definidas pelo usuário 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 vírgulas. 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 saída 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 várias janelas filho. Uma janela filho ativada dentro de uma janela pai não pode ser movida para fora. Caso a janela pai seja movida, a janela filho será movida junto com ela.

Observação A janela pai deve estar visível para que qualquer uma de suas janelas filho fique visível.

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 inclusão da

[Pág.: 17]

Page 18: 74039361 Visual FoxPro Comandos e Funcoes

cláusula IN SCREEN em ACTIVATE WINDOW substitui a cláusula IN WINDOW em DEFINE WINDOW.

BOTTOM | TOP | SAME Especifica onde as janelas são ativadas em relação a outras janelas anteriormente ativadas. Como padrão, uma janela torna-se a janela frontal quando é ativada. A inclusão de BOTTOM coloca uma janela atrás 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 saída para uma janela sem exibir a janela.

Comentários

Janelas definidas pelo usuário são criadas com DEFINE WINDOW.

Quando uma janela é ativada, ela passa a ser a janela frontal e toda a saída é direcionada para ela. A saída pode ser direcionada apenas para uma janela de cada vez. A janela permanece como a janela de saída 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 usuário são exibidos na parte inferior do menu Janela. O nome da janela ativa, definida pelo usuário, está selecionada com uma marca de verificação.

É possível colocar mais de uma janela ao mesmo tempo na janela principal do Visual FoxPro, mas a saída será direcionada somente para a janela ativada por último. Quando mais de uma janela estiver aberta, se a janela de saída ativa for desativada, ela será removida da janela principal do Visual FoxPro e a saída subseqüente será enviada para outra janela. Caso nenhuma janela de saída esteja ativa, a saída será direcionada para a janela principal do Visual FoxPro.

Para garantir que a saída seja direcionada para uma janela específica quando a janela de saída ativa for desativada, você deve ativar explicitamente a janela para a qual deseja enviar a saída com o comando ACTIVATE WINDOW.

Todas as janelas ativadas são exibidas até que o comando DEACTIVATE WINDOW ou HIDE WINDOW seja executado para removê-las da tela. A emissão de qualquer um destes comandos remove as janelas da tela, mas não da memória. Para exibir novamente as janelas, execute o comando ACTIVATE WINDOW ou SHOW WINDOW.

Para remover janelas da tela e da memória, utilize CLEAR WINDOWS, RELEASE WINDOWS ou CLEAR ALL. É necessário redefinir as janelas removidas da memória 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· Sessão de dados· De depuração· Depurar saída· 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 depuração Chamar Pilha no Visual FoxPro, execute o comando a seguir:

ACTIVATE WINDOW “Chamar Pilha”

[Pág.: 18]

Page 19: 74039361 Visual FoxPro Comandos e Funcoes

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 execução, a janela é oculta e, em seguida, reexibida.

CLEARDEFINE WINDOW output FROM 2,1 TO 13,75 TITLE 'Saída' ;

CLOSE FLOAT GROW SHADOW ZOOMACTIVATE WINDOW outputWAIT WINDOW 'Pressione qualquer tecla para ocultar a janela Saída'HIDE WINDOW outputWAIT WINDOW 'Pressione qualquer tecla para exibir a janela Saída'SHOW WINDOW outputWAIT WINDOW 'Pressione qualquer tecla para liberar a janela Saída'RELEASE WINDOW output

ADATABASES( ), função

Coloca os nomes de todos os bancos de dados abertos e seus caminhos em uma matriz de variável.

Sintaxe

ADATABASES(NomeMatriz)

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica o nome da matriz. Caso a matriz especificada não exista, o Visual FoxPro irá criá-la automaticamente. Caso a matriz exista e não seja grande o suficiente para conter todas as informações de banco de dados, o Visual FoxPro aumentará automaticamente o tamanho da matriz para que comporte as informações. Caso a matriz seja maior do que o necessário, o Visual FoxPro irá truncá-la. Caso a matriz exista e ADATABASES( ) retorne 0, porque não há bancos de dados abertos, a matriz permanecerá inalterada. Caso a matriz não exista e ADATABASES( ) retorne 0, a matriz não será criada.

Comentários

Os nomes de todos os bancos de dados abertos na sessão de dados atual são colocados em uma matriz de variável.

A função ADATABASES( ) cria uma matriz bidimensional. A primeira coluna da matriz contém os nomes dos bancos de dados abertos e a segunda coluna contém os caminhos dos bancos de dados.

ADATABASES( ) retorna o número de nomes de bancos de dados (linhas) na matriz. Caso nenhum banco de dados esteja aberto, ADATABASES( ) irá retornar 0 e a matriz não será criada.

ADATABASES( ), exemplo da função

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 dadosOPEN DATABASE testdata && Abre o banco de dadosCLEAR? ADATABASES(gaDatabase) && Cria uma matriz de bancos de dados abertos

[Pág.: 19]

Page 20: 74039361 Visual FoxPro Comandos e Funcoes

DISPLAY MEMORY LIKE gadatabase && Exibe o conteúdo da matrizCLOSE 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 diálogo 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 extensão .DBF.

Comentários

Depois que for adicionada ao banco de dados, você poderá executar as mesmas operações na tabela assim como em qualquer outra tabela.

Uma vez adicionada ao banco de dados, a tabela não estará mais livre. No entanto, será possível liberar qualquer tabela do banco de dados ao se executar REMOVE TABLE.

A tabela que está sendo adicionada:

· Deve ser um arquivo .DBF válido.· Não pode ter o mesmo nome de uma tabela existente no banco de dados aberto, a menos que seja atribuído à tabela um nome extenso único.· Não 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 não pode estar envolvido em uma transação.

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 é então 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 mydbc1CREATE DATABASE mydbc2SET DATABASE TO mydbc1CREATE TABLE table1 (cField1 C(10), n N(10)) && Adiciona tabela a mydbc1CLOSE TABLES && Uma tabela deve estar fechada para ser removida de um banco de dadosREMOVE TABLE table1SET DATABASE TO mydbc2ADD TABLE table1RENAME TABLE table1 TO table2

[Pág.: 20]

Page 21: 74039361 Visual FoxPro Comandos e Funcoes

ADEL( ), função

Exclui um elemento de uma matriz unidimensional ou uma linha, ou coluna de uma matriz bidimensional.

Sintaxe

ADEL(NomeMatriz, nNúmeroElemento [, 2])

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica a matriz da qual a linha, coluna ou o elemento é excluído.

nNúmeroElemento Especifica o número do elemento, linha ou coluna a ser excluído da matriz. Para excluir uma coluna da matriz, inclua o argumento opcional 2.

Para obter maiores informações sobre como fazer referência a elementos em uma matriz, consulte ” DIMENSION”.

2 Exclui uma coluna da matriz.

Comentários

A exclusão de um elemento, linha ou coluna de uma matriz não altera o seu tamanho; em vez disso, as linhas, colunas ou os elementos à direita são movidos em direção ao início da matriz e o último elemento, linha ou coluna da matriz é definido como falso (.F.).

Caso o elemento, a linha ou coluna sejam excluídos com sucesso, retorna o número 1.

ADEL( ), exemplo da função

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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre tabela customerSELECT company FROM customer ;

WHERE country = 'UK' ;INTO ARRAY gaCompanies

gnCount = _TALLYgcName = 'Seven Seas Imports'CLEARDISPLAY MEMORY LIKE gaCompaniesgnPos = ASCAN(gaCompanies, gcName) && Procura pela empresaIF gnPos != 0

* Empresa encontrada, remova-a da matriz= ADEL(gaCompanies, gnPos)gnCount = gnCount - 1

ENDIF

DISPLAY MEMORY LIKE gaCompanies

[Pág.: 21]

Page 22: 74039361 Visual FoxPro Comandos e Funcoes

ADIR( ), função

Coloca informações sobre arquivos em uma matriz e, em seguida, retorna o número de arquivos.

Sintaxe

ADIR(NomeMatriz [, cEstruturaArquivo [, cAtributo]])

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica o nome da matriz. Se a matriz incluída não existir, o Visual FoxPro irá criá-la automaticamente. Se existir e não for suficientemente grande para conter todas as informações, o Visual FoxPro aumentará, automaticamente, o seu tamanho para que comporte as informações. Se a matriz for maior do que o necessário, o Visual FoxPro irá truncá-la. Se a matriz existir e ADIR( ) retornar a 0 por não ter localizado nenhum arquivo correspondente, a matriz permanecerá inalterada. Se não existir e ADIR( ) retornar a 0, a matriz não será criada.

A tabela a seguir descreve os conteúdos e tipos de dados de cada coluna da matriz:

ColunaConteúdo da matriz Tipo de dados

1 Nomes dos arquivos Caractere2 Tamanho dos arquivos Numérico3 Datas da última modificação Data4 Horário da última modificação Caractere5 Atributos dos arquivos CaractereA última coluna da matriz contém 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/gravaçãoH OcultoR Somente para leituraS SistemaD Diretório ou pastacEstruturaArquivo Especifica uma estrutura de arquivo para que você possa armazenar informações sobre arquivos com nomes ou extensões correspondentes a um critério de pesquisa. Por exemplo, o critério pode ser todas as tabelas, todos os arquivos de texto, todos os arquivos com nomes que começam pela letra A e assim por diante. Estas pesquisas gerais são feitas incluindo-se os caracteres curinga * e ? em cEstruturaArquivo. O ponto de interrogação representa um único caractere e o asterisco representa qualquer quantidade de caracteres. Pode-se utilizar qualquer quantidade de caracteres curinga em qualquer posição dentro da estrutura de arquivo.

Você pode especificar uma unidade e/ou diretório para pesquisar nomes de arquivo correspondentes. Se a unidade e o diretório não forem especificados, o Visual FoxPro colocará as informações sobre os arquivos do diretório atual na matriz.

cAtributo Especifica a inclusão de subdiretórios e arquivos ocultos ou do sistema.

[Pág.: 22]

Page 23: 74039361 Visual FoxPro Comandos e Funcoes

cAtributo pode conter qualquer combinação de D, H e S. A inclusão de D retorna nomes de subdiretórios do diretório atual, além dos nomes de arquivos correspondentes à estrutura de arquivo especificado em cEstruturaArquivo. A inclusão de H retorna informações sobre arquivos ocultos que correspondem à estrutura de arquivo especificada em cEstruturaArquivo. A inclusão de S retorna informações sobre arquivos do sistema correspondentes à estrutura de arquivo especificada em cEstruturaArquivo.

Inclua uma seqüência vazia em cEstruturaArquivo para retornar somente nomes de subdiretórios, arquivos ocultos ou arquivos do sistema.

Comentários

Para cada arquivo, ADIR( ) coloca na matriz o nome, o tamanho, a data e o horário da última modificação e os atributos do arquivo.

ADIR( ), exemplo da função

O exemplo a seguir utiliza ADIR( ) para criar uma matriz contendo informações de banco de dados. Em seguida, os nomes dos bancos de dados são exibidos.

CLOSE DATABASESSET PATH TO (HOME( ) + 'samples\data')

gnDbcnumber = ADIR(gaDatabase, '*.DBC') && Cria matriz

CLEARFOR nCount = 1 TO gnDbcnumber && Loop para número de bancos de dados

? gaDatabase(nCount,1) && Exibe nomes de bancos de dadosENDFORSET PATH TO HOME( ) && Define caminho para diretório do Visual FoxPro

AELEMENT( ), função

Retorna o número de um elemento de matriz a partir dos índices do elemento.

Sintaxe

AELEMENT(NomeMatriz, nÍndiceLinha [, nÍndiceColuna])

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica o nome da matriz cujo número do elemento você deseja retornar.

nÍndiceLinha Especifica o índice de linha. Se a matriz for unidimensional, AELEMENT( ) irá retornar ao mesmo valor de nÍndiceLinha.

Se você incluir apenas nÍndiceLinha e ele for maior do que o número de linhas na matriz, o Visual FoxPro exibirá uma mensagem de erro.

nÍndiceColuna Especifica o índice de coluna. Se a matriz for bidimensional, inclua nÍndiceLinha e nÍndiceColuna.

Comentários

Você pode referir-se a um elemento de uma matriz bidimensional de duas maneiras. O primeiro método utiliza dois índices para especificar a posição da linha e da coluna do elemento na matriz e o segundo método

[Pág.: 23]

Page 24: 74039361 Visual FoxPro Comandos e Funcoes

utiliza o número de um único elemento. AELEMENT( ) retorna o número do elemento quando fornecido com índices de linha e coluna de um elemento.

As funções do Visual FoxPro ADEL( ), ADIR( ), AFIELDS( ), AINS( ), ALEN( ), ASCAN( ), ASORT( ) e ASUBSCRIPT( ) podem manipular matrizes bidimensionais e exigem que a referência aos elementos seja feita pelo número do elemento. AELEMENT( ) facilita a conversão de índices para um número de elemento para uso por meio dessas funções. Os índices de linha e coluna correspondentes podem ser retornados de um número de elemento com ASUBSCRIPT( ).

O exemplo a seguir ilustra a criação de uma matriz com duas linhas e três colunas. DISPLAY MEMORY exibe o conteúdo dos elementos da matriz listados na ordem dos números de elementos.

DIMENSION gaMyArray(2,3)DISPLAY MEMORY LIKE gaMyArraygaMyArray Pub A ( 1, 1) L .F. (elemento número 1) ( 1, 2) L .F. (elemento número 2) ( 1, 3) L .F. (elemento número 3) ( 2, 1) L .F. (elemento número 4) ( 2, 2) L .F. (elemento número 5) ( 2, 3) L .F. (elemento número 6)

Pode-se fazer referência a um elemento pelos seus índices ou pelo seu número de elemento. Os comandos STORE ‘INVOICE’ TO gaMyArray(2, 1) e STORE ‘INVOICE’ TO gaMyArray(4) armazenam a seqüência de caracteres INVOICE no mesmo elemento de matriz.

Em matrizes unidimensionais, o número do elemento é idêntico ao seu índice de linha única. Não é necessário utilizar AELEMENT( ) com matrizes unidimensionais.

AERROR( ), função

Cria uma matriz de variável que contém informações sobre o erro mais recente do ODBC, OLE ou Visual.FoxPro

Sintaxe

AERROR(NomeMatriz)

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica o nome da matriz criada por AERROR( ).

Comentários

A função AERROR( ) cria uma matriz com seis colunas e retorna o número de linhas da matriz. O tipo de erro ocorrido determina o número de linhas da matriz.

A tabela a seguir descreve o conteúdo de cada elemento quando ocorre um erro do Visual FoxPro. Na ocorrência de um erro, a matriz conterá uma linha.

Número do elemento Descrição

1 Numérico. Contém o número do erro. Idêntico ao valor retornado por ERROR( ).2 Caractere. O texto da mensagem de erro. Idêntico ao valor retornado por MESSAGE( ).

[Pág.: 24]

Page 25: 74039361 Visual FoxPro Comandos e Funcoes

3 O valor nulo. No entanto, se o erro possuir um parâmetro de erro adicional, irá conter o texto do parâmetro de erro. Idêntico ao valor retornado por SYS(2018).4 O valor nulo. No entanto, quando apropriado, contém o número 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 numéricos abaixo:1 - Erro no Disparador de inserção.2 - Erro no Disparador de atualização.3 - Erro no Disparador de exclusão.6 O valor nulo.7 O valor nulo.A tabela a seguir descreve o conteúdo de cada elemento quando ocorrem os erros de OLE número 1427 ou 1429. Nestes casos, a matriz contém uma linha.

Número do elemento Descrição

1 Numérico. Contém 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. Contém o nome do arquivo de Ajuda do aplicativo em que podem ser encontradas maiores informações sobre o erro, se as informações estiverem disponíveis no aplicativo; caso contrário, contém o valor nulo.6 O valor nulo ou Caractere. Contém o identificador de contexto da Ajuda para o tópico apropriado, se as informações estiverem disponíveis no aplicativo; caso contrário, contém o valor nulo.7 Numérico. Um número de exceção OLE 2.0.A tabela a seguir descreve o conteúdo de cada elemento quando ocorre um erro do ODBC de número 1526. Neste caso, a matriz contém duas ou mais linhas; uma linha para cada erro do ODBC.

Número do elemento Descrição

1 Numérico. Contém 1526.2 Caractere. O texto da mensagem de erro.3 Caractere. O texto da mensagem de erro do ODBC.4 Caractere. O estado atual do ODBC SQL.5 Numérico. O número do erro da fonte de dados do ODBC.6 Numérico. O identificador de conexão do ODBC.7 O valor nulo.

AERROR( ), exemplo da função

O exemplo a seguir utiliza ON ERROR para especificar uma rotina de manipulação de erros denominada errhand. Um erro é gerado emitindo-se um comando com erro de ortografia (BRWS). A rotina de manipulação de erros errhand utiliza AERROR( ) para criar uma matriz contendo informações de erro e essa informação é, então, exibida.

ON ERROR DO errhand && errhand é o procedimento para manipular erros

BRWS && Causa um erro de sintaxeON ERROR && Restaura o manipulador de erros do sistema

PROCEDURE errhand= AERROR(aErrorArray) && Dadas do erro mais recenteCLEAR? 'O erro apresentou as seguintes informações' && Exibe mensagemFOR n = 1 TO 7 && Exibe todos os elementos da matriz

? aErrorArray(n)ENDFOR

[Pág.: 25]

Page 26: 74039361 Visual FoxPro Comandos e Funcoes

AFIELDS( ), função

Coloca as informações sobre a estrutura da tabela atual em uma matriz e retorna o número de campos da tabela.

Sintaxe

AFIELDS(NomeMatriz [, nÁreaTrabalho | cAliasTabela])

Tipos de retornoNumérico

ArgumentosNomeMatriz Especifica uma matriz na qual são colocadas informações sobre a estrutura da tabela. Se a matriz incluída em AFIELDS( ) não existir, o Visual FoxPro a criará automaticamente. Se existir, mas não for grande o bastante para conter as informações retornadas por AFIELDS( ), o tamanho da matriz é aumentado automaticamente para acomodar as informações.

nÁreaTrabalho Especifica a área de trabalho da tabela cujas informações de estrutura são colocadas em uma matriz.

cAliasTabela Especifica o alias da tabela cujas informações de estrutura são colocadas em uma matriz.

Se você omitir nÁreaTrabalho e cAliasTabela, as informações de estrutura colocadas em uma matriz dirão respeito à tabela na área de trabalho selecionada atualmente.

A tabela a seguir descreve o que cada coluna da matriz contém e o tipo de dados da informação armazenada em cada coluna. Uma linha é criada para cada campo da tabela.

Número da coluna Informação do campoTipo de dados

1 Nome do campo Caractere2 Tipo do campo:C = CaractereD = DataL = LógicoM = MemoN = NuméricoF = FlutuanteI = InteiroB = DuploY = MoedaT = DataHoraG = Geral Caractere3 Largura do campo Numérico4 Casas decimais Numérico5 Valor nulo permitido Lógico6 Conversão de página de código não permitida Lógico7 Regra de validação de campoCaractere8 Texto de validação de campoCaractere9 Valor padrão do campo Caractere10 Regra de validação da tabela Caractere11 Texto de validação da tabela Caractere12 Nome de tabela extenso Caractere13 Expressão Disparador de inserção Caractere14 Expressão Disparador de atualizaçãoCaractere15 Expressão Disparador de exclusão Caractere16 Comentário da tabela Caractere

Comentários

[Pág.: 26]

Page 27: 74039361 Visual FoxPro Comandos e Funcoes

AFIELDS( ) retorna o número de campos da tabela. A matriz contém 11 colunas e um número de linhas igual ao número de campos da tabela.Você pode utilizar COPY STRUCTURE EXTENDED para colocar informações similares em uma tabela em vez de matriz.

AFIELDS( ), exemplo da função

O exemplo a seguir cria uma matriz denominada gaMyArray contendo informações sobre os campos na tabela customer. Os nomes dos campos são exibidos.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE Customer && Abre tabela customer

gnFieldcount = AFIELDS(gaMyArray) && Cria matrizCLEARFOR nCount = 1 TO gnFieldcount

? gaMyArray(nCount,1) && Exibe nomes de campoENDFOR

AFONT( ), função

Coloca as informações sobre as fontes disponíveis em uma matriz.

Sintaxe

AFONT(NomeMatriz [, cNomeFonte [, nTamanhoFonte]])

Tipos de retorno

Lógico

Argumentos

NomeMatriz Especifica a matriz de variável em que são colocados os nomes de fontes disponíveis. Se a matriz não 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 contrário, retornará falso (.F.).

cNomeFonte Especifica uma fonte para a qual a informação será colocada na matriz.

Se a fonte que você especificar suportar apenas tamanhos de fonte discretos (8 pontos, 10 pontos, ...), os tamanhos serão armazenados na matriz e AFONT( ) retornará verdadeiro (.T.). Se a fonte especificada for dimensionável (suportar valores fracionários de tamanho), a matriz terá um único elemento contendo -1 e AFONT( ) retornará verdadeiro (T.).

Se a fonte que você especificar não estiver disponível, a matriz não será criada e AFONT( ) retornará falso (.F.).

nTamanhoFonte Especifica um tamanho para a fonte determinada em cNomeFonte.

Se o tamanho da fonte nTamanhoFonte estiver disponível 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 não estiver disponível para a fonte especificada, a matriz não será criada e AFONT( ) retornará falso (.F.).

Comentários

[Pág.: 27]

Page 28: 74039361 Visual FoxPro Comandos e Funcoes

AFONT( ) coloca os nomes de fontes disponíveis em uma matriz e também pode ser utilizada para determinar os tamanhos possíveis de fontes ou se uma fonte é dimensionável. Utilize GETFONT( ) para exibir uma caixa de diálogo contendo as fontes disponíveis, seus tamanhos e estilos.

AFONT( ), exemplo de função

O exemplo a seguir utiliza AFONT( ) para criar uma matriz contendo os nomes de todas as fontes disponíveis. O nome de cada fonte é exibido, juntamente com um exemplo da fonte. Se houver mais de 10 fontes instaladas, somente as 10 primeiras serão exibidas.

CLEAR=AFONT(gaFontArray) && Matriz contendo nomes de fontegnNumFonts = ALEN(gaFontArray) && Número de fontesIF gnNumFonts > 10

gnNumFonts = 10 && Exibe primeiras 10 fontesENDIF

FOR nCount = 1 TO gnNumFonts? ALLTRIM(gaFontArray(nCount)) && Exibe nome da fonte?? ' Este é um exemplo de ' ;

+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8ENDFOR

AINS( ), função

Insere um elemento em uma matriz unidimensional ou uma linha ou coluna em uma matriz bidimensional.

Sintaxe

AINS(NomeMatriz, nNúmeroElemento [, 2])

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica o nome da matriz na qual o elemento é inserido.

nNúmeroElemento Especifica onde o novo elemento, linha ou coluna é inserido na matriz.

Para inserir um elemento em uma matriz unidimensional, inclua NomeMatriz e o elemento nNúmeroElemento onde ocorre a inserção. O novo elemento é inserido imediatamente antes do elemento nNúmeroElemento. Para inserir uma linha em uma matriz bidimensional, inclua NomeMatriz e o número da linha nNúmeroElemento onde ocorre a inserção. A nova linha é inserida imediatamente antes da linha nNúmeroElemento.

Para obter maiores informações sobre como fazer referência a um elemento de matriz através de seus índices, consulte DIMENSION.

2 Insere uma coluna em uma matriz bidimensional. A nova coluna é inserida imediatamente antes da coluna especificada com nNúmeroElemento.

Comentários

Inserir um elemento, linha ou coluna em uma matriz não altera o tamanho da matriz. Os elementos, linhas ou colunas à direita são deslocados para o fim da matriz e seu o último elemento, linha ou coluna é descartado. O elemento, linha ou coluna recém-inserido é inicializado com um valor falso (.F.).

[Pág.: 28]

Page 29: 74039361 Visual FoxPro Comandos e Funcoes

AINS( ) retornará 1 se o elemento, linha ou coluna for inserido com sucesso.

AINS( ), exemplo da função

O exemplo a seguir cria e preenche uma matriz com nomes de empresas e procura um nome de empresa específico na matriz. Se não for encontrado, o nome ausente será adicionado à matriz.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerSELECT company FROM customer ;

WHERE country = 'Germany' ;INTO ARRAY gaCompanies

gnCount = _TALLYgcName = 'Seven Seas Imports'CLEARDISPLAY MEMORY LIKE gaCompanies

IF ASCAN(gaCompanies, gcName) = 0 && Procura pela empresa*** Empresa não encontrada-adicione-a ***

DIMENSION gaCompanies[gnCount+1,1]= AINS(gaCompanies, gnCount+1)

gaCompanies[gnCount+1] = gcNameENDIFDISPLAY MEMORY LIKE gaCompanies

ALEN( ), função

Retorna o número de elementos, linhas ou colunas de uma matriz.

Sintaxe

ALEN(NomeMatriz [, nAtributoMatriz])

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica o nome da matriz. Se você incluir apenas o nome da matriz, ALEN( ) retornará o número de elementos da matriz.

nAtributoMatriz Determina se ALEN( ) retorna o número de elementos, linhas ou colunas da matriz, de acordo com os valores para nAtributoMatriz fornecidos a seguir:

0 Retorna o número de elementos da matriz. Omitir nAtributoMatriz equivale a especificar 0.1 Retorna o número de linhas da matriz.2 Retorna o número de colunas da matriz. Se a matriz for unidimensional, ALEN( ) retornará 0 (sem colunas).

ALEN( ), exemplo da função

O exemplo a seguir utiliza AFONT( ) para criar uma matriz contendo os nomes de todas as fontes disponíveis. ALEN( ) é utilizado para determinar o número de linhas na matriz. O nome de cada fonte é

[Pág.: 29]

Page 30: 74039361 Visual FoxPro Comandos e Funcoes

exibido, juntamente com um exemplo da fonte. Se houver mais de 10 fontes instaladas, somente as 10 primeiras serão exibidas.

CLEAR=AFONT(gaFontArray) && Matriz contendo nomes de fontegnNumFonts= ALEN(gaFontArray) && Número de fontesIF gnNumFonts > 10

gnNumFonts = 10 && Exibe as primeiras 10 fontesENDIF

FOR nCount = 1 TO gnNumFonts? ALLTRIM(gaFontArray(nCount)) && Exibe nome da fonte?? ' Este é um exemplo da fonte ' ;

+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8ENDFOR

ALLTRIM( ), função

Remove os espaços em branco do início e do final da expressão de caracteres especificada e retorna a expressão com os espaços removidos como uma seqüência de caracteres.

Sintaxe

ALLTRIM(cExpressão)

Tipos de retorno

Caractere

Argumentos

cExpressão Especifica a expressão de caracteres da qual serão retirados os espaços em branco iniciais e finais.

Comentários

ALLTRIM( ) pode ser utilizado para assegurar que os espaços em branco serão removidos dos dados inseridos pelo usuário.

ALLTRIM( ), exemplo da função

O exemplo a seguir utiliza AFONT( ) para criar uma matriz contendo os nomes de todas as fontes disponíveis. ALLTRIM( ) é utilizada para remover espaços iniciais e finais dos nomes de fonte. O nome de cada fonte com espaços removidos será exibido, juntamente com um exemplo da fonte. Se mais de 10 fontes estiverem instaladas, somente as 10 primeiras serão exibidas.

CLEAR=AFONT(gaFontArray) && Matriz contendo nomes de fontegnNumFonts= ALEN(gaFontArray) && Número de fontesIF gnNumFonts > 10

gnNumFonts = 10 && Exibe 10 primeiras fontesENDIF

FOR nCount = 1 TO gnNumFonts? ALLTRIM(gaFontArray(nCount)) && Exibe nome da fonte?? ' Isto é um exemplo de ' ;

+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8ENDFOR

[Pág.: 30]

Page 31: 74039361 Visual FoxPro Comandos e Funcoes

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 lExpressão][FIELDS ListaCampos]

Argumentos

NomeMatriz Especifica o nome da matriz que contém os dados que devem ser copiados para os novos registros. Novos registros são adicionados à tabela até que todas as linhas da matriz tenham sido incluídas.

FOR lExpressão Especifica uma condição para a inclusão de registros da matriz. lExpressão deve conter o nome de um campo de destino em sua expressão condicional.

Antes da inclusão de uma linha da matriz em um registro da tabela, o elemento de matriz correspondente ao campo de destino especificado em lExpressão é verificado para ver se corresponde à condição em lExpressão. Caso o elemento de matriz satisfaça a condição, será incluído um registro.

Caso o elemento de matriz não satisfaça a condição, a linha da matriz não será incluída e a linha seguinte será verificada para ver se corresponde à condição.

FIELDS ListaCampos Especifica que apenas os campos em ListaCampos serão atualizados a partir da matriz. O primeiro campo da lista será atualizado com o conteúdo do primeiro elemento da matriz, o segundo campo será atualizado com o segundo elemento, e assim sucessivamente.

Comentários

Campos dos tipos Memo e Geral são ignorados em APPEND FROM ARRAY. Quando uma tabela é aberta para uso compartilhado, APPEND FROM ARRAY bloqueia o cabeçalho da tabela enquanto os registros são adicionados.

Caso a matriz seja unidimensional, APPEND FROM ARRAY adicionará um registro à tabela. O conteúdo do primeiro elemento da matriz preenche o primeiro campo do registro recém-adicionado, o conteúdo do segundo elemento da matriz preenche o segundo campo do registro, e assim por diante.

Caso o número de elementos da matriz unidimensional seja maior do que o número de campos da tabela, os elementos adicionais serão ignorados. Caso o número de campos da tabela seja maior do que o número de elementos da matriz, os campos adicionais serão inicializados com o valor vazio padrão. A seguir, são apresentados os valores vazios padrão para cada tipo de campo:

Tipo de campo Valor padrão

Caractere EspaçosNumérico 0Moeda 0Flutuante 0Inteiro 0Duplo 0Data Data vazia (ex.: CTOD(''))DataHora DataHora vazia (ex.: CTOT(''))LógicoFalso (.F.)Memo Vazio (sem conteúdo)

[Pág.: 31]

Page 32: 74039361 Visual FoxPro Comandos e Funcoes

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 serão incluídos na tabela.

O conteúdo da primeira coluna da matriz preenche o primeiro campo dos registros recém-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 três colunas, os elementos da primeira coluna da matriz preencherão o primeiro campo de cada um dos quatro novos registros incluídos na tabela.

Caso o número de colunas da matriz bidimensional seja maior do que o número de campos da tabela, as colunas adicionais serão ignoradas. Caso o número de campos da tabela seja maior do que o número de colunas da matriz, os campos adicionais serão inicializados com valores vazios.

APPEND FROM ARRAY pode preencher um campo, mesmo que o tipo de dado do elemento da matriz correspondente não corresponda ao tipo de dado do campo, desde que os dados do elemento de matriz sejam compatíveis com o tipo de dado do campo correspondente. Caso os dados não sejam compatíveis, 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 tabelaCREATE TABLE Test FREE (Object C(10), Color C(16), SqFt n(6,2))SCATTER TO aNewRec BLANK && Cria uma nova matriz a partir da tabelaaNewRec[1]="Box" && Preenche a matrizaNewRec[2]="Red"aNewRec[3]=12.5APPEND FROM ARRAY aNewRec && Adiciona o registro contendo conteúdo 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 nPáginaCódigo]

Argumentos

NomeArquivo Especifica o nome do arquivo a partir do qual deve ser feita a inclusão. Se você não incluir uma extensão de nome de arquivo, será considerada uma tabela do Visual FoxPro e a extensão padrão .DBF. Se a tabela de origem da inclusão for do Visual FoxPro, os registros dessa tabela marcados para exclusão serão incluídos, desconsiderando a definição de SET DELETED.

? Exibe a caixa de diálogo Abrir, onde você pode selecionar uma tabela de origem para a inclusão.

[Pág.: 32]

Page 33: 74039361 Visual FoxPro Comandos e Funcoes

FIELDS ListaCampos Especifica para quais campos serão incluídos dados.

FOR lExpressão Inclui um novo registro para cada registro da tabela selecionada atualmente para o qual lExpressão resulte em verdadeiro (.T.). Os registros são incluídos até chegar ao fim desta tabela. Se você omitir FOR, o arquivo de origem inteiro será incluído na tabela.

TYPE Especifica o tipo do arquivo a partir do qual está sendo feita a inclusão. Embora seja necessário especificar um tipo de arquivo se o arquivo a partir do qual a inclusão estiver sendo feita não for uma tabela do Visual FoxPro, não será necessário incluir a palavra-chave TYPE. É possível fazer inclusões 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 inclusão não tiver a extensão padrão usual para esse tipo de arquivo, o nome do arquivo deverá incluir a respectiva extensão. Por exemplo, as planilhas do Microsoft Excel normalmente têm a extensão .XLS. Se a planilha do Excel a partir da qual você está fazendo inclusões tiver uma extensão diferente da extensão .XLS esperada, certifique-se de especificar essa extensão.

Observação Ao fazer inclusões a partir de uma planilha, os dados desta devem ser armazenados na ordem principal das linhas e não na ordem principal das colunas. Isso permite que os dados da planilha incluída correspondam à estrutura da tabela.

DELIMITED Especifica que o arquivo de origem dos dados a serem incluídos 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 alimentação de linha. Considera-se, como padrão, que os conteúdos do arquivo estão separados um do outro por vírgulas (não inclua espaços extras antes ou depois das vírgulas) e que os valores dos campos de caractere estão delimitados também por aspas. Por exemplo:

"Smith",9999999,"TELEFONE"

Considera-se que a extensão 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 padrão mm/dd/aa. A inclusão da parte da data relativa ao século é opcional. O Visual FoxPro importará uma data, como 12/25/95, que não inclui o século e irá considerar que a data está no século XX. Os delimitadores de data podem ser qualquer caractere não-numérico, exceto o delimitador que separa os campos no arquivo delimitado.

As datas em outros formatos poderão ser importadas se o seu formato corresponder a um formato de data disponível em SET DATE. Para importar datas que não estão no formato padrão, 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 aceitável para CTOD( ), ela será importada corretamente.

DELIMITED WITH Delimitador Indica que os campos de caractere estão delimitados por um caractere diferente de aspas.

DELIMITED WITH BLANK Especifica arquivos que contêm campos separados por espaços em vez de vírgulas.

DELIMITED WITH TAB Especifica arquivos que contêm campos separados por tabulações em vez de vírgulas.

DELIMITED WITH CHARACTER Delimitador Especifica os arquivos que contêm campos delimitados pelo caractere especificado com Delimitador. Se Delimitador for um ponto-e-vírgula (o caractere usado no Visual FoxPro para indicar a continuação da linha de comando), coloque o ponto-e-vírgula entre aspas. Você também pode especificar as palavras-chaves BLANK e TAB para Delimitador.

A cláusula WITH Delimitador pode ser combinada com a cláusula 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:

[Pág.: 33]

Page 34: 74039361 Visual FoxPro Comandos e Funcoes

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 extensão .DIF.

FW2 Inclua FW2 para importar dados de um arquivo criado pelo Framework II. Considera-se que os nomes de arquivos FW2 tenham a extensão .FW2.

MOD Inclua MOD para importar dados de um arquivo do Microsoft Multiplan versão 4.01. Os arquivos MOD são criados pelo Microsoft Multiplan versão 4.01, e considera-se que tenham a extensão .MOD.

PDOX Inclua PDOX para importar dados de um arquivo de banco de dados do Paradox versões 3.5 ou 4.0. Considera-se que os nomes de arquivos do Paradox tenham a extensão .DB.

RPD Inclua RPD para importar dados de um arquivo criado pelo RapidFile versão 1.2. Considera-se que os nomes de arquivos do RapidFile tenham a extensão .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 têm um comprimento fixo e terminam com um retorno de carro e uma alimentação de linha. Os campos não são delimitados. Considera-se que a extensão de arquivos SDF seja .TXT.

SYLK Inclua SYLK para importar dados de um arquivo de formato SYLK (Symbolic Link) de intercâmbio. Os arquivos SYLK são 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 não têm extensão.

WK1 Inclua WK1 para importar dados de uma planilha do Lotus 1-2-3 versão 2.x. Cada coluna da planilha torna-se um campo da tabela; cada linha da planilha torna-se um registro da tabela. Uma extensão de nome de arquivo .WK1 é atribuída a uma planilha criada pelo Lotus 1-2-3 revisão 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 extensão de nome de arquivo .WK3 é atribuída a uma planilha criada pelo Lotus 1-2-3 revisão 3.x.

WKS Inclua WKS para importar dados de uma planilha do Lotus 1-2-3 revisão 1-A. Cada coluna da planilha torna-se um campo da tabela; cada linha da planilha torna-se um registro da tabela. Uma extensão de nome de arquivo .WKS é atribuída a uma planilha criada pelo Lotus 1-2-3 revisão 1-A.

WR1 Inclua WR1 para importar dados de uma planilha do Lotus Symphony versão 1.1 ou 1.2. Cada coluna da planilha torna-se um campo da tabela, e cada linha torna-se um registro. Uma extensão de nome de arquivo .WR1 é atribuída a uma planilha criada pelo Symphony versões 1.1 ou 1.2.

WRK Inclua WRK para importar dados de uma planilha do Lotus Symphony versão 1.0. Cada coluna da planilha torna-se um campo da tabela, e cada linha torna-se um registro. Uma extensão de nome de arquivo .WRK é atribuída a uma planilha criada pelo Symphony versão 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 extensão .XLS é atribuída a nomes de arquivos de planilha criados pelo Microsoft Excel.

XL5 Inclua XL5 para importar dados do Microsoft Excel versão 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 têm a extensão .XLS.

AS nPáginaCódigo Especifica a página de código da tabela ou arquivo de origem. O Visual FoxPro copia o conteúdo da tabela ou arquivo de origem e, à medida que copia os dados, converte-os automaticamente na página de código da tabela atual.

[Pág.: 34]

Page 35: 74039361 Visual FoxPro Comandos e Funcoes

Se você especificar um valor para nPáginaCódigo que não seja suportado, o Visual FoxPro irá gerar uma mensagem de erro. Pode-se utilizar GETCP( ) como nPáginaCódigo para exibir a caixa de diálogo Página de código, que permite especificar uma página de código para a tabela ou arquivo incluído.

Se AS nPáginaCódigo for omitido e o Visual FoxPro não conseguir determinar a página de código da tabela ou arquivo de origem, ele copiará o conteúdo dessa tabela ou arquivo e, à medida que copia os dados, irá convertê-los automaticamente na página de código atual do Visual FoxPro. Se SET CPDIALOG estiver ativado (ON), a tabela na área de trabalho atualmente selecionada será marcada com uma página de código. Caso você esteja fazendo a inclusão a partir de uma tabela que não esteja marcada com uma página de código, a caixa de diálogo Página de código será exibida, permitindo que você selecione a página de código da tabela a partir da qual está fazendo a inclusão. A página de código atual do Visual FoxPro pode ser determinada com CPCURRENT( ).

Se AS nPáginaCódigo for omitido e o Visual FoxPro conseguir determinar a página de código da tabela ou do arquivo que está sendo incluído, ele copiará o conteúdo da tabela ou do arquivo incluído e, à medida que copia os dados, irá convertê-los automaticamente na página de código da tabela atualmente selecionada.

Se nPáginaCódigo for 0, o Visual FoxPro irá considerar que a página de código da tabela ou do arquivo que está sendo incluído é igual ao da tabela atualmente selecionada e não será feita nenhuma conversão para a página de código atual do Visual FoxPro.

Comentários

Se o arquivo do qual se faz a inclusão for uma tabela criada pelo Visual FoxPro ou por uma versão anterior do FoxPro, será considerada uma extensão .DBF. Se a tabela criada pelo Visual FoxPro ou por uma versão anterior do FoxPro não tiver a extensão .DBF, você deverá especificar a extensão. Caso o arquivo não seja uma tabela criada pelo Visual FoxPro ou por uma versão anterior do FoxPro, você deverá especificar o tipo de arquivo a partir do qual está fazendo a inclusão.

Antes de fazer uma inclusão 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 opção para converter o arquivo, selecione Sim.

Se você fizer a inclusão a partir de uma tabela criada pelo Visual FoxPro ou por uma versão anterior do FoxPro, essa tabela poderá ser aberta em uma outra área de trabalho. Os registros marcados para exclusão nessa tabela serão desmarcados após a sua inclusão.

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 Finlândia da tabela customer. Estes registros são copiados para um novo arquivo delimitado denominado TEMP.TXT.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerCOPY STRUCTURE TO backupUSE backupAPPEND FROM customer FOR country = 'Finlândia'COPY TO temp TYPE DELIMITEDMODIFY FILE temp.txtUSEDELETE FILE backup.dbfDELETE FILE temp.txt

APPEND MEMO, comando

Copia o conteúdo de um arquivo texto para um campo Memo.

[Pág.: 35]

Page 36: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

APPEND MEMO NomeCampoMemo FROM NomeArquivo[OVERWRITE] [AS nPáginaCódigo]Argumentos

NomeCampoMemo Especifica o nome do campo Memo no qual o arquivo é incluído.

FROM NomeArquivo Especifica o arquivo texto cujo conteúdo é copiado para o campo Memo. Você deve incluir o nome do arquivo texto inteiro, inclusive a extensão.

OVERWRITE Substitui o conteúdo atual do campo Memo pelo conteúdo do arquivo.

AS nPáginaCódigo Especifica a página de código do arquivo texto copiado para o campo Memo. O Visual FoxPro copia o conteúdo do arquivo texto e, à medida que copia os dados para o campo Memo, converte-os automaticamente da página de código especificada para a página de código da tabela que contém o campo Memo. Se a tabela que contém o campo Memo não estiver marcada com uma página de código, o Visual FoxPro converterá automaticamente os dados da página de código especificada para a página de código atual do Visual FoxPro.

Se você especificar um valor para nPáginaCódigo que não seja suportado, o Visual FoxPro irá gerar uma mensagem de erro. Você pode utilizar GETCP( ) em nPáginaCódigo para exibir a caixa de diálogo Página de código, que permite especificar uma página de código para a tabela ou o arquivo incluído.

Se você omitir a cláusula AS nPáginaCódigo ou especificar 0 para nPáginaCódigo, não haverá nenhuma conversão de página de código no arquivo texto.

Comentários

Todo o conteúdo do arquivo texto será incluído no conteúdo do campo Memo especificado no registro atual se a opção Overwrite for omitida.

APPEND MEMO, exemplo do comando

No exemplo a seguir, os conteúdos do campo Memo notes são copiados para um arquivo denominado TEST.TXT. TEST.TXT e incluídos no conteúdo do campo Memo. Finalmente, os conteúdos de TEST.TXT substituem o conteúdo atual do campo Memo.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE employee && Abre a tabela EmployeeWAIT WINDOW 'Observações de funcionários no campo Memo - pressione ESC' NOWAITMODIFY MEMO notes NOEDIT && Abre o campo Memo notesCOPY MEMO notes TO test.txt && Cria o arquivo de teste a partir do campo MemoWAIT WINDOW 'Arquivos texto TEST.TXT - pressione ESC' NOWAITMODIFY FILE test.txt NOEDIT && Abre o arquivo texto WAIT WINDOW 'Observações de funcionários agora acrescentadas- pressione ESC' NOWAIT

APPEND MEMO notes FROM test.txt && Adiciona conteúdo do arquivo textoMODIFY MEMO notes NOEDIT && Exibe campo Memo novamenteWAIT WINDOW 'Sobrescreve observações de funcionário- pressione ESC' NOWAITAPPEND MEMO notes FROM test.txt OVERWRITE && Substitui notesMODIFY MEMO notes NOEDIT NOWAITDELETE FILE test.txt

APPEND PROCEDURES, comando

Inclui procedimentos armazenados em um arquivo texto nos procedimentos armazenados no banco de dados atual.

[Pág.: 36]

Page 37: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

APPEND PROCEDURES FROM NomeArquivo[AS nPáginaCódigo] [OVERWRITE]

Argumentos

NomeArquivo Especifica o nome de um arquivo texto a partir do qual os procedimentos armazenados são incluídos.

AS nPáginaCódigo Especifica a página de código do arquivo texto a partir do qual os procedimentos armazenados são incluídos. O Visual FoxPro copia o conteúdo do arquivo texto e, ao fazer isso, converte-o automaticamente na página de código especificada.

Se você especificar um valor para nPáginaCódigo que não seja suportado, o Visual FoxPro irá gerar uma mensagem de erro. Pode-se utilizar GETCP( ) em nPáginaCódigo para exibir a caixa de diálogo Página de código, que permite especificar uma página de código para o arquivo texto a partir do qual os procedimentos armazenados são incluídos.

Se você omitir AS nPáginaCódigo, o Visual FoxPro copiará o conteúdo do arquivo texto a partir do qual os procedimentos armazenados são incluídos e, ao fazer isso, irá convertê-lo automaticamente na página de código atual do Visual FoxPro. Para determinar a página de código atual do Visual FoxPro, utilize CPCURRENT( ).

Se nPáginaCódigo for 0, o Visual FoxPro irá considerar que a página de código do arquivo texto, a partir do qual os procedimentos armazenados são incluídos, é a mesma página de código do banco de dados atual, não ocorrendo nenhuma conversão para a página de código atual do Visual FoxPro.

OVERWRITE Especifica que os procedimentos atuais armazenados no banco de dados são sobrescritos pelos do arquivo texto. Se você omitir OVERWRITE, os procedimentos atuais armazenados no banco de dados não serão sobrescritos e os procedimentos armazenados no arquivo texto serão incluídos nos procedimentos já armazenados.

Comentários

Utilize o comando APPEND PROCEDURES para modificar procedimentos armazenados em um banco de dados utilizando a linguagem de programação. Um banco de dados deverá estar aberto e ativo quando APPEND PROCEDURES for emitido; caso contrário, 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 temporária, 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 temporário denominado MYTEMP.TXT, que contém o conteúdo do campo Memo.APPEND PROCEDURES é utilizado para incluir o procedimento armazenado do arquivo texto temporário no banco de dados. DISPLAY PROCEDURES exibe os procedimentos armazenados no banco de dados e, em seguida, a tabela e o arquivo texto temporários são apagados.

Observação: Para exibir ou editar procedimentos armazenados por meio da interface do usuário, utilize o Criador de bancos de dados.

CLOSE DATABASES* Abre o banco de dados testdataOPEN DATABASE SYS(2004)+"\samples\data\testdata"

* Cria uma tabela livre, temporária com um campo Memo denominado mProcedureCREATE TABLE mytable FREE (mProcedure M)APPEND BLANK && Adiciona um registro em branco a mytable

* Adiciona o comando PROCEDURE, nome e retorno de carro /alimentação de linha ao

[Pág.: 37]

Page 38: 74039361 Visual FoxPro Comandos e Funcoes

* campo MemoREPLACE mProcedure WITH "PROCEDURE MyProcedure" + CHR(13) + CHR(10)

* Copia o conteúdo do campo Memo para um arquivo temporárioCOPY MEMO mProcedure TO mytemp.txtUSE && Fecha a tabela temporária

APPEND PROCEDURES FROM mytemp.txt && Copia o procedimento para o banco de dadosCLEAR

* Exibe os procedimentos associados com o banco de dados atualDISPLAY PROCEDURESDELETE FILE mytable.dbf && Apaga a tabela temporáriaDELETE FILE mytable.fpt && Apaga o arquivo memo da tabela temporáriaDELETE FILE mytemp.txt && Apaga o arquivo texto temporário

APPEND, comando

Adiciona um ou mais registros novos ao fim de uma tabela.

Sintaxe

APPEND [BLANK][IN nÁreaTrabalho | cAliasTabela][NOMENU]

Argumentos

BLANK Adiciona um registro em branco ao fim da tabela atual. O Visual FoxPro não abre uma janela de edição quando você emite APPEND BLANK.

Você pode editar o novo registro com BROWSE, CHANGE ou EDIT.

IN nÁreaTrabalho Especifica a área de trabalho da tabela na qual um novo registro será incluído.

IN cAliasTabela Especifica o alias da tabela na qual um novo registro será incluído.

Se você omitir nÁreaTrabalho e cAliasTabela, um novo registro será incluído na tabela na área de trabalho selecionada no momento. Se você emitir APPEND, um registro em branco será adicionado à tabela especificada com nÁreaTrabalho ou cAliasTabela e a tabela será automaticamente selecionada. Se você emitir APPEND BLANK, um registro em branco será adicionado à tabela especificada com nÁreaTrabalho ou cAliasTabela e a tabela não será selecionada.

NOMENU Especifica que o título do menu Tabela será removido da barra de menus do sistema, evitando alterações no formato da janela de edição.

Comentários

Quando você emite APPEND ou APPEND BLANK e uma tabela não está aberta na área de trabalho selecionada no momento, a caixa de diálogo Abrir é exibida, de forma que você possa escolher uma tabela na qual inclua registros.

APPEND abre uma janela de edição 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

[Pág.: 38]

Page 39: 74039361 Visual FoxPro Comandos e Funcoes

O exemplo a seguir utiliza APPEND BLANK para criar uma tabela com 10 registros contendo valores aleatórios e, em seguida, exibe os valores máximo e mínimo na tabela.

CLOSE DATABASESCREATE TABLE Random (cValue N(3))FOR nItem = 1 TO 10 && Inclui 10 registros

APPEND BLANKREPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatórios

ENDFOR

CLEARLIST && Exibe os valoresgnMaximum = 1 && Inicializa valor mínimognMinimum = 100 && Inicializa valor máximoSCAN

gnMinimum = MIN(gnMinimum, cValue)gnMaximum = MAX(gnMaximum, cValue)

ENDSCAN? 'O valor mínimo é: ', gnMinimum && Exibe valor mínimo? 'O valor máximo é: ', gnMaximum && Exibe valor máximo

APRINTERS( ), função

Coloca os nomes das impressoras atualmente instaladas no Gerenciador de Impressão do Windows em uma matriz de memória.

Sintaxe

APRINTERS(NomeMatriz)

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica o nome da matriz que contém os nomes das impressoras instaladas e suas portas. Se a matriz incluída não existir, o Visual FoxPro irá criá-la automaticamente. Se a matriz existir e não for grande o suficiente para conter todas as informações sobre as impressoras, o Visual FoxPro aumentará automaticamente o tamanho da matriz para que comporte as informações. Caso a matriz seja maior do que o necessário, 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 não existir e APRINTERS( ) retornar 0, a matriz não será criada.

Comentários

A função APRINTERS( ) cria uma matriz bidimensional. A primeira coluna da matriz contém os nomes das impressoras atualmente instaladas e a segunda coluna contém as portas às quais as impressoras estão conectadas.

APRINTERS( ) retorna o número de impressoras instaladas. Caso nenhuma impressora esteja instalada, ela retornará 0.

O Visual FoxPro obtém os nomes das impressoras instaladas e suas portas no Windows. No entanto, o Visual FoxPro não verifica se as impressoras estão de fato conectadas à máquina.

[Pág.: 39]

Page 40: 74039361 Visual FoxPro Comandos e Funcoes

APRINTERS( ), exemplo da função

O exemplo a seguir utiliza APRINTERS( ) para criar uma matriz denominada gaPrinters que contém os nomes e as portas das impressoras instaladas. Em seguida, as impressoras e suas portas são 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 FoxProDISPLAY MEMORY LIKE gaPrinters && Exibe as impressoras e portas

ELSE && Caso contrário, Nenhuma impressora instaladaWAIT WINDOW ' Nenhuma impressora instalada.'

ENDIF

ASC( ), função

Retorna o valor ANSI para o caractere mais à esquerda em uma expressão de caracteres.

Sintaxe

ASC(cExpressão)

Tipos de retorno

Numérico

Argumentos

cExpressão Especifica a expressão de caracteres que contém o caractere cujo valor ANSI é retornado por ASC( ). Qualquer caractere após o primeiro caractere em cExpressão será ignorado por ASC( ).

Comentários

ASC( ) retorna a posição do caractere na tabela de caracteres da página de código atual. Cada caractere tem um valor ANSI exclusivo no intervalo de 0 a 255.

ASC( ), exemplo da função

O exemplo a seguir exibe os caracteres A a J e utiliza ASC( ) para exibir seus valores ANSI correspondentes.

STORE 'ABCDEFGHIJ' TO gcANSI && 10 caracteresCLEARFOR nCOUNT = 1 TO 10

? SUBSTR(gcANSI, nCount,1) && Exibe um caractere?? ASC(SUBSTR(gcANSI, nCount)) && Exibe o valor ANSI

ENDFOR

ASCAN( ), função

Procura em uma matriz um elemento que contenha os mesmos dados e o mesmo tipo de dado de uma expressão.

Sintaxe

ASCAN(NomeMatriz, eExpressão [, nElementoInicial [, nElementosProcurados]])

Tipos de retornoNuméricoArgumentos

[Pág.: 40]

Page 41: 74039361 Visual FoxPro Comandos e Funcoes

NomeMatriz Especifica o nome da matriz na qual será feita a procura.

eExpressão Especifica a expressão geral a ser procurada.

nElementoInicial Especifica o número do elemento em que a procura irá começar. O número do elemento especificado será incluído na procura. Se você omitir nElementoInicial, a procura será feita, como padrão, na matriz inteira.

nElementosProcurados Especifica o número de elementos em que será feita a procura. Se você omitir nElementoInicial e nElementosProcurados, a procura terá início no primeiro elemento da matriz e continuará até o último elemento.

Observação Você pode referir-se a um elemento de uma matriz de variável bidimensional de duas maneiras. O primeiro método utiliza dois índices para especificar a posição do elemento na matriz em termos de linha e coluna; o outro método utiliza um número de elemento. Esta função e outras que manipulam matrizes bidimensionais exigem números de elementos (nElementoInicial e nElementosProcurados). Utilize AELEMENT( ) para retornar o número do elemento a partir de índices de linha e coluna em uma matriz bidimensional.

Comentários

Caso seja localizada uma correspondência, ASCAN( ) retornará o número do elemento que contém a expressão. Caso contrário, ASCAN( ) retornará 0.

Os critérios para uma correspondência bem-sucedida de dados de caractere são determinados pela definição de SET EXACT. Se SET EXACT estiver ativado (ON), um elemento deverá corresponder ao caractere da expressão de procura e ter o mesmo comprimento. Caso SET EXACT esteja desativado (OFF) e haja uma correspondência entre um elemento e a expressão de procura até o final da expressão, a correspondência será bem-sucedida. Para obter maiores informações sobre critérios de correspondência para seqüências de caracteres, consulte a tabela de comparação de seqüências no tópico ” SET EXACT”.

ASCAN( ), exemplo da função

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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerSELECT company FROM customer ;

WHERE country = 'UK' ;INTO ARRAY gaCompanies

gnCount = _TALLYgcName = 'Seven Seas Imports'CLEARDISPLAY MEMORY LIKE gaCompanies*gnPos = ASCAN(gaCompanies, gcName) && Procura pela empresaIF gnPos != 0

*** Empresa encontrada, remova-a da matriz ***= ADEL(gaCompanies, gnPos)gnCount = gnCount - 1

ENDIFDISPLAY MEMORY LIKE gaCompanies

ASIN( ), função

Retorna em radianos o arco seno de uma expressão numérica.

[Pág.: 41]

Page 42: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

ASIN(nExpressão)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica a expressão numérica cujo arco seno é retornado por ASIN( ). O valor de nExpressão 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 número de casas decimais na exibição do resultado pode ser especificado com SET DECIMALS.

Comentários

Utilize RTOD( ) para converter radianos em graus.

ASIN( ), exemplo da função

CLEAR? RTOD(ASIN(0)) && Retorna 0.00STORE 1 to gnArcAngle? RTOD(ASIN(gnArcAngle)) && Retorna 90.00? RTOD(ASIN(SQRT(2)/2)) && Retorna 45.00

ASORT( ), função

Classifica os elementos de uma matriz em ordem ascendente ou descendente.

Sintaxe

ASORT(NomeMatriz [, nElementoInicial [, nNúmeroClassificados [, nOrdemClassificação]]])

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica o nome da matriz a ser classificada.

nElementoInicial Especifica o elemento inicial da classificação. Se você omitir nElementoInicial, a matriz será classificada, como padrão, a partir do primeiro elemento. Se a matriz for unidimensional, a classificação incluirá nElementoInicial. Se ela for bidimensional, o elemento inicial nElementoInicial determinará a linha em que a classificação irá começar e a coluna que determina a ordem de classificação das linhas.

Observação Você pode referir-se a um elemento de uma matriz bidimensional de duas maneiras. O primeiro método utiliza dois índices para especificar a posição do elemento na matriz em termos de linha e coluna; o outro método utiliza um número de elemento. Esta função e outras que manipulam matrizes bidimensionais exigem números de elementos (em ASORT( ), as expressões numéricas nElementoInicial e nNúmeroClassificados). Você pode utilizar AELEMENT( ) para retornar o número 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 são classificadas. Uma matriz pequena denominada gaArray é criada e classificada duas vezes. A primeira classificação começa no primeiro elemento de gaArray e as linhas são

[Pág.: 42]

Page 43: 74039361 Visual FoxPro Comandos e Funcoes

classificadas com base nos valores contidos na primeira coluna da matriz. A segunda classificação começa no quarto elemento de gaArray e as linhas são classificadas com base nos valores contidos na segunda coluna.

A primeira classificação começa na primeira linha. A segunda começa na segunda linha. Você pode utilizar DISPLAY MEMORY para exibir o conteúdo da matriz; nestes exemplos, são utilizadas tabelas para exibir graficamente os resultados das classificações.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 aparência a seguir:

Coluna 1 Coluna 2

Linha 1 G ALinha 2 C ZLinha 3 B N

Em seguida, ASORT( ) classifica a matriz a partir do primeiro elemento (1,1) da mesma. Os elementos da primeira coluna são colocados em ordem ascendente por meio de uma reorganização das linhas da matriz.

=ASORT(gaArray,1)

Observe a nova ordem das linhas:

Coluna 1 Coluna 2

Linha 1 B NLinha 2 C ZLinha 3 G A

Em seguida, a matriz é classificada a partir do seu quarto elemento (2,2). Os elementos na segunda coluna são colocados em ordem por meio de uma reorganização das linhas da matriz.

=ASORT(gaArray,4)

Observe a diferença na ordem das linhas:

Coluna 1 Coluna 2

Linha 1 B NLinha 2 G ALinha 3 C ZnNúmeroClassificados Especifica o número de elementos classificados em uma matriz unidimensional ou o número de linhas classificadas em uma matriz bidimensional. Por exemplo, se a matriz for unidimensional e nElementoInicial for 2, indicando que a classificação começa no segundo elemento da matriz, e nNúmeroClassificados for 3, indicando que a classificação deve incluir três elementos, o segundo, o terceiro e o quarto elementos da matriz serão classificados. Se nNúmeroClassificados for –1 ou for omitido, todos os elementos da matriz, a partir do elemento inicial nElementoInicial até o último elemento, serão classificados.Se a matriz for bidimensional, nNúmeroClassificados designará o número de linhas que devem ser classificadas, a partir da linha que contém o elemento inicial nElementoInicial. Por exemplo, se nElementoInicial for 2 e nNúmeroClassificados for 3, a linha que contém o segundo elemento de matriz e as duas linhas seguintes serão classificadas. Se nNúmeroClassificados for –1 ou for omitido, todas as linhas da matriz, a partir da linha que contém o elemento inicial nElementoInicial até a última linha, serão classificadas.

[Pág.: 43]

Page 44: 74039361 Visual FoxPro Comandos e Funcoes

nOrdemClassificação Especifica a ordem de classificação (ascendente ou descendente) dos elementos da matriz. Como padrão, os elementos de matriz são classificados em ordem ascendente. Se nOrdemClassificação for 0 ou for omitida, os elementos de matriz serão classificados em ordem ascendente. Se nOrdemClassificação for 1 ou qualquer valor diferente de zero, os elementos de matriz serão classificados em ordem descendente.

Comentários

Todos os elementos incluídos na classificação devem ter o mesmo tipo de dados. As matrizes unidimensionais são classificadas pelos seus elementos; as matrizes bidimensionais são 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 classificação for bem-sucedida, será retornado 1; caso contrário, será retornado –1.

ASORT( ), exemplo da função

O exemplo a seguir copia o campo contact da tabela customer para uma matriz denominada gaContact. Os primeiros 20 contatos na matriz são exibidos, a matriz é classificada e os contatos são exibidos novamente na ordem de classificação.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE Customer && Abre a tabela de clientes

COUNT TO gnCount && Número de contatosDIMENSION gaContact(gnCount,1) && Cria uma matriz de contatosCOPY TO ARRAY gaContact FIELD contact && Preenche a matriz

CLEAR? 'Contact names:'?FOR nCount = 1 TO 20

? gaContact(nCount) && Exibe os 20 primeiros contatosENDFOR= ASORT(gaContact) && Classifica a matriz

?? 'Sorted Contact names:'

?FOR nCount = 1 TO 20

? gaContact(nCount) && Exibe os 20 primeiros contatos, classificadosENDFOR

ASSERT, comando

Exibe uma caixa de mensagem quando uma expressão lógica é avaliada como falsa (.F.).

Sintaxe

ASSERT lExpressão [MESSAGE cTextoMensagem]

Argumentos

[Pág.: 44]

Page 45: 74039361 Visual FoxPro Comandos e Funcoes

lExpressão Especifica a expressão lógica que é avaliada. Se lExpressão resultar em um falso (.F.) lógico, uma caixa de diálogo de depuração será exibida. Se lExpressão resultar em um verdadeiro (.T.) lógico, a caixa de diálogo não será exibida.

cTextoMensagem Especifica o texto exibido na caixa de diálogo de depuração. Se você omitir cTextoMensagem, o texto padrão será exibido, indicando o número da linha na qual a declaração falhou e o procedimento contendo a declaração.Comentários

Esse comando será ignorado se o comando SET ASSERTS for definido como OFF.

A caixa de mensagem contém os botões Cancelar, Depurar, Ignorar e Ignorar todos. A tabela a seguir descreve a ação executada quando cada botão é selecionado.

Botão Ação

Depurar A execução do programa é suspensa e a janela Depurar é exibida com a janela Rastrear ativa.Cancelar A execução do programa é encerrada.IgnorarA execução do programa continua com a linha após o comando ASSERT.Ignorar Todos A execução do programa continua com a linha após o comando ASSERT e ASSERTS é definido como OFF. Os comandos ASSERT subseqüentes serão ignorados até que ASSERTS seja definido como ON.

ASUBSCRIPT( ), função

Retorna o índice de linha ou coluna de um elemento a partir do número do elemento.

Sintaxe

ASUBSCRIPT(NomeMatriz, nNúmeroElemento, nÍndice)

Tipos de retorno

Numérico

Argumentos

NomeMatriz Especifica o nome da matriz.

nNúmeroElemento Especifica o número do elemento.

nÍndice Determina se é retornado o índice de linha ou coluna.

Se a matriz for unidimensional, inclua o número do elemento em nNúmeroElemento e 1 em nÍndice. ASUBSCRIPT( ) retorna nNúmeroElemento de forma idêntica.

Se a matriz for bidimensional, você deve incluir o número do elemento nNúmeroElemento e um valor 1 ou 2 em nÍndice. A especificação de 1 em nÍndice retorna o índice de linha do elemento, e a especificação de 2 retorna o índice de coluna.

Para obter maiores informações sobre como fazer referência a elementos de uma matriz, consulte ” DIMENSION”.

Comentários

Você pode referir-se a elementos de matrizes de variável bidimensionais de duas maneiras. O primeiro método utiliza dois índices para especificar a posição do elemento na matriz em termos de linha e coluna. O segundo método utiliza um número de elemento. Utilize ASUBSCRIPT( ) para obter o índice de linha ou coluna de um elemento a partir do número do elemento.

[Pág.: 45]

Page 46: 74039361 Visual FoxPro Comandos e Funcoes

No exemplo a seguir, é criada uma matriz com duas linhas e três colunas. DISPLAY MEMORY exibe o conteúdo dos elementos da matriz listados na ordem dos números dos elementos.

DIMENSION gaMyArray(2,3)DISPLAY MEMORY LIKE gaMyArrayGAMYARRAY Pub A ( 1, 1) L .F. (elemento número 1) ( 1, 2) L .F. (elemento número 2) ( 1, 3) L .F. (elemento número 3) ( 2, 1) L .F. (elemento número 4) ( 2, 2) L .F. (elemento número 5) ( 2, 3) L .F. (elemento número 6)

Os dois comandos abaixo armazenam a seqüência de caracteres INVOICE no mesmo elemento de matriz:

STORE 'INVOICE' TO gaMyArray(2, 1)STORE 'INVOICE' TO gaMyArray(4)

Em matrizes unidimensionais, o número de um elemento é idêntico ao seu índice de linha único. Não é necessário utilizar ASUBSCRIPT( ) com matrizes unidimensionais.

AT( ), função

Retorna a posição numérica inicial da primeira ocorrência de uma expressão de caracteres ou campo Memo dentro de uma outra expressão de caracteres ou campo Memo, contando a partir do caractere mais à esquerda.

Sintaxe

AT(cExpressãoProcurada, cExpressãoPesquisada [, nOcorrência])

Tipos de retorno

Numérico

Argumentos

cExpressãoProcurada Especifica a expressão de caracteres que AT( ) procura em cExpressãoPesquisada.

cExpressãoPesquisada Especifica a expressão de caracteres que a cExpressãoProcurada procura.

Tanto cExpressãoProcurada como cExpressãoPesquisada podem ser campos Memo de qualquer tamanho.

nOcorrência Especifica qual ocorrência (primeira, segunda, terceira e assim por diante) da cExpressãoProcurada é procurada na cExpressãoPesquisada. Como padrão, AT( ) procura a primeira ocorrência da cExpressãoProcurada (nOcorrência = 1). A inclusão de nOcorrência permite que você procure ocorrências adicionais da cExpressãoProcurada na cExpressãoPesquisada. AT( ) retornará 0 se nOcorrência for maior do que o número de vezes que a cExpressãoProcurada ocorre na cExpressãoPesquisada.

Comentários

AT( ) procura a primeira ocorrência da primeira expressão de caracteres na segunda expressão de caracteres. Em seguida, retorna um inteiro que indica a posição do primeiro caractere na expressão de caracteres localizada. Caso a expressão de caracteres não seja localizada, AT( ) retornará 0.

A procura executada por AT( ) considera maiúsculas/minúsculas. Para executar uma procura que não considere maiúsculas/minúsculas, utilize ATC( ).

[Pág.: 46]

Page 47: 74039361 Visual FoxPro Comandos e Funcoes

AT( ), exemplo da função

STORE 'Agora é a hora da verdade' TO gcStringSTORE 'é a' TO gcFindStringCLEAR? AT(gcFindString,gcString) && Exibe 5STORE 'É' TO gcFindString? AT(gcFindString,gcString) && Exibe 0, considera maiúsculas/minúsculas

AT_C( ), função

Retorna a posição numérica inicial da primeira ocorrência de uma expressão de caracteres ou campo Memo dentro de uma outra expressão de caracteres ou campo Memo, contando a partir do caractere mais à esquerda.

Sintaxe

AT_C(cExpressãoProcurada, cExpressãoPesquisada [, nOcorrência])

Tipos de retornoNumérico

Argumentos

cExpressãoProcurada Especifica a expressão de caracteres que AT_C( ) procura em cExpressãoPesquisada.

CExpressãoPesquisada Especifica a expressão de caracteres que a cExpressãoProcurada procura.

Tanto a cExpressãoProcurada como a cExpressãoPesquisada podem ser campos Memo de qualquer tamanho.

nOcorrência Especifica qual ocorrência (primeira, segunda, terceira e assim por diante) da cExpressãoProcurada é procurada na cExpressãoPesquisada. Como padrão, AT_C( ) procura a primeira ocorrência da cExpressãoProcurada (nOcorrência = 1). A inclusão de nOcorrência permite que você procure ocorrências adicionais de cExpressãoProcurada em cExpressãoPesquisada. AT_C( ) retornará 0 se nOcorrência for maior do que o número de vezes que a cExpressãoProcurada ocorre na cExpressãoPesquisada.

Comentários

AT_C( ) procura a primeira ocorrência da primeira expressão de caracteres na segunda expressão de caracteres. Em seguida, retorna um inteiro que indica a posição do primeiro caractere na expressão de caracteres localizada. Caso a expressão de caracteres não seja localizada, AT_C( ) retornará 0.

AT_C( ) foi criada para expressões que contêm caracteres de byte duplo. Se a expressão contiver apenas caracteres de byte único, AT_C( ) será equivalente a AT( ).

A procura executada por AT_C( ) considera maiúsculas/minúsculas. Para executar uma procura que não considere maiúsculas/minúsculas, utilize ATCC( ).

ATAN( ), função

Retorna em radianos o arco tangente de uma expressão numérica.

Sintaxe

ATAN(nExpressão)

Tipos de retorno

[Pág.: 47]

Page 48: 74039361 Visual FoxPro Comandos e Funcoes

Numérico

Argumentos

nExpressão Especifica uma expressão numérica cujo arco tangente é retornado por ATAN( ). nExpressão pode ser qualquer valor. O valor retornado por ATAN( ) pode variar de –pi/2 a +pi/2 (–1,57079 a 1,57079). O número de casas decimais exibidas no valor retornado por ATAN( ) é determinado por SET DECIMALS.

Comentários

Utilize RTOD( ) para converter radianos em graus.

ATAN( ), exemplo da função

CLEAR? ATAN(0) && Exibe 0.00STORE PI( )/2 to gnAngle? ATAN(gnAngle) && Exibe 1.00? ATAN(PI( )/2) && Exibe 1.00? ATAN(DTOR(90)) && Exibe 1.00

ATC( ), função

Retorna a posição numérica inicial da primeira ocorrência de uma expressão de caracteres ou campo Memo dentro de uma outra expressão de caracteres ou campo Memo, sem considerar maiúsculas/minúsculas nas duas expressões.

Sintaxe

ATC(cExpressãoProcurada, cExpressãoPesquisada [, nOcorrência])

Tipos de retorno

Numérico

Argumentos

cExpressãoProcurada Especifica a expressão de caracteres que ATC( ) procura em cExpressãoPesquisada.

cExpressãoPesquisada Especifica a expressão de caracteres que a cExpressãoProcurada procura.

Tanto a cExpressãoProcurada como a cExpressãoPesquisada podem ser campos Memo de qualquer tamanho.

nOcorrência Especifica qual ocorrência (primeira, segunda, terceira e assim por diante) da cExpressãoProcurada será procurada na cExpressãoPesquisada. Como padrão, ATC( ) procura a primeira ocorrência da cExpressãoProcurada (nOcorrência = 1). A inclusão de nOcorrência permite que você procure ocorrências adicionais da cExpressãoProcurada na cExpressãoPesquisada.

Comentários

ATC( ) procura a ocorrência da primeira expressão de caracteres na segunda expressão de caracteres, sem considerar maiúsculas/minúsculas nas duas expressões. Utilize AT( ) para executar uma procura que considere maiúsculas/minúsculas.

ATC( ) retorna um inteiro correspondente à posição em que o primeiro caractere da expressão de caracteres foi localizado. Se a expressão de caracteres não for localizada, ATC( ) retornará 0.

[Pág.: 48]

Page 49: 74039361 Visual FoxPro Comandos e Funcoes

ATC( ), exemplo da função

STORE ' Agora é a hora da verdade ... ' TO gcStringSTORE 'É A' TO gcFindStringCLEAR? ATC(gcFindString, gcString) && Exibe 5STORE 'é' TO gcFindString? ATC(gcFindString, gcString) && Exibe 5? ATC('now',gcString) && Exibe 1

ATCC( ), função

Retorna a posição numérica inicial da primeira ocorrência de uma expressão de caracteres ou campo Memo dentro de outra expressão de caracteres ou campo Memo, sem considerar maiúsculas/minúsculas nas duas expressões.

Sintaxe

ATCC(cExpressãoProcurada, cExpressãoPesquisada [, nOcorrência])contact

Tipos de retorno

Numérico

Argumentos

cExpressãoProcurada Especifica a expressão de caracteres que ATCC( ) procura em cExpressãoPesquisada.

cExpressãoPesquisada Especifica a expressão de caracteres que a cExpressãoProcurada procura.

Tanto a cExpressãoProcurada como a cExpressãoPesquisada podem ser campos Memo de qualquer tamanho.

nOcorrência Especifica qual ocorrência (primeira, segunda, terceira e assim por diante) da cExpressãoProcurada será procurada na cExpressãoPesquisada. Como padrão, ATCC( ) procura a primeira ocorrência da cExpressãoProcurada (nOcorrência = 1). A inclusão de nOcorrência permite que você procure ocorrências adicionais da cExpressãoProcurada na cExpressãoPesquisada.

Comentários

ATCC( ) foi criada para expressões que contêm caracteres de byte duplo. Se a expressão contiver apenas caracteres de byte único, ATCC( ) será equivalente a ATC( ).

ATCC( ) procura a ocorrência da primeira expressão de caracteres na segunda expressão de caracteres, sem considerar maiúsculas/minúsculas nas duas expressões. Utilize AT_C( ) para executar uma procura que considere maiúsculas/minúsculas.

ATCC( ) retorna um inteiro correspondente à posição em que o primeiro caractere da expressão de caracteres foi localizado. Caso a expressão de caracteres não seja localizada, ATCC( ) retornará 0.

ATCLINE( ), função

Retorna o número da linha da primeira ocorrência de uma expressão de caracteres ou campo Memo dentro de uma outra expressão de caracteres ou campo Memo, sem considerar maiúsculas/minúsculas nas duas expressões.

Sintaxe

ATCLINE(cExpressãoProcurada, cExpressãoPesquisada)

Tipos de retorno

[Pág.: 49]

Page 50: 74039361 Visual FoxPro Comandos e Funcoes

Numérico

Argumentos

cExpressãoProcurada Especifica a expressão de caracteres que ATCLINE( ) procura em cExpressãoPesquisada.

cExpressãoPesquisada Especifica a expressão de caracteres que a cExpressãoProcurada procura.Tanto a cExpressãoProcurada como a cExpressãoPesquisada podem ser campos Memo de qualquer tamanho. Utilize MLINE( ) para retornar a linha que contém a expressão de caracteres correspondente.

Dica ATCLINE( ) oferece um método conveniente para pesquisar em campos Memo.Comentários

Se a procura for bem-sucedida, ATCLINE( ) retornará o número da linha que contém a primeira expressão de caracteres. Caso contrário, ATCLINE( ) retornará 0.

O número de linha retornado por ATCLINE( ) é determinado pelo valor de SET MEMOWIDTH, mesmo que a cExpressãoPesquisada não seja um campo Memo. Para obter maiores informações, consulte ” SET MEMOWIDTH” na Ajuda.

Utilize ATLINE( ) para executar uma procura que considere maiúsculas/minúsculas.

ATCLINE( ), exemplos da função

O exemplo 1 localiza a primeira ocorrência de uma seqüência de caracteres em um campo Memo e exibe o nome e o sobrenome do funcionário, e a linha do memo contendo a seqüência de caracteres.O exemplo 2 demonstra como a largura do Memo afeta ATCLINE( ).

* Example 1CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE employee && Abre tabela a employee

CLEARSTORE 'JAPANESE' TO gcFindString && Não considera maiúsculas/minúsculasLOCATE FOR ATCLINE(gcFindString, notes) != 0? First_Name?? Last_Name? MLINE(notes, ATCLINE(gcFindString, notes))

* Example 2STORE '1234567890ABCDEFGHIJ' TO gcStringSET MEMOWIDTH TO 20? ATCLINE('AB', gcString) && Exibe 1

SET MEMOWIDTH TO 10? ATCLINE('AB', gcString) && Exibe 2

ATLINE( ), função

Retorna o número da linha da primeira ocorrência de uma expressão de caracteres ou campo Memo dentro de uma outra expressão de caracteres ou campo Memo, contando a partir da primeira linha.

Sintaxe

ATLINE(cExpressãoProcurada, cExpressãoPesquisada)

Tipos de retorno

Numérico

Argumentos

[Pág.: 50]

Page 51: 74039361 Visual FoxPro Comandos e Funcoes

cExpressãoProcurada Especifica a expressão de caracteres que o Visual FoxPro procura em cExpressãoPesquisada.

cExpressãoPesquisada Especifica a expressão de caracteres que a cExpressãoProcurada procura.

Tanto a cExpressãoProcurada como a cExpressãoPesquisada podem ser campos Memo de qualquer tamanho.

Utilize MLINE( ) para retornar a linha que contém a expressão de caracteres correspondente como uma seqüência de caracteres.

Dica ATLINE( ) oferece um método conveniente de procura de campos Memo.Comentários

ATLINE( ) procura a ocorrência da primeira expressão de caracteres na segunda expressão de caracteres, sem considerar maiúsculas/minúsculas em ambas expressões. Utilize ATCLINE( ) para executar uma procura que não considere maiúsculas/minúsculas.

Se a procura for bem-sucedida, ATLINE( ) retornará o número da linha em que ocorre a correspondência. Caso contrário, ATLINE( ) retornará 0.

O número de linha retornado por ATLINE( ) é determinado pelo valor de SET MEMOWIDTH, mesmo que a cExpressãoPesquisada não seja um campo Memo. Para obter maiores informações, consulte ” SET MEMOWIDTH” na Ajuda.

ATLINE( ), exemplos da função

O exemplo 1 localiza a primeira ocorrência de uma seqüência de caracteres em um campo Memo e exibe o nome e o sobrenome do funcionário, e a linha do memo contendo a seqüência de caracteres.O exemplo 2 demonstra como a largura do memo afeta ATLINE( ).

* Example 1CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE employee && Abre a tabela employee

CLEARSTORE 'Japonês' TO gcFindString && Considera maiúsculas/minúsculasLOCATE FOR ATLINE(gcFindString, notes) != 0? First_Name?? Last_Name? MLINE(notes, ATLINE(gcFindString, notes))

* Example 2STORE '1234567890ABCDEFGHIJ' TO gcStringSET MEMOWIDTH TO 20? ATLINE('AB', gcSting) && Exibe 1

SET MEMOWIDTH TO 10? ATLINE('AB', gcString) && Exibe 2

ATN2( ), função

Retorna o arco tangente em todos os quatro quadrantes de valores especificados.

Sintaxe

ATN2(nCoordenadaY, nCoordenadaX)

[Pág.: 51]

Page 52: 74039361 Visual FoxPro Comandos e Funcoes

Tipos de retorno

Numérico

Argumentos

nCoordenadaY Especifica a coordenada y.

nCoordenadaX Especifica a coordenada x.

Comentários

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 número de casas decimais exibidas no resultado, utilize SET DECIMALS.

ATN2( ), exemplo da função

CLEAR? PI( ) && Exibe 3.14? ATN2(0,-1) && Exibe 3.14STORE COS(PI( )) TO gnXCoordSTORE SIN(PI( )) TO gnYCoord? ATN2(gnYCoord,gnXCoord) && Exibe 3.14? ATN2(gnYCoord,gnXCoord)/PI( ) && Exibe 1.00

AVERAGE, comando

Calcula o método aritmético das expressões ou campos numéricos.

Sintaxe

AVERAGE [ListaExpressões][Escopo] [FOR lExpressão1] [WHILE lExpressão2][TO ListaVarMem | TO ARRAY NomeMatriz][NOOPTIMIZE]

Argumentos

ListaExpressões Especifica as expressões para a média. ListaExpressões pode ser uma lista de campos a partir da tabela separada por vírgulas ou expressões numéricas que envolvem campos dessa tabela.

Escopo Especifica o registro ou o intervalo de registros para incluir na média. Apenas os registros incluídos no intervalo de registros especificados pelo escopo estão com média calculada. As cláusulas do escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. O escopo padrão para AVERAGE é registros ALL.

Os comandos que incluem Escopo operam apenas em tabelas na Área de trabalho ativa.

FOR lExpressão1 Especifica uma condição pela qual são incluídos apenas os registros que satisfazem as condições lógicas de lExpressão. Esse argumento permite filtrar registros indesejáveis.

Rushmore otimiza uma consulta AVERAGE FOR se lExpressão for uma expressão de otimização. Para obter um melhor desempenho, utilize uma expressão de otimização da cláusula FOR. Para obter maiores

[Pág.: 52]

Page 53: 74039361 Visual FoxPro Comandos e Funcoes

informações sobre expressões de otimização Rushmore, consulte ” SET OPTIMIZE” e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica que, uma vez que a expressão lógica lExpressão2 resulta em verdadeiro (.T.), os registros estão incluídos na média.

TO ListaVarMem Especifica a lista de variáveis ou elementos de matriz para os quais os resultados da média são armazenados.

TO ARRAY NomeMatriz Especifica a matriz unidimensional na qual os resultados da média são armazenados. A matriz unidimensional pode ser criada antes da execução de AVERAGE.Se a matriz incluída em AVERAGE não existir, o Visual FoxPro a criará automaticamente. Se a matriz existir e não for grande o suficiente para conter todos os resultados, o Visual FoxPro automaticamente aumentará o tamanho da matriz para acomodar as informações.

NOOPTIMIZE Desativa a otimização Rushmore de AVERAGE. Para obter maiores informações, consulte ’ ’SET OPTIMIZE” e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Comentários

Todos os campos numéricos na tabela selecionada estão com médias calculadas, a menos que você inclua uma lista de expressões opcional. O resultado é exibido na tela se SET TALK estiver ativado (ON). Se SET HEADINGS estiver ativado (ON), os nomes dos campos ou expressões envolvendo os nomes dos campos são exibidos acima dos resultados.

AVERAGE, exemplo do comando

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE orders && Abre a tabela de pedidos

CLEARAVERAGE Order_Amt && Calcula as médias de todos os pedidosAVERAGE Order_Amt TO gnAvg && Armazena a média na variável de memória? 'Quantidade média dos pedidos: '?? gnAvg && Exibe a média novamente

TABELA de Cores

A tabela a seguir lista valores típicos de cor.

Cor Valores RGB Valor de nCor

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

[Pág.: 53]

Page 54: 74039361 Visual FoxPro Comandos e Funcoes

BETWEEN( ), função

Determina se o valor de uma expressão está entre os valores de duas outras expressões com mesmo tipo de dado.

Sintaxe

BETWEEN(eValorTeste, eValorMínimo, eValorMáximo)Tipos de retorno

Lógico ou valor nulo

Argumentos

eValorTeste Especifica a expressão cujo valor é testado por BETWEEN( ). Se o valor de eValorTeste for maior que ou igual ao valor de eValorMínimo e menor que ou igual ao valor de eValorMáximo, BETWEEN( ) retornará verdadeiro (.T.). Caso contrário, BETWEEN( ) retornará falso (.F.). BETWEEN( ) retornará o valor nulo se eValorMínimo ou eValorMáximo representarem um valor nulo.

eValorMínimo Especifica o valor mais baixo no intervalo avaliado por BETWEEN( ).

eValorMáximo Especifica o valor mais alto no intervalo avaliado por BETWEEN( ).

Comentários

BETWEEN( ) retornará um valor verdadeiro (.T.) se o valor de uma expressão do tipo caractere, data, data e hora, numérico, flutuante, inteiro, duplo ou moeda situar-se entre os valores de duas outras expressões com o mesmo tipo de dado. Caso contrário, BETWEEN( ) retornará falso (.F.). BETWEEN( ) retornará o valor nulo se eValorMínimo ou eValorMáximo representarem um valor nulo.

BETWEEN( ), exemplo da função

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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE orders && Abre a tabela Order

CLEARSCAN FOR BETWEEN(order_amt,950,1000)

? cust_id, order_amtENDSCAN

BINTOC( ), função

Converte um valor inteiro em uma representação de caracteres binários.

Sintaxe

BINTOC(nExpressão [, nTamanho])

Tipos de retorno

Caractere

Argumentos

nExpressão Especifica o valor inteiro a ser convertido.

[Pág.: 54]

Page 55: 74039361 Visual FoxPro Comandos e Funcoes

nTamanho Especifica o tamanho em caracteres da seqüência de caracteres retornada.

nTamanho também determina o valor que pode ser especificado para nExpressão. A tabela a seguir lista os valores aceitos para nTamanho e o intervalo correspondente de valores para nExpressão:

nTamanho Intervalo nExpressão

1 -128 a 1272 -32,768 a 32,7674 (padrão) -2,147,483,648 a 2,147,483,647

Se nTamanho for omitido, BINTOC( ) retornará uma seqüência de caracteres composta por quatro caracteres.Comentários

Utiliza-se BINTOC( ) para reduzir o tamanho dos índices para campos numéricos que contêm dados inteiros. Por exemplo, um campo numérico denominado iPartCode pode conter um valor inteiro entre 1 e 127 que corresponde a um código de classificação de peças. BINTOC( ) permite que você converta o valor no campo numérico em uma representação 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( ), função

Retorna o resultado de uma operação AND em nível de bit executada sobre dois valores numéricos.

Sintaxe

BITAND(nExpressão1, nExpressão2)

Tipos de retornoNuméricoArgumentos

nExpressão1, nExpressão2 Especifica os valores numéricos sobre os quais a operação AND em nível de bit é executada. Se nExpressão1 e nExpressão2 não forem números inteiros, serão convertidos em inteiros antes que a operação AND em nível de bit seja executada.

Comentários

BITAND( ) compara cada bit em nExpressão1 com o bit correspondente em nExpressão2. Se os bits em nExpressão1 e nExpressão2 forem ambos 1, o bit resultante correspondente será definido como 1; caso contrário, será definido como 0.

A tabela a seguir mostra o resultado de uma operação AND em nível de bit em bits correspondentes de nExpressão1 e nExpressão2:

Bit de nExpressão1 Bit de nExpressão2 Bit resultante

0 0 00 1 01 1 11 0 0

BITAND( ), exemplo da função

x = 3 && 0011 binárioy = 6 && 0110 binário

? BITAND(x,y) && Retorna 2, 0010 binário

[Pág.: 55]

Page 56: 74039361 Visual FoxPro Comandos e Funcoes

BITCLEAR( ), função

Limpa um bit especificado (define o bit como 0) em um valor numérico e retorna o valor resultante.

Sintaxe

BITCLEAR(nExpressão1, nExpressão2)Tipos de retorno

Numérico

Argumentos

nExpressão1 Especifica o valor numérico em que um bit é limpo. Se nExpressão1 não for um número inteiro, será convertido em inteiro antes que o seu bit seja definido.

nExpressão2 Especifica a posição do bit que é limpo em nExpressão1. nExpressão2 pode estar no intervalo de 0 a 31; 0 é o bit mais à direita.

BITCLEAR( ), exemplo da função

x = 7 && 0111 binárioy = 1 && 2a. posição de bit (0 = 1a. posição de bit)? BITCLEAR(x,y) && Retorna 5, 0101 binário

BITLSHIFT( ), função

Retorna o resultado do deslocamento para a esquerda dos bits de um valor numérico, um número especificado de posições.

Sintaxe

BITLSHIFT(nExpressão1, nExpressão2)

Tipos de retorno

Numérico

Argumentos

nExpressão1 Especifica o valor numérico cujos bits são deslocados para a esquerda. Se nExpressão1 não for um número inteiro, será convertido em inteiro antes que os respectivos bits sejam deslocados.

nExpressão2 Especifica o número de posições de bits a serem deslocados. Se nExpressão2 não for um número inteiro, será convertido.

BITLSHIFT( ), exemplo da função

x = 5 && 0101 binárioy = 1 && Desloca os bits 1 posição para a esquerda

? BITLSHIFT(x,y) && Retorna 10, 1010 binário

[Pág.: 56]

Page 57: 74039361 Visual FoxPro Comandos e Funcoes

BITNOT( ), função

Retorna o resultado de uma operação NOT em nível de bit executada sobre um valor numérico.

Sintaxe

BITNOT(nExpressão)

Tipos de retorno

NuméricoArgumentos

nExpressão Especifica o valor numérico sobre o qual a operação NOT em nível de bit é executada. Se nExpressão1 não for um número inteiro, será convertido em inteiro antes que os respectivos bits sejam deslocados.

Comentários

A função BITNOT( ) retorna o complemento em nível de bit de nExpressão. O valor numérico retornado por BITNOT( ) representa nExpressão 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 operação NOT em nível de bit em nExpressão:

Bit de nExpressão Bit resultante

0 11 0

BITNOT( ), exemplo da função

x = 5 && 0101 binário? BITNOT(x) && Retorna -6

BITOR( ), função

Retorna o resultado de uma operação OR inclusiva em nível de bit executada sobre dois valores numéricos.

Sintaxe

BITOR(nExpressão1, nExpressão2)

Tipos de retornoNumérico

Argumentos

nExpressão1, nExpressão2 Especifica os valores numéricos sobre os quais a operação OR inclusiva em nível de bit é executada. Se nExpressão1 e nExpressão2 não forem números inteiros, serão convertidos em inteiros antes que a operação OR inclusiva em nível de bit seja executada.

Comentários

BITOR( ) compara cada bit em nExpressão1 com o bit correspondente em nExpressão2. Se um dos bits em nExpressão1 ou nExpressão2 for 1, o bit resultante correspondente será definido como 1; caso contrário, será definido como 0.

A tabela a seguir mostra o resultado de uma operação OR inclusiva sobre bits correspondentes em nExpressão1 e nExpressão2:

Bit de nExpressão1 Bit de nExpressão2 Bit resultante

[Pág.: 57]

Page 58: 74039361 Visual FoxPro Comandos e Funcoes

0 0 00 1 11 0 11 1 1

BITOR( ), exemplo da função

x = 5 && 0101 binárioy = 6 && 0110 binário

? BITOR(x,y) && Retorna 7, 0111 binárioBITRSHIFT( ), função

Retorna o resultado do deslocamento para a direita dos bits de um valor numérico, um número especificado de posições.

Sintaxe

BITRSHIFT(nExpressão1, nExpressão2)Tipos de retorno

Numérico

Argumentos

nExpressão1 Especifica o valor numérico cujos bits são deslocados para a direita. Se nExpressão1 não for um número inteiro, será convertido em inteiro antes que os respectivos bits sejam deslocados.

nExpressão2 Especifica o número de posições de bits a serem deslocados. Se Expressão2 não for um número inteiro, será convertido.

BITRSHIFT( ), exemplo da função

x = 5 && 0101 binárioy = 1 && Desloca os bits 1 posição para a direita

? BITRSHIFT(x,y) && Retorna 2, 0010 binário

BITSET( ), função

Define o bit como 1 em um valor numérico e retorna o valor resultante.

Sintaxe

BITSET(nExpressão1, nExpressão2)

Tipos de retorno

Numérico

Argumentos

nExpressão Especifica o valor numérico em que um bit é definido. Se nExpressão1 não for um número inteiro, será convertido em inteiro antes que o seu bit seja definido.

nExpressão Especifica a posição em nExpressão1 do bit que é definido como 1. nExpressão2 pode estar no intervalo de 0 a 31; 0 é o bit mais à direita.

[Pág.: 58]

Page 59: 74039361 Visual FoxPro Comandos e Funcoes

BITSET( ), exemplo da função

x = 5 && 0101 binárioy = 1 && 2a. posição de bit (0 = 1a. posição de bit)? BITSET(x,y) && Retorna 7, 0111 binário

BITTEST( ), função

Retornará verdadeiro (.T.) se um bit especificado em um valor numérico estiver definido como 1; caso contrário, retornará falso (.F.).

Sintaxe

BITTEST(nExpressão1, nExpressão2)

Tipos de retorno

Lógico

Argumentos

nExpressão1 Especifica o valor numérico em que um bit é verificado. Se nExpressão1 não for um número inteiro, será convertido em inteiro antes que o respectivo bit seja verificado.

nExpressão2 Especifica a posição do bit que é verificado em nExpressão1. nExpressão2 pode estar no intervalo de 0 a 31; 0 é o bit mais à direita.

BITTEST( ), exemplo da função

O exemplo a seguir utiliza BITTEST( ) para determinar se uma série de inteiros é par. Se um inteiro for par, a função IsEven retornará verdadeiro (.T.); caso contrário, retornará falso (.F.).

CLEAR? '2 even? '?? IsEven(2) && É par, retorna .T.? '3 even? '?? IsEven(3) && Não é par, retorna .F.? '0 even? '?? IsEven(0) && É par, retorna .T.? '-13 even? '?? IsEven(-13) && Não é par, retorna .F.

Function IsEvenPARAMETER nIntegerRETURN NOT BITTEST(nInteger, 0)

BITXOR( ), função

Retorna o resultado de uma operação OR exclusiva em nível de bit executada sobre dois valores numéricos.

Sintaxe

BITXOR(nExpressão1, nExpressão2)

Tipos de retorno

Numérico

[Pág.: 59]

Page 60: 74039361 Visual FoxPro Comandos e Funcoes

Argumentos

nExpressão1, nExpressão2 Especifica os valores numéricos sobre os quais a operação OR exclusiva em nível de bit é executada. Se nExpressão1 e nExpressão2 não forem números inteiros, serão convertidos em inteiros antes que a operação OR exclusiva em nível de bit seja executada.

Comentários

BITXOR( ) compara cada bit em nExpressão1 com o bit correspondente em nExpressão2. Se um bit for 0 e o outro bit for 1, o bit resultante correspondente será definido como 1. Caso contrário, será definido como 0.

A tabela a seguir mostra o resultado de uma operação OR exclusiva sobre bits correspondentes em nExpressão1 e nExpressão2:

Bit de nExpressão1 Bit de nExpressão2 Bit resultante

0 0 00 1 11 0 11 1 0

BITXOR( ), exemplo da função

x = 5 && 0101 binárioy = 6 && 0110 binário

? BITXOR(x,y) && Retorna 3, 0011 binário

BLANK, comando

Limpa os dados de todos os campos do registro atual quando emitido sem argumentos adicionais.

Sintaxe

BLANK[FIELDS ListaCampos][Escopo][FOR lExpressão1][WHILE lExpressão2][NOOPTIMIZE]

Argumentos

FIELDS ListaCampos Limpa apenas os campos especificados com ListaCampos. Como padrão, se a cláusula FIELDS for omitida, todos os campos de um registro serão limpos. Qualquer campo especificado em uma Área de trabalho não selecionada deve ser precedido pelo alias da Área de trabalho.

Importante BLANK não 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 serão limpos. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

Para obter maiores informações sobre as cláusulas de escopo, consulte o tópico Cláusulas de escopo. Os comandos que incluem Escopo operam somente na tabela na Área de trabalho ativa.

O escopo padrão para BLANK é o registro atual (NEXT 1).

[Pág.: 60]

Page 61: 74039361 Visual FoxPro Comandos e Funcoes

FOR lExpressão1 Limpa os dados dos campos dos registros para os quais lExpressão1 resulta em verdadeiro (.T.). Rushmore otimizará BLANK FOR se lExpressão1 for uma expressão otimizável. Uma discussão sobre a otimização Rushmore é apresentada em “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando Aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição pela qual os dados dos campos dos registros serão limpos desde que a expressão lógica lExpressão2 resulte em verdadeiro (.T.).

NOOPTIMIZE Evita a otimização Rushmore de BLANK. Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos,” no Guia do Desenvolvedor.

Comentários

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 conteúdo do primeiro registro é exibido. Utiliza-se SCATTER para salvar o conteúdo do registro em uma matriz. Este é limpo com BLANK, e o conteúdo do registro exibido novamente. Usa-se GATHER para restaurar o conteúdo do registro original, e o conteúdo do registro restaurado é exibido novamente.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customer

CLEARDISPLAY && Exibe o registro atualSCATTER TO gaCustomer && Cria matriz com o conteúdo do registroBLANK && Limpa o registroDISPLAY && Exibe o registro em branco GATHER FROM gaCustomer && Restaura o conteúdo do registro originalDISPLAY && Exibe o registro restaurado

BOF( ), função

Determina se o ponteiro do registro está posicionado no início de uma tabela.

Sintaxe

BOF([nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Lógico

Argumentos

nÁreaTrabalho Especifica o número da Área de trabalho para uma tabela aberta em uma outra Área de trabalho.

cAliasTabela Especifica o alias de uma tabela aberta em uma outra Área de trabalho.

Caso a tabela em que você deseja testar a condição de início do arquivo esteja aberta em uma Área de trabalho diferente da selecionada no momento, utilize estes argumentos opcionais para especificar o número da Área de trabalho ou o alias da tabela. Caso a tabela não esteja aberta na Área de trabalho especificada, BOF( ) retornará falso (.F.).

[Pág.: 61]

Page 62: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

Utilize BOF( ) para testar uma condição de início do arquivo para uma tabela. BOF( ) retornará verdadeiro (.T.) se você tiver tentado mover o ponteiro do registro para uma posição anterior ao primeiro registro da tabela.

BOF( ), exemplo de função

O exemplo a seguir abre a tabela customer e lista o nome da empresa, uma página de cada vez, começando pelo último registro. A lista continua até o início do arquivo ser alcançado ou até que se escolha Cancelar.

CLOSE DATABASESCLEAROPEN DATABASE (HOME() + "samples\data\testdata")USE customerGO BOTTOMlocal recCtr, btnValuerecCtr = 0btnValue = 1DO 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 acimaENDDO=MESSAGEBOX("Lista concluída.",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 lExpressão1 [REST]][FORMAT][FREEZE NomeCampo][KEY eExpressão1 [, eExpressão2]][LAST | NOINIT][LOCK nNúmeroDeCampos][LPARTITION][NAME NomeObjeto][NOAPPEND][NODELETE][NOEDIT | NOMODIFY][NOLGRID] [NORGRID][NOLINK][NOMENU][NOOPTIMIZE][NOREFRESH][NORMAL][NOWAIT][PARTITION nNúmeroColuna [LEDIT] [REDIT]]

[Pág.: 62]

Page 63: 74039361 Visual FoxPro Comandos e Funcoes

[PREFERENCE NomePreferência][SAVE][TIMEOUT nSegundos][TITLE cTextoTítulo][VALID [:F] lExpressão2 [ERROR cTextoMensagem]][WHEN lExpressão3][WIDTH nLarguraCampo][[WINDOW NomeJanela1][IN [WINDOW] NomeJanela2 | IN SCREEN][COLOR SCHEME nNúmeroEsquema]

ArgumentosFIELDS ListaCampos Especifica os campos exibidos na janela Pesquisar. Os campos são 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 é incluído, antes do nome dele, deve ser colocado o alias de tabela e um ponto.

Se você omitir FIELDS, todos os campos da tabela serão 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 expressão de caracteres cNomeFonte especifica o nome da fonte e a expressão numérica nTamanhoFonte especifica o tamanho dela. Por exemplo, a cláusula a seguir especifica uma fonte Courier de 16 pontos para os campos exibidos em uma janela Pesquisar:

FONT 'Courier',16

Se você incluir a cláusula FONT, mas omitir o tamanho da fonte nTamanhoFonte, será utilizada uma fonte de 10 pontos na janela Pesquisar. Se a cláusula FONT for omitida, será utilizada uma fonte MS Sans Serif de 8 pontos.

Se a fonte especificada não estiver disponível, ela será substituída por outra com características semelhantes.

STYLE cEstiloFonte Especifica o estilo da fonte da janela Pesquisar. Caso você omita a cláusula STYLE, será utilizado o estilo de fonte Normal.

Se o estilo de fonte especificado não estiver disponível, ele será substituído por outro com características semelhantes, ou será utilizada uma fonte estilo Normal.

Caractere Estilo de fonte

B NegritoI ItálicoN NormalO ContornadoQ OpacoS Sombreado- RiscadoT TransparenteU SublinhadoVocê pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. O exemplo a seguir abre uma janela Pesquisar e utiliza uma fonte sublinhada:

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerIF _WINDOWS

BROWSE FIELDS contact FONT 'System', 15 STYLE 'NU'ENDIFIF _MAC

BROWSE FIELDS contact FONT 'Geneva', 14 STYLE 'NU'ENDIF

[Pág.: 63]

Page 64: 74039361 Visual FoxPro Comandos e Funcoes

FOR lExpressão1 Especifica uma condição pela qual somente registros para os quais lExpressão1 é verdadeira são exibidos na janela Pesquisar.

Rushmore otimizará uma consulta especificada com um comando BROWSE FOR se lExpressão1 for uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR. Para obter informações sobre expressões otimizáveis por Rushmore, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos,” no Guia do Desenvolvedor.Inclua FOR para mover o ponteiro do registro até o primeiro registro que corresponda à condição. Inclua REST para manter o ponteiro do registro na sua posição atual.REST Impede que o ponteiro do registro seja movido da sua posição atual para o início da tabela quando uma janela Pesquisar é aberta com a cláusula FOR. Caso contrário, BROWSE, como padrão, posiciona o ponteiro do registro no início da tabela.

FORMAT Especifica o uso de um arquivo de formatação para controlar a exibição e o formato da entrada de dados em uma janela Pesquisar. Primeiro, o arquivo de formatação deve ser aberto com SET FORMAT. As informações a seguir são extraídas do arquivo de formatação e aplicadas à janela Pesquisar:

· A lista de campos a serem pesquisados· Todas as cláusulas VALID· Todas as cláusulas WHEN· Todas as cláusulas RANGE· Tamanhos de campos (conforme especificado em cláusulas PICTURE)· Todas as expressões SAY (incluídas como campos BROWSE calculados)

O exemplo a seguir utiliza um arquivo de formatação para validar os dados digitados em uma janela Pesquisar. As posições especificadas com @ ... GET são ignoradas.

A primeira linha cria um campo BROWSE (Cust_id) com 5 caracteres de largura e permite a entrada somente de letras e dígitos. A segunda linha cria um campo BROWSE (Company) que não pode conter um valor em branco e pode conter um máximo de 20 caracteres alfabéticos.

A terceira linha cria um campo BROWSE (Contact) no qual só poderão ser digitados dados quando o campo estiver em branco.

A seguir é apresentado o conteúdo do arquivo de formatação 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 formataçãoCLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerSET FORMAT TO custentr.fmtBROWSE FORMAT

FREEZE NomeCampo Permite que sejam feitas alterações somente em um campo da janela Pesquisar. Este campo é especificado com NomeCampo. Os demais campos são exibidos e não podem ser editados.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerBROWSE FIELDS phone :H = 'Telefone:' , ;

company :H = 'Empresa:' ;FREEZE phone

[Pág.: 64]

Page 65: 74039361 Visual FoxPro Comandos e Funcoes

KEY eExpressão1 [, eExpressão2] Limita o escopo de registros exibidos na janela Pesquisar. Com KEY, você pode especificar um valor de chave de índice (eExpressão1) ou um intervalo de valores de chaves (eExpressão1, eExpressão2) para os registros exibidos na janela Pesquisar. A tabela pesquisada deve estar indexada e o valor ou os valores de chave de índice incluídos na cláusula KEY devem ter o mesmo tipo de dados da expressão de índice da marca ou arquivo de índice principal.

Por exemplo, a tabela customer inclui um campo de caractere que contém códigos postais. Caso a tabela esteja indexada no campo de código postal, você poderá especificar um intervalo deles na cláusula KEY.

No exemplo a seguir, somente registros com códigos postais dentro do intervalo de 10.000 a 30.000 são exibidos na janela Pesquisar:CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerSET ORDER TO postalcodeBROWSE KEY '10000', '30000'

LAST | NOINIT Salva qualquer alteração na configuração feita na aparência de uma janela Pesquisar. As alterações são salvas no arquivo FOXUSER, podendo incluir alterações feitas na lista de campos, no tamanho de cada campo e na localização e tamanho da janela Pesquisar.

Se BROWSE for emitido com a cláusula LAST ou NOINIT, a janela Pesquisar será aberta na mesma configuração que foi salva por último no arquivo FOXUSER, caso SET RESOURCE esteja ativado (ON). Este procedimento restaura a configuração anterior da janela Pesquisar criada com o último comando BROWSE. Caso o último BROWSE emitido na janela Comando inclua uma lista extensa de cláusulas, emita BROWSE com a opção LAST ou NOINIT para evitar a necessidade de digitar novamente o comando. Para obter maiores informações sobre o arquivo FOXUSER, consulte SET RESOURCE na Ajuda.

Caso a última janela Pesquisar tenha sido aberta com um BROWSE com uma cláusula PREFERENCE, BROWSE LAST não irá restaurar a preferência.

As alterações na configuração da janela Pesquisar feitas na sessão atual não serão salvas se você sair de BROWSE pressionando as teclas CTRL+Q.

As cláusulas LAST e NOINIT são idênticas; NOINIT fornece compatibilidade com o dBASE.

LOCK nNúmeroDeCampos Especifica o número de campos que pode ser exibido na partição esquerda da janela Pesquisar sem tabular ou rolar. A partição esquerda é automaticamente dimensionada para que possa exibir o número de campos especificado com nNúmeroDeCampos.

LPARTITION Especifica que o cursor é colocado no primeiro campo na partição esquerda da janela Pesquisar. Como padrão, o cursor é colocado no primeiro campo na partição direita quando a janela Pesquisar é aberta.

NAME NomeObjeto Cria uma referência de objeto para a janela Pesquisar, permitindo que você manipule essa janela com as propriedades orientadas a objetos disponíveis para o controle Grid. Para obter informações adicionais sobre a programação orientada a objetos do Visual FoxPro, consulte o capítulo 3, “Programação orientada a objetos”, no Guia do Desenvolvedor. Para obter informações adicionais sobre as propriedades do controle Grid que podem ser especificadas para uma janela Pesquisar criada com a cláusula NAME, consulte o tópico Grid, controle.

NOAPPEND Impede que o usuário adicione registros à tabela pressionando as teclas CTRL+Y ou selecionando Incluir registro no menu Tabela

Important Including NOAPPEND doesn’t 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 exclusão de dentro de uma janela Pesquisar. Como padrão, um registro pode ser marcado para exclusão pressionando-se as teclas CTRL+T, selecionando-se Alternar exclusão no menu Tabela ou clicando-se na coluna mais à esquerda do registro a ser excluído.

[Pág.: 65]

Page 66: 74039361 Visual FoxPro Comandos e Funcoes

Important Including NODELETE doesn’t 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 usuário modifique a tabela. NOEDIT e NOMODIFY são idênticas. Se você incluir qualquer uma destas cláusulas, poderá pesquisar ou percorrer a tabela, mas não poderá editá-la. No entanto, você poderá incluir e excluir registros.NOLGRID Remove as linhas de grade dos campos na partição esquerda da janela Pesquisar.

NORGRID Remove as linhas de grade dos campos na partição direita da janela Pesquisar.

NOLINK Desvincula as partições de uma janela Pesquisar. Como padrão, as partições esquerda e direita da janela Pesquisar estão vinculadas de modo que quando você percorre uma partição, a outra partição é rolada.

NOMENU Remove da Barra de menus do sistema o título do menu Tabela, impedindo o acesso ao menu Pesquisar.

NOOPTIMIZE Desativa a otimização Rushmore de BROWSE. Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” na Ajuda no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

NOREFRESH Impede que a janela Pesquisar seja atualizada. As janelas Pesquisar são 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 definições padrão normais, tais como as opções de cores, tamanho, posição, título e controle (GROW, FLOAT, ZOOM e assim por diante). Se você omitir NORMAL e a janela de saída atual for implementada pelo usuário com suas próprias definições, a janela Pesquisar também assumirá as definições especificadas pelo usuário.

NOWAIT Continua a execução do programa logo depois da abertura da janela Pesquisar. O programa não aguarda o fechamento da janela Pesquisar, mas continua a execução na linha de programa imediatamente após a linha que contém BROWSE NOWAIT. Se você omitir NOWAIT quando emitir BROWSE dentro de um programa, uma janela Pesquisar será aberta e a execução do programa será colocada em pausa até que a janela Pesquisar seja fechada.

NOWAIT está disponível apenas dentro de um programa. A inclusão de NOWAIT quando BROWSE é emitido na janela Comando não tem qualquer efeito.

PARTITION nNúmeroColuna Divide uma janela Pesquisar em partições esquerda e direita com nNúmeroColuna especificando o número da coluna da barra de divisão. Por exemplo, se nNúmeroColuna for 20, a barra de divisão será colocada na coluna 20 da janela Pesquisar.

LEDIT Especifica que a partição esquerda da janela Pesquisar será exibida no modo Editar

REDIT Especifica que a partição direita da janela Pesquisar será exibida no modo Editar. O exemplo a seguir abre uma janela Pesquisar com a barra de divisão colocada na coluna 20 e a partição direita aberta no modo Editar.

Inclua as duas palavras-chave para abrir as duas partições no modo Editar.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerBROWSE PARTITION 20 REDIT

PREFERENCE NomePreferência Salva os atributos e as opções de uma janela Pesquisar para uso posterior. Ao contrário de LAST, que restaura a janela Pesquisar como ela foi exibida na sessão anterior, PREFERENCE salva os atributos de uma janela Pesquisar indefinidamente no arquivo de recursos FOXUSER. As preferências podem ser recuperadas a qualquer momento.

[Pág.: 66]

Page 67: 74039361 Visual FoxPro Comandos e Funcoes

Na primeira vez que BROWSE é emitido com o nome da preferência especificado, é criada uma entrada no arquivo FOXUSER que salva a configuração da janela Pesquisar. A emissão de BROWSE posteriormente com o mesmo nome da preferência restaura a janela Pesquisar a esse estado de preferência. Quando a janela Pesquisar é fechada, a preferência é atualizada.

Os nomes de preferências podem ter até 10 caracteres, devem iniciar com uma letra ou um caractere sublinhado e podem conter qualquer combinação de letras, números e caracteres sublinhados.

Quando uma preferência 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 contém a preferência para somente para leitura, alterando o valor do campo lógico READONLY para verdadeiro (.T.).

Para obter maiores informações sobre o arquivo de recurso FOXUSER, consulte SET RESOURCE.

Se você sair de uma janela Pesquisar pressionando as teclas CTRL+Q, nenhuma alteração feita na janela Pesquisar será salva no arquivo de recursos.

SAVE Mantém a janela Pesquisar e qualquer uma de suas janelas de edição de texto de campo Memo ativas e visíveis (abertas). Em seguida, você poderá retornar à janela Pesquisar depois de percorrer as outras janelas abertas com o teclado ou o mouse.

SAVE só está disponível dentro de um programa, e não tem qualquer efeito quando incluída com BROWSE na janela Comando, pois BROWSE SAVE é sempre o padrão no modo interativo.

TIMEOUT nSegundos Especifica quanto tempo uma janela Pesquisar pode aguardar entrada. expressão numérica nSegundos especifica quantos segundos podem decorrer sem nenhuma entrada antes do fechamento automático da janela Pesquisar.

TIMEOUT só está disponível dentro de um programa, não apresentando qualquer efeito quando BROWSE é emitido na janela Comando. No exemplo a seguir, a janela Pesquisar será fechada caso não ocorra nenhuma entrada dentro de 10 segundos.

DEFINE WINDOW wBrowse FROM 1,1 TO 24,40 ;CLOSE ;GROW ;COLOR SCHEME 10

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerBROWSE WINDOW wBrowse ;

FIELDS phone :H = 'Phone Number:' , ;company :H = 'Company:' ;TIMEOUT 10

RELEASE WINDOW wBrowse

TITLE cTextoTítulo Substitui o alias ou o nome de tabela padrão exibido na barra de título da janela Pesquisar pelo título especificado com cTextoTítulo. Caso contrário, o nome ou o alias da tabela que está sendo pesquisada será exibido na barra de título.

Se BROWSE WINDOW for emitido para colocar a janela Pesquisar em outra, definida pelo usuário, o título desta janela substituirá o título da outra.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerBROWSE;

TITLE 'My Browse Window' ;FIELDS phone :H = 'Phone Number' , ;company :H = 'Company:'

[Pág.: 67]

Page 68: 74039361 Visual FoxPro Comandos e Funcoes

VALID lExpressão2 Executa a validação em nível de registro em uma janela Pesquisar. A cláusula VALID só será executada se houver uma alteração no registro e você tentar mover o cursor para outro registro. A cláusula VALID não será executada se a única alteração feita for em um campo Memo.

Se VALID retornar um valor verdadeiro (.T.), o usuário 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 não será exibida nenhuma mensagem de erro.

A cláusula VALID não deve ser confundida com a opção de verificação (:V), que permite a validação em nível de campo.

:F Força a execução da cláusula VALID antes de o usuário mover o cursor para o registro seguinte. Nesse caso, VALID é executada mesmo que o registro não seja alterado.

ERROR cTextoMensagem Especifica uma mensagem de erro que substitui a mensagem de erro padrão do sistema. O Visual FoxPro exibe cTextoMensagem quando VALID retorna falso (.F.).

WHEN lExpressão3 Avalia uma condição quando o usuário move o cursor para outro registro. Se lExpressão3 resultar em verdadeiro (.T.), o usuário poderá modificar o registro para o qual se moveu. Se lExpressão3 resultar em falso (.F.) ou 0, o registro para o qual o usuário se moveu se tornará somente para leitura e não poderá ser modificado

A cláusula WHEN não é executada quando outra janela está ativada.

WIDTH nLarguraCampo Limita o número de caracteres exibidos para todos os campos em uma janela Pesquisar a nLarguraCampo. O conteúdo de um campo pode ser rolado horizontalmente, utilizando as teclas de Seta à Direita e Seta à Esquerda ou a barra de rolagem horizontal. A inclusão da cláusula WIDTH não altera o tamanho dos campos da tabela; ela altera somente a maneira como os campos são exibidos na janela Pesquisar. Caso uma largura tenha sido especificada para um campo individual com a cláusula FIELDS, ela substituirá a largura especificada com a cláusula WIDTH para esse campo.

WINDOW NomeJanela1 Especifica uma janela definida pelo usuário cujas características são assumidas pela janela Pesquisar. Por exemplo, se a janela definida pelo usuário for criada com a cláusula FLOAT, a janela Pesquisar poderá ser movida. A janela especificada não precisa estar ativa ou visível, mas deve estar definida.

IN [WINDOW] NomeJanela2 Especifica a janela pai dentro da qual a janela Pesquisar é aberta. A janela Pesquisar não assume as características da janela pai. Uma janela Pesquisar ativada dentro de uma janela pai não 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 visível.

IN SCREEN Coloca explicitamente uma janela Pesquisar na janela principal do Visual FoxPro, quando uma definida pelo usuário está ativa.

COLOR SCHEME nNúmeroEsquema Especifica o número 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 opção Cor do painel de controle do Windows.

Comentários

Uma janela Pesquisar permite que você visualize os registros de uma tabela, edite esses registros e inclua registros adicionais. O Visual FoxPro permite que várias janelas Pesquisar fiquem abertas ao mesmo tempo.

[Pág.: 68]

Page 69: 74039361 Visual FoxPro Comandos e Funcoes

Se você pressionar ESC para sair da janela Pesquisar, as alterações feitas no último campo modificado serão descartadas. No entanto, se você mover para outro registro após modificar um campo, as alterações feitas nele serão salvas.

Para obter informações sobre como navegar na janela Pesquisar, consulte o capítulo 2, “Criando tabelas e índices”, no Guia do usuário.

A lista de campos pode especificar qualquer combinação 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 instruções para a criação de campos calculados. Um campo calculado contém dados somente para leitura criados com uma expressão. Esta pode ter qualquer forma, mas deve ser do Visual FoxPro.

O formato da instrução que você utiliza para criar um campo calculado é o seguinte:

NomeCampoCalculado = eExpressão

Este exemplo cria um campo calculado chamado location:

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerBROWSE FIELDS location = ALLTRIM(city) + ', ' + country

City e Country são os nomes dos campos da tabela selecionada no momento.

A lista de campos da cláusula FIELDS inclui opções que permitem a manipulação 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 não editados.

No exemplo a seguir, uma janela Pesquisar é aberta com os campos Cust_id e Company. O campo Cust_id é somente para leitura e não pode ser alterado.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerBROWSE FIELDS Cust_id:R, Company

:nLarguraColuna Especifica o tamanho de exibição para um campo em colunas. O valor de nLarguraColuna não afeta o tamanho do campo na tabela; apenas altera a forma de exibição do campo na janela Pesquisar.

:V = lExpressão1 [:F] [:E = cTextoMensagem] Permite que você execute validação de dados em nível de campo dentro da janela Pesquisar. Se lExpressão1 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.

[Pág.: 69]

Page 70: 74039361 Visual FoxPro Comandos e Funcoes

If lExpressão1 resultar em falso (.F.), a entrada de dados será considerada incorreta, o cursor permanecerá no campo e uma mensagem será exibida. Se lExpressão1 resultar em 0, a entrada de dados será considerada incorreta e o cursor permanecerá no campo e nenhuma mensagem de erro será exibida.

A opção de verificação não é executada para campos Memo.

Como padrão, lExpressão1 será avaliada somente quando o campo for modificado. Para forçar a verificação, inclua a opção :F.

É possível exibir a sua própria mensagem de erro, incluindo a opção :E descrita abaixo.

:F Determina se a expressão na opção de verificação será avaliada quando o cursor for movido para fora de um campo ou outra janela for ativada. Se a opção :F não estiver incluída, lExpressão1 só será avaliado se forem feitas alterações no campo. Se a opção :F estiver incluída, lExpressão1 será avaliada mesmo se o campo não for modificado.

:E = cTextoMensagem Se a expressão de validação :V = lExpressão1 resultar em verdadeiro (.T), o cursor deixará o campo normalmente. Se a expressão resultar em falso (.F.), o cursor permanecerá no campo e o Visual FoxPro exibirá uma mensagem de erro.

Se a opção de erro (:E) for incluída, 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 = lExpressão1 resultar em 0, nenhuma mensagem será exibida e o cursor permanecerá no campo que está sendo validado. Esta opção permite que você exiba as suas próprias mensagens de erro em rotinas de validação.

O exemplo a seguir abre a tabela products e exibe os campos Product_id e Prod_name. O campo Product_id é um campo numérico que aceitará até cinco números. Para este exemplo, consideramos um campo Product_id maior que 100 como não-válido.

:V especifica os critérios de validação. :F força a verificação da validação a ser executada se os dados forem alterados ou não. :E substitui a mensagem de erro do sistema do Visual FoxPro por uma definida pelo usuário. 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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE products && Abre a tabela productsIF _WINDOWS OR _MAC

SET STATUS BAR ONENDIFUSE productsBROWSE FIELDS in_stock :V = in_stock < 100 ;

:F ;:E = 'O valor do estoque deve ser inferior a 100'

:P = cCódigosFormato Se você incluir uma cláusula FIELDS, também poderá especificar uma opção de figura (:P) para cada campo na lista. Ela permite que você crie uma lista de códigos que controle a exibição e a entrada de dados para cada campo em uma janela Pesquisar. cCódigosFormato é a lista de códigos.

O exemplo a seguir utiliza a opção de figura para permitir apenas a inserção de dados numéricos em um formato específico no campo unit_price:

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE products && Abre a tabela productsBROWSE FIELDS unit_price :P = '99,999.99'

[Pág.: 70]

Page 71: 74039361 Visual FoxPro Comandos e Funcoes

Consulte as propriedades Format e InputMask para obter maiores informações sobre os códigos de opção de figura.

:B = eLigaçãoInferior eLigaçãoSuperior [:F] Especifica um conjunto de limites no qual os dados em um campo devem se encontrar. As expressões de limite eLigaçãoInferior e eLigaçãoSuperior devem corresponder ao tipo de dados do campo. Elas não podem ser funções definidas pelo usuário. Se os dados digitados não estiverem no intervalo entre eLigaçãoInferior e eLigaçãoSuperior, uma mensagem de erro do sistema será exibida indicando onde os dados devem se encontrar.

Como padrão, os dados digitados só serão verificados com os valores de limite se você alterar o conteúdo do campo. Para forçar esta verificação, inclua a opção de validação forçada (: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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE products && Abre a tabela productsBROWSE FIELDS in_stock :B = 1, 100 :F

:H = cTextoCabeçalho Substitui os nomes de campo padrão pelos seus próprios cabeçalhos, que são especificados com cTextoCabeçalho. Como padrão, os nomes de campos são utilizados como cabeçalhos de coluna na janela Pesquisar.

O exemplo a seguir fornece cabeçalhos definidos pelo usuário para os campos exibidos.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE products && Abre a tabela productsBROWSE FIELDS prod_name :H = 'Product Name:', ;

unit_price :H = 'Price per Unit:'

:W = lExpressão2 Determina se o cursor pode ser movido para um campo. Se lExpressão2 resultar em falso (.F.), será proibido mover o cursor para o campo. Se lExpressão2 resultar em verdadeiro (.T.), o cursor poderá ser movido para o campo. As funções definidas pelo usuário são suportadas em lExpressão2.

Se for proibida a movimentação do cursor para todos os campos, o registro atual será marcado como somente para leitura. Isto só ocorrerá quando cada campo contiver uma cláusula WHEN que resulte em falsa.

Suporte SET SKIP… SET SKIP permite que você estabeleça um relacionamento um-para-n entre duas tabelas. Para cada registro da tabela pai, podem existir vários 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 subseqüentes são exibidos nas linhas após o registro pai e o primeiro registro filho correspondente. O caractere de preenchimento para informações 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 próximo registro pai ou CTRL+SETA ACIMA para mover-se para o registro pai anterior. Para obter maiores informações 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) contém vários registros para cada registro da tabela pai. Depois de criado o relacionamento, é aberta uma janela Pesquisar que exibe registros das tabelas pai e filho.

[Pág.: 71]

Page 72: 74039361 Visual FoxPro Comandos e Funcoes

A lista de campos da cláusula FIELDS contém registros das tabelas pai e filho. Os nomes dos campos são precedidos do respectivo alias de tabela (orders ou customer) e de um ponto.

CLEARCLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer ORDER cust_id IN 0&& Tabela paiUSE orders ORDER cust_id IN 0 && Tabela filhoSELECT customer && Volta à Área de trabalho paiSET RELATION TO cust_id INTO orders && Estabelece relacionamentoSET SKIP TO orders && Relacionamento um-para-nWAIT WINDOW 'Role para ver as datas de expedição para cada cliente' NOWAITBROWSE FIELDS customer.cust_id :H='Número do Cliente', ;

customer.city :H='Cidade do Cliente', orders.shipped_onFunções úteis … Várias funções do Visual FoxPro retornam informações úteis sobre uma janela Pesquisar.

FunçãoDescrição

VARREAD( ) Retorna o nome do campo onde se encontra o cursor na janela Pesquisar.RECNO( ) Retorna o número do registro selecionado na janela Pesquisar ativa.

BUILD EXE, comando

Cria um arquivo executável a partir de um projeto.

Sintaxe

BUILD EXE NomeArquivoEXE FROM NomeProjeto [RECOMPILE]

Argumentos

NomeArquivoEXE Especifica o nome do arquivo executável a ser criado. Caso exista um arquivo de aplicativo .APP com o mesmo nome de arquivo raiz do arquivo executável independente, ele será excluído. Se existir um arquivo executável e você criar um arquivo .APP com o mesmo nome, o arquivo executável será excluído.

FROM NomeProjeto Especifica o nome do projeto a partir do qual o arquivo executável é criado.

RECOMPILE Especifica que o projeto é compilado antes da criação do arquivo executável. Todos os arquivos de formato e de programa; formulário, etiqueta, relatório e código de origem de biblioteca de classe visual, bem como procedimentos armazenados nos bancos de dados do projeto, são compilados.

Comentários

Para obter informações adicionais sobre a criação de arquivos executáveis, consulte o capítulo 25, “Construindo um aplicativo para distribuição”, no Guia do Desenvolvedor.

Um arquivo executável criado com BUILD EXE exige dois arquivos de suporte: VFP500.DLL e VFP5ENU.DLL (EN denota a versão em inglês). Esses arquivos devem ser colocados no mesmo diretório que o arquivo executável ou junto ao caminho do MS-DOS.

Se o arquivo executável contém as definições de classe OLEPUBLIC, BUILD EXE automaticamente registra as definições de classe OLEPUBLIC no registro do sistema. As definições de classe OLEPUBLIC aparecem na caixa de listagem Classes do servidor, na guia Servidores da caixa de diálogo Informações sobre o projeto.

BUILD EXE também cria arquivos .VBR (registro) e .TLB (biblioteca de tipos) com o mesmo nome do arquivo executável. O arquivo .VBR permite registrar as definições de classe no registro do sistema quando o arquivo executável é movido para um computador diferente. O arquivo .TLB deve ser utilizado com pesquisadores de objeto.

[Pág.: 72]

Page 73: 74039361 Visual FoxPro Comandos e Funcoes

Para obter maiores informações sobre o registro das definições de classe OLEPUBLIC em um arquivo executável, consulte “Criando servidores OLE personalizados” no capítulo 16, “Adicionando a OLE”, no Guia do Desenvolvedor.

BUILD PROJECT, comando

Cria e constrói um arquivo de projeto.

Sintaxe

BUILD PROJECT NomeArquivoProjeto FROM NomePrograma1 | NomeMenu1 | NomeRelatório1 | NomeEtiqueta1

| NomeFormulário1 | NomeBiblioteca1[, NomePrograma2 | NomeMenu2 | NomeRelatório2 | NomeEtiqueta2

| NomeFormulário2 | NomeBiblioteca2 ...]Argumentos

NomeArquivoProjeto Especifica o nome da tabela de projeto a ser criada.

FROM NomePrograma1 | NomeMenu1 | NomeRelatório1 | NomeEtiqueta1| NomeFormulário1 | NomeBiblioteca1 Especifica os arquivos a serem incluídos no projeto. É possível especificar um ou mais arquivos de programa, menu, relatório, etiqueta, formulário ou biblioteca e o projeto irá controlar esses arquivos, bem como as dependências, referências e conexões entre eles.

Como padrão, o primeiro arquivo de menu ou programa executável na cláusula FROM é o arquivo de programa mestre do projeto.

Comentários

BUILD PROJECT cria automaticamente uma tabela de projeto com uma extensão de nome de arquivo .PJX ao abrir e processar um ou mais arquivos de programa, menu, relatório, etiqueta, formulário ou biblioteca especificados. Você pode utilizar o arquivo de projeto para criar um dentre dois tipos de programa: um arquivo de aplicativo com uma extensão .APP ou um arquivo executável com uma extensão .EXE. A tabela de projeto controla todos os arquivos necessários para a criação de um aplicativo, bem como as dependências, referências e conexões 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 informações sobre a criação de projetos, consulte o capítulo 13, “Compilando um aplicativo”, no Guia do Desenvolvedor.

Quando o Visual FoxPro encontra um arquivo de programa, menu ou formulário 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 contém uma marca de data e hora para que você possa atualizá-lo quando fizer alterações nos arquivos do projeto ou quando as dependências 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 cláusula opcional FROM. Em seguida, o Visual FoxPro atualizará o projeto especificado.

Quando você emite BUILD PROJECT, referências não resolvidas e outros erros são reportados, mas não impedem que o arquivo de projeto seja criado. Isso permite criar um projeto mesmo que todas as partes necessárias não tenham sido de fato criadas ou não estejam disponíveis no momento que o projeto é criado. Referências não resolvidas e outros problemas poderão ser corrigidos atualizando-se o arquivo de projeto em uma data posterior ou modificando-se manualmente as informações armazenadas no arquivo de projeto com MODIFY PROJECT.

[Pág.: 73]

Page 74: 74039361 Visual FoxPro Comandos e Funcoes

IMPORTANTE : Como gerar um .EXE

. Criar o .PRG (Com um editor). Criar o .PRG (Com um editor)

. Executar o comando BUILD PROJECT nome-1 FROM nome-prg. Executar o comando BUILD PROJECT nome-1 FROM nome-prg

. Executar o comando BUILD EXE nome. Executar o comando BUILD EXE nome-exe FROM nome-1

CALCULATE, comando

Executa operações financeiras e estatísticas em campos de uma tabela ou em expressões que envolvem campos.

Sintaxe

CALCULATE eListaExpressões[Escopo] [FOR lExpressão1] [WHILE lExpressão2][TO ListaVarMem | TO ARRAY NomeMatriz][NOOPTIMIZE]

Argumentos

eListaExpressão Especifica as expressões que podem conter qualquer combinação das seguintes funções:

AVG(nExpressão)

CNT( )

MAX(eExpressão)

MIN(eExpressão)

NPV(nExpressão1, nExpressão2 [, nExpressão3])

STD(nExpressão)

SUM(nExpressão)

VAR(nExpressão)

Na lista de expressões eListaExpressões, as funções são separadas por vírgulas. Essas funções são específicas do comando CALCULATE e serão descritas em maiores detalhes posteriormente nesta seção. Elas não devem ser confundidas com as funções independentes de mesmo nome. Por exemplo, CALCULATE MIN( ) não é igual a MIN( ).

Escopo Especifica um intervalo de registros utilizados no cálculo. Apenas os registros dentro do intervalo são incluídos no cálculo. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. Para obter maiores informações sobre as cláusulas de escopo, consulte o tópico ” Cláusulas de escopo”. Os comandos que incluem Escopo operam somente na tabela da Área de trabalho ativa.

O escopo padrão para CALCULATE é ALL, ou seja todos os registros.

FOR lExpressão1 Especifica que somente os registros que satisfazem a condição lógica lExpressão1 serão incluídos no cálculo. A inclusão de uma cláusula FOR resulta na inclusão condicional dos registros no cálculo, filtrando os registros indesejáveis.

Rushmore otimizará uma consulta CALCULATE ... FOR se lExpressão1 for uma expressão otimizável. Para um melhor desempenho, use uma expressão otimizável na cláusula FOR. Para obter maiores informações

[Pág.: 74]

Page 75: 74039361 Visual FoxPro Comandos e Funcoes

sobre expressões otimizáveis Rushmore, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição pela qual os registros serão incluídos no cálculo desde que a expressão lógica lExpressão2 resulte em verdadeiro (.T.).

TO ListaVarMem Especifica uma ou mais variáveis de memória nas quais os resultados do cálculo são armazenados. Se você especificar uma variável de memória que não 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 cálculo podem ser armazenados. Se você especificar um nome de matriz que não existe, o Visual FoxPro criará uma matriz automaticamente com o nome especificado. Se a matriz existir, mas não for grande o bastante para conter todos os resultados do cálculo, o Visual FoxPro aumentará automaticamente o tamanho da matriz para abrir espaço para as informações. Se uma matriz existente for maior do que o necessário, os elementos adicionais permanecerão inalterados. Os resultados são armazenados nos elementos da matriz na ordem em que são especificados no comando CALCULATE.NOOPTIMIZE Desativa a otimização Rushmore de CALCULATE. Para obter maiores informações, consulte ” SET OPTIMIZE” e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

AVG(nExpressão) Calcula a média aritmética de nExpressão. Somente os registros que correspondam ao Escopo e/ou à condição opcional FOR ou WHILE serão incluídos no resultado.

CNT( ) Retorna o número de registros da tabela. Somente os registros que correspondam ao Escopo e/ou à condição opcional FOR ou WHILE serão incluídos no resultado.

MAX(eExpressão) Retorna o valor mais alto ou mais recente de eExpressão. Na cláusula MAX( ), pode ser especificado qualquer campo do tipo inteiro, numérico, flutuante, duplo, de caractere, de data, de datahora ou de moeda, ou qualquer expressão que utilize campos desses tipos. Somente os registros que correspondam ao Escopo e/ou à condição opcional FOR ou WHILE serão incluídos no resultado.

MIN(eExpressão) Retorna o valor mais baixo ou mais antigo de eExpressão. Qualquer campo de caractere, data, datahora, numérico, flutuante, inteiro, duplo ou de moeda, ou qualquer expressão válida que utilize campos destes tipos pode ser incluída em eExpressão. Apenas os registros que correspondam ao Escopo e/ou à condição opcional FOR ou WHILE são incluídos no resultado.

NPV(nExpressão1, nExpressão2 [, nExpressão3]) Calcula o valor presente líquido de uma série de fluxos de caixa futuros descontados a uma taxa de juros periódica e constante.

nExpressão1 especifica a taxa de juros expressa como um valor decimal.

nExpressão2 especifica um campo, uma expressão de campo ou uma expressão numérica que representa uma série de fluxos de caixa. Cada fluxo de caixa pode ser positivo ou negativo. Nos casos em que nExpressão2 for um campo, o valor de cada registro do campo será considerado um fluxo de caixa.

nExpressão3 especifica um investimento inicial opcional. Caso o investimento inicial não for incluído, será admitido que ele ocorra no final do primeiro período. Esse investimento inicial é o primeiro registro do campo, sendo negativo a fim de representar uma saída de caixa.

Somente os registros que correspondam ao Escopo e/ou à condição opcional FOR ou WHILE serão incluídos no resultado.

STD(nExpressão) Calcula o desvio padrão de nExpressão. O desvio padrão mede o grau em que os valores dos campos ou das expressões que envolvem campos diferem da média de todos os valores. Quanto menor for o desvio padrão, menor será a variação entre os valores e a média. Somente os registros que correspondam ao Escopo e/ou à condição opcional FOR ou WHILE serão incluídos no resultado.

SUM(nExpressão) Totaliza os valores de nExpressão. Somente os registros que correspondam ao Escopo e/ou à condição opcional FOR ou WHILE serão incluídos no resultado.

VAR(nExpressão) Calcula a variância da média de nExpressão. A variância é o desvio padrão elevado ao quadrado. Quanto menor for a variância, menor será a variação entre os valores e a média. Somente os registros que correspondam ao Escopo e/ou à condição opcional FOR ou WHILE serão incluídos no resultado.

[Pág.: 75]

Page 76: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

Registros que contenham valores nulos não serão incluídos nas operações executadas por CALCULATE.

CALCULATE, exemplo do comando

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE orders && Abre a tabela Orders

SET TALK ONCLEARCALCULATE AVG(order_amt), MIN(order_amt), MAX(order_amt)CALCULATE STD(order_amt), VAR(order_amt) TO gnStd, gnVar

CANCEL, comando

Finaliza a execução do arquivo de programa atual do Visual FoxPro.

Sintaxe

CANCEL

Comentários

O controle retornará à janela Comando quando o Visual FoxPro estiver sendo utilizado de forma interativa. Se um aplicativo distribuído em tempo de execução 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 criação, CANCEL terminará o programa e o controle retorna à janela Comando.

A execução de CANCEL libera todas as variáveis privadas.

CANCEL, exemplo do comando

O exemplo a seguir simula um loop de execução do programa. Pelo loop, você é solicitado a informar se deseja continuar. Se pressionar o botão Cancelar, CANCEL pára a execução do programa.

DO WHILE .T.IF MESSAGEBOX("Deseja continuar?",36) <> 6

CANCELENDIF

ENDDO

CAPSLOCK( ), função

Retorna o modo atual da tecla CAPS LOCK ou ativa ou desativa o modo dessa tecla.

Sintaxe

CAPSLOCK([lExpressão])

Tipos de retorno

Lógico

Argumentos

[Pág.: 76]

Page 77: 74039361 Visual FoxPro Comandos e Funcoes

lExpressão Incluída para ativar ou desativar a tecla CAPS LOCK. CAPSLOCK(.T.) ativa CAPS LOCK e CAPSLOCK(.F.) desativa CAPS LOCK. Um valor lógico correspondente à definição de CAPS LOCK é emitido antes de CAPSLOCK(.T.) ou CAPSLOCK(.F.).

Comentários

A emissão de CAPSLOCK( ) sem argumentos retornará verdadeiro (.T.), caso CAPS LOCK estiver ativado ou falso (.F.), caso CAPS LOCK estiver desativado.

CAPSLOCK( ), exemplo da função

O código a seguir armazena o estado de CAPSLOCK( ) para uma variável do sistema. O comando = executa a função CAPSLOCK( ) para ativar CAPS LOCK. Em seguida, o comando = executa a função CAPSLOCK( ) para definir CAPS LOCK como seu estado anterior.

glOldLock = CAPSLOCK( ) && Grava a definição original= CAPSLOCK(.T.) && Ativa CAPS LOCK

*** Executar qualquer número de instruções ***

= CAPSLOCK(glOldLock) && Retorna à definição original

*** ou, alterne CapsLock para o valor oposto e anterior ***

= CAPSLOCK(!CAPSLOCK( ))WAIT WINDOW= CAPSLOCK(!CAPSLOCK( ))WAIT WINDOW= CAPSLOCK(glOldLock) && Retorna à definição original

CD | CHDIR, comando

Altera o diretório padrão do Visual FoxPro para o diretório 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 diretório.· Um diretório filho.· Qualquer opção acima usando a notação abreviada do MS-DOS ( \ ou ..). Quando você inclui .. para alterar ao diretório pai, deve acrescentar um espaço entre CD ou CHDIR e os dois pontos.

Comentários

Utilize CD ou CHDIR para especificar o diretório padrão do Visual FoxPro. O Visual FoxPro procura arquivos no diretório padrão do Visual FoxPro. Caso o Visual FoxPro não localize um arquivo no diretório padrão, 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 não especificar onde deverá ser colocado, ele será colocado no diretório padrão do Visual FoxPro.

[Pág.: 77]

Page 78: 74039361 Visual FoxPro Comandos e Funcoes

CD | CHDIR, exemplo do comando

O exemplo a seguir utiliza MKDIR para criar um novo diretório denominado mytstdir. Em seguida, CHDIR é utilizado para alterar o novo diretório. GETDIR( ) é utilizado para exibir a estrutura do diretório e, em seguida, RMDIR para remover o diretório mais recente. GETDIR( ) é usado para exibir novamente a estrutura do diretório.

SET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxProMKDIR mytstdir && Cria um novo diretórioCHDIR mytstdir && Altera para o novo diretório= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretórioSET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxProRMDIR mytstdir && Remove o novo diretório= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretório

CDOW( ), função

Retorna o dia da semana de uma determinada expressão de data ou de data e hora.

Sintaxe

CDOW(dExpressão | tExpressão)

Tipos de retorno

Caractere

Argumentos

dExpressão Especifica a data a partir da qual CDOW( ) retorna o dia.

tExpressão Especifica a data e hora a partir da qual CDOW( ) retorna o dia.

Comentários

CDOW( ) retorna o nome do dia da semana como uma seqüência no formato de nome próprio.

CDOW( ), exemplo da função

STORE {02/16/95} TO gdDate Exibe quinta-feiraCLEAR? CDOW(gdDate) &&

CDX( ), função

Retorna o nome do arquivo de índice composto aberto (.CDX) que tem o número de posição de índice especificado.

Sintaxe

CDX(nNúmeroÍndice [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno

Caractere

Argumentos

[Pág.: 78]

Page 79: 74039361 Visual FoxPro Comandos e Funcoes

nNúmeroÍndice A descrição a seguir é relativa a uma tabela com um índice composto estrutural e um ou mais índices compostos:

nNúmeroÍndice Descrição

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 cláusula 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 número de arquivos .CDX abertos Retorna a seqüência vazia.

A descrição a seguir é relativa a uma tabela sem índice composto estrutural e com um ou mais índices compostos:

nNúmeroÍndice Descrição1 Retorna o primeiro nome de arquivo de índice composto especificado na cláusula 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 número de arquivos .CDX abertos Retorna a seqüência vazia.

nÁreaTrabalho Especifica o número 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 nÁreaTrabalho e cAliasTabela, serão retornados os nomes dos arquivos de índice composto correspondentes à tabela na Área de trabalho selecionada no momento.

Comentários

A função CDX( ) é idêntica à função MDX( ).Um índice .CDX (composto) consiste em um arquivo físico contendo várias marcas de índice. Cada marca é uma referência de ordem de índice para a tabela associada.Há dois tipos de arquivos .CDX: índice composto padrão (.CDX) e .CDX estrutural. Um índice composto padrão (.CDX) pode ter um nome diferente da tabela associada e pode residir em um diretório diferente da tabela associada. Uma tabela pode ter vários arquivos de índice composto. Um índice composto é aberto com a cláusula INDEX de USE ou com SET INDEX.

Um .CDX estrutural deve ter o mesmo nome da tabela associada e residir no mesmo diretório. Uma tabela pode ter somente um arquivo de índice estrutural. Os arquivos .CDX estruturais são abertos e atualizados automaticamente quando a tabela associada é aberta com USE.CDX( ) ignora qualquer arquivo .IDX (índice compatível 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 função

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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customer

CLEAR

[Pág.: 79]

Page 80: 74039361 Visual FoxPro Comandos e Funcoes

FOR nCount = 1 TO 254IF !EMPTY(TAG(nCount)) && Verifica marcas no índice

? CDX(nCount) && Exibe nomes de índice estruturalELSE

EXIT && Sai do loop quando não são mais encontradas marcasENDIF

ENDFOR

CEILING( ), função

Retorna o próximo inteiro maior ou igual à expressão numérica especificada.

Sintaxe

CEILING(nExpressão)Tipos de retorno

Numérico

Argumentos

nExpressão Especifica o número cujo próximo inteiro maior é retornado por CEILING( ).

Comentários

CEILING arredonda um número com fração para o próximo inteiro maior.

CEILING( ), exemplo de função

STORE 10.1 TO num1STORE -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 edição.

Sintaxe

CHANGE[FIELDS ListaCampos][Escopo] [FOR lExpressão1] [WHILE lExpressão2][FONT cNomeFonte [,nTamanhoFonte]][STYLE cEstiloFonte][FREEZE NomeCampo][KEY eExpressão1 [, eExpressão2]][LAST | NOINIT][LPARTITION][NAME NomeObjeto][NOAPPEND][NOCLEAR][NODELETE][NOEDIT | NOMODIFY][NOLINK]

[Pág.: 80]

Page 81: 74039361 Visual FoxPro Comandos e Funcoes

[NOMENU][NOOPTIMIZE][NORMAL][NOWAIT][PARTITION nNúmeroColuna [LEDIT] [REDIT]][PREFERENCE NomePreferência][REST][SAVE][TIMEOUT nSegundos][TITLE cTextoTítulo][VALID [:F] lExpressão3 [ERROR cTextoMensagem]][WHEN lExpressão4][WIDTH nLarguraCampo][WINDOW NomeJanela1] [IN [WINDOW] NomeJanela2 | IN SCREEN | IN MACDESKTOP]][COLOR SCHEME nNúmeroEsquema| COLOR ListaParesCores]

Argumentos

Os argumentos de CHANGE são iguais aos de EDIT. Consulte EDIT para obter uma descrição dos argumentos.

Comentários

CHANGE funciona da mesma forma que EDIT.

CHR( ), função

Retorna o caractere associado ao código numérico ANSI especificado.

Sintaxe

CHR(nCódigoANSI)

Tipos de retorno

Caractere

Argumentos

nCódigoANSI Especifica um número entre 0 e 255, cujo caractere ANSI equivalente é retornado por CHR( ).

Utilize ASC( ) para retornar o valor ANSI para um caractere específico.

Comentários

CHR( ) retorna um caractere único correspondente à posição numérica do caractere na tabela de caracteres da página de código atual. CHR( ) pode ser utilizado para enviar códigos de controle de impressão para a impressora.

CHR( ), exemplo de função

O exemplo a seguir exibe os números 65 a 75 e utiliza CHR( ) para exibir seus valores de caractere A a K correspondentes.

CLEARFOR nCOUNT = 65 TO 75

? nCount && Exibe o valor numérico?? ' ' + CHR(nCount) && Exibe o caractere

ENDFOR

[Pág.: 81]

Page 82: 74039361 Visual FoxPro Comandos e Funcoes

CHRSAW( ), função

Determina se um caractere está presente ou não no buffer de teclado.

Sintaxe

CHRSAW([nSegundos])

Tipos de retorno

Lógico

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 inclusão 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 não for pressionada após um número específico de segundos.

Comentários

CHRSAW( ) retornará verdadeiro (.T.) se um caractere estiver presente no buffer do teclado; caso contrário, retornará falso (.F.). CHRSAW( ) não afeta o conteúdo do buffer do teclado.

CHRSAW( ), exemplo de função

No exemplo a seguir, o sistema exibe uma janela que contém campos de entrada criados com os comandos @... GET e espera 5 segundos para a entrada do teclado. Se uma tecla não for pressionada neste período de tempo, CHRSAW( ) resultará em falso (.F.) e o programa será finalizado.

SET TALK OFFDEFINE WINDOW wEnter FROM 7,10 to 13,70 PANELACTIVATE 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' NOWAITIF NOT CHRSAW(5)

DEACTIVATE WINDOW wEnterCLEAR GETS

ELSEREADDEACTIVATE WINDOW wEnter

ENDIFRELEASE WINDOW wEnterWAIT CLEAR

CHRTRAN( ), função

Em uma expressão de caracteres, substitui cada caractere que corresponde a um caractere em uma segunda expressão pelo caractere correspondente em uma terceira expressão de caracteres.

Sintaxe

CHRTRAN(cExpressãoProcurada, cExpressãoProcura, cExpressãoSubstituição)

Tipos de retorno

Caractere

[Pág.: 82]

Page 83: 74039361 Visual FoxPro Comandos e Funcoes

Argumentos

cExpressãoProcurada Especifica a expressão na qual CHRTRAN( ) substitui caracteres.

cExpressãoProcura Especifica a expressão que contém os caracteres que CHRTRAN( ) procura em cExpressãoProcurada.

cExpressãoSubstituição Especifica a expressão que contém os caracteres de substituição.

Se um caractere em cExpressãoProcura for localizado em cExpressãoProcurada, o caractere em cExpressãoProcurada será substituído pelo caractere de cExpressãoSubstituição que estiver na mesma posição em cExpressãoSubstituição que o respectivo caractere em cExpressãoProcura.

Se cExpressãoSubstituição tiver menos caracteres do que cExpressãoProcura, os caracteres adicionais em cExpressãoProcura serão excluídos de cExpressãoProcurada. Se cExpressãoSubstituição tiver mais caracteres do que cExpressãoProcura, os caracteres adicionais em cExpressãoSubstituição serão ignorados.

Comentários

CHRTRAN( ) converte a expressão de caracteres cExpressãoProcurada utilizando as expressões de conversão cExpressãoProcura e cExpressãoSubstituição e retorna a seqüência de caracteres resultante.

CHRTRAN( ), exemplo de função

? CHRTRAN('ABCDEF', 'ACE', 'XYZ') && Exibe XBYDZF? CHRTRAN('ABCD', 'ABC', 'YZ') && Exibe YZD? CHRTRAN('ABCDEF', 'ACE', 'XYZQRST') && Exibe XBYDZF

CHRTRANC( ), função

Em uma expressão de caracteres, substitui cada caractere que corresponde a um caractere em uma segunda expressão pelo caractere correspondente em uma terceira expressão de caracteres.

Sintaxe

CHRTRANC(cProcurado, cProcurarPor, cSubstituição)

Tipos de retorno

Caractere

Argumentos

cProcurada Especifica a expressão na qual CHRTRANC( ) substitui caracteres.

cProcurarPor Especifica a expressão que contém os caracteres que CHRTRANC( ) procura em cProcurada.

cSubstituição Especifica a expressão que contém os caracteres de substituição.

Se um caractere em cProcurarPor for localizado em cProcurada, o caractere em cProcurada será substituído por um caractere de cSubstituição que estiver na mesma posição em cSubstituição que o respectivo caractere em cProcurarPor.

Se cSubstituição tiver menos caracteres do que cProcurarPor, os caracteres adicionais em cProcurarPor serão excluídos de cProcurado. Se cSubstituição tiver mais caracteres do que cProcurarPor, os caracteres adicionais em cSubstituição serão ignorados.

Comentários

CHRTRANC( ) é projetado para facilitar o trabalho com expressões que contenham caracteres de byte duplo. Utilize CHRTRANC( ) para substituir os caracteres de byte único por caracteres de byte duplo ou vice-versa.

[Pág.: 83]

Page 84: 74039361 Visual FoxPro Comandos e Funcoes

SE as expressões contiverem apenas caracteres de byte único, o CHRTRANC( ) será equivalente a CHRTRAN( ).

CLEAR, comandos

Libera o item ou itens especificados da memória.

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 memória todas as matrizes e variáveis de memória e todas as definições do usuário para barras de menus, menus e janelas. CLOSE ALL também fecha qualquer tabela, inclusive todos os arquivos de índice, de formatação e memo associados, e seleciona a Área de trabalho 1. CLEAR ALL também remove da memória todas as funções de bibliotecas compartilhadas externas registradas por meio de DECLARE - DLL.

CLEAR ALL não libera variáveis de memória do sistema e não limpa o buffer do programa compilado. Para limpar o buffer, utilize CLEAR PROGRAM.

Se você emitir CLEAR ALL dentro de um evento ou método de um controle ou objeto ativo, o Visual FoxPro exibirá uma mensagem de erro. Uma variável de memória do tipo objeto não pode ser liberada da memória enquanto o controle ou objeto associado a ela estiver ativo.

CLASS NomeClasse Limpa uma definição de classe da memória.Quando uma instância de classe é criada, o Visual FoxPro guarda a definição de classe na memória, mesmo depois que a instância é liberada. Utilize CLEAR CLASS para limpar uma definição de classe da memória depois que a instância for liberada.

CLASSLIB NomeBibliotecaClasses Limpa da memória todas as definições de classes contidas em uma biblioteca de classes visuais. Se existirem instâncias de classes na biblioteca de classes, as definições de classes não são limpas da memória. Entretanto, todas as definições de classes que não tenham instâncias são limpas da memória.

DEBUG Limpa todos os pontos de interrupção no Depurador e restaura as janelas de depuração (Chamar Pilha, Rastrear, Observar etc.) às suas posições padrão.

Se Clear Debug for emitido quando o Depurador estiver fechado, o Depurador será aberto com as janelas de depuração em suas posições padrão.

Trabalha no modo de moldura do depurador ou fox.

DLLS Limpa da memória todas as bibliotecas compartilhadas externas com DECLARE - DLL. Consulte DECLARE -DLL para obter maiores informações sobre como registrar as funções de bibliotecas compartilhadas externas.

EVENTS Interrompe o processamento de eventos iniciado com READ EVENTS. Quando CLEAR EVENTS for executado, a execução do programa continuará na linha do programa imediatamente após READ EVENTS.

FIELDS Libera uma lista criada com SET FIELDS e executa SET FIELDS OFF. A diferença entre CLEAR FIELDS e SET FIELDS TO é que o primeiro libera todas as listas de campos de todas as Áreas de trabalho, e não apenas a lista de campos da Área de trabalho atual. Além disso, SET FIELDS TO não emite um comando SET FIELDS OFF de forma implícita.

[Pág.: 84]

Page 85: 74039361 Visual FoxPro Comandos e Funcoes

GETS Libera todos os controles @ ... GET pendentes. O comando CLEAR também libera todos os controles @ ... GET pendentes.

MACROS Libera da memória todas as macros de teclado, inclusive todas as atribuições de teclas definidas com SET FUNCTION. As macros podem ser salvas em um arquivo de macros ou em um campo Memo através de SAVE MACROS e restauradas posteriormente com RESTORE MACROS. As macros padrão também podem ser restauradas com RESTORE MACROS.

MEMORY Libera da memória todas as matrizes e variáveis de memória públicas e privadas. As variáveis de memória do sistema não são liberadas.

MENUS Libera todas as definições de barras de menus da memória.

POPUPS Libera da memória todas as definições de menus criadas com DEFINE POPUP.

PROGRAM Limpa o buffer de programa compilado. O Visual FoxPro mantém um buffer dos últimos programas executados. Em raras ocasiões, o Visual FoxPro poderá não reconhecer as alterações feitas nos arquivos de programa no disco. CLEAR PROGRAM força 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 não reconhecer as alterações feitas nos arquivos de programa é a utilização de um editor externo ou residente (TSR) para fazer essas modificações. Com exceção desta situação, não será necessário utilizar CLEAR PROGRAM.

PROMPT Libera itens de menus criados com @ ... PROMPT.

READ [ALL] Incluído para manter a compatibilidade com versões 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 memória. Se nenhum nome de arquivo for especificado, todos os arquivos de ícone, cursor, fonte, figura e bitmap serão removidos da memória.

Quando o Visual FoxPro exibe um recurso de fonte, ícone, cursor, figura ou bitmap, o recurso fica na memória 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 memória), o Visual FoxPro não recarregará o recurso.

Limpar um arquivo de recurso é útil principalmente para remover uma imagem gráfica da memória e fazer com que o Visual FoxPro recarregue uma imagem com o mesmo nome a partir do disco. Por exemplo, um relatório pode exibir imagens gráficas de um banco de dados, todas denominadas TEMP; no entanto, como todas possuem o mesmo nome, o Visual FoxPro não recarregará cada nova imagem gráfica, a menos que uma já existente tenha sido limpa da memória 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 memória todas as características de janelas definidas pelo usuário e limpa as janelas da janela principal do Visual FoxPro ou da janela ativa definida pelo usuário. Utilize SAVE WINDOW para salvar as definições de janelas em um arquivo ou campo Memo para uso posterior.

CLEAR WINDOWS libera da memória qualquer referência de variáveis de memória aos formulários. Por exemplo, os comandos a seguir criam uma referência de variável de memória para um formulário e, em seguida, exibem informações sobre a variável:

goMyForm = CREATEOBJECT('FORM')DISPLAY MEMORY LIKE goMyForm && Exibe GOMYFORM O FORM

Ao se emitir CLEAR WINDOWS, a referência da variável de memória é liberada e a variável de memória passa a conter o valor nulo:

CLEAR WINDOWSDISPLAY MEMORY LIKE goMyForm && Exibe GOMYFORM O .NULL.

[Pág.: 85]

Page 86: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

CLEAR apaga a janela principal do Visual FoxPro ou a janela atual definida pelo usuário e libera todos os controles @ ... GET pendentes da memória. Você pode incluir CLEAR em arquivos de formatação.

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 também fecha todos os arquivos abertos com as funções de arquivo de nível inferior FCREATE( ) e FOPEN( ). CLOSE ALL não fecha um arquivo aberto com SET PRINT.

CLOSE ALL também fecha os itens:

· Criador de formulários· Gerenciador de projetos· Criador de etiquetas· Criador de relatórios· Criador de consultas

CLOSE ALL não 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 não houver um banco de dados aberto no momento, todas as tabelas livres, índices e arquivos de formatação abertos em todas as Áreas de trabalho são fechados e a Área de trabalho 1 é selecionada.

ALL

Especifica que serão 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 formatação 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 formatação da Área de trabalho atual aberto com SET FORMAT.

[Pág.: 86]

Page 87: 74039361 Visual FoxPro Comandos e Funcoes

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) não é 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 não haja um banco de dados aberto, CLOSE TABLES fechará todas as tabelas livres de todas as Áreas de trabalho.

CLOSE TABLES não deverá ser emitido quando uma transação estiver em andamento, pois o Visual FoxPro irá gerar uma mensagem de erro.

ALLEspecifica que todas as tabelas, inclusive as livres, serão fechadas em todas as Áreas de trabalho. Todos os bancos de dados permanecerão abertos.

CMONTH( ), função

Retorna o nome do mês de uma determinada expressão de data ou Data Hora.

Sintaxe

CMONTH(dExpressão | tExpressão)

Tipos de retorno

Caractere

Argumentos

dExpressão Especifica a expressão de data a partir da qual CMONTH( ) retorna o nome do mês.

tExpressão Especifica a expressão DataHora a partir da qual CMONTH( ) retorna o nome do mês.

Comentários

CMONTH( ) retorna o nome do mês como uma seqüência no formato de substantivo próprio.

CMONTH( ), exemplo de função

? 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 expressões e exibe os resultados.

Sintaxe

? | ?? Expressão1[PICTURE cCódigosFormato] | [FUNCTION cCódigosFormato] | [VnLargura][AT nColuna][FONT cNomeFonte [, nTamanhoFonte] [STYLE cEstiloFonte | Expressão2]][, Expressão3] ...

Argumentos

[Pág.: 87]

Page 88: 74039361 Visual FoxPro Comandos e Funcoes

? Expressão1 Avalia a expressão especificada por Expressão1 e envia um retorno de carro e alimentação de linha antes dos resultados da expressão. Os resultados são exibidos na próxima linha da janela principal do Visual FoxPro ou da janela ativa definida pelo usuário e são impressos na margem esquerda de uma página, a menos que um código de função cCódigosFormato ou a variável do sistema _ALIGNMENT especifique o contrário.

Se você omitir as expressões, uma linha em branco será exibida ou impressa. Um espaço será colocado entre os resultados dessas expressões quando várias expressões forem incluídas.

?? Expressão1 Avalia a expressão especificada por Expressão1 e exibe os resultados da expressão na linha atual na posição atual da janela principal do Visual FoxPro, de uma janela ativa definida pelo usuário ou da impressora. Um retorno de carro e alimentação de linha não são enviados antes dos resultados.

PICTURE cCódigosFormato Especifica um formato de figura no qual é exibido o resultado de Expressão1. cCódigosFormato pode consistir em códigos de função, códigos de figura ou em uma combinação dos dois. É possível utilizar os mesmos códigos disponíveis nas propriedades Format e InputMask.

Os códigos de função afetam o formato geral do resultado; os códigos de figura agem sobre caracteres individuais no resultado. Se os códigos de função forem utilizados em cCódigosFormato, eles deverão aparecer antes dos códigos de figura e ser precedidos por @. Vários códigos de função sem espaços incorporados podem aparecer logo depois de @. O último código de função deve ser seguido de um ou mais espaços. O(s) espaço(s) indicam o fim dos códigos de função e o início dos códigos de figura.

FUNCTION cCódigosFormato Especifica um código de função a ser incluído na saída ? e ??. Se a cláusula de função estiver incluída, não coloque @ antes dos códigos de função. Os códigos de função devem ser precedidos por @ quando incluídos em PICTURE.

VnLargura Especifica um código de função especial que permite que os resultados de uma expressão de caracteres se estendam verticalmente em um número limitado de colunas. nLargura especifica o número de colunas na saída.

? 'Este é um exemplo de como o código de função V funciona.' ;FUNCTION 'V10'

AT nColuna Especifica o número da coluna onde a saída é exibida. Essa opção permite que você alinhe a saída em colunas para criar uma tabela. A expressão numérica nColuna pode ser uma função definida pelo usuário que retorne um valor numérico.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte para a saída ? | ??. 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 cláusula FONT, mas omitir o tamanho em pontos nTamanhoFonte, será utilizada uma fonte de 10 pontos.

Caso omita cláusula FONT e a saída ? | ?? for colocada na janela principal do Visual FoxPro, a fonte da janela principal do FoxPro será utilizada na saída. Caso omita a cláusula FONT e a saída ? | ?? for colocada em uma janela definida pelo usuário, a fonte da janela definida pelo usuário será utilizada na saída.

· Se a fonte especificada não estiver disponível, ela será substituída por outra fonte com características semelhantes.

STYLE cEstiloFonte Especifica um estilo de fonte para a saída ? | ??. Se você omitir a cláusula STYLE, o estilo de fonte Normal será utilizado. Se o estilo de fonte especificado não estiver disponível, ele será substituído por um estilo de fonte com características semelhantes.

Observação É necessário incluir a cláusula FONT ao especificar um estilo de fonte com a cláusula STYLE.

Os estilos de fonte que podem ser especificados com cEstiloFonte são:

[Pág.: 88]

Page 89: 74039361 Visual FoxPro Comandos e Funcoes

Caractere Estilo de fonte

B NegritoI ItálicoN NormalO ContornoQ OpacoS Sombreado- RiscadoT TransparenteU SublinhadoVocê pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. Por exemplo, o comando a seguir exibe a data do sistema em Courier Negrito Itálico:

? DATE( ) FONT 'COURIER' STYLE 'BI'

Comentários

? e ?? avaliam expressões e enviam os resultados para a janela principal do Visual FoxPro, para uma janela ativa definida pelo usuário ou para a impressora.

Caso SET PRINTER estiver ativado (ON), os resultados da expressão serão direcionados para a impressora e para a janela principal do Visual FoxPro ou para uma janela ativa definida pelo usuário. Se SET PRINTER estiver ativado (ON) e SET CONSOLE estiver desativado (OFF), os resultados serão direcionados somente para a impressora.

? | ??, exemplo do comando

? 15 * (10+10)? 'Bem-vindo ao ' PICTURE '@!'?? 'Visual FoxPro'

???, comando

Envia a saída diretamente para a impressora.

Sintaxe

??? cExpressão

Argumentos

cExpressão Especifica os caracteres que são enviados para a impressora.

Comentários

Um grupo de três pontos de interrogação desconsidera o driver da impressora e envia o conteúdo de cExpressão diretamente para a impressora. cExpressão deve conter códigos de impressora válidos.

Os códigos de controle de impressora permitem reinicializar a impressora, alterar o tamanho e estilo de tipo gráfico, bem como ativar ou desativar a impressão em negrito. Esses códigos podem consistir em qualquer combinação de caracteres que podem ser ou não impressos e são específicos da impressora que está sendo utilizada. Existem várias maneiras diferentes de direcionar códigos de controle à impressora:

· Utilizar combinações de CHR( ) e seqüências entre aspas concatenadas com + para enviar caracteres ASCII diretamente à impressora.· Utilizar aspas para enviar uma seqüência contendo códigos de impressora ou caracteres ASCII.

[Pág.: 89]

Page 90: 74039361 Visual FoxPro Comandos e Funcoes

· Os códigos podem ser enviados para a impressora antes do início e depois do término da impressão com as variáveis do sistema _PSCODE e _PECODE. Para obter maiores informações, consulte _”PSCODE” e _”PECODE”.

Os códigos de controle de impressora variam de impressora a impressora. A melhor fonte de informações sobre os códigos de controle de impressora é o manual que acompanha a sua impressora.

CONTINUE, comando

Dá continuidade ao LOCATE anterior.Sintaxe

CONTINUE

Comentários

CONTINUE é utilizado depois que LOCATE localiza um registro, a fim de continuar a operação de LOCATE. CONTINUE move o ponteiro do registro até o próximo registro para o qual a expressão lógica especificada no LOCATE anterior resultar verdadeiro (.T.).

CONTINUE pode ser utilizado várias vezes até o fim do arquivo ou do escopo especificado com LOCATE.

Se CONTINUE localizar um registro, RECNO( ) retornará o número do registro, FOUND( ) retornará um valor verdadeiro (.T.) e EOF( ) retornará um valor falso (.F.).

Se CONTINUE não localizar um registro, RECNO( ) retornará o número 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 França são contados e o total será exibido. Todos os registros são encontrados com a utilização de um comando LOCATE seguido de um comando CONTINUE dentro de um loop.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerSET TALK OFFSTORE 0 TO gnCount

LOCATE FOR ALLTRIM(UPPER(country)) = 'FRANCE'DO WHILE FOUND( )

gnCount = gnCount + 1CONTINUE

ENDDO? 'Total de clientes na França: '+ LTRIM(STR(gnCount))

COPY FILE, comando

Duplica qualquer tipo de arquivo.

Sintaxe

COPY FILE NomeArquivo1 TO NomeArquivo2

Comentários

[Pág.: 90]

Page 91: 74039361 Visual FoxPro Comandos e Funcoes

COPY FILE cria uma duplicata do arquivo cujo nome é especificado em NomeArquivo1. É possível utilizar COPY FILE para copiar qualquer tipo de arquivo. O arquivo a ser copiado não pode estar aberto. Você deve incluir as extensões 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 cópias de backup de todos os arquivos de programa com a extensão .PRG no diretório ou pasta atual, emita COPY FILE *.PRG TO *.BAK.

Se você utilizar COPY FILE para criar uma cópia de backup de uma tabela, que possui um campo Memo, um índice estrutural ou ambos, certifique-se de copiar também 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 à página de código para a nova tabela livre são idênticos à tabela selecionada atualmente.

FIELDS ListaCampos Especifica que apenas os campos, cujos nomes estão indicados em ListaCampos, serão copiados para a nova tabela. Se você omitir FIELDS ListaCampos, todos os campos serão copiados para a nova tabela.

[WITH] CDX | [WITH] PRODUCTION Cria, para a nova tabela, um arquivo de índice estrutural idêntico ao da tabela existente. As marcas e as expressões de índice do arquivo de índice estrutural original são copiadas para o novo arquivo de índice estrutural.

As cláusulas CDX e PRODUCTION são idênticas.

No Visual FoxPro, um índice primário 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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

COPY STRUCTURE TO backupUSE backupAPPEND FROM customer FOR country = 'UK'BROWSE FIELDS contact, countryUSEDELETE FILE backup.dbf

COPY STRUCTURE EXTENDED, comando

[Pág.: 91]

Page 92: 74039361 Visual FoxPro Comandos e Funcoes

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 serão incluídos em um registro na nova tabela. Se você omitir FIELDS ListaCampos, todos os campos terão um registro na nova tabela.

Comentários

As informações sobre cada campo da tabela selecionada no momento são 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 conteúdo.

CampoTipo do campo Conteúdo

FIELD_NAME Caractere Nomes de campos da tabela selecionada (128 caracteres de largura)FIELD_TYPECaractere Tipos de campos:C = CaractereY = MoedaN = NuméricoF = FlutuanteI = InteiroB = DuploD = DataT = DataHoraL = LógicoM = MemoG = GeralFIELD_LEN Numérico Largura dos camposFIELD_DEC Numérico Número de casas decimais em campos numéricosFIELD_NULL LógicoSuporte ao valor nulo do campoFIELD_NOCP LógicoNão é permitida a tradução da página de código (somente campos do tipo caractere e memo)FIELD_DEFA Memo Valores padrão do campoFIELD_RULE Memo Regras de validação do campoFIELD_ERR Memo Texto de validação do campoTABLE_RULE Memo Regra de validação da tabelaTABLE_ERR Memo Texto de validação da tabelaTABLE_NAME Caractere Nome de tabela extenso (somente o primeiro registro)INS_TRIG Memo Inserir expressão de disparo (somente o primeiro registro)UPD_TRIG Memo Atualizar expressão de disparo (somente o primeiro registro)DEL_TRIG Memo Excluir expressão de disparo (somente o primeiro registro)TABLE_CMTMemo Comentário da tabela (somente o primeiro registro)

Você pode modificar a tabela recém-criada e utilizar CREATE FROM para criar uma nova tabela com uma estrutura diferente. COPY STRUCTURE e CREATE FROM permitem a alteração da estrutura de uma tabela através de programação.

[Pág.: 92]

Page 93: 74039361 Visual FoxPro Comandos e Funcoes

A largura do campo FIELD_NAME é de 10 caracteres em versões 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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE orders && Abre a tabela OrdersCLEARDISPLAY STRUCTURE

WAIT WINDOW 'Estrutura da tabela orders' NOWAITCOPY STRUCTURE EXTENDED TO tempUSE tempWAIT WINDOW 'A tabela temp - 1 linha por campo em orders' NOWAITBROWSECREATE backup FROM tempUSE backupDISPLAY STRUCTUREWAIT WINDOW 'Backup.dbf possui a mesma estrutura que orders' NOWAITUSEDELETE FILE temp.dbfDELETE 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 NomeArquivoÍndice

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 contém a marca. Inclua esta cláusula 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 não for encontrada nesse arquivo, o Visual FoxPro pesquisará todos os arquivos de índice composto não-estrutural que estiverem abertos.

TO NomeArquivoÍndice Especifica o nome do arquivo de índice de entrada única .IDX a ser criado.

Comentários

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 são abertos automaticamente quando você abre uma tabela.

[Pág.: 93]

Page 94: 74039361 Visual FoxPro Comandos e Funcoes

Os índices compostos não-estruturais devem ser explicitamente abertos com USE ... INDEX ou SET INDEX. Para obter maiores informações 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 lExpressão1] [WHILE lExpressão2][NOOPTIMIZE]

Argumentos

NomeMatriz Especifica a matriz para a qual os dados da tabela são copiados.

FIELDS ListaCampos Especifica que apenas os campos especificados em ListaCampos serão copiados para a matriz. Se você omitir FIELDS ListaCampos, todos os campos serão copiados para a matriz, caso ela possua o número suficiente de colunas.

Escopo Especifica um intervalo de registros a serem copiados para a matriz. Apenas os registros dentro do intervalo são copiados. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

Para obter maiores informações sobre cláusulas de escopo, consulte o tópico Cláusulas de Escopo.

O escopo padrão para COPY TO ARRAY é ALL (todos os registros).

FOR lExpressão1 Especifica que apenas os registros que satisfazem a condição lógica lExpressão1 serão copiados para a matriz. Ao incluir FOR, você poderá copiar os registros condicionalmente para a matriz, filtrando os registros indesejáveis.

Uma otimização Rushmore ocorrerá em uma consulta COPY TO ARRAY que inclui FOR lExpressão1 se lExpressão1 for uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter informações sobre expressões otimizáveis Rushmore, consulte SET OPTIMIZE e “Compreendendo a Tecnologia Rushmore” no capítulo 15, “Otimizando Aplicativos,” no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição pela qual os registros serão copiados para a matriz desde que a expressão lógica lExpressão2 resulte em verdadeiro (.T.).

NOOPTIMIZE Desativa a otimização Rushmore de COPY TO ARRAY. Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a Tecnologia Rushmore” no capítulo 15, “Otimizando Aplicativos”, no Guia do Desenvolvedor.

Comentários

COPY TO ARRAY e SCATTER são semelhantes. COPY TO ARRAY copia vários registros para uma matriz, enquanto SCATTER copia apenas um registro para uma matriz ou um conjunto de variáveis de memória. COPY TO ARRAY e SCATTER criarão uma nova matriz caso não exista uma matriz com o nome especificado.

[Pág.: 94]

Page 95: 74039361 Visual FoxPro Comandos e Funcoes

Para copiar um só registro para uma matriz, você pode especificar uma matriz unidimensional. A matriz unidimensional especificada deve ter o mesmo número de elementos que os campos da tabela, sem contar os campos Memo. Os campos Memo são 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 permanecerão inalterados. Caso o número de elementos da matriz seja menor do que o número de campos da tabela, os campos restantes serão ignorados.

Para copiar vários registros ou uma tabela inteira para uma matriz, especifique uma matriz bidimensional. O número de linhas na matriz corresponde ao número de registros que a matriz pode conter, e o número de colunas corresponde ao número 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 número de colunas da matriz for maior do que o número de campos da tabela, as colunas restantes não serão alteradas. Se o número de colunas da matriz for menor do que o número de campos da tabela, os campos restantes não serão armazenados na matriz.

Cada linha sucessiva na matriz é preenchida com o conteúdo do registro seguinte na tabela. Se o número de linhas da matriz for maior do que o número de registros da tabela, as linhas restantes não serão alteradas. Se o número de linhas da matriz for menor do que o número de registros da tabela, os registros restantes não serão armazenados na matriz.

Os dados podem ser copiados das matrizes para os novos registros de tabela com APPEND FROM ARRAY. Eles também podem ser copiados de uma matriz ou de um conjunto de variáveis de memória para os registros de uma tabela, através de GATHER.

COPY TO ARRAY, exemplo do comando

No exemplo a seguir, a tabela customer é aberta. Uma matriz bidimensional é então criada e os três primeiros registros de customer são copiados para a matriz. DISPLAY MEMORY mostra os dados armazenados na matriz.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

DIMENSION gaTemp(3,10)COPY NEXT 3 TO ARRAY gaTempDISPLAY MEMORY LIKE gaTemp

COPY TO, comando

Cria um novo arquivo a partir dos conteúdos da tabela selecionada no momento.

Sintaxe

COPY TO NomeArquivo[DATABASE NomeBancoDeDados [NAME NomeTabelaExtenso]][FIELDS ListaCampos| FIELDS LIKE Estrutura| FIELDS EXCEPT Estrutura][Escopo] [FOR lExpressão1] [WHILE lExpressão2][[WITH] CDX] | [[WITH] PRODUCTION][NOOPTIMIZE][[TYPE] [FOXPLUS | FOX2X | DIF | MOD

[Pág.: 95]

Page 96: 74039361 Visual FoxPro Comandos e Funcoes

| SDF | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5| DELIMITED [WITH Delimitador | WITH BLANK | WITH TAB| WITH CHARACTER Delimitador]]][AS nPáginaCódigo]

Argumentos

NomeArquivo Especifica o nome do novo arquivo criado por COPY TO. Se você não incluir uma extensão com o nome do arquivo, será atribuída a extensão padrão do tipo de arquivo especificado. Se você não especificar um tipo de arquivo, COPY TO criará uma nova tabela do Visual FoxPro e atribuirá a extensão padrão .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 serão copiados para o novo arquivo. Se você omitir FIELDS ListaCampos, todos os campos serão copiados para o arquivo. Se o arquivo que você está criando não for uma tabela, os campos Memo não serão copiados para o novo arquivo, mesmo que nomes de campos Memo tenham sido incluídos na lista de campos.

FIELDS LIKE Estrutura Especifica que os campos da tabela original, correspondentes à estrutura do arquivo estrutura, são incluídos no novo arquivo criado por COPY TO.

FIELDS EXCEPT Estrutura Especifica que todos os campos, exceto os que correspondem ao estrutura do arquivo Estrutura, são incluídos 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 incluídos no novo arquivo, Utilize:

COPY TO mytable FIELDS LIKE A*,P*

A cláusula LIKE pode ser combinada com a cláusula 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 são copiados. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. Para obter maiores informações sobre cláusulas de escopo, consulte o tópico Cláusulas de Escopo.

FOR lExpressão1 Especifica que somente os registros para os quais a condição lógica lExpressão1 resulta em verdadeiro (.T.) são copiados para o arquivo. Inclua FOR lExpressão1 para copiar registros condicionalmente, filtrando os registros indesejáveis.

Uma otimização Rushmore™ ocorrerá em COPY TO com uma cláusula FOR lExpressão1 se lExpressão1 for uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR lExpressão1.

Para obter informações sobre expressões otimizáveis Rushmore, consulte “SET OPTIMIZE” e “Compreendendo a Tecnologia Rushmore” no capítulo 15, “Otimizando Aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição pela qual os registros serão copiados, desde que a expressão lógica lExpressão2 resulte em verdadeiro (.T.).

[WITH] CDX | [WITH] PRODUCTION Cria, para a nova tabela, um arquivo de índice estrutural idêntico ao da tabela existente. As marcas e as expressões de índice do arquivo de índice estrutural original são copiadas para o novo arquivo de índice estrutural. As cláusulas CDX e PRODUCTION são idênticas.

Não inclua CDX ou PRODUCTION, se a cópia estiver sendo feita para um arquivo que não pertence a uma nova tabela do Visual FoxPro.

[Pág.: 96]

Page 97: 74039361 Visual FoxPro Comandos e Funcoes

NOOPTIMIZE Desativa a otimização Rushmore de COPY TO.

Para obter maiores informações, consulte “ SET OPTIMIZE” e “Compreendendo a Tecnologia Rushmore” no capítulo 15, “Otimizando Aplicativos”, no Guia do Desenvolvedor.

TYPE Especifica o tipo de arquivo, caso o arquivo criado não seja uma tabela do Visual FoxPro. Embora você deva especificar um tipo de arquivo, não é necessário 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 cláusula FOXPLUS para criar uma tabela que possa ser utilizada no FoxBASE+. O campo Memo do Visual FoxPro não pode conter dados binários, pois o FoxBASE+ não suporta dados binários em campos Memo.

FOX2X Cria uma nova tabela que pode ser aberta em versões anteriores do FoxPro (versões 2.0, 2.5 e 2.6).

Para campos do tipo Numérico, Flutuante, Inteiro, Duplo e Moeda, valores nulos na tabela-fonte são convertidos para zero na nova tabela. Para outros tipos de campo, valores nulos na tabela-fonte são deixados em branco na nova tabela. Para obter maiores informações sobre valores em branco, consulte “ ISBLANK( )”.

A tabela abaixo lista os tipos de campo do Visual FoxPro que serão convertidos em tipos de campos diferentes na nova tabela, quando o argumento FOX2X for incluído.

Tipo de Campo do Visual FoxPro Tipo de Campo do FoxPro 2.X

Moeda FlutuanteDataHora DataDuplo Flutuante Inteiro NuméricoDIF 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 extensão .DIF, caso não seja incluída uma extensão em NomeArquivo.MOD Cria um arquivo do Microsoft Multiplan® versão 4.01. O nome do novo arquivo do Microsoft Multiplan receberá a extensão .MOD, caso não seja incluída uma extensãoSDF 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 alimentação de linha. Os campos não são delimitados. O nome do arquivo SDF receberá a extensão .TXT, caso não seja incluída uma extensão.

SYLK Cria um arquivo de intercâmbio SYLK (Symbolic Link). Os arquivos SYLK são 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 não possuem extensão.WK1 Cria um arquivo de planilha do Lotus® 1-2-3® versão 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 extensão de nome de arquivo .WK1.

WKS Cria um arquivo de planilha do Lotus 1-2-3 versão 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 extensão de nome de arquivo .WKS.WR1 Cria um arquivo de planilha do Lotus Symphony® versão 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 extensão de nome de arquivo .WR1.

WRK Cria um arquivo de planilha do Lotus Symphony versão 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 extensão de nome de arquivo .WR1.XLS Cria um arquivo de planilha do Microsoft Excel versão 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 extensão .XLS, caso não seja incluída uma extensão.

[Pág.: 97]

Page 98: 74039361 Visual FoxPro Comandos e Funcoes

XL5 Cria um arquivo de planilha do Microsoft Excel versão 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 extensão .XLS, caso não seja incluída uma extensão.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 alimentação de linha. O separador de campo padrão é a vírgula. Como os dados de caractere podem incluir vírgulas, os campos de caractere também podem ser delimitados por aspas.

A menos que você especifique outra coisa, a extensão .TXT será atribuída a todos os arquivos do tipo DELIMITED recém-criados.DELIMITED WITH Delimitador Cria um arquivo delimitado com campos de caractere delimitados por um caractere que não seja as aspas. O caractere que delimita campos de caractere é especificado com Delimitador.DELIMITED WITH BLANK Cria um arquivo delimitado com campos separados por espaços em vez de vírgulas.DELIMITED WITH TAB Cria um arquivo delimitado com campos separados por tabulações em vez de vírgulas.DELIMITED WITH CHARACTER Delimitador Cria um arquivo delimitado com todos os campos delimitados pelo caractere especificado por Delimitador. Se Delimitador for um ponto-e-vírgula (o caractere utilizado no Visual FoxPro para indicar continuação de linha de comando), coloque o caractere de ponto-e-vírgula entre aspas. Você também pode especificar as palavras-chave BLANK e TAB para Delimitador.

Observe que a cláusula WITH do Delimitador pode ser combinada com a cláusula 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-vírgula:

COPY TO mytxt.txt DELIMITED WITH _ WITH CHARACTER ‘;’

AS nPáginaCódigo Especifica a página de código para a tabela ou arquivo criado por COPY TO. O Visual FoxPro copia o conteúdo da tabela selecionada no momento e, ao copiar os dados, converte-os automaticamente para a página de código especificada para a nova tabela ou arquivo. Se for possível, o Visual FoxPro marcará a tabela ou arquivo recém-criado com a página de código especificada.

Se você especificar para nPáginaCódigo um valor que não seja suportado, o Visual FoxPro gera uma mensagem de erro. Você pode utilizar GETCP( ) em nPáginaCódigo a fim de exibir a caixa de diálogo Página de código, onde poderá especificar uma página de código para a tabela ou o arquivo criado pelo Visual FoxPro.

Se você omitir AS nPáginaCódigo, a tabela ou o arquivo recém-criados serão convertidos para a página de código atual do Visual FoxPro.

Caso nPáginaCódigo seja igual a 0, não ocorrerá a conversão de página de código e a tabela ou arquivo recém-criados não serão marcados com uma página de código.

Comentários

Caso uma ordem de índice seja definida, os registros serão copiados na ordem do índice principal.

COPY TO, exemplo do comando

No exemplo a seguir, a tabela customer é aberta e os três registros seguintes são copiados para um novo arquivo de dados do tipo DELIMITED, denominado TEMP.TXT.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

COPY NEXT 3 TO temp TYPE DELIMITEDWAIT WINDOW 'Este é o arquivo de texto delimitado' NOWAIT

[Pág.: 98]

Page 99: 74039361 Visual FoxPro Comandos e Funcoes

MODIFY FILE temp.txtDELETE FILE temp.txt

COS( ), função

Retorna o co-seno de uma expressão numérica.

Sintaxe

COS(nExpressão)Tipos de retorno

Numérico

Argumentos

nExpressão Especifica uma expressão numérica, cujo co-seno é retornado por COS( ). nExpressão pode ser qualquer valor.

Comentários

COS( ) retorna o co-seno de nExpressão em radianos. Utilize DTOR( ) para converter um ângulo de graus em radianos. O número de casas decimais que COS( ) retorna pode ser especificado com SET DECIMALS. O valor retornado por COS( ) varia entre –1 e 1.

COS( ), função exemplo

CLEAR? COS(0) && Exibe 1.00? COS(PI( )) && Exibe -1.00? COS(DTOR(180)) && Exibe -1.00STORE PI( ) * 3 TO gnAngle? COS(gnAngle) && Exibe -1.00

COUNT, comando

Conta os registros de uma tabela.

Sintaxe

COUNT[Escopo] [FOR lExpressão1] [WHILE lExpressão2][TO NomeVarMem][NOOPTIMIZE]

Argumentos

Escopo Especifica um intervalo de registros a serem incluídos na contagem. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. Os comandos que incluem Escopo operam somente na tabela da Área de trabalho ativa.

O escopo padrão para COUNT é ALL, ou seja, todos os registros.

FOR lExpressão1 Especifica que apenas os registros que satisfaçam a condição lógica lExpressão1 serão contados.Ao incluir FOR, você poderá contar os registros condicionalmente, filtrando os registros indesejáveis.

[Pág.: 99]

Page 100: 74039361 Visual FoxPro Comandos e Funcoes

Rushmore irá otimizar uma consulta COUNT FOR se lExpressão1 for uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações sobre expressões otimizáveis, consulte SET OPTIMIZE, e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição pela qual os registros serão contados, quando a expressão lógica lExpressão2 resulta em verdadeiro (.T.).

TO NomeVarMem Especifica a matriz ou variável de memória na qual a contagem de registros será armazenada.Se a variável de memória especificada não existir, o Visual FoxPro criará uma.

NOOPTIMIZE Desativa a otimização Rushmore de COUNT. Para obter maiores informações, consulte SET OPTIMIZE, e “Compreendendo a tecnologia Rushmore” na Ajuda ou o capítulo 17, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Comentários

COUNT conta os registros dentro de um escopo de registros para os quais a condição FOR ou WHILE seja verdadeira. Se SET TALK estiver ativo (ON), a contagem de registros é exibida.

Os registros marcados para exclusão serão incluídos na contagem caso SET DELETE esteja desativado (OFF).

COUNT, exemplo do comando

O exemplo a seguir conta e exibe o número de clientes em Paris.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

CLEARCOUNT FOR UPPER(city) = 'PARIS'DISPLAY FIELDS company, contact FOR UPPER(city) = 'PARIS'

CREATE COLOR SET, comando

Cria um conjunto de cores a partir das definições de cores atuais.

Sintaxe

CREATE COLOR SET NomeConjuntoCores

Argumentos

NomeConjuntoCores Especifica o nome do conjunto de cores a ser criado.

Comentários

Os conjuntos de cores não são 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 versões anteriores do FoxPro) e pode conter números e caracteres de sublinhado, mas não pode começar com um número.

Uma vez criado um conjunto de cores, você poderá carregá-lo com SET COLOR SET.

Os conjuntos de cores são salvos no arquivo de recurso do Visual FoxPro. Se já existir um conjunto de cores com o nome especificado, ele será sobrescrito.

[Pág.: 100]

Page 101: 74039361 Visual FoxPro Comandos e Funcoes

Para obter maiores informações sobre esquemas de cores e pares de cores, consulte Visão 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 diálogo de aviso, solicitando a especificação de um novo caminho ou nome para o banco de dados.

? Exibe a caixa de diálogo Criar na qual você pode especificar o nome do banco de dados a ser criado.

Comentários

Um arquivo de banco de dados tem uma extensão .DBC. Os arquivos de memo do banco de dados associado têm uma extensão .DCT e os arquivos de índice associados têm uma extensão .DCX.

O banco de dados é aberto em modo exclusivo, independente da definição de SET EXCLUSIVE. Como CREATE DATABASE abre o banco de dados após a sua criação, não é necessário emitir um comando OPEN DATABASE subseqüente.

Caso CREATE DATABASE seja emitido sem nenhum de seus argumentos opcionais, a caixa de diálogo 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 informações sobre as tabelas no banco de dados.

CREATE DATABASE peopleCREATE TABLE friends (FirstName C(20), LastName C(20))CLEARDISPLAY TABLES && Exibe as tabelas do banco de dadosDISPLAY DATABASES && Exibe informações sobre as tabelas

CREATE FROM, comando

Cria uma tabela a partir de um arquivo construído com COPY STRUCTURE EXTENDED.

Sintaxe

CREATE[NomeArquivo1 [DATABASE NomeBancoDados [NAME NomeLongoTabela]]]

FROM [NomeArquivo2]

Argumentos

[Pág.: 101]

Page 102: 74039361 Visual FoxPro Comandos e Funcoes

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 substituição 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.

Comentários

Esta variação de CREATE pressupõe 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 recém-criada torna-se a tabela ativa.

Se você não incluir NomeArquivo1 ou NomeArquivo2 ou ambos, será exibida uma caixa de diálogo, 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 estão marcados para exclusão, são 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 DATABASESCLEARSET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dadosUSE ordersDISPLAY STRUCTUREWAIT WINDOW 'Estrutur da tabela orders' NOWAITCOPY STRUCTURE EXTENDED TO tempUSE tempWAIT WINDOW 'A tabela temporária contém 1 linha por campo em ORDERS' NOWAITBROWSECREATE backup FROM tempUSE backupDISPLAY STRUCTUREWAIT WINDOW 'Backup.dbf tem a mesma estrutura que ORDERS' NOWAITUSEDELETE 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

[Pág.: 102]

Page 103: 74039361 Visual FoxPro Comandos e Funcoes

NomeArquivo Especifica o nome de arquivo para a tabela de menu. Caso não seja especificada uma extensão para o nome de arquivo, o Visual FoxPro atribuirá automaticamente a extensão .MNX.

? Exibe a caixa de diálogo Criar, solicitando que você digite um nome para o menu que está sendo criado.

NOWAIT Continua a execução do programa depois que o Criador de menus é aberto. Oprograma não espera que o Criador de menus seja fechado, mas continua a execuçãona linha de programa imediatamente após a linha que contém CREATE MENU NOWAIT.Caso você omita NOWAIT quando CREATE MENU for emitido em um programa, oCriador de menus será aberto e a execução do programa interrompida até que oCriador de menus seja fechado.Se você emitir CREATE MENU na janela Comando e incluir NOWAIT, não será exibida a caixa de diálogo Novo menu. Esta caixa de diálogo permite que você especifique o tipo de menu criado (padrão ou de atalho).

SAVE Faz com que o Criador de menus permaneça aberto depois que outra janela éativada. Se você omitir SAVE, o Criador de menus será fechado quando outra janela forativada. A inclusão de SAVE não tem efeito quando o comando é emitido na janelaComando.

WINDOW NomeJanela1 Especifica uma janela cujas características são adotadas peloCriador de menus. Por exemplo, se a janela for criada com a opção FLOAT de DEFINEWINDOW, o Criador de menus poderá ser movido. Não é necessário que a janela estejaativa ou visível, mas ela deve estar definida.

O Criador de menus possui um tamanho padrão que pode ser maior que a janela cujascaracterísticas ele assume. Nesse caso, o Criador de menus ainda adquire ascaracterísticas da janela na qual é posicionado. O canto superior esquerdo do Criador demenus é posicionado nas mesmas coordenadas do canto superior esquerdo da janela ese estende além das bordas da janela.

IN [WINDOW] NomeJanela2 Especifica uma janela pai onde o Criador de menus éaberto. O Criador de menus não adquire as características da janela pai e não pode sermovido para fora dela. Caso a janela pai seja movida, o Criador de menus também serámovido.

A janela pai deve ser definida primeiramente com DEFINE WINDOW, e deve estar visívelpara 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 inclusão da cláusula IN WINDOW.

Comentários

A emissão de CREATE MENU sem argumentos adicionais abre o Criador de menus, noqual você pode definir um sistema de menu. O nome MENU1 é atribuído temporariamente àtabela de definição de menu. Ao sair do Criador de menus, você pode salvar a definição demenu com um nome diferente.

Para obter maiores informações sobre como criar menus, consulte “Criando um sistema de menus” e o capítulo 11, “Criando menus e barras de ferramentas”, no Guia do Desenvolvedor.

CREATE REPORT - Relatório Rápido, comando

Cria um relatório utilizando a linguagem de programação.

Sintaxe

CREATE REPORT NomeArquivo1 | ? FROM NomeArquivo2[FORM | COLUMN] [FIELDS ListaCampos] [ALIAS][NOOVERWRITE] [WIDTH nColunas]

Argumentos

[Pág.: 103]

Page 104: 74039361 Visual FoxPro Comandos e Funcoes

NomeArquivo1 Especifica o nome de arquivo do relatório. Caso não seja especificada uma extensão para o nome de arquivo, o Visual FoxPro atribuirá automaticamente a extensão .FRX.

? Exibe a caixa de diálogo Criar, que solicita um nome para o relatório que está sendo criado.

FROM NomeArquivo2 Especifica o nome da tabela a partir da qual o relatório será criado. A tabela não precisa estar aberta.

FORM Especifica que o relatório é criado com os campos e seus nomes organizados de cima para baixo na faixa Detalhes.

COLUMN Especifica que o relatório seja criado com os campos organizados da esquerda para a direita da página na faixa Detalhes. Os nomes dos campos são localizados na faixa Cabeçalho de página. Caso você omita FORM e COLUMN, o relatório assume os padrões para o formato de COLUMN.

FIELDS ListaCampos Especifica os campos da tabela que aparecerão no relatório. Separa os campos em ListaCampos por vírgulas.

ALIAS Especifica que o alias da tabela é adicionado aos nomes dos campos no relatório.

NOOVERWRITE Especifica que um relatório existente não é sobrescrito. Caso já exista um relatório com o nome especificado com NomeArquivo1, o relatório não será criado.

WIDTH nColunas Especifica a largura da página do relatório, em colunas.

Comentários

Este formato de CREATE REPORT cria um relatório rápido sem abrir o Criador de relatórios. O relatório será criado como se você selecionar Relatório rápido no menuRelatório.

Outra forma de CREATE REPORT, discutida no tópico anterior, abre o Criador de relatórios e permite criar um relatório de forma interativa.

Para obter outras informações sobre relatórios e etiquetas, consulte “Criando relatórios e etiquetas” na seção “Utilizando o Visual FoxPro” e o capítulo 7, “Criando relatórios e etiquetas”, no Guia do Usuário.

CREATE TRIGGER, comando

Cria um disparador de Exclusão, Inserção ou Atualização para uma tabela.

Sintaxe

CREATE TRIGGER ON NomeTabelaFOR DELETE | INSERT | UPDATE AS lExpressão

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 lExpressão Especifica a expressão lógica avaliada quando o disparador ocorre. lExpressão pode ser uma função definida pelo usuário ou um procedimento armazenado que retorna um valor lógico. Procedimentos armazenados são criados para uma tabela com MODIFY PROCEDURE.

[Pág.: 104]

Page 105: 74039361 Visual FoxPro Comandos e Funcoes

Uma função definida pelo usuário 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 lExpressão resulte em verdadeiro (.T.), o comando ou evento que provocou a ocorrência do disparador será executado.

Caso lExpressão resulte em falso (.F.), o comando ou evento, que provocou a ocorrência do disparador, não será executado. Caso haja um procedimento ON ERROR em vigor, o procedimento ON ERROR será executado em vez do comando ou evento. Caso não haja um procedimento ON ERROR em vigor, o comando ou evento não será executado e o Visual FoxPro irá gerar uma mensagem de erro.

Comentários

Utilize CREATE TRIGGER para interceptar eventos que fazem com que os registros de uma tabela sejam excluídos, adicionados ou alterados. Os disparadores de Exclusão, Inserção ou Atualização 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 ocorrência de um disparador de Exclusão, Inserção ou Atualização.

Disparador de exclusão

· DELETE é emitido.· Um registro é marcado para exclusão a partir do menu Tabela em uma janela Pesquisar ou em uma janela Editar.Disparador de inserção

· APPEND FROM é emitido.· APPEND FROM ARRAY é emitido.· APPEND BLANK é emitido.· Um registro é incluído 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 atualização

· GATHER é emitido.· REPLACE é emitido.· REPLACE FROM ARRAY é emitido.· UPDATE – SQL é emitido.· outro evento que provoque uma modificação em um registro, como acontece a um Formulário alterar o conteúdo de um campo.

As regras a seguir aplicam-se a disparadores criados com CREATE TRIGGER:

· INSERT não pode ser emitido para uma tabela com um disparador. No entanto, INSERT - SQL pode ser utilizado.· A emissão de PACK não provoca a ocorrência de nenhum disparador.· A emissão de ZAP não provoca a ocorrência de um disparador de Exclusão.· Não ocorrerá nenhum disparador se você atualizar um registro marcado para exclusão.· Um disparador poderá não ocorrer imediatamente, dependendo do modo de utilização do buffer atual:

CREATE TRIGGER, exemplo de comando

[Pág.: 105]

Page 106: 74039361 Visual FoxPro Comandos e Funcoes

O exemplo a seguir cria um disparador de Atualização 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 não 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 <= 50CREATE TRIGGER ON customer FOR UPDATE AS maxordamt <= 50ON 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? maxordamtDELETE 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 diálogo Criar, solicitando que você digite um nome para a tabela que está sendo criada.

Comentários

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, não é possível criar uma tabela com o nome de um dispositivo do MS-DOS, como CON, NUL, PRN e COM1. Você deve evitar utilizar hífens em um nome de tabela, pois os nomes de tabela hifenizados não 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 informações sobre tabelas, consulte o capítulo 2, “Criando tabelas e índices”, no Guia do Usuário.

CTOBIN( ), função

Converte uma representação de caractere binário para um valor inteiro.

[Pág.: 106]

Page 107: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

CTOBIN(cExpressão)

Tipos de retorno

Numérico

Argumentos

cExpressão Especifica a representação de caractere binário a ser convertida.

Comentários

Utilize CTOBIN( ) para converter uma representação de caractere binário criada com BINTOC( ) de volta ao seu valor inteiro.

CTOD( ), função

Converte uma expressão de caracteres em uma expressão de data.

Sintaxe

CTOD(cExpressão)

Tipos de retorno

Data

Argumentos

cExpressão Especifica uma expressão de caracteres para a qual CTOD( ) retorna um valor do tipo Data. cExpressão deve resultar em uma data válida de 1/1/100 a 12/31/9999.

O formato padrão para cExpressão é mm/dd/aa. É possível utilizar SET DATE e SET CENTURY para alterar o formato padrão. Se o século não for especificado quando uma data for digitada (como na expressão de caracteres 1/1/95), será adotado o século XX.

Comentários

CTOD( ), a função de conversão de caractere para data, retorna um valor do tipo Data a partir de uma expressão de caracteres.

CTOD( ), exemplo da função

STORE '7/4/1776' TO gcthe_4th

CLEAR? CTOD(gcthe_4th)STORE DATE( ) TO gdtodaySTORE CTOD('12/25/95') TO gdchristmasSTORE STR(gdchristmas - gdtoday, 4) TO gddays_left? 'Faltam', gddays_left, 'dias para o Natal'

[Pág.: 107]

Page 108: 74039361 Visual FoxPro Comandos e Funcoes

CTOT( ), função

Retorna um valor de DataHora a partir de uma expressão de caracteres.

Sintaxe

CTOT(cExpressãoCaracteres)

Tipos de retorno

DataHora

Argumentos

cExpressãoCaracteres Especifica uma expressão de caracteres a partir da qual um valor de DataHora é retornado. O formato adequado para cExpressãoCaracteres é determinado pelas definições atuais de SET DATE, SET HOURS e SET MARK. cExpressãoCaracteres tem que retornar um valor de DataHora reconhecível, caso contrário o Visual FoxPro irá gerar um erro.

A seguir são apresentados exemplos de expressões de caracteres válidas:

02/16/95 2:00:00pm02/16/95 2:00pm02/16/95 14:0002/16/9514:00

Caso apenas uma parte relativa à data ou à hora seja especificada em cExpressãoCaracteres, o Visual FoxPro adicionará automaticamente a hora padrão de meia-noite (12:00:00 A.M.) ou a data padrão de 12/30/1899 à cExpressãoCaracteres.

É possível incluir o século em cExpressãoCaracteres, mas ele somente será retornado se SET CENTURY estiver ativado (ON). Caso não seja incluído um século, será adotado o século XX.

CTOT( ), exemplo da função

O exemplo a seguir utiliza CTOT( ) para converter uma seqüência de caracteres para um valor de DataHora. Observe que CTOT( ) acrescenta automaticamente a hora de meia-noite (12:00:00 A.M.) à seqüência de caracteres.

? BETWEEN(CTOT('02/16/95'), {02/15/95 11:00pm}, {02/16/95 1:00am})? CTOT('02/16/95')

CURDIR( ), Função

Retorna o diretório atual.

Sintaxe

CURDIR([cExpressão])

Tipos de retorno

Caractere

Argumentos

[Pág.: 108]

Page 109: 74039361 Visual FoxPro Comandos e Funcoes

cExpressão Especifica a unidade de disco ou o volume para o qual CURDIR( ) retorna o diretório ou pasta atual. Caso você omita cExpressão, será adotado o volume ou a unidade de disco padrão atual. A seqüência vazia será retornada se a unidade ou volume especificado em cExpressão não existir.

Comentários

CURDIR( ) retorna, como seqüência de caracteres, o diretório atual do MS-DOS em uma unidade especificada.

CURDIR( ), exemplo de Função

O exemplo a seguir armazena o diretório atual em uma variável, define a padrão para o diretório no qual o Visual FoxPro foi criado, exibe o novo diretório, retorna o padrão para o diretório original e exibe o diretório original.

CLEAR? 'Diretório atual: ', CURDIR( )gcOldDir = SET('DEFAULT') + SYS(2003)SET DEFAULT TO (HOME( ))? 'Diretório do Visual FoxPro: ', CURDIR( )SET DEFAULT TO (gcOldDir)? 'Diretório atual: ', CURDIR( )

DATE( ), função

Retorna a data do sistema atual, que é controlada pelo sistema operacional.

Sintaxe

DATE( )

Tipos de Retorno: Data

Comentários

Nenhum comando ou função do Visual FoxPro pode alterar diretamente a data do sistema.

O formato da seqüência de caracteres retornado por DATE( ) pode ser alterado com SET CENTURY, SET DATE e SET MARK TO.

DATE( ),exemplo da função

O exemplo a seguir exibe a data do sistema atual com e sem o século.

CLEARSET CENTURY OFF? DATE( ) && Exibe a data de hoje sem o séculoSET CENTURY ON? DATE( ) && Exibe a data de hoje com o século

DATETIME( ), função

Retorna a data e a hora atuais como um valor de DataHora.

Sintaxe

DATETIME( )

Tipos de Retorno: DataHora

[Pág.: 109]

Page 110: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

O formato do valor de DataHora retornado por DATETIME( ) depende das definições atuais de SET DATE, SET MARK, SET CENTURY, SET HOURS e SET SECONDS. Depende também das definições selecionadas no Painel de controle do sistema operacional.

DATETIME( ), exemplo da função

Este exemplo armazena a data e hora para Ano Novo em uma variável denominada tNewyear, e armazena a data e hora atual em uma variável denominada tToday. O número de segundos entre a data e hora atual e Ano Novo será então exibido.

tNewyear = {01/01/96 12:00am} && Ano Novo 1996tToday = DATETIME( )nSecondstonewyear = tNewyear - tTodayCLEAR? "There are " + ALLTRIM (STR(nSecondstonewyear)) ;

+ " seconds to the New Year."DAY( ), função

Retorna o número do dia do mês para uma dada expressão de data ou de data e hora.

Sintaxe

DAY(dExpressão | tExpressão)

Tipos de Retorno: Numérico

Argumentos

dExpressão Especifica a data da qual DAY( ) retorna um dia do mês. dExpressão pode ser um literal de data, uma variável de memória do tipo Data, um elemento de matriz ou um campo de data.

tExpressão Especifica uma data ou hora da qual DAY( ) retorna um dia do mês. dExpressão pode ser um literal de data e hora, uma variável de memória do tipo DataHora, um elemento de matriz ou um campo de data e hora.

Comentários

DAY( ) retorna um número de 1 a 31.

DAY( ), exemplo da função

STORE {03/05/95} TO gdBDateCLEAR? CDOW(gdBDate) && Exibe Domingo? DAY(gdBDate) && Exibe 5? 'That date is ', CMONTH(gdBDate),STR(DAY(gdBDate),2)

DBC( ), função

Retorna o nome e o caminho do banco de dados atual.

Sintaxe

DBC( )

Tipos de Retorno: Caractere

[Pág.: 110]

Page 111: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

DBC( ) retornará a seqüência vazia caso não haja nenhum banco de dados atual.

Utilize SET DATABASE para especificar o banco de dados atual.

DBC( ), exemplo da função

O exemplo a seguir abre o banco de dados testdata e utiliza DBC( ) para exibir informações sobre o banco de dados.

CLOSE DATABASESOPEN DATABASE (SYS(2004) + "samples\data\testdata") && Abre o DBC.

CLEAR? DBC( ) && Exibe o caminho e o nome do banco de dados

DBF( ), função

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 | nÁreaTrabalho])

Tipos de Retorno: Caractere

Argumentos

cAliasTabela Especifica o alias de tabela.

nÁreaTrabalho Especifica o número da Área de trabalho.

Se você omitir cAliasTabela e nÁreaTrabalho, DBF( ) retornará o nome da tabela aberta na Área de trabalho atual. DBF( ) retornará uma seqüência vazia caso não esteja aberta uma tabela na Área de trabalho especificada. Caso uma tabela não tenha o alias especificado com cAliasTabela, o Visual FoxPro irá gerar uma mensagem de erro.

Para obter informações sobre como criar um alias para uma tabela, consulte USE.

Comentários

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 função

O exemplo abaixo retorna o nome de uma tabela de sua Área de trabalho e seu alias e retorna a seqüência vazia após o fechamento de todas as tabelas.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer IN 2 ALIAS mycustCLEAR? DBF(2) && Exibe customer.dbf com seu caminho? DBF('mycust') && Exibe customer.dbf com seu caminhoCLOSE DATABASES

[Pág.: 111]

Page 112: 74039361 Visual FoxPro Comandos e Funcoes

? DBF( ) && Exibe a seqüência vazia

DBUSED( ), função

Retorna verdadeiro (.T.) se o banco de dados especificado estiver aberto.

Sintaxe

DBUSED(cNomeBancoDados)

Tipos de retorno: Lógico

Argumentos

cNomeBancoDados Especifica o nome do banco de dados para o qual DBUSED( ) retorna um valor lógico que indica se o banco de dados está ou não aberto.

Comentários

A função DBUSED( ) retornará verdadeiro (.T.) se o banco de dados especificado estiver aberto; caso contrário, retornará falso (.F.).

DBUSED( ), exemplo da função

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 estão abertos.

CLOSE DATABASESOPEN 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 usuário e remove-a da tela, mas não remove da memória a definição da barra de menus.

Sintaxe

DEACTIVATE MENU NomeMenu1 [, NomeMenu2 ...] | ALL

Argumentos

NomeMenu1 [, NomeMenu2 ...] Especifica os nomes das barras de menus a serem desativadas. É possível desativar um conjunto de barras de menus incluindo uma lista de nomes de barras de menus separados por vírgulas.

ALL Desativa todos os menus ativos.

Comentários

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 usuário sem remover a definição da barra de menus da memória. É possível ativar novamente uma barra de menus utilizando ACTIVATE MENU e o nome da barra de menus.

[Pág.: 112]

Page 113: 74039361 Visual FoxPro Comandos e Funcoes

Dica Ao incluir a barra de menus do sistema (_MSYSMENU) em um aplicativo, não é necessário defini-la, ativá-la ou desativá-la. Em vez disso, emita SET SYSMENU AUTOMATIC.

Para liberar uma barra de menus específica ou um conjunto de barras de menus da memória, utilize RELEASE MENUS. Você pode liberar todas as barras de menus da memória com CLEAR MENUS ou CLEAR ALL.

O controle do programa será retornado à linha do programa imediatamente após à 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 memória com SET SYSMENU SAVE e todos os títulos de menu do sistema são removidos com SET SYSMENU TO.Dois títulos de menu são criados com DEFINE PAD, e DEFINE POPUP cria um menu para cada título de menu. DEFINE BAR cria itens de menu em cada um dos menus. Quando um título 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 contém o item. O controle do programa continua na linha após ACTIVATE MENU.Finalmente, o menu é desativado e removido da tela e, em seguida, é liberado da memória com RELEASE MENUS EXTENDED.

*** Nomeia este programa como DEACMENU.PRG ***CLEARSET SYSMENU SAVESET SYSMENU TOON KEY LABEL ESC KEYBOARD CHR(13)DEFINE MENU example BAR AT LINE 1DEFINE PAD convpad OF example PROMPT '\<Conversões' COLOR SCHEME 3 ;

KEY ALT+C, ''DEFINE PAD cardpad OF example PROMPT 'Informações \<do cartão' COLOR SCHEME 3 ;

KEY ALT+I, ''ON PAD convpad OF example ACTIVATE POPUP conversionON PAD cardpad OF example ACTIVATE POPUP cardinfoDEFINE 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 4DEFINE BAR 1 OF cardinfo PROMPT '\<Visualizar cobranças' ;

KEY ALT+B, ''DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<pagamentos' ;

KEY ALT+P, ''DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar\<w usuários' ;

[Pág.: 113]

Page 114: 74039361 Visual FoxPro Comandos e Funcoes

KEY ALT+U, ''DEFINE BAR 4 OF cardinfo PROMPT '\-'DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranças'ON SELECTION POPUP cardinfo;

DO choice IN deacmenu WITH PROMPT( ), POPUP( )

ACTIVATE MENU exampleDEACTIVATE MENU exampleRELEASE MENU example EXTENDEDSET SYSMENU NOSAVESET SYSMENU TO DEFAULTON KEY LABEL ESC

PROCEDURE choicePARAMETERS mprompt, mpopupWAIT WINDOW 'Você escolheu ' + mprompt + ;

' do popup ' + mpopup NOWAIT

DEACTIVATE WINDOW, comando

Desativa as janelas definidas pelo usuário ou as janelas do sistema do Visual FoxPro e as remove da tela, mas não da memória.

Sintaxe

DEACTIVATE WINDOW NomeJanela1 [, NomeJanela2 ...] | ALL

Argumentos

NomeJanela1 [, NomeJanela2 ...] Especifica uma ou mais janelas a serem desativadas. É possível especificar janelas do sistema do Visual FoxPro como a janela Comando ou a janela de pesquisa.

ALL Desativa todas as janelas ativas.

Comentários

Mais de uma janela definida pelo usuário pode ser colocada na janela principal do Visual FoxPro ao mesmo tempo, mas a saída é direcionada apenas à janela definida pelo usuário mais recentemente ativada. Quando mais de uma janela definida pelo usuário for exibida, desativar a janela de saída atual definida pelo usuário limpará o conteúdo da janela, removerá a janela da tela e envia a saída subseqüente à janela definida pelo usuário anteriormente ativada. Se não houver janela de saída, a saída será direcionada para a janela principal do Visual FoxPro.

Utilize CLEAR WINDOWS ou RELEASE WINDOWS para remover janelas tanto da tela quanto da memória.

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 relatório no Visual FoxPro, emita o comando a seguir:

DEACTIVATE WINDOW "Controles de relatório"

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 usuário pressione uma tecla e, em seguida, desativa a janela.

CLOSE DATABASES

[Pág.: 114]

Page 115: 74039361 Visual FoxPro Comandos e Funcoes

OPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

CLEARDEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Saída' ;

CLOSE FLOAT GROW SHADOW ZOOMACTIVATE WINDOW wOutput1

DISPLAYWAIT WINDOW 'Pressione uma tecla para desativar a janela'DEACTIVATE WINDOW wOutput1RELEASE WINDOW wOutput1

DECLARE, comando

Cria uma matriz unidimensional ou bidimensional.

Sintaxe

DECLARE NomeMatriz1 (nLinhas1 [, nColunas1])[, NomeMatriz2 (nLinhas2 [, nColunas2])] ...

Comentários

DECLARE é idêntico a DIMENSION em termos de operação e sintaxe. Para obter maiores informações, 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 RótuloTecla][MARK cCaractereMarca][MESSAGE cTextoMensagem][NOMARGIN][COLOR SCHEME nNúmeroEsquema| COLOR ListaParesCores]

Argumentos

NomeBarraMenus Especifica o nome da barra de menus a ser criada. O nome da barra de menus permite que você faça referência à barra de menus em outros comandos e funções.

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 características 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 usuário na qual está localizada· A colocação dos títulos de menus na barra de menus é gerenciada automaticamente.· Se o tamanho ou número de títulos de menus definidos ultrapassar o tamanho da tela ou janela na qual a barra de menus está localizada, a barra de menus rola.

[Pág.: 115]

Page 116: 74039361 Visual FoxPro Comandos e Funcoes

O número da linha é especificado com nLinha.

IN [WINDOW] NomeJanela Coloca a barra de menus em uma janela definida pelo usuário. 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 padrão, a menos que haja uma janela ativa definida pelo usuário. 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 padrão para todos os títulos de menus da barra de menus. Você pode substituir a fonte padrão de um título de menu individual incluindo a cláusula 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 títulos de menus na fonte Courier de 12 pontos:

DEFINE MENU mnuExample FONT 'Courier', 12Se a fonte especificada não estiver disponível, uma fonte similar com características de fontes similares irá substituí-la. Se você incluir a cláusula FONT, mas omitir o tamanho em pontos de cTamanhoFonte, será utilizada uma fonte de 10 pontos.

A cláusula FONT será ignorada para títulos 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 padrão para todos os títulos de menus da barra de menus. Você pode substituir o estilo padrão de títulos de menu individuais incluindo a cláusula STYLE em DEFINE PAD.

Se você omitir a cláusula STYLE ou se o estilo de fonte especificado não estiver disponível, será utilizado o estilo de fonte Normal.

Os estilos de fonte que podem ser especificados com cEstiloFonte são os seguintes:

Caractere Estilo de fonte

B NegritoI ItálicoN NormalQ Opaco- RiscadoT TransparenteU Sublinhado

Você pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. Por exemplo, o comando a seguir especifica Negrito e Itálico:

DEFINE MENU mnuExample STYLE 'BI'A cláusula STYLE será ignorada para títulos 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 RótuloTecla Especifica a tecla ou combinação de teclas utilizada para ativar a barra de menus. Para obter uma lista de teclas e combinações de teclas disponíveis e seus respectivos nomes de rótulos de tecla, consulte ” ON KEY LABEL”.

Incluir a cláusula KEY é equivalente a emitir o comando a seguir:

ON KEY LABEL RótuloTecla ACTIVATE MENU NomeMenu

Observação Se uma macro de teclado já estiver definida com o mesmo rótulo de tecla, ela terá prioridade e a barra de menus não poderá ser ativada com a tecla ou combinação de teclas especificada.

[Pág.: 116]

Page 117: 74039361 Visual FoxPro Comandos e Funcoes

MARK cCaractereMarca Especifica um caractere de marca exibido à esquerda dos títulos de menus na barra de menus. MARK pode ser incluído para alterar o caractere de marca padrão 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 padrão é uma verificação. A cláusula MARK é ignorada e o caractere de marca padrão será utilizada se a barra de menus for o menu do sistema do Visual FoxPro. Além disso, a cláusula MARK será ignorada se FoxFont não for a fonte da janela principal do Visual FoxPro ou da janela definida pelo usuário na qual está localizada a barra de menus.

Observação A especificação de um caractere de marca não marca os nomes de menus em uma barra de menus. Utilize SET MARK OF para marcar os títulos de menus em uma barra de menus com o caractere especificado.

Os caracteres de marca especificados com DEFINE PAD têm prioridade sobre os caracteres de marca especificados com a cláusula MARK em DEFINE MENU. SET MARK OF é utilizado para ativar ou desativar caracteres de marca, podendo também 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 título de menu. A mensagem é colocada na barra de status gráfica. 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 padrão, remove os espaços colocados à esquerda e à direita de cada nome de menu.

COLOR SCHEME nNúmeroEsquema Especifica as cores para uma barra de menus individual.

COLOR ListaParesCores Especifica as cores para uma barra de menus individual. Por padrão, as cores dos itens de menu são determinadas pelo esquema de cores 2 do conjunto atual de cores.

Para obter maiores informações sobre esquemas e pares de cores, consulte o tópico ” Visão geral de cores” .

Comentários

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 títulos de menus (pads) na barra de menus. Utilize ON PAD ... ACTIVATE para especificar o menu que será exibido embaixo de cada título de menu. Utilize DEFINE POPUP para criar os menus embaixo de cada título de menu. Utilize ACTIVATE MENU para ativar todo o sistema de menus.

Se você utilizar o Criador de menus para criar seu menu, talvez não 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 próprios itens de menu.

Para obter maiores informações sobre a criação de menus, consulte “Criando um sistema de menus”, no capítulo 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 usuário. A barra de menus do sistema atual é salva para memória com SET SYSMENU SAVE e, em seguida, os títulos de menu do sistema são removidos com SET SYSMENU TO.DEFINE MENU cria a barra de menus e dois títulos de menu são criados com DEFINE PAD. DEFINE POPUP cria um menu para cada título de menu. DEFINE BAR cria itens em cada um dos menus. Quando um título 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 contém o item.

[Pág.: 117]

Page 118: 74039361 Visual FoxPro Comandos e Funcoes

*** Nomeie este programa como DEFIMENU.PRG ***CLEARSET SYSMENU SAVESET SYSMENU TOON KEY LABEL ESC KEYBOARD CHR(13)DEFINE MENU example BAR AT LINE 1DEFINE PAD convpad OF example PROMPT '\<Conversões' COLOR SCHEME 3 ;

KEY ALT+C, ''DEFINE PAD cardpad OF example PROMPT '\<Informações do cartão' COLOR SCHEME 3 ;

KEY ALT+I, ''ON PAD convpad OF example ACTIVATE POPUP conversionON PAD cardpad OF example ACTIVATE POPUP cardinfoDEFINE 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 4DEFINE BAR 1 OF cardinfo PROMPT 'Visualizar co\<branças' ;

KEY ALT+B, ''DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<Pagamentos' ;

KEY ALT+P, ''DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar\< Usuários' ;

KEY ALT+U, ''DEFINE BAR 4 OF cardinfo PROMPT '\-' DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranças 'ON SELECTION POPUP cardinfo;

DO choice IN defimenu WITH PROMPT( ), POPUP( )

ACTIVATE MENU exampleDEACTIVATE MENU exampleRELEASE MENU example EXTENDEDSET SYSMENU TO DEFAULTON KEY LABEL ESCPROCEDURE choicePARAMETERS mprompt, mpopupWAIT WINDOW 'Você escolheu ' + mprompt + ; ' do popup ' + mpopup NOWAIT

DEFINE PAD, comando

Cria um título de menu (pad) em uma barra de menus definida pelo usuário ou na barra de menus do sistema do Visual FoxPro.

Sintaxe

[Pág.: 118]

Page 119: 74039361 Visual FoxPro Comandos e Funcoes

DEFINE PAD TítuloMenu1 OF NomeBarraMenus PROMPT cTextoTítuloMenu[AT nLinha, nColuna][BEFORE NomeMenu2 | AFTER NomeMenu3][NEGOTIATE LEFT | NEGOTIATE MIDDLE | NEGOTIATE RIGHT][FONT cNomeFonte [, nTamanhoFonte]][STYLE cEstiloFonte][KEY RótuloTecla [, cTextoTecla]][MARK cCaractereMarca][SKIP [FOR lExpressão]][MESSAGE cTextoMensagem][COLOR SCHEME nNúmeroEsquema| COLOR ListaParesCores]

Argumentos

TítuloMenu1 Especifica o título de menu a ser criado. O título de menu permite fazer referência ao título de menu de outros comandos e funções.OF NomeBarraMenus Especifica o nome da barra de menus na qual o título de menu está localizado.

PROMPT cTextoTítuloMenu Especifica o texto exibido no título de menu.

Você pode criar uma tecla de acesso para o título 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 usuário pode pressionar a tecla F para escolher Faturas no menu Receber e a tecla C para escolher Consulta no mesmo menu:

DEFINE MENU mnuReceiveDEFINE PAD padInvoice OF mnureceive PROMPT "\<Faturas"DEFINE PAD padInquire OF mnureceive PROMPT "\<Estoque"ACTIVATE MENU mnuReceive

AT nLinha, nColuna Especifica onde o título de menu é exibido na barra de menus. nLinha, nColuna são as coordenadas do lado esquerdo do título de menu na janela principal do Visual FoxPro ou em uma janela definida pelo usuário.

Se você omitir a cláusula AT, o lado esquerdo do primeiro título de menu será colocado na linha 0 da janela principal do Visual FoxPro ou da janela definida pelo usuário. O próximo título de menu será colocado à direita do primeiro nome na linha 0 e assim por diante.

Observação Você não pode incluir AT para especificar uma localização para os títulos de menus nas barras de menus criadas com a cláusula BAR em DEFINE MENU.

BEFORE NomeMenu2 Coloca o título de menu na barra de menus à esquerda do título de menu especificado com NomeMenu2.A ordem em que os títulos de menus são acessados pelo teclado corresponde à localização dos títulos de menus na barra de menus.AFTER NomeMenu3 Coloca o título de menu na barra de menus à direita do título de menu especificado com NomeMenu3. A ordem em que os títulos de menus são acessados a partir do teclado corresponde à localização dos títulos de menus na barra de menus.

Você deve criar primeiro o título de menu especificado na cláusula BEFORE ou AFTER. Se você não criá-lo primeiro, a colocação do título de menu na barra de menus será determinada pela ordem na qual ele é criado ou pela localização especificada com a cláusula AT.

Para as barras de menus criadas sem BAR, a ordem em que os títulos de menus são acessados pelo teclado é determinada por BEFORE ou AFTER. A localização de um título de menu é determinada pela localização especificada com a cláusula AT.

Execute os dois exemplos a seguir e observe as diferenças na colocação do título de menu e na ordem de acesso quando os títulos de menus são definidos com e sem a cláusula AT:

*** Exemplo de Programa 1 sem ATs ***

[Pág.: 119]

Page 120: 74039361 Visual FoxPro Comandos e Funcoes

DEFINE MENU mnuBefAftDEFINE 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 padTwoACTIVATE MENU mnuBefAft

*** Exemplo de Programa 2 com ATs ***DEFINE MENU mnuBefAftDEFINE PAD padOne OF mnuBefAft PROMPT '1111' AT 1,5DEFINE PAD padTwo OF mnuBefAft PROMPT '2222' AT 1,15DEFINE PAD padThree OF mnuBefAft PROMPT '3333' AT 1,25

DEFINE PAD padFour OF mnuBefAft PROMPT '4444' BEFORE padTwo AT 1,35WAIT WINDOW 'Pressione ESC para apagar o menu' NOWAITACTIVATE MENU mnuBefAft

NEGOTIATE LEFT | NEGOTIATE MIDDLE | NEGOTIATE RIGHT Especifica a localização do título de menu na barra de menus do Visual FoxPro quando ocorre a edição visual de OLE.

NEGOTIATE LEFT especifica que o título de menu é colocado à esquerda do Grupo de arquivos.

NEGOTIATE MIDDLE especifica que o título de menu é colocado à esquerda do Grupo de recipientes, após o menu Editar.

NEGOTIATE RIGHT especifica que o título de menu é colocado à esquerda do Grupo de janelas.

Se você omitir a cláusula NEGOTIATE, o título de menu será removido da barra de menus quando ocorre a edição visual de OLE.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte para o título de menu. cNomeFonte especifica o nome da fonte e cTamanhoFonte, o tamanho em pontos. Por exemplo, o comando a seguir cria um título de menu na fonte Courier de 12 pontos:

DEFINE PAD padPageAccts OF mnuReceive FONT 'Courier', 12

Se a fonte especificada não estiver disponível, uma fonte similar com características de fonte similares irá substituí-la. Se você incluir a cláusula FONT mas omitir o tamanho em pontos de cTamanhoFonte, será utilizada uma fonte de 10 pontos.

A cláusula FONT será ignorada para títulos 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 cláusula STYLE ou se o estilo de fonte não estiver disponível, o estilo de fonte Normal será utilizado.

Os estilos de fonte que podem ser especificados com cEstiloFonte são:

Caractere Estilo de fonte

B NegritoI ItálicoN NormalQ Opaco- RiscadoT TransparenteU Sublinhado

Você pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. Por exemplo, o comando a seguir especifica Negrito e Itálico:

[Pág.: 120]

Page 121: 74039361 Visual FoxPro Comandos e Funcoes

DEFINE PAD padPageAccts OF mnuReceive STYLE 'BI'

A cláusula STYLE será ignorada para os títulos 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 RótuloTecla [, cTextoTecla] Especifica uma tecla de acesso ou combinação de teclas para um título de menu. Para obter uma lista de teclas e combinações de teclas disponíveis e seus respectivos nomes de rótulos de teclas, consulte ” ON KEY LABEL”.

Observação Se uma macro de teclado já estiver definida com o mesmo rótulo de tecla, ela terá prioridade e o item de menu não poderá ser escolhido com a tecla ou combinação de teclas especificada.

O rótulo de tecla é colocado à direita dos títulos de menus nas barras de menus criadas sem a cláusula BAR. O rótulo de tecla não é exibido nas barras de menus criadas com a cláusula BAR ou para os títulos de menus da barra de menus do sistema do Visual FoxPro.

Inclua cTextoTecla para substituir o rótulo de tecla pelo seu próprio texto. Você pode utilizar qualquer caractere no parâmetro cTextoTecla; por exemplo, o texto “^B” pode ser utilizado para indicar um rótulo de tecla de CTRL+B. A inclusão de KEY CTRL+B coloca o texto CTRL+B no menu, à direita do nome do título de menu. Ao especificar KEY CTRL+B, “^B”, o texto ^+B será colocado no menu. Você pode suprimir a exibição de um rótulo de tecla, especificando a seqüência vazia para cTextoTecla.

MARK cCaractereMarca Especifica um caractere de marca exibido à esquerda do título de menu. MARK pode ser incluído para alterar o caractere de marca padrão 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 padrão é uma verificação. A cláusula MARK será ignorada e o caractere de marca padrão será utilizado se a barra de menus que contém o título de menu for o menu do sistema do Visual FoxPro. Além disso, a cláusula MARK será ignorada se FoxFont não for a fonte da janela principal do Visual FoxPro ou da janela definida pelo usuário na qual está localizada a barra de menus que contém o título de menu.

Os caracteres de marca especificados com DEFINE PAD têm prioridade sobre os caracteres de marca especificados com a cláusula MARK em DEFINE MENU. SET MARK OF é utilizado para ativar ou desativar as marcas, podendo ser utilizado também para especificar um caractere de marca para um título de menu individual ou para todos os títulos de menus.

Observação A especificação de um caractere de marca não marca o título de menu. Utilize SET MARK OF para marcar um título de menu com o caractere especificado.

SKIP [FOR lExpressão] Especifica uma condição por meio da qual, se lExpressão resultar em verdadeiro (.T.), o título de menu será desativado, impedindo que o formulário do usuário o escolha. Se lExpressão resultar em falso (.F.), o título de menu será ativado

Você pode também desativar um item de menu, colocando uma barra invertida (\) antes do texto do título de menu. Por exemplo:

DEFINE PAD padPageAccts OF mnuReceive PROMPT '\Age Accounts'

O título de menu padPageAccts é exibido escurecido, indicando que não pode ser escolhido.

Um título de menu desativado pode ser exibido, mas não selecionado. Entretanto, uma mensagem especificada com a cláusula MESSAGE é exibida.

MESSAGE cTextoMensagem Exibe uma mensagem quando você seleciona um título de menu. A mensagem é colocada na barra de status gráfica. 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.

[Pág.: 121]

Page 122: 74039361 Visual FoxPro Comandos e Funcoes

COLOR SCHEME nNúmeroEsquema Especifica as cores para um título de menu individual, substituindo as cores padrão ou as cores especificadas com DEFINE MENU.

COLOR ListaParesCores Especifica as cores para um título de menu individual, substituindo as cores padrão ou as cores especificadas com DEFINE MENU.

Como padrão, as cores dos títulos de menus nas barras de menus são determinadas pelo esquema de cores 2 do conjunto de cores atual.

Para obter maiores informações sobre esquemas e pares de cores, consulte o tópico ” Visão geral de cores”.

Comentários

Você deve criar cada título de menu localizado na barra de menus com seu próprio comando DEFINE PAD. A barra de menus deve ser definida com DEFINE MENU antes que se possam colocar títulos 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 não 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 próprios itens de menu. Para obter maiores informações sobre a criação de menus, consulte “Criando um sistema de menus” no capítulo 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 títulos de menu na barra de menus do sistema do Visual FoxPro. A barra de menus do sistema atual é salva para memória com SET SYSMENU SAVE e, em seguida, os títulos de menu do sistema são removidos com SET SYSMENU TO.Muitos títulos de menu do sistema são criados com DEFINE PAD. Quando um título de menu é escolhido, o procedimento CHOICE é executado. CHOICE exibe o nome do título de menu escolhido e o nome da barra de menus e ativa e desativa o caractere de marca de título de menu. Se o título de menu Sair é escolhido, o menu do sistema original do Visual FoxPro é restaurado.

*** Nomeie este programa como DEFINPAD.PRG ***CLEARSET TALK OFFSET SYSMENU SAVESET SYSMENU TOPUBLIC markpadmarkpad = .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\<latórios' 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, mmenuWAIT WINDOW 'Você escolheu ' + mpad + ;

' do menu ' + mmenu NOWAITSET MARK OF PAD (mpad) OF _MSYSMENU TO ;

[Pág.: 122]

Page 123: 74039361 Visual FoxPro Comandos e Funcoes

! MRKPAD('_MSYSMENU', mpad)markpad = ! markpadIF mpad = 'EXITPAD'

SET SYSMENU TO DEFAULTENDIF

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 RótuloTecla][MARGIN][MARK cCaractereMarca][MESSAGE cTextoMensagem][MOVER][MULTISELECT][PROMPT FIELD NomeCampo | PROMPT FILES [LIKE EstruturaArquivo]

| PROMPT STRUCTURE][RELATIVE][SCROLL][SHORTCUT][TITLE cTextoTítuloMenu][COLOR SCHEME nNúmeroEsquema| 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 cláusula 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 usuário.

Para criar um menu com um tamanho específico, você pode também incluir TO nLinha2, nColuna2 para especificar a localização 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 extensão necessária 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 usuário na qual o menu está localizado. Se o menu não 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 usuário especificada com NomeJanela. Se você omitir essa cláusula, o menu será colocado na janela principal do Visual FoxPro como padrão a menos que haja uma janela ativa definida pelo usuário. Se houver uma janela ativa definida pelo usuário, o menu será colocado na janela ativa.

IN SCREEN Coloca o menu explicitamente na janela principal do Visual FoxPro.

[Pág.: 123]

Page 124: 74039361 Visual FoxPro Comandos e Funcoes

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte padrão para o menu. Você pode substituir a fonte padrão de um item de menu individual, incluindo a cláusula 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 não estiver disponível, uma fonte similar com características de fonte similares irá substituí-la. Se você incluir a cláusula FONT, mas omitir o tamanho em pontos de cTamanhoFonte, será utilizada uma fonte de 10 pontos.

STYLE cEstiloFonte Especifica um estilo de fonte padrão para o menu. Você pode substituir o estilo padrão de um item individual incluindo a cláusula FONT em DEFINE BAR.

Se você omitir a cláusula STYLE ou se o estilo de fonte especificado não estiver disponível, o estilo de fonte Normal será utilizado.Os estilos de fonte que podem ser especificados com cEstiloFonte são listados na tabela a seguir:

Caractere Estilo de fonte

B NegritoI ItálicoN NormalQ Opaco- RiscadoT TransparenteU Sublinhado

Você pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. Por exemplo, o comando a seguir especifica Negrito e Itálico:

DEFINE MENU popMyPopup STYLE 'BI'

FOOTER cTextoRodapé Cria um rodapé com o texto especificado, com cTextoRodapé centralizado na borda inferior do menu.

KEY RótuloTecla Especifica uma tecla de acesso ou combinação de teclas para um menu. Para obter uma lista de teclas e combinações de teclas disponíveis e seus respectivos nomes de rótulos de tecla, consulte ON KEY LABEL.

Incluir KEY é equivalente a emitir o comando a seguir:

ON KEY LABEL RótuloTecla ACTIVATE POPUP NomeMenu

Observação Se uma macro de teclado já estiver definida com o mesmo rótulo de tecla, ela terá prioridade e o menu não poderá ser ativado com a tecla ou combinação de teclas especificada.

MARGIN Coloca um espaço extra à esquerda e à direita de cada item de menu. Os caracteres de marca são exibidos no espaço à esquerda de um item e setas indicando submenus adicionais em cascata estão disponíveis, sendo exibidos à direita dos itens de menu. Se você omitir MARGIN, os caracteres de marca irão sobrescrever o primeiro caractere dos nomes dos itens de menu; setas hierárquicas irão 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 verificação. A cláusula MARK será ignorada e o caractere de marca padrão será utilizado se o menu estiver integrado dentro do menu do sistema do Visual FoxPro. Além disso, a cláusula MARK será ignorada se FoxFont não for a fonte da janela principal do FoxPro ou da janela definida pelo usuário na qual o menu está localizado.

[Pág.: 124]

Page 125: 74039361 Visual FoxPro Comandos e Funcoes

MARK pode ser incluído para alterar o caractere de marca padrão por um caractere especificado com cCaractereMarca. Se cCaractereMarca incluir mais de um caractere, somente o primeiro caractere será utilizado como o caractere de marca.

Observação A especificação de um caractere de marca não marca um item de menu. Utilize SET MARK OF para marcar um item de menu.

A cláusula MARK define o caractere de marca para todos os itens do menu. Os caracteres de marca especificados com os comandos DEFINE BAR têm prioridade sobre os caracteres de marca especificados com a cláusula MARK em DEFINE POPUP. SET MARK OF é utilizado para ativar ou desativar os caracteres de marca, podendo ser utilizado também 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 gráfica. 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 diálogo Deslocador à esquerda do item selecionado no menu. Você pode arrastar a seta de duas pontas a fim de mover um item para outra posição no menu. GETBAR( ) pode ser utilizado para determinar o posicionamento de cada item no menu.

Não é possível reorganizar itens em menus criados com a cláusula PROMPT.

MULTISELECT Permite que o usuário selecione vários itens de um menu ao mesmo tempo. Quando o usuário escolhe o item de um menu, o caractere de marca é colocado à esquerda do item.

Não é possível fazer várias seleções a partir de um menu criado com a cláusula PROMPT.

MRKBAR( ) pode ser utilizado para determinar os itens que serão escolhidos a partir do menu.

Se você incluir MULTISELECT em DEFINE POPUP, poderá incluir MARGIN para reservar espaço em cada item para o caractere de marca.

No exemplo a seguir, é criado um menu denominado popFruits. MULTISELECT é incluído para criar um menu que permita que vários itens sejam escolhidos.

Cada um dos quatro itens têm um caractere de marca diferente. Quando o usuário escolhe itens do menu, eles são marcados e uma rotina denominada yourchoice exibe os itens escolhidos.

CLEARIF NOT _DOS

MODIFY WINDOW SCREEN FONT 'foxfont', 12ENDIFACTIVATE SCREENDEFINE POPUP popFruits FROM 5,5 ;

MULTISELECT MARGIN && Cria um menu que permite várias escolhasDEFINE BAR 1 OF popFruits ;

PROMPT '\<Maçãs' MARK CHR(3) && Primeiro itemDEFINE BAR 2 OF popFruits ;

PROMPT '\<Bananas' MARK CHR(4) && Segundo itemDEFINE BAR 3 OF popFruits ;

PROMPT '\<Uvas' MARK CHR(5) && Terceiro itemDEFINE BAR 4 OF popFruits ;

PROMPT '\<Limões' MARK CHR(6) && Quarto item

@ 12,5 SAY 'Suas escolhas:'ON SELECTION POPUP popFruits DO yourchoice && Rotina de escolhaACTIVATE POPUP popFruits PROCEDURE yourchoice && Executada quando a escolha é feita@ 13,5 CLEARFOR gnCount = 1 TO CNTBAR('popFruits') && Loop para n.º de itens

[Pág.: 125]

Page 126: 74039361 Visual FoxPro Comandos e Funcoes

IF MRKBAR('popFruits', gnCount) = .T. && A opção é marcada,? PRMBAR('popFruits', gnCount) AT 5 && exibe legenda

ENDIFNEXT

PROMPT FIELD NomeCampo Especifica o nome de campo de uma tabela aberta cujos registros serão os itens do menu. O menu contém um item para cada registro da tabela. Quando o menu é ativado, a Área de trabalho da tabela é selecionada.

Dica Você pode beneficiar-se da otimização de Rushmore se definir um filtro no campo especificado com PROMPT FIELD utilizado no menu.

Para obter maiores informações sobre a otimização de Rushmore, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

NomeCampo pode também conter vários nomes de campos e expressões concatenadas com o operador de adição (+). NomeCampo pode também ser o nome do campo de uma tabela aberta em outra Área de trabalho ou uma função definida pelo usuário.

Não há limite para o número 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 disponíveis no diretório 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 diretório padrão, 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 diretórios, incluindo uma especificação de unidade, de diretório ou ambas. Por exemplo, para criar um menu que exiba os nomes dos arquivos de programa em um diretório 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 colocação dos itens no menu. Se você criar um menu sem a cláusula RELATIVE, um item será posicionado no menu na ordem ditada pelo número da barra do item. O espaço 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 serão exibidos no menu na ordem em que foram definidos. O espaço no menu não é reservado para itens indefinidos.

A definição de um menu com RELATIVE também permite que você utilize as cláusulas BEFORE e AFTER em DEFINE BAR para posicionar os itens de um menu em relação a outros itens. Se um menu for criado sem RELATIVE, a inclusão de BEFORE ou AFTER em DEFINE BAR gerará um erro.

Execute os dois exemplos de programas a seguir e compare a colocação dos itens em cada menu.

*** Exemplo de RELATIVE ***DEFINE POPUP popRelatYes RELATIVE FROM 1,1DEFINE BAR 4 OF popRelatYes PROMPT '4444'DEFINE BAR 3 OF popRelatYes PROMPT '3333'DEFINE BAR 2 OF popRelatYes PROMPT '2222'

[Pág.: 126]

Page 127: 74039361 Visual FoxPro Comandos e Funcoes

DEFINE BAR 1 OF popRelatYes PROMPT '1111'DEFINE BAR 6 OF popRelatYes PROMPT '6666' BEFORE 4ACTIVATE POPUP popRelatYes *** Exemplo de NON-RELATIVE ***DEFINE POPUP popRelatNo FROM 1,1DEFINE 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 usuário na qual está localizado.SHORTCUT Cria um menu de atalho. Um menu de atalho é exibido tipicamente quando um botão de seleção, barra de ferramentas ou barra de tarefas é clicado com o botão direito do mouse. O menu de atalho lista comandos que pertencem à área da tela na qual o mouse foi clicado com o botão direito.

Você pode incluir MROW( ) e MCOL( ) na cláusula FROM para ativar o popup na localização onde o mouse é clicado.

TITLE cTextoTítuloMenu Exibe um título no centro da borda superior do menu. cTextoTítuloMenu especifica o título do menu.

COLOR SCHEME nNúmeroEsquema Especifica as cores de todos os elementos do menu. Como padrão, as cores dos menus criadas com DEFINE POPUP são controladas pelo esquema de cores 2.

COLOR ListaParesCores Especifica as cores de todos os elementos do menu.

Para obter maiores informações sobre esquemas e pares de cores, consulte o tópico Visão geral de cores.

Comentários

Para colocar um conjunto de itens definidos no menu, utilize uma série de comandos DEFINE BAR. Para colocar registros, arquivos ou campos no menu utilize as opções 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 informações sobre a criação de submenus, consulte ON BAR.

Se você utilizar o Criador de menus para criar seu menu, talvez não 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 próprios itens de menu.

Para obter maiores informações sobre a criação de menus, consulte “Criando um sistema de menus”, no capítulo 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 estão ativos quando um título de menu na barra de menus é escolhido. A barra de menus do sistema atual é salva para memória com SET SYSMENU SAVE e, em seguida, os títulos de menu do sistema são removidos com SET SYSMENU TO.Dois títulos novos de menu do sistema são criados com DEFINE PAD e DEFINE POPUP cria um menu suspenso para cada título de menu. DEFINE BAR cria itens em cada um dos menus. Quando um título de menu é escolhido, ON PAD utiliza ACTIVATE POPUP para ativar o menu correspondente.

[Pág.: 127]

Page 128: 74039361 Visual FoxPro Comandos e Funcoes

Quando um item é escolhido a partir de um menu, ON SELECTION POPUP utiliza PROMPT( ) e POPUP( ) para passar o número do item e o nome do menu para o procedimento CHOICE. CHOICE exibe o texto do item escolhido e o nome do menu que contém o item. Se o item Saída for escolhido de um menu Informações de cartão, o menu do sistema do Visual FoxPro é restaurado.

*** Nomeie este programa como DEFINPOP.PRG ***CLEARSET SYSMENU SAVESET SYSMENU TODEFINE PAD convpad OF _MSYSMENU PROMPT '\<Conversões' COLOR SCHEME 3 ;

KEY ALT+C, ''DEFINE PAD cardpad OF _MSYSMENU PROMPT '\<Informações do Cartão' COLOR SCHEME 3 ;

KEY ALT+I, ''ON PAD convpad OF _MSYSMENU ACTIVATE POPUP conversionON PAD cardpad OF _MSYSMENU ACTIVATE POPUP cardinfoDEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4DEFINE 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 4DEFINE BAR 1 OF cardinfo PROMPT 'Visualizar co\<branças' ;

KEY ALT+B, ''DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<Pagamentos' ;

KEY ALT+P, ''DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar \<Usuários' ;

KEY ALT+U, ''DEFINE BAR 4 OF cardinfo PROMPT '\-'DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranças '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 choicePARAMETERS mprompt, mpopupWAIT WINDOW 'Você escolheu ' + mprompt + ;

' do popup ' + mpopup NOWAITIF mprompt = 'Saída'

SET SYSMENU TO DEFAULTENDIF

DEFINE WINDOW, comando

Cria uma janela e especifica seus atributos.

[Pág.: 128]

Page 129: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

DEFINE WINDOW NomeJanela1FROM 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 extensão no Visual FoxPro (10 caracteres nas versões anteriores do FoxPro). Eles devem começar com uma letra ou caractere de sublinhado e não podem começar com um número. Eles podem conter qualquer combinação de letras, números e caracteres de sublinhado.

FROM nLinha1, nColuna1 TO nLinha2, nColuna2 Especifica a posição e o tamanho da janela definida pelo usuário na janela principal do Visual FoxPro. FROM nLinha1, nColuna1 especifica a posição do canto superior esquerdo da janela definida pelo usuário na janela principal do Visual FoxPro. TO nLinha2, nColuna2 especifica a posição do canto inferior direito da janela definida pelo usuário na janela principal do Visual FoxPro.

Uma janela pode ser definida com as coordenadas que estão fora da borda da janela do Visual FoxPro e pode ser maior que a janela principal do Visual FoxPro.

A localização e o tamanho da janela são determinados pela fonte da janela pai. A janela pai pode ser outra janela definida pelo usuário ou a janela principal do Visual FoxPro.

AT nLinha3, nColuna3 SIZE nLinha4, nColuna4 Especifica a posição e o tamanho de uma janela definida pelo usuário.

AT nLinha3, nColuna3 especifica a posição do canto superior esquerdo da janela definida pelo usuário na janela principal do Visual FoxPro. Essa posição é determinada pela fonte atual da janela pai. Como a cláusula AT é idêntica à cláusula FROM em todos os aspectos, as duas cláusulas podem ser utilizadas de forma intercambiável.

SIZE nLinha4, nColuna4 especifica em linhas e colunas o tamanho da janela definida pelo usuário e assegura que o texto exibido em uma fonte específica caberá na janela criada.

Você pode especificar uma fonte e um estilo de fonte para uma janela definida pelo usuário, incluindo as cláusulas FONT e STYLE. Se você especificar uma fonte para a janela e incluir a cláusula SIZE, o tamanho da fonte será determinado pela largura e altura da fonte da janela. Se você não especificar a fonte para uma janela, será utilizada a fonte padrão do sistema, a fonte FoxFont de 10 pontos.

[Pág.: 129]

Page 130: 74039361 Visual FoxPro Comandos e Funcoes

IN [WINDOW] NomeJanela2 Coloca uma janela definida pelo usuário em uma janela pai. A janela definida pelo usuário torna-se a janela filho e não 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 cláusulas FROM e TO ou AT e SIZE terão relação com a janela pai, não com a janela principal do Visual FoxPro.

No exemplo a seguir, uma janela pai, wParent, é criada. Uma janela filho, wChild, é colocada na janela pai.

CLEARDEFINE 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 wChildACTIVATE SCREENWAIT WINDOW 'Pressione uma tecla para limpar as janelas'RELEASE WINDOW wParent, wChildCLEAR

IN SCREEN Coloca a janela definida pelo usuário explicitamente na janela principal do Visual FoxPro. Se você omitir IN SCREEN, a janela definida pelo usuário será colocada na janela principal do Visual FoxPro, como padrão.

Você pode incluir a cláusula IN WINDOW em ACTIVATE WINDOW para colocar a janela em outra janela definida pelo usuário e substituir a cláusula IN SCREEN.

IN DESKTOP Coloca uma janela definida pelo usuário na Área de trabalho do Microsoft Windows, fora da janela principal do Visual FoxPro. A posição 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 referência de objeto para a janela, permitindo que você manipule a janela com as propriedades orientadas a objetos disponíveis para o objeto do formulário.

Para obter informações adicionais sobre a programação orientada a objetos no Visual FoxPro, consulte o capítulo 3, “Programação orientada a objetos”, no Guia do Desenvolvedor. Para obter informações adicionais sobre as propriedades do objeto do formulário que podem ser especificadas para uma janela criada com a cláusula NAME, consulte o tópico 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 saída 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 cláusula FONT, será utilizada a fonte FoxFont de 10 pontos. Se a fonte especificada não estiver disponível, será utilizada uma fonte com características semelhantes em substituição.

STYLE cEstiloFonte Especifica um estilo de fonte para o texto colocado na janela. cEstiloFonte especifica a fonte. Se você omitir a cláusula STYLE ou se o estilo de fonte especificado não estiver disponível, o estilo de fonte Normal será utilizado.

A tabela a seguir lista estilos de fonte e seus caracteres correspondentes.

[Pág.: 130]

Page 131: 74039361 Visual FoxPro Comandos e Funcoes

Caractere Estilo de fonte

B NegritoI ItálicoN NormalQ Opaco- RiscadoT TransparenteU Sublinhado

Você pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. No Visual FoxPro, os comandos a seguir especificam os estilos Negrito e Itálico:

DEFINE WINDOW wDisplayStyle FROM 2, 2 TO 12, 22 STYLE 'BI'

TITLE cTextoTítulo Atribui um título com a cláusula TITLE. cTextoTítulo especifica o texto do título e é centralizado na borda superior da janela. Se o título for mais largo do que a janela, será truncado.

HALFHEIGHT Cria uma janela com uma barra de título de meia altura. Isso fornece compatibilidade para as janelas criadas nas versões anteriores do FoxPro que são importadas para o Visual FoxPro.

Quando você utiliza DEFINE WINDOW para criar uma janela, uma barra de título de meia altura é utilizada, a menos que você inclua a palavra-chave SYSTEM ou uma cláusula FONT.

Se você incluir a palavra-chave HALFHEIGHT, a barra de título de meia altura será utilizada independentemente da cláusula SYSTEM ou FONT estar incluída.

DOUBLE | PANEL | NONE | SYSTEM | cSeqüênciaBorda Especifica um estilo de borda para uma janela definida pelo usuário. A borda padrão é uma única linha.

Argumento Descrição

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 usuário deverá ter a aparência de uma janela do sistema.

Quando certas cláusulas diferentes (GROW, ZOOM etc.) são incluídas, os controles apropriados da janela são colocados na sua borda.cSeqüênciaBorda Especifica uma borda personalizada. Para obter maiores informações sobre a definição de uma borda personalizada, consulte ” SET BORDER”.

A inclusão de DOUBLE ou de uma seqüência de borda personalizada cria uma janela com a borda PANEL. A inclusão das cláusulas CLOSE, FLOAT, GROW, ZOOM ou MINIMIZE coloca os controles apropriados na janela, mesmo que a cláusula SYSTEM de definição da janela não seja incluída.

CLOSE Permite fechar uma janela definida pelo usuário utilizando o teclado ou mouse. Ao fechar uma janela, ela é removida da janela principal do Visual FoxPro ou de uma janela pai definida pelo usuário e sua definição é removida da memória. Se omitir CLOSE, você não 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ê não 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.

[Pág.: 131]

Page 132: 74039361 Visual FoxPro Comandos e Funcoes

GROW Permite que você dimensione uma janela definida pelo usuário, utilizando o teclado ou mouse. Se omitir GROW, você não 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 usuário em conformidade com MDI. MDI (interface de múltiplos documentos) é uma especificação que permite janelas com vários documentos e determina suas estruturas e procedimentos. Se você omitir MDI, a janela criada não 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 botão Restaurar da janela também é colocado na barra de menus do sistema do Visual FoxPro.· O título da janela é colocado na barra de títulos do Visual FoxPro e é separado do título do Visual FoxPro por um hífen.· Se você ativar outra janela em conformidade com MDI, ela será automaticamente maximizada.

NOMDI Cria uma janela que não está em conformidade com MDI.

MINIMIZE Permite minimizar uma janela definida pelo usuário 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 também 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); não é possível 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 nNúmeroEsquema Especifica as cores para a janela definida pelo usuário. Como padrão, as cores das janelas criadas com DEFINE WINDOW são controladas pelo esquema de cores 1.

COLOR ListaParesCores Especifica as cores para a janela definida pelo usuário.

Para obter maiores informações sobre esquemas e pares de cores, consulte o tópico ” Visão geral de cores”.

Comentários

Depois que as janelas definidas pelo usuário forem criadas com DEFINE WINDOW, elas poderão ser exibidas na janela principal do Visual FoxPro com ACTIVATE WINDOW ou SHOW WINDOW. O número de janelas definidas pelo usuário que podem ser criadas é limitado somente pela quantidade de memória disponível 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 não removem as definições das janelas da memória. 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 definições das janelas da memória. As janelas cujas definições foram removidas da memória devem ser recriadas com DEFINE WINDOW para serem exibidas novamente.

[Pág.: 132]

Page 133: 74039361 Visual FoxPro Comandos e Funcoes

DEFINE WINDOW, exemplo do comando

No exemplo a seguir, uma janela denominada Saída é 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.

CLEARDEFINE WINDOW output FROM 2,1 TO 13,75 TITLE 'Saída' ;

CLOSE FLOAT GROW ZOOMACTIVATE WINDOW outputWAIT WINDOW 'pressione qualquer tecla para ocultar a janela Saída'HIDE WINDOW outputWAIT WINDOW 'pressione qualquer tecla para exibir a janela Saída'SHOW WINDOW outputWAIT WINDOW 'pressione qualquer tecla para liberar a janela Saída'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 excluído do disco. O banco de dados especificado não poderá ser aberto. NomeBancoDados pode incluir o caminho do banco de dados com o nome dele.

? Exibe a caixa de diálogo Excluir onde você pode especificar o nome do banco de dados a ser excluído do disco.

DELETETABLES Exclui do disco as tabelas contidas no banco de dados e o banco de dados que contém as tabelas.

RECYCLE Especifica que o banco de dados não é excluído imediatamente do disco e é colocado na Lixeira do Windows 95.

Comentários

Utilize sempre DELETE DATABASE para excluir um banco de dados do disco. Ao contrário de outros utilitários de manipulação do sistema operacional, DELETE DATABASE remove referências 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á excluído 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 informações sobre as tabelas no banco de dados. DELETE DATABASE é utilizado com a opção DELETETABLES para remover o banco de dados e sua tabela friends do disco.

CLOSE ALLCREATE DATABASE people

[Pág.: 133]

Page 134: 74039361 Visual FoxPro Comandos e Funcoes

CREATE TABLE friends (FirstName C(20), LastName C(20))CLEARDISPLAY TABLES && Exibe as tabelas no banco de dadosDISPLAY DATABASES && Exibe as informações da tabelaCLOSE ALLDELETE DATABASE people DELETETABLES

DELETE FILE, comando

Exclui um arquivo de um disco.

Sintaxe

DELETE FILE [NomeArquivo | ?] [RECYCLE]

Argumentos

NomeArquivo Especifica o arquivo a ser excluído. NomeArquivo pode conter caracteres curingas como * e ?. Por exemplo, para excluir os arquivos de backup com a extensão .BAK no diretório ou pasta atual, emita DELETE FILE *.BAK.

? Exibe a caixa de diálogo Excluir do qual você pode escolher um arquivo a ser excluído.

RECYCLE Especifica que o banco de dados não é excluído imediatamente do disco e é colocado na Lixeira do Windows 95.

Cuidado Qualquer arquivo excluído com este comando não pode ser recuperado. Mesmo se SET SAFETY estiver ativado (ON), você não será avisado antes de o arquivo ser excluído.

Comentários

O arquivo que você deseja excluir não 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 diretório ou pasta diferente do padrão e a extensão do nome do arquivo deve estar incluída. O nome do arquivo não pode conter curingas.

Antes de excluir uma tabela de um banco de dados, emita REMOVE TABLE com o nome da tabela para remover as referências à 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 país é EUA são copiados para uma tabela denominada backup. Os dados em backup são, em seguida, copiados para um arquivo de texto, temp, que é aberto e, em seguida, excluído quando é fechado.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

COPY STRUCTURE TO backupUSE backupAPPEND FROM customer FOR country = 'EUA'COPY TO temp TYPE DELIMITED

WAIT WINDOW 'Pressione Esc para fechar e apaga temp.txt' NOWAITMODIFY FILE temp.txt NOEDITDELETE FILE temp.txt

[Pág.: 134]

Page 135: 74039361 Visual FoxPro Comandos e Funcoes

? IIF(FILE('temp.txt'),'Arquivo não excluído','Arquivo excluído')USEDELETE FILE backup.dbf

DELETE TRIGGER, comando

Remove um disparador de exclusão, inserção ou atualização 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á excluído.FOR DELETE | INSERT | UPDATE Especifica o disparador a ser excluído. Inclui FOR DELETE para remover o Disparador de exclusão, FOR INSERT para remover o Disparador de inserção e FOR UPDATE para remover o Disparador de atualização.

Comentários

Utilize CREATE TRIGGER para criar um disparador de exclusão, inserção ou atualização de uma tabela.

DELETE TRIGGER, exemplo do comando

Os exemplos a seguir criam um Disparador de atualização que impede que valores maiores que 50 sejam digitados no campo maxordamt na tabela customer. DISPLAY DATABASE é utilizado para exibir o Disparador de atualização. Em seguida, DELETE TRIGGER é utilizado para remover o Disparador de atualização e DISPLAY DATABASE é emitido novamente para verificar a remoção do Disparador de atualização.

CLOSE DATABASESOPEN DATABASE SYS(2004) + 'samples\data\testdata' && Abre o banco de dados do testdataUSE CUSTOMER && Abre a tabela Customer

CREATE TRIGGER ON customer FOR UPDATE AS maxordamt <= 50CLEARDISPLAY DATABASEDELETE TRIGGER ON customer FOR UPDATEDISPLAY DATABASE

DELETE, comando

Marca registros para exclusão.

Sintaxe

DELETE [Escopo] [FOR lExpressão1] [WHILE lExpressão2][IN nÁreaTrabalho | cAliasTabela][NOOPTIMIZE]

Argumentos

Escopo Especifica um intervalo de registros a serem marcados para exclusão. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

[Pág.: 135]

Page 136: 74039361 Visual FoxPro Comandos e Funcoes

Para obter maiores informações sobre as cláusulas de escopo, consulte o tópico Cláusulas de escopo.

O escopo padrão para DELETE é o registro atual (NEXT 1).

FOR lExpressão1 Especifica uma condição através da qual somente os registros que satisfazem à condição lógica lExpressão1 são marcados para exclusão.

Rushmore otimizará uma consulta especificada com DELETE ... FOR se lExpressão1 for uma expressão otimizável e a tabela for indexada em DELETED( ). Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter informações sobre expressões otimizáveis Rushmore, consulte SET OPTIMIZEe “Compreendendo a tecnologia Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição através da qual os registros serão marcados para serem excluídos quando lExpressão2 resultar em verdadeiro (.T.).IN nÁreaTrabalho Especifica a Área de trabalho da tabela onde os registros são marcados para exclusão.

IN cAliasTabela Especifica o alias da tabela onde os registros são marcados para exclusão.

Se você omitir nÁreaTrabalho e cAliasTabela, os registros serão marcados para exclusão na tabela da Área de trabalho atualmente selecionada.

NOOPTIMIZE Desativa a otimização de Rushmore de DELETE.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Comentários

Os registros marcados para exclusão não são removidos fisicamente da tabela até que PACK seja emitido. Os registros marcados para exclusão 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 exclusão onde o campo country contém EUA. Todos os registros marcados para exclusão são exibidos. RECALL ALL é utilizado para desmarcar todos os registros marcados para exclusão.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

DELETE FOR country = 'EUA' && Marca para exclusãoCLEARLIST FIELDS company, country FOR DELETED( ) && Lista os registros marcadosRECALL ALL && Desmarca todos os registros marcados para exclusão

DELETED( ), função

Retorna um valor lógico que indica se o registro atual está marcado para exclusão.

Sintaxe

DELETED([cAliasTabela | nÁreaTrabalho])

Tipos de retorno: Lógico

Argumentos

cAliasTabela | nÁreaTrabalho Você pode verificar o status do registro atual de uma tabela aberta em outra Área de trabalho especificando o número da Área de trabalho com nÁreaTrabalho ou o alias da tabela com

[Pág.: 136]

Page 137: 74039361 Visual FoxPro Comandos e Funcoes

cAliasTabela. Se uma tabela não estiver aberta na Área de trabalho especificada, DELETED( ) retornará falso.

Se você omitir cAliasTabela e nÁreaTrabalho, o status de exclusão será retornado para o registro atual da Área de trabalho atual.

Comentários

Se o registro estiver marcado para exclusão, DELETED( ) retornará verdadeiro (.T.); caso contrário, DELETED( ) retornará falso (.F.).

É possível marcar registros para exclusão com DELETE e DELETE - SQL e desmarcá-los com RECALL.Rushmore otimiza consultas que testam o status de exclusão dos registros se a tabela estiver indexada por DELETED( ).

Para obter informações sobre como utilizar a otimização de Rushmore para consultas, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

DELETED( ), exemplo da função

O exemplo a seguir abre a tabela customer no banco de dados testdata. DELETE - SQL é utilizado para marcar todos os registros a serem excluídos, onde o campo country que contém USA. DELETED( ) é utilizado para exibir todos os registros marcados para exclusão. RECALL ALL é utilizado para desmarcar todos os registros a serem excluídos.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

DELETE FROM customer WHERE country = 'USA' && Marca para exclusãoCLEARLIST FIELDS company, country FOR DELETED( ) && Lista os registros marcadosRECALL ALL && Desmarca todos os registros a serem excluídos

DIFFERENCE( ), função

Retorna um número inteiro de 0 a 4 que representa a diferença fonética relativa entre duas expressões de caracteres.

Sintaxe

DIFFERENCE(cExpressão1, cExpressão2)

Tipos de retorno: Numérico

Argumentos

cExpressão1, cExpressão2 Especifica as expressões de caracteres que são comparadas por DIFFERENCE( ).

Comentários

DIFFERENCE( ) é útil para procurar tabelas quando a ortografia exata de uma entrada não é conhecida.

Quanto mais parecida for a ortografia de duas expressões, maior será o número retornado por DIFFERENCE( ). Se a ortografia das expressões de caracteres for muito semelhante, DIFFERENCE( ) retornará 4. Para duas expressões de caracteres com poucas semelhanças fonéticas, DIFFERENCE( ) retornará 0.

DIFFERENCE( ), exemplo da função

[Pág.: 137]

Page 138: 74039361 Visual FoxPro Comandos e Funcoes

STORE 'Smith' TO gcName1STORE 'Smythe' TO gcName2STORE 'Smittie' TO gcName3STORE '' TO gcName4CLEAR? DIFFERENCE(gcName1, gcName2) && Exibe 4? DIFFERENCE(gcName1, gcName3) && Exibe 4? DIFFERENCE(gcName1, gcName4) && Exibe 1

DIMENSION, comando

Cria uma matriz uni ou bidimensional de variáveis de memória.

Sintaxe

DIMENSION NomeMatriz1 (nLinhas1 [, nColunas1])[, NomeMatriz2 (nLinhas2 [, nColunas2])] ...

Argumentos

NomeMatriz1 Especifica o nome da matriz. Podem ser criadas várias 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 contém uma coluna e dez linhas.

DIMENSION gaArrayOne(10)

Para criar uma matriz bidimensional, inclua os argumentos nLinhas1 e nColunas1. nLinhas1 especifica o número de linhas da matriz e nColunas1 especifica o número de colunas. O exemplo a seguir cria uma matriz bidimensional denominada gaArrayTwo que contém duas linhas e quatro colunas:

DIMENSION gaArrayTwo(2,4)

É preciso especificar um tamanho para cada matriz criada com DIMENSION. No exemplo a seguir, são criadas três 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 expressões em DIMENSION ou DECLARE entre colchetes ou parênteses. Por exemplo, os dois comandos a seguir criam matrizes idênticas:

DIMENSION gaArrayOne(10), gaArrayTwo[2,4], gaArrayThree(3,3)DIMENSION gaArrayOne[10], gaArrayTwo(2,4), gaArrayThree[3,3]

Comentários

DIMENSION é idêntico, em operação e sintaxe, a DECLARE.

Elementos da matriz…O tamanho de uma matriz determina a quantidade de elementos que ela pode conter. Cada elemento de uma matriz pode armazenar um único item de informação. Para determinar quantos elementos uma matriz contém e a quantidade de informações que pode armazenar, multiplique seu número de linhas (nLinhas1) pelo seu número de colunas (nColunas1).

Os elementos de uma matriz podem conter qualquer tipo de dados e são 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 definição padrão). Por exemplo:

[Pág.: 138]

Page 139: 74039361 Visual FoxPro Comandos e Funcoes

DIMENSION gaArray(10,3)STORE 'initial' TO gaArray

Índices de matriz…Para se fazer referência aos elementos de uma matriz, empregam-se os respectivos índices. Cada elemento de matriz possui um índice numérico exclusivo que o identifica. Se a matriz for unidimensional, o índice de um elemento será igual ao seu número de linha. Por exemplo, o índice correspondente ao elemento da terceira linha de uma matriz unidimensional é 3.

Para se fazer referência aos elementos de matrizes bidimensionais, utilizam-se dois índices. O primeiro indica a localização da linha do elemento e o segundo, a localização da coluna. Por exemplo, os índices correspondentes ao elemento da terceira linha e quarta coluna de uma matriz bidimensional são 3,4. Para obter uma discussão mais ampla sobre os índices de elementos de matriz, consulte ASUBSCRIPT( ).

O(s) índice(s) do primeiro elemento de uma matriz sempre começam com 1. Caso uma matriz seja bidimensional, ela também 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 matrizes…Para alterar o tamanho e as dimensões de uma matriz, emita o comando DIMENSION novamente. O tamanho de uma matriz pode ser aumentado ou diminuído, matrizes unidimensionais podem ser convertidas em duas dimensões e matrizes bidimensionais podem ser reduzidas a uma dimensão.

Se o número de elementos de uma matriz for aumentado, o conteúdo de todos os elementos da matriz original será copiado para a matriz recém-redimensionada. Os elementos adicionais são 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á pública (PUBLIC), mas se copiá-los para um programa e executá-lo, a matriz será privada (PRIVATE)).Se o número de elementos em uma matriz estiver reduzido, os elementos e qualquer dos dados contidos neles serão excluídos. Quando uma matriz unidimensional é remanejada para duas dimensões, o conteúdo 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 conteúdo dos elementos da matriz unidimensional é copiado para a primeira linha da nova matriz, seguido da segundo linha e, assim, sucessivamente. Os elementos adicionais são inicializados com o valor falso (.F.).Quando uma matriz bidimensional é convertida em uma dimensão, seu conteúdo é 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 são exibidos.

* Exemplo 1DIMENSION marray(2)STORE 'A' TO marray(1)STORE 'B' TO marray(2)CLEARDISPLAY MEMORY LIKE marrayDIMENSION marray(4)DISPLAY MEMORY LIKE marrayWAIT WINDOW

* Exemplo 2DIMENSION marrayone(4)STORE 'E' TO marrayone(1)

[Pág.: 139]

Page 140: 74039361 Visual FoxPro Comandos e Funcoes

STORE 'F' TO marrayone(2)STORE 'G' TO marrayone(3)STORE 'H' TO marrayone(4)CLEARDISPLAY MEMORY LIKE marrayoneDIMENSION marrayone(2,3)DISPLAY MEMORY LIKE marrayoneWAIT WINDOW

* Exemplo 3DIMENSION 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)CLEARDISPLAY MEMORY LIKE sample

DIR ou DIRECTORY, comando

Exibe informações sobre arquivos em um diretório 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 diretório ou pasta.

[LIKE] [Caminho] [EstruturaArquivo] Especifica o caminho para o diretório ou pasta que contém os arquivos. O caminho poderá incluir o nome da unidade de disco ou do volume se você omitir ON Unidade.

Inclua EstruturaArquivo para exibir informações sobre tipos de arquivo que não as tabelas. EstruturaArquivo é uma estrutura de especificação de arquivo que aceita curingas. Por exemplo, para listar todos os arquivos de programa no diretório 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 extensões:

DIR *.

TO PRINTER [PROMPT] Envia a saída de DIRECTORY para uma impressora.

No Visual FoxPro, você pode incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo de impressão antes do início da impressão. Nessa caixa de diálogo, você pode ajustar as definições da impressora, incluindo o número de cópias e de páginas a serem impressas. As definições da impressora que podem ser ajustadas dependem do driver de impressora instalado no momento. Coloque a palavra-chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Envia a saída 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 não sobrescrever o arquivo..

Comentários

Use DIR para exibir informações sobre arquivos.

[Pág.: 140]

Page 141: 74039361 Visual FoxPro Comandos e Funcoes

DIR sem a cláusula LIKE ou uma estrutura exibe o seguinte:

· Nomes de todas as tabelas do diretório ou pasta.· O número 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 são assim registradas).· Se cada tabela faz parte de um banco de dados.· O tamanho total em bytes ocupado pelas tabelas no disco (não incluindo arquivos de memo .FPT associados).· O número de tabelas exibidas.

· O número total de bytes restantes no disco.

As informações da tabela para a unidade de disco padrão ou volume e o diretório ou pasta são exibidas, a menos que sejam especificadas de forma diferente com Unidade, Caminho ou ambos.

DIR ou DIRECTORY, exemplo de comando

CLEARDIR && Exibe as tabelas no diretório ou pasta atualDIR *.CDX && Exibe os arquivos de índice no diretório ou pasta atualDIR A*.DBF && Exibe as tabelas que começam com ADIR *.* && Exibe todos os arquivos, incluindo aqueles sem extensões

DIRECTORY( ) , função

Retorna verdadeiro (.T.) se o diretório especificado for encontrado em disco.

Sintaxe

DIRECTORY(cNomeDiretório)

Tipos de retorno: Lógico

Argumentos

cNomeDiretório Especifica o nome do diretório a ser localizado. Se você não incluir um caminho absoluto para o diretório especificado, o Visual FoxPro irá procurar aquele em relação ao diretório padrão do Visual FoxPro.

Comentários

O diretório padrão do Visual FoxPro é especificado com SET DEFAULT.

DISKSPACE( ), função

Retorna o número de bytes disponível na unidade ou volume de disco padrões ou especificados.

Sintaxe

DISKSPACE([cNomeVolume])

Tipos de retorno: Numérico

Argumentos

[Pág.: 141]

Page 142: 74039361 Visual FoxPro Comandos e Funcoes

cNomeVolume Especifica o nome da unidade de disco ou do volume para o qual o espaço disponível é retornado. Se cNomeVolume for omitido, o espaço disponível será retornado para o volume ou unidade de disco padrão.

Comentários

Esta função é útil para determinar se há espaço suficiente em disco para fazer cópias de reserva de arquivos ou executar comandos, como SORT, que precisam de espaço adicional em disco para arquivos de trabalho temporário.

A unidade de disco ou o volume padrão são 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 não ser exato para grandes unidades de rede.

DISKSPACE( ), exemplo de função

O exemplo a seguir utiliza DISKSPACE( ) para determinar se há espaço suficiente em disco disponível para executar uma classificação.

*** Check DISKSPACE before sort ***CLOSE DATABASESOPEN 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 'Espaço suficiente em disco para classificação.'ELSE

WAIT WINDOW 'Espaço insuficiente em disco. A classificação não pode ser feita.'ENDIF

DISPLAY DATABASE, comando

Exibe informações sobre bancos de dados ou campos atuais, conexões definidas, tabelas ou visualizações do banco de dados atual.

Sintaxe

DISPLAY DATABASE[TO PRINTER [PROMPT] | TO FILE NomeArquivo][NOCONSOLE]

Argumentos

TO PRINTER [PROMPT] Direciona a saída de DISPLAY DATABASE para uma impressora.

No Visual FoxPro, você pode incluir a cláusula opcional PROMPT para exibir a caixa de diálogo Imprimir antes do início da impressão. Coloque PROMPT logo depois de TO PRINTER.

TO FILE NomeArquivo Direciona a saída 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.

[Pág.: 142]

Page 143: 74039361 Visual FoxPro Comandos e Funcoes

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

Comentários

Utilize DBGETPROP( ) para retornar maiores informações 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 informações sobre essas tabelas.

CREATE DATABASE peopleCREATE TABLE friends (FirstName C(20), LastName C(20))CLEARDISPLAY TABLES && Exibe as tabelas do banco de dadosDISPLAY DATABASES && Exibe informações sobre as tabelas

DISPLAY FILES, comando

Exibe informações 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 condição que faz com que o Visual FoxPro exiba informações apenas sobre arquivos com padrão correspondentes à da estrutura EstruturaArquivo. O padrão da estrutura pode conter curingas como ? e *.

TO PRINTER [PROMPT] Inclua TO PRINTER para enviar a saída de DISPLAY FILES para a impressora.

No Visual FoxPro, você pode incluir a cláusula opcional PROMPT para exibir uma caixa de diálogo antes do início da impressão. Nela, você pode ajustar as definições da impressora, incluindo o número de cópias e de páginas a serem impressas. As definições da impressora que podem ser ajustadas dependem do driver de impressora instalado atualmente. Coloque a palavra-chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Inclua TO FILE NomeArquivo para enviar a saída 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 não substituí-lo.

Comentários

Utilize DISPLAY FILES para exibir informações sobre arquivos em um disco. Você pode exibir informações sobre todos os arquivos de uma determinada unidade de disco, volume, diretório ou pasta, ou apenas arquivos que correspondam a um padrão de estrutura que contenha curingas como ? e *.

A emissão de DISPLAY FILES sem qualquer argumento exibe informações sobre as tabelas do diretório atual. As informações exibidas incluem :

· O nome da tabela.· O número de registros na tabela.· Data e hora da última atualização da tabela.· O tamanho de cada tabela em bytes.

[Pág.: 143]

Page 144: 74039361 Visual FoxPro Comandos e Funcoes

· 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 diretório EXEMPLOS\DADOS.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')

CLEARDISPLAY FILES LIKE *.DBC

DISPLAY MEMORY, comando

Exibe o conteúdo atual das matrizes e variáveis de memória.

Sintaxe

DISPLAY MEMORY[LIKE EstruturaArquivo][TO PRINTER [PROMPT] | TO FILE NomeArquivo][NOCONSOLE]

Argumentos

LIKE EstruturaArquivo Exibe informações sobre variáveis e matrizes que correspondem a EstruturaArquivo do padrão de estrutura. Se você incluir LIKE EstruturaArquivo, o Visual FoxPro exibirá apenas o conteúdo das matrizes e variáveis de memória que correspondam a EstruturaArquivo. EstruturaArquivo aceita curingas como ? e *. Por exemplo, para exibir todas as variáveis de memória que comecem com a letra A, emita:

DISPLAY MEMORY LIKE A*

TO PRINTER [PROMPT] Direciona a saída de DISPLAY MEMORY para a impressora.

Você pode incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo antes do início da impressão. Nessa caixa de diálogo, você pode ajustar as definições da impressora, incluindo o número de cópias e de páginas a serem impressas. As definições da impressora a serem ajustadas dependem do driver de impressora atualmente instalado. Coloque a palavra-chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Direciona a saída 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 não sobrescrever o arquivo.

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela definida pelo usuário que está ativa.

Comentários

DISPLAY MEMORY exibe o nome, tipo, conteúdo e status de todas as matrizes de variáveis e variáveis definidas atualmente. Além disso, exibe o número de variáveis definidas, o número de bytes utilizados e o número de variáveis adicionais disponíveis. Observe que o número de bytes utilizados representa a memória utilizada por variáveis do tipo caractere. As variáveis do tipo de caractere são o único tipo de variáveis que precisam de memória adicional, além daquela alocada pela contagem de variáveis especificada com o item de configuração MVCOUNT.

Também são exibidas informações sobre variáveis do sistema, menus, barras de menus, títulos de menus e janelas.

[Pág.: 144]

Page 145: 74039361 Visual FoxPro Comandos e Funcoes

DISPLAY MEMORY, exemplo do comando

No exemplo a seguir, muitas variáveis são criadas e atribuídas a valores. DISPLAY MEMORY exibe primeiro todas as variáveis que começam com “sam” e, em seguida, exibe todas as variáveis que contêm cinco letras e terminam com “exit”.

STORE 'Adeus' TO sample1STORE 'Alô' TO sample2STORE .T. TO texitSTORE .F. TO mexit

CLEARDISPLAY 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 saída de DISPLAY STATUS para uma impressora.

Você pode incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo de impressão antes do início da impressão. Nessa caixa de diálogo, você pode ajustar as definições da impressora, incluindo o número de cópias e de páginas a serem impressas. As definições da impressora que podem ser ajustadas dependem do driver de impressora atualmente instalado. Coloque a palavra-chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Direciona a saída 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 não sobrescrever o arquivo.

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

Comentários

Esse formulário de DISPLAY lista informações sobre o ambiente atual do Visual FoxPro. As categorias de informações e as informações sobre cada categoria são as seguintes.

Informações sobre arquivos de índice e tabelas:

· Tabelas abertas· Arquivos memo abertos· Aliases de tabela· Páginas de código de tabela· Relacionamentos de tabela· Índices ativos· Chaves de arquivos de índice· A marca ou arquivo de índice controlador· Arquivos compostos estruturais abertos

[Pág.: 145]

Page 146: 74039361 Visual FoxPro Comandos e Funcoes

· Marcas de índice compostas abertas· O status do atributo compartilhado de cada tabela aberta· Os registros bloqueados atualmente em cada tabela

· A definição EXCLUSIVE de uso· A definição LOCK· A definição MULTILOCKS· O valor SET REFRESH· O valor SET REPROCESS

Informações sobre o arquivo de baixo nível aberto:

· Arquivos de baixo nível abertos · O número do identificador de arquivo para cada arquivo de baixo nível· A posição do ponteiro de arquivo para cada arquivo de baixo nível· Atributos de leitura e gravação para cada arquivo de baixo nível

Informações adicionais sobre o ambiente do Visual FoxPro:

· O arquivo de procedimentos em uso· O tipo de processador· O caminho do Visual FoxPro· O diretório ou pasta padrão do Visual FoxPro· O destino da impressão· A definição das margens· A Área de trabalho atual· Definições do comando SET· Módulos binários carregados atualmente· Informações de DDE no Visual FoxPro· Página de código atual· Seqüência de ordenação atual· Página de código do compilador· Formato de data atual· Combinação de teclas da macro de teclado· Modo como os parâmetros UDF são passados· Opções de MesclagemTexto· Funções registradas da biblioteca compartilhada, como aquelas das bibliotecas de vínculo dinâmico (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 nÁreaTrabalho| cAliasTabela][TO PRINTER [PROMPT] | TO FILE NomeArquivo][NOCONSOLE]

Argumentos

IN nÁreaTrabalho| cAliasTabela Exibe a estrutura da tabela em uma Área de trabalho diferente das áreas de trabalho atuais. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela, o alias da tabela.

TO PRINTER [PROMPT] Direciona a saída de DISPLAY STRUCTURE para a impressora.

[Pág.: 146]

Page 147: 74039361 Visual FoxPro Comandos e Funcoes

Você pode incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo antes do início da impressão. Nessa caixa de diálogo, você pode ajustar as definições da impressora, incluindo o número de cópias e de páginas a serem impressas. As definições da impressora que podem ser ajustadas dependem do driver de impressora instalado atualmente. Coloque a palavra-chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Direciona a saída 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 não sobrescrever o arquivo.

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

Comentários

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 Numérico, Duplo ou Flutuante, será exibido o número de casas decimais do campo. Também será exibido o valor nulo aceito em cada campo.DISPLAY STRUCTURE também exibe o número atual de registros na tabela e a data de sua última atualização. Se a tabela tiver um campo Memo associado, será exibido o tamanho de bloco do campo Memo. O comprimento total de todos os campos também será exibido, assim como a página de código 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 seqüência de ordenação da marca serão exibidas próximas 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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

CLEARDISPLAY STRUCTURE

DISPLAY TABLES, comando

Exibe nomes e informações 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 saída de DISPLAY TABLES para uma impressora.

Você pode incluir PROMPT para exibir a caixa de diálogo Imprimir antes do início da impressão. Coloque a palavra-chave PROMPT logo após TO PRINTER.

[Pág.: 147]

Page 148: 74039361 Visual FoxPro Comandos e Funcoes

TO FILE NomeArquivo Direciona a saída 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 saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

Comentários

As informações retornadas formam um subconjunto de informações exibidas com DISPLAY STATUS. No entanto, as informações exibidas com DISPLAY TABLES contêm apenas informações relacionadas a tabelas, exibindo as informações, independente de as tabelas estarem ou não abertas.

As seguintes informações são 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 informações sobre as tabelas do banco de dados.

CLOSE DATABASESSET PATH TO (SYS(2004) + 'samples\data\') && Define o caminho para o banco de dadosOPEN DATABASE testdata && Abre o banco de dados testdata

CLEARDISPLAY TABLES && Exibe informações sobre as tabelas no banco de dados

DISPLAY, comando

Exibe informações sobre a tabela atual na janela principal do Visual FoxPro ou em uma janela definida pelo usuário.

Sintaxe

DISPLAY[[FIELDS] ListaCampos][Escopo] [FOR lExpressão1] [WHILE Expressão2][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 serão exibidos, como padrão.

O conteúdo do campo Memo não é exibido, a menos que o nome deste campo esteja explicitamente incluído 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 serão exibidos. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. Os comandos que incluem Escopo operam apenas na tabela da Área de trabalho ativa.

Para obter maiores informações sobre as cláusulas de escopo, consulte o tópico Cláusulas de escopo.

[Pág.: 148]

Page 149: 74039361 Visual FoxPro Comandos e Funcoes

O escopo-padrão para DISPLAY é o registro atual (NEXT 1).

FOR lExpressão1 Especifica que apenas os registros que satisfazem a condição lógica lExpressão1 serão exibidos. Isso permite que você extraia os registros não desejados.

Rushmore otimiza consultas criadas com DISPLAY ... FOR se lExpressão1 for uma expressão otimizável. Para obter o melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, do Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição através da qual os registros serão exibidos quando a expressão lógica lExpressão2 resultar em verdadeiro (.T.).

OFF Suprime a exibição dos números de registro. Se você omitir OFF, o número de registro será exibido antes de cada registro.

NOCONSOLE Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

NOOPTIMIZE Desativa a otimização Rushmore de DISPLAY.

Para maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

TO PRINTER [PROMPT] Envia a saída de DISPLAY para a impressora

No Visual FoxPro, , você pode incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo antes do início da impressão. Nela, você pode ajustar as definições da impressora, incluindo o número de cópias e de páginas a serem impressas. As definições da impressora que podem ser ajustadas dependem do driver de impressora instalado no momento. Coloque PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Envia a saída 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 não sobrescrever o arquivo.

Comentários

DISPLAY exibe o conteúdo dos registros e os resultados de expressões para a tabela atual. Se houver mais informações do que podem ser exibidas na janela, a primeira tela de informações será exibida e o Visual FoxPro, colocado em pausa. Pressione qualquer tecla ou clique sobre qualquer local para ver a próxima tela de informações. DISPLAY é semelhante a LIST, com exceção de que LIST exibe as mesmas informações em um fluxo contínuo sem ser colocado em pausa.

DISPLAY também pode ser utilizado para exibir os resultados de expressões, que podem consistir em combinações de literais, variáveis de memória, elementos de matriz, campos e campos Memo. Os nomes de campos e as expressões serão 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 conteúdo do primeiro registro é exibido.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customer

CLEARDISPLAY FIELD cust_id, company, contact OFF NEXT 10

[Pág.: 149]

Page 150: 74039361 Visual FoxPro Comandos e Funcoes

DMY( ), função

Retorna uma expressão de caractere no formato dia-mês-ano(por exemplo, 31 Maio 1996) a partir de uma expressão de data ou data e hora. O nome do mês não é abreviado.

Sintaxe

DMY(dExpressão | tExpressão)

Tipos de retorno: Caractere

Argumentos

dExpressão Especifica a expressão de data a partir da qual a função DMY( ) retorna uma seqüência de caracteres no formato dia-mês-ano.

tExpressão Especifica a expressão de data e hora a partir da qual a função DMY( ) retorna uma seqüência de caracteres no formato dia-mês-ano.

Comentários

Se SET CENTURY estiver desativado (OFF), DMY( ) retornará uma seqüência de caracteres no formato dd mês yy ano (por exemplo, 16 Fevereiro 96). Se SET CENTURY estiver ativado (ON), o formato será dd-mês-aaaa (por exemplo, 16 Fevereiro 1996).

DMY( ), exemplo da função

CLEARSET CENTURY OFF? DMY(DATE( ))SET CENTURY ON? DMY(DATE( ))

DO CASE ... ENDCASE, comando

Executa o primeiro conjunto de comandos cuja expressão condicional resulta em verdadeiro (.T.).

Sintaxe

DO CASECASE lExpressão1

Comandos[CASE lExpressão2

Comandos ... CASE lExpressãoN

Comandos][OTHERWISE

Comandos]ENDCASE

Argumentos

CASE lExpressão1 Comandos ... Quando a primeira expressão CASE verdadeira (.T.) é localizada, o conjunto de comandos que a acompanha é executado. A execução do conjunto de comandos continua até que a próxima cláusula CASE ou ENDCASE seja localizada. A execução é retomada, então, pelo primeiro comando seguinte a ENDCASE.

Se uma expressão CASE for falsa (.F.), o conjunto de comandos seguintes a ela até a próxima cláusula CASE será ignorado.

[Pág.: 150]

Page 151: 74039361 Visual FoxPro Comandos e Funcoes

Apenas um conjunto de comandos é executado. É o primeiro conjunto de comandos cuja expressão CASE resulta em verdadeiro (.T.). Qualquer expressão CASE verdadeira (.T.) posterior será ignorada.

OTHERWISE Comandos Se todas as expressões CASE resultarem em falso (.F.), OTHERWISE determinará se um conjunto de comandos adicionais será executado.

· Se você incluir OTHERWISE, os comandos que acompanham OTHERWISE serão executados e a execução saltará para o primeiro comando que acompanha ENDCASE.· Se você omitir OTHERWISE, a execução saltará para o primeiro comando que acompanha ENDCASE.

Comentários

DO CASE é utilizado para executar um conjunto de comandos do Visual FoxPro, baseado no valor de uma expressão lógica. Quando DO CASE é executado, as expressões lógicas sucessivas são avaliadas; os valores das expressões determinam o conjunto de comandos que será executado.

Podem ser colocados comentários na mesma linha, após DO CASE e ENDCASE. Os comentários são ignorados durante a compilação e execução do programa.

DO CASE ... ENDCASE, exemplo de comando

Neste exemplo, o Visual FoxPro avalia cada cláusula CASE até que a variável MONTH seja encontrada em uma das listas. A seqüência apropriada é armazenada na variável rpt_title e a estrutura DO CASE é fechada.

STORE CMONTH(DATE( )) TO month && O mês atual

DO CASE && Começa o loop

CASE INLIST(month,'Janeiro','Fevereiro','Março')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

OTHERWISESTORE 'Ganhos no quarto trimestre' TO rpt_title

ENDCASE && Finaliza o loopWAIT WINDOW rpt_title NOWAIT

DO WHILE ... ENDDO, comando

Executa um conjunto de comandos em um loop condicional.

Sintaxe

DO WHILE lExpressãoComandos[LOOP][EXIT]

ENDDO

Argumentos

lExpressão Especifica uma expressão lógica cujo valor determina se os comandos entre DO WHILE e ENDDO são executados. Se lExpressão for verdadeiro (.T.), o conjunto de comandos será executado.

[Pág.: 151]

Page 152: 74039361 Visual FoxPro Comandos e Funcoes

Comandos Especifica o conjunto de comandos do Visual FoxPro a ser executado se lExpressão 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 após ENDDO. EXIT pode ser colocado em qualquer lugar entre DO WHILE e ENDDO.

Comentários

Os comandos entre DO WHILE e ENDDO são executados enquanto a expressão lógica lExpressão permanecer como verdadeira (.T.). Cada instrução DO WHILE deve ter uma instrução ENDDO correspondente.

Os comentários podem ser colocados depois de DO WHILE e ENDDO na mesma linha. Os comentários serão ignorados durante a compilação e execução do programa.

DO WHILE ... ENDDO, exemplo do comando

No exemplo a seguir, o número de produtos em estoque com preços 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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE products && Abre a tabela ProductsSET TALK OFFgnStockTot = 0

DO WHILE .T. && Inicia o loopIF EOF( )

EXITENDIFIF unit_price < 20

SKIPLOOP

ENDIFgnStockTot = gnStockTot + in_stockSKIP

ENDDO && Finaliza o loop

CLEAR? 'O total de itens em estoque são avaliados em aproximadamente 20 dólares:'?? gnStockTot

DO, comando

Executa um procedimento ou programa do Visual FoxPro.

Sintaxe

DO NomePrograma1 | NomeProcedimento[IN NomePrograma2][WITH ListaParâmetros]

Argumentos

NomePrograma1 Especifica o nome do programa a ser executado.

[Pág.: 152]

Page 153: 74039361 Visual FoxPro Comandos e Funcoes

Se você não incluir uma extensão com o programa que executar, o Visual FoxPro procurará e executará essas versões do programa na seguinte ordem:

· .EXE (versão executável)· .APP (um aplicativo)· .FXP (versão compilada)· .PRG (programa)

Para utilizar DO, a fim de executar um programa de menu, um programa de formulário ou uma consulta específica, você deve incluir as respectivas extensões (.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 execução. Se o procedimento não estiver localizado nesse programa, o Visual FoxPro procurará o procedimento em um arquivo de procedimentos aberto com SET PROCEDURE.

Você pode incluir a cláusula IN NomePrograma2, avisando ao Visual FoxPro para procurar o procedimento no arquivo que você especificar.

Os procedimentos múltiplos, dentro de uma versão executável (.EXE) ou de um aplicativo (.APP), podem ter o mesmo nome. Quando você utiliza DO para iniciar um procedimento em uma versão executável ou em um aplicativo, o Visual FoxPro procura apenas o programa principal do aplicativo ou versão executável 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 não puder ser localizado, será exibida a mensagem “Arquivo inexistente”. Se o arquivo de programa for localizado mas o procedimento especificado não estiver nesse arquivo, será exibida a mensagem “Procedimento não localizado”.

WITH ListaParâmetros Especifica os parâmetros a serem passados ao programa ou procedimento. Os parâmetros listados em ListaParâmetros são expressões, variáveis de memória, literais, campos ou funções definidas pelo usuário. Como padrão, os parâmetros são passados aos programas e procedimentos por referência. Você pode passar um parâmetro por valor, colocando-o entre parênteses.

Consulte SET UDFPARMS para obter informações sobre como passar parâmetros por valor ou referência. O número máximo de parâmetros, que podem ser passados a um programa ou procedimento é 27. Para obter maiores informações sobre como passar parâmetros, consulte LPARAMETERS e PARAMETERS.

Comentários

DO executa um procedimento ou programa do Visual FoxPro em um programa ou arquivo de procedimentos. O próprio arquivo de programa pode conter comandos DO adicionais, permitindo que você aninhe os comandos DO em até 128 níveis.

Quando você utiliza DO para executar um programa, os comandos contidos no arquivo de programa são executados até que ocorra uma das opções a seguir:

· RETURN é encontrado.· CANCEL é executado.· Outro comando DO é emitido.· O fim do arquivo é atingido.· QUIT é executado.

Quando a execução do programa for concluída, o controle será retornado para um dos locais a seguir:

· O programa de chamada.· A janela Comando.

[Pág.: 153]

Page 154: 74039361 Visual FoxPro Comandos e Funcoes

· O sistema operacional.

Se você escolher Executar no menu Programa e executar um programa em um diretório em uma unidade de disco diferente do diretório ou unidade de disco atual, o Visual FoxPro alterará automaticamente a unidade de disco e o diretório padrão para o diretório e unidade de disco que contêm o programa.

DOW( ), função

Retorna um valor numérico de dia da semana a partir de uma expressão de Data ou DataHora.

Sintaxe

DOW(dExpressão | tExpressão [, nPrimeiroDiaSemana])

Tipos de retorno: Numérico

Argumentos

dExpressão Especifica a expressão de Data da qual DOW( ) retorna o número do dia.

tExpressão Especifica a expressão de DataHora da qual DOW( ) retorna o número do dia.

nPrimeiroDiaSemana Especifica o primeiro dia da semana.

nPrimeiroDiaSemana pode ser um dos valores a seguir.

NPrimeiroDiaSemanaDescrição

0 DOW( ) utiliza qualquer dia atualmente selecionado na caixa de listagem Começar semana em, exibida na guia Regional da caixa de diálogo Opções.1 Domingo. Esse é o padrão quando nPrimeiroDiaSemana é omitido, além de ser o primeiro dia da semana utilizado nas versões anteriores do FoxPro.2 Segunda-feira3 Terça-feira4 Quarta-feira5 Quinta-feira6 Sexta-feira7 Sábado

DOW( ), exemplo da função

STORE DATE( ) TO gdDayNumCLEAR? 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]

Definições

NomeTabela Especifica a tabela a ser removida do banco de dados atual e excluída do disco.

[Pág.: 154]

Page 155: 74039361 Visual FoxPro Comandos e Funcoes

NomeArquivo Especifica uma tabela livre a ser excluída do disco.

? Exibe a caixa de diálogo Remover da qual você pode selecionar uma tabela a ser removida do banco de dados atual e excluída do disco.

RECYCLE Especifica que a tabela não seja imediatamente excluída do disco e seja colocada na Lixeira do Windows 95.

Comentários

Quando DROP TABLE é emitido, todos os índices principais, valores padrão e regras de validação associados à tabela também são removidos. DROP TABLE também afeta outras tabelas no banco de dados atual se as tabelas possuírem regras ou relações associadas à tabela sendo removidas. As regras e relações não estarão mais válidas quando a tabela for removida do banco de dados.

Qualquer tabela excluída com esse comando não pode ser recuperada. Mesmo que SET SAFETY esteja ativado (ON), você não será avisado quando a tabela for excluída.

DTOC( ), função

Retorna uma data tipo Caractere a partir de uma expressão Data ou DataHora.

Sintaxe

DTOC(dExpressão | tExpressão [, 1])

Tipos de retorno: Caractere

Argumentos

dExpressão Especifica uma variável de Data, elemento de matriz ou campo para os quais a função DTOC( ) retorna uma data tipo Caractere.

tExpressão Especifica uma variável de DataHora, elemento de matriz ou campo para os quais a função DTOC( ) retorna uma data do tipo Caractere.

1 Retorna a data em formato adequado para indexação. Isto é útil para manter os registros de tabelas em seqüência cronológica.

Por exemplo, para ordenar os registros da tabela em uma seqüência de entrada, você pode emitir este comando:

INDEX ON DTOC(gdInvDate, 1) + gnInvTime TAG Timeindx

gdInvDate e gnInvTime são campos que contêm a data e a hora em que os dados foram inseridos no registro.

Comentários

DTOC( ) retorna uma seqüência de caracteres que corresponde à expressão Data ou DataHora. O formato de data é determinado por SET CENTURY e SET DATE.

DTOC( ), exemplo da função

STORE CTOD('10/31/95') TO gdThisDateCLEAR? DTOC(gdThisDate)STORE DTOC({10/31/95}+90) TO gcExpireDate? 'Sua garantia de 90 dias expirou ', gcExpireDate? DTOC({10/31/95},1)

[Pág.: 155]

Page 156: 74039361 Visual FoxPro Comandos e Funcoes

DTOR( ), função

Converte graus em radianos.

Sintaxe

DTOR(nExpressão)

Tipos de retorno: Numérico

Argumentos

nExpressão Especifica a expressão numérica cujo valor você deseja converter em radianos. Um ângulo expresso no formato grau:minuto:segundo deve ser convertido no seu equivalente decimal.

Comentários

DTOR( ) converte o valor de uma expressão numérica determinada em graus em um valor equivalente em radianos. DTOR( ) é útil para trabalhar com estas funções trigonométricas do Visual FoxPro: ACOS( ), ASIN( ), COS( ), SIN( ) e TAN( ).

Utilize RTOD( ) para converter radianos em graus.

DTOR( ), exemplo da função

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( ), função

Retorna uma data de seqüência de caracteres no formato aaaammdd a partir de uma expressão Data ou DataHora especificada.

Sintaxe

DTOS(dExpressão | tExpressão)

Tipos de retorno: Caractere

Argumentos

dExpressão Especifica a expressão Data que DTOS( ) converte em uma seqüência de caracteres de oito dígitos.

tExpressão Especifica a expressão DataHora que DTOS( ) converte em uma seqüência de caracteres de oito dígitos.

Comentários

Essa função é útil para indexar tabelas em um campo Data ou DataHora. É equivalente a DTOC( ) quando o argumento opcional 1 é incluído.

A seqüência de caracteres retornada por DTOS( ) não é afetada por SET DATE ou SET CENTURY.

[Pág.: 156]

Page 157: 74039361 Visual FoxPro Comandos e Funcoes

DTOS( ), exemplo da função

CLEAR? DTOS(DATE( ))

DTOT( ), função

Retorna um valor de DataHora a partir de uma expressão Data.

Sintaxe

DTOT(dExpressãoData)

Tipos de retorno: DataHoraArgumentos

dExpressãoData Especifica a expressão Data da qual é retornado um valor de DataHora.

Comentários

O formato do valor de DataHora retornado por DTOT( ) depende das definições atuais de SET DATE e SET MARK. Se não for dado um século, será utilizado o século vinte.

DTOT( ) adiciona uma hora padrão de meia-noite (12:00:00 A.M.) à data para produzir um valor de DataHora válido.

DTOT( ), exemplo da função

? DTOT({02/16/95}) && Exibe 02/16/95 12:00:00am

EDIT, comando

Exibe campos para edição.

Sintaxe

EDIT[FIELDS ListaCampos][Escopo] [FOR lExpressão1] [WHILE lExpressão2][FONT cNomeFonte [, nTamanhoFonte]][STYLE cEstiloFonte][FREEZE NomeCampo][KEY eExpressão1 [, eExpressão2]][LAST | NOINIT][LPARTITION][NAME NomeObjeto][NOAPPEND][NODELETE][NOEDIT | NOMODIFY][NOLINK][NOMENU][NOOPTIMIZE][NORMAL][NOWAIT][PARTITION nNúmeroColuna [LEDIT] [REDIT]][PREFERENCE NomePreferência]

[Pág.: 157]

Page 158: 74039361 Visual FoxPro Comandos e Funcoes

[REST][SAVE][TIMEOUT nSegundos][TITLE cTextoTitulo][VALID [:F] lExpressão3 [ERROR cTextoMensagem]][WHEN lExpressão4][WIDTH nLarguraCampo][WINDOW NomeJanela1] [IN [WINDOW] NomeJanela2 | IN SCREEN][COLOR SCHEME nNúmeroEsquema]

Argumentos

FIELDS ListaCampos Especifica os campos que irão aparecer na janela Editar. Os campos são 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 serão exibidos na ordem em que aparecem na estrutura da tabela.

A lista de campos pode especificar qualquer combinação 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 = lExpressão1 [:F] [:E = cTextoMensagem]][:P = cCódigosFormato] [:B = eLimiteInferior, eLimiteSuperior [:F]][:H = cTextoCabeçalho][:W = lExpressao2][, NomeCampo2 [:R]...]

Campos calculados

A lista de campos pode conter instruções para a criação de campos calculados. Um campo calculado contém dados somente para leitura criados com uma expressão. Essa expressão pode assumir qualquer forma, mas precisa ser uma expressão válida do Visual FoxPro.

A sintaxe da instrução utilizada para criar um campo calculado é:

NomeCampoCalculado = eExpressão

Este exemplo cria um campo calculado chamado location:

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerEDIT FIELDS location = ALLTRIM(city) + ', ' + country

A lista de campos da cláusula FIELDS inclui oito opções, o que permite um gerenciamento especial dos campos exibidos na janela Editar.

:nLarguraColuna Especifica o tamanho para exibição de um campo em colunas. O valor de :nLarguraColuna não afeta o tamanho do campo na tabela; ele só altera a forma de exibição 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, não podendo ser alterado.

CLOSE DATABASES

[Pág.: 158]

Page 159: 74039361 Visual FoxPro Comandos e Funcoes

OPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerEDIT FIELDS cust_id:R, company

:V = lExpressão1 Especifica uma opção de verificação que executa validação de dados em nível de campos na janela Editar. Se lExpressão1 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 próximo campo.

Se lExpressão1 retornar falso (.F.), a entrada de dados será considerada incorreta, o cursor permanecerá no campo e será exibida uma mensagem. Se lExpressão1 retornar 0, a entrada de dados será considerada incorreta e o cursor permanecerá no campo, mas não será exibida uma mensagem de erro.

Como padrão, lExpressão1 só é avaliada quando o campo é modificado. Para forçar uma verificação, inclua a opção :F.

Você pode exibir sua própria mensagem de erro incluindo a opção :E.

A opção de verificação não é executada para campos Memo.

:F Especifica uma opção de validação forçada que determina se a expressão na opção de verificação (lExpressão1) será avaliada quando você mover o cursor para fora de um campo. Se :F não for incluído, lExpressão1 só será avaliada se forem feitas alterações no campo. Se :F for incluído, lExpressão1 será avaliada, mesmo que o campo não seja modificado

:E = cTextoMensagem Exibe uma mensagem de erro especificada com cTextoMensagem em vez da mensagem padrão do sistema.

Se a expressão de validação :V = lExpressão1 for verdadeira (.T.), o cursor sairá normalmente do campo. Se a expressão for falsa (.F.), o cursor permanecerá no campo e uma mensagem de erro será exibida.

Se a expressão de validação :V = lExpressão1 for 0, não será exibida uma mensagem de erro e o cursor permanecerá no campo que está sendo validado, permitindo que você exiba suas próprias mensagens de erro em rotinas de validação.

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 validação do campo.

:V especifica o critério de validação. :F força a verificação da validação, quer os dados sejam ou não alterados. :E substitui a mensagem de erro do sistema do Visual FoxPro por uma mensagem de erro definida pelo usuário.

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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE products && Abre a tabela productsIF _WINDOWS OR _MAC

SET STATUS BAR ONENDIFUSE productsEDIT FIELDS in_stock :V = in_stock < 100 ;

:F ;:E = 'The stock amount must be less than 100'

[Pág.: 159]

Page 160: 74039361 Visual FoxPro Comandos e Funcoes

:P = cCódigosFormato Especifica uma opção de figura que permite criar um modelo de edição especificado com cCódigosFormato, que controla a exibição e entrada de dados para cada campo em uma janela Editar.

Para obter maiores informações sobre a utilização de códigos de edição de figuras, consulte as propriedades Format e InputMask.

O exemplo a seguir utiliza a opção de figura para permitir que somente dados numéricos em um formato específico sejam digitados no campo unit_price:

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE products && Abre a tabela productsEDIT FIELDS unit_price :P = '99,999.99'

:B = eLimiteInferior, eLimiteSuperior [:F] Especifica um conjunto de limites entre os quais os dados precisam estar. As expressões de limite eLimiteInferior e eLimiteSuperior precisam corresponder ao tipo de dados do campo e não podem ser nomes de funções definidas pelo usuário. Se os dados digitados não estiverem entre eLimiteInferior e eLimiteSuperior, uma mensagem do sistema será exibida, indicando o intervalo entre o qual os dados precisam estar.Como padrão, os dados digitados só serão comparados com os valores dos limites se você alterar o conteúdo do campo. Para forçar uma comparação com os valores dos limites, inclua a opção de validação forçada (: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 DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE products && Abre a tabela productsEDIT FIELDS in_stock :B = 1, 100 :F

:H = cTextoCabeçalho Especifica uma opção de cabeçalho (:H) que permite a substituição dos nomes de campo padrão por seus próprios cabeçalhos, especificados com cTextoCabeçalho. Como padrão, os nomes de campos são posicionados do lado esquerdo dos campos na janela Editar.

O exemplo a seguir fornece cabeçalhos definidos pelo usuário para os campos exibidos.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE products && Abre a tabela productsEDIT FIELDS prod_name :H = 'Nome Produto:', ;

unit_price :H = 'Preço por Unidade:'

:W = lExpressão2 Especifica uma opção WHEN que permite impedir, condicionalmente, que o cursor seja movido para um campo baseado no valor da expressão lógica lExpressão. (:W) avalia lExpressão. Se lExpressão2 retornar um valor falso, (.F.), você não poderá mover o cursor para o campo. Se lExpressão2 retornar um valor verdadeiro (.T.), você poderá mover o cursor para o campo. Funções definidas pelo usuário são aceitas em lExpressão2.

É 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 contêm uma cláusula WHEN cujo retorno é falso.

Escopo Especifica um intervalo de registros exibido na janela Editar. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. Comandos que incluem Escopo funcionam somente na tabela da Área de trabalho ativa. O escopo padrão para EDIT é ALL, isto é, todos os registros.

Para obter maiores informações, consulte Cláusulas de escopo.

FOR lExpressão1 Especifica que somente os registros que satisfazem a condição lógica lExpressão1 são exibidos na janela Editar. Isso permite que você exclua os registros indesejados.

Rushmore otimizará uma consulta EDIT FOR se lExpressão1 for uma expressão otimizável. Para obter melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

[Pág.: 160]

Page 161: 74039361 Visual FoxPro Comandos e Funcoes

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição em que os registros são exibidos na janela Editar enquanto a expressão lógica lExpressão2 retorna um valor verdadeiro (.T.).

FONT cNomeFonte [, nTamanhoFonte] Especifica o nome e o tamanho da fonte da janela Editar. A expressão de caracteres cNomeFonte especifica o nome da fonte e a expressão numérica nTamanhoFonte especifica o tamanho da fonte. Por exemplo, a cláusula a seguir especifica a fonte Courier de 16 pontos para os campos exibidos na janela Editar:

FONT 'Courier',16

Se você incluir a cláusula FONT, mas omitir o tamanho da fonte nTamanhoFonte, uma fonte de 10 pontos será utilizada na janela Editar.

Se você omitir a cláusula FONT, a fonte MS Sans Serif de 8 pontos será utilizada. Se a fonte especificada não estiver disponível, uma fonte com características semelhantes será utilizada em seu lugar.

STYLE cEstiloFonte Especifica o estilo da fonte da janela Editar no Visual FoxPro. Se você omitir a cláusula STYLE, o estilo de fonte normal será utilizado.

Se o estilo da fonte especificado não estiver disponível, um estilo de fonte com características semelhantes será utilizado em seu lugar.

Caractere Estilo da fonte

B NegritoI ItálicoN NormalO ContornoQ OpacoS Sombra- Riscado T TransparenteU Sublinhado

Você pode incluir mais de um caractere para especificar uma combinação de estilos de fonte. O exemplo a seguir abre a janela Editar e utiliza uma fonte sublinhada:

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerIF _WINDOWS

EDIT FIELDS contact FONT 'System', 15 STYLE 'NU'ENDIFIF _MAC

EDIT FIELDS contact FONT 'Geneva', 14 STYLE 'NU'ENDIF

FREEZE NomeCampo Permite que alterações sejam feitas somente em um campo especificado com NomeCampo na janela Editar. Os campos restantes são exibidos, mas não podem ser editados.

KEY eExpressão1 [, eExpressão2] Limita o escopo dos registros exibidos na janela Editar. Com KEY, você pode especificar um valor-chave de índice (eExpressão1) ou um intervalo de valores-chave (eExpressão1, eExpressão2) para os registros exibidos na janela Editar. A tabela tem que ser indexada e o valor ou valores-chave de índice incluídos na cláusula KEY devem ter o mesmo tipo de dados que a expressão de índice do arquivo de índice mestre ou marca mestre.

[Pág.: 161]

Page 162: 74039361 Visual FoxPro Comandos e Funcoes

No exemplo a seguir, somente registros com códigos postais entre 10.000 e 30.000 são exibidos na janela Editar:

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerSET ORDER TO postalcodeEDIT KEY '10000', '30000'

LAST | NOINIT Salva qualquer alteração de configuração feita na aparência de uma janela Editar. As alterações são salvas no arquivo FOXUSER e podem incluir alterações feitas na lista de campos, no tamanho de cada campo e na localização e tamanho da janela Editar. Para obter maiores informações sobre este arquivo, consulte SET RESOURCE.

Se você emitir EDIT com a cláusula LAST, a janela Editar será aberta com a mesma configuração 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 incluído uma longa lista de cláusulas, emita EDIT LAST para não precisar digitar o comando novamente.Alterações na configuração da janela Editar feitas na sessão atual não serão salvas se você sair de EDIT pressionando CTRL+Q.

LPARTITION Coloca o cursor no primeiro campo da partição esquerda da janela Editar. Pode-se dividir a janela Editar nas partições esquerda e direita, incluindo-se a cláusula PARTITION. Como padrão, o cursor será colocado no primeiro campo da partição direita quando a janela Editar for aberta.

O cursor será posicionado na partição direita da janela Editar se você incluir LPARTITION sem a cláusula PARTITION.

NAME NomeObjeto Cria uma referência de objeto para a janela Editar, permitindo a você manipular a janela Editar com propriedades orientadas a objetos disponíveis para o controle Grid.

Para obter informações adicionais sobre programação orientada a objetos no Visual FoxPro, consulte o capítulo 3, “Programação orientada a objetos”, no Guia do Desenvolvedor. Para obter maiores informações sobre as propriedades do controle Grid que podem ser especificadas para uma janela Editar criada com a cláusula NAME, consulte o tópico Controle Grid.

NOAPPEND Impede que o usuário adicione registros à tabela pressionando CTRL+Y ou escolhendo Modo de inclusão no menu Exibir.

Importante A inclusão de NOAPPEND não 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 exclusão na janela Editar. Como padrão, um registro pode ser marcado para exclusão quando você pressiona CTRL+T, escolhe Alternar marca de exclusão ou clica na coluna mais à esquerda do registro a ser excluído.

Importante A inclusão de NODELETE não impede que você marque um registro para exclusão em uma rotina (criada com VALID, WHEN ou ON KEY LABEL) enquanto estiver na janela Editar.

NOEDIT | NOMODIFY Impede que um usuário modifique a tabela. NOEDIT e NOMODIFY são idênticos. Se você incluir uma dessas cláusulas, poderá pesquisar ou procurar registros na tabela, mas não poderá editá-la. No entanto, poderá incluir e excluir registros.

NOLINK Desvincula partições na janela Editar. Como padrão, as partições esquerda e direita da janela Editar estão vinculadas; quando você rola uma partição, a outra partição também é rolada.

NOMENU Remove da barra de menus do sistema o título de menu Tabela do Visual FoxPro, impedindo o acesso ao menu Editar.

NOOPTIMIZE Desativa a otimização Rushmore de EDIT.

[Pág.: 162]

Page 163: 74039361 Visual FoxPro Comandos e Funcoes

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” na Ajuda ou o capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

NORMAL Abre a janela Editar com suas definições padrão normais, como cores, tamanho, posição, título e opções de controle (GROW, FLOAT, ZOOM e assim por diante). Se você omitir NORMAL e a janela de saída atual for uma janela definida pelo usuário com suas próprias definições, a janela Editar também assumirá as definições feitas pelo usuário.

NOWAIT Continua a execução do programa quando a janela Editar é aberta. O programa não espera que a janela Editar seja fechada, mas continua executando na linha do programa, imediatamente após a linha do programa que contém EDIT NOWAIT. Se você omitir NOWAIT, quando EDIT for emitido em um programa, uma janela Editar será aberta e a execução do programa será interrompida até que ela seja fechada.

NOWAIT só pode ser acessado a partir de um programa. A inclusão de NOWAIT ao emitir EDIT na janela Comando não tem efeito.

PARTITION nNúmeroColuna Divide uma janela Editar nas partições esquerda e direita com nNúmeroColuna especificando o número da coluna da barra de divisão. Por exemplo, se nNúmeroColuna for 20, a barra de divisão será posicionada na coluna 20 da janela Editar.

LEDIT Especifica que a partição esquerda da janela Editar aparece no modo Pesquisa.

REDIT Especifica que a partição direita da janela Editar aparece no modo Pesquisa. O exemplo a seguir abre uma janela Editar, com a barra de divisão posicionada na coluna 20 e a partição direita aberta no modo Pesquisa.

Inclua as duas palavras-chave para abrir ambas as partições no modo Pesquisa.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customer

EDIT PARTITION 30 REDIT

PREFERENCE NomePreferência Salva os atributos e opções de uma janela Editar para utilização posterior. Ao contrário de LAST, que restaura a janela Editar da maneira como apareceu na sessão anterior, PREFERENCE salva os atributos de uma janela Editar indefinidamente, no arquivo de recursos FOXUSER. As preferências podem ser recuperadas sempre que desejado. Para obter maiores informações sobre o arquivo de recursos FOXUSER, consulte SET RESOURCE.

Se você emitir EDIT pela primeira vez com o nome de preferência NomePreferência especificado, será criada uma entrada no arquivo FOXUSER que salva a configuração da janela Editar. Se você emitir EDIT posteriormente, com o mesmo nome de preferência, a janela Editar retornará àquele estado de preferência. Quando a janela Editar for fechada, o estado de preferência será atualizado.

Os nomes das preferências podem ter até 10 caracteres, têm que começar com uma letra ou um caractere de sublinhado e podem conter qualquer combinação de letras, números e caracteres de sublinhado.

Quando você conseguir estabelecer uma preferência, 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 contém a preferência para somente para leitura, mudando o valor do campo lógico READONLY para verdadeiro (.T.).

Para obter maiores informações sobre o arquivo de recursos FOXUSER, consulte SET RESOURCE.

REST Impede que o ponteiro do registro seja movido de sua posição atual para o topo da tabela. Como padrão, EDIT posiciona o ponteiro do registro no topo da tabela.

SAVE Mantém ativa e visível (aberta) a janela Editar e qualquer de suas janelas de edição de texto de campos Memo. Você pode, então, retornar para a janela Editar após percorrer outras janelas abertas com o teclado ou mouse.

[Pág.: 163]

Page 164: 74039361 Visual FoxPro Comandos e Funcoes

SAVE só pode ser acessado a partir de um programa. SAVE não tem efeito quando incluído com EDIT na janela Comando, pois EDIT SAVE é sempre o padrão no modo interativo.

TIMEOUT nSegundos Especifica o tempo que uma janela Editar espera por entrada. A expressão numérica 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; não tem efeito quando EDIT é emitido a partir da janela Comando. No exemplo a seguir, a janela Editar será fechada se não houver entrada em 10 segundos.

DEFINE WINDOW wEdit FROM 1,1 TO 24,40 ;CLOSE ;GROW ;COLOR SCHEME 10

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerEDIT WINDOW wEdit ;

FIELDS phone :H = 'Número Telefone:' , ;company :H = 'Empresa:' ;TIMEOUT 10

RELEASE WINDOW wEdit

TITLE cTextoTitulo Substitui o nome ou alias padrão da tabela, exibido na barra de título da janela Editar pelo título especificado com cTextoTitulo. Do contrário, o nome ou alias da tabela que está sendo pesquisada aparece na barra de título.

Se você emitir EDIT WINDOW para colocar a janela Editar em uma janela definida pelo usuário, o título da janela Editar substituirá o título da janela definida pelo usuário.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customerEDIT;

TITLE 'Minha Janela Editar' ;FIELDS phone :H = 'Número Telefone' , ;company :H = 'Empresa:'

VALID lExpressão3 Executa a validação no nível de registros na janela Editar. A cláusula VALID só será executada se uma alteração for feita no registro e você mover o cursor para outro registro. A cláusula VALID não será executada se forem feitas alterações 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 própria mensagem de erro quando VALID retornar falso, incluindo a cláusula ERROR. A expressão de caracteres cTextoMensagem é exibida como mensagem de erro. Se VALID retornar 0, o cursor permanecerá no campo atual e não será exibida uma mensagem de erro.

A cláusula VALID não deve ser confundida com a opção de verificação (:V), que permite validação dos campos.

:F Faz com que a cláusula VALID seja executada antes que o usuário mova o cursor para o registro seguinte. Nesse caso, VALID será executada mesmo que o registro não seja alterado.

ERROR cTextoMensagem Especifica uma mensagem de erro que substitui o padrão do sistema e cujo conteúdo é especificado por cTextoMensagem. O Visual FoxPro exibe sua mensagem de erro quando VALID retorna falso (.F.).

WHEN lExpressão4 Avalia uma condição quando o usuário move o cursor para outro registro. Se lExpressão4 retornar verdadeiro (.T.), o usuário poderá modificar o registro para onde foi movido. Se

[Pág.: 164]

Page 165: 74039361 Visual FoxPro Comandos e Funcoes

lExpressão4 retornar falso (.F.) ou 0, o registro em que o usuário estiver passará a ser somente para leitura e não poderá ser modificado.

A cláusula WHEN não será executada quando outra janela estiver ativada.

WIDTH nLarguraCampo Limita o número de caracteres exibidos para todos os campos em uma partição da janela editar a nLarguraCampo. A inclusão da cláusula WIDTH não altera o tamanho dos campos na tabela em si, apenas a forma de exibição dos campos na janela Editar. Se uma largura tiver sido especificada para um único campo com a cláusula FIELDS, ela substituirá a largura especificada com a cláusula WIDTH para aquele campo.

WINDOW NomeJanela1 Especifica uma janela definida pelo usuário cujas características são assumidas pela janela Editar. Por exemplo, se a janela definida pelo usuário for criada com a cláusula FLOAT, a janela Editar poderá ser movida. A janela especificada não precisa estar ativa ou visível, mas precisa estar definida.

IN [WINDOW] NomeJanela2 Especifica a janela pai NomeJanela2 na qual a janela Editar é aberta. A janela Editar não assume as características da janela pai. Uma janela Editar ativada dentro de uma janela pai não 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 visível.

IN SCREEN Posiciona uma janela Editar de forma explícita na janela principal do Visual FoxPro quando uma janela definida pelo usuário está ativa.

COLOR SCHEME nNúmeroEsquema Especifica o número 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.

Comentários

EDIT possibilita a edição da tabela selecionada em uma janela. EDIT funciona de forma idêntica a CHANGE.

Se você pressionar ESC para sair da janela Editar, as alterações feitas no último campo modificado são descartadas. No entanto, se você mover outro registro após modificar um campo, as alterações feitas no campo serão salvas.

Em um programa, utilize DEACTIVATE WINDOW para salvar suas alterações e fechar uma janela Editar. Inclua o nome da janela Editar em DEACTIVATE WINDOW. Para obter maiores informações sobre os nomes da janela Editar, consulte WTITLE( ).

Suporte SET SKIP

SET SKIP permite que você estabeleça 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 subseqüente é exibido nas linhas que vêm após o registro pai e o primeiro registro filho correspondente. No FoxPro para MS-DOS, blocos sombreados são exibidos em qualquer coluna que contenha informações da tabela pai além do primeiro registro correspondente. No Visual FoxPro, caractere de preenchimento para informações pai repetidas depende da atual fonte da janela Editar.

Para obter maiores informações, consulte SET SKIP.

Suporte COL( ) e ROW( )

Utilize COL( ) e ROW( ) para retornar a linha da tela e posição 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 posição do

[Pág.: 165]

Page 166: 74039361 Visual FoxPro Comandos e Funcoes

cursor retornada será relativa à janela principal do Visual FoxPro, não à janela Editar em si. Se uma janela Editar estiver aberta em uma janela definida pelo usuário, COL( ) e ROW( ) retornarão a posição do cursor em relação à janela definida pelo usuário.

EJECT PAGE, comando

Envia um comando de avanço de página condicional para a impressora.

Sintaxe

EJECT PAGE

Comentários

Utilize EJECT PAGE para avançar o fluxo de saída. O avanço 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 não estiver em andamento, EJECT PAGE fará o seguinte:

· Enviará um comando de alimentação de página para a impressora, se ela estiver on-line.· Enviará comandos de alimentação de linha, como foi determinado pelas variáveis de memória do sistema _PLENGTH e _PLINENO, para a tela, um arquivo alternativo ou ambos.· Incrementará _PAGENO em 1.· Configurará _PLINENO para 0.· Se a variável de memória do sistema _PADVANCE estiver configurada para INEFEEDS e uma rotina ON PAGE estiver em andamento e _PLINENO for menor do que o número da linha da página 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 alimentação de linha quantos forem necessários para avançar até o início da página seguinte.

Se uma rotina ON PAGE não estiver em andamento ou se _PADVANCE estiver configurada para LINEFEEDS e _PLINENO for maior do que o número da linha da página especificado com ON PAGE, EJECT PAGE fará o seguinte:

· Enviará comandos de alimentação de linha, conforme determinado pelas variáveis de memória 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 alimentação de página para a impressora.

Sintaxe

EJECT

Comentários

EJECT faz com que a impressora avance para o início da página seguinte. EJECT enviará um comando de alimentação de página para a impressora se a variável de memória do sistema _PADVANCE estiver configurada para FORMFEED. Se _PADVANCE estiver configurada para LINEFEEDS, EJECT enviará comandos de alimentação de linha para avançar até o início da página seguinte.

[Pág.: 166]

Page 167: 74039361 Visual FoxPro Comandos e Funcoes

EJECT redefine os valores PCOL( ) e PROW( ) para a posição atual de coluna e de linha do cabeçote de impressão da impressora, mas não afeta o valor das variáveis do sistema _PAGENO e _PLINENO.

EJECT, exemplo do comando

No exemplo a seguir, os campos company e phone na tabela customer serão impressos. (Certifique-se de que há uma impressora anexada e ligada para esse exemplo.) Quando o número de linhas impressas for maios do que 62, a página será ejetada.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customer

SET DEVICE TO PRINTERSET PRINT ONDO WHILE NOT EOF( )

@ PROW( )+1,10 SAY 'Company: ' + company@ PROW( )+1,10 SAY 'Phone: ' + phone@ PROW( )+1,1 SAY ''IF PROW( ) > 62

EJECTENDIFSKIP

ENDDOSET PRINT OFFSET DEVICE TO SCREEN

EMPTY( ), função

Determina se uma expressão retorna um valor vazio.

Sintaxe

EMPTY(eExpressão)

Tipos de Retorno: Lógico

Argumentos

eExpressão Especifica a expressão retornada pela função EMPTY( ).

A expressão incluída pode ser de caracteres, data, numérica ou lógica, bem como o nome de um campo Memo ou geral de uma tabela aberta. EMPTY( ) retorna verdadeiro (.T.) quando as expressões retornam um dos valores a seguir:

Tipo de expressão Retorna este valor

Caractere Seqüência vazia, espaços, tabulações, retornos de carro, alimentações de linha ou qualquer combinação dos mesmos.Numérica 0Moeda 0Flutuante 0Número inteiro 0Dupla 0Data Vazio (e.g. CTOD(''))DataHora Vazio (e.g. CTOT(''))Lógica Falso (.F.) Memo Vazio (sem conteúdo)

[Pág.: 167]

Page 168: 74039361 Visual FoxPro Comandos e Funcoes

Geral Vazio (sem objeto OLE)Figura Vazio (nenhuma figura)EMPTY( ) não pode ser utilizada para determinar se uma referência a um objeto de variável de memória é vazia. Por exemplo, uma variável de memória pode conter uma referência de objeto para um formulário. Se o formulário for fechado a partir da caixa de menu Controle do formulário ou com CLEAR WINDOWS, a variável de memória conterá o valor nulo.O exemplo de programa a seguir mostra como utilizar TYPE( ) e ISNULL( ) para determinar se uma referência a um objeto de variável de memória é válida.

goMyForm = CREATEOBJECT('Form')WAIT WINDOW IIF(TYPE('goMyForm') = 'O' AND !ISNULL(goMyForm), ;

'goMyForm has valid object reference',;'goMyForm does not have valid object reference')

Comentários

EMPTY( ) retornará verdadeiro (.T.) se a expressão eExpressão retornar um valor vazio; caso contrário, EMPTY( ) retornará falso (.F.).

EMPTY( ), exemplo da função

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 seqüência vazia. O nome de cada marca de índice estrutural é exibida com seu status de candidato.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customer

FOR nCount = 1 TO 254IF !EMPTY(TAG(nCount)) && Verifica se há uma seqüência vazia? TAG(nCount) && Exibe o nome da marca? CANDIDATE(nCount) && Exibe o status de candidatoELSE

EXIT && Sai do loop quando mais nenhuma marca for encontradaENDIF

ENDFOR

EOF( ), função

Determina se o ponteiro do registro está posicionado após o último registro na tabela atual ou especificada.

Sintaxe

EOF([nÁreaTrabalho | cAliasTabela])

Tipos de Retorno: Lógico

Argumentos

nÁreaTrabalho Especifica o número da Área de trabalho da tabela.

cAliasTabela Especifica o alias da tabela.

EOF( ) retornará falso (.F.) se uma tabela não estiver aberta na Área de trabalho que você especificou.

[Pág.: 168]

Page 169: 74039361 Visual FoxPro Comandos e Funcoes

Se você não 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 condição de tabela.

Comentários

EOF( ) retornará verdadeiro (.T.) se o ponteiro do registro alcançar o final do arquivo de tabela (EOF). O final da tabela é alcançado quando o ponteiro do registro passa pelo último registro da tabela. Por exemplo, quando os comandos FIND, LOCATE ou SEEK não têm ê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 não estiver no final da tabela.

EOF( ), exemplo da função

O exemplo a seguir abre a tabela customer e lista o nome da empresa, uma página de cada vez até o final do arquivo ser alcançado ou até você selecionar Cancelar.CLOSE DATABASESCLEAROPEN DATABASE (HOME() + "samples\data\testdata")USE customerGO TOPlocal recCtr, btnValuerecCtr = 0btnValue = 1DO 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 baixoENDDO=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 diretório diferente da unidade de disco ou diretório atual.

NomeArquivo pode conter caracteres curinga como * e ?. Por exemplo, para excluir arquivos de backup com ERASE *.BAK.

? Exibe a caixa de diálogo Excluir, a partir da qual você pode escolher um arquivo a ser apagado.

RECYCLE Especifica que o arquivo não seja imediatamente excluído do disco e seja colocado na Lixeira do Windows 95.

[Pág.: 169]

Page 170: 74039361 Visual FoxPro Comandos e Funcoes

Cuidado Atenção ao utilizar ERASE. Os arquivos apagados com esse comando não poderão ser recuperados. Você não 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 país é Estados Unidos são copiados para uma tabela denominada backup. Os dados em backup são, então, copiados para um arquivo texto, temp, que é aberto e, em seguida, excluído ao ser fechado.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela customer

COPY STRUCTURE TO backupUSE backupAPPEND FROM customer FOR country = 'USA'COPY TO temp TYPE DELIMITEDWAIT WINDOW 'Press Esc to close and erase temp.txt' NOWAITMODIFY FILE temp.txt NOEDITERASE temp.txt? IIF(FILE('temp.txt'),'File not deleted','File deleted')USEERASE backup.dbf

ERROR( ), função

Retorna o número do erro que disparou uma rotina ON ERROR.

Sintaxe

ERROR( )

Tipos de retorno: Numérico

Comentários

ERROR( ) retorna o número 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 execução 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 numérica de todos os números de erro e as mensagens de erro correspondentes, consulte “Mensagens de erro” na seção “Referência técnica”.

ERROR( ), exemplo da função

O exemplo a seguir demonstra uma rotina de gerenciamento de erro simples que exibe uma mensagem quando ocorre um erro.

CLEARON ERROR DO errhand WITH ERROR( ), MESSAGE( )

*** The next line generates an error - there is no BRWSE command

[Pág.: 170]

Page 171: 74039361 Visual FoxPro Comandos e Funcoes

BRWSEON ERRORRETURN

*** Error handler ***

PROCEDURE errhandPARAMETER errnum,message? Message ? 'Error number: '+ ALLTRIM(STR(Errnum))RETURN

ERROR, comando

Gera um erro do Visual FoxPro.

Sintaxe

ERROR nNúmeroErro | nNúmeroErro, cTextoMensagem1 | [cTextoMensagem2]

Argumentos

nNúmeroErro Especifica o número do erro a ser gerado. A mensagem de erro padrão do Visual FoxPro será utilizada quando um número de erro for especificado.

Para obter uma lista de mensagens de erro do Visual FoxPro e os respectivos números de erro, consulte “Mensagens de erro”.

cTextoMensagem1 Especifica o texto a ser exibido em mensagens de erro que fornecem informações adicionais sobre o erro. Por exemplo, se você fizer referência a uma variável de memória que não existe, o Visual FoxPro fornecerá o nome da variável de memória na mensagem de erro.

cTextoMensagem2 Especifica o texto exibido na mensagem de erro. Quando cTextoMensagem2 for especificado em vez de nNúmeroErro, o número de erro 1098 (erro definido pelo usuário) do Visual FoxPro será gerado. Utilize um retorno de carro (CHR(13)) em cTextoMensagem2 para mover uma parte da mensagem de erro para a próxima linha.

Comentários

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 não 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 não 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 três mensagens de erro. A primeira mensagem de erro é “Variável não encontrada” do Visual FoxPro (número de erro 12). A segunda mensagem de erro torna a gerar o erro 12, incluindo o

[Pág.: 171]

Page 172: 74039361 Visual FoxPro Comandos e Funcoes

nome de variável Myvariable. A última mensagem de erro é definida pelo usuário (número de erro 1089) “Minha mensagem de erro”.

ERROR 12 && Gera o erro do Visual FoxPro "Variável não encontrada"ERROR 12, 'Myvariable' && Erro variável 'Myvariable' não encontradaERROR 'My error message' && Gera o erro 'Minha mensagem de erro'

EVALUATE( ), função

Avalia uma expressão de caracteres e retorna o resultado.

Sintaxe

EVALUATE(cExpressão)

Tipos de retorno: Caractere, Numérico, Moeda, Data, DataHora, Lógico ou Memo

Argumentos

cExpressão Especifica a expressão a ser avaliada. cExpressão pode ser uma seqüência de caracteres literal ou uma expressão, uma variável de memória, um elemento de matriz ou campo de qualquer tipo de dados válidos do Visual FoxPro incluídos entre delimitadores de seqüência de caracteres. cExpressão não pode exceder 255 caracteres.

Sempre que possível, utilize EVALUATE( ) ou uma expressão de nome para trocar uma substituição de macro utilizando &. EVALUATE e expressões de nome são executadas mais rapidamente do que a substituição de macro.

Comentários

EVALUATE( ) é semelhante a TYPE( ), mas retorna o resultado de uma expressão em vez do tipo da expressão. Uma expressão que contenha EVALUATE( ) não pode ser otimizada por Rushmore.

EXIT, comando

Sai de um loop DO WHILE, FOR ou SCAN.

Sintaxe

EXIT

Comentários

EXIT transfere o controle de dentro de um loop DO WHILE ... ENDDO, FOR ... ENDFOR ou SCAN ... ENDSCAN para o comando imediatamente após ENDDO, ENDFOR ou ENDSCAN.

EXIT, exemplo do comando

No exemplo a seguir, o número de produtos em estoque com preço acima de 20 dólares é totalizado no loop DO WHILE até que o final do arquivo (EOF) seja encontrado. O loop DO WHILE é fechado e o total, exibido.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE products && Abre a tabela ProductsSET TALK OFF

[Pág.: 172]

Page 173: 74039361 Visual FoxPro Comandos e Funcoes

gnStockTot = 0

DO WHILE .T. && Início do loopIF EOF( )

EXITENDIFIF unit_price < 20

SKIPLOOP

ENDIFgnStockTot = gnStockTot + in_stockSKIP

ENDDO && Fim do loop

CLEAR? 'Total dos items em estoque com preço acima de 20 dólares:'?? gnStockTot

EXP( ), função

Retorna o valor de e^x onde x é uma expressão numérica especificada.

Sintaxe

EXP(nExpressão)

Tipos de retorno: Numérico

Argumentos

nExpressão Especifica o expoente, x, na expressão exponencial e^x.

Comentários

O valor de e, a base de logaritmos naturais, é aproximadamente 2,71828. O número de casas decimais retornadas por EXP( ) é especificado com SET DECIMALS.

EXP( ), exemplo da função

? 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 lExpressão1][WHILE lExpressão2][NOOPTIMIZE][AS nPáginaCódigo]

[Pág.: 173]

Page 174: 74039361 Visual FoxPro Comandos e Funcoes

Argumentos

NomeArquivo Especifica o nome do arquivo para o qual o Visual FoxPro exporta dados. Se você não incluir uma extensão com o nome do arquivo, será atribuída a extensão padrão 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 Descrição

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á atribuída uma extensão .DIF ao nome do novo arquivo se não for incluída uma extensão em NomeArquivo.MOD Utilize a cláusula MOD para exportar para um arquivo do Microsoft Multiplan versão 4.01 formato MOD. Será atribuída uma extensão .MOD se não for incluída uma extensão em NomeArquivo.SYLK Um formato de intercâmbio 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 padrão, nomes de arquivos SYLK não possuem extensão.WK1 Inclua essa opção para criar uma planilha eletrônica do Lotus 1-2-3 a partir de uma tabela do Visual FoxPro. É atribuída uma extensão .WK1 ao nome do arquivo de planilha eletrônica para ser utilizado com o Lotus 1-2-3 revisão 2.x. Cada campo da tabela torna-se uma coluna na nova planilha eletrônica e cada registro da tabela torna-se uma linha na planilha.WKS Inclua essa opção para criar uma planilha eletrônica do Lotus 1-2-3 a partir de uma tabela do Visual FoxPro. É atribuída uma extensão .WKS ao nome do arquivo de planilha eletrônica para ser utilizado com o Lotus 1-2-3 revisão 1-A. Cada campo da tabela torna-se uma coluna na nova planilha eletrônica e cada registro torna-se uma linha na planilha.WR1 Inclua essa opção para criar uma planilha eletrônica do Lotus Symphony a partir de uma tabela do Visual FoxPro. Uma extensão .WR1 é atribuída à planilha para ser utilizada com o Symphony versão 1.01. Cada campo da tabela torna-se uma coluna na nova planilha eletrônica e cada registro torna-se uma linha na planilha.WRK Inclua essa opção para criar uma planilha eletrônica do Lotus Symphony a partir de uma tabela do Visual FoxPro. Uma extensão WRK é atribuída ao nome do arquivo de planilha eletrônica para ser utilizado com o Symphony versão 1.10. Cada campo da tabela torna-se uma coluna na nova planilha eletrônica e cada registro torna-se uma linha na planilha.XLS Inclua essa opção para criar uma planilha eletrônica do Microsoft Excel a partir de uma tabela do Visual FoxPro. Cada campo da tabela selecionada torna-se uma coluna da planilha eletrônica e cada registro torna-se uma linha. Será atribuída uma extensão de nome de arquivo .XLS ao último arquivo de planilha criado, a não ser que você especifique uma extensão diferente.XL5 Inclua essa opção para criar um arquivo de planilha do Microsoft Excel versão 5.0 a partir de uma tabela do Visual FoxPro. Cada campo da tabela selecionada torna-se uma coluna na planilha eletrônica e cada registro torna-se uma linha. Será atribuída uma extensão .XLS à nova planilha se você não incluir uma extensão de arquivo.

FIELDS ListaCampos Especifica os campos copiados para o novo arquivo. Se você omitir a cláusula FIELDS, todos os campos serão copiados para o novo arquivo. Campos Memo e Geral não são copiados para o novo arquivo, mesmo que seus nomes estejam incluídos 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 são copiados para o novo arquivo. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

Para obter maiores informações sobre cláusulas de escopo, consulte Cláusulas de escopo. Os comandos que incluem Escopo operam somente na tabela da Área de trabalho ativa.O escopo padrão para EXPORT são todos os registros.

FOR lExpressão1 Especifica que somente os registros que satisfazem à condição lógica lExpressão1 são copiados para o novo arquivo. Isso permite extrair os registros não desejados.

Um comando EXPORT ... FOR lExpressão1 terá otimização Rushmore se a lExpressão1 for uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR..

[Pág.: 174]

Page 175: 74039361 Visual FoxPro Comandos e Funcoes

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição de acordo com a qual os registros são copiados para o novo arquivo enquanto a expressão lógica lExpressão2 retornar um valor verdadeiro (.T.).NOOPTIMIZE Desativa a otimização Rushmore de EXPORT.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

AS nPáginaCódigo Especifica a página de código do arquivo criada por EXPORT. O Visual FoxPro copia o conteúdo da tabela atualmente selecionada e, à medida que copia os dados, converte-os automaticamente na página de código especificada para o novo arquivo. Se possível, o Visual FoxPro marcará o arquivo recém-criado com a página de código especificada.

Caso você especifique um valor para nPáginaCódigo que não seja suportado, o Visual FoxPro irá gerar uma mensagem de erro. É possível utilizar GETCP( ) para nPáginaCódigo a fim de exibir a caixa de diálogo Página de código, que permite especificar uma página de código para o arquivo criado pelo Visual FoxPro.Caso AS nPáginaCódigo for omitida, não ocorrerá a conversão de página de código. Se possível, o Visual FoxPro marcará o arquivo recém-criado com a página de código da tabela da qual os dados são copiados.

Se nPáginaCódigo for 0, não ocorrerá conversão de página e o arquivo recém-criado não será marcado com uma página de código.

Comentários

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( ), função

Altera o tamanho de um arquivo aberto com uma função de arquivo de nível inferior.

Sintaxe

FCHSIZE(nIdentificadorArquivo, nNovoTamanhoArquivo)

Tipos de retorno: Numérico

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 permissão para gravação ou para leitura e gravação 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.

Comentários

Utilize a função FCHSIZE( ) para aumentar o tamanho do arquivo ou para truncá-lo após 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( ) não inicializa o novo espaço do arquivo, este espaço poderá conter dados anteriores. Certifique-se de gerenciar o novo espaço do arquivo.

[Pág.: 175]

Page 176: 74039361 Visual FoxPro Comandos e Funcoes

É retornado o tamanho final do arquivo em bytes. O Visual FoxPro retornará –1 caso FCHSIZE( ) não consiga alterar o tamanho do arquivo se, por exemplo, for especificado um identificador de arquivo inválido por causa de espaço insuficiente no disco ou se o arquivo for somente para leitura.

Dica Pode-se utilizar esta função para truncar um arquivo para o comprimento 0.

FCLOSE( ), função

Descarrega e fecha um arquivo ou uma porta de comunicação aberta com uma função de arquivo de nível inferior.

Sintaxe

FCLOSE(nIdentificadorArquivo)

Tipos de retorno: LógicoArgumentos

nIdentificadorArquivo Especifica o identificador do arquivo de nível inferior a ser fechado. O identificador de arquivo numérico é retornado quando você cria o arquivo com FCREATE( ) ou abre o arquivo com FOPEN( ).

Comentários

Caso o fechamento do arquivo seja bem-sucedido, FCLOSE( ) retornará verdadeiro (.T.) e liberará o identificador de arquivo. Caso não seja possível fechar o arquivo, FCLOSE( ) retornará falso (.F.).

A função CLOSE ALL também fecha arquivos de nível inferior.

FCOUNT( ), função

Retorna o número de campos em uma tabela.

Sintaxe

FCOUNT([nÁreaTrabalho| cAliasTabela])

Tipos de retorno: Numérico

Argumentos

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual FCOUNT( ) retorna o número de campos.

A função FCOUNT( ) retornará 0 caso não esteja aberta nenhuma tabela na Área de trabalho especificada.

cAliasTabela Especifica o alias da tabela para a qual FCOUNT( ) retorna o número de campos.

O Visual FoxPro gerará uma mensagem de erro se você especificar um alias de tabela inexistente.

Comentários

Se você omitir os argumentos opcionais, FCOUNT( ) retornará o número de campos da tabela aberta na Área de trabalho atualmente selecionada.

[Pág.: 176]

Page 177: 74039361 Visual FoxPro Comandos e Funcoes

FCOUNT( ), exemplo da função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerSELECT 0USE employee && Abre a tabela employee

CLEAR? FCOUNT('CUSTOMER') && Exibe 13, número de campos na tabela Customer ? FCOUNT('EMPLOYEE') && Exibe 22, número de campos na tabela Employee

CREATE( ), função

Cria e abre um arquivo de nível inferior.

Sintaxe

FCREATE(cNomeArquivo [, nAtributoArquivo])

Tipos de retorno: Numérico

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 não seja incluído um designador de unidade ou um caminho, o arquivo será criado no diretório padrão.

Observação O Visual FoxPro não reconhecerá um nome de caminho de maneira apropriada se um nome de diretório ou disco contiver um ponto de exclamação (!).

nAtributoArquivo Especifica os atributos do arquivo criado. A tabela a seguir lista os atributos de arquivo que podem ser especificados.

nAtributoArquivo Atributos de arquivo

0 (Padrão) Leitura e gravação1 Somente para leitura 2 Oculto 3 Somente para leitura/Oculto 4 Sistema 5 Somente para leitura /Sistema 6 Sistema/Oculto 7 Somente para leitura /Oculto/Sistema

Observe que um arquivo criado com um nAtributoArquivo diferente de 0 não 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 informações sobre arquivos criados e abertos com FCREATE( ). DISPLAY STATUS e LIST STATUS fornecem as informações a seguir sobre cada arquivo aberto ou criado com uma função de arquivo de nível inferior:

· A unidade, o diretório e o nome do arquivo· O número do identificador de arquivo· A posição do ponteiro do arquivo· Os atributos de leitura e gravação

Comentários

[Pág.: 177]

Page 178: 74039361 Visual FoxPro Comandos e Funcoes

Caso já exista um arquivo com o nome especificado, ele será sobrescrito sem aviso.

A função FCREATE( ) atribui ao arquivo um número de identificador de arquivo que pode ser utilizado para identificá-lo em outras funções de arquivo de nível inferior do Visual FoxPro. FCREATE( ) retorna o número do identificador de arquivo quando o arquivo é criado ou retorna –1 caso não seja possível criar o arquivo.

Dica Atribua o número do identificador de arquivo a uma variável de memória para que você possa acessar o arquivo pela variável de memória em outras funções de arquivo de nível inferior.

Você não pode abrir uma porta de comunicação com FCREATE( ). Para tal, utilize FOPEN( ).

FCREATE( ), exemplo da função

IF FILE('errors.txt') && O arquivo existe? gnErrFile = FOPEN('errors.txt',12) && Caso exista, abra leitura e gravação

ELSEgnErrFile = FCREATE('errors.txt') && Caso contrário, crie um

ENDIFIF gnErrFile < 0 && Verifica erros no arquivo de abertura

WAIT 'não é possível abrir ou criar um arquivo de saída' WINDOW NOWAITELSE && Se não houver erros, grave no arquivo

=FWRITE(gnErrFile , 'Informação de erro a ser gravada aqui')ENDIF=FCLOSE(gnErrFile ) && Fecha o arquivo

IF gnErrFile > 0MODIFY FILE errors.txt NOWAIT && Abre o arquivo na janela de ediçãoENDIF

FDATE( ), função

Retorna a data da última modificação de um arquivo.

Sintaxe

FDATE(cNomeArquivo)

Tipos de retorno: Data

Argumentos

cNomeArquivo Especifica o nome do arquivo cuja data da última modificação é retornada por FDATE( ). cNomeArquivo pode incluir um caminho com o nome do arquivo. Se não houver nenhum caminho incluído com o nome do arquivo, o Visual FoxPro irá procurar o arquivo no diretório e pasta padrão e nos diretórios e pastas especificados por SET PATH.

Comentários

A data retornada por FDATE( ) é atribuída ao arquivo pelo sistema operacional. O formato do valor retornado por FDATE( ) é determinado pelas definições atuais de SET DATE, SET MARK e SET CENTURY.

Utilize LUPDATE( ) para determinar a data da última modificação para uma tabela aberta.

FDATE( ), exemplo da função

O exemplo a seguir utiliza FDATE( ) para exibir a data da última modificação em FOXUSER.DBF, arquivo de recursos do Visual FoxPro.

[Pág.: 178]

Page 179: 74039361 Visual FoxPro Comandos e Funcoes

? FDATE('FOXUSER.DBF') && Exibe a data da última modificação

FEOF( ), função

Determina se o ponteiro do arquivo está ou não posicionado no fim de um arquivo.

Sintaxe

FEOF(nIdentificadorArquivo)

Tipos de retorno: Lógico

Argumentos

nIdentificadorArquivo Especifica o número do identificador do arquivo no qual deve ser verificada a condição de fim de arquivo. FEOF( ) sempre retornará verdadeiro (.T.) se você especificar um número de identificador de arquivo de uma porta de comunicação aberta com FOPEN( ).

Comentários

Esta função de arquivo de nível inferior retornará verdadeiro (.T.) se o ponteiro do arquivo estiver posicionado no fim de um arquivo aberto com uma função de arquivo de nível inferior. FEOF( ) retornará falso (.F.) se o ponteiro não estiver no fim do arquivo.

FEOF( ), exemplo da função

*** 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 contrário o arquivo deve conter alguma coisa ***

IF FEOF(gnFileHandle)WAIT WINDOW 'Este arquivo está vazio!' NOWAIT

ELSEWAIT WINDOW 'Este arquivo contém alguma coisa!' NOWAIT

ENDIF= FCLOSE(gnFileHandle)

FERROR( ), função

Retorna um número correspondente ao erro na função de arquivo de nível inferior mais recente.

Sintaxe

FERROR( )

Tipos de retorno: Numérico

Comentários

[Pág.: 179]

Page 180: 74039361 Visual FoxPro Comandos e Funcoes

A função FERROR( ) retornará 0 caso a função de arquivo de nível inferior seja executada com sucesso. Um valor positivo será retornado caso a execução da função seja mal-sucedida. A tabela a seguir lista o número de cada erro retornado por FERROR( ) e a causa do erro.

Número do erro Causa do erro

2 Arquivo não localizado4 Número excessivo de arquivos abertos (identificadores de arquivo esgotados)5 Acesso negado6 Identificador de arquivo inválido fornecido8 Memória esgotada25 Erro na pesquisa (impossível pesquisar antes do início de um arquivo)29 Disco cheio31 Erro na abertura do arquivo

FFLUSH( ), função

Descarrega no disco um arquivo aberto com uma função de nível inferior.

Sintaxe

FFLUSH(nIdentificadorArquivo)

Tipos de retorno: Lógico

Argumentos

nIdentificadorArquivo Especifica o identificador do arquivo a ser descarregado no disco.

Comentários

A função FFLUSH( ) também libera a memória utilizada pelo buffer do arquivo.

A função FLUSH é diferente de FFLUSH( ). FLUSH não opera em arquivos de nível inferior, mas em tabelas e índices.

FFLUSH( ), exemplo da função

O exemplo a seguir abre e grava um arquivo denominado INPUT.DAT. Depois de gravar as primeiras duas seqüências, o programa descarrega os buffers para garantir que as seqüências sejam gravadas no disco. Em seguida, ele grava as duas próximas seqüências, descarrega os buffers novamente e fecha o arquivo.

IF FILE('input.dat')gnTestFile = FOPEN('input.dat',2)

ELSEgnTestFile = FCREATE('input.dat')

ENDIFgnIOBytes = FWRITE(gnTestFile,'Testar saída')gnIOBytes = FWRITE(gnTestFile,' para arquivo E/S de nível inferior')glFlushOk = FFLUSH(gnTestFile)gnIOBytes = FWRITE(gnTestFile,'Testar saída2')gnIOBytes = FWRITE(gnTestFile,' para arquivo E/S de nível inferior')glFlushOk = FFLUSH(gnTestFile)glCloseOk = FCLOSE(gnTestFile)MODIFY FILE input.dat NOWAIT NOEDIT

FGETS( ), função

[Pág.: 180]

Page 181: 74039361 Visual FoxPro Comandos e Funcoes

Retorna uma série de bytes de um arquivo ou de uma porta de comunicação aberta com uma função de arquivo de nível inferior até localizar um retorno de carro.

Sintaxe

FGETS(nIdentificadorArquivo [, nBytes])

Tipos de retorno: Caractere

Argumentos

nIdentificadorArquivo Especifica o identificador de arquivo numérico da porta de comunicação ou do arquivo a partir do qual FGETS( ) retorna dados.

nBytes Especifica o número 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 posição 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 máximo de 254 bytes como padrão.

Comentários

Você pode ler linha por linha de um arquivo emitindo-se uma série de FGETS( ).

A função FGETS( ) retorna uma série de bytes como uma seqüência de caracteres. O retorno dos dados é feito a partir da posição 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 não é retornado como parte da seqüência e as alimentações de linha são ignoradas.

FGETS( ), exemplo da função

*** TEST.TXT deve existir ***STORE FOPEN('test.txt') TO gnFileHandle && Abre o arquivoSTORE FSEEK(gnFileHandle, 0, 2) TO gnEnd && Move o ponteiro a EOFSTORE FSEEK(gnFileHandle, 0) TO gnTop && Move o ponteiro a BOFIF gnEnd <= 0 && O arquivo está vazio?

WAIT WINDOW 'Este arquivo está vazio!' NOWAITELSE && Caso não esteja

gcString = FGETS(gnFileHandle, gnEnd) && Armazene o conteúdo? gcString

ENDIF= FCLOSE(gnFileHandle) && Fecha o arquivo

FIELD( ), função

Retorna o nome de um campo de uma tabela ao qual é feita referência pelo número.

Sintaxe

FIELD(nNúmeroCampo [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Caractere

Argumentos

nNúmeroCampo Especifica o número do campo. Caso nNúmeroCampo seja 1, será retornado o nome do primeiro campo da tabela; caso nNúmeroCampo seja 2, será retornado o nome do segundo campo, e assim sucessivamente. A seqüência vazia será retornada se nNúmeroCampo for maior do que o número de campos. Os nomes dos campos são retornados em letras maiúsculas.

[Pág.: 181]

Page 182: 74039361 Visual FoxPro Comandos e Funcoes

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual FIELD( ) retorna os nomes dos campos.

A função FIELD( ) retornará a seqüência vazia caso não 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.

Comentários

Se você omitir os argumentos opcionais, FIELD( ) retornará os nomes dos campos da tabela aberta na Área de trabalho atualmente selecionada.

FIELD( ), exemplo da função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerCLEARFOR gnCount = 1 TO FCOUNT( ) && Realiza um loop para números de campos

? FIELD(gnCount) && Exibe cada campoNEXT?? 'Número de campos: ' + ALLTRIM(STR(gnCount -1))

FILE( ), função

Retorna verdadeiro (.T.), se o arquivo especificado for encontrado em disco.

Sintaxe

FILE(cNomeArquivo)

Tipos de retorno: Lógico

Argumentos

cNomeArquivo Especifica o nome do arquivo a ser localizado. cNomeArquivo deve incluir a extensão do arquivo. O Visual FoxPro procura no diretório ou pasta padrão pelo arquivo. Se o arquivo não for encontrado nestes locais, o Visual FoxPro procura pelo próprio caminho estabelecido com SET PATH.

Você pode incluir um caminho ao nome do arquivo para procurar por um arquivo em um diretório ou em uma unidade diferentes dos atuais.

Comentários

Utilize FILE( ) para localizar um arquivo em disco. FILE( ) retorna (.T.) se o arquivo puder ser localizado; caso contrário FILE( ) retorna (.F.) falso.

FILE( ), exemplo da função

O exemplo a seguir exibe uma mensagem indicando se o arquivo de recursos do Visual FoxPro está presente na pasta ou diretório de inicialização do Visual FoxPro.

SET PATH TO HOME( )

[Pág.: 182]

Page 183: 74039361 Visual FoxPro Comandos e Funcoes

CLEARIF FILE('foxuser.dbf')

WAIT WINDOW 'Arquivo de recursos do Visual FoxPro presente'ELSE

WAIT WINDOW 'Arquivo de recursos do Visual FoxPro não presente'ENDIF

FILTER( ), função

Retorna a expressão de filtragem de tabela especificada em SET FILTER.

Sintaxe

FILTER([nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Caractere

ArgumentosnÁreaTrabalho Especifica a Área de trabalho da tabela para a qual FILTER( ) retorna a expressão de filtragem.

FILTER( ) retornará a seqüência vazia caso nenhuma tabela esteja aberta na Área de trabalho especificada.

cAliasTabela Especifica o alias da tabela para a qual FILTER( ) retorna a expressão de filtragem.

O Visual FoxPro irá gerar uma mensagem de erro se você especificar um alias de tabela inexistente.

Comentários

Se você omitir os argumentos opcionais, FILTER( ) retornará a expressão de filtragem da tabela aberta na Área de trabalho atualmente selecionada. Para obter maiores informações sobre como criar um filtro, consulte ” SET FILTER”.

FILTER( ), exemplo da função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerSET TALK ONSET FILTER TO SUBSTR(cust_id,1) = 'B'

CLEAR? FILTER( ) && Exibe a expressão de filtroSTORE FILTER('customer') TO gcOldFilter && Grava a expressão de filtroSET FILTER TO country = 'USA'? FILTER( ) && Exibe a expressão de filtroSET FILTER TO &gcOldFilter && Restaura a expressão de filtro? FILTER( ) && Exibe a expressão de filtroLIST FIELDS cust_id, contact && Demonstra a condição de filtro

FKLABEL( ), função

Retorna o nome da tecla de função (F1, F2, F3 ...) a partir do número da tecla de função correspondente.

Sintaxe

FKLABEL(nNúmeroTeclaFunção)

[Pág.: 183]

Page 184: 74039361 Visual FoxPro Comandos e Funcoes

Tipos de retorno: Caractere

Argumentos

nNúmeroTeclaFunção Especifica o número da tecla de função. O valor de nNúmeroTeclaFunção deve estar entre 0 e o número de teclas de função menos 1. FKLABEL( ) retornará a seqüência vazia se nNúmeroTeclaFunção for maior do que o número de teclas de função menos 1. O número de teclas de função pode ser determinado com FKMAX( ).

Comentários

Pode-se programar teclas de função com SET FUNCTION.

O valor retornado por FKLABEL( ) é afetado por SET COMPATIBLE. Quando COMPATIBLE for definido para FOXPLUS (padrão), FKLABEL( ) retorna as teclas de função. Quando COMPATIBLE for definido para DB4, FKLABEL( ) retorna a tecla de função e as combinações de teclas de função (F1, CTRL+F1, SHIFT+F1, F2, CTRL+F2, SHIFT+F2, ...).

FKLABEL( ), exemplo da função

CLEARSET COMPATIBLE OFF? 'COMPATIBLE OFF'?FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de função

? FKLABEL(nCount) && Exibe as teclas programáveis de funçãoENDFORSET COMPATIBLE ON

?? 'COMPATIBLE ON'?FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de função

? FKLABEL(nCount) && Exibe as teclas programáveis de funçãoENDFOR

FKMAX( ), função

Retorna o número de teclas de função ou combinações de teclas de função programáveis em seu teclado.

Sintaxe

FKMAX( )

Tipos de retorno: Numérico

Comentários

O valor retornado por FKMAX( ) é afetado por SET COMPATIBLE. Quando SET COMPATIBLE é definido para FOXPLUS (padrão), FKMAX( ) retorna o número de teclas de função. Quando SET COMPATIBLE é definido para DB4, FKMAX( ) retorna o número de teclas de função e combinações de teclas de função (F1, CTRL+F1, SHIFT+F1, F2, CTRL+F2, SHIFT+F2, ...).

FKMAX( ), exemplo da função

CLEARSET COMPATIBLE OFF

[Pág.: 184]

Page 185: 74039361 Visual FoxPro Comandos e Funcoes

? 'COMPATIBLE OFF'?FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de função

? FKLABEL(nCount) && Exibe as teclas programáveis de funçãoENDFORSET COMPATIBLE ON

?? 'COMPATIBLE ON'?FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de função

? FKLABEL(nCount) && Exibe as teclas programáveis de funçãoENDFOR

FLOCK ( ), função

Tenta bloquear a tabela atual ou a tabela especificada.

Sintaxe

FLOCK([nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Lógico

Argumentos

nÁreaTrabalho Especifica a área de trabalho da tabela que FLOCK( ) tenta bloquear.

A função 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.

Comentários

A função 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 usuário.

Se você omitir os argumentos opcionais, FLOCK( ) tentará bloquear a tabela aberta na área de trabalho atualmente selecionada.

Observação Caso a função FLOCK( ) não consiga bloquear uma tabela, ela retornará falso (.F.) e não irá gerar um erro. Como resultado, não será possível utilizar FLOCK( ) para disparar uma rotina ON ERROR.

Quando uma tabela está bloqueada, o usuário que a bloqueou tem acesso a ela para leitura e gravação. Os outros usuários da rede têm acesso à tabela somente para leitura. Para obter informações sobre como bloquear uma tabela e impedir que outros usuários tenham acesso a ela, consulte SET EXCLUSIVE e USE.

A tabela permanece bloqueada até que o usuário altere isto. É possível 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 padrão, a função, 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 número de tentativas de bloqueio ou o período de tempo durante o qual são feitas essas tentativas, caso a inicial seja malsucedida. Para obter maiores informações, consulte SET REPROCESS.

[Pág.: 185]

Page 186: 74039361 Visual FoxPro Comandos e Funcoes

É possível estabelecer relações entre duas ou mais tabelas com SET RELATION. A colocação de um bloqueio de arquivo em uma tabela relacionada a uma ou mais tabelas não coloca um bloqueio de arquivo nas tabelas relacionadas. Você deve colocar os bloqueios nelas e removê-los explicitamente.

Para obter maiores informações sobre bloqueio de registro e arquivo e sobre como compartilhar tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado,” no Guia do desenvolvedor.

FLOCK( ), exemplo de função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE produtos && Abre tabelas de produtosSET REPROCESS TO 3 SECONDSSELECT * FROM produtos INTO TABLE novoproduto

IF FLOCK( )*** Inicilização de produto novo ***REPLACE ALL in_stock WITH 0.00REPLACE ALL on_order WITH 0.00WAIT 'Inicialização completa' WINDOW NOWAIT

ELSE*** Arquivos estão bloqueados, avisar usuário ***WAIT WINDOW 'Impossível abrir arquivos de produtos; tente novamente mais tarde!' NOWAIT

ENDIF

BROWSE FIELDS in_stock, on_order && Exibe tabela newprodsUSEERASE novoprods.dbf

FLOOR( ), função

Retorna o número inteiro mais próximo que seja menor ou igual à expressão numérica especificada.

Sintaxe

FLOOR(nExpressão)

Tipos de retorno: Numérico

Argumentos

nExpressão Especifica a expressão numérica para a qual FLOOR( ) retorna o número inteiro mais próximo que seja menor ou igual à expressão numérica.

FLOOR( ), exemplo de função

STORE 10.9 TO gnNumber1STORE -10.1 TO gnNumber2

CLEAR? FLOOR(gnNumber1) && Exibe 10? FLOOR(gnNumber2) && Exibe -11? FLOOR(10.0) && Exibe 10? FLOOR(-10.0) && Exibe –10

[Pág.: 186]

Page 187: 74039361 Visual FoxPro Comandos e Funcoes

FLUSH, comando

Salva no disco as modificações feitas em um índice ou em uma tabela.

Sintaxe

FLUSH

Comentários

O comando FLUSH assegura que as modificações feitas em todas as tabelas e índices abertos serão salvas no disco.

O Visual FoxPro salva automaticamente as alterações no disco quando:

· Você fecha uma tabela com USE, CLOSE ALL ou CLOSE DATABASES. Apenas as informações do arquivo ou arquivos fechados serão descarregadas no disco.· Você desbloqueia um registro ou um arquivo. Apenas as informações do registro ou do arquivo desbloqueado serão descarregadas no disco.

FONTMETRIC( ), função

Retorna os atributos das fontes do sistema operacional atualmente instaladas.

Sintaxe

FONTMETRIC(nAtributo [, cNomeFonte, nTamanhoFonte [, cEstiloFonte]])

Tipos de retorno: Numérico

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 saída ativa.

A tabela a seguir lista valores para nAtributo e os atributos de fonte correspondentes retornados.

NAtributo Atributo

1 Altura do caractere em pixels2 Sinal ascendente de caractere (unidades acima da linha de base) em pixels3 Sinal descendente de caractere (unidades abaixo da linha de base) em pixels4 Espaços (entre linhas) em pixels5 Espaços extras em pixels6 Largura média do caractere em pixels7 Largura máxima do caractere em pixels8 Peso da fonte.9 Itálico (0 =não, diferente de zero =sim)10 Sublinhado (0 = não, diferente de zero = sim)11 Riscado (0 = não, diferente de zero = sim)12 Primeiro caractere definido na fonte13 Último caractere definido na fonte14 Caractere padrão (substituído por caracteres não contidos na fonte)15 Caractere de quebra de texto.16 Pitch e família17 Conjunto de caracteres18 Projeção(largura extra adicionada)19 Aspecto horizontal para dispositivo de fonte20 Aspecto vertical para dispositivo de fonte

* Estes atributos não estão disponíveis no Visual FoxPro para Macintosh e retornam sempre 0.

[Pág.: 187]

Page 188: 74039361 Visual FoxPro Comandos e Funcoes

Para obter maiores informações sobre os valores numéricos retornados por FONTMETRIC( ), consulte a função TEXTMETRIC no Guia de Referência 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 código 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 combinação de caracteres listados na tabela de estilos de fonte abaixo. Por exemplo, a combinação BI especifica o estilo de fonte Negrito Itálico.

Caractere Estilo de fonte

B NegritoI ItálicoN NormalO DelineadoQ OpacoS Sombreado - RiscadoT TransparenteU Sublinhado

Comentários

A função FONTMETRIC( ) retorna atributos da fonte atual da janela de saída ativa. Pode-se utilizar. WFONT( ) para determinar a fonte da janela atual. Para obter maiores informações sobre como instalar ou remover fontes, consulte o capítulo “Painel de Controle” no Guia do Usuário do Microsoft Windows.

FOPEN( ), função

Abre um arquivo ou porta de comunicação para uso com funções de arquivo de baixo nível.

Sintaxe

FOPEN(cNomeArquivo [, nAtributo])

Tipos de retorno: Numérico

Argumentos

cNomeArquivo Especifica o nome do arquivo ou porta de comunicação a ser aberta. Se cNomeArquivo é um nome de arquivo, pode incluir um caminho para arquivos abertos nos diretórios, pastas, unidades de disco ou volumes atualmente inexistentes no caminho de procura do Visual FoxPro. Se o caminho não está incluído, o Visual FoxPro procura pelo arquivo nos locais abaixo:

· Diretório ou pasta padrão· Caminho estabelecido com SET PATH

Observação O Visual FoxPro poderá não reconhecer o caminho ou nome da propriedade se o disco ou nome do diretório contiver um ponto de exclamação (!).

nAtributo Especifica privilégios de leitura e gravação ou um esquema de utilização de buffer para o arquivo que você abriu. A tabela a seguir lista cada número incluído em nAtributo e os privilégios de leitura e gravação do arquivo e esquema de utilização de buffer que ele estabelece.

nAtributo Privilégio de leitura e gravação Utilizando buffer/não utilizando buffer

0 (Padrão) Somente para leitura Utilizando buffer1 Somente para gravação Utilizando buffer

[Pág.: 188]

Page 189: 74039361 Visual FoxPro Comandos e Funcoes

2 Leitura e gravação Utilizando buffer10 Somente para leitura Não utilizando buffer11 Somente para gravação Não utilizando buffer12 Leitura e gravação Não utilizando buffer

Se nAtributo não estiver incluído ou se nAtributo resultar em 0, o arquivo será aberto somente para leitura e utilizará buffer. As portas de comunicação devem estar sempre abertas sem uso do buffer.Observação O Visual FoxPro não reconhecerá apropriadamente um caminho se um nome de disco ou diretório contiver um ponto de exclamação (!).

Comentários

Se FOPEN( ) conseguir abrir o arquivo ou a porta de comunicação, o número do identificador do arquivo ou da porta será retornado. Caso contrário, FOPEN( ) retornará o valor –1.

Dica Atribua o número do identificador de arquivo a uma variável de memória para que você possa acessar o arquivo ou a porta de comunicação pela variável de memória em outras funções de arquivo de baixo nível.

As informações 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 diretório, ou volume e pasta e nome de arquivo· Número do identificador de arquivo· Posição do ponteiro do arquivo· Atributos de leitura e gravação

FOPEN( ), exemplo da função

IF FILE('errors.txt') && Existe o arquivo? gnErrFile = FOPEN('errors.txt',12) && Caso sim, abrir leitura e gravação

ELSEgnErrFile = FCREATE('errors.txt') && Caso não, criá-lo

ENDIFIF gnErrFile < 0 && Verificar erros na abertura de arquivos

WAIT 'Impossível abrir ou criar arquivo de saída' WINDOW NOWAITELSE && Caso não haja erro, gravar o arquivo

=FWRITE(gnErrFile, 'Informação 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 número de vezes.

Sintaxe

FOR Var = nValorInicial TO nValorFinal [STEP nIncremento] Comandos[EXIT][LOOP]

ENDFOR | NEXT

Argumentos

Var Especifica uma variável ou um elemento de matriz que atue como contador. Não é necessário que a variável ou o elemento de matriz já exista antes da execução de FOR ... ENDFOR.

[Pág.: 189]

Page 190: 74039361 Visual FoxPro Comandos e Funcoes

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 número 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 cláusula FOR sem executar as instruções 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.

Comentários

Utiliza-se uma variável de memória ou um elemento de matriz como um contador para especificar quantas vezes os comandos do Visual FoxPro dentro do loop FOR ... ENDFOR são executados.

Os comandos do Visual FoxPro depois de FOR são executados até ENDFOR ou NEXT ser atingido. Em seguida, o contador NomeVarMem é incrementado do valor de nIncremento. Se você omitir a cláusula 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 cláusula FOR serão executados novamente. Se for maior que o nValorFinal, o loop FOR ... ENDFOR será abandonado e a execução do programa continuará com o primeiro comando depois de ENDFOR ou NEXT.

Observação Os valores de nValorInicial, nValorFinal e nIncremento são, inicialmente, somente para leitura. No entanto, uma alteração no valor do contador NomeVarMem dentro do loop afeta o número 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 execução do loop.

FOR ... ENDFOR, exemplos do comando

No exemplo 1, os números de 1 a 10 são exibidos.P exemplo 2 utiliza variáveis de memória para valores os inicial, final e STEP para exibir tudo, inclusive registros pares de 2 a 10 em customer.

* Exemplo 1CLEARFOR gnCount = 1 TO 10

? gnCountENDFOR

* Example 2SET TALK OFFCLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre tabela CustomerSTORE 2 TO gnI && Valor inicialSTORE 10 TO gnJ && Valor finalSTORE 2 TO K && Valor StepFOR gnCount = gnI TO gnJ STEP K

GOTO gnCount && Move o ponteiro do registroDISPLAY company && Exibe o nome da empresa

ENDFOR

[Pág.: 190]

Page 191: 74039361 Visual FoxPro Comandos e Funcoes

FOR EACH … ENDFOR, comando

Executa um conjunto de comandos para cada elemento em uma matriz ou coleção do Visual FoxPro.

Sintaxe

FOR EACH Var IN GroupComandos[EXIT][LOOP]

ENDFOR | NEXT [Var]

Definição

Var Uma variável ou elemento de matriz utilizado para interagir por meio dos elementos de Grupo.

Grupo Uma matriz do Visual FoxPro, uma matriz OLE, uma coleção do Visual FoxPro ou uma coleção 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 após ENDFOR. Pode-se colocar EXIT em qualquer parte entre FOR EACH e ENDFOR.

LOOP Retorna o controle diretamente para a cláusula FOR EACH sem executar as instruções 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 botões de comando atribuídos em uma matriz de objeto.No exemplo a seguir, uma matriz variável do Visual FoxPro é criada e FOR EACH é utilizado para exibir conteúdos 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 instância 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 máquina 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 botões de comando são colocados em um formulário. FOR EACH é utilizado para exibir os botões em formulários e especifica legendas, estilos de fontes e posições de cada botão.

PUBLIC oMyObjectoMyObject = CREATEOBJECT("frmTest")

[Pág.: 191]

Page 192: 74039361 Visual FoxPro Comandos e Funcoes

oMyObject.SHOW

DEFINE CLASS frmTest AS FORMHeight = 200DIMENSION MyArray[5]

PROCEDURE Init

FOR i = 1 to 5THIS.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 * 30j = 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+1IF j > 3

EXITENDIF

NEXT

j = 1****** LOOP ******FOR EACH oButton IN THIS.MyArray

IF j > 3LOOP

ENDIFj = j + 1oButton.Left = 25

NEXTENDPROC

ENDDEFINE

[Pág.: 192]

Page 193: 74039361 Visual FoxPro Comandos e Funcoes

FOR( ), função

Retorna a expressão de filtragem de índice de um arquivo de índice de entrada única (.IDX) aberto ou uma marca de índice.

Sintaxe

FOR([nNúmeroÍndice [, nÁreaTrabalho | cAliasTabela]])

Tipos de retorno: Caractere

Argumentos

Se você não incluir nenhum dos argumentos opcionais, FOR( ) retornará a expressão 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 não estiver em andamento (por exemplo, você emitiu SET ORDER TO para colocar a tabela na ordem de registro natural), FOR( ) retornará a seqüência vazia.

nNúmeroÍndice Especifica o arquivo ou a marca de índice para o qual a expressão de filtragem é retornada. FOR( ) retorna expressões de filtragem na ordem a seguir, visto que nNúmeroÍndice aumenta de 1 ao número total de marcas de índice composto independente e estrutural e de arquivos de entrada única abertos:

1. Primeiramente, são retornadas as expressões de filtragem de arquivos de índice de entrada única (caso algum esteja aberto). A ordem em que os arquivos de índice de entrada única são incluídos em USE ou SET INDEX determinará a ordem de retorno das expressões de filtragem.2. Em seguida, são retornadas as expressões de filtragem para cada marca no índice composto estrutural (caso haja algum). As expressões de filtragem são retornadas das marcas na ordem em que estas são criadas no índice estrutural.

3. Por último, são retornadas as expressões de filtragem para cada marca em qualquer índice composto independente aberto. As expressões de filtragem são retornadas das marcas na ordem em que estas são criadas nos índices compostos independentes.

A seqüência vazia será retornada se uma marca de índice ou um índice for criado sem a cláusula FOR ou se nNúmeroÍndice for maior do que o número total de marcas de índice composto independente e estrutural e de arquivos de entrada única abertos.

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual FOR( ) retorna as expressões de filtragem de índice.

A função FOR( ) retornará a seqüência vazia caso nenhuma tabela esteja aberta na Área de trabalho especificada.

cAliasTabela Especifica o alias da tabela para a qual FOR( ) retorna as expressões de filtragem de índice.

O Visual FoxPro irá gerar uma mensagem de erro se você especificar um alias de tabela inexistente.

Comentários

É possível criar índices filtrados no Visual FoxPro. Se você incluir a cláusula opcional FOR lExpressão em INDEX, o arquivo de índice atuará como um filtro na tabela. Somente os registros correspondentes à expressão de filtragem lExpressão estarão disponíveis para exibição e acesso. São criadas chaves de índice no arquivo de índice apenas para os registros correspondentes à expressão de filtragem.

USE e SET INDEX suportam uma lista de nomes de arquivo de índice, permitindo que se abra vários arquivos de índice para uma tabela. Qualquer combinação de nomes de arquivo de índice de entrada única e de nomes de arquivo de índice composto independente ou estrutural pode ser incluída na lista de nomes de arquivo de índice. A função FOR( ) é idêntica a SYS(2021), sendo fornecida para manter a compatibilidade com o dBASE IV.

[Pág.: 193]

Page 194: 74039361 Visual FoxPro Comandos e Funcoes

FOUND( ), função

Retornará verdadeiro (.T.) se CONTINUE, FIND, LOCATE ou SEEK obtiver êxito.

Sintaxe

FOUND([nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Lógico

Argumentos

nÁreaTrabalho 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 não 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 não existe.Comentários

FOUND( ) retorna um valor lógico 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 contrário, 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 função pode ser utilizada para determinar se uma tabela filho tem algum registro correspondente ao registro pai.

FOUND( ), exemplo da função

No exemplo a seguir, todos os clientes da GERMANY foram contados.

SET TALK OFFCLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abrir tabela Customer

STORE 0 TO gnCountLOCATE FOR UPPER(country) = 'GERMANY'DO WHILE FOUND( )

gnCount = gnCount + 1CONTINUE

ENDDOWAIT WINDOW 'Total de clientes da Alemanha: ' ;

+ LTRIM(STR(gnCount)) NOWAIT

FPUTS( ), função

Grava uma seqüência de caracteres, um retorno de carro e uma alimentação de linha em um arquivo ou em uma porta de comunicação aberta com uma função de arquivo de baixo nível.

[Pág.: 194]

Page 195: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

FPUTS(nIdentificadorArquivo, cExpressão [, nCaracteresGravados])

Tipos de retorno: Numérico

Argumentos

nIdentificadorArquivo Especifica o número do identificador do arquivo ou da porta de comunicação em que FPUTS( ) grava dados.

cExpressão Especifica a expressão de caracteres que FPUTS( ) grava no arquivo ou na porta.

nCaracteresGravados Especifica o número de caracteres em cExpressão para gravar no arquivo ou na porta.

FPUTS( ) grava toda a expressão de caracteres cExpressão para o arquivo ou porta se nCaracteresGravados for omitido. Se você incluir nCaracteresGravados, os caracteres de nCaracteresGravados serão gravados em um arquivo ou porta. Se nCaracteresGravados for menor que o número de caracteres em cExpressão, somente os caracteres de nCaracteresGravados serão gravados no arquivo ou na porta. Toda a cExpressão é gravada em arquivos ou portas, se nCaracteresGravados for igual ou maior que o número de caracteres em cExpressão.

Comentários

FPUTS( ) retornará o número de bytes gravados para o arquivo ou porta. 0 será retornado se, por algum motivo, FPUTS( ) não puder gravar no arquivo ou porta.

FREAD( ), função

Retorna um número especificado de bytes a partir de um arquivo ou de uma porta de comunicação aberta com uma função de nível inferior.

Sintaxe

FREAD(nIdentificadorArquivo, nBytes)

Tipos de retorno: Caractere

Argumentos

nIdentificadorArquivo Especifica o número do identificador de arquivo para o arquivo ou a porta de comunicação a partir de onde FREAD( ) retorna os dados.

nBytes Especifica o número de bytes retornados por FREAD( ). FREAD( ). FREAD( ) retorna os dados começando na posição atual do ponteiro do arquivo e prossegue até retornar nBytes bytes ou encontrar o fim do arquivo.

FREAD( ), exemplo de função

O exemplo a seguir utiliza FREAD( ) para exibir o conteúdo 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,cStringgnFileHandle = FOPEN("test.txt")* Procure o fim do arquivo para determinar o número de bytes no arquivonSize = FSEEK(gnFileHandle, 0, 2) && Move o ponteiro para EOFIF nSize <= 0 * Se o arquivo estiver vazio, exibe uma mensagem de erro WAIT WINDOW "Este arquivo está vazio!" NOWAITELSE

[Pág.: 195]

Page 196: 74039361 Visual FoxPro Comandos e Funcoes

* Se o arquivo não estiver vazio, o programa armazena seu conteúdo

* na memória, em seguida exibe o texto na janela principal do Visual FoxPro = FSEEK(ggnFileHandle, 0, 0) && Move o ponteiro para BOF cString = FREAD(gnFileHandle, nSize) ? cStringENDIF= FCLOSE(gnFileHandle) && Fecha o arquivo

FREE TABLE, comando

Remove de uma tabela uma referência a banco de dados.

Sintaxe

FREE TABLE NomeTabela

Argumentos

NomeTabela Especifica o nome da tabela a partir da qual a referência ao banco de dados é removida.

Comentários

Caso um banco de dados seja excluído acidentalmente do disco, as referências a ele permanecem nas tabelas que existiam no banco de dados. FREE TABLE exclui de uma tabela as referências 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 contrário de FREE TABLE, REMOVE TABLE remove do banco de dados todas as referências a índices primários, valores padrão e regras de validação associados à tabela.

FSEEK( ), função

Move o ponteiro do arquivo em um arquivo aberto com uma função de nível inferior.

Sintaxe

FSEEK(nIdentificadorArquivo, nBytesMovidos[, nPosiçãoRelativa])

Tipos de retorno: Numérico

Argumentos

nIdentificadorArquivo Especifica o identificador do arquivo no qual FSEEK( ) move o ponteiro do arquivo. Um número de identificador de arquivo é retornado por FCREATE( ) ou FOPEN( ) quando o arquivo é criado ou aberto.

nBytesMovidos Especifica o número de bytes para mover o ponteiro do arquivo. O ponteiro do arquivo será movido em direção ao fim do arquivo se nBytesMovidos for positivo, e em direção ao início do arquivo se nBytesMovidos for negativo.

nPosiçãoRelativa Move o ponteiro do arquivo até uma posição relativa no arquivo. Como padrão, o ponteiro do arquivo é movido em relação ao início do arquivo. Você pode também mover o ponteiro em relação ao ponteiro do arquivo atual ou ao fim do arquivo, incluindo nPosiçãoRelativa.

[Pág.: 196]

Page 197: 74039361 Visual FoxPro Comandos e Funcoes

A tabela a seguir lista os valores para nPosiçãoRelativa e a partir de onde o ponteiro do arquivo é movido.

nPosiçãoRelativa Move o ponteiro do arquivo para um posição relativa

0 Ao início do arquivo (padrão).1 À posição do ponteiro do arquivo atual2 Ao fim do arquivo

Comentários

Após mover o ponteiro do arquivo, FSEEK( ) retorna o número de bytes em que o ponteiro do arquivo é posicionado a partir do início do arquivo. O ponteiro do arquivo pode também ser movido com FREAD( ) e FWRITE( ).

FSEEK( ), exemplo de função

A função definida pelo usuário a seguir utiliza FSEEK( ) para retornar o tamanho de um arquivo. Se você não passar parâmetros para a função definida pelo usuário, ela retornará –2. Se o arquivo não puder ser localizado, a função definida pelo usuário retornará –1.

FUNCTION fsize2PARAMETERS gcFileName && Arquivo a ser verificadoPRIVATE pnHandle,pnSizeIF PARAMETERS( ) = 0

RETURN -2 && Retorna -2 se nenhum parâmetro for passadoELSE

IF !FILE(gcFileName)RETURN -1 && Retorna -1 se o arquivo não existir

ENDIFENDIFpnHandle = FOPEN(gcFileName) && Abre o arquivopnSize = FSEEK(pnHandle,0,2) && Determina o tamanho do arquivo, atribui a pnSize=FCLOSE(pnHandle) && Fecha o arquivoRETURN pnSize && Retorna um valor

FSIZE( ), função

Retorna o tamanho em bytes de um campo ou arquivo especificado.

Sintaxe

FSIZE(cNomeCampo [, nÁreaTrabalho | cAliasTabela] | cNomeArquivo)

Tipos de retorno: Numérico

Argumentos

cNomeCampo Especifica o nome do campo.

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual FSIZE( ) retorna um tamanho de campo.

FSIZE( ) retorna 0 se não 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 não existe.

cNomeArquivo Especifica um arquivo para o qual FSIZE( ) retorna o tamanho em bytes.

[Pág.: 197]

Page 198: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

A definição 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 (padrão), 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 padrão (em bytes) para cada tipo de campo.

Tipo de campo Tamanho de campo padrão (em bytes)

Moeda 8Data 8DataHora 14Duplo 8Inteiro 4Lógico 1Memo 4Geral 4

O tamanho do campo pode ser exibido com DISPLAY STRUCTURE e LIST STRUCTURE.Se você omitir os argumentos opcionais nÁreaTrabalho e cAliasTabela, FSIZE( ) retornará o tamanho de campo para um campo da Área de trabalho e da tabela atuais.

FSIZE( ), exemplo de função

O exemplo a seguir utiliza FSIZE( ) para retornar o tamanho de dois campos na tabela customer.

SET COMPATIBLE OFFCLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

CLEAR? FSIZE('contact') && Exibe 30? FSIZE('cust_id') && Exibe 6

FTIME( ), função

Retorna a hora da última modificação de um arquivo.

Sintaxe

FTIME(cNomeArquivo)

Tipos de retorno: Caractere

Argumentos

cNomeArquivo Especifica o nome do arquivo cuja hora da última modificação é retornada por FTIME( ). cNomeArquivo pode incluir um caminho com o nome do arquivo. Se não houver nenhum caminho incluído com o nome do arquivo, o Visual FoxPro procurará pelo arquivo no diretório ou pasta padrão e nos diretórios ou pastas especificados por SET PATH.

Comentários

A hora retornada por FTIME( ) é atribuída ao arquivo pelo sistema operacional.

[Pág.: 198]

Page 199: 74039361 Visual FoxPro Comandos e Funcoes

FTIME( ), exemplo de função

O exemplo a seguir utiliza FTIME( ) para exibir a hora da última modificação em FOXUSER.DBF, o arquivo de recursos do Visual FoxPro.

? FTIME('FOXUSER.DBF') && Exibe a hora da última modificação

FULLPATH( ), função

Retorna o caminho para um arquivo especificado ou o caminho relativo a um outro arquivo.

Sintaxe

FULLPATH(cNomeArquivo1 [, nCaminhoMSDOS | cNomeArquivo2])

Tipos de retorno: Caractere

Argumentos

cNomeArquivo1 Especifica o arquivo a ser procurado pelo Visual FoxPro. Certifique-se de incluir a extensão 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 numérico. Caso o arquivo não possa ser localizado no caminho do MS-DOS, um caminho e um nome de arquivo são retornados, como se o arquivo tivesse sido encontrado no diretório ou na pasta padrão atual.

cNomeArquivo2 Especifica um segundo nome de arquivo a ser procurado. Certifique-se de incluir a extensão do nome do arquivo. FULLPATH( ) retorna o caminho para o primeiro arquivo em relação ao segundo arquivo.

STRTRAN( ), função

Procura uma expressão de caracteres ou um campo Memo para ocorrências de uma segunda expressão de caracteres ou campo Memo e, em seguida, substitui cada ocorrência com uma terceira expressão de caracteres ou campo Memo.

Sintaxe

STRTRAN(cProcurado, cProcurarPor [, cSubstituição][, nIniciarOcorrência] [, nNúmerodeOcorrências])

Tipos de retorno: Caractere

Argumentos

cProcurado Especifica a expressão de caractere que é procurada. cProcurado pode ser um campo Memo.

cProcurarPor Especifica a expressão de caractere que é procurada em cProcurado. A procura considera maiúsculas/minúsculas. cProcurar pode ser um campo Memo.

cSubstituição Especifica a expressão de caracteres que substitui cada ocorrência de cProcurarPor em cProcurado. Se você omitir cSubstituição, cada ocorrência de cProcurarPor é substituída com a seqüência vazia.

nIniciarOcorrência Especifica qual ocorrência de cProcurarPor é a primeira a ser substituída. Por exemplo, se nIniciarOcorrência for 4, a substituição começa com a quarta ocorrência de cProcurarPor em cProcurado,

[Pág.: 199]

Page 200: 74039361 Visual FoxPro Comandos e Funcoes

e a primeira das três ocorrências de cProcurarPor permanece inalterada. A ocorrência onde a substituição começa padronizará a primeira ocorrência de cProcurarPor se você omitir nIniciarOcorrência.

nNúmerodeOcorrências Especifica o número de ocorrências de cProcurarPor a serem substituídas. Se você omitir nNúmerodeOcorrências, todas as ocorrências de cProcurarPor iniciando com a ocorrência especificada com nIniciarOcorrência serão substituídas.

Comentários

Você pode especificar onde a substituição começa e quantas substituições são feitas. STRTRAN( ) retorna a seqüência de caracteres existente.

STRTRAN( ), exemplo da função

STORE 'abracadabra' TO gcString? STRTRAN(gcString, 'a', 'z') && Exibe zbrzczdzbrz? STRTRAN(gcString, 'a', 'q', 2, 3) && Exibe abrqcqdqbra

SYSMETRIC( ), função

Retorna o tamanho dos elementos de tela do sistema operacional.

Sintaxe

SYSMETRIC(nElementoTela)

Tipos de retorno: Numérico

Argumentos

nElementoTela Especifica um elemento de tela. A tabela a seguir mostra valores de nElementoTela e o elemento de tela correspondente:

nElementoTela Elemento de tela

1 Largura da tela2 Altura da tela.3 Largura da moldura dimensionável da janela4 Altura da moldura dimensionável da janela5 Largura das setas de rolagem na barra de rolagem vertical6 Altura das setas de rolagem na barra de rolagem vertical7 Largura das setas de rolagem na barra de rolagem horizontal8 Altura das setas de rolagem na barra de rolagem horizontal9 Altura do título da janela10 Largura da moldura não dimensionável da janela11 Altura da moldura não dimensionável da janela12 Largura da moldura da janela DOUBLE ou PANEL13 Altura da moldura da janela DOUBLE ou PANEL14 Largura da caixa de rolagem na barra de rolagem horizontal nas janelas de edição de texto15 Altura da caixa de rolagem na barra de rolagem vertical nas janelas de edição de texto16 Largura do ícone da janela minimizada17 Altura do ícone da janela minimizada18 Largura máxima do ponto de inserção19 Altura máxima do ponto de inserção20 Altura da barra de menus de linha simples21 Largura da janela maximizada22 Altura da janela maximizada23 Altura da janela Kanji24 Largura mínima dimensionável da janela

[Pág.: 200]

Page 201: 74039361 Visual FoxPro Comandos e Funcoes

25 Altura mínima dimensionável da janela26 Largura mínima da janela27 Altura mínima da janela28 Largura dos controles da janela29 Altura dos controles da janela30 1 se houver hardware do mouse; do contrário 031 1 para versão de depuração do Microsoft Windows; do contrário 032 1 se os botões do mouse estiverem trocados; do contrário 0

Comentários

SYSMETRIC( ) retorna o tamanho dos elementos de tela. Estes elementos são: menus, janelas, controles da janela e o ponto de inserção. Os valores são retornados em pixels a menos que se diga o contrário e podem variar para diferentes exibições, unidades de disco de exibição e hardware do vídeo. Para obter informações adicionais sobre os elementos de tela, consulte a função GetSystemMetrics no Guia de Referência 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 início de uma definição para uma função definida pelo usuário.

Sintaxe

FUNCTION NomeFunçãoComandos[RETURN [eExpressão]]

ENDFUNC

Argumentos

NomeFunção No Visual FoxPro, os nomes de função podem ter até 254 caracteres.

Para distinguir entre um nome de arquivo de programa com mais de 10 caracteres e uma função que começa com os mesmos 10 caracteres nesses dois produtos, coloque o nome de arquivo de programa entre aspas ou inclua uma extensão depois do nome de arquivo de programa.

Comentários

Em muitos programas, certas rotinas são repetidas com freqüência. Definir as rotinas comumente utilizadas como funções separadas reduz o tamanho e a complexidade do programa e facilita a sua manutenção.

FUNCTION NomeFunção é uma instrução dentro de um programa. Designa o início de uma função em um programa e identifica a função pelo nome.

FUNCTION NomeFunção é seguido de uma série de comandos do Visual FoxPro que compõem a função. Você pode incluir RETURN em qualquer lugar da função para retornar controle ao programa de chamada ou a outro programa e para definir um valor retornado pela função definida pelo usuário. Se você não incluir um comando RETURN, um RETURN implícito é automaticamente executado quando a função é fechada. Se o comando RETURN não incluir um valor de retorno (ou se um RETURN implícito for executado), o Visual FoxPro atribuirá .T. (Verdadeiro) como valor de retorno.

A função é finalizada com o comando ENDFUNC. Esse comando é opcional, a função é fechada quando encontra outro comando FUNCTION, um comando PROCEDURE ou o final do arquivo de programa.

[Pág.: 201]

Page 202: 74039361 Visual FoxPro Comandos e Funcoes

Os comentários podem ser colocados na mesma linha depois de FUNCTION e ENDFUNC. Esses comentários são ignorados durante a compilação e a execução do programa.

Você não pode incluir um código de programa executável normal em um arquivo de programa depois de utilizar as funções definidas pelo usuário; somente funções definidas pelo usuário, procedimentos e definições de classe podem seguir o primeiro comando FUNCTION ou PROCEDURE no arquivo.

Quando você emite DO com um nome de função, o Visual FoxPro procura a função em uma ordem específica, da forma a seguir:

1. O Visual FoxPro procura no arquivo que contém o comando DO.

2. Caso a função não seja encontrada ali, o Visual FoxPro procura nos arquivos de procedimentos abertos. Os arquivos de procedimentos são abertos com SET PROCEDURE.

3. Caso a função não seja encontrada em um arquivo de procedimentos aberto, o Visual FoxPro procura nos programas da seqüência de execução. Os arquivos de programa são procurados desde o último até o primeiro programa executado.

4. Caso a função ainda não tenha sido encontrada, o Visual FoxPro procura um programa independente. Se um arquivo de programa correspondente for encontrado, o programa é executado. Caso contrário, o Visual FoxPro gera uma mensagem de erro.

A cláusula IN deve ser incluída em DO para executar uma função em um arquivo específico.

Como padrão, os parâmetros são passados para as funções por valor. Para obter informações sobre a passagem de parâmetros para funções por referência, consulte SET UDFPARMS. É possível passar no máximo 27 parâmetros para uma função. Os parâmetros podem ser passados para uma função incluindo uma instrução PARAMETERS ou LPARAMETERS na função ou colocando uma lista de parâmetros imediatamente depois de FUNCTION NomeFunção. Coloque a lista de parâmetros entre parênteses e separe os parâmetros com vírgulas.

FV( ), função

Retorna o valor futuro de um investimento financeiro.

Sintaxe

FV(nPagamento, nTaxaJuros, nPeríodos)

Tipos de retorno: Numérico

Argumentos

nPagamento Especifica o pagamento periódico e constante (que pode ser negativo ou positivo).

nTaxaJuros Especifica a taxa de juros periódica. Se a taxa de juros for anual mas os pagamentos forem feitos mensalmente, divida a taxa de juros anual por 12.

nPeríodos Especifica o número de períodos durante os quais os pagamentos são feitos. FV( ) considera que os pagamentos periódicos são feitos no final de cada período.

Comentários

FV( ) calcula o valor futuro de uma série de pagamentos periódicos e constantes com juros compostos fixos. O valor futuro é constituído pelo total de todos os pagamentos acrescidos de juros.

FV( ), exemplo de função

[Pág.: 202]

Page 203: 74039361 Visual FoxPro Comandos e Funcoes

STORE 500 TO gnPayment && Pagamento mensalSTORE .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( ), função

Grava uma seqüência de caracteres em um arquivo ou em uma porta de comunicação aberta com uma função de arquivo de nível inferior.

Sintaxe

FWRITE(nIdentificadorArquivo, cExpressão [, nCaracteresGravados])

Tipos de retorno: Numérico

Argumentos

nIdentificadorArquivo Especifica o número do identificador de arquivo para o arquivo ou a porta de comunicação em que FWRITE( ) executa a gravação.cExpressão Especifica a expressão de caracteres que FWRITE( ) grava no arquivo ou porta especificada com nIdentificadorArquivo.

nCaracteresGravados FWRITE( ) grava a expressão de caracteres inteira no arquivo ou porta, a menos que você inclua nCaracteresGravados. Quando você inclui nCaracteresGravados, são gravados nCaracteresGravados caracteres no arquivo ou porta. Se nCaracteresGravados for menor do que o número de caracteres em cExpressão, serão gravados apenas nCaracteresGravados caracteres no arquivo ou porta. Todos os caracteres em cExpressão serão gravados no arquivo ou porta se nCaracteresGravados for igual ou maior que o número de caracteres em cExpressão.

Comentários

Diferente de FPUTS( ), FWRITE( ) não coloca um retorno de carro e uma alimentação de linha no fim da seqüência de caracteres.

FWRITE( ) retorna o número de bytes gravados no arquivo ou porta de comunicação. Se FWRITE( ) não puder executar a gravação 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 variáveis 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 conteúdo dos elementos da matriz, começando do primeiro elemento, substitui o conteúdo dos campos correspondentes do registro. O conteúdo do primeiro elemento da matriz substitui o primeiro campo do registro, o conteúdo do segundo elemento da matriz substitui o segundo campo e assim por diante.

[Pág.: 203]

Page 204: 74039361 Visual FoxPro Comandos e Funcoes

Se a matriz tiver menos elementos do que a tabela tem campos, os campos adicionais serão ignorados. Se a matriz tiver mais elementos do que a tabela tem campos, os elementos adicionais serão ignorados.

MEMVAR Especifica as variáveis de memória ou a matriz de onde os dados são copiados para o registro atual. Os dados são transferidos da variável de memória para o campo que possui o mesmo nome da variável de memória. O conteúdo do campo não será substituído se não existir uma variável de memória com o mesmo nome do campo.

Dica Você pode criar variáveis de memória 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 conteúdo de cada campo é substituído pelo valor da propriedade com os mesmos nomes dos campos. O conteúdo de um campo não será substituído se não existir uma propriedade com o mesmo nome do campo.

FIELDS ListaCampos Especifica os campos cujo conteúdo é substituído pelo conteúdo dos elementos da matriz ou das variáveis. Somente o campo especificado com ListaCampos tem seu conteúdo substituído.

FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura Você pode substituir de forma seletiva os campos com os conteúdos de elementos de matriz ou de variáveis de memória incluindo as cláusulas 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 começam com as letras A e P, utilize:

GATHER FROM gamyarray FIELDS LIKE A*,P*

MEMO Especifica que o conteúdo dos campos Memo é substituído pelo conteúdo de elementos de matriz ou de variáveis de memória. Se você omitir MEMO, os campos Memo serão ignorados quando GATHER substituir o conteúdo dos campos pelo conteúdo de uma matriz ou de uma variável de memória. Os campos do tipo geral ou de figura são sempre ignorados em GATHER, mesmo que você inclua a palavra-chave MEMO.

GATHER, exemplo de comando

Exemplo 1Este exemplo utiliza GATHER para copiar dados para um registro novo na tabela. Após a criação da tabela Test, SCATTER será utilizado para criar conjunto de variáveis baseados em campos de tabela. Para cada campo será, então, atribuído 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 BLANKm.Object="Caixa"m.Color="Vermelho"m.SqFt=12.5APPEND BLANKGATHER MEMVARBROWSE

Exemplo 2

Este exemplo utiliza GATHER junto à cláusula NAME para copiar dados para um registro novo na tabela. Após a criação da tabela Test, SCATTER é utilizado para criar um objeto com propriedades baseadas em campos na tabela. Atribui-se, então, valores à propriedade do objeto e adiciona-se um novo registro em branco à tabela.

CREATE TABLE Test FREE ;

[Pág.: 204]

Page 205: 74039361 Visual FoxPro Comandos e Funcoes

(Object C(10), Color C(16), SqFt n(6,2))

SCATTER NAME oTest BLANKoTest.Object="Caixa"oTest.Color="Vermelho"oTest.SqFt=12.5APPEND BLANKGATHER NAME oTestRELEASE oTestBROWSE

GETCOLOR( ), função

Exibe a caixa de diálogo Cor do Windows e retorna o número da cor escolhida.

Sintaxe

GETCOLOR([nNúmeroCorPadrão])

Tipos de retorno: Numérico

Argumentos

nNúmeroCorPadrão Especifica a cor inicialmente selecionada quando a caixa de diálogo Cor é exibida. Se nNúmeroCorPadrão não corresponder a uma cor da caixa de diálogo Cor, a primeira cor dessa caixa de diálogo será selecionada. Se você omitir nNúmeroCorPadrão, a cor preta será selecionada.

Comentários

GETCOLOR( ) retornará – 1 se você sair da caixa de diálogo Cor pressionando ESC, selecionando o botão Cancelar ou selecionando Fechar no menu Controle.

GETCOLOR( ), exemplo de função

O exemplo a seguir exibe a caixa de diálogo Cor do ambiente Windows com a cor vermelha selecionada. O número correspondente à cor escolhida é exibido quando você sai da caixa de diálogo.

CLEAR? GETCOLOR(255)

GETDIR( ), função

Exibe a caixa de diálogo Selecionar diretório, a partir da qual é possível selecionar um diretório ou uma pasta.

Sintaxe

GETDIR([cDiretório [, cTexto]])

Tipos de retorno: Caractere

Argumentos

cDiretório Especifica o diretório ou pasta inicialmente exibido na caixa de diálogo. Quando cDiretório não é especificado, a caixa de diálogo abre com o padrão de diretório ou pasta do Visual FoxPro exibida.

cTexto Especifica o texto para a lista de diretório ou pasta na caixa de diálogo. No Windows 3.1, o texto aparece como legenda na barra de títulos da caixa de diálogos. No Windows 95, o texto aparece abaixo da barra de títulos, dentro da caixa de diálogo.

[Pág.: 205]

Page 206: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

GETDIR( ) retorna como seqüência de caracteres o nome do diretório ou pasta selecionado.

Se você não escolher um diretório ou pasta (clicar Cancelar, pressionar ESC ou escolher Fechar no menu Controle), GETDIR( ) retorna a seqüência vazia.

GETENV( ), função

Retorna o conteúdo da variável de ambiente do MS-DOS especificada.

Sintaxe

GETENV(cNomeVariável)

Tipos de retorno: Caractere

ArgumentoscNomeVariável Especifica o nome da variável de ambiente do MS-DOS. A seqüência vazia será retornada se a variável de ambiente do MS-DOS especificada não existir.

Você pode localizar o diretório Windows com a variável de ambiente WINDIR, definida pelo Windows quando ele é inicializado.

Comentários

Duas variáveis de ambiente estão sempre disponíveis: COMSPEC e PATH. É possível criar variáveis de ambiente personalizadas com o comando SET do MS-DOS.

Para obter maiores informações sobre a criação de variáveis de ambiente, consulte o manual do MS-DOS.

GETENV( ), exemplo de função

CLEAR? GETENV('PATH') && Exibe o diretório do MS-DOS

GETFILE( ), função

Exibe a caixa de diálogo Abrir e retorna o nome do arquivo selecionado.

Sintaxe

GETFILE([cExtensõesArquivos] [, cTexto] [,cLegendaBotãoAbrir][,nTipoBotão])

Tipos de retorno: Caractere

Argumentos

cExtensõesArquivos Especifica as extensões dos arquivos exibidos na lista rolável quando o item de menu Todos os arquivos não é escolhido. Se passar um valor como literal, inclua-o entre aspas. Não inclua um ponto (.) na frente de extensões de arquivos.

cExtensõesArquivos pode apresentar diversos formatos:

· Se cExtensõesArquivos contiver uma única extensão (por exemplo, .PRG), serão exibidos apenas os arquivos com essa extensão.· Se cExtensõesArquivos for uma seqüência vazia, todos os arquivos do diretório ou pasta atual serão exibidos, se cTipoCriador não estiver incluído.

[Pág.: 206]

Page 207: 74039361 Visual FoxPro Comandos e Funcoes

· cExtensõesArquivos também pode conter caracteres curinga (* e ?). Todos os arquivos com extensões que correspondam aos critérios dos caracteres curinga são exibidos. Por exemplo, se cExtensõesArquivos for ?X?, todos os arquivos com extensão .FXP, .EXE e TXT serão exibidos.

· No Visual FoxPro para Windows, cExtensõesArquivos pode conter uma descrição de arquivo seguida de uma extensão de arquivo ou uma lista de extensões de arquivos separados por vírgulas. A descrição do arquivo aparece na caixa de listagem Tipos de arquivo. Separe a descrição de arquivos da extensão de arquivo ou lista de extensões com dois pontos (:). Separe descrições múltiplas de arquivo com ponto e vírgula (;).

Por exemplo, se cExtensõesArquivos é “Text:TXT” a descrição do arquivo “Text” aparece na caixa de listagem Tipos de arquivo e todos os arquivos com a extensão .TXT são exibidos.

Se cExtensõesArquivos é “Tabelas:DBF; Arquivos: TXT,BAK” a descrição 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 extensão .DBF são exibidos. Quando “Arquivos” é escolhido da caixa de listagem Tipos de arquivo, todos os arquivos com extensão .TXT e .BAK são exibidos.

cTexto Especifica o texto de uma lista de diretórios ou pastas na caixa de diálogo Abrir. No ambiente Windows 95, o texto aparece abaixo da lista de arquivos e longas seqüências de texto podem ser truncadas. No Macintosh, o texto aparece dentro da caixa de diálogo.

cLegendaBotãoAbrir Especifica uma legenda para o botão OK.

nTipoBotão Especifica o número e o tipo dos botões que aparecem na caixa de diálogo Abrir. Os botões a seguir serão exibidos na caixa de diálogo quando nTipoBotão for 0, 1 ou 2.

nTipoBotão Botões

0 (ou omitido) OKCancelar1 OKNovoCancelar2 OKNenhumCancelar

“Sem Título” é retornado com o caminho especificado na caixa de diálogo Abrir se nTipoBotão é 1 e o usuário escolhe o botão Novo. A seqüência vazia é retornada nTipoBotão é 2 e o usuário escolhe o botão Nenhum.

Comentários

GETFILE( ) retornará a seqüência vazia se você exibir a caixa de diálogo Abrir, pressionando ESC, escolhendo Cancelar ou escolhendo Fechar, no menu Controle.

GETFILE( ), exemplo de função

CLOSE DATABASESSELECT 0

gcTable = GETFILE('DBF', 'Procurar ou criar um.DBF:', 'Procurar',1)DO CASE

CASE 'Sem título' $ gcTableCREATE (gcTable)

CASE EMPTY(gcTable)RETURN

OTHERWISE

[Pág.: 207]

Page 208: 74039361 Visual FoxPro Comandos e Funcoes

USE (gcTable)BROWSE

ENDCASE

GETFLDSTATE( ), função

Retorna um valor numérico indicando se um campo em uma tabela ou em um cursor foi editado, se um registro foi incluído ou se o status excluído do registro atual foi alterado.

Sintaxe

GETFLDSTATE(cNomeCampo | nNúmeroCampo[,cAliasTabela | nÁreaTrabalho])

Tipos de retorno: Numérico

Argumentos

cNomeCampo | nNúmeroCampo Especifica o nome ou o número do campo para o qual o status de edição é retornado. O número de campo nNúmeroCampo corresponde à posição do campo na estrutura da tabela ou cursor. DISPLAY STRUCTURE ou FIELD( ) podem ser utilizados para determinar o número de um campo.

É possível especificar –1 para que nNúmeroCampo retorne uma seqüência de caracteres que consista de valores de status de edição e exclusão 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 número 1 na primeira posição indica que o status de exclusão não foi alterado.

Você pode, também, incluir 0 em nNúmeroCampo para determinar se o status de exclusão do registro atual foi alterado desde a abertura da tabela ou cursor.

Observação Utilizando GETFLDSTATE( ) determina apenas se o status de exclusão do registro atual foi alterado. Por exemplo, se você marcar um registro para ser excluído e tornar a chamá-lo, GETFLDSTATE( ) indicará se o status de exclusão foi alterado, mesmo que o status de exclusão do registro tenha retornado ao seu estado original. Utilize DELETED( ) para determinar o status de exclusão de um registro.

cAliasTabela Especifica o alias da tabela ou do cursor para o qual o status de exclusão de registro ou edição de campo é retornado.

nÁreaTrabalho Especifica a área de trabalho da tabela ou do cursor para o qual o status de exclusão de registro ou edição de campo é retornado.

Se um alias ou uma área de trabalho não forem especificados, GETFLDSTATE( ) retornará um valor para um campo na tabela ou no cursor selecionado no momento.

Comentários

A tabela a seguir lista os valores de retorno de caractere e o status de edição ou exclusão correspondente.

Valor de retorno Status de edição ou exclusão

1 O campo não foi editado ou o status de exclusão não foi alterado.2 O campo foi editado ou o status de exclusão foi alterado.3 O campo em um registro incluído não foi editado ou o status de exclusão não foi alterado para o registro incluído.4 O campo em um registro incluído foi editado ou o status de exclusão foi alterado para o registro incluído.

[Pág.: 208]

Page 209: 74039361 Visual FoxPro Comandos e Funcoes

A utilização de buffer de linha ou de tabela deve ser ativada com CURSORSETPROP( ) para que GETFLDSTATE( ) opere em tabelas locais.O status de exclusão ou edição 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 nÁreaTrabalho.

GETFLDSTATE( ), exemplo de função

O exemplo a seguir demonstra como utilizar a função GETFLDSTATE( ) para determinar se o conteúdo de um campo foi alterado. MULTILOCKS é ativado (ON), um requerimento para utilização de buffer de tabela. A tabela customer no banco de dados testdata é aberto e CURSORSETPROP( ) é, então, utilizado para ajustar o modo de utilização do buffer para utilização de buffer de tabela otimista (5).GETFLDSTATE( ) é emitido para exibir um valor correspondente (1) para o estado não 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 DATABASESCLEAR

SET MULTILOCKS ON && Permite utilização de buffer de tabelaOPEN DATABASE SYS(2004)+"samples\data\testdata"USE Customer && Abre tabela customer=CURSORSETPROP("Utilização do buffer",5,"cliente") && Ativa utilização de buffer de tabela

* Obtém estado do campo no campo original cust_id e exibe estadonState=GETFLDSTATE("cust_id")DO DisplayState WITH nState

* Altera conteúdo do campo e exibe estado

REPLACE cust_id WITH "***"nState=GETFLDSTATE("cust_id")DO DisplayState WITH nState

* Descarta alteração de tabela e exibe estado= TABLEREVERT(.T.) && Descarta todas alterações de tabelanState=GETFLDSTATE("cust_id")DO DisplayState WITH nState

PROCEDURE DisplayStatePARAMETER nStateDO CASE

CASE nState=1=MESSAGEBOX("Campo não foi modificado ",0,"Resultados")

OTHERWISE=MESSAGEBOX("Campo foi modificado ",0,"Resultados")

ENDCASE

GETFONT( ), função

Exibe a caixa de diálogo Fonte e retorna o nome da fonte selecionada.

Sintaxe

GETFONT( )

[Pág.: 209]

Page 210: 74039361 Visual FoxPro Comandos e Funcoes

Tipos de retorno: Caractere

Comentários

GETFONT( ) retorna o nome, o tamanho e o estilo da fonte selecionada. Sua escolha é retornada como uma seqüência de caracteres com o nome, o tamanho e o estilo da fonte separados por vírgulas.

GETFONT( ) retorna a seqüência vazia quando você sai da caixa de diálogo Fonte selecionando Cancelar ou Fechar, no menu Controle, ou pressionando ESC.

Observação Os comandos e funções do Visual FoxPro podem ser abreviados para quatro caracteres. No caso de GETFONT( ) e GETFILE( ), em que ambos começam com as mesmas quatro letras, a precedência é dada para GETFILE( ). Ao emitir GETF( ), a caixa de diálogo Abrir é emitida.

GETNEXTMODIFIED( ), função

Retorna o número de registro do registro modificado que segue em um buffer de tabela ou cursor.

Sintaxe

GETNEXTMODIFIED(nNúmeroRegistro[,cAliasTabela | nÁreaTrabalho])Tipos de retorno: Numérico

Argumentos

nNúmeroRegistro Especifica o número de registro após o qual GETNEXTMODIFIED( ) procura o registro modificado seguinte. Especifique 0 em nNúmeroRegistro 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 número do próximo registro modificado.

nÁreaTrabalho Especifica a Área de trabalho da tabela ou cursor para o qual GETNEXTMODIFIED( ) retorna o número do próximo registro modificado.

Se você não especificar um alias ou uma Área de trabalho, GETNEXTMODIFIED( ) retornará o número de registro correspondente ao próximo registro modificado na tabela ou cursor selecionados no momento.

Comentários

GETNEXTMODIFIED( ) retornará 0 se não houver nenhum registro modificado depois daquele que você especificou. Um registro será considerado modificado se o conteúdo de qualquer um de seus campos sofrer qualquer tipo de alteração (mesmo se o conteúdo original do campo for restaurado) ou o status de exclusão do registro for alterado.

GETNEXTMODIFIED( ) pode operar somente em tabelas e cursores para os quais a utilização de buffer de tabela estiver ativada. A utilização de buffer de tabela é ativada com CURSORSETPROP( ).

GETNEXTMODIFIED( ), exemplo da função

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 utilização de buffer de tabela. A tabela customer no banco de dados testdata é aberta, e CURSORSETPROP( ) é, então utilizada para ajustar o modo de utilização do buffer para utilização 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 número de registro do registro seguinte modificado (2, o segundo registro), iniciando a partir do início da tabela. TABLEREVERT( ) é utilizado para retornar a tabela ao seu estado original, e GETNEXTMODIFIED(0) é novamente utilizado

[Pág.: 210]

Page 211: 74039361 Visual FoxPro Comandos e Funcoes

para exibir o número do registro do registro seguinte modificado (0, indicando que não há registros modificados).

CLOSE DATABASESCLEAR

OPEN DATABASE SYS(2004)+"samples\data\testdata"SET MULTILOCKS ON && Permite utilização de buffer de tabelaUTILIZE Customer && Abre a tabela customer=CURSORSETPROP("Utilização de tabela", 5, "cliente") && ativa utilização de buffer de tabela

SKIP && Move o registro do ponteiro para o segundo registro

* Altera o conteúdo dos camposREPLACE cust_id WITH "***"

* Chama a função 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 alterações de tabelanChange=GETNEXTMODIFIED(0)IF nChange=0 =MESSAGEBOX("Registro(s) foram revertidos.",0,"Resultados")ELSE =MESSAGEBOX("Registro " + ALLTRIM(STR(GETNEXTMODIFIED(0))) + ; " alterado.",0,"Resultados")ENDIF

GETPAD( ), função

Retorna o título de menu para uma dada posição na barra de menus.

Sintaxe

GETPAD(cNomeBarraMenus, nPosiçãoBarraMenus)

Tipos de retorno: Caractere

Argumentos

cNomeBarraMenus Especifica o nome da barra de menus.

nPosiçãoBarraMenus Especifica uma posição na barra de menus. nPosiçãoBarraMenus pode variar de 1 (o nome situado mais à esquerda na barra de menus) até o número de títulos de menus na barra de menus.

Comentários

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 títulos ou RELEASE PAD para remover um título de menu.

GETPAD( ), exemplo da função

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 padrão, emita o comando SET SYSMENU TO DEFAULT.)

[Pág.: 211]

Page 212: 74039361 Visual FoxPro Comandos e Funcoes

FOR gnCount = 1 TO CNTPAD('_msysmenu') && Número de padsIF PRMPAD('_msysmenu', GETPAD('_msysmenu', gnCount)) = 'Edit'

RELEASE PAD (GETPAD('_msysmenu', gnCount)) OF _msysmenuEXIT

ENDIFENDFOR

GO | GOTO, comando

Move o ponteiro do registro para o número de registro especificado.

Sintaxe

GO [RECORD] nNúmeroRegistro [IN nÁreaTrabalho | IN cAliasTabela]– Ou –GO TOP | BOTTOM [IN nÁreaTrabalho | IN cAliasTabela]

– Ou –GOTO [RECORD] nNúmeroRegistro [IN nÁreaTrabalho | IN cAliasTabela]

– Ou –GOTO TOP | BOTTOM [IN nÁreaTrabalho | IN cAliasTabela]

Argumentos

RECORD nNúmeroRegistro Especifica o número do registro físico para o qual o ponteiro do registro deve ser movido. Você pode omitir GO ou GOTO totalmente e especificar apenas o número do registro. Caso especifique apenas o número do registro, você poderá mover o ponteiro do registro somente dentro da Área de trabalho atual.

IN nÁreaTrabalho 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.

Comentários

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 cláusula IN.

GO | GOTO, exemplo do comando

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')UTILIZE products && Abre tabela de produtos UTILIZE customer IN 0 && Abre tabela CustomerGO BOTTOM IN productsCLEAR? RECNO('produtos')GO TOP? RECNO( ) && Exibe 1GO 5? RECNO( ) && Exibe 5

[Pág.: 212]

Page 213: 74039361 Visual FoxPro Comandos e Funcoes

GOMONTH( ), função

Retorna a data que indica um número de meses especificado antes ou depois de uma determinada expressão de data ou de data e hora.

Sintaxe

GOMONTH(dExpressão | tExpressão, nNúmeroDeMeses)

Tipos de retorno: Data

Argumentos

dExpressão Especifica uma expressão de data para a qual GOMONTH( ) retorna a data.

tExpressão Especifica uma expressão de data e hora para a qual GOMONTH( ) retorna a data.

NNúmeroDeMeses Especifica o número de meses da data ou data e hora. Especifica o número de meses da data ou da data e hora. Se nNúmeroDeMeses for positivo, GOMONTH( ) retornará uma data correspondente a nNúmeroDeMeses meses depois da data ou data e hora. Se nNúmeroDeMeses for negativo, GOMONTH( ) retornará uma data correspondente a nNúmeroDeMeses meses antes da data ou data e hora.

GOMONTH( ), exemplo da função

SET CENTURY ONSTORE 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( ), função

Retorna o número de bytes no cabeçalho do arquivo de tabela atual ou especificado.

Sintaxe

HEADER([nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Numérico

Argumentos

nÁreaTrabalho | cAliasTabela Retorna o tamanho do cabeçalho de uma tabela aberta em uma outra área de trabalho. nÁreaTrabalho especifica o número 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 cabeçalho da tabela aberta na área de trabalho atual.

HEADER( ) retornará 0 se não houver uma tabela aberta na área de trabalho especificada. Se uma tabela não possuir o alias especificado, o Visual FoxPro exibirá uma mensagem de erro.

Comentários

Um cabeçalho de tabela contém informações sobre a própria tabela, como os tamanhos e nomes de campo e a presença de um arquivo de memo ou índice estrutural.

[Pág.: 213]

Page 214: 74039361 Visual FoxPro Comandos e Funcoes

HELP, comando

Abre a janela da Ajuda.

Sintaxe

HELP[Tópico | ID nIDContexto][IN [WINDOW] NomeJanela | IN [WINDOW] SCREEN | IN [WINDOW]][NOWAIT]

Argumentos

Tópico Especifica o tópico da Ajuda a ser exibido. Se você incluir somente um trecho de um título de tópico, o Visual FoxPro abre a janela da Ajuda e exibe o tópico com o título que mais corresponde ao trecho incluído.

ID nIDContexto Especifica o tópico da Ajuda a exibir, com base na ID de contexto do tópico.

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 gráfico, nIDContexto será um número de contexto na seção MAP do arquivo de projeto da Ajuda.

IN [WINDOW] NomeJanela Abre a janela da Ajuda dentro de uma janela pai. A janela da Ajuda não assume as características da janela pai onde é colocada. Se a janela da Ajuda for ativada dentro de uma janela pai, não 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, é necessário 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 execução do programa deve continuar depois da janela da Ajuda ser aberta. Caso você omita NOWAIT ao utilizar a Ajuda do estilo .DBF, a execução do programa será suspensa na linha que contém o comando HELP até que a janela da Ajuda seja fechada.

Na Ajuda do estilo gráfico, o argumento NOWAIT não tem efeito e a execução do programa sempre continua depois que o comando HELP é emitido.

Comentários

Para obter maiores informações sobre a criação do seu próprio 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 usuário.

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 vírgulas) a serem ocultadas.

[Pág.: 214]

Page 215: 74039361 Visual FoxPro Comandos e Funcoes

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 usuário com CLEAR.

Comentários

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 usuário sem remover a definição de menu da memória. Para que uma barra de menus possa ser ocultada, ela deve primeiro ser criada com DEFINE MENU. Ocultar uma barra de menus não é a mesma coisa que desativá-la. Quando uma barra de menus está oculta, ela fica residente na memória e pode ser exibida na janela principal do Visual FoxPro ou em uma janela definida pelo usuários 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 vírgula) 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 usuário. 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 usuário com CLEAR.

Comentários

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 usuário sem remover as definições de menu da memória. Para que um menu possa ser ocultado, ele deve primeiro ser criado com DEFINE POPUP. Ocultar um menu não é a mesmo coisa que desativá-lo. Quando um menu é ocultado, ele fica residente na memória e pode ser exibido na janela principal do Visual FoxPro ou em uma janela definida pelo usuário com ACTIVATE POPUP ou SHOW POPUP.

HIDE WINDOW, comando

Oculta uma janela ativa definida pelo usuário 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]

[Pág.: 215]

Page 216: 74039361 Visual FoxPro Comandos e Funcoes

Argumentos

NomeJanela1 [, NomeJanela2 ...] Especifica o nome da janela ou uma lista de janelas (separadas por vírgulas) a serem ocultadas. Caso você emita HIDE WINDOW sem argumentos, a janela ativa será ocultada. No Visual FoxPro, é possível 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 posição em que as janelas estão ocultas em relação a outras janelas. BOTTOM coloca uma janela atrás de todas as outras. TOP (padrão) coloca uma janela em frente a todas as outras. SAME oculta uma janela sem afetar sua colocação frontal ou posterior. Para preservar as posições relativas de várias janelas ocultas quando elas são reexibidas com SHOW WINDOW ALL, inclua a palavra-chave SAME ao ocultar as janelas.

Comentários

HIDE WINDOW HIDE WINDOW remove uma janela ou um conjunto de janelas da janela principal do Visual FoxPro ou de uma janela definida pelo usuário. É possível utilizar HIDE WINDOW para ocultar janelas do sistema como a janela Comando, a janela Sessão de dados e assim por diante.

Ocultar uma janela não é o mesmo que fechá-la. Ao ser ocultada, a janela permanece na memória e continua ativa. A saída pode ser enviada para uma janela oculta, mas não é possível visualizá-la.

Liberar uma janela remove-a da memória. As janelas removidas da memória 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 relatório no Visual FoxPro, emita o comando:

HIDE WINDOW “Controles de Relatório”

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 memória.

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

[Pág.: 216]

Page 217: 74039361 Visual FoxPro Comandos e Funcoes

HOME( ), função

Retorna o nome do diretório de onde o Visual FoxPro foi inicializado.

Sintaxe

HOME( )

Tipos de Retorno: Caractere

Comentários

HOME( ) retorna o nome do diretório de onde o Visual FoxPro foi inicializado.

HOME( ) é idêntico a SYS(2004) e é fornecido para manter a compatibilidade com o dBASE IV.

HOME( ), exemplo de função

? 'Diretório de inicialização do Visual FoxPro : ', HOME( )HOUR( ), função

Retorna a parte da hora de uma expressão DataHora.

Sintaxe

HOUR(tExpressão)

Argumentos

tExpressão Especifica uma expressão DataHora da qual HOUR( ) retorna a hora.

Tipos de Retorno: Numérico

Comentários

HOUR( ) retorna um valor numérico baseado em um formato de 24 horas e não é afetado pela definição 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 função

O exemplo a seguir exibe a parte de hora do horário atual e a parte de hora de um horário específico.

CLEAR? HOUR(DATETIME( ))? HOUR({10:42am}) && Exibe 10

IF... ENDIF, comando

Executa condicionalmente um conjunto de comandos baseados no valor de uma expressão lógica.

Sintaxe

IF lExpressão [THEN]

[Pág.: 217]

Page 218: 74039361 Visual FoxPro Comandos e Funcoes

Comandos[ELSE

Comandos]ENDIF

Argumentos

lExpressão Especifica a expressão lógica avaliada. Caso lExpressão resulte em verdadeiro (.T.), todos os comandos depois de IF ou THEN e antes de ELSE ou ENDIF (aquele que ocorrer primeiro) serão executados.

· Se lExpressão for falso (.F.) e ELSE for incluído, todos os comandos depois de ELSE e antes de ENDIF serão executados.· Se lExpressão for falso (.F.) e ELSE não for incluído, todos os comandos entre IF e ENDIF serão ignorados. Neste caso, a execução do programa continuará com o primeiro comando depois de ENDIF.

Comentários

É possível aninhar um bloco IF... ENDIF dentro de outro bloco IF... ENDIF.

Os comentários precedidos por && podem ser colocados na mesma linha depois de IF, THEN, ELSE e ENDIF. Esses comentários são ignorados durante a compilação e a execução do programa.

IF... ENDIF, exemplo do comando

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE Customer && Abre a tabela customer

GETEXPR 'Digite a condição para localizar ' TO gcTemp;TYPE 'L' DEFAULT 'EMPRESA = ""'

LOCATE FOR &gcTemp && Digita a expressão LOCATEIF FOUND( ) && Foi encontrado?

DISPLAY && Em caso positivo, exibe o registroELSE && Em caso negativo

? 'Condição ' + gcTemp + ' não encontrada ' && Exibe a mensagemENDIFUSE

IIF( ), função

Retorna um de dois valores, dependendo do valor de uma expressão lógica.

Sintaxe

IIF(lExpressão, eExpressão1, eExpressão2)

Tipos de retorno: Caractere, Numérico, Moeda, Data ou DataHora

Argumentos

lExpressão Especifica a expressão lógica que IIF( ) avalia.

eExpressão1, eExpressão2 Se lExpressão resultar em verdadeiro (.T.), será retornado eExpressão1. Se lExpressão resultar em falso (.F.), será retornado eExpressão2.

Comentários

[Pág.: 218]

Page 219: 74039361 Visual FoxPro Comandos e Funcoes

Esta função, também conhecida como IF Imediato, avalia uma expressão lógica e, em seguida, retorna uma de duas expressões. Se a expressão lógica resultar em verdadeiro (.T.), IIF( ) retornará a primeira expressão. Se a expressão lógica resultar em falso (.F.), IIF( ) retornará a segunda expressão.

Dica Pode-se utilizar esta função no lugar de IF ... ENDIF com expressões condicionais simples. Ela é especialmente útil em expressões de relatório e etiqueta que especificam condicionalmente conteúdos de campos. A execução da função IIF( ) também é consideravelmente mais rápida do que a execução de uma função IF ... ENDIF equivalente.

IIF( ), exemplo da função

O exemplo a seguir utiliza IIF( ) para verificar se o campo Notes na tabela employee está vazio. Se estiver vazio, “Nenhuma descrição” será exibida; caso contrário, os conteúdos do campo Memo serão exibidos.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE employee && Abre a tabela EmployeeCLEAR

SCAN? IIF(EMPTY(notes), 'Nenhuma observação', notes) && Campo Memo vazio?

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 nPáginaCódigo]

Argumentos

NomeArquivo Especifica o nome do arquivo do qual os dados devem ser importados. Se você não incluir uma extensão no nome de arquivo, será considerada a extensão padrão 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 Descrição

FW2 Incluir FW2 para importar arquivos FW2, criados pelo Framework II.MOD Incluir MOD para importar arquivos MOD, criados pelo Microsoft Multiplan versão 4.1.PDOX Incluir PDOX para importar arquivos do Paradox. Os arquivos de bancos de dados do Paradox versões 3.5 e 4.0 da Borland podem ser importados ao incluir a opção 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. É atribuída uma extensão .WK1 a planilhas criadas no Lotus 1, 2 e 3 revisões 2.x; uma extensão .WK3 a planilhas criadas no Lotus1, 2 e 3 revisões 3.x; e uma extensão .WKS a planilhas criadas no Lotus1, 2 e 3, revisão 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. É atribuída uma extensão .WR1 a

[Pág.: 219]

Page 220: 74039361 Visual FoxPro Comandos e Funcoes

planilhas criadas no Symphony versão 1.10 e é atribuída uma extensão .WRK a planilhas criadas no Symphony versão 1.1.XLS Incluir XLS para importar dados de planilhas do Microsoft Excel versões 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 têm a extensão .XLS.

XL5 [SHEET cNomeFolha] Incluir XL5 para importar dados do Microsoft Excel versão 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 têm a extensão .XLS. Se você omitir a cláusula SHEET, os dados em Plan1 serão importados. Para importar dados de uma folha específica, incluir a palavra-chave SHEET e especificar o nome da folha com cNomeFolha.

AS nPáginaCódigo Especifica a página de código do arquivo importado. O Visual FoxPro copia o conteúdo do arquivo importado e, à medida que copia os dados, converte automaticamente os dados para a página de código atual do Visual FoxPro.

Caso você especifique um valor para nPágina Código que não seja suportado, o VisualFoxPro exibirá uma mensagem de erro. Para que nPáginaCódigo possa exibir uma caixa de diálogo Página de código, com a qual você define uma página para o arquivo importado, utilize o GETCP().Se AS nPáginaCódigo for omitida e o Visual FoxPro não conseguir determinar a página de código do arquivo importado, ele copiará o conteúdo do arquivo importado e, à medida que copia os dados, converterá automaticamente os dados para a página de código atual do Visual FoxPro. Se AS nPáginaCódigo for omitida e o Visual FoxPro conseguir determinar a página de código do arquivo importado, ele converterá automaticamente os dados do arquivo importado da página de código dos dados para a página de código atual do Visual FoxPro. Utilize CPCURRENT( ) para determinar a página de código atual do Visual FoxPro.

Se nPáginaCódigo for igual a 0, o Visual FoxPro irá considerar que a página de código do arquivo importado é a mesma e atual do Visual FoxPro e não será feita nenhuma conversão de página de código.

Comentários

A maioria dos pacotes de software armazena seus dados em um formato de arquivo que não 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 não consegue ler diretamente.Uma nova tabela é criada com o mesmo nome do arquivo do qual os dados são importados. A extensão .DBF é atribuída à tabela recém-criada.

INDEX, comando

Cria um arquivo de índice para exibir e acessar registros de tabelas em uma ordem lógica.

Sintaxe

INDEX ON eExpressão TO NomeArquivoIDX | TAG NomeMarca [OF NomeArquivoCDX][FOR lExpressão][COMPACT][ASCENDING | DESCENDING][UNIQUE | CANDIDATE][ADDITIVE]

Argumentos

eExpressão Especifica uma expressão de índice que pode incluir o nome de um ou mais campos a partir da tabela atual. Uma chave de índice com base na expressão 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.

Observação Não utilize uma variável, um elemento de matriz , um campo ou expressão de campo de uma tabela em uma outra Área de trabalho para eExpressão. Se você acessar um índice que contenha uma variável ou um campo inexistente ou que não possa ser localizado, o Visual FoxPro irá gerar uma mensagem de erro.

[Pág.: 220]

Page 221: 74039361 Visual FoxPro Comandos e Funcoes

Campos Memo não podem ser utilizados sozinhos em expressões de arquivo de índice; devem ser combinados com outras expressões de caracteres.

Se você incluir um campo precedido por um alias de tabela ou letra de Área de trabalho na expressão de índice, o Visual FoxPro gera uma mensagem de erro. Embora você possa otimizar cláusulas FOR com a tecnologia Rushmore caso sejam incluídos campos de alias, ainda assim, insistimos que se evite o uso de campos de alias na criação de índices. Em diversos casos (USE ... AGAIN, buscas SQL, e assim por diante), um alias diferente é atribuído automaticamente a uma tabela e o índice pode não estar atualizado ou ser utilizado de forma adequada.

Para obter maiores informações sobre a tecnologia Rushmore, consulte “Compreendendo a tecnologia Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Se você tentar construir um índice com uma chave com tamanho variável, ela será preenchida com espaços. O Visual FoxPro não suporta chaves de índice de tamanho variável.

É possível criar uma chave de índice de comprimento zero. Por exemplo, este tipo de chave é criado quando a expressão de índice é uma subseqüência 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 necessário inserirem-se dados temporários no primeiro registro, a fim de impedir a ocorrência 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 extensão padrão .IDX, que pode ser substituída incluindo-se uma extensão diferente ou alterando-se a extensão de índice padrão no arquivo de configuração do Visual FoxPro. As regras padrão do MS-DOS para nomes de arquivos devem ser observadas na denominação 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 número de marcas separadas (entradas de índice). Cada marca é identificada pelo seu nome exclusivo. Os nomes devem começar com uma letra ou um sublinhado e podem consistir em qualquer combinação de até 10 letras, dígitos ou sublinhados. O número de marcas em um arquivo de índice composto é limitado apenas pelo espaço em disco e pela memória disponíveis.

Os arquivos de índice composto de várias entradas são sempre compactados. Não é necessário incluir COMPACT ao criar um desses arquivos. Seus nomes recebem a extensão .CDX.

É possível criar dois tipos de arquivos de índice composto: estrutural e não-estrutural.

Se você excluir a cláusula 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 não seja possível localizar o arquivo de índice composto estrutural de uma tabela ou ele tiver sido excluído ou renomeado, uma caixa de diálogo aparecerá quando você tentar abrir a tabela. Se você selecionar o botão padrão Cancelar, a tabela não será aberta. Se selecionar Ignorar, ela será aberta e será removido o sinalizador existente no cabeçalho da tabela e que indica a presença 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 cláusula opcional OF NomeArquivoCDX após TAG NomeMarca, você cria um arquivo de índice composto não estrutural. Ao contrário de um arquivo de índice composto estrutural, o não-estrutural deve ser aberto explicitamente com SET INDEX ou com a cláusula INDEX em USE.

Caso o arquivo de índice composto já tenha sido criado e aberto, a emissão de INDEX com TAG NomeMarca adicionará uma marca ao arquivo de índice composto.

[Pág.: 221]

Page 222: 74039361 Visual FoxPro Comandos e Funcoes

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 lExpressão Especifica uma condição pela qual somente os registros que satisfazem a expressão de filtragem lExpressão estarão disponíveis para exibição e acesso; chaves de índice são criadas no arquivo de índice apenas para os registros correspondentes à expressão de filtragem.

Rushmore otimiza um comando INDEX ... FOR lExpressão caso isto seja possível. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

COMPACT Cria um arquivo .IDX compactado.

ASCENDING Especifica uma ordem crescente para o arquivo .CDX. Como padrão, as marcas .CDX são criadas em ordem crescente (você pode incluir ASCENDING como um lembrete da ordem do arquivo de índice). É possível indexar uma tabela em ordem inversa incluindo DESCENDING.

DESCENDING Especifica uma ordem decrescente para o arquivo .CDX. Não é possível incluir DESCENDING na criação de arquivos de índice .IDX. No entanto, é possível 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 específico será incluído em um arquivo .IDX ou em uma marca .CDX. Pode-se utilizar UNIQUE para impedir a exibição de registros duplicados ou o acesso a eles. Todos os registros adicionados com chaves de índice duplicadas são excluídos do arquivo de índice. Utilizar a opção 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 estão ativos e um registro duplicado é alterado de uma forma que altere a sua chave de índice, a marca de índice ou o índice são atualizados. No entanto, o próximo 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 criação de uma marca de índice estrutural; caso contrário, o Visual FoxPro gera uma mensagem de erro.

A marca de índice candidato impede valores duplicados no campo ou em uma combinação de campos especificada na expressão de índice eExpressão. O termo “candidato” refere-se ao tipo de índice; visto que índices candidatos impedem valores duplicados, eles se qualificam como “candidato” a índice primário.

O Visual FoxPro gera um erro se você criar uma marca de índice candidato para um campo ou uma combinação de campos que já contenha valores duplicados.

Para obter maiores informações sobre marcas de índice primário e candidato, consulte “Definindo um índice primário ou candidato” no capítulo 7, “Trabalhando com tabelas”, no Guia do Desenvolvedor.

ADDITIVE Mantém aberto qualquer arquivo de índice anteriormente aberto. Se você omitir a cláusula 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) serão fechados.

Comentários

Os registros de uma tabela que tem um arquivo de índice são exibidos e acessados na ordem especificada pela expressão de índice. A ordem física dos registros na tabela não é alterada por um arquivo de índice.

[Pág.: 222]

Page 223: 74039361 Visual FoxPro Comandos e Funcoes

Se SET TALK estiver ativado (ON), o Visual FoxPro relatará quantos registros são indexados durante o processo de indexação. O intervalo de exibição destes registros durante a indexação pode ser especificado com SET ODOMETER.

Utilize DISPLAY STATUS para exibir maiores informações sobre arquivos de índice abertos. Estas informações incluem os nomes de todos os arquivos de índice abertos, seus tipos (estrutural, .CDX, .IDX), suas expressões de índice, suas seqüências de ordenação e o nome da marca principal ou do arquivo de índice principal.

O número de arquivos de índice (.IDX ou .CDX) que você pode abrir é limitado apenas pelos recursos do sistema e memória. No Visual FoxPro, no FoxPro para Windows e no FoxPro para MS-DOS, o número total de arquivos que podem ser abertos é determinado na definição FILES do arquivo de configuração CONFIG.SYS do MS-DOS. Para obter maiores informações sobre a definição FILES, consulte o manual do MS-DOS.

Tipos de índice O Visual FoxPro permite a criação de dois tipos de arquivos de índice:

· Arquivos de índice composto .CDX que contêm várias entradas de índice denominadas marcas· Arquivos de índice .IDX que contêm uma entrada de índice

Você pode também 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 preferível.

Inclua COMPACT para criar arquivos de índice .IDX compactos. Arquivos de índice compostos sempre são compactados.

Atualização 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 são atualizados, conforme as alterações são feitas nas tabelas. É possível designar o arquivo de índice principal ou marca com a cláusula INDEX de USE ou com SET INDEX e SET ORDER.

Funções definidas pelo usuário Embora uma expressão de índice possa conter uma função definida pelo usuário, você não deverá utilizar funções definidas pelo usuário em uma expressão de índice. Isto aumenta o tempo que as funções levam para criar ou atualizar o índice. Além disso, as atualizações de índice não podem ocorrer quando uma função definida pelo usuário é utilizada para uma expressão de índice.

Caso uma função definida pelo usuário seja utilizada em uma expressão de índice, o Visual FoxPro deverá ser capaz de localizar a função definida pelo usuário. Quando o Visual FoxPro cria um índice, a expressão de índice é gravada no arquivo de índice, mas apenas uma referência à função definida pelo usuário é incluída naquela expressão.

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 alfabética do campo Company.No Exemplo 2, a tabela customer é novamente aberta e um arquivo de índice denominado citycomp é criado a partir de uma subseqüência 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 são 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 são criadas. A primeira marca é uma marca de índice composto estrutural para address. A segunda é criada em um arquivo de índice não estrutural denominado custcdx.

* Exemplo 1CLOSE DATABASES

[Pág.: 223]

Page 224: 74039361 Visual FoxPro Comandos e Funcoes

OPEN DATABASE (HOME( ) + 'samples\data\testdata')USE Customer && Abre a tabela customerINDEX ON company TO complistCLEARDISPLAY STATUS

* Exemplo 2CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE Customer && Abre a tabela customerINDEX ON SUBSTR(city,1,5) + SUBSTR(company,1,6) TO citycompCLEARDISPLAY STATUS

* Exemplo 3CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')

USE Customer && Abre a tabela customerINDEX ON address TAG addressINDEX ON company TAG company OF custcdxCLEARDISPLAY STATUS

INKEY( ), função

Retorna um número correspondente ao primeiro clique com o mouse ou ao primeiro pressionamento de tecla no buffer de teclado.

Sintaxe

INKEY([nSegundos] [, cOcultarCursor])

Tipos de retorno: Numérico

Argumentos

nSegundos Especifica quantos segundos INKEY( ) aguarda um pressionamento de tecla. Caso nSegundos não seja incluído, 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 incluídos em cOcultarCursor, o último caractere em cOcultarCursor terá preferência.

Como padrão, INKEY( ) não detecta um clique com o mouse. Para procurar um clique com o mouse, inclua M em cOcultarCursor. Se M for incluído 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á atribuída a uma tecla ou a uma combinação de teclas, você pode incluir E em cOcultarCursor para expandir a macro de teclado. Quando E está incluído, INKEY( ) retorna um valor correspondente ao primeiro pressionamento de tecla atribuído à macro de teclado. Você pode retornar valores sucessivos para cada pressionamento de tecla, executando repetidas vezes INKEY( ) com E incluído. Se você omitir E, INKEY( ) retornará o valor da tecla ou da combinação de teclas que dispara a macro de teclado.

[Pág.: 224]

Page 225: 74039361 Visual FoxPro Comandos e Funcoes

Qualquer outro caractere diferente de H, M, S e E em cOcultarCursor é ignorado.

A tabela a seguir lista valores de retorno da função INKEY( ) para teclas sozinhas e em combinação com as teclas SHIFT, CTRL, e ALT Um travessão (—) indica que uma combinação de teclas retornará nenhum valor.

Tecla Sozinha SHIFT CTRL ALT/+OPÇÃO

F1 28 84 94 104F2 -1 85 95 105F3 -2 86 96 106F4 -3 87 97 107F5 -4 88 98 108F6 -5 89 99 109F7 -6 90 100 110F8 -7 91 101 111F9 -8 92 102 112F10 -9 93 103 113F11 133 135 137 139F12 134 136 138 1401 49 33 — 1202 50 64 — 1213 51 35 — 1224 52 36 — 1235 53 37 — 1246 54 94 — 1257 55 38 — 1268 56 42 — 1279 57 40 — 1280 48 41 — 19a 97 65 1 30b 98 66 2 48c 99 67 3 46d 100 68 4 32e 101 69 5 18f 102 70 6 33g 103 71 7 34h 104 72 127 35i 105 73 9 23j 106 74 10 36k 107 75 11 37l 108 76 12 38m 109 77 13 50n 110 78 14 49o 111 79 15 24p 112 80 16 25q 113 81 17 16r 114 82 18 19s 115 83 19 31t 116 84 20 20u 117 85 21 22v 118 86 22 47w 119 87 23 17x 120 88 24 45y 121 89 25 21z 122 90 26 44INS 22 22 146 162HOME1 55 29 151DEL 7 7 147 163END 6 49 23 159

[Pág.: 225]

Page 226: 74039361 Visual FoxPro Comandos e Funcoes

PAGE UP 18 57 31 153PAGE DOWN 3 51 30 161SETA ACIMA 5 56 141 152SETA ABAIXO 24 50 145 160SETA À DIREITA 4 52 2 157SETA À ESQUERDA 19 54 26 155ESC 27 —/27 —*/27 —*/1ENTER 13 13 10 —/166BACKSPACE 127 127 127 14TAB 9 15 148/* *BARRA DE ESPAÇOS 32 32 32/— 57

Pressionamento de teclas reservado pelo Windows.

Comentários

A função INKEY( ) retornará 0 se nenhuma tecla for pressionada. Caso existam várias teclas no buffer de teclado, INKEY( ) retornará o valor da primeira tecla inserida no buffer.

INLIST( ), função

Determina se uma expressão corresponde a outra expressão em um conjunto de expressões.

Sintaxe

INLIST(eExpressão1, eExpressão2 [, eExpressão3 ...])

Tipos de retorno: Lógico ou valor nulo

Argumentos

eExpressão1 Especifica a expressão que INLIST( ) procura no conjunto de expressões.

eExpressão2 [, eExpressão3 ...] Especifica o conjunto de expressões na qual a procura deve ser feita. Você deve incluir, no mínimo, uma expressão (eExpressão2) e, no máximo, 24 expressões (eExpressão2, eExpressão3 e assim sucessivamente).

Todas as expressões no conjunto de expressões devem ter o mesmo tipo de dado.

Comentários

A função INLIST( ) retornará verdadeiro (.T.) se localizar a expressão no conjunto de expressões; caso contrário INLIST( ) retornará falso (.F.). O valor nulo é retornado se eExpressão1 for o valor zero. O valor nulo também é retornado se eExpressão1 não for o valor nulo, eExpressão1 não corresponder a outra expressão, e pelo menos uma das outras expressões for o valor nulo.

INLIST( ), exemplo da função

Neste exemplo, INLIST( ) determina o quarto do ano para o mês atual. O mês atual é armazenado na variável gcMonth. Cada instrução CASE utiliza INLIST( ) para determinar se o conteúdo de gcMonth pode ser localizado na lista de nome de meses. O nome do quarto retornado é armazenado na variável gcReporTitle.

SET TALK ONSTORE CMONTH(DATE( )) TO gcMonthDO CASE

CASE INLIST(gcMonth,'Janeiro','Fevereiro','Março')STORE 'Primeiro quarto' TO gcReporTitle

CASE INLIST(gcMonth,'Abril','Maio','Junho')

[Pág.: 226]

Page 227: 74039361 Visual FoxPro Comandos e Funcoes

STORE 'Segundo quarto' TO gcReporTitleCASE INLIST(gcMonth,'Julho','Agosto','Setembro')

STORE 'Terceiro quarto' TO gcReporTitleOTHERWISE

STORE 'Quarto quarto' TO gcReporTitleENDCASEWAIT WINDOW gcReporTitle

INSMODE( ), função

Retorna o modo de inserção atual ou ativa/desativa o modo de inserção.

Sintaxe

INSMODE([lExpressão])

Tipos de retorno: Lógico

Argumentos

lExpressão Ativa ou desativa o modo de inserção. INSMODE(.T.) ativa e INSMODE(.F.) desativa o modo de inserção. É retornado um valor lógico correspondente à definição do modo de inserção antes da emissão de INSMODE(.T.) ou INSMODE(.F.).

Comentários

Se você omitir o argumento opcional e o modo de inserção estiver ativado (os caracteres são inseridos antes do cursor), INSMODE( ) retornará verdadeiro (.T.). Se o modo de inserção estiver desativado (os caracteres são sobrescritos na posição do cursor), INSMODE( ) retornará falso (.F.).

INSMODE( ), exemplo da função

O exemplo a seguir utiliza INSMODE( ) para ativar o modo de inserção e, em seguida, alterna o modo de inserção para o estado oposto.

SET TALK ON=INSMODE(.T.) && Alterna o modo de inserção para on? INSMODE( )= INSMODE(!INSMODE( )) && Alterna o modo de inserção para o estado oposto? INSMODE( )

INT( ), função

Avalia uma expressão numérica e retorna a parte inteira da expressão.

Sintaxe

INT(nExpressão)

Tipos de retorno: Numérico

Argumentos

nExpressão Especifica a expressão numérica para qual a função INT( ) retorna a parte inteira.

INT( ), exemplo da função

[Pág.: 227]

Page 228: 74039361 Visual FoxPro Comandos e Funcoes

CLEAR? INT(12.5) && Exibe 12? INT(6.25 * 2) && Exibe 12? INT(-12.5) && Exibe -12STORE -12.5 TO gnNumber? INT(gnNumber) && Exibe -12

ISALPHA( ), função

Determina se o caractere mais à esquerda em uma expressão de caracteres é alfabético.

Sintaxe

ISALPHA(cExpressão)

Tipos de retorno: Lógico

Argumentos

cExpressão Especifica a expressão de caracteres que ISALPHA( ) avalia. Todos os caracteres depois do primeiro caractere em cExpressão são ignorados.

Comentários

ISALPHA( ) retorna verdadeiro (.T.) se o caractere mais à esquerda na expressão especificada é um caractere alfabético; caso contrário, ISALPHA( ) retorna falso(.F.).

ISALPHA( ), exemplo da função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE Customer && Abrir tabela de clienteCLEAR

DISPLAY contact? ISALPHA(contact) && Exibe .T.DISPLAY maxordamt? ISALPHA(cust_id) && Exibe .F.

ISBLANK( ), função

Determina se uma expressão está vazia.

Sintaxe

ISBLANK(eExpressão)

Tipos de retorno: Lógico

Argumentos

eExpressão Especifica a expressão que ISBLANK( ) avalia. eExpressão pode ser um campo de uma tabela, uma variável ou elemento de matriz ou uma expressão.

Para um campo, ISBLANK( ) retorna verdadeiro (.T.) se o campo contiver os valores a seguir.

[Pág.: 228]

Page 229: 74039361 Visual FoxPro Comandos e Funcoes

Tipo Conteúdo

Caractere Seqüência vazia, espaços ou sem valor (registro vazio recém-incluído ou limpo com BLANK)Numérico Sem valor (registro vazio recém-incluído ou limpo com BLANK)Flutuante Sem valor (registro vazio recém-incluído ou limpo com BLANK)Data Data em branco ({ / / }) ou sem valor (registro vazio recém-incluído ou limpo com BLANK)DataHora Data e hora em branco ({ / / : : }) ou sem valor (registro vazio recém-incluído ou limpo

com BLANK)Lógico Sem valor (registro vazio recém-incluído ou limpo com BLANK)Memo Vazio (sem conteúdo memo)Geral Vazio (sem objeto OLE)Figura Vazio (sem figura)

Comentários

ISBLANK( ) retorna verdadeiro(.T.) se a expressão eExpressão estiver vazia; caso contrário, ISBLANK( ) retorna falso(.F.).Utiliza-se APPEND BLANK e BLANK para criar um registro vazio. Pode-se também utilizar BLANK para limpar dados de campos em um registro. ISBLANK( ) pode determinar se um campo está vazio.Observe que as expressões do tipo Currency, Integer e Double nunca estão 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 expressão de caracteres contiver qualquer combinação de valores nulos, espaços, tabulações, retornos de carro ou alimentações de linha; ISBLANK( ) retornará verdadeiro (.T.) se uma expressão de caracteres contiver somente a seqüência vazia ou espaços.

ISBLANK( ), exemplo da função

No exemplo a seguir, uma tabela denominada mytable é criada e um registro vazio é incluído. ISBLANK( ) retorna verdadeiro (.T.) porque myfield está vazio. Um valor é colocado em myfield, e ISBLANK( ) retorna falso (.F.) myfield não está mais vazio.

CREATE TABLE mytable FREE (myfield C(20))APPEND BLANK && Adicionar novo registro vazioCLEAR

? ISBLANK(myfield) && Exibe .T.REPLACE myfield WITH 'John Smith' && Insere um valor no campo? ISBLANK(myfield) && Exibe .F.

ISCOLOR( ), função

Determina se o computador pode exibir cor.

Sintaxe

ISCOLOR( )

Tipos de retorno: Lógico

Comentários

ISCOLOR( ) retorna verdadeiro (.T.) se o seu computador tem recurso de cor (mesmo que o monitor em utilização não seja colorido). Se o seu computador não permite o uso de cor, ISCOLOR( ) retorna falso (.F.).

ISDIGIT( ), função

Determina se o caractere mais à esquerda da expressão de caracteres especificada é um dígito (de 0 a 9).

[Pág.: 229]

Page 230: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

ISDIGIT(cExpressão)

Tipos de retorno: Lógico

Argumentos

cExpressão Especifica a expressão de caracteres testada por ISDIGIT( ). Todos os caracteres depois do primeiro caractere em cExpressão são ignorados.

Comentários

ISDIGIT( ) retorna verdadeiro (.T.) se o caractere mais à esquerda da expressão de caracteres especificada é um dígito (de 0 a 9); caso contrário, ISDIGIT( ) retorna falso (.F.).

ISDIGIT( ), exemplo da função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE orders && Tabelas de pedidos abertasCLEAR DISPLAY cust_id? ISDIGIT(cust_id) && Exibe .F.DISPLAY order_dsc? ISDIGIT(ALLTRIM(STR(order_dsc))) && Exibe .T.

ISEXCLUSIVE( ), função

Retorna verdadeiro (.T.) se a tabela ou o banco de dados forem abertos para uso exclusivo; caso contrário, retorna falso(.F.).

Sintaxe

ISEXCLUSIVE([cAliasTabela | nÁreaTrabalho | cNomeBancoDados [, nTipo]])

Tipos de retorno: Lógico

Argumentos

cAliasTabela Especifica o alias da tabela para a qual é retornado o status de utilização exclusiva. O Visual FoxPro gera uma mensagem de erro se você especificar um alias de tabela inexistente.

nÁreaTrabalho Especifica a Área de trabalho da tabela para a qual é retornado o status de utilização exclusiva. ISEXCLUSIVE( ) retorna falso (.F.) se não houver uma tabela aberta na Área de trabalho especificada.

cNomeBancoDados Especifica o nome do banco de dados para o qual o status de utilização exclusiva é retornado.

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 Tabela2 Banco de dados

Para determinar o status exclusivo de um banco de dados, é necessário atribuir o valor 2 a nTipo.

[Pág.: 230]

Page 231: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

ISEXCLUSIVE( ) retorna um valor para a tabela aberta na Área de trabalho atualmente selecionada se forem omitidos os argumentos opcionais cAliasTabela, nÁreaTrabalho, ou cNomeBancoDados.Uma tabela é aberta para utilização 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 utilização exclusiva incluindo a palavra-chave EXCLUSIVE no OPEN DATABASE.

ISEXCLUSIVE( ), exemplo da função

No exemplo a seguir, a função ISEXCLUSIVE( ) verifica que a tabela foi aberta para utilização exclusiva. A tabela não será reindexada pois a Área de trabalho atual não foi aberta para utilização exclusiva.

cExclusive = SET('EXCLUSIVE')SET EXCLUSIVE OFFSET PATH TO (SYS(2004) + 'SAMPLES\DATA\')OPEN DATA testdata && Abre o banco de dados de testeUSE customer && Não foi aberto exclusivamenteUSE employee IN 0 EXCLUSIVE && Aberto exclusivamente em outra Área de trabalho IF ISEXCLUSIVE( ) REINDEX && Somente pode ser feito se a tabela for aberta exclusivamenteELSE WAIT WINDOW 'A tabela não pode ser aberta exclusivamente'ENDIFSET EXCLUSIVE &cExclusive

ISFLOCKED( ), função

Retorna o status de bloqueio da tabela.

Sintaxe

ISFLOCKED([nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Lógico

Argumentos

nÁreaTrabalho Especifica o número da Área de trabalho da tabela para a qual o status de bloqueio foi retornado. Se você omitir cAliasTabela e nÁreaTrabalho, 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.

Comentários

ISFLOCKED( ) retorna verdadeiro (.T.) se a tabela estiver bloqueada; caso contrário, um falso (.F.) é retornado. ISFLOCKED( ) é similar ao SYS(2011), mas retorna um valor lógico que não requer localização para aplicativos internacionais.

ISLOWER( ), função

Determina se o caractere mais a esquerda da expressão de caracteres especificada é um caractere alfabético minúsculo.

Sintaxe

[Pág.: 231]

Page 232: 74039361 Visual FoxPro Comandos e Funcoes

ISLOWER(cExpressão)

Tipos de retorno: Lógico

Argumentos

cExpressão Especifica a expressão de caracteres que ISLOWER( ) testa. ISLOWER( ) ignora qualquer caractere após o primeiro caractere em cExpressão.

Comentários

ISLOWER( ) retorna verdadeiro (.T.) se o caractere mais a esquerda da expressão de caracteres especificada é um caractere alfabético minúsculo, caso contrário, ISLOWER( ) retorna falso (.F.).

ISLOWER( ), exemplo da função

CLEAR? ISLOWER('redmond') && Exibe .T.? ISLOWER('Redmond') && Exibe .F.

ISNULL( ), função

Retorna verdadeiro (.T.) se uma expressão resulta em um valor nulo; caso contrário, ISNULL( ) retorna falso (.F.).

Sintaxe

ISNULL(eExpressão)

Tipos de retorno: Lógico

Argumentos

eExpressão Especifica a expressão a ser avaliada.

Comentários

Utilize ISNULL( ) para determinar se o conteúdo de um campo, variável de memória ou elemento de matriz contém um valor nulo ou se uma expressão resulta em um valor nulo.

ISNULL( ), exemplo da função

No exemplo a seguir, ISNULL( ) é utilizado para verificar um valor nulo.

STORE .NULL. TO mNullvalue && Armazene um valor nulo em uma variável de memória

CLEAR? mNullvalue && Exibe o valor de uma variável de memória? ISNULL(mNullvalue) && Retorna .T., indicando um valor nulo? TYPE('mNullvalue') && Retorna L, indicando um valor lógico? (mNullvalue = .NULL.) && Retorna .NULL., teste ruim para valores nulos

ISREADONLY( ), função

Determina se uma tabela está aberta somente para leitura.

[Pág.: 232]

Page 233: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

ISREADONLY([nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Lógico

Argumentos

nÁreaTrabalho | cAliasTabela Retorna o status somente para leitura de uma tabela aberta em uma outra Área de trabalho. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela especifica o alias da Área de trabalho ou da tabela. ISREADONLY( ) retorna falso (.F.) se não houver tabela aberta na Área de trabalho especificada.

Se você não especificar um número 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.

Comentários

ISREADONLY( ) retorna verdadeiro (.T.) se a tabela está aberta somente para leitura; caso contrário, ISREADONLY( ) retorna falso (.F.).

Você pode abrir uma tabela somente para leitura incluindo a opção NOUPDATE ao abri-la com USE, marcando a caixa de verificação Somente para leitura ao abri-la na caixa de diálogo 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 função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer NOUPDATE && Abre a tabela customer somente para leitura

CLEAR? ISREADONLY('customer') && Retorna .T.

ISRLOCKED( ), função

Retorna o status de bloqueio do registro.

Sintaxe

ISRLOCKED([nNúmeroRegistro, [nÁreaTrabalho | cAliasTabela]])

Tipos de retorno: Lógico

Argumentos

nNúmeroRegistro Especifica o número do registro para o qual o status do bloqueio é retornado. Se nNúmeroRegistro é omitido, o status de bloqueio do registro é retornado para o registro atual.

nÁreaTrabalho Especifica um número de Área de trabalho de uma tabela para a qual o status de bloqueio de registro é retornado. Se for omitido cAliasTabela e nÁreaTrabalho, 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.

Comentários

[Pág.: 233]

Page 234: 74039361 Visual FoxPro Comandos e Funcoes

ISRLOCKED( ) retorna verdadeiro (.T.) se o registro estiver bloqueado, caso contrário será retornado falso (.F.).

ISUPPER( ), função

Determina se o primeiro caractere em uma expressão de caracteres é um caractere alfabético maiúsculo.

Sintaxe

ISUPPER(cExpressão)

Tipos de retorno: Lógico

Argumentos

cExpressão Especifica a expressão de caracteres que ISUPPER( ) avalia. Todos os caracteres depois do primeiro caractere em cExpressão são ignorados.

Comentários

ISUPPER( ) retorna verdadeiro (.T.) se o primeiro caractere em uma expressão de caracteres é um caractere alfabético maiúsculo; caso contrário, ISUPPER( ) retorna falso(.F.).

ISUPPER( ), exemplo da função

? ISUPPER('Redmond') && Exibe .T.? ISUPPER('redmond') && Exibe .F.

KEY( ), função

Retorna a expressão de chave de índice para uma marca de índice ou arquivo de índice.

Sintaxe

KEY([NomeArquivoCDX,] nNúmeroÍndice [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Caractere

Argumentos

NomeArquivoCDX Especifica o nome de um arquivo de índice composto. KEY( ) retorna as expressões 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.

nNúmeroÍndice Especifica a chave de expressão de índice a ser retornada.

USE e SET INDEX suportam uma lista de arquivos de índice que permitem que você abra vários índices para uma tabela. Qualquer combinação de arquivos de índice .IDX de entrada única, arquivos de índice composto estruturais ou arquivos de índice composto independentes pode ser incluída na lista de arquivos de índice.

A expressão numérica nNúmeroÍndice especifica a expressão de índice a ser retornada a partir dos arquivos de índice abertos. KEY( ) retorna expressões de índice a partir de arquivos de índice abertos na ordem a seguir à medida que nNúmeroÍndice aumenta a partir de 1 até o número total de arquivos .IDX de entrada única abertos e marcas de índice composto independente e estrutural:

1. As expressões de índice de arquivos de índice .IDX de entrada única (se houver algum aberto) são retornadas em primeiro lugar. A ordem de inclusão destes arquivos de índice de entrada única em USE ou SET INDEX determina a forma como as expressões de índice são retornadas.

[Pág.: 234]

Page 235: 74039361 Visual FoxPro Comandos e Funcoes

2. As expressões de índice para cada marca no índice composto estrutural (se houver algum) são retornadas em seguida. As expressões de índice são retornadas a partir das marcas na ordem em que as marcas são criadas no índice composto estrutural.

3. As expressões de índice para cada marca em qualquer índice composto independente aberto são retornadas por último. As expressões de índice são retornadas a partir das marcas na ordem em que as marcas são criadas nos índices compostos independentes.

A seqüência vazia é retornada caso nNúmeroÍndice seja maior que o número total de arquivos .IDX de entrada única abertos e marcas de índice composto independentes e estruturais.

nÁreaTrabalho Especifica o número da Área de trabalho da tabela cujas expressões de chave de índice devem ser retornadas por KEY( ).

Se não houver uma tabela aberta na Área de trabalho especificada, KEY( ) retornará a seqüência vazia.

cAliasTabela Especifica o alias da tabela cujas expressões de chave de índice devem ser retornadas por KEY( ).

Se nenhuma tabela possuir o alias especificado, o Visual FoxPro irá gerar uma mensagem de erro.

Se nÁreaTrabalho e cAliasTabela forem omitidos, as expressões de chave de índice serão retornadas para a tabela aberta na Área de trabalho atual.

Comentários

Uma expressão de chave de índice é especificada quando uma marca de índice ou um arquivo de índice é criado com INDEX. A expressão 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 informações sobre como criar marcas de índice, arquivos de índice e expressões de chave de índice, consulte INDEX.

KEY( ), exemplo da função

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 expressão de índice de cada marca de índice no índice estrutural customer. O nome de cada marca de índice estrutural é exibido com a sua expressão de índice.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE Customer && Abre a tabela customerCLEAR

FOR nCount = 1 TO 254IF !EMPTY(TAG(nCount)) && Verifica se há marcas no índice? TAG(nCount) + ' ' && Exibe o nome da marca?? KEY(nCount) && Exibe a expressão de índiceELSE

EXIT && Sai do loop quando não forem localizadas mais marcasENDIF

ENDFOR

KEYBOARD, comando

Coloca a expressão de caracteres especificada no buffer de teclado.

Sintaxe

KEYBOARD cValorTeclado[PLAIN] [CLEAR]

[Pág.: 235]

Page 236: 74039361 Visual FoxPro Comandos e Funcoes

Argumentos

cValorTeclado Especifica a expressão de caracteres que é colocada no buffer de teclado. A expressão de caracteres pode ser uma seqüência de caracteres, um rótulo de tecla, um conjunto de rótulos de tecla ou uma função definida pelo usuário que retorna uma expressão de caractere.

Se cValorTeclado for um rótulo de tecla, deverá ser incluído entre chaves e aspas simples. Por exemplo:

KEYBOARD '{CTRL+LEFTARROW}'

Para obter uma lista de rótulos 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 são ignorados.

PLAIN Se houver macros de teclado definidas ou comandos ON KEY LABEL ativos, você poderá incluir PLAIN para ignorar estas atribuições de tecla. PLAIN preenche o teclado com o caractere de tecla literal, não com a atribuição de tecla.

Por exemplo, se você tiver atribuído um comando à tecla A com ON KEY LABEL e A estiver incluído em cValorTeclado, utilize PLAIN para colocar a letra A no buffer de teclado. O comando ON KEY LABEL atribuído a A não é executado.

CLEAR Esvazia o buffer de teclado antes que ele seja preenchido com cValorTeclado.

Comentários

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 são lidos e trabalhados como se tivessem sido digitados diretamente a partir do teclado.

É possível utilizar KEYBOARD para criar sistemas de demonstração auto-executáveis para os aplicativos.LASTKEY( ), função

Retorna um número inteiro correspondente à última tecla pressionada.

Sintaxe

LASTKEY( )

Tipos de retorno: Numérico

Comentários

Os valores retornados por LASTKEY( ) são 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( ), função

Retorna um número especificado de caracteres de uma expressão de caractere, a partir do caractere mais à esquerda.

[Pág.: 236]

Page 237: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

LEFT(cExpressão, nExpressão)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caractere a partir da qual LEFT( ) retorna caracteres.

nExpressão Especifica o número de caracteres retornados da expressão de caractere. Caso nExpressão seja maior que o comprimento de cExpressão, será retornada toda a expressão de caractere. A seqüência vazia será retornada se nExpressão for negativa ou 0.

A função LEFT( ) é idêntica a SUBSTR( ) com uma posição inicial 1.

LEFT( ), exemplo da função

CLEAR? LEFT('Redmond, WA', 4) && Exibe Redmond

LEFTC( ), função

Retorna um número especificado de caracteres de uma expressão de caractere, a partir do caractere mais à esquerda.

Sintaxe

LEFTC(cExpressão, nExpressão)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres a partir da qual LEFTC( ) retorna caracteres.

nExpressão Especifica o número de caracteres retornados da expressão de caracteres. Caso nExpressão seja maior que o comprimento de cExpressão, será retornada toda a expressão de caracteres. A seqüência vazia será retornada se nExpressão for negativa ou 0.

Comentários

LEFTC( ) foi elaborada para expressões contendo caracteres de byte duplo. Se a expressão contiver apenas caracteres de byte único, LEFTC( ) será equivalente a LEFT( ).

LEFTC( ) retorna um número especificado de caracteres de uma expressão de caracteres, contendo qualquer combinação de caracteres de bytes único ou duplo.

A função LEFTC( ) é idêntica a SUBSTRC( ) com uma posição inicial 1.

LEN( ), função

Retorna o número de caracteres em uma expressão de caracteres.

[Pág.: 237]

Page 238: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

LEN(cExpressão)

Tipos de retorno: Numérico

Argumentos

cExpressão Especifica a expressão de caracteres para a qual LEN( ) retornará o número de caracteres.

Comentários

Utilize LEN( ) para determinar o comprimento de uma expressão de caracteres.

LEN( ), exemplo da função

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 DATABASESOPEN 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( ), função

Retorna o número de caracteres em uma expressão de caracteres ou campo Memo.

Sintaxe

LENC(cExpressão)

Tipos de retorno: Numérico

Argumentos

cExpressão Especifica a expressão de caracteres para a qual LENC( ) retornará o número de caracteres.

Comentários

LENC( ) foi elaborada para expressões contendo caracteres de byte duplo. Se a expressão contiver apenas caracteres de byte único, LENC( ) será equivalente a LEN( ).

LENC( ) retorna o número de caracteres em uma expressão de caracteres ou campo Memo que contenha qualquer combinação de caracteres de byte único e duplo.

LIKE( ), função

Determina se uma expressão de caracteres corresponde a outra expressão de caracteres.

Sintaxe

[Pág.: 238]

Page 239: 74039361 Visual FoxPro Comandos e Funcoes

LIKE(cExpressão1, cExpressão2)

Tipos de retorno: Lógico

Argumentos

cExpressão1 Especifica a expressão de caracteres que LIKE( ) compara à cExpressão2. cExpressão1 pode conter caracteres curingas como * e ?. O ponto de interrogação (?) corresponde a qualquer caractere simples na cExpressão2 e o asterisco (*) corresponde a qualquer número de caracteres. Você pode misturar qualquer quantidade de caracteres curinga em qualquer combinação na cExpressão1.

cExpressão2 Especifica a expressão de caracteres que LIKE( ) compara à cExpressão1. A cExpressão2 deve corresponder à cExpressão1, letra por letra, para que LIKE( ) retorne verdadeiro (.T.).

Comentários

LIKE( ) retorna verdadeiro (.T.) se cExpressão1 corresponder a cExpressão2; caso contrário, retorna falso (.F.).

SET COMPATIBLE determina o modo como LIKE( ) avalia a cExpressão1 e cExpressão2. Se SET COMPATIBLE estiver ativado (ON) ou definido como DB4, todos os espaços à direita de cExpressão1 e cExpressão2 serão removidos antes que elas sejam comparadas. Se SET COMPATIBLE estiver desativado (OFF) ou estiver definido como FOXPLUS, todos os espaços à direita em cExpressão1 e cExpressão2 serão utilizados na comparação.

LIKE( ), exemplo da função

No exemplo a seguir, todos os nomes de produtos na tabela products que iniciarem com as letras “Ch” serão exibidos.

CLOSE DATABASESOPEN 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 ENDSCANUSE

LIKEC( ), função

Determina se uma expressão de caracteres corresponde a outra expressão de caracteres.

Sintaxe

LIKEC(cExpressão1, cExpressão2)

Tipos de retorno: Lógico

Argumentos

cExpressão1 Especifica a expressão de caractere que LIKEC( ) compara à cExpressão2. cExpressão1 pode conter caracteres curinga como * e ?. O ponto de interrogação (?) corresponde a qualquer caractere simples na cExpressão2 e um asterisco (*) corresponde a qualquer número de caracteres. Você pode misturar qualquer número de caracteres curinga em qualquer combinação na cExpressão1.

[Pág.: 239]

Page 240: 74039361 Visual FoxPro Comandos e Funcoes

cExpressão2 Especifica a expressão de caractere que LIKEC( ) compara à cExpressão1. A cExpressão2 deve corresponder à cExpressão1, caractere por caractere, para que LIKE( ) retorne verdadeiro (.T.).

Comentários

LIKEC( ) foi elaborada para expressões que contenham caracteres de byte duplo. Se a expressão contiver apenas caracteres de byte único, LIKEC( ) será equivalente a LIKE( ).

LIKEC( ) determina se uma expressão de caracteres corresponde a outra expressão de caracteres. LIKEC( ) retorna verdadeiro (.T.) se a cExpressão1 corresponder à cExpressão2; caso contrário, retorna falso (.F.).

SET COMPATIBLE determina como LIKEC( ) compara os espaços em branco contidos em cExpressão1 e cExpressão2. Se SET COMPATIBLE estiver ativado (ON) ou definido como DB4, todos os espaços à direita de cExpressão1 e cExpressão2 serão removidos antes que elas sejam comparadas. Se SET COMPATIBLE estiver desativado (OFF) ou estiver definido FOXPLUS, todos os espaços à direita na cExpressão1 e cExpressão2 serão utilizados na comparação.

LINENO( ), função

Retorna o número de uma linha em execução em um programa em relação à primeira linha do programa principal.

Sintaxe

LINENO([1])

Tipos de retorno: Numérico

Argumentos

1 Retorna o número da linha em relação à primeira linha do programa ou procedimento atual. Se você omitir o argumento 1, o número da linha será retornado em relação à primeira linha do programa principal.

Comentários

As linhas do programa são contadas a partir do início do programa. As linhas de comentários, as linhas de continuação e as linhas em branco são incluídas na contagem do número de linhas. Se um programa for suspenso durante a execução, LINENO( ) retornará o número da linha em que a execução do programa foi suspensa. LINENO( ) retornará 0 se um programa for cancelado.

Como padrão, os números das linhas são retornados em relação ao início do programa principal. Caso seja chamado um procedimento, a numeração das linhas será retomada do início do programa de chamada.

LINENO( ) é útil para depurar programas. Você pode definir um ponto de interrupção para parar a execução do programa em um número de linha específico, emitindo o comando abaixo na janela Depurar:

LINENO( ) = nExpressão

A execução do programa será suspensa quando o valor de LINENO( ) for igual a nExpressão.

LINENO( ), exemplo da função

O exemplo a seguir faz parte de uma rotina simples de manipulação de erro.

ON ERROR DO bug_proc WITH LINENO( )BRWS && Provoca um erroON ERROR

*** Bug_Proc error handler ***

PROCEDURE bug_proc

[Pág.: 240]

Page 241: 74039361 Visual FoxPro Comandos e Funcoes

PARAMETERS gnBadLineWAIT WINDOW 'Erro ocorrido na linha: ' + ALLTRIM(STR(gnBadLine))RETURN

LIST DATABASE, comando

Exibe informações sobre o banco de dados atual de modo contínuo.

Sintaxe

LIST DATABASE[TO PRINTER [PROMPT] | TO FILE NomeArquivo][NOCONSOLE]

Argumentos

TO PRINTER [PROMPT] Direciona a saída de LIST DATABASE para uma impressora.

No Visual FoxPro, você pode incluir a cláusula opcional PROMPT para exibir uma caixa de diálogo Imprimir antes de iniciar a impressão. Coloque PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Direciona a saída 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 saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

Comentários

Utilize DBGETPROP( ) para retornar outras informações 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 informações sobre as tabelas no banco de dados.

CREATE DATABASE peopleCREATE TABLE friends (FirstName C(20), LastName C(20))CLEARDISPLAY TABLES && Exibe as tabelas no banco de dadosLIST DATABASE && Lista informações das tabelas

LIST TABLES, comando

Exibe todas as tabelas e informações sobre as tabelas contidas no banco de dados atual sem interrupção.

Sintaxe

LIST TABLES[TO PRINTER [PROMPT] | TO FILE NomeArquivo][NOCONSOLE]

Argumentos

TO PRINTER [PROMPT] Direciona as informações retornadas de LIST TABLES para uma impressora.

[Pág.: 241]

Page 242: 74039361 Visual FoxPro Comandos e Funcoes

Você pode incluir PROMPT para exibir uma caixa de diálogo Imprimir antes de iniciar a impressão. Coloque a palavra-chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo Direciona a saída 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 saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

Comentários

As informações retornadas incluem os caminhos e nomes das tabelas e constituem um subconjunto das informações apresentadas quando se utiliza LIST STATUS. Entretanto, as informações fornecidas por meio de LIST TABLES são relativas somente a tabelas, sendo exibidas independentemente de as tabelas estarem ou não abertas.

LIST TABLES, exemplo de comando

O exemplo a seguir abre a tabela customer no banco de dados testdata. LIST TABLES é utilizado para listar informações sobre as tabelas no banco de dados.

CLOSE DATABASESSET PATH TO (SYS(2004) + 'samples\data\') && Define o caminho para o banco de dadosOPEN DATABASE testdata && Abre o banco de dados testdata

CLEARLIST TABLES && Lista informações sobre tabelas no banco de dados

LIST, comandos

Exibe informações do ambiente ou da tabela de modo contínuo.

Sintaxe

LIST [FIELDS ListaCampos] [Escopo] [FOR lExpressão1] [WHILE lExpressão2][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]

[Pág.: 242]

Page 243: 74039361 Visual FoxPro Comandos e Funcoes

– Ou –LIST STRUCTURE

[IN nÁreaTrabalho | cAliasTabela][NOCONSOLE][TO PRINTER [PROMPT] | TO FILE NomeArquivo]

Comentários

Esses comandos LIST são idênticos aos comandos DISPLAY, com exceção das diferenças a seguir:

· O escopo para LIST tem como padrão os registros ALL.· LIST não emite um aviso depois de preencher a janela principal do Visual FoxPro ou uma janela

definida pelo usuário com informações.· LIST não exibe os registros sinalizados para exclusão quando SET DELETED está ativado (ON).

Para obter maiores informações sobre os comandos LIST, consulte os comandos correspondentes em DISPLAY.

LOCAL, comando

Cria variáveis e matrizes de variáveis locais.

Sintaxe

LOCAL ListaVar

– Ou –

LOCAL [ARRAY] NomeMatriz1(nLinhas1 [, nColunas1])[, NomeMatriz2(nLinhas2 [, nColunas2])] ...

Argumentos

ListaVar Especifica uma ou mais variáveis 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 descrição de cada argumento.

Comentários

As variáveis e as matrizes de variáveis locais só podem ser utilizadas e modificadas dentro do procedimento ou função em que são criadas, e não podem ser acessadas por programas de nível mais alto ou baixo. As matrizes e variáveis locais são liberadas quando é concluída a execução do procedimento ou função que as contém.

As variáveis e matrizes criadas com LOCAL são inicializadas com um valor falso (.F.). Qualquer variável de memória ou matriz que você deseje declarar como local deve ser declarada local antes de ter um valor atribuído. O Visual FoxPro gera uma mensagem de erro quando você atribui um valor a uma variável ou matriz e posteriormente a declara local utilizando LOCAL.

As variáveis locais podem ser passadas por referência.

Não abrevie LOCAL porque LOCAL e LOCATE possuem as primeiras quatro letras iguais.

LOCATE, comando

[Pág.: 243]

Page 244: 74039361 Visual FoxPro Comandos e Funcoes

Procura seqüencialmente na tabela o primeiro registro correspondente à expressão lógica especificada.

Sintaxe

LOCATE FOR lExpressao1[Escopo][WHILE][NOOPTIMIZE]

Argumentos

FOR lExpressao1 procura seqüencialmente na tabela atual o primeiro registro correspondente à expressão lógica lExpressao1.

Rushmore otimizará uma consulta criada com LOCATE FOR se lExpressao1 for uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Escopo Especifica um intervalo de registros a serem localizados. Apenas os registros que estiverem dentro do intervalo serão localizados. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. Os comandos que incluem Escopo operam apenas na tabela da Área de trabalho ativa.

O escopo padrão de LOCATE é ALL, isto é, todos os registros.

WHILE lExpressão2 Especifica uma condição por meio da qual os registros são procurados, desde que a expressão lógica lExpressão2 resulte em verdadeiro (.T.).

NOOPTIMIZE Desativa a otimização Rushmore de LOCATE.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, "Otimizando aplicativos", no Guia do Desenvolvedor.

Comentários

A tabela não precisa ser indexada.

Se LOCATE localizar um registro correspondente, você poderá utilizar RECNO( ) para retornar o número 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 número do registro correspondente.

Após 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 após o registro correspondente. Você pode emitir CONTINUE várias vezes até o final do escopo ou até chegar ao fim da tabela.

Se uma correspondência não for localizada, RECNO( ) retornará o número de registros na tabela mais 1, FOUND( ) retornará falso (.F.) e EOF( ) retornará verdadeiro (.T.).

LOCATE e CONTINUE são específicos 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 são localizados registros de clientes da Alemanha. Em seguida, a contagem total é exibida.

CLOSE DATABASES

[Pág.: 244]

Page 245: 74039361 Visual FoxPro Comandos e Funcoes

OPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerSET TALK OFF

STORE 0 TO gnCountLOCATE FOR ALLTRIM(UPPER(customer.country)) = 'ALEMANHA' DO WHILE FOUND( )

gnCount = gnCount + 1? companyCONTINUE

ENDDO

? 'Total de empresas na Alemanha: '+ LTRIM(STR(gnCount))

LOCFILE( ), função

Localiza um arquivo no disco e retorna o nome do arquivo com o seu caminho.

Sintaxe

LOCFILE(cNomeArquivo [, cExtensõesArquivo] [, cLegendaDiálogo])

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 diretório padrão do Visual FoxPro. Caso o arquivo não seja localizado na pasta ou no diretório padrão, 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 localização especificada será pesquisada. Se o arquivo não puder ser encontrado na localização especificada, LOCFILE( ) irá pesquisar a pasta ou o diretório padrão 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.

cExtensõesArquivo Especifica as extensões do arquivo a ser localizado. Se o nome de arquivo especificado com cNomeArquivo não incluir uma extensão, o Visual FoxPro aplicará as extensões de arquivo listadas em cExtensõesArquivo ao nome do arquivo e irá procurar novamente o arquivo.

cExtensõesArquivo também especifica as extensões dos nomes dos arquivos exibidos na caixa de diálogo Abrir, quando não for possível localizar o arquivo especificado.

cExtensõesArquivo pode assumir diversas formas:

· Se cExtensõesArquivo contiver uma única extensão (por exemplo, .PRG), somente os arquivos com essa extensão serão exibidos.· cExtensõesArquivo pode também conter curingas (* e ?). Todos os arquivos com extensões correspondentes aos critérios de caracteres curinga serão exibidos. Por exemplo, se cExtensõesArquivo for ?X?, todos os arquivos com a extensão .FXP, .EXE ou .TXT serão exibidos.· No Visual FoxPro para Windows, cExtensõesArquivo pode conter uma descrição de arquivo seguida por uma extensão de arquivo ou uma lista de extensões separadas por vírgulas. A descrição do arquivo aparece na caixa de listagem Arquivos do tipo. Separa a descrição de arquivo da extensão de arquivo ou lista das extensões de arquivo com dois pontos (:). Separa múltiplas descrições de arquivo e suas extensões com um ponto e vírgula (;).

[Pág.: 245]

Page 246: 74039361 Visual FoxPro Comandos e Funcoes

Por exemplo, se cExtensõesArquivo for “Texto:TXT” a descrição do arquivo “Texto” aparecerá na caixa de listagem Arquivos do tipo e todos os arquivos com uma extensão .TXT serão exibidos.

Se cExtensõesArquivo for “Tabelas:DBF; Arquivos:TXT,BAK” as descrições do arquivo de “Tabelas” e “Arquivos” aparecerão 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 extensão .DBF serão exibidos. Quando “Arquivos” for escolhido a partir da caixa de listagem Arquivos do tipo, todos os arquivos com extensões .TXT e .BAK serão exibidos.

cLegendaDiálogo Especifica o texto que você deseja utilizar para avisar o usuário. O texto é exibido na caixa de diálogo Abrir.

Comentários

A caixa de diálogo Abrir será exibida se não for possível localizar o arquivo na pasta ou no diretório padrão, no caminho do Visual FoxPro ou em uma localização especificada. A caixa de diálogo Abrir pode ser utilizada para localizar o arquivo. Quando um arquivo é selecionado na caixa de diálogo Abrir, o nome do arquivo é retornado com o seu caminho.

Se você sair da caixa de diálogo Abrir selecionando Cancelar, pressionando ESC ou selecionando Fechar no menu Controle, o Visual FoxPro irá gerar uma mensagem de erro e LOCFILE( ) não irá retornar um valor.

LOCK( ), função

Tenta bloquear um ou mais registros em uma tabela.

Sintaxe

LOCK([nÁreaTrabalho | cAliasTabela]| [cListaNúmeroRegistro, nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Lógico

Argumentos

nÁreaTrabalho | cAliasTabela Tenta bloquear o registro atual em uma tabela aberta de uma Área de trabalho específica. nÁreaTrabalho especifica o número da Área de trabalho, enquanto que cAliasTabela especifica o alias da tabela. Se uma Área de trabalho ou um alias de tabela não for especificado, LOCK( ) tentará bloquear o registro atual na tabela da Área de trabalho atual.

cListaNúmeroRegistro Especifica a lista de um ou mais números de registros que se deve incluir para tentar bloquear registros múltiplos. 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 múltiplos.

LOCK( ) tenta bloquear todos os registros especificados. Os números dos registros especificados com cListaNúmeroRegistro são separados por vírgulas. Por exemplo, para tentar bloquear os quatro primeiros registros de uma tabela, cListaNúmeroRegistro deverá conter 1,2,3,4.

Você pode, também, bloquear registros múltiplos, 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 número de registro. Isso permite que se tente bloquear o cabeçalho da tabela.

Importante Mantenha o cabeçalho da tabela bloqueado durante o menor tempo possível pois outros usuários não poderão adicionar registros à tabela enquanto o cabeçalho estiver bloqueado.

Libere o bloqueio do cabeçalho da tabela com UNLOCK RECORD 0, UNLOCK ou UNLOCK ALL.

[Pág.: 246]

Page 247: 74039361 Visual FoxPro Comandos e Funcoes

Se todos os registros especificados em cNúmerosRegistros forem bloqueados com êxito, LOCK( ) retornará verdadeiro (.T.). Mesmo que um registro especificado com cNúmerosRegistros não possa ser bloqueado, LOCK( ) retornará falso (.F.) e nenhum registro será bloqueado. Entretanto, todos os bloqueios de registros existentes permanecerão no seu lugar. O bloqueio de registros múltiplos é um processo aditivo. Os bloqueios de registros adicionais não liberam os bloqueios em outros registros.

O número máximo de registros que podem ser bloqueados em cada Área de trabalho é de aproximadamente 8.000. É sempre mais fácil bloquear toda a tabela do que um número pequeno de registros.

Comentários

LOCK( ) é idêntico a RLOCK( ).

Se o bloqueio ou os bloqueios forem feitos com êxito, LOCK( ) retornará verdadeiro (.T.). Os registros bloqueados estão disponíveis para o usuário que fez os bloqueios para acesso de leitura e gravação; estão disponíveis a todos os outros usuários da rede para acesso somente para leitura.

A execução de LOCK( ) não garante que o bloqueio ou os bloqueios de registros sejam feitos com êxito. Não se pode fazer um bloqueio em um registro já bloqueado por outro usuário ou em uma tabela bloqueada por outro usuário. Se, por algum motivo, não for possível fazer bloqueio ou bloqueios dos registros, LOCK( ) retornará falso (.F.).

Como padrão, 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 número de tentativas de bloqueio ou a duração das tentativas de bloqueio quando a tentativa inicial não for bem sucedida. Para obter maiores informações, consulte SET REPROCESS.

SET MULTILOCKS determina se é possível bloquear os registros múltiplos de uma tabela. Se SET MULTILOCKS estiver desativado (OFF) - o padrão -, você poderá bloquear apenas um único registro em uma tabela. Quando SET MULTILOCKS está ativado (ON), você pode bloquear registros múltiplos em uma tabela. Para obter maiores informações, consulte SET MULTILOCKS.

Desbloqueando registros Um registro da tabela pode ser desbloqueado apenas pelo usuário 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 específica ou em todas as áreas de trabalho. Para obter maiores informações, consulte UNLOCK.

A alternância 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 são liberados.

As tabelas podem ser fechadas com USE, CLEAR ALL ou CLOSE DATABASES.

Para obter maiores informações sobre como bloquear arquivos e registros e compartilhar tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado”, no Guia do Desenvolvedor.

LOCK( ), exemplo da função

O exemplo a seguir bloqueia e desbloqueia os primeiros quatro registros nas tabelas customer e employee.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')SET REPROCESS TO 3 AUTOMATICSTORE '1,2,3,4' TO gcRecListgcOldExc = SET('EXCLUSIVO')SET EXCLUSIVE OFFSELECT 0

[Pág.: 247]

Page 248: 74039361 Visual FoxPro Comandos e Funcoes

USE employee && Abre a tabela EmployeeSELECT 0USE 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 employeeUNLOCK IN customer

UNLOCK IN employeeSET EXCLUSIVE &gcOldExc

LOG( ), função

Retorna o logaritmo natural (base e) da expressão numérica especificada.

Sintaxe

LOG(nExpressão)

Tipos de retorno: Numérico

Argumentos

nExpressão Especifica a expressão numérica para a qual LOG( ) retorna o valor de x na equação e^x = nExpressão. nExpressão deve ser maior que 0.

Comentários

A base do logaritmo natural é a constante e. O número de casas decimais retornado no resultado é especificado como SET DECIMALS.

LOG( ), exemplo da função

CLEAR? LOG(1) && Exibe 0.00STORE EXP(2) TO gneSquare? LOG(gneSquare) && Exibe 2.00

LOG10( ), função

Retorna o logaritmo comum (base 10) da expressão numérica especificada.

Sintaxe

LOG10(nExpressão)

Tipos de retorno: Numérico

Argumentos

nExpressão Especifica a expressão numérica para a qual LOG10( ) retorna o valor de x na equação 10^x = nExpressão. nExpressão deve ser maior que 0.

Comentários

[Pág.: 248]

Page 249: 74039361 Visual FoxPro Comandos e Funcoes

A base do logaritmo comum é 10. O número de casas decimais retornado no resultado é especificado como SET DECIMALS.

LOG10( ), exemplo da função

CLEAR? LOG10(10) && Exibe 1.00STORE 100 TO gnBaseTen? LOG10(gnBaseTen) && Exibe 2.00? LOG10(gnBaseTen^2) && Exibe 4.00

LOOKUP( ), função

Procura em uma tabela o primeiro registro com um campo correspondente à expressão especificada.

Sintaxe

LOOKUP(CampoRetorno, eExpressãoPesquisa, CampoPesquisado [, cNomeMarca])

Tipos de retorno: Caractere, Numérico, Moeda, Flutuante, Número inteiro, Duplo, Data, DataHora ou Lógico

Argumentos

CampoRetorno Especifica o campo cujo conteúdo é retornado por LOOKUP( ) quando a procura é bem sucedida. Se a procura não obtiver êxito, LOOKUP( ) retornará uma seqüência de caracteres vazia, do mesmo tamanho e com mesmo tipo de dados que CampoRetorno.

eExpressãoPesquisa Especifica a expressão de pesquisa. A expressão de pesquisa é, geralmente, composta pelo conteúdo de um campo da tabela ou pode corresponder à expressão do índice ativo ou à marca de índice composto.

CampoPesquisado Especifica o campo a ser pesquisado. Se a tabela não tiver um índice ativo, LOOKUP( ) executará uma pesquisa seqüencial através do campo especificado com CampoPesquisado.

Se um arquivo ou marca de índice, cuja expressão de chave de índice eqüivale ao campo de pesquisa especificado, estiver aberta, LOOKUP( ) utilizará o arquivo ou marca de índice para executar uma pesquisa mais rápida.

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 rápida que LOOKUP( ) pode executar.

Comentários

Se a pesquisa obtiver êxito, LOOKUP( ) moverá o ponteiro do registro para o registro correspondente e retornará o conteúdo de um campo especificado no registro.

Se a expressão de pesquisa não for localizada, LOOKUP( ) retornará uma seqüência 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 serão movidas para os registros relacionados.

Esta função não pode ser otimizada com Rushmore.

LOOKUP( ), exemplo da função

[Pág.: 249]

Page 250: 74039361 Visual FoxPro Comandos e Funcoes

No exemplo a seguir, LOOKUP( ) utiliza a marca de índice company para pesquisar a primeira ocorrência da seqüência “Ernst Handel”. Se a pesquisa obtiver êxito, LOOKUP( ) retornará o conteúdo do campo contact e @ ... SAY exibirá o valor de retorno.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer ORDER company && Abre a tabela CustomerCLEAR@ 2,2 SAY LOOKUP(contact, 'Ernst Handel', company, 'company')

LOWER( ), função

Retorna uma expressão de caracteres especificada em letras minúsculas.

Sintaxe

LOWER(cExpressão)

Tipos de retorno: Caracteres

Argumentos

cExpressão Especifica a expressão de caracteres convertida por LOWER( ).

Comentários

LOWER( ) converte todas as letras maiúsculas (A—Z) na expressão de caracteres para letras minúsculas (a—z). Todos os outros caracteres na expressão de caracteres permanecem inalterados.

LOWER( ), exemplo da função

STORE 'FOX' TO gcNameCLEAR? LOWER(gcName) && Exibe fox

LPARAMETERS, comando

Atribui dados passados de um programa de chamada para matrizes ou variáveis locais.

Sintaxe

LPARAMETERS ListaParâmetros

Argumentos

ListaParâmetros Especifica os nomes de matrizes ou variáveis de memória locais aos quais os dados são atribuídos.

Os parâmetros em ListaParâmetros são separados por vírgulas. A instrução LPARAMETERS deve ter pelo menos o mesmo número de parâmetros que a instrução DO ... WITH. Se mais variáveis ou matrizes forem listadas na instrução PARAMETERS do que passadas por DO ... WITH, as variáveis ou matrizes restantes serão inicializadas com um valor falso (.F.). Podem ser passados no máximo 27 parâmetros.

Você pode utilizar PARAMETERS( ) para determinar o número de parâmetros passados para o programa, função definida pelo usuário ou procedimento executado mais recentemente.

Comentários

[Pág.: 250]

Page 251: 74039361 Visual FoxPro Comandos e Funcoes

LPARAMETERS cria variáveis ou matrizes locais em um programa, função definida pelo usuário ou procedimento chamado. Utilize PARAMETERS para criar matrizes ou variáveis particulares.

LPARAMETERS deverá ser a primeira instrução executável no programa, função definida pelo usuário ou procedimento chamado se você passar valores, variáveis ou matrizes para um deles.

Como padrão, DO ... WITH passa variáveis e matrizes para procedimentos por referência. Quando um valor for alterado no programa chamado, o novo valor será repassado para a variável ou matriz associada no programa de chamada. Se você desejar passar uma variável ou matriz por valor, coloque-a entre parênteses na lista de parâmetros de DO ... WITH. As alterações feitas no parâmetro do programa chamado não são repassadas para o programa de chamada.

Como padrão, as variáveis são passadas por referência para um procedimento e por valor para uma função definida pelo usuário. Utilize SET UDFPARMS TO REFERENCE para passar variáveis para um procedimento ou função definida pelo usuário por referência.

LTRIM( ), função

Retorna a expressão de caracteres especificada sem os espaços à esquerda.

Sintaxe

LTRIM(cExpressão)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres cujos espaços à esquerda são removidos por LTRIM( ).

Comentários

Esta função é especialmente útil para remover os espaços à esquerda inseridos quando STR( ) é utilizado para converter um valor numérico em uma seqüência de caracteres.

LTRIM( ), exemplo da função

STORE 'Redmond' TO gcCitySTORE ' Washington' TO gcStateCLEAR? gcCity, gcState && Exibe Redmond Washington? gcCity, LTRIM(gcState) && Exibe Redmond Washington

LUPDATE( ), função

Retorna a data da última vez em que uma tabela foi atualizada.

Sintaxe

LUPDATE([nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Data

Argumentos

nÁreaTrabalho | cAliasTabela Retorna a última atualização feita em uma tabela aberta em uma outra Área de trabalho. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela especifica o alias de

[Pág.: 251]

Page 252: 74039361 Visual FoxPro Comandos e Funcoes

tabela. LUPDATE( ) retornará a data da última atualização feita na tabela na Área de trabalho atualmente selecionada, caso você omita nÁreaTrabalho 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.

Comentários

Esta função é útil em procedimentos de atualização.

LUPDATE( ), exemplo da função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

CLEAR? LUPDATE( ) && Exibe a data da última atualização

MAX( ), função

Avalia um conjunto de expressões e retorna a expressão com o valor máximo.

Sintaxe

MAX(eExpressão1, eExpressão2 [, eExpressão3...])

Tipos de retorno: Caractere, Numérico, Moeda, Duplo, Flutuante, Data ou Data e Hora

Argumentos

eExpressão1, eExpressão2 [, eExpressão3...] Especifica as expressões a partir das quais você deseja que MAX( ) retorne a expressão com o maior valor. Todas as expressões devem ser do mesmo tipo de dados.

MAX( ), exemplo da função

O exemplo a seguir utiliza APPEND BLANK para criar uma tabela com 10 registros contendo valores aleatórios e, em seguida, utiliza MIN( ) e MAX( ) para exibir os valores máximos e mínimos na tabela.

CLOSE DATABASESCREATE TABLE Random (cValue N(3))FOR nItem = 1 TO 10 && Inclui 10 registros,

APPEND BLANKREPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatórios

ENDFOR

CLEARLIST && Exibe os valoresgnMaximum = 1 && Inicializa o valor mínimognMinimum = 100 && Inicializa o valor máximoSCAN

gnMinimum = MIN(gnMinimum, cValue)gnMaximum = MAX(gnMaximum, cValue)

ENDSCAN? 'O valor mínimo é: ', gnMinimum && Exibe o valor mínimo

? 'O valor máximo é: ', gnMaximum && Exibe o valor máximo

[Pág.: 252]

Page 253: 74039361 Visual FoxPro Comandos e Funcoes

MD | MKDIR, comando

Sintaxe

MD cCaminho | MKDIR cCaminho

Argumentos

cCaminho Especifica um caminho (com um designador de unidade de disco e diretórios) ou um diretório.

Se cCaminho for um diretório sem um designador de unidade de disco, o diretório será criado como um subdiretório do diretório padrão atual do Visual FoxPro.

Comentários

O Visual FoxPro irá gerar uma mensagem de erro se você tentar criar um diretório já existente.

MD | MKDIR, exemplo do comando

O exemplo a seguir utiliza MKDIR para criar um novo diretório denominado mytstdir, em seguida CHDIR é utilizado para alterar ao novo diretório. GETDIR( ) é utilizada para exibir a estrutura do diretório e, em seguida, RMDIR é utilizado para remover o diretório recentemente criado. GETDIR( ) é utilizada para exibir novamente a estrutura do diretório.

SET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxProMKDIR mytstdir && Cria um novo diretórioCHDIR mytstdir && Altera ao novo diretório= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretórioSET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxProRMDIR mytstdir && Remove o novo diretório= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretório

MDX( ), função

Retorna o nome do arquivo de índice composto .CDX aberto que contém o número da posição de índice especificada.

Sintaxe

MDX(nNúmeroÍndice [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Caractere

Argumentos

nNúmeroÍndice Especifica o nome de arquivo de índice composto a ser retornado. Se a tabela possui um arquivo de índice composto estrutural e nNúmeroÍndice é 1, o nome do arquivo de índice composto estrutural (que é sempre igual ao nome da tabela) é retornado. Se nNúmeroÍndice é 2, o nome do primeiro arquivo de índice composto especificado com USE ou SET INDEX é retornado. Se nNúmeroÍndice é 3, o segundo nome do arquivo de índice composto é retornado e assim por diante. Se nNúmeroÍndice é maior do que o número de arquivos de índice composto abertos, uma seqüência vazia é retornada.

Se a tabela não possui um arquivo de índice composto estrutural e nNúmeroÍndice é 1, o nome do primeiro arquivo de índice composto especificado com USE ou SET INDEX é retornado. Se nNúmeroÍndice é 2, o

[Pág.: 253]

Page 254: 74039361 Visual FoxPro Comandos e Funcoes

segundo nome de arquivo de índice composto é retornado e assim por diante. Se nNúmeroÍndice é maior do que o número de arquivos de índice composto abertos, uma seqüência vazia é retornada.

nÁreaTrabalho Especifica o número 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 serão 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 serão retornados para a Área de trabalho atual.

Comentários

MDX( ) é idêntico a CDX( ).

Os arquivos de índice podem ser abertos para uma tabela com a cláusula 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 definição de FULLPATH e sempre retorna o caminho para o arquivo .CDX com o nome de arquivo .CDX.

MDY( ), função

Retorna a expressão de data e hora ou data especificada em formato mês-dia-ano, com o nome do mês escrito por extenso.

Sintaxe

MDY(dExpressão | tExpressão)Tipos de retorno: Caractere

Argumentos

dExpressão Especifica a expressão de data para retornar em formato mês-dia-ano.

tExpressão Especifica a expressão de data e hora para retornar em formato mês-dia-ano.

Comentários

Se SET CENTURY estiver desativado (OFF), a expressão de caractere será retornada em um formato mês, dd, aa. Se SET CENTURY estiver ativado (ON), o formato será mês, dd, aaaa.

MDY( ), exemplo da função

O exemplo a seguir cria uma função definida pelo usuário que retorna uma data com o dia da semana correspondente.

SET CENTURY OFF

CLEAR

[Pág.: 254]

Page 255: 74039361 Visual FoxPro Comandos e Funcoes

? 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 longdatePARAMETERS gdDateRETURN CDOW(gdDate) + ', ' + MDY(gdDate)

MEMORY( ), função

Retorna a quantidade de memória disponível para executar um programa externo.

Sintaxe

MEMORY( )

Tipos de retorno: Numérico

Comentários

No Visual FoxPro, MEMORY( ) sempre retorna 640.

MEMORY( ) é semelhante a SYS(12), com duas exceções:

· MEMORY( ) retorna a quantidade de memória disponível em kilobytes; SYS(12) retorna a quantidade de memória em bytes.· MEMORY( ) retorna uma expressão numérica. SYS(12) retorna seu valor como uma seqüência de caracteres.

MENU( ), função

Retorna o nome da barra de menus ativa como uma seqüência de caracteres maiúsculos.

Sintaxe

MENU( )

Tipos de retorno: Caractere

Comentários

MENU( ) retorna uma seqüência vazia se não houver menu ativo. Utilize o Criador de menus para criar um menu e ativá-lo.

MENU( ), exemplo da função

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 memória com SET SYSMENU SAVE e todos os títulos de menus do sistema são removidos com SET SYSMENU TO.

[Pág.: 255]

Page 256: 74039361 Visual FoxPro Comandos e Funcoes

Vários títulos de menus são criados com DEFINE PAD. Quando você escolhe um título 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 título 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.***CLEARSET SYSMENU SAVESET 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 choicePARAMETER gcPad, gcMenuWAIT WINDOW 'You chose ' + gcPad + ;

' from menu ' + gcMenu NOWAITIF gcPad = 'PADEXIT'

SET SYSMENU TO DEFAULTENDIF

MESSAGE( ), função

Retorna a mensagem de erro atual como uma seqüência de caracteres ou o conteúdo da linha do programa que causou o erro.

Sintaxe

MESSAGE([1])

Tipos de retorno: Caractere

Argumentos

1 Se MESSAGE( ) for utilizado em uma rotina ON ERROR, inclua este argumento para retornar o código de origem do programa que causou o erro. Se o código de origem do programa não estiver disponível, MESSAGE(1) retornará um dos seguintes itens:

· do programa se a linha for substituída por macro.· Um comando se a linha contiver um comando sem cláusulas adicionais.· Um comando seguido de três pontos (...) se a linha contiver um comando e cláusulas adicionais.

Comentários

Ao contrário de ERROR( ), MESSAGE( ) não é redefinido por RETURN ou RETRY.

MESSAGE( ), exemplo da função

O exemplo a seguir exibe saídas de MESSAGE( ) e MESSAGE(1).

[Pág.: 256]

Page 257: 74039361 Visual FoxPro Comandos e Funcoes

ON ERROR DO Errhand

*** The next line should generate an error ***

USE NodatabaseON ERROR && restaura o gerenciador de erros do sistemaPROCEDURE Errhand? 'Line of code with error: ' + MESSAGE(1) ? 'Error number: ' + STR(ERROR( ))? 'Error message: ' + MESSAGE( )

MIN( ), função

Avalia um conjunto de expressões e retorna a expressão de menor valor.

Sintaxe

MIN(eExpressão1, eExpressão2 [, eExpressão3 ...])

Tipos de retorno: Caractere, Numérico, Moeda, Duplo, Flutuante, Data ou DataHora

Argumentos

eExpressão1, eExpressão2 [, eExpressão3 ...] Especifica o conjunto de expressões de onde você quer que MIN( ) retorne a expressão de menor valor. Todas as expressões devem ser do mesmo tipo.

MIN( ), exemplo da função

O exemplo a seguir utiliza APPEND BLANK para criar uma tabela com 10 registros que contenham valores aleatórios e, em seguida, utiliza MIN( ) e MAX( ) para exibir os valores máximo e mínimo na tabela.

CLOSE DATABASESCREATE TABLE Random (cValue N(3))FOR nItem = 1 TO 10 && Inclui 10 registros,

APPEND BLANKREPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatórios

ENDFOR

CLEARLIST && Exibe os valores gnMaximum = 1 && Inicializa valor mínimognMinimum = 100 && Inicializa valor máximoSCAN

gnMinimum = MIN(gnMinimum, cValue)gnMaximum = MAX(gnMaximum, cValue)

ENDSCAN? 'The minimum value is: ', gnMinimum && Exibe valor mínimo

? 'The maximum value is: ', gnMaximum && Exibe valor máximo

MINUTE( ), função

Retorna a parte dos minutos de uma expressão DataHora.

Sintaxe

MINUTE(tExpressão)

[Pág.: 257]

Page 258: 74039361 Visual FoxPro Comandos e Funcoes

Tipos de Retorno: Numérico

Argumentos

tExpressão Especifica a expressão DataHora da qual a parte dos minutos será retornada.

MINUTE( ), exemplo da função

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( ), função

Retorna uma determinada linha de um campo memo como uma seqüência de caracteres.

Sintaxe

MLINE(NomeCampoMemo, nNúmeroLinha [, nNúmeroDeCaracteres])

Tipos de retorno: Caractere

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 não é a atual, coloque um ponto e o alias da tabela antes do nome do campo memo.

nNúmeroLinha Especifica o número da linha a ser retornada do campo memo. Uma seqüência vazia será retornada se nNúmeroLinha for negativo, igual a 0 ou maior do que o número de linhas existentes no campo memo..

nNúmeroDeCaracteres Especifica o número de caracteres desde o início do campo memo depois dos quais MLINE( ) retorna a linha especificada.

A variável de memória do sistema _MLINE é normalmente utilizada para nNúmeroDeCaracteres. _MLINE é automaticamente ajustado toda vez que MLINE( ) é chamado.

Em procedimentos recorrentes que retornam linhas de campos memo grandes, é possível obter um melhor desempenho incluindo-se _MLINE como nNúmeroDeCaracteres.

Comentários

MLINE( ) remove qualquer espaço subseqüente da linha especificada com nNúmeroLinha.

O tamanho e o número das linhas no campo memo são determinados pelo valor atual de SET MEMOWIDTH (o tamanho de linha padrão é de 50 caracteres). Nenhum caractere adicional será retornado se for encontrado um retorno de carro. A definição _WRAP atual determina como a linha do campo memo será exibida.

Ao procurar uma seqüência de caracteres em um campo memo, você pode utilizar ATLINE( ) ou ATCLINE( ) para retornar o número da linha em que a seqüência de caracteres se encontra. Utilize esse número de linha em MLINE( ) para retornar o conteúdo da linha do campo memo.

MLINE( ), exemplo da função

[Pág.: 258]

Page 259: 74039361 Visual FoxPro Comandos e Funcoes

No exemplo a seguir, são utilizados dois métodos 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 variável do sistema _MLINE é utilizada em MLINE( ).

CLEARSET TALK OFFSET MEMOWIDTH TO 50CLOSE DATABASESCREATE TABLE tmemo (name c(10), notes m)APPEND BLANK && Adiciona um registroWAIT 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 HREPLACE notes WITH REPLICATE(CHR(gnAlphabet), 10) ;

+ CHR(13) ADDITIVENEXT

NEXT

*** Display all lines from the memo field ***STORE MEMLINES(notes) TO gnNumLines && Número de linhas em campo memoSTORE SECONDS( ) TO gnBegin && Hora inicialFOR gnCount = 1 TO gnNumLines && Loop para número de linhas em campos memo

? MLINE(notes, gnCount) && Exibe cada linhaNEXT? 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

CLEARSTORE 0 TO _MLINE && Redefine _MLINE como zeroSTORE SECONDS( ) TO gnBegin && Hora inicialFOR count = 1 TO gnNumLines && Loop para número de linhas em campo memo

? MLINE(notes, 1, _MLINE) && Exibe cada linhaNEXT? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds' && Tempo totalSET TALK ONCLOSE DATABASESERASE tmemo.dbfERASE tmemo.fpt

MOD( ), função

Divide uma expressão numérica por outra expressão numérica e retorna o restante.

Sintaxe

MOD(nDividendo, nDivisor)

Tipos de retorno: Numérico

Argumentos

nDividendo Especifica o dividendo. O número de casas decimais em nDividendo determina o número de casas decimais no valor de retorno.

nDivisor Especifica o divisor. Um número positivo será retornado se nDivisor for positivo e um número negativo será retornado se nDivisor for negativo.

[Pág.: 259]

Page 260: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

A função de módulo MOD( ) e o operador % retornam resultados idênticos.

MOD( ), exemplo da função

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, ' Olimpíadas de Verão este ano';

, 'Não há Olimpíadas de Verão este ano')

MODIFY COMMAND, comando

Abre uma janela de edição 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 nPáginaCódigo][SAME][SAVE]

Argumentos

NomeArquivo Especifica o nome de arquivo do programa a ser aberto ou criado. Se você não especificar uma extensão para um novo arquivo de programa, o Visual FoxPro atribuirá automaticamente uma extensão .PRG. MODIFY COMMAND suporta um estrutura de arquivo que contém os curingas asterisco (*) e ponto de interrogação (?). Uma janela de edição é 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 edição para um arquivo inicialmente denominado PROG1.PRG. Quando fechar a janela de edição, você poderá salvar o arquivo com um nome diferente.

? Exibe a caixa de diálogo Abrir. Selecione um dos programas existentes ou digite o nome de um novo programa a ser criado.

NOEDIT Especifica que o arquivo de programa não pode ser alterado, mas pode ser visualizado e copiado para a Área de transferência.

NOMENU Remove o título do menu Formatar da barra de menu do sistema do Visual FoxPro, impedindo alterações de fonte, tamanho de fonte, espaço entre linhas e recuo.

NOWAIT Continua a execução do programa após ser aberta a janela de edição. O programa não aguarda o fechamento da janela de edição, mas continua a execução na linha do programa imediatamente seguinte à linha que contém MODIFY COMMAND NOWAIT. Se você omitir NOWAIT quando MODIFY COMMAND for utilizado em um programa, uma janela de edição será aberta e a execução do programa será colocada em pausa até o fechamento desta janela.

[Pág.: 260]

Page 261: 74039361 Visual FoxPro Comandos e Funcoes

NOWAIT só tem efeito dentro de um programa. Ele não tem qualquer efeito em MODIFY COMMAND quando emitido na janela Comando.

Um NOWAIT implícito ocorrerá se você abrir mais de uma janela de edição com um único comando MODIFY COMMAND. Por exemplo:

MODIFY COMMAND *.PRG.

RANGE nCaractereInicial, nCaractereFinal Especifica um intervalo de caracteres selecionados quando a janela de edição é aberta. Os caracteres são selecionados a partir da posição especificada com nCaractereInicial até (mas não inclusive) a posição do nCaractereFinal. Se nCaractereInicial for igual a nCaractereFinal, nenhum caractere será selecionado e o cursor será colocado na posição especificada com nCaractereInicial.

WINDOW NomeJanela1 Especifica uma janela cujas características são assumidas pela janela de edição. Por exemplo, se a janela for criada com a opção FLOAT de DEFINE WINDOW, a janela de edição poderá ser movida. A janela não precisa estar ativa ou visível, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edição é aberta. A janela de edição não assume as características da janela pai e não pode ser movida para fora da janela pai. Se você mover a janela pai, moverá a janela de edição junto com ela.

A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW e deve estar visível para o acesso à janela de edição.

IN SCREEN Abre explicitamente a janela de edição na janela principal do Visual FoxPro, após ser colocada na janela pai. Uma janela de edição é colocada em uma janela pai ao incluir a cláusula IN WINDOW.

AS nPáginaCódigo Converte automaticamente caracteres acentuados em um arquivo de programa criado em uma outra plataforma do Visual FoxPro. A expressão numérica nPáginaCódigo especifica a página de código da plataforma do Visual FoxPro em que o arquivo de programa foi criado. O arquivo será salvo nesta página de código a menos que você selecione Salvar como no menu Arquivo para salvar o arquivo em uma página de código diferente.

SAME Impede que a janela de edição seja trazida para a frente como a janela ativa. Caso esteja oculta, ela será exibida, mas não se tornará a janela ativa.

SAVE Deixa a janela de edição aberta depois que uma outra janela é ativada. Se você omitir SAVE, a janela de edição será fechada quando uma outra janela for ativada. A inclusão de SAVE não tem qualquer efeito quando emitido da janela Comando.

Comentários

Quando você faz modificações em um arquivo de programa, o arquivo atualizado é gravado no disco. No Visual FoxPro, um arquivo backup com a extensão .BAK será criado se você selecionar a caixa de verificação Criar cópia de backup na guia Editar da caixa de diálogo Opções, que aparece quando você seleciona Opções no menu Ferramentas.

O editor interno do Visual FoxPro será utilizado, a menos que você especifique um editor externo com TEDIT no arquivo de configuração.

MODIFY DATABASE, comando

Abre o Criador de bancos de dados, possibilitando a modificação interativa do banco de dados atual.

Sintaxe

[Pág.: 261]

Page 262: 74039361 Visual FoxPro Comandos e Funcoes

MODIFY DATABASE [NomeBancoDados | ?][NOWAIT] [NOEDIT]

Argumentos

NomeBancoDados Especifica o nome do banco de dados a ser modificado.

? Exibe a caixa de diálogo Abrir, onde você pode especificar o nome do banco de dados a ser modificado.

NOWAIT Continua a execução do programa após a abertura do Criador de bancos de dados. O programa não aguarda o fechamento do Criador de bancos de dados, mas continua a execução na linha do programa imediatamente seguinte à linha que contém 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 execução do programa será colocada em pausa até o seu fechamento.

NOWAIT só tem efeito quando emitido dentro de um programa. Ele não tem qualquer efeito em MODIFY CLASS quando emitido na janela Comando.

NOEDIT Evita alterações no banco de dados.

Comentários

Para obter maiores informações sobre como modificar de forma interativa um banco de dados com o Criador de bancos de dados, consulte os tópicos Criador de bancos de dados e Barra de ferramentas criador de bancos de dados e o capítulo 3, “Reunindo tabelas em um banco de dados”, no Guia do Usuário.

MODIFY DATABASE, exemplo do comando

O seguinte exemplo exibe o Criador de bancos de dados com as tabelas no banco de dados testdata.

CLOSE DATABASESSET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dadosMODIFY DATABASE testdata && Abre o banco de dados testdata

MODIFY FILE, comando

Abre uma janela de edição 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 nPáginaCódigo][SAME][SAVE]

Argumentos

NomeArquivo Especifica o nome do arquivo de texto. Se você não especificar uma extensão junto com o nome do novo arquivo texto, o Visual FoxPro automaticamente atribuirá uma extensão .TXT. MODIFY FILE suporta uma estrutura de arquivo que pode conter os curingas asterisco (*) e ponto de interrogação (?). Uma janela de edição é aberta para cada arquivo de texto cujo nome corresponda à estrutura de arquivo.

[Pág.: 262]

Page 263: 74039361 Visual FoxPro Comandos e Funcoes

Se você omitir o nome de arquivo, será aberta uma janela de edição para um arquivo inicialmente denominado FILE1. Quando fechar a janela de edição, você poderá salvar o arquivo com um nome diferente.

? Exibe a caixa de diálogo Abrir na qual você pode selecionar um arquivo de texto.

NOEDIT Especifica que o arquivo de texto não pode ser alterado, mas pode ser visualizado e copiado para a Área de transferência.

NOMENU Remove o título do menu Formatar da barra de menu do sistema do Visual FoxPro, impedindo alterações de fonte, tamanho de fonte, espaço entre linhas e recuo.

NOWAIT Continua a execução do programa após a abertura da janela de edição. O programa não aguarda o fechamento da janela de edição, mas continua a execução na linha do programa imediatamente seguinte à linha que contém MODIFY FILE NOWAIT. Se você omitir NOWAIT , quando emitir MODIFY FILE em um programa, a janela de edição será aberta e a execução do programa será colocada em pausa até o seu fechamento.

NOWAIT só tem efeito dentro de um programa. Ele não tem qualquer efeito em MODIFY FILE quando emitido na janela Comando.

Um NOWAIT implícito ocorrerá se você abrir mais de uma janela de edição 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 edição. Os caracteres são selecionados a partir da posição especificada com nCaractereInicial até (mas não inclusive) a posição do nCaractereFinal. Se nCaractereInicial for igual a nCaractereFinal, não será selecionado nenhum caractere e o cursor será colocado na posição especificada com nCaractereInicial.

WINDOW NomeJanela1 Especifica uma janela cujas características são assumidas pela janela de edição. Por exemplo, se a janela for criada com a opção FLOAT de DEFINE WINDOW, a janela de edição poderá ser movida. A janela não precisa estar ativa ou visível, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edição é aberta. A janela de edição não assume as características da janela pai e não é possível movê-la para fora dela. Se você mover a janela pai, moverá a janela de edição junto com ela.

A janela pai deve, em primeiro lugar, ser definida com DEFINE WINDOW e deve estar visível para o acesso à janela de edição.

IN SCREEN Abre explicitamente a janela de edição na janela principal do Visual FoxPro, após ser colocada na janela pai. Uma janela de edição é colocada em uma janela pai ao incluir a cláusula IN WINDOW.

AS nPáginaCódigo Converte automaticamente caracteres acentuados em um arquivo de texto criado em uma outra plataforma do Visual FoxPro. A expressão numérica nPáginaCódigo especifica a página de código da plataforma do Visual FoxPro em que o arquivo de texto foi criado. O arquivo será salvo nesta página de código a menos que você selecione Salvar como no menu Arquivo para salvar o arquivo em uma página de código diferente.

SAME Impede que a janela de edição seja adiantada como a janela ativa. Caso esteja oculta, ela será exibida, mas não se tornará a janela ativa.

SAVE Deixa a janela de edição aberta depois que uma outra janela é ativada. Se você omitir SAVE, a janela de edição será fechada quando uma outra janela for ativada. A inclusão de SAVE não tem qualquer efeito quando emitido na janela Comando.

[Pág.: 263]

Page 264: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

Quando são feitas modificações em um arquivo de texto, o arquivo atualizado é gravado no disco. No Visual FoxPro, um arquivo backup com a extensão .BAK será criado se você selecionar a caixa de verificação Criar cópia de backup na guia Editar da caixa de diálogo Opções, que aparecem quando você seleciona Opções no menu Ferramentas. Nas versões anteriores do FoxPro, um arquivo backup com a extensão .BAK será criado se você selecionar a caixa de verificação Backup na caixa de diálogo Preferências, que aparece ao selecionar Preferências no menu Editar.

O editor do Visual FoxPro será utilizado, a menos que você especifique um editor externo com TEDIT no arquivo de configuração.

MODIFY GENERAL, comando

Abre janelas de edição 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 edição para um campo Geral de uma tabela aberta em uma Área de trabalho, que não seja a atual, inclua o alias de tabela com o nome do campo. Para abrir vários campos gerais no registro atual, inclua uma lista de campos gerais separados por vírgulas.

NOMODIFY Especifica que o objeto de OLE contido no campo Geral não pode ser alterado, mas pode ser visualizado e copiado para a Área de transferência.

NOWAIT Continua a execução do programa após a abertura da janela de edição de campo Geral. O programa não aguarda o fechamento desta janela, mas continua a execução na linha do programa imediatamente seguinte à linha que contém MODIFY GENERAL NOWAIT. Se você omitir NOWAIT, quando emitir MODIFY GENERAL em um programa, será aberta uma janela de edição e a execução do programa será colocada em pausa até o fechamento desta janela.NOWAIT só tem efeito quando emitido dentro de um programa. Ele não tem qualquer efeito em MODIFY GENERAL quando emitido na janela Comando.

WINDOW NomeJanela1 Especifica uma janela cujas características são assumidas pela janela de edição de campo Geral. Por exemplo, se a janela for criada com a opção FLOAT de DEFINE WINDOW, a janela de edição de campo Geral poderá ser movida. A janela não precisa estar ativa ou visível, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai na qual a janela de edição de campo Geral é aberta. A janela de campo Geral não assume as características da janela pai e não é possível movê-la para fora desta janela. Se você mover a janela pai, moverá a janela de campo Geral também.

A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW e deve estar visível para o acesso à janela de campo Geral.

IN SCREEN Abre explicitamente a janela de campo Geral na janela principal do Visual FoxPro, após ser colocada na janela pai. Uma janela de campo Geral é colocada em uma janela pai ao incluir a cláusula IN WINDOW.

[Pág.: 264]

Page 265: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

Quando uma janela de edição está aberta, você pode inserir, modificar ou excluir um objeto de OLE.

Para obter maiores informações sobre objetos de OLE no Visual FoxPro, consulte “Adicionando objetos de OLE a tabelas” no capítulo 16, “Adicionando a OLE,” no Guia do Desenvolvedor.

MODIFY MEMO, comando

Abre uma janela de edição 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 serão editados. Para abrir uma janela de edição 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 não pode ser alterado, mas pode ser visualizado e copiado para a Área de transferência.

NOMENU Remove o título do menu Formatar da barra de menu do sistema do Visual FoxPro, impedindo alterações de fonte, tamanho de fonte, espaço entre linhas e recuo.

NOWAIT Continua a execução do programa após a abertura da janela de edição. O programa não aguarda o fechamento da janela de edição, mas continua a execução na linha do programa imediatamente seguinte à linha que contém MODIFY MEMO NOWAIT. Se você omitir NOWAIT, quando emitir MODIFY MEMO em um programa, uma janela de edição será aberta e a execução do programa será colocada em pausa até o seu fechamento.NOWAIT só tem efeito dentro de um programa. Ele não tem qualquer efeito em MODIFY MEMO quando emitido na janela Comando.

RANGE nCaractereInicial, nCaractereFinal Especifica um intervalo de caracteres selecionados quando a janela de edição é aberta. Os caracteres são selecionados a partir da posição especificada com nCaractereInicial até (mas não inclusive) a posição do nCaractereFinal. Se nCaractereInicial for igual a nCaractereFinal, não será selecionado nenhum caractere e o cursor será colocado na posição especificada com nCaractereInicial.

WINDOW NomeJanela1 Especifica uma janela cujas características a janela de edição assume. Por exemplo, se a janela for criada com a opção FLOAT de DEFINE WINDOW, a janela de edição poderá ser movida. A janela não precisa estar ativa ou visível, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edição é aberta. A janela de edição não assume as características da janela pai e não é possível movê-la para fora desta janela. Se você mover a janela pai, moverá a janela de edição também.

A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW, e deve estar visível para o acesso da janela de edição.

[Pág.: 265]

Page 266: 74039361 Visual FoxPro Comandos e Funcoes

IN SCREEN Abre explicitamente a janela de edição na janela principal do Visual FoxPro, após ser colocada na janela pai. Uma janela de edição é colocada em uma janela pai ao incluir a cláusula IN WINDOW.

SAME Impede que a janela de edição seja adiantada como a janela ativa. Caso esteja oculta, ela será exibida, mas não se tornará a janela ativa.

SAVE Deixa a janela de edição aberta após uma outra janela ser ativada. Se você omitir SAVE, a janela de edição será fechada quando uma outra janela for ativada. A inclusão de SAVE não tem qualquer efeito quando emitido na janela Comando.

Comentários

É possível visualizar ou alterar o conteúdo do campo Memo na janela de edição.

Em uma tabela aberta para acesso compartilhado em uma rede, o registro atual é bloqueado automaticamente quando a edição começa 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 edição com um intervalo realçado.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE employee && Abre a tabela EmployeeMODIFY MEMO notes NOEDIT RANGE 1,10 && Os primeiros 10 caracteres selecionadosUSE

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 extensão para o nome de arquivo não seja especificada, o Visual FoxPro atribui automaticamente uma extensão .MNX.

? Exibe a caixa de diálogo 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 características o Criador de menus assume. Por exemplo, se a janela for criada com a opção FLOAT de DEFINE WINDOW, o Criador de menus poderá ser movido. A janela não precisa estar ativa ou visível, mas deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que o Criador de menus é aberto. O Criador de menus não assume as características da janela pai e não é possível 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 visível para o acesso ao Criador de menus.

[Pág.: 266]

Page 267: 74039361 Visual FoxPro Comandos e Funcoes

IN SCREEN Abre explicitamente o Criador de menus na janela principal do Visual FoxPro, após ser colocado em uma janela pai. O Criador de menus é colocado em uma janela pai ao incluir a cláusula IN WINDOW.

NOWAIT Continua a execução do programa após a abertura do Criador de menus. O programa não aguarda o fechamento do Criador de menus, mas continua a execução na linha do programa imediatamente a seguir da linha que contém MODIFY MENU NOWAIT. Se você omitir NOWAIT quando emitir MODIFY MENU em um programa, o Criador de menus será aberto e a execução do programa será colocada em pausa até o seu fechamento.

NOWAIT somente tem efeito quando emitido dentro de um programa. Ele não 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 diálogo Novo menu não será exibido. O diálogo Novo menu permite que você especifique o tipo de menu (padrão 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 inclusão de SAVE não tem nenhum efeito quando emitido na janela Comando.

Comentários

Para obter maiores informações sobre a criação de menus, consulte “Criando um sistema de menus”, no capítulo 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

Comentários

Em versões anteriores do FoxPro, MODIFY STRUCTURE abre a caixa de diálogo Estrutura da tabela.

Caso uma tabela não esteja aberta atualmente na Área de trabalho selecionada, será exibida a caixa de diálogo Abrir que permite selecionar uma tabela a ser modificada.As alterações 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 também modificar a estrutura de uma tabela utilizando a interface. Para obter maiores informações, consulte “Modificando tabelas” no capítulo 2, “Criando tabelas e índices”, no Guia do Usuário.

Cuidado Se você alterar o tipo de dado de um campo para outro tipo de dado, o conteúdo do campo poderá não ser transferido corretamente, ou poderá nem mesmo ser transferido. Por exemplo, se você converter um campo de data para um tipo numérico, o conteúdo do campo não será transferido.

O Visual FoxPro faz automaticamente uma cópia de backup da tabela atual antes de você alterar a estrutura da tabela. Depois de concluídas as modificações, os dados contidos na cópia de backup da tabela são incluídos na estrutura da tabela recém-modificada. Se a tabela tiver um campo Memo, também será criado um arquivo de backup de memo. O arquivo de backup da tabela tem a extensão .BAK e o arquivo de backup de memo tem a extensão .TBK.

Se você aceitar as alterações feitas na estrutura e, em seguida, interromper o processo de cópia dos dados, o novo arquivo não conterá todos os registros da tabela original.

[Pág.: 267]

Page 268: 74039361 Visual FoxPro Comandos e Funcoes

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 cópia .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 extensões 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 definição 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 usuário 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 cTextoTítulo][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 nNúmeroEsquema| COLOR ListaParesCores]

Argumentos

NomeJanela Especifica a janela definida pelo usuário a ser modificada. Primeiro é necessário criar a janela especificada com DEFINE WINDOW.

SCREEN Especifica a janela principal do Visual FoxPro como a janela a ser modificada. Não abrevie SCREEN, caso contrário, o Visual FoxPro gerará uma mensagem de erro. Para retornar a janela principal do Visual FoxPro à sua configuração de inicialização, emita o comando abaixo sem nenhuma cláusula 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 informações sobre as cláusulas MODIFY WINDOW, consulte DEFINE WINDOW.

Comentários

MODIFY WINDOW altera os atributos de uma janela existente definida pelo usuário (uma janela criada com DEFINE WINDOW) ou a janela principal do Visual FoxPro. MODIFY WINDOW não 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 localização, a fonte padrão, o título, a borda, os controles, o ícone, o papel de parede e a cor de uma janela definida pelo usuário ou da janela principal do Visual FoxPro. Você pode alterar qualquer um desses atributos ao incluir as cláusulas opcionais para o comando MODIFY WINDOW. (Observe que se alterar as cores, você deve utilizar CLEAR para aplicar as alterações.)

[Pág.: 268]

Page 269: 74039361 Visual FoxPro Comandos e Funcoes

Por exemplo, inclua as cláusulas FROM e TO ou AT e SIZE para especificar uma nova localização ou um novo tamanho para uma janela definida pelo usuário ou para a janela principal do Visual FoxPro. Para evitar que uma janela definida pelo usuário ou a janela principal do Visual FoxPro sejam movidas, inclua a palavra-chave NOFLOAT.

MODIFY WINDOW, exemplo do comando

O exemplo a seguir altera o conteúdo da barra de título da janela principal do Visual FoxPro.

MODIFY WINDOW SCREEN TITLE 'Meu aplicativo'

MONTH( ), função

Retorna o número do mês de uma expressão de Data ou de DataHora especificada.

Sintaxe

MONTH(dExpressão | tExpressão)

Tipos de retorno: Numérico

Argumentos

dExpressão Especifica a expressão de Data para a qual você deseja que MONTH( ) retorne o número do mês.

tExpressão Especifica a expressão de DataHora para a qual você deseja que MONTH( ) retorne o número do mês.

Comentários

MONTH( ) retorna um número de 1 a 12. Janeiro é o mês 1 e dezembro é o mês 12.

MONTH( ), exemplo da função

CLEAR? DATE( ) && Exibe a data atual? MONTH(DATE( )) && Exibe o número do mêsSTORE {05/03/95} TO gdBuySTORE MONTH(gdBuy + 31) TO gdMonth? gdMonth

MOVE POPUP, comando

Move um menu definido pelo usuário criado com DEFINE POPUP para uma nova localização.

Sintaxe

MOVE POPUP NomeMenu TO nLinha1, nColuna1 | BY nLinha2, nColuna2

Argumentos

NomeMenu Especifica o menu a ser movido.

No Visual FoxPro, não é possível mover o menu do sistema.

TO nLinha1, nColuna1 Move o menu para uma localização especificada por nLinha1, nColuna1, em uma janela definida pelo usuário ou na janela principal do Visual FoxPro.

BY nLInha2, nColuna2 Move o menu para uma localização relativa à sua posição atual. nLinha2 especifica o número de linhas que o menu deve ser movido (para baixo se nLinha2 for positiva, para cima se for

[Pág.: 269]

Page 270: 74039361 Visual FoxPro Comandos e Funcoes

negativa). A expressão numérica nColuna2 especifica o número de colunas que o menu deve ser movido (para a direita se nColuna2 for positiva, para a esquerda se for negativa).

Comentários

É possível mover um menu para uma posição específica ou para uma posição relativa à sua posição atual. Se estiver definido, o menu poderá ser movido; não é necessário que ele esteja ativo ou visível.

MOVE POPUP, exemplo do comando

· próximo exemplo define e ativa um menu e, em seguida, move e altera seu tamanho.

CLOSE DATABASECLEARDEFINE 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 usuário criada com DEFINE WINDOW ou uma janela do sistema do Visual FoxPro (como a janela Comando ou a janela Pesquisar) para uma nova localização.

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 localização, especificada por nLinha1, nColuna1, na janela principal do Visual FoxPro ou em uma janela definida pelo usuário.

BY nLinha2, nColuna2 Move a janela para uma localização relativa à sua posição atual. A expressão numérica nLinha2 especifica o número de linhas que a janela deve ser movida (para baixo se nLinha2 for positiva, para cima se for negativa). A expressão numérica coluna nColuna2 especifica o número 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.

Comentários

É possível mover uma janela para uma posição específica ou para uma posição relativa à sua posição atual. Se estiver definida, a janela poderá ser movida; não é necessário que ela esteja ativa ou visível.

[Pág.: 270]

Page 271: 74039361 Visual FoxPro Comandos e Funcoes

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 relatório (quando não está ancorada) no Visual FoxPro, emita o comando a seguir:

MOVE WINDOW "Controles de relatório" BY 1,1

MOVE WINDOW, exemplo do comando

No exemplo a seguir, após a definição e ativação 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,15WAIT WINDOW 'Pressione qualquer tecla para centralizar a janela'MOVE WINDOW wEnter CENTERWAIT WINDOW 'Pressione qualquer tecla para liberar a janela'RELEASE WINDOW wEnter

MTON( ), função

Retorna um valor Numérico de uma expressão de Moeda.

Sintaxe

MTON(mExpressão)

Tipos de retorno: Numérico

Argumentos

mExpressão Especifica uma expressão de Moeda cujo valor é retornado por MTON( ). mExpressão deve resultar em um valor Moeda válido; caso contrário, o Visual FoxPro gera um erro.

Os valores do tipo Moeda são criados colocando-se um cifrão ($) imediatamente antes de um valor Numérico.

Comentários

MTON( ) retorna um valor Numérico com quatro casas decimais.MTON( ), exemplo da função

O exemplo abaixo cria uma variável de tipo Moeda denominada gyMoney. TYPE( ) exibe Y, indicando que a variável é de tipo Moeda. MTON( ) é utilizada para converter a variável a um tipo Numérico e TYPE( ) agora exibe N, indicando que a variável é de tipo Numérico após a conversão.

STORE $24.95 TO gyMoney && Cria uma variável de memória tipo MoedaCLEAR? "gyMoney é do tipo: " ?? TYPE('gyMoney') && Exibe Y, valor de tipo Moeda

gyMoney = MTON(gyMoney) && Converte gyMoney para um valor Numérico? "gyMoney é agora do tipo: " ?? TYPE('gyMoney') && Exibe N, valor de tipo Numérico

[Pág.: 271]

Page 272: 74039361 Visual FoxPro Comandos e Funcoes

NDX, função ( )

Retorna o nome de um arquivo de índice aberto (.IDX) para a tabela atual ou especificada.

Sintaxe

NDX(nNúmeroÍndice [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Caractere

Argumentos

nNúmeroÍndice 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 nNúmeroÍndice for igual a 1, NDX( ) retornará o nome do primeiro arquivo .IDX na lista de arquivos de índice, se nNúmeroÍndice 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 seqüência vazia se nNúmeroÍndice for maior do que o número de arquivos .IDX na lista de arquivos de índice.

nÁreaTrabalho Especifica o número da Área de trabalho para arquivos .IDX abertos em uma Área de trabalho diferente da atual. NDX( ) retornará uma seqüência vazia se nenhuma tabela estiver aberta na Área de trabalho especificada. Se você omitir nÁreaTrabalho, 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.

Comentários

As funções 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( ), função

Converte uma expressão de caracteres, fornecida por um usuário, de uma forma que pode ser comparada com os valores de retorno de função do Visual FoxPro.

Sintaxe

NORMALIZE(cExpressão)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres a ser normalizada.

Comentários

[Pág.: 272]

Page 273: 74039361 Visual FoxPro Comandos e Funcoes

NORMALIZE( ) retorna uma seqüência de caracteres a partir da expressão de caracteres cExpressão com as seguintes alterações::

· A expressão de caracteres é convertida em maiúsculas. Contudo, as seqüências embutidas não são alteradas. Um exemplo de uma seqüência embutida é "Alô" na expressão de caracteres "LEFT('Alô',1)".· As palavras-chave abreviadas do Visual FoxPro na expressão de caracteres são expandidas, ficando escritas por extenso.· Os operadores -> separando aliases de nomes de campos são convertidos em pontos.· A sintaxe de qualquer comando ou função do Visual FoxPro dentro da expressão de caracteres é verificada, embora a expressão não seja avaliada. Se a sintaxe não estiver correta, o Visual FoxPro irá gerar um erro de sintaxe. NORMALIZE( ) não verifica a existência de campos, tabelas, variáveis de memória, funções definidas pelo usuário ou outras referências na expressão de caracteres.

Por exemplo, um usuário pode digitar no Construtor de expressões uma expressão de índice igual à seguinte:

UPPE(cust->lname) + UPPE(cust->fname)

Embora seja uma expressão de chave de índice válida do Visual FoxPro, é difícil compará-la com os valores de retorno de uma função do Visual FoxPro como KEY( ).NORMALIZE( ) retorna a seguinte seqüência de caracteres para a expressão acima:

UPPER(CUST.LNAME) + UPPER(CUST.FNAME)

Ela pode ser facilmente comparada com o valor retornado por uma função como KEY( ), permitindo que você, neste exemplo, determine se já existe um índice ou marca de índice com a expressão de índice fornecida pelo usuário.

NOTE, comando

Indica o início de uma linha de comentário não executável em um arquivo de programa.

Sintaxe

NOTE [Comentários]

Argumentos

Comentário Especifica o comentário.

Comentários

Coloque um ponto-e-vírgula (;) no final de cada linha de comentário que continua na linha seguinte.

NOTE, exemplo do comando

NOTE Inicializa o número de página;variable.

STORE 1 to gnPageNum* Inicializa o LoopDO WHILE gnPageNum <= 25 && loop 25 vezes

gnPageNum = gnPageNum + 1ENDDO && DO WHILE gnPageNum <= 25

NTOM( ), função

Retorna um valor Moeda com quatro casas decimais a partir de uma expressão numérica.

[Pág.: 273]

Page 274: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

NTOM(nExpressão)

Tipos de retorno: Moeda

Argumentos

nExpressão Especifica uma expressão numérica cujo valor Moeda é retornado por NTOM( ). Se nExpressão tiver mais de quatro casas decimais, ele será arredondado para quatro casas decimais. Se nExpressão tiver menos de 4 casas decimais, será preenchido com zeros até que sejam criadas quatro casas decimais.

NTOM( ), exemplo da função

O exemplo que se segue cria uma variável de tipo numérico denominada gnNumeric. TYPE( ) exibe N, indicando que a variável é um tipo numérico. NTOM( ) é utilizado para converter a variável em um tipo de moeda e TYPE( ) agora exibe Y, indicando que a variável é um tipo de moeda após a conversão.

STORE 24.95 TO gnNumeric && Cria uma variável de memória tipo numérica CLEAR? "gnNumeric é digitado: " ?? TYPE('gnNumeric') && Exibe N, tipo valor numérico

gnNumeric= NTOM(gnNumeric) && Converte gnNumérico para um valor atual? "gnNumeric agora é digitado: " ?? TYPE('gnNumeric') && Exibe Y, valor tipo atual

NUMLOCK( ), função

Retorna o modo atual da tecla NUM LOCK ou define o modo da tecla NUM LOCK como ativada ou desativada.

Sintaxe

NUMLOCK([lExpressão])

Tipos de retorno: Lógico

Argumentos

lExpressão Define a tecla NUM LOCK como ativada ou desativada. Se lExpressão for verdadeiro (.T.), a tecla NUM LOCK será ativada; se lExpressão for falso (.F.), a tecla NUM LOCK será desativada. NUMLOCK( ) retornará um valor lógico correspondente à definição da tecla NUM LOCK antes da emissão de NUMLOCK(.T.) ou NUMLOCK(.F.).

Comentários

NUMLOCK( ) retornará verdadeiro (.T.) se a tecla NUM LOCK estiver ativada (pressionar uma tecla no teclado numérico retorna um número), ou falso (.F.) se NUM LOCK estiver desativada (pressionar uma tecla no teclado numérico move o cursor).

No Visual FoxPro for Macintosh, a definição da tecla NUM LOCK pode ser alterada pressionando-se SHIFT+CLEAR.

NUMLOCK( ), exemplo da função

[Pág.: 274]

Page 275: 74039361 Visual FoxPro Comandos e Funcoes

No exemplo a seguir, o sinal de igual (=) é utilizado para executar NUMLOCK( ) sem retornar um valor.

gcOldLock = NUMLOCK( ) && Salva configuração original WAIT WINDOW 'Pressione uma tecla para ativar NumLock'= NUMLOCK(.T.) && Ativa NumLockWAIT WINDOW 'Pressione uma tecla para desativar NumLock'= NUMLOCK(!NUMLOCK( )) && Alterna NumLock para valor opostoWAIT WINDOW 'Pressione uma tecla para recuperar a definição original de NumLock'= NUMLOCK(gcOldLock) && Retorna à definição original

NVL( ), função

Retorna um valor não-nulo a partir de duas expressões.

Sintaxe

NVL(eExpressão1, eExpressão2)

Tipos de retorno: Caractere, Data, DataHora, Numérico, Moeda, Lógico ou valor nulo

Argumentos

eExpressão1, eExpressão2 NVL( ) retornará eExpressão2 se eExpressão1 resultar em um valor nulo. NVL( ) retornará eExpressão1se eExpressão1 não for um valor nulo. eExpressão1 e eExpressão2 podem ser formados por qualquer tipo de dados. NVL( ) retornará .NULL. se tanto eExpressão1 e eExpressão2 resultarem em valor nulo.

Comentários

Utilize NVL( ) para remover valores nulos de cálculos ou operações onde valores nulos não são suportados ou não são relevantes.

NVL( ), exemplo da função

O exemplo a seguir cria uma variável de memória denominada glMyNull que contém o valor nulo. NVL( ) é utilizada para retornar um valor não nulo a partir de glMyNull e outra expressão.

STORE .NULL. TO glMyNull && Uma variável de memória que contém um valor nuloCLEAR? NVL(.T., glMyNull) && Exibe .T.? NVL(glMyNull, glMyNull) && Exibe .NULL.

OCCURS( ), função

Retorna o número de vezes que uma expressão de caracteres ocorre dentro de uma outra expressão de caracteres.

Sintaxe

OCCURS(cExpressãoProcurada, cExpressãoPesquisada)

Tipos de retorno: Numérico

Argumentos

cExpressãoProcurada Especifica uma expressão de caracteres que OCCURS( ) procura dentro da cExpressãoPesquisada.

CExpressãoPesquisada Especifica a expressão de caracteres em que OCCURS( ) procura a cExpressãoProcurada.

[Pág.: 275]

Page 276: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

OCCURS( ) retornará 0 (zero) se a cExpressãoProcurada não for localizada na cExpressãoPesquisada.

OCCURS( ), exemplo da função

STORE 'abracadabra' TO gcstringCLEAR? OCCURS('a', gcstring) && Exiba 5? OCCURS('b', gcstring) && Exiba 2? OCCURS('c', gcstring) && Exiba 1? OCCURS('e', gcstring) && Exiba 0

OLDVAL( ), função

Retorna valores originais de campos que foram modificados, mas não atualizados.

Sintaxe

OLDVAL(cExpressão [, cAliasTabela | nÁreaTrabalho])

Tipos de retorno: Caractere, Moeda, Data, DataHora, Duplo, Flutuante, Inteiro, Lógico, Numérico ou Memo

Argumentos

cExpressão Especifica uma expressão cujo valor original é retornado por OLDVAL( ) a partir de uma tabela ou uma fonte remota de dados. cExpressão é normalmente um campo ou expressão que consiste em um conjunto de campos da tabela ou da fonte remota de dados.

cAliasTabela Especifica o alias da tabela ou cursor a partir do qual os valores originais do campo são retornados.

nÁreaTrabalho Especifica a Área de trabalho da tabela ou do cursor a partir do qual os valores originais do campo são retornados.

Comentários

OLDVAL( ) retorna os valores originais de campo para os registros de uma tabela ou cursor do Visual FoxPro que apresente a utilização do buffer de linha ou de tabela ativada com CURSORSETPROP( ).

Se uma tabela de um banco de dados ou um cursor possuir regras de validação, a função OLDVAL( ) não exigirá que a utilização 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 utilização do buffer de linha for ativada, ou se TABLEUPDATE( ) for emitida para executar alterações no registro, ou se houver uma outra ação que cause uma atualização, como o finalizar de uma transação, os campos serão atualizados e os seus valores originais não estarão mais disponíveis.

O tipo de dado do valor que OLDVAL( ) retorna é determinado pela expressão especificada em cExpressão.

Os valores originais do campo serão retornados para a tabela ou cursor aberto na Área de trabalho selecionada atualmente se OLDVAL( ) for emitida sem os argumentos opcionais cAliasTabela ou nÁreaTrabalho.

[Pág.: 276]

Page 277: 74039361 Visual FoxPro Comandos e Funcoes

OLDVAL( ), exemplo da função

O exemplo que se segue demonstra como OLDVAL( ) é utilizado para retornar o valor original dos campos em uma tabela com utilização de buffer. Uma tabela denominada employees é criada e INSERT - SQL é utilizada para inserir o valor “Smith” no campo cSobrenome. MULTILOCKS é definido como ON, uma exigência para utilização de buffer de tabela. CURSORSETPROP( ) é utilizado para definir o modo de utilização 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( ) é, então, utilizado para executar alterações na tabela. O valor atualizado no campo cSobrenome (Jones) será então exibido.

CLOSE DATABASESCLEAR

* Cria uma nova tabela e adiciona um registro vazioCREATE TABLE employee (cLastName C(10)) APPEND BLANK

* Insere um valor inicialINSERT INTO employee (cLastName) VALUES ("Smith")

* Ative e defina a utilização do buffer de tabelaSET MULTILOCKS ON && Permita a utilização do buffer de tabela=CURSORSETPROP("Utilização do buffer", 5, "employee" ) && Ative a utilização do buffer de tabela

* Exibe o valor inicial=MESSAGEBOX("Valor original de cSobrenome: "+ cSobrenome, 0, "Resultados")

* Altera o valor do registro e exiba resultadosREPLACE cLastName WITH "Jones"=MESSAGEBOX("Valor modificado cSobrenome: "+ cLastName, 0, "Resultados")

* Armazena o valor anterior do campo na variável cTemp e exiba resultadoscTemp=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 exemploUSEDELETE 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. Após a execução do comando, a execução do programa é retomada na linha logo após à 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 número do erro, a mensagem de erro, o

[Pág.: 277]

Page 278: 74039361 Visual FoxPro Comandos e Funcoes

número da linha do programa e o nome do programa para o procedimento. Estas informações podem ser utilizadas para corrigir a causa do erro.

Comentários

Quando ocorre um erro durante a execução 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 padrão do Visual FoxPro.

Os procedimentos ON ERROR não podem ser aninhados. Caso ON ERROR seja emitido a partir de um procedimento, o Gerenciador de erros padrão do Visual FoxPro será restaurado.

ON ERROR, exemplo do comando

ON ERROR DO errhand WITH ;ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )

*** A próxima linha deve causar um erro ***USE nodatabaseON ERROR && recupera o Gerenciador de erro do sistemaPROCEDURE errhandPARAMETER merror, mess, mess1, mprog, mlinenoCLEAR? 'Número de erros: ' + LTRIM(STR(merror))? 'Mensagem de erro: ' + mess? 'Linha de código com erro: ' + mess1? 'Número 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 execução de um programa ou comando.

Sintaxe

ON ESCAPE[Comando]

Argumentos

Comando Especifica o comando do Visual FoxPro a ser executado. Após a execução do comando, a execução do programa é retomada na linha logo após à do programa que estava em execução quando a tecla ESC foi pressionada. No entanto, se um procedimento especificado com ON ESCAPE incluir RETRY, a linha do programa que estava em execução quando a tecla ESC foi pressionada será executada novamente.

Comentários

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 padrão).

Observação O Visual FoxPro não executa uma rotina ON ESCAPE se SET ESCAPE estiver desativado (OFF).

[Pág.: 278]

Page 279: 74039361 Visual FoxPro Comandos e Funcoes

ON ESCAPE, exemplo do comando

O exemplo a seguir define um loop infinito, mas define uma rotina ON ESCAPE para sair dele.

SET ESCAPE ONON ESCAPE DO stopitWAIT WINDOW 'Pressione ESC para parar loop' NOWAITglMoreLoop = .T.

DO WHILE glMoreLoopENDDORETURN

PROCEDURE stopitglMoreLoop = .F.RETURN

ON KEY LABEL, comando

Especifica um comando que é executado quando você pressiona uma tecla ou uma combinação específica de teclas ou clica com o botão do mouse.

Sintaxe

ON KEY [LABEL NomeRótuloChave] [Comando]

Argumentos

LABEL NomeRótuloChave Especifica o nome do rótulo atribuído à tecla. O NomeRótuloChave é a letra ou dígito que aparece na tecla ou um nome especial atribuído à tecla. A tabela a seguir lista os nomes de rótulos de teclas especiais.

Atribuições de rótulos de teclas do Visual FoxPro

Para esta tecla Especifique este valor NomeRótuloChave

LEFTARROWRIGHTARROWUPARROWDNARROW

HOMEHOMEEND ENDPAGE UP PGUPPAGE DOWN PGDNDEL DELBACKSPACEBACKSPACESPACEBAR SPACEBARINS INSTAB TABSHIFT+TAB BACKTABENTER ENTERF1 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

[Pág.: 279]

Page 280: 74039361 Visual FoxPro Comandos e Funcoes

CTRL+RIGHT ARROW CTRL+RIGHTARROWCTRL+HOME CTRL+HOMECTRL+END CTRL+ENDCTRL+PAGE UP CTRL+PGUPCTRL+PAGE DOWN CTRL+PGDNCTRL+A TO CTRL+Z CTRL+A, CTRL+B, CTRL+C ... CTRL+0 CTRL+0RIGHT MOUSE BUTTON RIGHTMOUSELEFT MOUSE BUTTON LEFTMOUSEMOUSE BUTTON MOUSEESC ESC

Comando Especifica o comando que será executado quando a tecla ou combinação especificada de teclas for pressionada ou quando o botão do mouse for clicado.

Você pode incluir expressão de parâmetros ou parâmetro ao comando atribuído à tecla, como no seguinte exemplo:

ON KEY LABEL ALT+V WAIT WINDOW "Versão: " + VERSION()

Você pode incluir variáveis na atribuição, mas estas devem ser públicas. Por exemplo:

PUBLIC messagemessage = "Unidade padrão: " + SYS(5)ON KEY LABEL ALT+D WAIT WINDOW message

Comentários

Normalmente, ON KEY LABEL utiliza DO para executar um procedimento.

ON KEY LABEL executa o comando imediatamente durante a execução de READ, BROWSE, EDIT, CHANGE e menus definidos pelo usuário. Se um programa estiver sendo executado quando você pressionar a tecla ou clicar no botão do mouse, o Visual FoxPro executará a linha do programa atual e, em seguida, o comando ON KEY LABEL. Qualquer atribuição de tecla com ON KEY LABEL criada em um programa permanece em vigor após a execução do programa. Você pode também criar atribuições de teclas na janela Comando.

Para retornar o comportamento de uma tecla específica ao normal, emita ON KEY LABEL NomeRótuloChave. Para retornar todas as teclas para o comportamento padrão, emita ON KEY.

Dica Para evitar a ocorrência de chamadas repetidas durante a execução de um procedimento ON KEY LABEL, inclua PUSH KEY CLEAR no início 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 atribuições de teclas feitas com ON KEY LABEL não entrarão em vigor na barra de menus do sistema do Visual FoxPro, bem como nos menus do sistema, caixas de diálogo, alertas e assim por diante. As atribuições de teclas entrarão em vigor nas janelas do sistema do Visual FoxPro — no editor de texto do Visual FoxPro, na janela Comando, na janela Rastrear etc.

Ao contrário do que acontece com ON KEY, podem existir vários comandos ON KEY LABEL ativos. Por exemplo, você pode atribuir um comando a cada uma das teclas de direção e a um botão do mouse.

Observe que a execução de um comando ON KEY LABEL redefine PARAMETERS( ) como 0. Para obter maiores informações, consulte PARAMETERS( ).

No Visual FoxPro, certos eventos não podem ser interceptados porque estão sob o controle do Windows. Em especial, ON KEY LABEL MOUSE, ON KEY LABEL LEFTMOUSE e ON KEY LABEL RIGHTMOUSE não serão 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 combinação de teclas utilizadas para digitar um valor nulo em um campo.

[Pág.: 280]

Page 281: 74039361 Visual FoxPro Comandos e Funcoes

ON KEY LABEL, exemplo do comando

O exemplo a seguir exibe uma mensagem quando uma tecla de direção é pressionada.

CLEARPUBLIC msgmsg = CHR(13) + CHR(13) + "Pressione F9 para " + ;

"restaurar a definição chave padrão".ON KEY LABEL RIGHTARROW Wait Window "Seta à direita " + msg NOWAITON KEY LABEL LEFTARROW Wait Window "Seta à esquerda " + msg NOWAITON KEY LABEL UPARROW Wait Window "Seta acima " + msg NOWAITON KEY LABEL DNARROW Wait Window "Seta abaixo " + msg NOWAIT

* Pressione F9 para limpar os atributos ON KEY LABELON KEY LABEL F9 ON KEY

ON PAD, comando

Especifica a barra de menu ou menu ativado quando você seleciona um título específico do menu.

Sintaxe

ON PAD NomeTítuloMenu OF NomeBarraMenus1[ACTIVATE POPUP NomeMenu| ACTIVATE MENU NomeBarraMenus2

Argumentos

NomeTítuloMenu OF NomeBarraMenus1 Especifica o título do menu para o qual uma barra de menu ou menu é atribuído.

ACTIVATE POPUP NomeMenu Especifica o menu a ser ativado quando o título do menu é selecionado. Utilize ON PAD NomeTítuloMenu OF NomeBarraMenus1 sem ACTIVATE POPUP para liberar um menu de um título do menu.

Se você especificar a barra de menu do sistema _MSYSMENU para NomeBarraMenus1, NomeMenu não poderá especificar um menu criado com a cláusula DEFINE POPUP PROMPT.

ACTIVATE MENU NomeBarraMenus2 Especifica o nome da barra de menu a ser ativado quando o título do menu é selecionado. Utilize ON PAD NomeTítuloMenu OF NomeBarraMenus1 sem ACTIVATE MENU para liberar uma barra de menu de um nome de menu.

Comentários

Utilize ON SELECTION PAD para executar um comando quando um título de menu é selecionado.

ON PAGE, comando

Especifica um comando a ser executado quando a impressão alcança um número de linha especificado em um relatório ou quando você emite EJECT PAGE.

Sintaxe

ON PAGE[AT LINE nNúmeroLinha [Comando]]

Argumentos

[Pág.: 281]

Page 282: 74039361 Visual FoxPro Comandos e Funcoes

AT LINE nNúmeroLinha [Comando] Especifica o comando a ser executado no número de linha designado. O comando especificado é executado quando _PLINENO, a variável do sistema que mantém a trilha do número de linha atual em um relatório, se torna maior que o número de linha especificado com nNúmeroLinha. O comando especificado com ON PAGE também é executado quando você emite EJECT PAGE. Para obter maiores informações, consulte EJECT PAGE.

Comentários

Normalmente, ON PAGE utiliza DO a fim de executar um procedimento para o tratamento de quebras de página, cabeçalhos e rodapés.

A execução de ON PAGE sem a cláusula AT LINE limpa o comando ON PAGE.

ON SELECTION MENU, comando

Especifica um comando que é executado quando você seleciona um título 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 é atribuído. O comando é executado quando qualquer título de menu é selecionado na barra de menus. Você pode especificar o nome de uma barra de menus definida pelo usuário criada com DEFINE MENU ou com a barra de menus do sistema do Visual FoxPro, _MSYSMENU.

ALL Executa um comando quando qualquer título de menu é selecionado em qualquer barra de menus.

Comando Especifica o comando a ser executado quando um título de menu for selecionado. Utilize ON SELECTION MENU sem um comando para liberar um comando atribuído a uma barra de menus.

Comentários

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 específico for selecionado. ON SELECTION PAD prevalece sobre ON SELECTION MENU. Utilize ON PAD para ativar um menu ou uma barra de menus quando um título de menu específico for selecionado.Utilize ON SELECTION MENU sem um comando para liberar um comando atribuído 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 título de menu é selecionado na barra de menus do sistema do Visual FoxPro.A atual barra de menus do sistema é gravada na memória com SET SYSMENU SAVE e todos os títulos de menu do sistema são removidos com SET SYSMENU TO.

DEFINE PAD cria vários títulos de menu do sistema. Quando você seleciona um título de menu, o procedimento choice, atribuído à barra de menus com ON SELECTION MENU, é executado. O procedimento choice exibe o nome do título de menu selecionado e o nome da barra de menus. Se você selecionar o título do menu Sair, o menu original do sistema do Visual FoxPro será restaurado.

*** Nomeie este programa como ONMENU.PRG ***CLEAR

[Pág.: 282]

Page 283: 74039361 Visual FoxPro Comandos e Funcoes

SET SYSMENU SAVESET SYSMENU TODEFINE 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\<latórios' 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 choicePARAMETER gcPad, gcMenuWAIT WINDOW 'Você escolhe ' + gcPad + ;

' no menu ' + gcMenu NOWAITIF gcPad = 'PADEXIT'

SET SYSMENU TO DEFAULTENDIF

ON SELECTION PAD, comando

Especifica um comando que é executado quando você seleciona um título de menu específico em uma barra de menus.

Sintaxe

ON SELECTION PAD NomeTítuloMenu OF NomeBarraMenus[Comando]

Argumentos

NomeTítuloMenu OF NomeBarraMenus Especifica o nome do título de menu ao qual o comando é atribuído.

Comando Especifica o comando do Visual FoxPro a ser executado quando o título de menu especificado for selecionado.

Comentários

Quando você selecionar o título 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 título de menu específico é 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 título de menu em uma barra de menus. Utilize ON PAD para ativar um menu ou uma barra de menus quando selecionar um título de menu específico em uma barra de menus.

Utilize ON SELECTION PAD sem um comando para liberar um comando atribuído ao título de menu.

ON SELECTION POPUP, comando

[Pág.: 283]

Page 284: 74039361 Visual FoxPro Comandos e Funcoes

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 é atribuído.

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.

Comentários

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 específico. 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 específico.

Utilize ON SELECTION POPUP sem um comando para liberar um comando atribuído 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.Comentários

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 diálogo. A caixa de diálogo 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ê não queira sair do aplicativo atual, a rotina poderá retornar o controle novamente para o aplicativo.

ON( ), função

[Pág.: 284]

Page 285: 74039361 Visual FoxPro Comandos e Funcoes

Retorna o comando atribuído a cada um dos seguintes comandos de gerenciamento de eventos: ON ERROR, ON ESCAPE, ON KEY LABEL, ou ON PAGE.

Sintaxe

ON(cComandoON [, NomeRótuloTecla])

Tipos de retorno: Caractere

Argumentos

cComandoON Especifica um dos comandos de gerenciamento de eventos. A seguir são apresentados os comandos e as expressões de caracteres correspondentes a serem utilizados com ON( ):

Comando cComandoON

ON ERROR ERRORON ESCAPE ESCAPEON KEY LABEL KEYON PAGE PAGE

Por exemplo, para retornar o comando atribuído atualmente a ON ERROR, utilize

? ON('ERROR')NomeRótuloTecla Utilizado em ON KEY LABEL para especificar uma tecla ou uma combinação de teclas à qual o comando é atribuído. Especifique KEY em cComandoON e o nome do rótulo da tecla ou da combinação de teclas em NomeRótuloTecla. Para obter uma lista completa dos nomes de rótulos de teclas, consulte ON KEY LABEL.

Por exemplo, para retornar o comando atribuído atualmente à tecla de função F7 com ON KEY LABEL, utilize

? ON('KEY', 'F7')

Comentários

Quando ocorre um evento que é interceptado por um dos comandos de gerenciamento de eventos, o comando atribuído pelo comando de gerenciamento de eventos é executado. ON( ) retorna o comando atribuído a um comando de gerenciamento de eventos. ON( ) retornará uma seqüência vazia se nenhum comando estiver atribuído atualmente ao comando de gerenciamento de eventos especificado.

ON( ), exemplo da função

O seguinte exemplo utiliza ON( ) para exibir as definições de ON ERROR e ON KEY LABEL.ON ERROR DO errorhandON KEY LABEL CTRL+F2 WAIT WINDOW 'Você pressionou ^F2'ON KEY LABEL ALT+Z DISPLAY MEMORYCLEAR? ON('ERROR') && Exibe DO errorhand? ON('KEY', 'CTRL+F2') && Exibe WAIT WINDOW 'Você pressionou ^F2'? ON('KEY', 'ALT+Z') && Exibe DISPLAY MEMORYON ERRORON KEY LABEL CTRL+F2ON KEY LABEL ALT+Z

OPEN DATABASE, comando

Abre um banco de dados.

[Pág.: 285]

Page 286: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

OPEN DATABASE [NomeArquivo | ?][EXCLUSIVE | SHARED][NOUPDATE][VALIDATE]

Argumentos

NomeArquivo Especifica o nome do banco de dados a ser aberto. Se você não especificar uma extensão para o nome do arquivo, o Visual FoxPro atribuirá automaticamente a extensão .DBC. Se omitir NomeArquivo, a caixa de diálogo Abrir será exibida. Você pode especificar um nome de caminho como parte do nome do banco de dados.

Observação O Visual FoxPro não irá reconhecer um nome de caminho adequado se um nome de diretório ou disco contiver um ponto de exclamação (!).

? Exibe a caixa de diálogo Abrir, na qual você poderá escolher um banco de dados já existente ou digitar o nome de um novo Formulário a ser criado.

EXCLUSIVE Abre o banco de dados no modo exclusivo. Se você abrir o banco de dados no modo exclusivo, outros usuários não poderão acessá-lo e receberão uma mensagem de erro se tentarem fazer isso. Se você não incluir EXCLUSIVE nem SHARED, a definição 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 usuários poderão acessá-lo. Se você não incluir EXCLUSIVE nem SHARED, a definição atual de SET EXCLUSIVE determinará como o banco de dados será aberto.

NOUPDATE Especifica que o banco de dados não 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 gravação.

As tabelas contidas no banco de dados não são afetadas por NOUPDATE. Para evitar alterações em uma tabela do banco de dados, inclua NOUPDATE em USE ao abrir a tabela.

VALIDATE Especifica que o Visual FoxPro assegura que as referências no banco de dados são válidas. O Visual FoxPro verifica se as tabelas e os índices aos quais é feita referência no banco de dados estão disponíveis em disco. O Visual FoxPro também verifica se os campos e as marcas de índice aos quais é feita referência existem nas tabelas e índices.

Comentários

Enquanto o banco de dados está aberto, todas as tabelas nele contidas estão disponíveis. Contudo, as tabelas não estão 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 não 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ê não pode abrir um banco de dados que foi aberto exclusivamente por outro usuário.

OPEN DATABASE, exemplo do comando

No exemplo a seguir, OPEN DATABASE é utilizado para abrir o banco de dados testdata. DISPLAY DATABASE é utilizado para exibir informações sobre as tabelas do banco de dados.

CLOSE DATABASESSET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dadosOPEN DATABASE testdata && Abre o banco de dados testdataDISPLAY DATABASE && Exibe informações da tabela

[Pág.: 286]

Page 287: 74039361 Visual FoxPro Comandos e Funcoes

ORDER( ), função

Retorna o nome da marca ou do arquivo de índice de controle para a tabela atual ou especificada.

Sintaxe

ORDER([nÁreaTrabalho | cAliasTabela [, nCaminho]])

Tipos de Retorno: Caractere

Argumentos

nÁreaTrabalho 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 diretório são retornados junto com o nome do arquivo de índice composto ou de entrada única. A expressão numérica nCaminho pode ter qualquer valor.

Comentários

Uma tabela pode ter vários 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 exibição 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 função 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. É possível também utilizar SET ORDER para designar um índice ou uma marca de controle.

Como padrão, ORDER( ) retorna o nome do arquivo de índice de controle ou o nome da marca de controle para a Área de trabalho atual. A função ORDER( ) retorna a seqüência vazia se uma ordem não for definida (SET ORDER TO é emitida ou não há nenhum arquivo ou marca de índice de controle).

ORDER( ), exemplo da função

O exemplo a seguir exibe arquivos e marcas de índice.

CLOSE DATABASESOPEN 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( ), função

Retorna o nome e o número da versão do sistema operacional onde o Visual FoxPro está sendo executado.

Sintaxe

OS([1])

[Pág.: 287]

Page 288: 74039361 Visual FoxPro Comandos e Funcoes

Tipos de Retorno: Caractere

Argumentos

1 Utilize OS(1) para retornar o número da versão do software do sistema operacional.

Comentários

Se o argumento 1 opcional for omitido, será retornado o nome e o número da versão do sistema operacional.

No Visual FoxPro para Windows, utilize OS( ) para retornar a versão do MS-DOS (por exemplo, MS-DOS 6.22).

OS( ), exemplo da função

? OS( )? OS(1)

PACK DATABASE, comando

Remove os registros marcados para exclusão do banco de dados atual.

Sintaxe

PACK DATABASE

Comentários

Um banco de dados contém registros marcados para exclusão depois que uma tabela ou visualização é 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 visualização 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 exclusão.

CLOSE DATABASESSET PATH TO (HOME( ) + 'samples\data\') && Define o caminho do banco de dadosOPEN DATABASE testdata && Abre o banco de dadosPACK DATABASE && Compacta o banco de dados atual

PACK, comando

Remove de modo permanente todos os registros marcados para exclusão na tabela atual e reduz o tamanho de um arquivo de Memo associado à tabela.

Sintaxe

PACK [MEMO] [DBF]

Argumentos

MEMO Remove o espaço não utilizado do arquivo de Memo, mas não remove da tabela os registros marcados para exclusão. As informações contidas em campos Memo são armazenadas em um arquivo de Memo associado. Um arquivo de Memo tem o mesmo nome da tabela e uma extensão .FPT.

[Pág.: 288]

Page 289: 74039361 Visual FoxPro Comandos e Funcoes

DBF Remove da tabela os registros marcados para exclusão, mas não afeta o arquivo de Memo.

Comentários

Quando o comando PACK é utilizado, o Visual FoxPro copia para uma tabela temporária todos os registros não marcados para exclusão. Depois de concluída a execução de PACK, o Visual FoxPro exclui a tabela original do disco e renomeia a tabela temporária com o nome da tabela original. Se você pressionar ESC para interromper PACK, a tabela temporária será excluída e a tabela original permanecerá inalterada. A tabela original também será recuperada se você ficar sem espaço em disco enquanto PACK estiver em execução.

Quando você emite PACK sem as cláusulas MEMO e DBF, PACK afeta tanto a tabela como o arquivo de Memo.

PACK requer uso exclusivo da tabela. Para obter maiores informações 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 desnecessários. Não há como recuperar registros excluídos depois da utilização de PACK.

PAD( ), função

Retorna o último título de menu selecionado em uma barra de menus como uma seqüência de caracteres maiúsculos.

Sintaxe

PAD( )

Tipos de retorno: Caractere

Comentários

Para que PAD( ) retorne um título de menu, é necessário que uma barra de menus esteja definida e ativa. As barras de menus são criadas e ativadas com DEFINE MENU e ACTIVATE MENU.

Também é possível utilizar PAD( ) com a barra de menus do sistema do Visual FoxPro.

PAD( ) retorna uma seqüência vazia quando uma barra de menus não está definida e ativa ou se você emite PAD( ) na janela Comando.

PAD( ), exemplo da função

Neste exemplo, PAD( ) é utilizada para passar um título de menu a um procedimento.A barra de menus do sistema Visual FoxPro atual é gravada para a memória com SET SYSMENU SAVE e todos os títulos de menu do sistema são removidos com SET SYSMENU TO.Vários títulos de menu do sistema são criados com DEFINE PAD. Quando um título de menu for selecionado, PAD( ) será utilizado para passar o título de menu ao procedimento denominado choice. choice exibirá o título de menu selecionado e o nome da barra de menus. Se o título de menu Sair for selecionado, o menu original do sistema Visual FoxPro será restaurado.

*** Nomeie este programa como PADEXAM.PRG ***CLEARSET SYSMENU SAVESET SYSMENU TODEFINE PAD padSys OF _MSYSMENU PROMPT '\<Sistema' COLOR SCHEME 3 ;

KEY ALT+S, ''

[Pág.: 289]

Page 290: 74039361 Visual FoxPro Comandos e Funcoes

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\<latórios' 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 choicePARAMETERS gcPad, gcMenuWAIT WINDOW 'Você escolhe' + gcPad + ;

' do menu ' + gcMenu NOWAITIF gcPad = 'PADEXIT'

SET SYSMENU TO DEFAULTENDIF

PADL( ) | PADR( ) | PADC( ), funções

Retorna uma seqüência de uma expressão preenchida com espaços ou caracteres até o comprimento especificado no lado direito, esquerdo ou nos dois lados.

Sintaxe

PADL(eExpressão, nTamanhoResultado [, cCaracterePreenchimento]) – Ou –PADR(eExpressão, nTamanhoResultado [, cCaracterePreenchimento]) – Ou –PADC(eExpressão, nTamanhoResultado [, cCaracterePreenchimento])

Tipos de retorno: Caractere

Argumentos

eExpressão Especifica a expressão a ser preenchida. Esta expressão pode ser de qualquer tipo, exceto expressão lógica ou um campo de figura ou geral.

nTamanhoResultado Especifica o número total de caracteres na expressão 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 expressão até o número especificado de caracteres.

Se você omitir cCaracterePreenchimento, espaços (caractere ASCII 32) serão utilizados no preenchimento.Comentários

PADL( ) insere preenchimento à esquerda, PADR( ) insere preenchimento à direita e PADC( ) insere preenchimento nos dois lados.

PADL( ) | PADR( ) | PADC( ), exemplo das funções

STORE 'TITLE' TO gcStringCLEAR? PADL(gcString, 40, '=')? PADR(gcString, 40, '=')? PADC(gcString, 40, '=')

[Pág.: 290]

Page 291: 74039361 Visual FoxPro Comandos e Funcoes

PARAMETERS( ), função

Retorna o número de parâmetros passados para o procedimento, para a função definida pelo usuário ou para o programa chamado mais recentemente.

Sintaxe

PARAMETERS( )

Tipos de retorno: Numérico

Comentários

PARAMETERS( ) é útil para determinar o número de parâmetros passados para um programa, um procedimento ou uma função definida pelo usuário.

Observação O valor retornado por PARAMETERS( ) é redefinido sempre que um procedimento, uma função definida pelo usuário ou um programa é chamado ou quando o comando ON KEY LABEL é executado.

PARAMETERS( ), exemplos de função

O exemplo 1 chama um procedimento e exibe o número de parâmetros passados em uma janela de espera.O exemplo 2 utilize um procedimento para exibir a média de 4 valores.

* Exemplo 1DO testpar WITH 1,2,3

PROCEDURE testparPARAMETERS gn1,gn2,gn3gcMessage = 'PARAMETERS( ) ='+ALLTRIM(STR(PARAMETERS( )))WAIT WINDOW (gcMessage)RETURN

* Exemplo 2SET TALK OFFgnVal1 = 10gnVal2 = 20gnVal3 = 30gnVal4 = 15gnMin = getavg(gnVal1, gnVal2, gnVal3, gnVal4)? 'O valor médio é'?? gnMin

* Esta função definida pelo usuário permite até 9 parâmetros a serem passados.* Usa a função PARAMETERS( ) para determinar quantos * foram passados e retorna o valor médio.

FUNCTION getavgPARAMETERS gnPara1,gnPara2,gnPara3,gnPara4,gnPara5, ;

gnPara6,gnPara7,gnPara8,gnPara9IF PARAMETERS( ) = 0

RETURN 0ENDIFgnResult = 0FOR gnCount = 1 to PARAMETERS( )

gcCompare = 'gnPara' +(STR(gnCount,1))gnResult = gnResult + EVAL(gcCompare)

ENDFORgnResult = gnResult / (gnCount - 1)RETURN gnResult

[Pág.: 291]

Page 292: 74039361 Visual FoxPro Comandos e Funcoes

PARAMETERS, comando

Atribui dados passados de um programa de chamada para matrizes ou variáveis de memória privadas.

Sintaxe

PARAMETERS ListaParâmetro

Argumentos

ListaParâmetro Especifica os nomes das matrizes ou das variáveis de memória às quais os dados são atribuídos.

Os parâmetros da ListaParâmetros são separados por vírgulas. Na instrução PARAMETERS deve haver, pelo menos, o mesmo número de parâmetros existentes na instrução DO ... WITH. Se o número de variáveis ou matrizes listado na instrução PARAMETERS for superior ao número passado por DO ... WITH, as demais variáveis ou matrizes serão inicializadas com um valor falso (.F.). Um limite máximo de 27 parâmetros podem ser passados.

PARAMETERS( ) retorna o número de parâmetros passados para a última rotina executada.

Comentários

Quando PARAMETERS for utilizado com DO ... WITH, esta deve ser a primeira instrução executada no programa, procedimento ou função definida chamada pelo usuário.

Como padrão, DO ... WITH passa variáveis e matrizes para procedimentos por referência. Quando um valor é alterado no procedimento chamado, o novo valor é retornado à variável ou matriz associada, no programa de chamada. Para passar uma variável ou matriz a um procedimento por valor, coloque-as entre parênteses na lista de parâmetros DO ... WITH. Qualquer alteração feita no parâmetro do procedimento chamado não é retornada ao programa de chamada.

Como padrão, as variáveis são passadas por referência a um procedimento e por valor a uma função definida pelo usuário. Utilize SET UDFPARMS TO REFERENCE para passar por referência variáveis para uma função definida pelo usuário.

PARAMETERS, exemplo de comando

O exemplo abaixo passa parâmetros para uma rotina de tratamento de erro.

ON ERROR DO errhand WITH ERROR( ), MESSAGE( ), ;MESSAGE(1),PROGRAM( ),LINENO( )

USE nodatabaseON ERROR && restaura a rotina de tratamento de erro do sistema

PROCEDURE errhandPARAMETERS gnError, gcMess, gnMess1, gcProg, gnLineNo? 'Número do erro: ' + LTRIM(STR(gnError))? 'Mensagem do erro: ' + gcMess? 'Linha de código com erro: ' + gnMess1? 'Número da linha com erro: '+ LTRIM(STR(gnLineNo))? 'Programa com erros: ' + gcProg

PAYMENT( ), função

Retorna o valor de cada pagamento periódico sobre um empréstimo com juros fixos.

[Pág.: 292]

Page 293: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

PAYMENT(nPrincipal, nTaxaJuros, nPagamentos)

Tipos de retorno: Numérico

Argumentos

nPrincipal Especifica o principal inicial do empréstimo.

nTaxaJuros Especifica a taxa de juros fixa por período. Se o empréstimo for saldado com pagamentos mensais, mas a taxa de juros for anual, divida a taxa de juros anual por 12.

nPagamentos Especifica o número total de pagamentos que serão efetuados sobre o empréstimo.

Comentários

PAYMENT( ) considera uma taxa de juros periódica constante e considera que os pagamentos serão efetuados no fim de cada período.

PCOL( ), função

Retorna a posição de coluna atual do cabeçote de impressão da impressora.

Sintaxe

PCOL( )

Tipos de retorno: Numérico

Comentários

O valor retornado por PCOL( ) é relativo à definição atual da margem esquerda da impressora. Para definir a margem esquerda, utilize SET MARGIN ou armazene um valor na variável de memória do sistema _PLOFFSET.

A função PCOL( ) é especialmente útil no endereçamento relativo do texto impresso.

Você pode utilizar o operador $ em vez de PCOL( ).

PCOL( ), exemplo da função

CLEAR@ PROW( ), PCOL( )+12 SAY 'Contato'@ PROW( ), $+12 SAY 'Contato'

PCOUNT( ), função

Retorna o número de parâmetros passados para o programa atual, procedimento ou função definida pelo usuário.

Sintaxe

PCOUNT( )

Tipos de retorno: Numérico

Comentários

[Pág.: 293]

Page 294: 74039361 Visual FoxPro Comandos e Funcoes

PCOUNT( ) é útil para determinar quantos parâmetros são passados para o programa atual, procedimento ou função definida pelo usuário.

Observação O valor retornado por PCOUNT( ) é redefinido cada vez que um programa, procedimento ou função definida pelo usuário é solicitada ou quando ON KEY LABEL é executado.

PCOUNT( ), exemplos da função

O exemplo 1 solicita um procedimento e exibe uma janela de espera para o número de parâmetros passados.O exemple 2 utiliza um procedimento para exibir a média de 4 valores.

* Exemplo 1DO testpar WITH 1,2,3

PROCEDURE testparPARAMETERS gn1,gn2,gn3gcMessage = 'PCOUNT( ) ='+ALLTRIM(STR(PCOUNT( )))WAIT WINDOW (gcMessage)RETURN

* Exemplo 2SET TALK OFFgnVal1 = 10gnVal2 = 20gnVal3 = 30gnVal4 = 15gnMin = getavg(gnVal1, gnVal2, gnVal3, gnVal4)? 'O valor médio é '?? gnMin

* Esta função definida pelo usuário permite que até 9 parâmetros sejam passados.* Utiliza a função PCOUNT( ) para determinar quantos

* foram passados e retornar o valor médio.

FUNCTION getavgPARAMETERS gnPara1,gnPara2,gnPara3,gnPara4,gnPara5, ;

gnPara6,gnPara7,gnPara8,gnPara9IF PCOUNT( ) = 0

RETURN 0ENDIFgnResult = 0FOR gnCount = 1 to PARAMETERS( )

gcCompare = 'gnPara' +(STR(gnCount,1))gnResult = gnResult + EVAL(gcCompare)

ENDFORgnResult = gnResult / (gnCount - 1)RETURN gnResult

PI( ), função

Retorna o pi constante numérico.

Sintaxe

PI( )

Tipos de retorno: Numérico

Comentários

O pi constante numérico (3,141592) é o grau de circunferência de um círculo em relação aos seu diâmetro.

[Pág.: 294]

Page 295: 74039361 Visual FoxPro Comandos e Funcoes

O número de casas decimais exibido no valor retornado por PI( ) é determinado por SET DECIMALS.

PI( ), exemplo da função

CLEAR? PI( ) && Exibe 3.14STORE 2.30 TO gnRadiusSTORE PI( ) * gnRadius^2 TO gnArea? gnArea && Exibe 16.6190

POPUP( ), função

Retorna como uma seqüência o nome do menu ativo ou um valor lógico que indica se um menu foi definido.

Sintaxe

POPUP([cNomeMenu])

Tipos de retorno: Caracteres ou Lógico

Argumentos

cNomeMenu Retorna um valor lógico que indica se cNomeMenu foi definido. POPUP( ) retornará verdadeiro (.T.), se o menu especificado tiver sido definido; caso contrário, POPUP( ) retornará falso (.F.).

Comentários

A função POPUP( ) retornará o nome do menu ativo como uma seqüência 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 são criados e ativados com DEFINE POPUP e ACTIVATE POPUP. O menu pode ser, também, um menu do sistema do Visual FoxPro. POPUP( ) retornará uma seqüência vazia se um menu não estiver definido e ativo ou se você emitir POPUP( ) a partir da janela Comando.

PRINTSTATUS( ), função

Retornará verdadeiro (.T.) se a impressora ou dispositivo de impressão estiver on-line; caso contrário, retornará falso (.F.).

Sintaxe

PRINTSTATUS( )

Tipos de retorno: LógicoComentários

A função PRINTSTATUS( ) é semelhante a SYS(13), com a exceção 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 através do Painel de controle do Windows.

PRINTSTATUS( ), exemplo de função

? PRINTSTATUS( )*** Exemplo do Programa ***STORE PRINTSTATUS( ) TO glReady

[Pág.: 295]

Page 296: 74039361 Visual FoxPro Comandos e Funcoes

IF NOT glReadyWAIT 'Certifique-se de que a impressora esteja conectada e ligada!' WINDOW

ELSEWAIT 'Impressora está pronta!' WINDOW

ENDIF

PRIVATE, comando

Oculta do programa atual matrizes ou variáveis de memória 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 variáveis de memória que devem ser declaradas privadas .

ALL LIKE Estrutura Faz com que PRIVATE oculte todas as matrizes e variáveis de memória cujos nomes correspondam a Estrutura, que pode conter os curingas ponto de interrogação (?) e asterisco (*).

ALL EXCEPT Estrutura Faz com que PRIVATE oculte todas as matrizes ou variáveis de memória, a menos que os seus nomes coincidam com Estrutura, que pode conter os curingas ponto de interrogação (?) e asterisco (*).

Comentários

Ocultar variáveis criadas em programas de nível mais alto permite que variáveis com o mesmo nome das variáveis privadas sejam manipuladas no programa atual sem afetarem os valores das variáveis ocultas. Uma vez concluída a execução do programa que contém PRIVATE, todas as matrizes e variáveis de memória declaradas privadas ficarão novamente disponíveis.

O comando PRIVATE não cria variáveis, ele simplesmente oculta do programa atual variáveis declaradas em programas de nível mais alto.

PRIVATE , exemplo de comando

*** Exemplo do programa demonstrando PRIVATE ***SET TALK OFFval1 = 10val2 = 15

DO down? val1, val2 && Exibe 10, 100

PROCEDURE downPRIVATE val1val1 = 50val2 = 100? ' Val1 Val2'? val1, val2 && Exibe 50, 100RETURN

PRMPAD( ), função

[Pág.: 296]

Page 297: 74039361 Visual FoxPro Comandos e Funcoes

Retorna o texto de um título de menu.

Sintaxe

PRMPAD(NomeBarraMenu, NomeTítuloMenu)

Tipos de retorno: Caractere

Argumentos

NomeBarraMenu Especifica o nome da barra de menus que contém o título de menu.

NomeTítuloMenu Especifica o título do menu.

Comentários

As barras de menus são criadas com DEFINE MENU, que cria a barra de menus, e com DEFINE PAD, que cria os títulos de menus da barra de menus. PRMPAD( ) funciona, também, com o sistema de menus do Visual FoxPro. A barra de menus não precisa estar ativa para que PRMPAD( ) retorne o texto de um título de menu.

Caso um título 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 título do menu, PRMPAD( ) retornará somente o texto do título do menu, não incluindo os caracteres especiais.

PRMPAD( ), exemplo de função

No exemplo a seguir, uma barra de menus denominada mnuExemplo é criada com três títulos de menu. Os designadores de opção desativada e tecla de acesso não são retornados a partir dos títulos de menu denominados título Dois e título Três. A barra de menus é ativada para exibir os títulos de menu e é eliminada da tela e da memória quando um título de menu é selecionado.

CLEARSET TALK OFFSTORE 'mnuExemplo' TO gcPopName

DEFINE MENU mnuExample BAR AT LINE 1DEFINE 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 também'

=messagebox( PRMPAD('mnuExemplo', 'títuloUm') )=messagebox( PRMPAD('mnuExemplo', 'títuloDois') )=messagebox( PRMPAD(gcPopNome, 'títuloTrês') )

ACTIVATE MENU mnuExampleDEACTIVATE MENU mnuExampleRELEASE MENU mnuExample

PROCEDURE, comando

Identifica o início de um procedimento em um arquivo de programa.

Sintaxe

PROCEDURE NomeProcedimentoComandos[RETURN [eExpressão ]]

ENDPROC

Argumentos

[Pág.: 297]

Page 298: 74039361 Visual FoxPro Comandos e Funcoes

NomeProcedimento Especifica o nome do procedimento a ser criado.

Comentários

PROCEDURE é uma instrução dentro de um arquivo de programa que especifica o início de cada procedimento neste arquivo e define o nome do procedimento. Os nomes dos procedimentos devem começar com uma letra ou com um sublinhado e podem conter qualquer combinação de letras, números e sublinhados

No Visual FoxPro para Windows, os nomes dos procedimentos podem ter até 254 caracteres.

Os comentários podem ser colocados na mesma linha depois de PROCEDURE e ENDPROC. Estes comentários são ignorados durante a compilação e a execução do programa.

A instrução PROCEDURE é seguida de uma séries de comandos que compõem 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ê não incluir um comando RETURN, um RETURN implícito será automaticamente executado quando a função sair. Se o comando RETURN não incluir um valor de retorno (ou se um RETURN implícito 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.

Observação Você não pode ter código de programa normal executável incluído em um arquivo de programa depois de procedimentos; apenas procedimentos, funções definidas pelo usuário e definição 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 específica. O Visual FoxPro procura:

1. O programa que contém DO NomeProcedimento.2. O banco de dados atual.3. Os arquivos de procedimento abertos com SET PROCEDURE.4. Os programas na cadeia de execução. Ele procura arquivos de programa começados 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 não for localizado um nome de arquivo de programa correspondente, o Visual FoxPro retornará uma mensagem de erro.

Inclua a cláusula IN em DO para executar um procedimento em um arquivo específico.

Como padrão, os parâmetros são passados aos procedimentos por valor. Para obter informações sobre como passar parâmetros para procedimentos por referência, consulte SET UDFPARMS. Podem ser passados no máximo 27 parâmetros para um procedimento. Os parâmetros podem ser passados a um procedimento pela inclusão de uma instrução PARAMETERS ou LPARAMETERS no procedimento ou colocando uma lista de parâmetros imediatamente após PROCEDURE NomeProcedimento. Inclua a lista de parâmetros entre parênteses e separe os parâmetros com vírgulas.

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 supõe existir no exemplo), constrói uma entrada com base nas informações passadas nos parâmetros, 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) && Considera que o arquivo existe pnSize = FSEEK(pnHandle,0,2) && Vai para o final do arquivo

[Pág.: 298]

Page 299: 74039361 Visual FoxPro Comandos e Funcoes

logEntry = dtoc(date())+","+hora()+","+nomeusuário+","+mensagem =FPUTS(pnHandle, logEntry) =FCLOSE(pnHandle) && Fecha o arquivoENDPROC

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( ), função

Retorna o nome do programa atualmente em execução ou o nome do programa em execução quando ocorreu um erro.

Sintaxe

PROGRAM([nNível])

Tipos de retorno: Caractere

Argumentos

nNível Especifica quantos níveis de programa para trás do nome do programa deverão ser localizados. Esse parâmetro 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 níveis.

Se você especificar 0 ou 1 em nNível, a função PROGRAM( ) retornará o nome do programa mestre (o programa de nível mais alto). Se nNível ultrapassar a profundidade de aninhamento de programas, PROGRAM( ) retornará uma seqüência vazia.

Comentários

PROGRAM( ) ajuda o programa a recuperar-se de erros. Essa função é semelhante a SYS(16).

Se utilizada sem argumentos, PROGRAM( ) retorna o nome do programa atualmente em execução.

PROGRAM( ), exemplo da função

ON ERROR DO errhand WITH PROGRAM( )*** A próxima linha deve gerar um erro ***USE nodatabaseON ERROR && Retorna à rotina de gerenciamento de erro padrão do sistemaPROCEDURE errhandPARAMETERS gcProgramWAIT 'Ocorreu um erro no programa ' + gcProgram WINDOW

PROMPT( ), função

[Pág.: 299]

Page 300: 74039361 Visual FoxPro Comandos e Funcoes

Retorna o texto de um título de menu selecionado em uma barra de menus ou de um item de menu selecionado em um menu.

Sintaxe

PROMPT( )

Tipos de retorno: Caractere

Comentários

PROMPT( ) retorna o texto do último título 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 usuário ou podem ser do sistema do Visual FoxPro. Se uma barra de menus ou um menu não estiver ativo ou se você pressionar ESC para sair de uma barra de menus ou de um menu, PROMPT( ) retornará uma seqüência vazia.

Uma barra de menus é criada com DEFINE MENU, e cada título de menu na barra de menus é criado com DEFINE PAD. Um menu é criado com DEFINE POPUP, e os itens de menu são criados com DEFINE BAR.

É possível utilizar MENU( ) e POPUP( ) para retornar o nome da barra de menus ou do menu a partir do qual o título ou o item de menu é selecionado.

PROPER( ), função

Retorna uma seqüência em maiúsculas a partir de uma expressão de caracteres, conforme apropriado, de nomes próprios.

Sintaxe

PROPER(cExpressão)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres a partir da qual PROPER( ) retorna uma seqüência de caracteres convertidos para maiúsculas.

PROPER( ), exemplo da função

STORE 'Visual FoxPro' TO gcExpr1

CLEAR ? PROPER(gcExpr1) && Exibe "Visual FoxPro"STORE 'VISUAL FOXPRO' TO gcExpr2? PROPER(gcExpr2) && Exibe "Visual FoxPro"

PROW( ), função

Retorna o atual número da linha do cabeçote de impressão da impressora.

Sintaxe

PROW( )

Tipos de retorno: Numérico

Comentários

Se você emitir EJECT, o Visual FoxPro redefinirá PROW( ) com 0.

[Pág.: 300]

Page 301: 74039361 Visual FoxPro Comandos e Funcoes

PROW( ) é especialmente útil para o endereçamento relativo ao texto impresso.

PROW( ), exemplo da função

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 posição da impressora na coluna.

@ PROW( ), PCOL( ) + 12 SAY 'Contato'@ PROW( ), $+12 SAY 'Contato'

PRTINFO( ), função

Retorna a definição atual da impressora especificada.

Sintaxe

PRTINFO(nDefiniçãoImpressora [, cNomeImpressora])

Tipos de retorno: Numérico

Argumentos

nDefiniçãoImpressora Especifica a definição de impressora do Visual FoxPro que será retornada.

As tabelas a seguir listam os valores de retorno das definições de impressora.

Observação 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 nDefiniçãoImpressora for igual a 1 (PRT_ORIENTATION em FOXPRO.H), PRTINFO( ) retornará a orientação do papel:

Valores de retorno Definição

–1 Informação não disponível0 Retrato1 Paisagem

Se nDefiniçãoImpressora for igual a 2 (PRT_PAPERSIZE em FOXPRO.H), PRTINFO( ) retornará o tamanho do papel:

Valores de retorno Definição

–1 ou um valor diferente daqueles listados a seguir Informação não disponível. Utilize nDefiniçãoImpressora = 3 e nDefiniçãoImpressora = 4 para determinar o tamanho do papel.1 Carta, 8 1/2 x 11 pol2 Carta pequeno, 8 1/2 x 11 pol3 Tablóide, 11 x 17 pol4 Ledger, 17 x 11 pol5 Ofício, 8 1/2 x 14 pol6 Statement, 5 1/2 x 8 1/2 pol7 Executivo, 7 1/4 x 10 1/2 pol8 A3, 297 x 420 mm9 A4, 210 x 297 mm10 A4, Small 210 x 297 mm11 A5, 148 x 210 mm12 B4, 250 x 354 mm13 B5, 182 x 257 mm14 Folio, 8 1/2 x 13 pol

[Pág.: 301]

Page 302: 74039361 Visual FoxPro Comandos e Funcoes

15 Quarto, 215 x 275 mm16 10 x 14 pol17 11 x 17 pol18 Nota, 8 1/2 x 11 pol19 Envelope #9, 3 7/8 x 8 7/8 pol20 Envelope #10, 4 1/8 x 9 1/2 pol21 Envelope #11, 4 1/2 x 10 3/8 pol22 Envelope #12, 4 1/2 x 11 pol23 Envelope #14, 5 x 11 1/2 pol24 Folha tamanho C25 Folha tamanho D26 Folha tamanho E27 Envelope DL, 110 x 220 mm28 Envelope C5, 162 x 229 mm29 Envelope C3, 324 x 458 mm30 Envelope C4, 229 x 324 mm31 Envelope C6, 114 x 162 mm32 Envelope C65, 114 x 229 mm33 Envelope B4, 250 x 353 mm34 Envelope B5, 176 x 250 mm35 Envelope B6, 176 x 125 mm36 Envelope, 110 x 230 mm37 Envelope Monarch, 3 7/8 x 7.5 pol38 6 3/4 Envelope, 3 5/8 x 6 1/2 pol39 Fanfold padrão norte-americano, 14 7/8 x 11 pol40 Fanfold padrão alemão, 8 1/2 x 12 pol41 Fanfold ofício alemão, 8 1/2 x 13 pol

Se nDefiniçãoImpressora for igual a 3 (PRT_PAPERLENGTH em FOXPRO.H), PRTINFO( ) retornará o tamanho do papel em incrementos de 0,1mm.Se nDefiniçãoImpressora for igual a 4 (PRT_PAPERWIDTH em FOXPRO.H), PRTINFO( ) retornará a largura do papel em incrementos de 0,1mm.Se nDefiniçãoImpressora for igual a 5 (PRT_SCALE em FOXPRO.H), PRTINFO( ) retornará o fator pelo qual a saída impressa é dimensionada.Se nDefiniçãoImpressora for igual a 6 (PRT_COPIES em FOXPRO.H), PRTINFO( ) retornará o número de cópias a serem impressas.

Se nDefiniçãoImpressora for igual a 7 (PRT_DEFASOURCE em FOXPRO.H), PRTINFO( ) retornará a origem do papel padrão:

Valores de retorno Definição

1 Compartimento superior2 Compartimento inferior3 Compartimento central4 Alimentação manual5 Compartimento de envelope6 Envelope de alimentação manual7 Seleção automática8 Pinos de tração9 Formato pequeno10 Formato grande11 Grande capacidade14 Cassete

Se nDefiniçãoImpressora for igual a 8 (PRT_PRTQUAL em FOXPRO.H), PRTINFO( ) retornará um valor positivo indicando a resolução horizontal em pontos por polegada (DPI, Dots Per Inch) ou um valor negativo indicando a qualidade da impressão:

Valores de retorno Definição

[Pág.: 302]

Page 303: 74039361 Visual FoxPro Comandos e Funcoes

-1 Rascunho-2 Baixa-3 Média-4 Alta

Se nDefiniçãoImpressora for igual a 9 (PRT_COLOR em FOXPRO.H), PRTINFO( ) retornará um valor que indica se uma impressora colorida gera saída colorida ou monocromática:

Valores de retorno Definição

1 Colorida2 Monocromática

Se nDefiniçãoImpressora for igual a 10 (PRT_DUPLEX em FOXPRO.H), PRTINFO( ) retornará o modo duplex:

Valores de retorno Definição

1 Impressão simplex2 Duplex vertical3 Duplex horizontal

Se nDefiniçãoImpressora for igual a 11 (PRT_YRESOLUTION em FOXPRO.H), PRTINFO( ) retornará a resolução vertical em DPI. Se essa informação não estiver disponível, será retornado -1.Se nDefiniçãoImpressora for igual a 12 (PRT_TTOPTION em FOXPRO.H), PRTINFO( ) retornará um valor que indica como as fontes TrueType® serão impressas:

Valores de retorno Definição

1 Imprime como gráficos de bitmap2 Descarrega como fontes de software3 Substitui fontes do dispositivo

Se nDefiniçãoImpressora for igual a 13, PRTINFO( ) retornará um valor que indica se a saída está ordenada:

Valores de retorno Definição

0 Sem ordenação1 Ordenada

cNomeImpressora Especifica o nome da impressora sobre a qual são retornadas informações. Se cNomeImpressora for omitido, serão retornadas informações para a impressora padrão.

Comentários

As definições de impressora do Visual FoxPro são definidas na caixa de diálogo Configurar página. Selecione Configurar página no menu Arquivo para exibir a caixa de diálogo Configurar página do Visual FoxPro.

PUBLIC, comando

Define variáveis ou matrizes globais.

Sintaxe

PUBLIC ListaVarMem – Ou –PUBLIC [ARRAY] NomeMatriz1(nLinhas1 [, nColunas1])

[, NomeMatriz2(nLinhas2 [, nColunas2])] ...

Argumentos

[Pág.: 303]

Page 304: 74039361 Visual FoxPro Comandos e Funcoes

ListaVarMem Especifica uma ou mais variáveis de memória a serem inicializadas e designadas como globais.

[ARRAY] NomeMatriz1 (nLinhas1 [, nColunas1])[, NomeMatriz2 (nLinhas2 [, nColunas2])] ... Especifica uma ou mais matrizes a serem inicializadas

e designadas como globais. Consulte ” DIMENSION” para obter uma descrição de cada argumento.

Comentários

É possível utilizar e modificar matrizes e variáveis globais a partir de qualquer programa executado durante a sessão atual do Visual FoxPro.

Variáveis e matrizes criadas com PUBLIC são inicializadas com falso (.F.), exceto as variáveis públicas FOX e FOXPRO, que são inicializadas com verdadeiro (.T.). As variáveis públicas FOX e FOXPRO podem ser utilizadas para executar condicionalmente um código baseado no produto que está sendo executado.

Qualquer variável ou matriz criada na janela Comando automaticamente se torna pública.

Qualquer variável ou matriz que você queira declarar como pública deve ser declarada pública 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 variável e, posteriormente, declará-la pública com PUBLIC.

PUBLIC, exemplo do comando

SET TALK OFFPUBLIC val1,val2val1 = 10val2 = 15

DO down? val1? val2

RELEASE ALL && Libera somente variáveis privadasDISPLAY MEMORY LIKE val?RELEASE val1,val2 && Variáveis públicas devem ser liberadas explicitamenteDISPLAY MEMORY LIKE val?

PROCEDURE downPRIVATE val1val1 = 50val2 = 100? val1? val2RETURN

PUSH POPUP, comando

Coloca na memória uma definição de menu em uma pilha de definições de menus.

Sintaxe

PUSH POPUP NomeMenu

Argumentos

NomeMenu Especifica o nome do menu cuja definição é colocada na pilha. O menu também pode ser um menu do sistema do Visual FoxPro.

[Pág.: 304]

Page 305: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

Quando utilizado com POP POPUP, PUSH POPUP permite que você salve uma definição de menu, faça alterações nessa definição e, em seguida, restaure-a ao seu estado original.

As definições de menus são 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 definição do menu é adicionada à pilha e, então, modificada. Em seguida, o menu original é restaurado ao ser retirado da pilha.

DEFINE POPUP popExam FROM 5,5DEFINE BAR 1 OF popExam PROMPT 'Um'DEFINE BAR 2 OF popExam PROMPT 'Dois'DEFINE BAR 3 OF popExam PROMPT 'Três'DEFINE BAR 4 OF popExam PROMPT 'Quatro'ACTIVATE POPUP popExam NOWAITPUSH POPUP popExam WAIT 'Popup original' WINDOWRELEASE BAR 2 OF popExam WAIT 'Popup modificado. O popup original é colocado em uma pilha.' WINDOWPOP POPUP popExam WAIT 'Popup original restaurado' WINDOWDEACTIVATE POPUP popExam RELEASE POPUP popExam

PUTFILE( ), função

Chama a caixa de diálogo Salvar como e retorna o nome do arquivo especificado.

Sintaxe

PUTFILE([cTextoPersonalizado] [, cNomeArquivo] [, cExtensãoArquivo])

Tipos de retorno: Caractere

Argumentos

cTextoPersonalizado Especifica o texto personalizado que deve aparecer na caixa de diálogo Salvar como. No Windows 3.x, o texto aparece como o título da caixa de diálogo. No Windows 95, o texto personalizado substitui o rótulo Nome do arquivo. No Macintosh, o texto personalizado substitui o rótulo Salvar como.

Observe que, no Windows 95, as legendas longas podem estar truncadas.

cNomeArquivo Especifica o nome de arquivo padrão exibido na caixa de texto.

cExtensãoArquivo Especifica extensões de nomes de arquivo. Somente nomes de arquivo com a extensão especificada serão exibidos na lista rolável da caixa de diálogo Salvar como quando a caixa de verificação Todos os arquivos for limpa. A primeira extensão em cExtensãoArquivo será automaticamente adicionada ao nome do arquivo digitado se não houver uma extensão incluída junto ao nome do arquivo. Para obter uma lista de extensões de arquivo do Visual FoxPro e os tipos de criadores correspondentes, consulte ” Extensões e tipos de arquivos”.

A expressão de caractere cExtensãoArquivo pode assumir uma das formas a seguir:

· cExtensãoArquivo pode conter uma única extensão, como .PRG, e apenas os nomes de arquivo com essa extensão serão exibidos.

[Pág.: 305]

Page 306: 74039361 Visual FoxPro Comandos e Funcoes

· cExtensãoArquivo pode conter uma lista de extensões de nome de arquivo separadas por ponto-e-vírgula. Por exemplo, se você incluir PRG;FXP, o Visual FoxPro exibirá todos os nomes de arquivo com as extensões .PRG e .FXP.· Se os nomes de arquivo tiverem o mesmo nome raiz, mas extensões diferentes (por exemplo, CUSTOMER.PRG e CUSTOMER.FXP), o Visual FoxPro exibirá somente o nome de arquivo com a extensão que aparece primeiro em cExtensãoArquivo.

· cExtensãoArquivo pode conter uma lista de extensões de nome de arquivo separadas por barras verticais, como PRG|FXP. Nesse caso, o Visual FoxPro exibe todos os nomes de arquivo com as extensões listadas, mesmo que os arquivos tenham o mesmo nome raiz.· Se cExtensãoArquivo contiver somente um ponto-e-vírgula (;), o Visual FoxPro exibirá todos os nomes de arquivo sem extensão.· Se cExtensãoArquivo for uma seqüência vazia, o Visual FoxPro exibirá os nomes de todos os arquivos do diretório ou pasta atual.

· Se cExtensãoArquivo contiver curingas do MS-DOS, como o ponto de interrogação (?) e o asterisco (*), o Visual FoxPro exibirá todos os nomes de arquivo com extensões correspondentes aos critérios de caracteres curinga. Por exemplo, se cExtensãoArquivo for ?X?, serão exibidos todos os nomes de arquivo com as extensões .FXP, .EXE, .TXT, e assim por diante.

Comentários

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ê não digitar um nome de arquivo, PUTFILE( ) retornará o nome de arquivo (especificado com cNomeArquivo) e a extensão padrão (especificada por cExtensãoArquivo). Se você escolher Cancelar ou pressionar ESC, PUTFILE( ) retornará uma seqüência vazia. É possível utilizar o nome do arquivo retornado por PUTFILE( ) para nomear um arquivo e salvá-lo no disco.

PUTFILE( ), exemplo da função

O exemplo a seguir cria um arquivo de dados delimitado a partir de qualquer tabela existente selecionada pelo usuário. 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

CANCELENDIFCOPY TO (gcDelimFile) DELIMITED && Cria arquivo delimitadoMODIFY FILE (gcDelimFile) NOEDIT

PV( ), função

Retorna o valor atual de um investimento.

Sintaxe

PV(nPagamento, nTaxaJuros, nPagamentosTotais)

Tipos de retorno: Numérico

Argumentos

[Pág.: 306]

Page 307: 74039361 Visual FoxPro Comandos e Funcoes

nPagamento Especifica o valor de pagamentos periódicos. nPagamento pode resultar em um número positivo ou negativo. PV( ) considera que os pagamentos serão efetuados ao final de cada período.

nTaxaJuros Especifica a taxa de juros periódica. 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 número total de pagamentos.

Comentários

PV( ) calcula o valor atual de um investimento com base em uma série de pagamentos periódicos iguais a uma taxa de juros periódica constante.

PV( ), exemplo da função

STORE 500 to gnPayment && Pagamentos periódicos efetuados mensalmenteSTORE .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 sessão ativa do Visual FoxPro e retorna o controle ao sistema operacional.

Sintaxe

QUIT

Comentários

No Visual FoxPro para Windows, você retorna ao Windows.

Importante Utilize QUIT sempre que for terminar uma sessão do Visual FoxPro. Se desligar o computador sem emitir QUIT, poderá haver perda de dados, os arquivos abertos poderão ser danificados e os arquivos de trabalho temporários que normalmente são excluídos poderão ser deixados em disco.

RAND( ), função

Retorna um número aleatório entre 0 e 1.

Sintaxe

RAND([nValorOriginal])

Tipos de retorno: Numérico

Argumentos

nValorOriginal Especifica o valor original que determina a seqüência de valores que o RAND( ) retorna.

RAND( ) retornará a mesma seqüência de números aleatórios se você utilizar o mesmo valor original para nValorOriginal na primeira vez que emitir RAND( ), seguido pela função RAND( ) sem nValorOriginal.

Se nValorOriginal for negativo na primeira vez que você emitir RAND( ), um valor original do cronômetro do sistema será utilizado. Para ativar a seqüência de números mais aleatória, emita RAND( ) inicialmente com um argumento negativo e, em seguida, emita RAND( ) sem um argumento.

[Pág.: 307]

Page 308: 74039361 Visual FoxPro Comandos e Funcoes

Se você omitir nValorOriginal, RAND( ) utilize um valor original padrão de 100001.

RAND( ), exemplo da função

O primeiro exemplo abaixo utiliza RAND( ) para criar uma tabela com 10 registros que contêm valores aleatórios, depois utiliza MIN( ) e MAX( ) para exibir os valores máximo e mínimo na tabela.O segundo exemplo abaixo exibe um número aleatório que fica entre os valores 1 e 10.

CLOSE DATABASESCREATE TABLE Random (cValue N(3))FOR nItem = 1 TO 10 && Incluir 10 registros,

APPEND BLANKREPLACE cValue WITH 1 + 100 * RAND( ) && Inserir valores aleatórios

ENDFOR

CLEARLIST && Exibe os valoresgnMaximum = 1 && Inicializa o valor mínimognMinimum = 100 && Inicializa o valor máximoSCAN

gnMinimum = MIN(gnMinimum, cValue)gnMaximum = MAX(gnMaximum, cValue)

ENDSCAN? 'O valor mínimo é: ', gnMinimum && Exibe o valor mínimo

? 'O valor máximo é: ', gnMaximum && Exibe o valor máximo

CLEARgnLower = 1gnUpper = 10

? INT((gnUpper - gnLower + 1) * RAND( ) + gnLower)

RAT( ), função

Retorna a posição numérica da última ocorrência de uma expressão de caracteres ou campo memo contido em outra expressão de caracteres ou campo memo.

Sintaxe

RAT(cExpressãoProcurada, cExpressãoPesquisada [, nOcorrência])

Tipos de retorno: Numérico

Argumentos

cExpressãoProcurada Especifica a expressão de caracteres que RAT( ) procura na cExpressãoPesquisada. A expressão de caracteres pode se referir a um campo memo de qualquer tamanho.

cExpressãoPesquisada Especifica a expressão de caracteres em que RAT( ) faz a procura. A expressão de caracteres pode se referir a um campo memo de qualquer tamanho.

nOcorrência Especifica a ocorrência, da direita para a esquerda, de cExpressãoProcura procurada por RAT( ) em cExpressãoPesquisada. Como padrão, RAT( ) procura a última ocorrência de cExpressãoProcurada (nOcorrência = 1). Se nOcorrência for 2, RAT( ) irá procurar pela penúltima ocorrência e assim por diante.

[Pág.: 308]

Page 309: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

RAT( ), a função AT( ) invertida, procura na expressão de caracteres cExpressãoPesquisada, da direita para a esquerda, pela última ocorrência de outra expressão de caracteres, cExpressãoProcurada.

RAT( ) retorna um número inteiro, indicando a posição do primeiro caractere de cExpressãoProcurada em cExpressãoPesquisada. RAT( ) retorna 0 se cExpressãoProcurada não for encontrada em cExpressãoPesquisada ou se nOcorrencia for maior que o número de vezes que cExpressãoProcurada ocorre em cExpressãoPesquisada.

A procura executada por RAT( ) considera maiúsculas/minúsculas.

RAT( ), exemplo da função

STORE 'abracadabra' TO stringSTORE 'a' TO find_strCLEAR? RAT(find_str,string) && Exibe 11? RAT(find_str,string,3) && Exibe 6

RATC( ), função

Retorna a posição numérica da última ocorrência de uma expressão de caracteres o campo memo dentro de outra expressão de caracteres ou campo memo

Sintaxe

RATC(cExpressãoProcurada, cExpressãoPesquisada [, nOcorrência])

Tipos de retorno: Numérica

Argumentos

cExpressãoProcurada Especifica a expressão de caracteres que RATC( ) procura na cExpressãoPesquisada.

cExpressãoPesquisada Especifica a expressão de caracteres em que RATC( ) faz a procura. As expressões de caracteres cExpressãoProcurada e cExpressãoPesquisada podem ser campos memo de qualquer tamanho.

nOcorrência Especifica a ocorrência, da direita para a esquerda, de cExpressãoProcura procurada por RATC( ) em cExpressãoPesquisada. Como padrão, RATC( ) procura a última ocorrência de cExpressãoProcurada (nOcorrência = 1). Se nOcorrência for 2, RAT( ) irá procurar pela penúltima ocorrência e assim por diante.

Comentários

RATC( ) destina-se a expressões que contêm caracteres de byte duplo. Se a expressão contiver apenas caracteres de byte único, RATC( ) será equivalente a RAT( ).

RATC( ) retorna a posição numérica da última ocorrência de uma expressão de caracteres ou campo memo dentro de outra expressão de caracteres ou campo memo. As expressões de caracteres ou campos memo podem conter qualquer combinação de caracteres de byte duplo e único.

RATC( ) é a função invertida AT_C( ): procura da direita para a esquerda.

RATC( ) retorna um número inteiro, indicando a posição do primeiro caractere de cExpressãoProcurada em cExpressãoPesquisada. RATC( ) retorna 0 se cExpressãoProcurada não for encontrada em

[Pág.: 309]

Page 310: 74039361 Visual FoxPro Comandos e Funcoes

cExpressãoPesquisada ou se nOcorrência for maior que o número de vezes que cExpressãoProcurada ocorre em cExpressãoPesquisada.

A procura executada por RATC( ) considera maiúsculas/minúsculas.

RATLINE( ), função

Retorna o número da linha da última ocorrência de uma expressão de caracteres dentro de uma outra expressão de caracteres ou campo memo, contando a partir da última linha.

Sintaxe

RATLINE(cExpressãoProcurada, cExpressãoPesquisada)

Tipos de retorno: Numérico

Argumentos

cExpressãoProcurada Especifica a expressão de caracteres que RATLINE( ) procura na cExpressãoPesquisada.

cExpressãoPesquisada Especifica a expressão de caracteres em que RATLINE( ) faz a procura. As expressões de caracteres cExpressãoProcurada e cExpressãoPesquisada podem ser campos memo de qualquer tamanho.

Utilize MLINE( ) para retornar a linha que contém cExpressãoProcurada.

Dica A função RATLINE( ) oferece uma forma conveniente para pesquisar em campos memo.

Comentários

RATLINE( ), a função ATLINE( ) invertida, procura a ocorrência da cExpressãoProcura em uma expressão de caracteres cExpressãoPesquisada, a partir do último caractere de cExpressãoPesquisada.

Caso a procura seja bem-sucedida, RATLINE( ) retornará o número da linha em que ocorre a correspondência. Caso a procura seja malsucedida, RATLINE( ) retornará 0.

A procura executada por RATLINE( ) considera maiúsculas/minúsculas.

Importante O número da linha que RATLINE( ) retorna é determinado pelo valor de SET MEMOWIDTH, mesmo que cExpressãoPesquisada não seja um campo memo. Para obter maiores informações, consulte “SET MEMOWIDTH”.

RATLINE( ), exemplo da função

No exemplo a seguir, RATLINE( ) retorna o número da linha para a última linha no campo memo notes que contém a palavra “graduado”. MLINE( ) usa este valor para retornar o conteúdo da linha.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE employee && Abre a tabela EmployeeSTORE 'graduado' TO gcStringSTORE MLINE(notes, RATLINE(gcString, notes)) TO gnFileLine? gnFileLine

RD | RMDIR, comando

Remove um diretório ou pasta do disco.

Sintaxe

RD cCaminho | RMDIR cCaminho

Argumentos

cCaminho Especifica o nome e a localização do diretório ou pasta a ser removido do disco.

[Pág.: 310]

Page 311: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

O Visual FoxPro irá gerar uma mensagem de erro se você tentar remover um diretório que não esteja vazio.

RD | RMDIR, exemplo do comando

O exemplo a seguir utiliza MKDIR para criar um novo diretório denominado mytstdir, em seguida CHDIR é utilizado para mudar para o novo diretório. GETDIR( ) é utilizado para exibir a estrutura do novo diretório e, em seguida, RMDIR é utilizado para remover o diretório que acabou de ser criado. GETDIR( ) é utilizado para exibir a estrutura do diretório novamente.

SET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxProMKDIR mytstdir && Cria um novo diretórioCHDIR mytstdir && Muda para o novo diretório= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretórioSET DEFAULT TO HOME( ) && Restaura o diretório do Visual FoxProRMDIR mytstdir && Remove o novo diretório= GETDIR( ) && Exibe a caixa de diálogo Selecionar diretório

RECALL, comando

Desmarca registros marcados para exclusão na tabela selecionada.

Sintaxe

RECALL[Escopo] [FOR lExpressão1] [WHILE lExpressão2][NOOPTIMIZE]

Argumentos

Escopo Especifica um intervalo de registros a ser reintegrado. Somente os registros dentro do intervalo especificado serão reintegrados. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

O escopo padrão para RECALL é o registro atual (NEXT 1).

FOR lExpressão1 Especifica que apenas os registros para os quais lExpressão1 resulta em verdadeiro (.T.) serão reintegrados. Isto permite filtrar registros indesejáveis.

Rushmore otimizará RECALL FOR se lExpressão1 for uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, do Guia do Desenvolvedor.WHILE lExpressão2 Especifica uma condição pela qual os registros serão reintegrados, desde que lExpressão2 resulte em verdadeiro (.T.).

NOOPTIMIZE Evita a otimização Rushmore de RECALL.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no Capítulo 15, “Otimizando aplicativos”, do Guia do Desenvolvedor.

Comentários

RECALL pode ser utilizado para recuperar registros, desde que não se tenha emitido PACK ou ZAP.

[Pág.: 311]

Page 312: 74039361 Visual FoxPro Comandos e Funcoes

Importante Depois de compactar um arquivo com o comando PACK, todos os registros marcados para exclusão serão excluídos permanentemente.

Para marcar registros para exclusão, 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 excluídos onde o campo country contém USA. Todos os registros marcados para exclusão são exibidos. RECALL ALL é utilizado para desmarcar todos os registros marcados para exclusão.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

DELETE FROM customer WHERE country = 'USA' && Marcar para exclusãoCLEARLIST FIELDS company, country FOR DELETED( ) && Lista registros marcadosRECALL ALL && Desmarca todos os registros marcados para exclusão

RECCOUNT( ), função

Retorna o número de registros da tabela atual ou da tabela especificada.

Sintaxe

RECCOUNT([nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Numérico

Argumentos

nÁreaTrabalho Especifica o número da área de trabalho de uma tabela aberta em uma outra área de trabalho.

A função 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.

Comentários

O valor que RECCOUNT( ) retorna não é afetado por SET DELETED e SET FILTER.

RECCOUNT( ) sem os argumentos opcionais nÁreaTrabalho ou cAliasTabela retorna o número de registros existentes na tabela aberta da área de trabalho atualmente selecionada.

RECCOUNT( ), exemplo de função

No exemplo a seguir, o Visual FoxPro compara o espaço disponível em disco com a quantidade necessária para classificar customer.

*** Verifica o ESPAÇO EM DISCO antes de uma CLASSIFICAÇÃO ***

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

*** Obtém o tamanho do cabeçalho da tabela ***

[Pág.: 312]

Page 313: 74039361 Visual FoxPro Comandos e Funcoes

gnTableHead = HEADER( )

*** Calcule o tamanho da tabela ***

gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)IF DISKSPACE( ) > (gnFileSize * 3)

WAIT WINDOW 'Espaço em disco suficiente para classificar.'ELSE

WAIT WINDOW 'Espaço em disco insuficiente. Impossível realizar classificação.'

ENDIF

RECNO( ), função

Retorna o número do registro atual na tabela em uso ou na tabela especificada.

Sintaxe

RECNO([nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Numérico

Argumentos

nÁreaTrabalho Especifica o número da área de trabalho para uma tabela aberta em outra área de trabalho. RECNO( ) retorna 0 se uma tabela não estiver aberta na área de trabalho especificada.

cAliasTabela Especifica o alias de uma tabela aberta em uma outra área de trabalho.

Comentários

O registro atual é aquele em que o ponteiro do registro está posicionado.

RECNO( ) retornará números negativos para registros incluídos em um buffer da tabela.

A função RECNO( ) retornará um valor maior do que o número 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 não tiver registros. Caso uma tabela não tenha registros, EOF( ) retornará sempre verdadeiro (.T.).

RECNO( ) emitida sem os argumentos opcionais nÁreaTrabalho ou cAliasTabela retorna o número 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 nÁreaTrabalho utilize a lógica de “pesquisa de software” para retornar o número do registro correspondente mais próximo. RECNO(0) retorna 0 se não localizar uma correspondência próxima. O Visual FoxPro gerar uma mensagem de erro se GO RECNO(0) for emitido quando essa correspondência não é encontrada.

RECNO( ), exemplo de função

O exemplo a seguir procura a tabela customer para o nome de uma empresa e, se esse nome não for localizado, utiliza RECNO(0) para retornar a empresa com a correspondência mais próxima.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerSET ORDER TO companySEEK 'Ernst'IF FOUND( )

DISPLAY company, contact

[Pág.: 313]

Page 314: 74039361 Visual FoxPro Comandos e Funcoes

ELSEGOTO RECNO(0)CLEAR? 'A empresa com a correspondência mais próxima é' + empresa? 'Número do registro: ' + ALLTRIM(STR(RECNO( )))

ENDIF

RECSIZE( ), função

Retorna o tamanho (largura) de um registro de tabela.

Sintaxe

RECSIZE([nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Numérico

Argumentos

nÁreaTrabalho Especifica o número da área de trabalho de uma tabela aberta em uma outra área de trabalho. RECSIZE( ) retornará 0 caso não esteja aberta nenhuma tabela na área de trabalho especificada.

cAliasTabela Especifica o alias de uma tabela aberta em uma outra área de trabalho.

Comentários

A função RECSIZE( ) emitida sem os argumentos opcionais nÁreaTrabalho ou cAliasTabela retorna o tamanho do registro da tabela aberta na área de trabalho atualmente selecionada.

RECSIZE( ), exemplo de função

No exemplo a seguir, o Visual FoxPro compara o espaço em disco disponível com a quantidade necessária para classificar customer.

*** Verifique DISKSPACE antes de uma SORT ***

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

*** Obtenha o tamanho do cabeçalho da tabela ***gnTableHead = HEADER( )

*** Calcule o tamanho da tabela ***gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)IF DISKSPACE( ) > (gnFileSize * 3)

WAIT WINDOW 'Espaço em disco suficiente para classificar.'ELSE

WAIT WINDOW 'Espaço em disco insuficiente. Classificação não pode ser feita.'

ENDIFREGIONAL, comando

Cria matrizes e variáveis de memória regionais.

Sintaxe

#REGION nNúmeroRegiãoREGIONAL ListaVar

Argumentos

[Pág.: 314]

Page 315: 74039361 Visual FoxPro Comandos e Funcoes

#REGION nNúmeroRegião Cria uma região. As variáveis regionais devem ser declaradas antes de serem utilizadas em um programa. Observe que #REGION é uma diretiva de compilador e não um comando. nNúmeroRegião especifica um número de região de 0 a 31.

REGIONAL ListaVar Declara as variáveis para a região criada com a diretiva #REGION. ListaVarMem é uma lista de matrizes e variáveis de memória separadas por vírgulas.

Durante a compilação do programa, se uma outra variável regional com nome idêntico já tiver sido compilada quando uma declaração regional for localizada, a segunda ocorrência do nome da variável se tornará exclusiva para garantir que não haja conflitos com a variável regional declarada anteriormente.

Para que o nome de uma variável se torne exclusivo, preencha o nome da variável regional até 10 caracteres com sublinhados e o número da região atual. Esta substituição ocorre inteiramente durante a compilação do programa e não tem qualquer efeito sobre a velocidade da execução.

Quando o nome de uma variável for modificado, utilize DISPLAY MEMORY para exibir o nome modificado. Para controlar a variável na janela Depurar, utilize o seu nome modificado. Como a janela Rastrear utiliza o código fonte de programa original, ela exibirá o nome original da variável (e não o nome modificado criado pelo compilador).

Comentários

Não haverá interferência entre variáveis de memória ou matrizes com nomes idênticos se os seus valores estiverem protegidos dentro de uma “região”. Variáveis regionais são semelhantes a variáveis privadas.

REGIONAL, exemplo de comando

No exemplo a seguir, dois conjuntos de variáveis regionais são criados. Na região 1, são criadas as variáveis gcA, gcB, gcC e gcD e a seqüência de caracteres “Um” é armazenada para cada uma. Na região 2, as variáveis gcC, gcD, gcE e gcF são criadas e a seqüência de caracteres “Dois” é armazenada para cada uma. As variáveis gcC and gcD são comuns a ambas as regiões.A seguir, a saída de DISPLAY MEMORY é exibida. Os nomes das variáveis gcC e gcD são modificados na segunda região. gcC se torna GCC________2 e gcD se torna GCD________2. Todas as variáveis são particulares e podem ser acessadas por programas de baixo nível.

#REGION 1REGIONAL gcA,gcB,gcC,gcDSTORE 'Um' to gcA,gcB,cgC,gcD#REGION 2REGIONAL gcC,gcD,gcE,gcF && gcC e gcD são comuns para ambas as regiõesSTORE 'Dois' to gcC,gcD,gcE,gcFDO showmemory

PROCEDURE showmemoryDISPLAY MEMORY LIKE g*

REINDEX, comando

Reconstrói arquivos de índice abertos.

Sintaxe

REINDEX [COMPACT]

Argumentos

COMPACT Converte arquivos de índice único (.IDX) regulares para arquivos .IDX compactados.

[Pág.: 315]

Page 316: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

Os arquivos de índice ficam desatualizados quando se abre uma tabela sem abrir seus arquivos de índice correspondentes e são feitas alterações nos campos de chave dos arquivos de índice. Quando os arquivos de índice ficam desatualizados, é possível atualizá-los através de uma reindexação.

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 reindexação conformemente. Ele atualiza todas as marcas nos arquivos .CDX e atualiza arquivos .CDX estruturais, que são abertos automaticamente com a tabela.

Qualquer arquivo de índice criado com a palavra-chave UNIQUE do comando INDEX ou com SET UNIQUE ON mantém o status UNIQUE quando reindexado.

Para reindexar (REINDEX) arquivos de índice desatualizados, emita os comandos abaixo:

USE TableName INDEX OutdatedIndexNamesREINDEX

REINDEX, exemplo de comando

No exemplo a seguir, ISEXCLUSIVE( ) comprova que a tabela customer foi aberta para uso exclusivo. A tabela não é reindexada visto que a que está na área atual não foi aberta para uso exclusivo.

cExclusive = SET('EXCLUSIVO')SET EXCLUSIVE OFFSET PATH TO (SYS(2004) + 'SAMPLES\DATA\')OPEN DATA testdata && Abre o banco de dados de teste USE Customer && Não foi aberta para uso exclusivoUSE 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 exclusivoELSE WAIT WINDOW 'A tabela tem que ser aberta para uso exclusivo'ENDIF

SET EXCLUSIVE &cExclusive

RELEASE MENUS, comando

Remove da memória barras de menus definidas pelo usuário.

Sintaxe

RELEASE MENUS [ListaNomesBarrasMenus [EXTENDED]]

Argumentos

ListaNomesBarrasMenus Especifica as barras de menus que serão removidas da memória. Separe os nomes das barras de menus com vírgulas.

EXTENDED Libera uma barra de menus e todos os menus, títulos e itens subordinados, além de todos os comandos ON SELECTION BAR, ON SELECTION MENU, ON SELECTION PAD e ON SELECTION POPUP associados.

Comentários

[Pág.: 316]

Page 317: 74039361 Visual FoxPro Comandos e Funcoes

Barras de menus ativas têm que ser desativadas com DEACTIVATE MENU antes que possam ser liberadas da memória.

Se RELEASE MENUS for emitido sem argumentos adicionais, todas as barras de menus definidas pelo usuário serão removidas da memória.

RELEASE PAD, comando

Remove um título de menu específico ou todos os títulos de menu da memória.

Sintaxe

RELEASE PAD NomeTítuloMenu OF NomeBarraMenus | ALL OF NomeBarraMenus

Argumentos

NomeTítuloMenu OF NomeBarraMenus Especifica o título de menu a ser removido da memória.

Você pode remover um título da barra de menus do sistema do Visual FoxPro, especificando seu nome em NomeTítuloMenu. Por exemplo, o comando RELEASE PAD _MEDIT OF _MSYSMENU remove o título de menu Editar da barra de menus do sistema do Visual FoxPro.

ALL OF NomeBarraMenus Especifica que todos os títulos de uma barra de menus definida pelo usuário serão removidos da memória. A cláusula ALL não pode ser utilizada para remover títulos da barra de menus do sistema do Visual FoxPro.

RELEASE PAD, exemplo de comando

Os comandos a seguir removem o título de menu Janela da barra de menus do sistema:

PUSH MENU _MSYSMENURELEASE PAD _MSM_WINDO OF _MSYSMENU && Remove o título de menu Janela

WAIT WINDOW ' Pressione uma tecla para restaurar o menu padrão 'POP MENU _MSYSMENU && Restaura o sistema de menu padrão do Visual FoxPro

RELEASE POPUPS, comandos

Remove da memória um menu específico ou todos os menus.

Sintaxe

RELEASE POPUPS [ListaNomeMenu [EXTENDED]]

Argumentos

ListaNomeMenu Especifica os menus a serem liberados da memória. Separe os nomes de menus com vírgulas.

Os menus do sistema do Visual FoxPro que aparecem na barra de menus do sistema do Visual FoxPro podem também 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 padrão do sistema.

EXTENDED Libera um menu, seus itens e todos os comandos associados a ON SELECTION POPUP e ON SELECTION BAR.

[Pág.: 317]

Page 318: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

Um menu ativo deve ser ativado com DEACTIVATE POPUP antes que possa se liberado da memória.

Se RELEASE POPUPS for emitido sem argumentos adicionais, todos os menus definidos pelo usuário serão removidos da memória.

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.

Comentários

Os arquivos de procedimento são abertos com SET PROCEDURE. Uma vez que o arquivo é aberto, os procedimentos dentro do arquivo estão disponíveis 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 memória janelas definidas pelo usuário ou janelas do sistema do Visual FoxPro.

Sintaxe

RELEASE WINDOWS [ListaNomesJanelas] |

Argumentos

ListaNomesJanelas Especifica as janelas liberadas da memória. ListaNomesJanelas pode incluir janelas definidas pelo usuário e janelas do sistema do Visual FoxPro. Os nomes de janelas devem ser separados por vírgulas.

Se ListaNomesJanelas não estiver incluído, a janela definida pelo usuário 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 usuário.

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

[Pág.: 318]

Page 319: 74039361 Visual FoxPro Comandos e Funcoes

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 relatório no Visual FoxPro, emita o comando:

RELEASE WINDOW "Controles de Relatório"

Utilize ACTIVATE WINDOW para posicionar uma janela do sistema na janela principal do Visual FoxPro ou em uma janela definida pelo usuário.

RELEASE, comando

Remove da memória variáveis de memória e matrizes.

Sintaxe

RELEASE ListaVarMemt – Ou –RELEASE ALL [EXTENDED][LIKE Estrutura | EXCEPT Estrutura]

Argumentos

RELEASE ListaVarMem Especifica as variáveis de memória e matrizes liberadas da memória. Os nomes de variáveis de memória e matrizes são separados por vírgulas.

RELEASE ALL Libera da memória todas as variáveis de memória e matrizes.

EXTENDED Quando emitido em um programa, especifica que todas as variáveis públicas serão liberadas. RELEASE ALL, RELEASE ALL LIKE ou RELEASE ALL EXCEPT não libera variáveis públicas quando emitido em um programa.

LIKE Estrutura | EXCEPT Estrutura Libera da memória todas as variáveis de memória e matrizes que correspondam à estrutura especificada ou todas as variáveis de memória 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 excluída do banco de dados atual.

? Exibe a caixa de diálogo 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 instrução não pode ser removida. Mesmo se SET SAFETY estiver ON, você não será advertido antes da tabela ser removida do disco.

RECYCLE Especifica que a tabela não é imediatamente excluída do disco e é colocada no Windows 95 Recycle Bin.

[Pág.: 319]

Page 320: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

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 são adicionadas a um banco de dados com ADD TABLE.

Quando REMOVE TABLE é emitido, todos os índices primários, valores padrão e regras de validação associados à tabela também são 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 relações associadas à tabela que está sendo removida. As regras e as relações não são mais válidas 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 mydbc1CREATE DATABASE mydbc2SET DATABASE TO mydbc1CREATE TABLE table1 (cField1 C(10), n N(10)) && Adiciona tabela a mydbc1CLOSE TABLES && Uma tabela deve estar fechada para ser removida de um banco de dadosREMOVE TABLE table1SET DATABASE TO mydbc2ADD TABLE table1RENAME 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.

Comentários

RENAME TABLE não 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.

[Pág.: 320]

Page 321: 74039361 Visual FoxPro Comandos e Funcoes

CLOSE DATABASESCREATE DATABASE mydbc1CREATE DATABASE mydbc2SET DATABASE TO mydbc1CREATE TABLE table1 (cField1 C(10), n N(10)) && Adiciona a tabela a mydbc1CLOSE TABLES && Uma tabela deve ser fechada para ser removida de um banco de dadosREMOVE TABLE table1SET DATABASE TO mydbc2ADD TABLE table1RENAME 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 extensão de arquivo para cada arquivo. Se as extensões não forem incluídas, os arquivos assumirão a extensão padrão .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 (.) após o nome do arquivo para renomear um arquivo que não possua uma extensão.

Não utilize RENAME para alterar o nome de uma tabela em um banco de dados; RENAME não 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 não estejam na unidade de disco e diretório padrão. Se NomeArquivo1 e NomeArquivo2 estiverem em diretórios ou pastas diferentes, NomeArquivo1 será movido para o diretório ou pasta de NomeArquivo2.

Quando você emitir RENAME, NomeArquivo2 não poderá ser um nome de arquivo existente e NomeArquivo1 deverá existir e não 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 extensão .PRG na pasta ou diretório atual para fazer backup de arquivos com extensão .BAK, emita RENAME *.PRG TO *.BAK.

REPLACE FROM ARRAY, comando

Atualiza dados em campos com valores de uma matriz de variável.

Sintaxe

REPLACE FROM ARRAY NomeMatriz[FIELDS ListaCampos][Escopo][FOR lExpressão1][WHILE lExpressão2][NOOPTIMIZE]

Argumentos

NomeMatriz Especifica o nome da matriz cujos valores substituem os dados dos campos.

[Pág.: 321]

Page 322: 74039361 Visual FoxPro Comandos e Funcoes

FIELDS ListaCampos Especifica que somente os campos em ListaCampos são substituídos pelo conteúdo da matriz. Os campos nas áreas de trabalho não selecionadas devem ser antecedidos de seus aliases de tabela.

Escopo Especifica um intervalo de registros a serem substituídos pelo conteúdo da matriz. Apenas os registros dentro do intervalo são substituídos. A substituição ocorre até o final do escopo ou da matriz.

As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

O escopo padrão para REPLACE FROM ARRAY é o registro atual (NEXT 1).

FOR lExpressão1 Especifica que os campos serão substituídos somente nos registros para os quais lExpressão1 resulta em verdadeiro (.T.). A inclusão de FOR permite que se substitua os registros condicionalmente, filtrando aqueles que não deseja. A substituição ocorre em todos os registros para os quais lExpressão1 resulta em verdadeiro (.T.) ou até que se alcance o fim da matriz.

Rushmore otimizará REPLACE FROM ARRAY FOR se lExpressão1 for uma expressão otimizável. Para um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos,” do Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição de acordo com a qual os campos em registros serão substituídos pelo conteúdo da matriz quando a expressão lógica lExpressão2 resultar em verdadeiro (.T.).

NOOPTIMIZE Evita a otimização Rushmore.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos,” do Guia do Desenvolvedor.

Comentários

Os campos do tipo memo e geral são ignorados em REPLACE FROM ARRAY. Para importar dados para estes campos, utilize GATHER e APPEND GENERAL.

Começando 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 número de elementos da matriz for menor do que o número de campos da tabela, os campos adicionais serão ignorados. Se ocorrer o contrário, os elementos de matriz adicionais serão ignorados.

Observação Nenhuma substituição 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 eExpressão1 [ADDITIVE][, NomeCampo2 WITH eExpressão2 [ADDITIVE]] ... [Escopo] [FOR lExpressão1] [WHILE lExpressão2][IN nÁreaTrabalho | cAliasTabela][NOOPTIMIZE]

[Pág.: 322]

Page 323: 74039361 Visual FoxPro Comandos e Funcoes

Argumentos

NomeCampo1 WITH eExpressão1 [, NomeCampo2 WITH eExpressão2 ... ] Especifica que os dados em NomeCampo1 serão substituídos pelo valor da expressão eExpressão1; que os dados em NomeCampo2 serão substituídos pelo valor da expressão eExpressão2 e assim por diante.

Quando um valor de expressão for maior do que a largura de um campo numérico, REPLACE fará com que o valor caiba no campo por meio das etapas a seguir:

1. Primeiro, REPLACE truncará as casas decimais, arredondando a parte decimal restante do campo.2. Se o valor ainda não couber, REPLACE armazenará o conteúdo do campo utilizando a notação

científica.3. Se o valor ainda não couber, REPLACE substituirá o conteúdo do campo por asteriscos.

ADDITIVE Inclui as substituições no final dos campos memo. ADDITIVE aplica-se somente às substituições nos campos memo. Se você omitir ADDITIVE, o campo memo será sobrescrito com o valor da expressão.

Escopo Especifica um intervalo de registros a serem substituídos. Apenas os registros dentro do intervalo são substituídos. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

O escopo padrão para REPLACE é o registro atual (NEXT 1).

FOR lExpressão1 Especifica que os campos designados serão substituídos somente nos registros para os quais lExpressão1 resultar em verdadeiro (.T.). A inclusão de FOR permite que você substitua os registros condicionalmente, filtrando os que não deseja substituir.

Rushmore otimizará REPLACE FOR se lExpressão1 for uma expressão otimizável. Para um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos,” no Guia do Desenvolvedor.

WHILE l Expressão2 Especifica uma condição de acordo com a qual os campos serão substituídos quando a expressão lógica lExpressão2 resultar em verdadeiro (.T.).

IN nÁreaTrabalho Especifica a área de trabalho em que os registros são atualizados.

IN cAliasTabela Especifica o alias da tabela em que os registros são atualizados.

Se você omitir nÁreaTrabalho e cAliasTabela, os registros serão atualizados na tabela da área de trabalho selecionada no momento.

NOOPTIMIZE Evita a otimização Rushmore.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos,” do Guia do Desenvolvedor.

Comentários

REPLACE substitui dados em um campo pelo valor em uma expressão. Os campos nas áreas de trabalho não selecionadas devem ser antecedidos de seus aliases.

Observação Se a cláusula IN for omitida, nenhuma substituição 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 aleatórios em um campo. MIN( ) e MAX( ) exibem os valores máximo e mínimo na tabela.

[Pág.: 323]

Page 324: 74039361 Visual FoxPro Comandos e Funcoes

CLOSE DATABASESCREATE TABLE Random (cValue N(3))FOR nItem = 1 TO 10 && Inclui 10 registros,

APPEND BLANKREPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatórios

ENDFOR

CLEARLIST && Exibe os valoresgnMaximum = 1 && Inicializa o valor mínimognMinimum = 100 && Inicializa o valor máximoSCAN

gnMinimum = MIN(gnMinimum, cValue)gnMaximum = MAX(gnMaximum, cValue)

ENDSCAN? 'O valor mínimo é: ', gnMinimum && Exibe o valor mínimo

? 'O valor máximo é: ', gnMaximum && Exibe o valor máximo

REPLICATE( ), função

Retorna uma seqüência de caracteres que contenha uma expressão de caracteres especificada, repetida um determinado número de vezes.

Sintaxe

REPLICATE(cExpressão, nVezes)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres que é repetida.

nVezes Especifica o número de vezes que a expressão de caracteres é repetida.

Comentários

No Visual FoxPro, o comprimento máximo da seqüência de caracteres resultante é restringido pelo espaço de memória disponível.

REPLICATE( ), exemplo de função

CLEAR? REPLICATE('HELLO ',4) && Exibe HELLO HELLO HELLO HELLO

REPORT command

Exibe ou imprime um relatório sob o controle de um arquivo de definição de relatório, criado com MODIFY REPORT ou CREATE REPORT.

Sintaxe

REPORT FORM NomeArquivo1 | ?[ENVIRONMENT][Escopo] [FOR lExpressão1] [WHILE lExpressão2][HEADING cTextoCabeçalho][NOCONSOLE]

[Pág.: 324]

Page 325: 74039361 Visual FoxPro Comandos e Funcoes

[NOOPTIMIZE][PLAIN][RANGE nPáginaInicial [, nPáginaFinal]][PREVIEW [WINDOW NomeJanela][NOWAIT]][TO PRINTER [PROMPT] | TO FILE NomeArquivo2 [ASCII]][NAME NomeObjeto][SUMMARY]

Argumentos

NomeArquivo 1 Especifica o nome do arquivo de definição de relatório a ser impresso.

? Exibe a caixa de diálogo Abrir, na qual se pode escolher um arquivo de relatório.

ENVIRONMENT Incluído para compatibilidade com versões anteriores de relatórios 2.x. A fim de restaurar o ambiente de dados associado a um relatório do Visual FoxPro, defina a propriedade AutoOpenTables do ambiente de dados para verdadeiro (.T.), o valor padrão. Para garantir que o ambiente do relatório seja fechado ao fim da impressão do relatório, defina a propriedade AutoCloseTables do ambiente de dados para verdadeiro (.T.), também o valor padrão.

Para relatórios convertidos a partir de versões anteriores do FoxPro, a inclusão de ENVIRONMENT abre e restaura todas as tabelas e relações do Ambiente de Dados, mesmo que AutoOpenTables esteja definida como falso (.F.).

Ao criar ou modificar relatórios, você pode salvar o ambiente de dados atual do Visual FoxPro com o arquivo de definição de relatório. Quando se salva o ambiente de dados do Visual FoxPro, registros adicionais são colocados na tabela de definição de relatórios 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 incluídos no relatório. Somente os registros dentro do intervalo são incluídos no relatório.

As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. Para obter maiores informações sobre cláusulas de escopo, consulte Cláusulas de escopo.

O escopo padrão para REPORT é ALL (todos os registros).

FOR lExpressão1 Imprime dados somente nos registros para os quais lExpressão1 resulta em verdadeiro (.T.). A inclusão de FOR permite que você filtre os registros que não deseja imprimir.

Rushmore otimizará REPORT FOR se lExpressão1 for uma expressão otimizável. Para um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos,” do Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição de acordo com a qual os dados serão impressos quando a expressão lógica lExpressão2 resultar em verdadeiro (.T.).

HEADING cTextoCabeçalho Especifica um texto para que um cabeçalho adicional seja colocado em cada página do relatório. A cláusula PLAIN terá a precedência se você incluir HEADING e PLAIN.

NOCONSOLE Suprime o eco de um relatório para a janela principal do Visual FoxPro ou para uma janela definida pelo usuário quando o relatório está sendo impresso ou enviado a um arquivo.

NOOPTIMIZE Para evitar a otimização Rushmore de REPORT, inclua NOOPTIMIZE.

Para obter maiores informações, consulte SET OPTIMIZE e ”Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos,” do Guia do Desenvolvedor.

[Pág.: 325]

Page 326: 74039361 Visual FoxPro Comandos e Funcoes

PLAIN Especifica que um cabeçalho de página aparecerá somente no início do relatório.

RANGE nPáginaInicial [, nPáginaFinal] Especifica um intervalo de páginas a ser impresso. nPáginaInicial especifica a primeira página impressa; nPáginaFinal especifica a última página impressa. Se nPáginaFinal for omitida, o padrão da última página impressa será 9.999.

PREVIEW [WINDOW NomeJanela] Exibe o relatório no modo de visualização de página em vez de enviá-lo para a impressora. Para imprimir um relatório, deve-se emitir REPORT com TO PRINTER.

Observe que as variáveis de memória do sistema são ignoradas quando você inclui PREVIEW.

A cláusula opcional WINDOW pode ser incluída para especificar uma janela onde o relatório será exibido no modo visualização de página. NomeJanela pode ser o nome de uma janela criada com DEFINE WINDOW ou um formulário.

Você pode incluir a cláusula opcional NOWAIT para que, em tempo de execução, o Visual FoxPro não espere que a janela de visualização de página seja fechada antes de prosseguir com a execução do programa. Em vez disso, o Visual FoxPro continuará a execução do programa com a janela de visualização de página aberta.

Em aplicativos distribuídos, verifique se o menu Exibir está disponível. Se a Barra de ferramentas visualizar impressão estiver fechada, ela não poderá ser restaurada a menos que o menu Exibir esteja disponível.

TO PRINTER [PROMPT] Envia um relatório à impressora.

No Visual FoxPro, FoxPro para Windows e FoxPro para Macintosh, você pode incluir a cláusula opcional PROMPT para exibir a caixa de diálogo Configuração da impressora antes de iniciar a impressão. As definições da impressora que podem ser ajustadas dependem do driver de impressora instalado. Coloque PROMPT imediatamente após TO PRINTER.

TO FILE NomeArquivo 2 [ASCII] Especifica o arquivo de texto para o qual um relatório é enviado. O driver atual de impressora é utilizado quando o relatório é enviado ao arquivo de texto. O arquivo criado quando você inclui TO FILE possui a extensão padrão .TXT.

Você pode incluir a cláusula opcional ASCII para criar um arquivo de texto em ASCII a partir do arquivo de definição de relatório. Sem a cláusula ASCII, PostScript® e outros códigos de impressora são gravados no arquivo de texto. Os gráficos, as linhas, os retângulos e/ou os retângulos com bordas arredondadas contidos na definição de relatório não aparecem no arquivo de texto em ASCII.

O número de linhas e colunas de cada página do arquivo de texto em ASCII é determinado pelo conteúdo das variáveis de memória do sistema _ASCIICOLS e _ASCIIROWS. Os valores-padrão para _ASCIICOLS e _ASCIIROWS são 80 colunas 63 linhas, respectivamente. Esses valores correspondem a uma página padrão na posição retrato.

NAME NomeObjeto Especifica um nome de variável de objeto para o ambiente de dados de um relatório. O ambiente de dados e os objetos do mesmo possuem propriedades e métodos, como AddObject, que precisam ser definidos ou chamados em tempo de execução. A variável de objeto oferece acesso a essas propriedades e métodos. Se você não especificar NAME, o Visual FoxPro utilizará como padrão o nome do arquivo de relatório do código associado aos eventos.SUMMARY Suprime a impressão detalhada de linha. Apenas os totais e subtotais serão impressos.

Comentários

A extensão padrão para um arquivo de definição de relatório é .FRX. Se o arquivo de definição de relatório não estiver no diretório padrão, o caminho também terá de ser incluído com o nome do arquivo.

RESTORE FROM, comando

Recupera variáveis de memória e matrizes de variáveis de memória salvas em um arquivo de variáveis de memória ou campo Memo. Em seguida, posiciona tais variáveis na memória.

Sintaxe

[Pág.: 326]

Page 327: 74039361 Visual FoxPro Comandos e Funcoes

RESTORE FROM NomeArquivo | MEMO NomeCampoMemo[ADDITIVE]

Argumentos

NomeArquivo Especifica o arquivo de variável de onde as variáveis de memória e matrizes são restauradas. A extensão .MEM é atribuída aos arquivos de variável de memória.

MEMO NomeCampoMemo Especifica o campo Memo de onde as variáveis de memória e matrizes são restauradas.

ADDITIVE Evita que qualquer variável de memória ou matriz atualmente em memória seja apagada. Se ao número de variáveis ou matrizes que estiverem sendo acrescentadas com ADDITIVE soma-se o número de variáveis existentes, excedendo o limite de variável de memória, o Visual FoxPro trará o máximo possível de variáveis e matrizes para a memória, a partir do arquivo de variável de memória ou do campo Memo.

Se você restaurar uma variável de memória ou matriz, cujo nome seja igual ao de uma variável de memória ou matriz existente, o valor da variável de memória ou matriz existente será sobrescrito com o valor da variável de memória ou matriz restaurada.

Comentários

Quando RESTORE FROM é emitido em um programa, todas as variáveis de memória e matrizes PUBLIC e PRIVATE são restauradas como PRIVATE. Já as variáveis de memória e matrizes LOCAL são restauradas como LOCAL. Se RESTORE for emitido na janela Comando, as variáveis de memória e matrizes PUBLIC e PRIVATE serão restauradas como PUBLIC; as variáveis de memória e matrizes LOCAL são restauradas como LOCAL.

RESTORE FROM limpa da memória as variáveis de memória ou matrizes existentes no momento, a menos que você inclua a palavra-chave ADDITIVE. RESTORE FROM não afeta as variáveis de memória do sistema.

Observe que as variáveis de tipo de objeto não podem ser restauradas a partir de um arquivo de variável ou campo Memo.

RESTORE FROM, exemplo do comando

No exemplo a seguir, duas variáveis são criadas. Elas são salvas em um arquivo variável e restauradas sem eliminar as variáveis existentes.

gnVal1 = 50gcVal2 = 'Alô'SAVE TO tempCLEAR MEMORY

gdVal3 = DATE( )RESTORE FROM temp ADDITIVECLEARDISPLAY MEMORY LIKE g*

RESTORE SCREEN, comando

Restaura a janela principal do Visual FoxPro ou uma janela definida pelo usuário salva anteriormente no buffer da tela, em uma variável de memória ou em um elemento de matriz.

Sintaxe

RESTORE SCREEN[FROM NomeVarMem]

Argumentos

[Pág.: 327]

Page 328: 74039361 Visual FoxPro Comandos e Funcoes

FROM NomeVarMem Especifica o nome de uma variável de memória ou elemento de matriz do qual você deseja restaurar a imagem da tela ou da janela.

Comentários

Utilize SAVE SCREEN para colocar a janela principal do Visual FoxPro ou janela definida pelo usuário atual no buffer da tela, em uma variável de memória ou em um elemento de matriz.

As variáveis de memória ou elementos de matriz que contêm imagens de telas ou de janelas armazenadas apresentam um tipo de dado S quando são visualizados com DISPLAY ou LIST MEMORY. A janela principal do Visual FoxPro ou as janelas definidas pelo usuário salvas em variáveis de memória ou elementos de matriz podem também ser salvas em arquivos de variáveis de memória com SAVE TO e restauradas com RESTORE FROM.

Se emitido sem a cláusula FROM, RESTORE SCREEN restaura a janela principal do Visual FoxPro ou janela definida pelo usuário a partir do buffer de tela.

RESTORE WINDOW, comando

Restaura para a memória as definições 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 vírgulas.

ALL Restaura todas as definições de janelas no arquivo de janela ou campo Memo.

FROM NomeArquivo Especifica o arquivo de janela a partir do qual as janelas são restauradas. Os arquivos de janela têm a extensão .WIN. Se for atribuída outra extensão 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 são restauradas.

Comentários

Utilize SAVE WINDOW para armazenar as definições de janelas em um arquivo de janela ou em um campo Memo.

As janelas na memória com nomes iguais aos das que são restauradas serão 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 variável. Todas as janelas são limpas e a janela denominada wOutput1 é restaurada e ativada.

CLEARDEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Saída' ;

CLOSE FLOAT GROW SHADOW ZOOMSAVE WINDOW wOutput1 TO tempCLEAR WINDOWSRESTORE WINDOW wOutput1 FROM tempACTIVATE WINDOW wOutput1

[Pág.: 328]

Page 329: 74039361 Visual FoxPro Comandos e Funcoes

WAIT "A janela wOutput1 foi restaurada" WINDOWRELEASE WINDOW wOutput1

RESUME, comando

Continua a execução de um programa interrompido.

Sintaxe

RESUME

Comentários

Utilize SUSPEND para interromper a execução de um programa. O programa será reiniciado a partir da linha onde a execução foi interrompida.

SUSPEND e RESUME são excelentes ferramentas de depuração. Você pode interromper um programa para examinar o status atual do ambiente do Visual FoxPro, incluindo definições de menus, barras de menus, janelas ou variáveis de memória.

Importante Para evitar que os comandos que são executados quando um programa é interrompido interfiram na saída do programa subseqüente, emita CLEAR para limpar a janela principal do Visual FoxPro ou a janela ativa definida pelo usuário antes de retomar a execução do programa.

RETRY, comando

Executa novamente o comando anterior.

Sintaxe

RETRY

Comentários

RETRY retorna o controle para o programa de chamada e executa novamente a última linha executada no programa. A diferença entre RETRY e RETURN é que RETURN executa a linha seguinte no programa de chamada.

RETRY é útil nas rotinas de gerenciamento de erros. É utilizado freqüentemente para executar novamente um comando até que uma função de bloqueio de arquivo ou de registro consiga fazer o bloqueio. Você pode utilizar SET REPROCESS para controlar as tentativas da função de bloqueio. Prefere-se SET REPROCESS na maioria das situações de rede.

RETURN, comando

Retorna o controle do programa para o programa que originou a chamada.

Sintaxe

RETURN [eExpressão | TO MASTER | TO NomeProcedimento]

Argumentos

[Pág.: 329]

Page 330: 74039361 Visual FoxPro Comandos e Funcoes

eExpressão Especifica uma expressão retornada para o programa que originou a chamada. Se você omitir RETURN ou a expressão de retorno, verdadeiro (.T.) será retornado automaticamente para o programa de chamada.

TO MASTER Retorna o controle para o programa de chamada de nível mais alto.

TO NomeProcedimento Especifica o programa para o qual o controle é retornado.

Comentários

RETURN finaliza a execução de um programa, procedimento ou função e retorna o controle para o programa que originou a chamada, o programa que originou a chamada de nível mais alto, outro programa ou a janela Comando.

O Visual FoxPro libera variáveis de memória PRIVATE quando RETURN é executado.

Normalmente, RETURN é colocado no fim de um programa, procedimento ou função para retornar o controle para um programa de nível mais alto. No entanto, um RETURN implícito será executado se você omitir esse comando.

RETURN, exemplo do comando

No exemplo a seguir, a função longdate retorna uma seqüência de caracteres que é adequada para a impressão a partir de uma data.

SET CENTURY ON? longdate({02/16/95}) && Exibe quinta-feira, 16 de fevereiro, 1995

FUNCTION longdatePARAMETER mdateRETURN CDOW(mdate) + ', ' + MDY(mdate)

RGB( ), função

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.Comentários

O valor retornado por RGB( ) pode ser utilizado para definir as propriedades de cores, como BackColor e ForeColor.

RGBSCHEME( ), função

Retorna uma lista de par de cores RGB ou par de cores RGB a partir de um esquema de cores especificado.

[Pág.: 330]

Page 331: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

RGBSCHEME(nNúmero EsquemaCores [, nPosiçãoParesCores])

Tipos de retorno: Caractere

Argumentos

nNúmeroEsquemaCores Especifica o número do esquema de cores para o qual você deseja completar uma listagem de cores RGB. RGBSCHEME( ) retorna 10 pares de cores RGB.

nPosiçãoPareCores Retorna um único par de cores RGB a partir de um esquema de cores. nPosiçãoParesCores especifica a posição do par de cores RGB no esquema de cores. Por exemplo, se nPosiçãoParesCores for 4, o quarto par de cores RGB será retornado.

Comentários

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 numéricos para especificar as cores. Os pares de cores tradicionais utilizam letras para especificar as cores.

RGBSCHEME( ), exemplo da função

O exemplo a seguir exibe o terceiro par de cores RGB a partir do esquema de cores número 4.

CLEAR? RGBSCHEME(4,3)

RIGHT( ), função

Retorna o número especificado dos caracteres à extrema direita de uma seqüência de caracteres.

Sintaxe

RIGHT(cExpressão, nCaracteres)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres cujos caracteres à extrema direita são retornados.

nCaracteres Especifica o número de caracteres retornados da expressão de caracteres. RIGHT( ) retornará toda a expressão de caracteres se nCaracteres for maior do que o comprimento de cExpressão. RIGHT( ) retornará uma seqüência vazia se nCaracteres for negativa ou 0.

Comentários

Os caracteres são retornados a partir do último caractere à direita seguido por um número especificado de caracteres.

RIGHT( ), exemplo de função

CLEAR? RIGHT('Redmond, WA', 2) && Exibe WA

[Pág.: 331]

Page 332: 74039361 Visual FoxPro Comandos e Funcoes

RIGHTC( ), função

Retorna o número especificado dos caracteres à extrema direita de uma seqüência de caracteres.

Sintaxe

RIGHTC(cExpressão, nCaracteres)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres cujos caracteres à extrema direita são retornados.

nCaracteres Especifica o número de caracteres retornados da expressão de caracteres. RIGHTC( ) retornará toda a expressão de caracteres se nCaracteres for maior do que o comprimento de cExpressão. RIGHTC( ) retornará uma seqüência vazia se nCaracteres for negativa ou 0.

Comentários

RIGHTC( ) destina-se a expressões que contêm caracteres de byte duplo. Se a expressão contiver apenas caracteres de byte único, RIGHTC( ) será equivalente a RIGHT( ).

Os caracteres são retornados partindo do último caractere à direita e seguido por nCaracteres.

RLOCK( ), função

Tenta bloquear o(s) registro(s) de uma tabela.

Sintaxe

RLOCK([nÁreaTrabalho | cAliasTabela] | [cListaNúmerosRegistro, nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Lógico

Argumentos

nÁreaTrabalho | cAliasTabela Especifica o número da Área de trabalho ou alias de tabela para uma tabela aberta em outra Área de trabalho. Se você não especificar a Área de trabalho ou alias, RLOCK( ) irá tentar bloquear o registro atual da tabela na Área de trabalho selecionada no momento.

cListaNúmerosRegistro Especifica que RLOCK( ) tenta bloquear vários registros. A expressão de caractere cListaNúmerosRegistro especifica um ou mais números de registro, separados por vírgulas, que RLOCK( ) tenta bloquear. Por exemplo, para tentar bloquear os primeiros quatro registros de uma tabela, cListaNúmerosRegistro deve conter 1, 2, 3, 4.

Para bloquear vários registros, você deve ativar SET MULTILOCKS e incluir o número da Área de trabalho (nÁreaTrabalho) ou o alias (cAliasTabela) da tabela onde tentou bloquear vários registros.

Também é possível bloquear vários 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 número de registro. Esta especificação permite que você bloqueie o cabeçalho da tabela.

Importante Mantenha o cabeçalho da tabela bloqueado pelo menor tempo possível, pois outros usuários não poderão acrescentar registros à tabela enquanto aquele estiver bloqueado.

[Pág.: 332]

Page 333: 74039361 Visual FoxPro Comandos e Funcoes

Para liberar o bloqueio do cabeçalho da tabela, utilize UNLOCK RECORD 0, UNLOCK ou UNLOCK ALL.

Se o bloqueio de todos os registros especificados em cListaNúmerosRegistro for bem-sucedido, RLOCK( ) retornará verdadeiro (.T.). Se um ou mais registros especificados em cListaNúmerosRegistro não puderem ser bloqueados, RLOCK( ) retornará falso (.F.) e nenhum registro será bloqueado. Em ambos os casos, os bloqueios de registros existentes permanecem na mesma posição. O bloqueio de vários registros é um processo adicional — o posicionamento de bloqueios adicionais não libera os bloqueios existentes.

Quanto ao desempenho, sempre é mais rápido bloquear a tabela inteira do que bloquear até mesmo um pequeno número de registros.

Comentários

RLOCK( ) é idêntico a LOCK( ).

Se o(s) bloqueio(s) for(em) bem-sucedido(s), RLOCK( ) retornará verdadeiro (.T.). Os registros bloqueados encontram-se disponíveis para o acesso de leitura e gravação pelo usuário que posicionou os bloqueios. Já para os demais usuários da rede, a disponibilidade de acesso é somente para leitura.

A execução de RLOCK( ) não garante que a(s) tentativa(s) de bloqueio de registro tenha(m) sido bem-sucedida(s). Um bloqueio de registro não pode ser posicionado em um registro ou em uma tabela já bloqueados por outro usuário. Se, por qualquer motivo, o(s) bloqueio(s) de registro não puder(em) ser posicionado(s), RLOCK( ) retornará falso (.F.).

Como padrão, RLOCK( ) tenta bloquear um registro uma vez. Utilize SET REPROCESS para tentar novamente e de forma automática um bloqueio de registro quando a primeira tentativa falhar. SET REPROCESS controla o número de tentativas de bloqueio ou sua duração quando a tentativa de bloqueio inicial é malsucedida. Para obter maiores informações sobre SET REPROCESS e bloqueio de tabelas, consulte SET REPROCESS.

SET MULTILOCKS determina se você pode bloquear vários registros em uma tabela. Se SET MULTILOCKS estiver desativado (o padrão), você só poderá bloquear um único registro da tabela. Se SET MULTILOCKS estiver ativado, você poderá bloquear vários registros da tabela. Para obter maiores informações, consulte SET MULTILOCKS.

Um registro de tabela só pode ser desbloqueado pelo usuário que fez o bloqueio. Os bloqueios de registro podem ser liberados da seguinte forma: emitindo UNLOCK, fechando a tabela ou saindo do Visual FoxPro.

UNLOCK pode ser utilizado para liberar bloqueios de registro na Área de trabalho atual, em uma Área de trabalho específica ou em todas. Para obter maiores informações, consulte UNLOCK.

Ao passar SET MULTILOCKS de ativado (ON) para desativado (OFF) ou vice-versa, executa-se implicitamente UNLOCK ALL. Todos os bloqueios de registro de todas as Áreas de trabalho são liberados.

Para fechar tabelas, utilize USE, CLEAR ALL ou CLOSE DATABASES.

Para obter maiores informações sobre o bloqueio de registros e arquivos e o compartilhamento de tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado”, no Guia do Desenvolvedor.

RLOCK( ), exemplo de função

O exemplo a seguir bloqueia e desbloqueia os quatro primeiros registros nas tabelas customer e employee.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')SET REPROCESS TO 3 AUTOMATICSTORE '1,2,3,4' TO gcRecListgcOldExc = SET('EXCLUSIVE')SET EXCLUSIVE OFFSELECT 0

[Pág.: 333]

Page 334: 74039361 Visual FoxPro Comandos e Funcoes

USE employee && Abre a tabela EmployeeSELECT 0USE customer && Abre a tabela Customer? LOCK('1,2,3,4', 'customer') && Bloqueia os 4 primeiros registros em customer? RLOCK(gcRecList, 'employee') && Bloqueia os 4 primeiro registros em employeeUNLOCK IN customerUNLOCK IN employee

SET EXCLUSIVE &gcOldExc

ROUND( ), função

Retorna uma expressão numérica arredondada para um número especificado de casas decimais.

Sintaxe

ROUND(nExpressão, nCasasDecimais)

Tipos de retorno: Numérico

Argumentos

nExpressão Especifica a expressão numérica cujo valor será arredondado.

nCasasDecimais Especifica o número de casas decimais para o arredondamento de nExpressão.

Se nCasasDecimais for negativo, ROUND( ) retornará um número completo contendo um número de zeros igual a nCasasDecimais à esquerda da vírgula decimal. Por exemplo, se nCasasDecimais for igual a –2, o primeiro e o segundo dígitos à esquerda da vírgula decimal terão o valor igual a 0.

Comentários

O valor que ROUND( ) retorna tem o mesmo número de casas decimais de nCasasDecimais. ROUND( ) ignora o número de casas decimais especificado por SET DECIMALS.

ROUND( ), exemplo de função

SET DECIMALS TO 4SET FIXED ON && Ajuste o displayCLEAR

? ROUND(1234.1962, 3) && Exibe 1234.1960? ROUND(1234.1962, 2) && Exibe 1234.2000? ROUND(1234.1962, 0) && Exibe 1234.0000? ROUND(1234.1962, -1) && Exibe 1230.0000? ROUND(1234.1962, -2) && Exibe 1200.0000? ROUND(1234.1962, -3) && Exibe 1000.0000SET FIXED OFF && Restaura padrões de incializaçãoSET DECIMALS TO 2

RTOD( ), função

Converte radianos em graus.

Sintaxe

RTOD(nExpressão)

Tipos de retorno: Numérico

Argumentos

[Pág.: 334]

Page 335: 74039361 Visual FoxPro Comandos e Funcoes

nExpressão Especifica a expressão numérica representando radianos que RTOD( ) converte em graus.

Comentários

RTOD( ) converte o valor (em radianos) de uma expressão numérica em um valor equivalente em graus.

RTOD( ) é útil ao se trabalhar com as funções trigonométricas COS( ), SIN( ) e TAN( ) do Visual FoxPro.

Utilize DTOR( ) para converter graus em radianos.

RTOD( ), exemplo de função

CLEAR? RTOD(ACOS(0)) && Exibe 90.00STORE -1 to gnArcAngle? RTOD(ACOS(gnArcAngle)) && Exibe 180.00? RTOD(ACOS(SQRT(2)/2)) && Exibe 45.00

RTRIM( ), função

Retorna uma seqüência de caracteres que resulta da remoção de espaços à direita de uma expressão de caracteres.

Sintaxe

RTRIM(cExpressão)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caractere da qual os espaços à direita foram removidos.

Comentários

RTRIM( ) pode ser utilizada para confirmar a remoção dos espaços dos dados digitados por um usuário. RTRIM( ) é idêntica a TRIM( ).

RTRIM( ), exemplo de função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerCLEAR? 'O contato de '+ RTRIM(company) + ' é ' + contato

RUN | !, comando

Executa programas ou comandos operacionais externos.

Sintaxe

RUN [/N [K]] ComandoMS-DOS | NomePrograma – Ou –! [/N [K]] ComandoMS-DOS | NomePrograma

[Pág.: 335]

Page 336: 74039361 Visual FoxPro Comandos e Funcoes

Argumentos

ComandoMS-DOS Especifica o comando do MS-DOS a ser executado. Consulte a documentação do MS-DOS para obter maiores informações sobre os comandos disponíveis.

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 (não substitua N por um valor numérico nem inclua K) para executar outro aplicativo do Windows.

Comentários

É possível 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 diretório atual ou esse arquivo deverá estar localizado onde o parâmetro MS-DOS COMSPEC possa encontrá-lo. Para obter maiores informações sobre COMSPEC, consulte a documentação do MS-DOS.

Cuidado Não utilize RUN para executar programas de reorganização de disco, como o CHKDSK, a partir do Visual FoxPro. Esses programas modificam o conteúdo 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 não possuir uma extensão, 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 execução de um programa não Windows no Windows. Você poderá especificar parâmetros para o programa, ou seja, se ele é executado em uma janela ou na tela inteira, o total de memória alocado para o programa etc.

Se o PIF for encontrado, o programa nele especificado será executado com os parâmetros PIF. Caso contrário, será feita uma procura no caminho do MS-DOS para encontrar um arquivo executável com o nome que você indicar.

Quando um PIF não é encontrado, o Visual FoxPro utiliza o FOXRUN.PIF, um PIF instalado no diretório do Visual FoxPro. O FOXRUN.PIF é configurado para executar o programa em uma janela. É possível modificar o FOXRUN.PIF para que execute programas com outra configuração.

FOXRUN.PIF O FOXRUN.PIF permite a execução de programas e comandos do MS-DOS e do Windows a partir do Visual FoxPro. O FOXRUN.PIF deve estar no mesmo diretório que VFP.EXE no Visual FoxPro.

/N significa NOWAIT. Inclua a letra N (não substitua N por um valor numérico nem inclua K) para executar outro aplicativo do Windows. Por exemplo, a instrução a seguir abre o acessório 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 através 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 operações padrão do Windows.

Para especificar como o aplicativo do Windows será aberto, inclua um valor numérico opcional imediatamente após /N. Não inclua espaços entre /N e o valor numérico. A tabela a seguir lista os valores numéricos que podem ser incluídos e descreve o estado do aplicativo do Windows quando ele é aberto.

[Pág.: 336]

Page 337: 74039361 Visual FoxPro Comandos e Funcoes

Valor Atributos do aplicativo

1 Ativo e tamanho normal2 Ativo e minimizado3 Ativo e maximizado4 Inativo e tamanho normal7 Inativo e minimizado

Executando programas do MS-DOS no Visual FoxPro Como padrão, o FOXRUN.PIF executa o programa do MS-DOS externo especificado em uma janela. Enquanto o programa ou comando do MS-DOS é executado, o título da janela é Executar Comando do FoxPro. No Visual FoxPro, a janela Executar Comando do FoxPro é fechada após a execução 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 (padrão no Visual FoxPro) usando a caixa de verificação Fechar janela ao sair. Também é possível abrir programas externos em uma tela inteira selecionando Tela inteira, Alocar memória para o programa, etc.

Considerações de memória Como padrão, o FOXRUN.PIF aloca um mínimo de 256K de memória para a execução de um comando ou programa externo. Se você não tiver 256K de memória 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 memória adicional.· Edite o FOXRUN.PIF para reduzir o total exigido de memória 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 memória necessário na caixa de texto KB Requerido.

SAVE SCREEN, comando

Salva uma imagem da janela principal do Visual FoxPro ou de uma janela ativa definida pelo usuário no buffer de tela, em uma variável de memória ou em um elemento de matriz.

Sintaxe

SAVE SCREEN [TO NomeVar]

Argumentos

TO NomeVar] Especifica a variável de memória ou o elemento de matriz na qual a imagem da janela ou da tela é salva.

Comentários

Utilize RESTORE SCREEN para exibir novamente imagens salvas no buffer de tela, em uma variável de memória ou em um elemento de matriz.Quando visualizadas com DISPLAY ou LIST MEMORY, as variáveis de memória ou os elementos de matriz, que contêm uma imagem da janela principal do Visual FoxPro ou de uma janela definida pelo usuário, têm o tipo de dado S.

Se emitido sem a cláusula TO NomeVarMem, SAVE SCREEN salva a janela principal do Visual FoxPro ou a janela definida pelo usuário no buffer de tela.

SAVE WINDOWS, comando

Salva todas as definições de janelas ou as definições de janelas especificadas em um arquivo de janela ou campo memo.

[Pág.: 337]

Page 338: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

SAVE WINDOWS ListaNomesJanelas | ALLTO NomeArquivo | TO MEMO NomeCampoMemo

Argumentos

ListaNomesJanelas Especifica uma ou mais janelas que devem ser salvas. Separe os nomes das janelas com vírgulas.

ALL Salva todas as definições de janelas no arquivo de janela ou no campo memo.

TO NomeArquivo Especifica o arquivo de janela no qual as definições de janelas são salvas.

Se você não especificar uma extensão ao nomear o arquivo, será atribuída a extensão padrão .WIN. Se for especificada uma extensão diferente, ao serem salvas as definições de janelas em um arquivo, deverá incluir a extensão, quando restauradas no arquivo.

TO MEMO NomeCampoMemo Especifica o campo memo no qual as definições de janelas são salvas. A tabela que contém o campo memo deve estar aberta, mas não é necessário que ela esteja na Área de trabalho atualmente selecionada. Para salvar definições de janelas em uma tabela aberta em outra Área de trabalho, inclua o alias da tabela quando especificar o campo memo.

Comentários

Utilize RESTORE WINDOW para restaurar definições de janelas de um arquivo de janela ou de um campo memo. O status de cada janela também será salvo. Por exemplo, se a janela estiver oculta, quando for salva em um arquivo ou campo memo, ela permanecerá oculta quando for restaurada.

SAVE WINDOWS, exemplo do comando

No exemplo a seguir, uma janela denominada wOutput1 é criada e a definição da janela é salva no arquivo TEMP.WIN. Todas as janelas são limpas e wOutput1 é restaurada do arquivo e ativada.

CLEARDEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Saída' ;

CLOSE FLOAT GROW SHADOW ZOOMACTIVATE WINDOW wOutput1 @ 1,1 SAY 'Este é o conteúdo da janela'SAVE WINDOWS wOutput1 TO tempCLEAR WINDOWSWAIT WINDOW 'A janela foi salva - Pressione uma tecla'

RESTORE WINDOW wOutput1 FROM tempACTIVATE WINDOW wOutput1 WAIT WINDOW 'A janela foi restaurada - Pressione uma tecla'

DEACTIVATE WINDOW wOutput1 RELEASE WINDOW wOutput1 DELETE FILE temp.win

SCAN ... ENDSCAN, comando

Move o ponteiro do registro pela tabela atualmente selecionada e executa um bloco de comandos para cada registro que satisfaça as condições especificadas.

Sintaxe

SCAN [NOOPTIMIZE][Escopo] [FOR lReferência1] [WHILE lReferência2]

[Comandos][LOOP]

[Pág.: 338]

Page 339: 74039361 Visual FoxPro Comandos e Funcoes

[EXIT]ENDSCAN

Argumentos

NOOPTIMIZE Impede a otimização de Rushmore de SCAN.

Para obter maiores informações, consulte SET OPTIMIZE e “Compreendendo a tecnologia Rushmore” no Capítulo 15, “Otimizando Aplicativos”, no Guia do Desenvolvedor.

Escopo Especifica um intervalo de registros a ser examinado. Apenas os registros dentro deste intervalo serão examinados. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST. Para obter maiores informações sobre cláusulas de escopo, consulte “Cláusulas de escopo”.

O escopo padrão para SCAN é todos os registros (ALL)

FOR lReferência1 Executa comandos apenas para os registros para os quais lReferência1 resulta em verdadeiro (.T.) A inclusão da cláusula FOR permite filtrar os registros que você não deseja examinar.

Rushmore otimizará uma consulta criada com SCAN ... FOR se lReferência1 for uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte “SET OPTIMIZE” e “Compreendendo a tecnologia Rushmore” no Capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

WHILE lReferência2 Especifica uma condição pela qual os comandos serão executados desde que lReferência2 resulte em verdadeiro (.T.).

Comandos Especifica os comandos do Visual FoxPro que devem ser executados.

LOOP Retorna o controle diretamente para SCAN. LOOP pode ser colocado em qualquer lugar entre SCAN e ENDSCAN.

EXIT Transfere o controle do programa de dentro do loop SCAN ... ENDSCAN para o primeiro comando depois de ENDSCAN. EXIT pode ser colocado em qualquer lugar entre SCAN e ENDSCAN.

ENDSCAN Indica o fim do procedimento SCAN.

Comentários

O comando SCAN avança automaticamente o ponteiro do registro para o próximo registro que satisfaça as condições especificadas e executa o bloco de comandos.

Você pode colocar comentários na mesma linha depois de ENDSCAN. Os comentários são ignorados durante a compilação e a execução do programa.

SCAN ... ENDSCAN, exemplo do comando

O exemplo a seguir utiliza um loop SCAN ... ENDSCAN para exibir todas as empresas na Suécia.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')UTILIZE customer && Abra a tabela CustomerCLEAR

SCAN FOR UPPER(country) = 'SWEDEN'? contato, empresa, cidade

[Pág.: 339]

Page 340: 74039361 Visual FoxPro Comandos e Funcoes

ENDSCAN

SCATTER, comando

Copia dados do registro atual para um conjunto de variáveis de memória ou para uma matriz.

Sintaxe

SCATTER[FIELDS ListaNomesCampos| FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura] [MEMO]TO NomeMatriz | TO NomeMatriz BLANK | MEMVAR | MEMVAR BLANK| NAME NomeObjeto

Argumentos

FIELDS ListaNomesCampos Especifica os campos que devem ser transferidos para as variáveis de memória ou para a matriz. Todos os campos serão transferidos se você omitir FIELDS ListaNomesCampos. Se você colocar depois da lista de campos a palavra-chave MEMO, ela poderá conter campos memo. SCATTER ignora sempre campos gerais e de figura, mesmo que você inclua MEMO.

FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura Você poderá transferir seletivamente campos para variáveis de memória ou para uma matriz incluindo a cláusula LIKE ou EXCEPT ou ambas. Se incluir LIKE Estrutura, os campos que correspondem à Estrutura serão transferidos para as variáveis de memória ou a matriz. Se incluir EXCEPT Estrutura, todos os campos, exceto os que correspondem à Estrutura, serão transferidos para as variáveis de memória ou a matriz.

Estrutura suporta caracteres curinga. Por exemplo, para transferir todos os campos que começam com as letras A e P para as variáveis de memória ou a matriz, utilize:

SCATTER FIELDS LIKE A*,P* TO myarray

A cláusula LIKE pode ser combinada com a cláusula EXCEPT:

SCATTER FIELDS LIKE A*,P* EXCEPT PARTNO* TO myarray

MEMO Especifica que a lista de campos inclui um ou vários campos memo. Como padrão, os campos memo são ignorados em SCATTER.

Para copiar campos memo grandes para variáveis de memória ou para uma matriz, é necessário que haja memória suficiente. O Visual FoxPro irá gerar uma mensagem de erro caso não haja memória suficiente. Se um campo memo for muito grande para caber na memória, nem ele ou qualquer outro campo memo da lista será copiado. Se um campo memo não for copiado, a sua variável de memória ou o seu elemento de matriz estará definido como falso (.F.).

TO NomeMatriz Especifica a matriz para a qual o conteúdo do registro é copiado. Começando do primeiro campo, SCATTER copia em ordem seqüencial o conteúdo de cada campo para cada elemento da matriz.

Os elementos de matriz extras permanecerão inalterados se o número de elementos da matriz especificada for maior do que o número de campos. Caso a matriz não exista ou caso o número de elementos nela contidos seja menor do que o número de campos, uma nova matriz será criada automaticamente. Os elementos de matriz têm o mesmo tamanho e os mesmos tipos de dados que os campos correspondentes.

TO NomeMatriz BLANK Cria uma matriz com elementos vazios que têm o mesmo tamanho e o mesmo tipo dos campos da tabela.

MEMVAR Copia os dados para um conjunto de variáveis de memória em vez de copiá-los para uma matriz. SCATTER cria uma variável de memória para cada campo da tabela e preenche cada uma com dados do campo correspondente no registro atual, atribuindo à variável o mesmo nome, tamanho e tipo do campo.

[Pág.: 340]

Page 341: 74039361 Visual FoxPro Comandos e Funcoes

Uma variável de memória será criada para cada campo da lista de campos se uma lista de campos estiver incluída.

Anteceda o nome da variável de memória com o qualificador M. para fazer referência a uma variável de memória que tenha o mesmo nome de um campo da tabela atual.

Importante Não inclua TO com MEMVAR. O Visual FoxPro criará uma matriz denominada MEMVAR se você incluir TO.

MEMVAR BLANK Cria um conjunto de variáveis de memória vazias. Cada uma delas tem o mesmo nome, o mesmo tipo de dado e o mesmo tamanho do seu campo. Se uma lista de campos estiver incluída, será criada uma variável de memória para cada campo da lista.

NAME NomeObjeto Cria um objeto cujas propriedades têm o mesmo nome dos campos da tabela. Os valores de cada propriedade do objeto são o conteúdo dos campos da tabela. Propriedades não são criadas para campos memo ou gerais da tabela.

Para fazer referência a uma propriedade de um objeto que tenha o mesmo nome de uma tabela aberta, anteceda o nome da propriedade com o qualificador M.. Por exemplo:

USE customerSCATTER NAME customer

? customer.company && Retorna o valor da tabela? M.customer.company && Retorna o valor da propriedade do objeto

Comentários

SCATTER e COPY TO ARRAY são semelhantes. COPY TO ARRAY copia vários registros para uma matriz, enquanto que SCATTER copia apenas um registro para uma matriz ou para um conjunto de variáveis de memória. SCATTER criará automaticamente a matriz ou as variáveis de memória, caso elas ainda não existam.

Utilize GATHER para copiar elementos de matriz ou variáveis de memória para os registros da tabela.

SCATTER, exemplo dos comandos

Exemplo 1Este exemplo utiliza SCATTER para criar um conjunto de variáveis com base nos campos na tabela de teste. Em seguida, a cada campo é atribuído um valor e um novo registro em branco é adicionado à tabela. Os dados são copiados à tabela, utilizando-se o comando GATHER.

CREATE TABLE Test FREE ;(Object C(10), Color C(16), SqFt n(6,2))

SCATTER MEMVAR BLANKm.Object="Caixa"m.Color="Vermelho"m.SqFt=12.5APPEND BLANKGATHER MEMVARBROWSEExemplo 2

Este exemplo utiliza SCATTER junto à cláusula NAME para criar um objeto com propriedade, com base nos campos na tabela. Às propriedades do objeto são atribuídos valores e um novo registro em branco é adicionado à tabela. Os dados são copiados para o novo registro, utilizando-se GATHER com a cláusula NAME.

CREATE TABLE Test FREE ;(Object C(10), Color C(16), SqFt n(6,2))

SCATTER NAME oTest BLANK

[Pág.: 341]

Page 342: 74039361 Visual FoxPro Comandos e Funcoes

oTest.Object="Caixa"oTest.Color="Vermelho"oTest.SqFt=12.5APPEND BLANKGATHER NAME oTestRELEASE oTestBROWSE

SCHEME( ), função

Retorna uma lista de par de cores ou um par de cores único, a partir de um esquema de cores especificado.

Sintaxe

SCHEME(nNúmeroEsquema [, nNúmeroParCores])

Tipos de retorno: Caractere

Argumentos

nNúmeroEsquema Especifica o número do esquema de cores para o qual você deseja uma lista de par de cores completa. SCHEME( ) retorna dez pares de cores.

nNúmeroParCores Especifica a posição de um par de cores no esquema de cores e SCHEME( ) retorna apenas este par de cores. Por exemplo, se nNúmeroParCores for 4, SCHEME( ) retornará o quarto par de cores a partir do esquema de cores.

SCHEME( ), exemplo da função

O exemplo a seguir retorna o terceiro par de cores, a partir do esquema de cores número 4:? SCHEME(4,3)

SCOLS( ), função

Retorna o número de colunas disponíveis na janela principal do Visual FoxPro.

Sintaxe

SCOLS( )

Tipos de retorno: Numérico

Comentários

O valor retornado por SCOLS( ) depende do modo de exibição atual. Para alterar o modo de exibição, utilize SET DISPLAY.

SCROLL, comando

Rola para cima, para baixo, para a esquerda ou para a direita uma área da janela principal do Visual FoxPro ou de uma janela definida pelo usuário.

Sintaxe

SCROLL nLinha1, nColuna1, nLinha2, nColuna2, nLinhasRoladas [, nColunasRoladas]

Argumentos

[Pág.: 342]

Page 343: 74039361 Visual FoxPro Comandos e Funcoes

nLinha1, nColuna1, nLinha2, nColuna2 Especifica a área retangular em que ocorre a rolagem na janela principal do Visual FoxPro ou na janela ativa definida pelo usuário. nLinha1, nColuna1 especifica o canto superior esquerdo da área e nLinha2, nColuna2 especifica o canto inferior direito.

nLinhasRoladas Especifica quantas linhas devem ser roladas para cima ou para baixo dentro da área retangular. Caso a expressão numérica nLinhasRoladas seja positiva, o Visual FoxPro irá rolar este número de linhas para cima. Caso nLinhasRoladas seja negativa, o Visual FoxPro irá rolar este número de linhas para baixo. Se nLinhasRoladas for 0 e você omitir nColunasRoladas, o Visual FoxPro irá limpar a área retangular.

nColunasRoladas Especifica quantas colunas devem ser roladas para a direita ou para a esquerda dentro da área retangular. Caso a expressão numérica nColunasRoladas seja positiva, o Visual FoxPro irá rolar este número de colunas para a direita. Caso nColunasRoladas seja negativa, o Visual FoxPro irá rolar este número de colunas para a esquerda. Caso você inclua nLinhasRoladas e nColunasRoladas, o Visual FoxPro irá rolar a área na diagonal.

SCROLL, exemplo do comando

O comando a seguir rola uma pequena área retangular:

CLEAR@ 4, 1 FILL TO 10, 8 COLOR GR+/BWAIT WINDOW 'Pressione a tecla para rolar para o canto superior esquerdo'SCROLL 0, 0, 5, 5, -2, 1

SEC( ) , função

Retorna a parte de segundos de uma expressão DateTime.

Sintaxe

SEC(tExpressão)

Tipos de retorno: Numérico

Argumentos

tExpressão Especifica a expressão DateTime a partir da qual SEC( ) retorna os segundos. Se tExpressão contiver apenas uma data e não uma hora, o Visual FoxPro adicionará a hora padrão de meia-noite (12:00:00 A.M.) em tExpressão.

SEC( ), exemplo da função

O exemplo a seguir exibe a parte de segundos da hora atual e a parte de segundos de uma hora específica.

CLEAR? SEC(DATETIME( ))? SEC({10:42:16am}) && Exibe 16

SECONDS( ), função

Retorna o número de segundos decorridos desde a meia-noite.

Sintaxe

SECONDS( )

Tipos de retorno: Numérico

[Pág.: 343]

Page 344: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

SECONDS( ) retorna um valor numérico no formato decimal, com uma resolução de 1 milisegundo. Se você estiver executando o Windows NT, a resolução será 10 milisegundos.

SECONDS( ), exemplo da função

CLEAR? SECONDS( )? SECONDS( )/(60 * 60)

SEEK( ), função

Localiza uma tabela indexada para a primeira ocorrência de um registro cuja chave de índice corresponde à expressão especificada. Retorna um valor lógico indicando se a busca foi realizada com sucesso.

Sintaxe

SEEK(eExpressão [, nÁreaTrabalho | cAliasTabela[, nNúmeroÍndice | cIDXNomeArquivoÍndice | cNomeMarca]])

Tipos de retorno: Lógico

Argumentos

eExpressão Especifica a expressão da chave de índice para a qual você deseja que SEEK( ) faça a busca.

nAreaTrabalho Especifica o número da Área de trabalho que é localizado para a chave de índice.

cAliasTabela Especifica que o alias da tabela é localizado.

Se você omitir nÁreaTrabalho e cAliasTabela, a tabela na Área de trabalho selecionada atualmente será localizada.

nNúmeroÍndice Especifica o número do arquivo de índice ou marca utilizado para localizar a chave de índice. nNúmeroÍndice refere-se aos arquivos de índice conforme eles são listados em USE ou SET INDEX. Os arquivos .IDX abertos são numerados primeiro na ordem que aparecem em USE ou SET INDEX. As marcas no arquivo .CDX estrutural (se existir) são então numeradas na ordem em que são criadas. Finalmente, as marcas em qualquer arquivo .CDX aberto independente são numeradas na ordem em que foram criadas. Para obter maiores informações sobre numeração de índice, consulte SET ORDER.

cIDXNomeArquivoÍndice Especifica um arquivo .IDX que é utilizado para localizar a chave de índice.

cNomeMarca Especifica uma marca para o arquivo .CDX que é utilizado para localizar a chave de índice. O nome da marca pode ser proveniente de um arquivo .CDX estrutural ou qualquer arquivo.CDX aberto independente.

Observação O arquivo .IDX terá prioridade se existir arquivo .IDX e nomes de marcas duplicados.Comentários

Você pode utilizar SEEK( ) apenas com uma tabela com uma definição de ordem de índice e você pode localizar apenas uma chave de índice. A correspondência deve ser exata, a menos que SET EXACT esteja definido para OFF.

Se houver uma correspondência, SEEK( ) retornará verdadeiro (.T.) e o ponteiro do registro mudará para o registro correspondente. Se não houver correspondência, SEEK( ) retornará falso (.F.) e o ponteiro do registro mudará para o final do arquivo. A emissão de SEEK( ) é equivalente à emissão de SEEK e FOUND( ) em seguida.

[Pág.: 344]

Page 345: 74039361 Visual FoxPro Comandos e Funcoes

Se você omitir os argumentos nNúmeroÍndice, IDXNomeArquivoÍndice e cNomeMarca, SEEK( ) utilizará a marca de índice ou índice de controle principal para procurar a chave de índice.

SEEK( ), exemplo da função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer ORDER cust_id && Abre a tabela Customer? SEEK('CHOPS') && Retorna .T., registro localizado

SEEK, comando

Procura uma tabela para a primeira ocorrência de um registro cuja chave de índice corresponde a uma expressão geral, em seguida move o ponteiro de registro ao registro correspondente.

Sintaxe

SEEK eExpressão[ORDER nNúmeroÍndice | IDXNomeArquivoÍndice | [TAG] NomeMarca [OF CDXNomeArquivo] [ASCENDING | DESCENDING]][IN nAreaTrabalho | cAliasTabela]

Argumentos

eExpressão Especifica a chave de índice para a qual SEEK faz a busca. eExpressão pode ser nulo.

ORDER nNúmeroÍndice Especifica o número do arquivo de índice ou marca que é utilizado para procurar a chave de índice. nNúmeroÍndice refere-se aos arquivos de índice como estão listados em USE ou SET INDEX. Os arquivos .IDX abertos são numerados primeiro na ordem em que aparecem em USE ou SET INDEX. As marcas no arquivo .CDX estrutural (se existir um) são então numeradas na ordem em que foram criadas. Finalmente, as marcas em qualquer arquivo .CDX aberto independente são numeradas na ordem que são criadas. Consulte, SET ORDER para obter maiores informações sobre numeração de índice.

ORDER NomeArquivoÍndiceIDX Especifica um arquivo .IDX que é utilizado para procurar a chave de índice.

ORDER [TAG] NomeMarca [OF CDXNomeArquivo] Especifica uma marca de um arquivo .CDX que é utilizado para procurar a chave de índice. O nome da marca pode ser de um arquivo .CDX estrutural ou qualquer arquivo .CDX aberto independente.

Se nomes de marcas idênticos existirem em arquivos .CDX abertos independentes, utilize OF CDXNomeArquivo para especificar o arquivo.CDX que contém a marca.

Observação O arquivo .IDX terá prioridade se existirem nomes de marca e arquivo .IDX duplicados.

ASCENDING Especifica que a tabela é procurada em ordem ascendente.

DESCENDING Especifica que a tabela é procurada em ordem descendente.IN nÁreaTrabalho Especifica que o número da Área de trabalho da tabela é procurado.

IN cAliasTabela Especifica o alias da tabela que é procurada.

Se você omitir IN nÁreaTrabalho e IN cAliasTabela, a tabela na Área de trabalho atualmente selecionada será procurada.

Comentários

Você pode utilizar SEEK apenas com tabelas indexadas e pode procurar apenas na chave de índice. A correspondência deve ser exata a menos que SET EXACT seja definido para OFF.

[Pág.: 345]

Page 346: 74039361 Visual FoxPro Comandos e Funcoes

Se SEEK procurar um registro com uma chave de índice correspondente, RECNO( ) retornará o número de registro do registro correspondente, FOUND( ) retornará verdadeiro (.T.) e EOF( ) retornará falso (.F.).

Se uma chave correspondente não for localizada, RECNO( ) retornará o número de registros na tabela mais 1, FOUND( ) retornará falso (.F.) e EOF( ) retornará verdadeiro (.T.).

Se SET NEAR estiver on, o ponteiro do registro será posicionado imediatamente após o registro com a chave de índice mais próxima. Se SET NEAR estiver off, o ponteiro do registro será posicionado no final do arquivo. Em qualquer um dos casos, RECNO() retornará o número de registro do registro mais próximo.

SEEK, exemplo do comando

No exemplo a seguir, customer é aberta e indexada no campo company. SEEK é utilizado para localizar a expressão de chave do índice que corresponde ao valor contido na variável gcSeekVal.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer ORDER company && Abre a tabela Customer

SET EXACT OFFSTORE 'B' TO gcSeekValSEEK gcSeekVal

IF FOUND( )DISPLAY FIELDS company, contact

ENDIF

SELECT( ), função

Retorna o número da área de trabalho atualmente selecionada ou da área de trabalho não utilizada que possui o número mais alto.

Sintaxe

SELECT([ 0 | 1 | cAliasTabela ])

Tipos de retorno: Numérico

Argumentos

0 Especifica que SELECT( ) retornará o número da área de trabalho atual.

1 Especifica que SELECT( ) retornará a área de trabalho não utilizada, que possui o número mais alto.

cAliasTabela Especifica o alias da tabela da qual SELECT( ) retornará a área de trabalho.

Comentários

SELECT( ) retornará o número da área de trabalho atual se SET COMPATIBLE estiver desativado (OFF). Se SET COMPATIBLE estiver ativado (ON), SELECT( ) retornará o número da área de trabalho não utilizada que possui o número mais alto.

É possível selecionar (ativar) uma área de trabalho com SELECT.

SELECT( ), exemplo da função

CLOSE DATABASES

[Pág.: 346]

Page 347: 74039361 Visual FoxPro Comandos e Funcoes

SET COMPATIBLE ONOPEN DATABASE (HOME( ) + 'samples\data\testdata')

SELECT 0 && Área de trabalho não usadaUSE customer && Abre a tabela Customer

SELECT 0 && Área de trabalho não usadaUSE orders && Abre a tabela Orders

CLEAR? SELECT( ) && Retorna 3, área de trabalho disponível mais lenta

SELECT, comando

Ativa a Área de trabalho especificada.

Sintaxe

SELECT nÁreaTrabalho | cAliasTabela

Argumentos

nÁreaTrabalho Especifica uma Área de trabalho a ser ativada. Se nÁreaTrabalho for 0, a Área de trabalho não utilizada com o menor número será ativada.

cAliasTabela Especifica uma Área de trabalho que contém uma tabela aberta a ser ativada. cAliasTabela é o alias da tabela aberta. Você também pode incluir uma letra de A a J para cAliasTabela para ativar uma das dez primeiras áreas de trabalho.

Comentários

Como padrão, o número da Área de trabalho 1 está ativo quando você inicia o Visual FoxPro.

Observação Os campos nas tabelas abrem em qualquer Área de trabalho e podem ser incluídos nos comandos e funções do Visual FoxPro. Utilize os formatos a seguir para acessar os campos em uma tabela aberta em uma Área de trabalho diferente da atual: alias.field ou alias -> field.

SELECT, exemplo do comando

O exemplo a seguir demonstra formas de selecionar áreas de trabalho.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')SELECT 1 && Área de trabalho 1USE customer && Abre a tabela Customer

SELECT 2 && Área de trabalho 2USE orders && Abre a tabela Orders

SELECT customer && Área de trabalho 1BROWSE

SELECT B && Área de trabalho 2BROWSE

COMANDOS SET

SET ALTERNATE, comando

Direciona saída de tela ou impressora criada com ?, ??, DISPLAY ou LIST a um arquivo texto.

Sintaxe

SET ALTERNATE ON | OFF – Ou –

[Pág.: 347]

Page 348: 74039361 Visual FoxPro Comandos e Funcoes

SET ALTERNATE TO [NomeArquivo [ADDITIVE]]

Argumentos

ON Direciona saída para o arquivo texto.

OFF (Padrão) Desativa a saída para o arquivo texto.

TO NomeArquivo Cria o arquivo texto, ao qual é atribuído a extensão .TXT padrão, a não ser que você inclua uma extensão diferente com o nome do arquivo.

Se você utilizar SET ALTERNATE TO sem NomeArquivo, o último arquivo criado utilizando SET ALTERNATE TO NomeArquivo será fechado.

ADDITIVE Inclui saída no final do arquivo especificado com NomeArquivo. Se ADDITIVE for omitido, o conteúdo do arquivo será sobrescrito.

SET ASSERTS, comando

Especifica se os comandos ASSERT serão avaliados ou ignorados.

Sintaxe

SET ASSERTS ON | OFF

Argumentos

ON Especifica ao Visual FoxPro que execute os comandos ASSERT.

OFF Especifica ao Visual FoxPro que ignore os comandos ASSERT.

Comentários

ASSERTS é desativado se o botão Ignorar todos for selecionado na caixa de mensagem exibida após uma instrução.

SET AUTOSAVE, comando

Determina se o Visual FoxPro descarrega buffers de dados para o disco, quando você sai de um READ ou retorna para a janela Comando.

Sintaxe

SET AUTOSAVE ON | OFF

Argumentos

ON Especifica que os buffers sejam descarregados para disco sempre que você sair de um READ ou retornar para a janela Comando.

OFF Especifica que os buffers sejam descarregados para disco, apenas se passarem cinco minutos desde o último descarregamento e apenas quando você sair de um READ ou retornar para a janela Comando.

OFF é o padrão para SET AUTOSAVE.

[Pág.: 348]

Page 349: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

O descarregamento de buffers pode reduzir a chance de perda de dados se houver queda de energia.

É feito um escopo de SET AUTOSAVE para a sessão de dados atual.

SET BELL, comando

Ativa ou desativa a campainha do computador e define os atributos de campainha.

Sintaxe

SET BELL ON | OFF – Ou –SET BELL TO [cNomeArquivoWAV, nDuração]

Argumentos

ON (Padrão) Ativa a campainha.

OFF Desativa a campainha.

TO cNomeArquivoWAV, nDuração No Visual FoxPro, é possível especificar um som em forma de onda ou um som de alarme de sistema para ser reproduzido quando a campainha for tocada.

cNomeArquivoWAV especifica o som em forma de onda a ser reproduzido. cNomeArquivoWAV pode ser um nome de arquivo de som em forma de onda ou uma entrada da seção de sons de seu arquivo WIN.INI. Se não for possível localizar o som, o Visual FoxPro irá reproduzir o som padrão especificado pela entrada SystemDefault na seção de sons de seu arquivo WIN.INI. O Visual FoxPro não reproduz sons se não for possível localizar o som padrão ou se não houver uma entrada SystemDefault.

Se você especificar um som de alarme de sistema ou um som em forma de onda , deverá incluir também nDuração. Ocorrerá um erro de sintaxe se o valor de duração for omitido. O valor de duração especificado será ignorado e o som de alarme de sistema ou o som em forma de onda será reproduzido na íntegra.

Comentários

SET BELL ativa ou desativa o som da campainha durante a edição quando você atingir o final de um campo ou digitar dados inválidos.

SET BELL, exemplo de comando

No exemplo a seguir, é reproduzido o arquivo de som em forma de onda DING.WAV.

SET BELL TO 'C:\WINDOWS\DING.WAV', 0?? CHR(7)

SET BLOCKSIZE, comando

Especifica como o Visual FoxPro aloca espaço em disco para o armazenamento de campos Memo.

Sintaxe

SET BLOCKSIZE TO nBytes

Argumentos

[Pág.: 349]

Page 350: 74039361 Visual FoxPro Comandos e Funcoes

nBytes Especifica o tamanho do bloco no qual o espaço em disco, para campos Memo, é alocado. Se nBytes for 0, o espaço em disco será alocado em bytes únicos (blocos de 1 byte). Se nBytes for um inteiro entre 1 e 32, o espaço em disco será alocado em blocos de nBytes bytes multiplicado por 512. Se nBytes for maior do que 32, o espaço em disco será alocado em blocos de nBytes bytes.

Se você especificar um valor de tamanho de bloco maior do que 32, poderá economizar bastante espaço em disco.

Comentários

O valor padrão de SET BLOCKSIZE é 64. Para redefinir o tamanho do bloco para um valor diferente depois da criação do arquivo, defina-o com um novo valor e, em seguida, utilize COPY para criar uma nova tabela. A nova tabela terá o tamanho de bloco especificado.

É feito um escopo de SET BLOCKSIZE para a sessão de dados atual.

SET CARRY, comando

Determina se o Visual FoxPro adiantará dados do registro atual para um novo registro criado com INSERT, APPEND e BROWSE.

Sintaxe

SET CARRY ON | OFF – Ou –SET CARRY TO [ListaCampos [ADDITIVE]]

Argumentos

ON Adianta dados de todos os campos em todas as áreas de trabalho do registro atual para um novo registro.

OFF (Padrão) Evita que os dados de todos os campos sejam passados para um novo registro.

TO [ListaCampos [ADDITIVE]] ListaCampos especifica os campos dos quais serão adiantados dados. Separa os nomes de campos com vírgulas.

ADDITIVE especifica aos campos da lista de campos que sejam adicionados ao conjunto de campos atual que está sendo adiantado.

A emissão de SET CARRY TO implicitamente executa SET CARRY ON.

Utilize SET CARRY TO sem ListaCampos para restaurar a definição padrão (todos os campos são adiantados).

Comentários

Utilize SET CARRY para ativar permitir que os dados sejam adiantados do registro atual para um novo registro ou para evitar que os dados sejam adiantados. Os campos que geralmente permanecem inalterados durante uma sessão de edição podem ser adiantados para cada novo registro. Por exemplo, um campo que contenha os dados atuais pode ser adiantado para cada novo registro, de modo que não seja necessário digitar novos dados de novo. Observe que o conteúdo dos campos do tipo Geral não é adiantado.

SET CARRY afeta apenas a tabela aberta na área de trabalho selecionada no momento.

SET CARRY é o escopo para a sessão de dados atual.SET CENTURY, comando

Determina se o Visual FoxPro exibe a parte de século de expressões de dados.

Sintaxe

SET CENTURY ON | OFF | TO [nSéculo [ROLLOVER nAno]]

Argumentos

[Pág.: 350]

Page 351: 74039361 Visual FoxPro Comandos e Funcoes

ON Especifica um ano com quatro dígitos em um formato que inclui 10 caracteres (incluindo delimitadores de data).

OFF (Padrão) Especifica um ano de dois dígitos em um formato que inclui oito caracteres e assume o século XX para cálculos de datas.

TO nSéculo Um número de 1 a 99 que especifica o século atual. Quando uma data possuir um ano de dois dígitos, nSéculo determinará em que século o ano ocorreu.

Execute SET CENTURY TO sem qualquer argumento adicional para restaurar o século atual padrão.

SET CENTURY ON

SET CENTURY TO 19? {02/16/56} && Exibe 02/16/1956

SET CENTURY TO 20? {02/16/56} && Exibe 02/16/2056ROLLOVER nAno Um número de 0 a 99 que especifica o ano acima, que é o século atual e o abaixo, que é o século seguinte.

Execute SET CENTURY TO sem qualquer argumento adicional para restaurar o ano de passagem de século padrão para 0.

SET CENTURY ON

SET CENTURY TO 19 ROLLOVER 60? {02/16/96} && Exibe 16/02/1996

? {02/16/56} && Exibe 16/02/2056

Comentários

Utilize SET CENTURY para especificar como as funções e variáveis de data serão exibidas.

É feito um escopo de SET CENTURY para a sessão de dados atual.

SET CLOCK, comando

Determina se o Visual FoxPro exibirá o relógio do sistema e especifica a localização do relógio na janela principal do Visual FoxPro.

Sintaxe

SET CLOCK ON | OFF | STATUS – Ou –SET CLOCK TO [nLinha, nColuna]

Argumentos

ON Exibe o relógio no canto superior direito da janela principal do Visual FoxPro.

OFF (Padrão) Remove o relógio da barra de status ou da janela principal do Visual FoxPro.

STATUS Exibe o relógio na barra de status gráfica. Execute SET STATUS BAR ON para exibir a barra de status gráfica.

[Pág.: 351]

Page 352: 74039361 Visual FoxPro Comandos e Funcoes

TO [nLinha, nColuna] Utilizando coordenadas de linha e coluna, especifica onde o relógio será exibido na janela principal do Visual FoxPro. Utilize SET CLOCK TO sem as coordenadas para exibir o relógio em sua posição padrão no canto superior direito da janela principal do Visual FoxPro.

Se você posicionar o relógio na barra de status gráfica com SET CLOCK STATUS e especificar uma localização na janela principal do Visual FoxPro com TO nLinha, nColuna, o Visual FoxPro irá remover o relógio da barra de status gráfica e posicioná-lo na localização especificada.

SET COLLATE, comando

Especifica uma seqüência de ordenação para campos de caracteres em operações de classificação e indexação subsequentes.

Sintaxe

SET COLLATE TO cNomeSeqüência

Argumentos

cNomeSeqüência Especifica uma seqüência de ordenação. As opções de seqüência de ordenação disponíveis são as seguintes.

Opções Idioma

DUTCH Holandês GENERAL Inglês, francês, alemão, espanhol moderno, português e outros idiomas da Europa ocidental GERMAN Ordem de lista telefônica em alemão (DIN)ICELAND IslandêsMACHINE Máquina (a seqüência de ordenação padrão de versões anteriores do FoxPro)NORDAN Norueguês, dinamarquêsSPANISH Espanhol tradicionalSWEFIN Sueco, finlandêsUNIQWT Peso único

Observação Quando você especifica a opção SPANISH, “ch” é uma letra única que é classificada entre “c” e “d”, e “ll” é classificado entre “l” e “m”.Caso você especifique uma opção de seqüência de ordenação como uma seqüência de caracteres literal, certifique-se de colocar a opção entre aspas:

SET COLLATE TO "SWEFIN"

MACHINE é a opção de seqüência de ordenação padrão e é a seqüência com a qual os usuários de Xbase estão familiarizados. Os caracteres são ordenados da forma como aparecem na página de código atual.

GENERAL pode ser preferível para usuários dos Estados Unidos e da Europa ocidental. Os caracteres são ordenados da forma como aparecem na página de código atual. Nas versões do FoxPro anteriores a 2.5, você pode ter utilizado UPPER( ) ou LOWER( ) em campos de caracteres ao criar índices. Nas versões do FoxPro posteriores a 2.5, você pode especificar a opção de seqüência de ordenação GENERAL e omitir a conversão UPPER( ).

Caso você especifique uma opção de seqüência de ordenação diferente de MACHINE e caso crie um arquivo .IDX, sempre será criado um .IDX compactado.

Utilize SET(“COLLATE”) para retornar a seqüência de ordenação atual.

Caso você inclua a linha a seguir no arquivo de configuração do Visual FoxPro, será especificada uma seqüência de ordenação quando você iniciar o Visual FoxPro:

COLLATE = cNomeSeqüência

[Pág.: 352]

Page 353: 74039361 Visual FoxPro Comandos e Funcoes

Esse procedimento é idêntico à emissão do comando a seguir:

SET COLLATE TO cNomeSeqüência

Comentários

SET COLLATE permite que você ordene tabelas que contenham caracteres acentuados para qualquer um dos idiomas suportados. A alteração da definição de SET COLLATE não afeta a seqüência de ordenação de índices anteriormente abertos. O Visual FoxPro mantém índices existentes automaticamente, oferecendo uma flexibilidade para criar muitos tipos de índices diferentes, até para o mesmo campo.

Por exemplo, se um índice for criado com SET COLLATE definido como GENERAL e a definição de SET COLLATE for alterada posteriormente para SPANISH, o índice irá manter a seqüência de ordenação GENERAL.

É feito um escopo de SET COLLATE para a sessão de dados atual.

Para obter informações adicionais sobre páginas de código e o suporte internacional do Visual FoxPro, consulte “ Páginas de código suportadas pelo Visual FoxPro” e o capítulo 18, “Desenvolvendo aplicativos internacionais”, no Guia do Desenvolvedor.

Para obter maiores informações sobre como configurar o Visual FoxPro, consulte o capítulo 3, “Configurando o Visual FoxPro”, no Guia de Instalação e Índice Principal.

SET COLOR OF SCHEME, comando

Especifica as cores de um esquema de cores ou copia um esquema de cores para outro.

Sintaxe

SET COLOR OF SCHEME nEsquema1 TO[SCHEME nEsquema2 | ListaParesCores]

Argumentos

nEsquema1 Especifica o número do esquema de cores que você deseja alterar. Pode ser um valor de 1 a 24.

Observação No Visual FoxPro, os esquemas de cores de 13 a 15 são reservados para uso interno. Não utilize esses esquemas de cores.

TO [SCHEME nEsquema2] Especifica o número de um esquema de cores para o qual o esquema de cores nEsquema1 é alterado.

TO [ListaParesCores] Especifica até 10 pares de cores que você gostaria de alterar em seu esquema de cores. Você pode alterar de maneira seletiva as cores em um esquema de cores incluindo uma vírgula para cada par de cores que não deseja alterar. Por exemplo, para alterar o terceiro par de cores no esquema de cores 1 para branco e azul claro e deixar o resto das definições de cores inalterado, utilize o seguinte comando:

SET COLOR OF SCHEME 1 TO , , W+/B*Um par de cores também pode ser especificado com um conjunto de seis valores de cor RGB (vermelho, verde e azul), separados por vírgulas. Para alterar o terceiro par de cores no esquema de cores 1 para branco e azul claro e deixar o resto das definições de cores inalterado, é possível utilizar o seguinte comando:

SET COLOR OF SCHEME 1 TO , , RGB(255,255,255,0,0,255)

Comentários

[Pág.: 353]

Page 354: 74039361 Visual FoxPro Comandos e Funcoes

Nem todos os elementos de interface podem ser controlados por esquemas de cores — janelas de sistema, como as janelas Visualização e Comando, a barra de menus do sistema etc. sempre são controladas pelas definições de cores do Painel de controle. A execução de SET COLOR OF SCHEME nEsquema1 TO sem a inclusão de uma cláusula opcional restaura as cores do esquema de cores atual.

Para obter maiores informações sobre conjunto de cores e esquemas de cores, consulte o tópico “Visão geral de cores”.

SET COMPATIBLE, comando

( IMPORTANTE )

Controla a compatibilidade com o FoxBASE+ e outras linguagens Xbase.

Sintaxe

SET COMPATIBLE FOXPLUS | OFF | DB4 | ON[PROMPT | NOPROMPT]

Argumentos

FOXPLUS | OFF (Padrão) Essas duas palavras-chave podem ser utilizadas de forma intercambiável. Cada uma delas permite que os programas criados no FoxBASE+ sejam executados no Visual FoxPro, sem alterações.

DB4 | ON A inclusão de uma dessas palavras-chave afetará o comportamento de alguns comandos e funções.

PROMPT | NOPROMPT Essas opções determinam se o Visual FoxPro exibirá uma caixa de diálogo quando você abrir uma tabela do dBASE contendo um campo Memo.

Inclua a opção PROMPT para exibir a caixa de diálogo Converter memos. Se você abrir uma tabela do dBASE contendo um campo Memo, o Visual FoxPro, como padrão, exibirá a caixa de diálogo Converter memos, que permitirá a conversão do arquivo de memo do dBASE para um formato do Visual FoxPro. Deve-se converter o arquivo de memo para um formato do Visual FoxPro para que a tabela seja aberta no Visual FoxPro. Posteriormente, você pode converter o arquivo de memo para um formato do dBASE, incluindo a opção TYPE FOXPLUS no comando COPY.

Se você incluir NOPROMPT, a caixa de diálogo Converter memos não será exibida quando você abrir uma tabela do dBASE que contenha um campo Memo. O arquivo de memo do dBASE será automaticamente convertido para um formato do Visual FoxPro.

Comentários

Entre os comandos e funções afetados por SET COMPATIBLE estão LIKE( ), PLAY MACRO, SELECT( ) e STORE (quando STORE é utilizado com matrizes).

SET COMPATIBLE não é compatível com outros comandos, funções ou recursos do Xbase não suportados no Visual FoxPro. Por exemplo, ele não permite que você abra um formulário de relatório criado em outros produtos Xbase com o Criador de relatórios.

A tabela a seguir lista os comandos afetados por SET COMPATIBLE.

Comandos

@ ... GET com uma cláusula RANGE READ com uma cláusula @ ... GET VALID@ ... SAY com CHR(7) READs aninhados@ ... SAY rolagem READ@ ... SAY quando STATUS está ativado (ON) RUN | !

[Pág.: 354]

Page 355: 74039361 Visual FoxPro Comandos e Funcoes

ACTIVATE SCREEN SET COLOR TOACTIVATE WINDOW SET BORDERAPPEND MEMO SET FIELDSDECLARE SET MESSAGEDIMENSION SET MEMOWIDTHGO | GOTO com SET TALK ON SET PRINTER TO <arquivo>FSIZE( ) STOREINKEY( ) SUMLASTKEY( ) TRANSFORM( ) com uma cláusula numérica PICTURELIKE( ) SELECT( )Comandos de menu SYS(2001, "COLOR")PLAY MACRO

SET CONFIRM, comando

Especifica se é possível sair de uma caixa de texto digitando o último caractere nela contido.

Sintaxe

SET CONFIRM ON | OFF

Argumentos

ON Especifica que não é possível sair da caixa de texto digitando o último caractere nela contido. Para sair, pressione ENTER, TAB ou uma das teclas de direção para mover de uma caixa de texto para outro controle.

SET CONFIRM ON afeta também itens de menu e títulos de menu criados com DEFINE BAR e DEFINE PAD. Se o usuário digitar a primeira letra do item de menu ou do título de menu, o item ou o título será selecionado mas não será ativado. Para ativar o item ou o título de menu quando ele estiver selecionado, pressione ENTER ou a BARRA DE ESPAÇOS.

OFF Especifica que o usuário pode sair de uma caixa de texto digitando o último caractere nela contido. Quando atingir o último caractere da caixa de texto, o ponto de inserção irá mover-se para o controle seguinte e a campainha soará (se SET BELL estiver ativado (ON)).

OFF é o valor padrão de SET CONFIRM.

SET CONFIRM OFF também afeta itens e títulos de menu. Se SET CONFIRM estiver desativado (OFF), o usuário poderá escolher um item a partir de um menu ou um título de menu em uma barra de menus, pressionando a tecla correspondente à primeira letra do título ou do item de menu. (Quando SET CONFIRM está ativado (ON), esta ação seleciona apenas o item ou o título de menu).

Comentários

SET CONFIRM não tem qualquer efeito em teclas de acesso a itens ou títulos de menu. Se um item ou um título de menu for criado com uma tecla de acesso, poderá ser escolhido pressionando-se a tecla de acesso correspondente.

Você poderá criar caixas de texto utilizando o Criador de formulários.

É feito um escopo de SET CONFIRM para a sessão de dados atual.SET CONSOLE, comando

Ativa ou desativa, dentro de programas, a saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

Sintaxe

SET CONSOLE ON | OFF

[Pág.: 355]

Page 356: 74039361 Visual FoxPro Comandos e Funcoes

Argumentos

ON (Padrão) Envia toda a saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

OFF Suprime a saída para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

Comentários

O comando SET CONSOLE é ativado (ON) quando se utiliza o Visual FoxPro de modo interativo e não pode ser alterado para desativado (OFF) a partir da janela Comando. A definição só pode ser alterada para desativado (OFF) a partir de um programa.

SET CONSOLE afeta algumas caixas de diálogo interativas do Visual FoxPro. Por exemplo, se SET CONSOLE estiver desativado (OFF) e você emitir BROWSE quando nenhuma janela estiver aberta, o Visual FoxPro exibirá uma mensagem de erro. Se SET CONSOLE estiver ativado (ON) nas mesmas circunstâncias, o Visual FoxPro exibirá a caixa de diálogo Abrir.

SET CONSOLE não afeta a saída de @ ... SAY. A saída de @ ... SAY é controlada pela definição de SET DEVICE.

Importante Um erro sempre define CONSOLE como ativado (ON). Utilize SYS(100) para verificar a definição de SET CONSOLE antes da ocorrência do erro. Para obter maiores informações, consulte SYS(100) - Definição de console.

SET COVERAGE, comando

Ativa ou desativa o alcance do código ou especifica um arquivo de texto para o qual as informações de alcance do código serão direcionadas.

Sintaxe

SET COVERAGE TO [NomeArquivo [ADDITIVE]]

Argumentos

TO NomeArquivo Especifica o nome de um arquivo de texto para o qual as informações de alcance do código serão direcionadas. Emita SET COVERAGE TO sem um nome de arquivo para fechar o arquivo de texto.

Se o arquivo de texto especificado não existir, o Visual FoxPro criará e abrirá o arquivo automaticamente.

ADDITIVE Inclui as informações de alcance do código no final do arquivo de texto especificado com NomeArquivo. Se você omitir ADDITIVE, as informações de alcance do código substituirão o conteúdo do arquivo de texto.

Comentários

É possível também definir opções de alcance do código na caixa de diálogo Alcance.SET CPDIALOG, comando

Especifica se a caixa de diálogo Página de código será exibida quando uma tabela for aberta.

Sintaxe

SET CPDIALOG ON | OFF

[Pág.: 356]

Page 357: 74039361 Visual FoxPro Comandos e Funcoes

Argumentos

ON (Padrão) Exibe a caixa de diálogo Página de código quando uma tabela é aberta e as condições a seguir são verdadeiras:

· A tabela está aberta em modo exclusivo.· A tabela não está marcada com uma página de código.

OFF Não exibe a caixa de diálogo Página de código quando uma tabela é aberta.

Comentários

A caixa de diálogo Página de código permite que você especifique uma página de código para tabelas criadas em versões anteriores do FoxPro e para outros produtos que criam tabelas do Visual FoxPro. A tabela é marcada com a página de código selecionada.

Ao criar um aplicativo, emita SET CPDIALOG ON para certificar-se de que as tabelas incluídas no aplicativo estão marcadas com a página de código correta. No aplicativo completo, certifique-se de que SET CPDIALOG está desativado (OFF).

É possível, também, especificar de modo interativo se a caixa de diálogo Página de código é exibida com a caixa de verificação Solicitar página de código, na guia Dados da caixa de diálogo Opções. A caixa de diálogo Opções é exibida quando Opções é selecionada no menu Ferramentas.

Para obter informações adicionais sobre páginas de código e sobre o suporte internacional do Visual FoxPro, consulte Páginas de código suportadas pelo Visual FoxPro e o capítulo 18, “Desenvolvendo aplicativos internacionais”, no Guia do Desenvolvedor.

SET CURRENCY, comando

Define o símbolo da moeda e especifica sua posição na exibição de expressões numéricas, monetárias, flutuantes e duplas.

Sintaxe

SET CURRENCY TO [cSímboloMoeda] – Ou –SET CURRENCY LEFT | RIGHT

Argumentos

cSímboloMoeda Especifica uma seqüência de caracteres, de um a nove caracteres, que representa o símbolo da moeda. Emita SET CURRENCY TO sem cSímboloMoeda para redefinir o símbolo da moeda como cifrão padrão ($).

LEFT (Padrão) Posiciona o símbolo da moeda à esquerda do valor monetário.

RIGHT Posiciona o símbolo da moeda à direita do valor monetário.

Comentários

O símbolo monetário é exibido na saída criada com @ ... SAY e nas caixas de texto criadas com @ ... GET quando o código $ está incluído na cláusula FUNCTION ou PICTURE.

É feito um escopo de SET CURRENCY para a sessão de dados atual.

[Pág.: 357]

Page 358: 74039361 Visual FoxPro Comandos e Funcoes

Exemplo de comando SET CURRENCY

O exemplo a seguir exibe o símbolo da moeda DM em qualquer lado do valor monetário. Se você utilizar PICTURE para exibir o símbolo da moeda, certifique-se de incluir @ antes do cifrão.

STORE SET('CURRENCY') TO gcCurrPositSTORE 1234.56 TO gnDollarAmntCLEARSET CURRENCY TO 'DM'@ 2,2 SAY gnDollarAmnt PICTURE '@$99,999.99'IF gcCurrPosit = 'LEFT'

SET CURRENCY RIGHTELSE

SET CURRENCY LEFTENDIF@ 4,2 SAY gnDollarAmnt FUNCTION '$99,999.99'

SET CURSOR, comando

Determina se o ponto de inserção é exibido quando o Visual FoxPro está aguardando uma entrada.

Sintaxe

SET CURSOR ON | OFF

Argumentos

ON (Padrão) Faz com que o ponto de inserção seja exibido durante um @ ... GET, @ ... EDIT, WAIT ou INKEY( ) pendente.

OFF Impede que o ponto de inserção seja exibido durante um @ ... GET, @ ... EDIT, WAIT ou INKEY( ) pendente.

Comentários

O comando SET CURSOR, semelhante a SYS(2002), permite ativar ou desativar o ponto de inserção.

SET DATABASE, comando

Especifica o banco de dados atual.

Sintaxe

SET DATABASE TO [NomeBancoDados]

Argumentos

NomeBancoDados Especifica o nome de um banco de dados aberto que deve ser considerado o banco de dados atual. Se você omitir NomeBancoDados, nenhum banco de dados aberto será considerado como o atual.

Comentários

Pode haver vários bancos de dados abertos ao mesmo tempo, mas somente um pode ser o banco de dados atual. Os comandos e as funções que manipulam bancos de dados abertos, como ADD TABLE e DBC( ), operam no banco de dados atual.

[Pág.: 358]

Page 359: 74039361 Visual FoxPro Comandos e Funcoes

O banco de dados atual também pode ser especificado selecionando um banco de dados aberto na lista suspensa Banco de dados da Barra de ferramentas padrão.

O Visual FoxPro pode abrir, automaticamente, bancos de dados quando uma consulta ou um formulário é executado.

É feito um escopo de SET DATABASE para a sessão de dados atual.

Exemplo de comando SET DATABASE

O exemplo a seguir cria dois bancos de dados chamados mydbc1 e mydbc2 e uma tabela denominada table1. SET DATABASE é utilizado para tornar mydbc1 o banco de dados atual e table1 é adicionada a mydbc1 quando criada. A tabela é, então, fechada e removida de mydbc1. SET DATABASE é utilizado para tornar mydbc1 o banco de dados atual e ADD TABLE é utilizado, em seguida, para adicionar a tabela a mydbc2. RENAME TABLE é utilizado para mudar o nome da tabela de table1 para table2.

CREATE DATABASE mydbc1CREATE DATABASE mydbc2SET DATABASE TO mydbc1CREATE TABLE table1 (cField1 C(10), n N(10)) && Adiciona tabela a mydbc1CLOSE TABLES && Uma tabela deve ser fechada para removê-la de um banco de dadosREMOVE TABLE table1SET DATABASE TO mydbc2ADD TABLE table1RENAME TABLE table1 TO table2

SET DATE, comando

Especifica o formato para a exibição das expressões de Data e de DataHora.

Sintaxe

SET DATE [TO] AMERICAN | ANSI | BRITISH | FRENCH | GERMAN| ITALIAN | JAPAN | TAIWAN | USA | MDY | DMY | YMD| SHORT | LONG

Comentários

A seguir são exibidas as definições e os formatos de data resultantes:

Definição Formato

AMERICAN mm/dd/aaANSI aa.mm.ddBRITISH/FRENCH dd/mm/aaGERMAN dd.mm.aaITALIAN dd-mm-aaJAPAN aa/mm/ddTAIWAN aa/mm/ddUSA mm-dd-aaMDY mm/dd/aaDMY dd/mm/aaYMD aa/mm/ddSHORT Formato de data curta determinado pela definição de data curta do Painel de controle do

Windows.LONG Formato de data longa determinado pela definição de data longa do Painel de controle do

Windows.

A definição de data padrão é AMERICAN.A definição de SET DATE também determina o modo de exibição da data nas expressões de DataHora. Se DATE for definido com SHORT ou LONG, as definições de SET CENTURY, SET MARK, SET HOURS e SET SECONDS serão ignoradas.É feito um escopo de SET DATE para a sessão de dados atual.

[Pág.: 359]

Page 360: 74039361 Visual FoxPro Comandos e Funcoes

SET DEBUG, comando

Torna as janelas Depurar e Rastrear disponíveis ou não disponíveis no sistema de menu do Visual FoxPro.

Sintaxe

SET DEBUG ON | OFF

Argumentos

ON (Padrão) Torna as janelas Depurar e Rastrear disponíveis no sistema de menu do Visual FoxPro.

OFF Torna as janelas Depurar e Rastrear não disponíveis no sistema de menu do Visual FoxPro. No entanto, quando SET DEBUG está desativado (OFF), a janela Depurar pode ser aberta com SET ECHO ON ou ACTIVATE WINDOW DEBUG e a janela Rastrear com SET STEP ON ou ACTIVATE WINDOW TRACE.

Comentários

Para obter maiores informações sobre como utilizar as janelas Rastrear e Depurar, consulte o capítulo 14, “Testando e depurando aplicativos”, no Guia do Desenvolvedor.

SET DEBUGOUT, comando

Sintaxe

SET DEBUGOUT TO [NomeArquivo [ADDITIVE]]

Argumentos

NomeArquivo Especifica o nome do arquivo para o qual a saída da depuração será direcionada. Se o arquivo especificado não existir, será automaticamente criado. Se o arquivo especificado já existir, seu conteúdo será sobrescrito, a não ser que você inclua a cláusula ADDITIVE.

Emita SET DEBUGOUT TO para interromper o direcionamento da saída da depuração para o arquivo e fechar o arquivo.

ADDITIVE Especifica que a saída da depuração será incluída no final do arquivo especificado com NomeArquivo.

Comentários

A saída da depuração direcionada para o arquivo inclui mensagens de ASSERT, saída do comando DEBUGOUT e eventos especificados com SET EVENTLIST ou na caixa de diálogo Controle de eventos. Consulte a Caixa de diálogo Controle de eventos para obter maiores informações sobre como especificar eventos para rastrear de modo interativo.

SET DECIMALS, comando

Especifica o número de casas decimais exibido em expressões numéricas.

Sintaxe

SET DECIMALS TO [nCasasDecimais]

Argumentos

[Pág.: 360]

Page 361: 74039361 Visual FoxPro Comandos e Funcoes

nCasasDecimais Especifica o número mínimo de casas decimais a ser exibido. O padrão são duas casas decimais. O número máximo de casas decimais é 18; o mínimo é zero.

Comentários

SET DECIMALS especifica o número mínimo de casas decimais utilizadas para exibir os resultados de divisão, multiplicação e funções trigonométricas e financeiras.

É feito um escopo de SET DECIMALS para a sessão de dados atual.

SET DEFAULT, comando

Especifica a unidade de disco e diretório padrão.

Sintaxe

SET DEFAULT TO [cCaminho]

Argumentos

cCaminho Especifica um dos itens a seguir:

· Um designador de unidade de disco.· Um designador de unidade de disco com um nome de diretório.· O nome de um diretório filho.· Qualquer um dos itens anteriores, utilizando a notação abreviada do MS-DOS ( \ ou ..).

Comentários

SET DEFAULT altera o diretório padrão para o diretório especificado.

O Visual FoxPro procura um arquivo no diretório padrão do Visual FoxPro. O diretório padrão é aquele a partir do qual você inicia o Visual FoxPro. Entretanto, você pode especificar outro diretório padrão no arquivo de configuração do Visual FoxPro ou em um programa de inicialização. Se o Visual FoxPro não conseguir localizar um arquivo no diretório padrão, ele pesquisará o caminho do Visual FoxPro, se algum tiver sido especificado. Utilize SET PATH para especificar o caminho do Visual FoxPro.

Se você criar um arquivo e não especificar onde colocá-lo, o arquivo será colocado no diretório padrão do Visual FoxPro.

Ao sair do Visual FoxPro, você retorna ao Windows. Ao sair do Windows, você retorna à unidade de disco e ao diretório a partir dos quais você iniciou o Windows.

Dica SYS(5) retorna a unidade de disco padrão. SYS(2003) retorna o diretório padrão sem designador de unidade de disco. SYS(5) + SYS(2003) retorna a unidade de disco e o diretório padrão.

Você pode alterar a unidade de disco padrão para unidade A, utilizando um dos comandos a seguir:

SET DEFAULT TO ASET DEFAULT TO A:

Você pode selecionar um diretório específico:

SET DEFAULT TO A:\salesSET DEFAULT TO C:\sales\data

[Pág.: 361]

Page 362: 74039361 Visual FoxPro Comandos e Funcoes

É possível especificar um diretório filho. Se o diretório-raiz na unidade C for o diretório padrão do Visual FoxPro, emita o comando a seguir para alterar o diretório padrão para C:\SALES:

SET DEFAULT TO sales

Você pode utilizar a notação abreviada do MS-DOS. Se o diretório atual for C:\SALES\DATA, emita o comando a seguir para tornar o diretório-raiz o diretório padrão:

SET DEFAULT TO \

Você pode também mover o diretório padrão um diretório em direção ao diretório raiz, com o seguinte comando:

SET DEFAULT TO ..

SET DELETED, comando

Especifica se o Visual FoxPro processa registros marcados para exclusão e se eles estão disponíveis para uso em outros comandos.

Sintaxe

SET DELETED ON | OFF

Argumentos

ON Especifica que comandos que operam em registros (incluindo registros de tabelas relacionadas) utilizando um escopo ignoram registros marcados para exclusão.

OFF (Padrão) Especifica que os registros marcados para exclusão podem ser acessados por comandos que operam em registros (incluindo registros de tabelas relacionadas) utilizando um escopo.

Comentários

As consultas que utilizam DELETED( ) para verificar o status de registros podem ser otimizadas com a tecnologia Rushmore se a tabela estiver indexada em DELETED( ).

Para obter maiores informações sobre como otimizar consultas, consulte “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor

Para marcar registros para exclusão, emita DELETE - SQL ou DELETE, ou selecione Excluir registros... no menu Tabela dentro de uma janela de pesquisa ou edição.

Para reintegrar registros, emita RECALL ou selecione Reintegrar registros... no menu Tabela dentro de uma janela de pesquisa ou edição.

Importante O comando SET DELETED será ignorado se o escopo padrão do comando for o registro atual e você incluir um escopo de um único registro. INDEX e REINDEX sempre ignoram SET DELETED e indexam todos os registros da tabela.

É feito um escopo de SET DELETED para a sessão de dados atual.

SET DEVELOPMENT, comando

Faz com que o Visual FoxPro compare a data e a hora da criação de um programa com a data e a hora do seu arquivo objeto compilado quando o programa é executado.

[Pág.: 362]

Page 363: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

SET DEVELOPMENT ON | OFF

Argumentos

ON (Padrão) Especifica que o Visual FoxPro recompilará o programa de origem antes de executá-lo, caso ele seja mais atual que o seu programa objeto compilado. Esta opção assegura a execução da versão mais atual de um programa.

OFF Especifica que o Visual FoxPro não compara as versões compilada e de origem do programa. Se SET DEVELOPMENT estiver desativado (OFF), pode ser que nem sempre esteja sendo executada a versão mais atual de um programa.

Comentários

A versão mais atual de um programa modificado com o editor do Visual FoxPro, chamado com MODIFY COMMAND é sempre executada, independentemente da definição de SET DEVELOPMENT.

Só será necessário ativar o comando SET DEVELOPMENT quando os programas forem modificados fora do Visual FoxPro. O uso de um editor externo — por exemplo, um editor de programa residente (TSR) — pode exigir que você emita CLEAR PROGRAM antes de executar o programa modificado. Para obter maiores informações, consulte CLEAR PROGRAM. Utilize SET DEVELOPMENT OFF para obter o desempenho ideal.

Quando SET DEVELOPMENT está ativado (ON), a execução do programa pode ser cancelada durante uma leitura (READ). O comando Cancelar está disponível no menu Programa quando SET DEVELOPMENT estiver ativado (ON) e uma leitura estiver ativa. A seleção de Cancelar durante a leitura (READ) cancela a execução do programa. Se SET DEVELOPMENT estiver desativado (OFF), o comando Cancelar não estará disponível no menu Programa durante uma leitura.

SET DEVELOPMENT também determina se a janela Rastrear está aberta quando ocorre um erro em um formulário que está sendo executado. Se SET DEVELOPMENT estiver ativado (ON), a janela Rastrear é aberta com a linha de programa que causou o erro selecionado. Se SET DEVELOPMENT estiver desativado (OFF), a janela Rastrear não é aberta quando ocorre um erro em um formulário.

SET DEVICE, comando

Direciona a saída de @ ... SAY para a tela, uma impressora ou um arquivo.

Sintaxe

SET DEVICE TO SCREEN | TO PRINTER [PROMPT] | TO FILE NomeArquivo

Argumentos

TO SCREEN Direciona a saída de @ ... SAY para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

TO PRINTER [PROMPT] Direciona a saída de @ ... SAY para a impressora. Um ejetar de página é emitido quando as coordenadas em @ ... SAY especificam uma localização na página que seja mais alta do que a localização especificada pelas coordenadas no @ ... SAY anterior.

Pode-se incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo antes do início da impressão. Nesta caixa de diálogo, o usuário poderá ajustar as definições da impressora, inclusive o número de cópias a serem impressas e o número de páginas. O driver de impressora instalado no momento determina as definições da impressora que podem ser ajustadas. Coloque PROMPT logo depois de TO PRINTER.

TO FILE NomeArquivo Especifica um arquivo para o qual @ ... SAY enviará a saída.

[Pág.: 363]

Page 364: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

A saída de @ ... SAY pode ser enviada para a janela principal do Visual FoxPro, para a janela ativa definida pelo usuário, para a impressora ou para um arquivo.

SET DISPLAY, comando

Permite que você altere o modo de exibição atual em monitores que suportam diversos modos.

Sintaxe

SET DISPLAY TO CGA | EGA25 | EGA43 | VGA25 | VGA50

Argumentos

CGA Alterna o tamanho da fonte da janela principal do Visual FoxPro para 9 pontos.

EGA25 Alterna o tamanho da fonte da janela principal do Visual FoxPro para 9 pontos e o tamanho desta janela para 25 linhas.

EGA43 Alterna o tamanho da fonte da janela principal do Visual FoxPro para 7 pontos e o tamanho desta janela para 50 linhas.

VGA25 Alterna o tamanho da fonte da janela principal do Visual FoxPro para 9 pontos e o tamanho desta janela para 25 linhas.

VGA50 Alterna o tamanho da fonte da janela principal do Visual FoxPro para 7 pontos e o tamanho desta janela para 50 linhas.

VGA50 Alterna o tamanho da fonte da janela principal do Visual FoxPro para 8 pontos.

Comentários

SET DISPLAY altera o tamanho da fonte da janela principal do Visual FoxPro. O tamanho da janela principal do Visual FoxPro será aumentado, se necessário, para que comporte o número de linhas exigido pela opção especificada. Se a barra de status gráfica for exibida quando você emitir SET DISPLAY, este comando estará desativado.

O Visual FoxPro exibirá uma mensagem de erro se uma opção não for suportada pelo hardware de vídeo.

A linha SET MESSAGE será redefinida como a última linha da janela principal do Visual FoxPro sempre que SET DISPLAY for emitido.

SET ECHO, comando

Abre a janela Rastrear para a depuração de programas. Incluído para manter a compatibilidade com versões anteriores. Utilize a janela Rastrear como substituto.

Sintaxe

SET ECHO ON | OFF

Argumentos

ON Exibe o código de origem do programa em execução na janela Rastrear. A linha em execução no momento será realçada.

[Pág.: 364]

Page 365: 74039361 Visual FoxPro Comandos e Funcoes

OFF (Padrão) Fecha a janela Rastrear em versões do Visual FoxPro anteriores à versão 2.0. Para fechar a janela Rastrear dentro de um programa, emita DEACTIVATE WINDOW TRACE.

Comentários

Também é possível utilizar a janela Rastrear para definir pontos de interrupção, que suspendem a execução do programa.

Para obter maiores informações sobre a janela Rastrear, consulte o tópico Janela Rastrear e o capítulo 14, “Testando e depurando aplicativos”, no Guia do Desenvolvedor.

SET ESCAPE, comando

Determina se o pressionamento da tecla ESC interromperá a execução do programa e de comandos.

Sintaxe

SET ESCAPE ON | OFF

Argumentos

ON (Padrão) Permite que a execução do programa e do comando seja interrompida quando a tecla ESC for pressionada.

Se o usuário pressionar ESC durante a execução de um comando ou programa enquanto o ponto de inserção estiver na janela Comando, será exibida a mensagem a seguir:

*** INTERROMPIDO ***

Se o usuário pressionar ESC durante a execução de um comando ou programa, o processamento terminará na linha do programa atual e será exibido um alerta com as três opções a seguir:

· (Padrão) Selecione Cancelar para interromper imediatamente a execução do programa e retornar à janela Comando.· Selecione Suspender para colocar a execução do programa em pausa e retornar à janela Comando. Esta opção é útil para depurar um programa. Selecione Retomar no menu Programa ou emita RESUME na janela Comando para reiniciar o programa na linha em que ele foi colocado em pausa.· Selecione Ignorar para continuar a execução do programa na linha em que ele foi colocado em pausa.

OFF Impede que a execução de um comando ou programa seja interrompida quando a tecla ESC é pressionada.

SET EXACT, comando

Especifica as regras que o Visual FoxPro aplicará ao comparar duas seqüências de comprimentos diferentes.

Sintaxe

SET EXACT ON | OFF

Argumentos

ON Especifica que as expressões devem corresponder caractere por caractere para que sejam equivalentes. Qualquer espaço à direita nas expressões será ignorado na comparação. Na comparação, a menor das duas expressões será preenchida à direita com espaços para que corresponda ao comprimento da expressão maior.

OFF (Padrão) Especifica que, para que sejam equivalentes, as expressões devem corresponder caractere por caractere até o fim da expressão no lado direito.

[Pág.: 365]

Page 366: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

A definição de SET EXACT não terá qualquer efeito se as duas seqüências tiverem o mesmo comprimento.

Comparações de Seqüências O Visual FoxPro possui dois operadores relacionais que testam a igualdade.

O operador = compara dois valores do mesmo tipo. Este operador é adequado para comparar dados lógicos, numéricos, de data e de caractere.

No entanto, quando você compara expressões de caracteres com o operador =, os resultados podem não ser exatamente os esperados. Expressões de caracteres são comparadas caractere por caractere da esquerda para a direita até que uma das expressões não seja igual à outra, até que o fim da expressão no lado direito do operador = seja atingido (SET EXACT OFF) ou até que seja atingido o fim das duas expressões (SET EXACT ON).

Pode-se utilizar o operador = = quando é necessária uma comparação exata de dados de caractere. Caso duas expressões de caractere sejam comparadas com o operador = =, as expressões dos dois lados do operador = = deverão conter exatamente os mesmos caracteres, incluindo espaços em branco, para que sejam consideradas iguais. A definição SET EXACT é ignorada quando seqüências de caracteres são comparadas utilizando-se = =.

A tabela a seguir mostra como a escolha do operador e a definição de SET EXACT afetam as comparações. (Um sublinhado representa um espaço em branco.)

Comparação = EXACT OFF = EXACT ON== EXACT ON ou OFF

“abc” = “abc” Corresponde Corresponde Corresponde“ab” = “abc” Não corresponde Não corresponde Não corresponde“abc” = “ab” Corresponde Não corresponde Não corresponde“abc” = “ab_” Não corresponde Não corresponde Não corresponde“ab” = “ab_” Não corresponde Corresponde Não corresponde“ab_” = “ab” Corresponde Corresponde Não corresponde“” = “ab” Não corresponde Não corresponde Não corresponde“ab” = “” Corresponde Não corresponde Não corresponde“__” = “” Corresponde Corresponde Não corresponde“” = “___” Não corresponde Corresponde Não correspondeTRIM(“___”) = “” Corresponde Corresponde Corresponde“” = TRIM(“___”) Corresponde Corresponde Corresponde

É feito um escopo de SET EXACT para a sessão de dados atual.

SET EXCLUSIVE, comando

Especifica se o Visual FoxPro abrirá arquivos de tabela para utilização exclusiva ou compartilhada em uma rede.

Sintaxe

SET EXCLUSIVE ON | OFF

Argumentos

ON (O padrão para a sessão de dados global.) Limita a acessibilidade de uma tabela aberta em uma rede para o usuário que a abriu. A tabela não está disponível para outros usuários na rede. Diferente de FLOCK( ), SET EXCLUSIVE ON também evita que todos os outros usuários tenham acesso somente para leitura. Um arquivo também pode ser aberto em uma rede para utilização exclusiva, incluindo-se a cláusula

[Pág.: 366]

Page 367: 74039361 Visual FoxPro Comandos e Funcoes

EXCLUSIVE com o comando USE. Não é necessário realizar bloqueio de arquivo ou registro em uma tabela aberta para utilização exclusiva.

Abrir uma tabela para utilização exclusiva garante que o arquivo não poderá ser alterado por outros usuários. É impossível executar alguns comandos até uma tabela ser aberta para utilização exclusiva. Esses comandos são INSERT, INSERT BLANK, MODIFY STRUCTURE, PACK, REINDEX e ZAP.

OFF (O padrão para uma sessão de dados privada.) Permite que uma tabela aberta em uma rede seja compartilhada e modificada por qualquer usuário na rede.

Para obter informações adicionais sobre bloqueio de arquivos e registros e sobre compartilhamento de tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado”, no Guia do Desenvolvedor.

Comentários

A alteração da definição de SET EXCLUSIVE não muda o status de tabelas abertas anteriormente. Por exemplo, se uma tabela for aberta com SET EXCLUSIVE ativado e SET EXCLUSIVE for desativado posteriormente, a tabela manterá o seu status de utilização exclusiva.

É feito um escopo de SET EXCLUSIVE para a sessão de dados atual.

SET FDOW, comando

Especifica o primeiro dia da semana.

Sintaxe

SET FDOW TO [nExpressão]

Argumentos

nExpressão Especifica o primeiro dia da semana. A tabela a seguir lista os valores que podem ser assumidos por nExpressão e o primeiro dia da semana correspondente.

nExpressão Dia da semana

1 Domingo2 Segunda-feira3 Terça-feira4 Quarta-feira5 Quinta-feira6 Sexta-feira7 Sábado

Se nExpressão for omitido, o primeiro dia da semana será redefinido como domingo (1).

Comentários

Também é possível redefinir o primeiro dia da semana com a caixa de listagem Começar semana em na guia Regional da caixa de diálogo Opções.

Exemplo do comando SET FDOW

STORE SET('FDOW') TO gnFdow && Salva valor atualSET FDOW TO 1 && Define o primeiro dia da semana como domingo, o padrãoSET FDOW TO 7 && Define o primeiro dia da semana como sábadoSET FDOW TO &gnFdow && Restaura o dia original

[Pág.: 367]

Page 368: 74039361 Visual FoxPro Comandos e Funcoes

SET FIELDS, comando

Especifica os campos que podem ser acessados em uma tabela.

Sintaxe

SET FIELDS ON | OFF | LOCAL | GLOBAL – Ou –SET FIELDS TO [[NomeCampo1 [, NomeCampo2 ...]]

| ALL [LIKE Estrutura | EXCEPT Estrutura]]

Argumentos

ON Especifica que apenas os campos na lista de campos podem ser acessados.

OFF (Padrão) Especifica que todos os campos na tabela atual podem ser acessados.

LOCAL Especifica que apenas os campos na Área de trabalho atual relacionados na lista de campos podem ser acessados.

GLOBAL Especifica que todos os campos na lista de campos, incluindo campos em outras áreas de trabalho, podem ser acessados.

SET FIELDS GLOBAL permite que você acesse campos em outras áreas de trabalho sem emitir SET COMPATIBLE TO DB4.

TO [NomeCampo1 [, NomeCampo2 ...]] Especifica os nomes dos campos que podem ser acessados na tabela atual. Você deve incluir um alias com o nome do campo nos casos a seguir:

· Quando o campo estiver em uma tabela aberta em uma Área de trabalho diferente da Área de trabalho selecionada no momento.· Quando os nomes de campos forem os mesmos em duas ou mais tabelas.

É possível incluir campos de tabelas abertas em outras áreas de trabalho se os campos forem antecedidos por seus aliases de tabela. No entanto, esses campos não podem ser acessados, a não ser que você emita SET FIELDS GLOBAL ou SET COMPATIBLE DB4.

A lista de campos pode conter instruções para criação de campos calculados. Um campo calculado contém dados somente para leitura criados com uma expressão. Essa expressão pode ter qualquer forma, mas deve ser uma expressão válida do FoxPro. Os campos calculados não podem ser acessados, a não ser que você emita SET FIELDS GLOBAL ou SET COMPATIBLE DB4.

O formato da instrução utilizada para criar um campo calculado é:

<calculated field name> = <expr>

Esse exemplo cria um campo calculado denominado LOCATION:

CLOSE DATABASESUSE customerSET FIELDS TO LOCATION = ALLTRIM(city) + ', ' + state

CITY e STATE são os nomes de campos da tabela selecionada.

ALL Permite acesso a todos os campos na tabela atual.

[Pág.: 368]

Page 369: 74039361 Visual FoxPro Comandos e Funcoes

ALL LIKE Estrutura | EXCEPT Estrutura É possível acessar campos de forma seletiva incluindo a cláusula LIKE ou EXCEPT ou ambas. Se for incluído LIKE Estrutura, será possível acessar campos que correspondam a Estrutura. Se for incluído EXCEPT Estrutura, será possível acessar todos os campos, a não ser os que correspondam a Estrutura.

A estrutura Estrutura suporta caracteres curinga como * e ?. Por exemplo, para acessar campos que comecem com as letras A e P, emita:

SET FIELDS TO ALL LIKE A*,P*

A cláusula LIKE pode ser combinada com a cláusula EXCEPT:

SET FIELDS TO ALL LIKE A*,P* EXCEPT PARTNO*

Comentários

SET FIELDS TO é aditivo — emitir SET FIELDS TO com uma lista de campos adiciona os campos especificados aos que já estão acessíveis no momento.

Emitir SET FIELDS TO implicitamente executa SET FIELDS ON. Emitir SET FIELDS TO sem qualquer argumento adicional implicitamente executa SET FIELDS OFF. Emita SET FIELDS TO sem incluir uma lista de campos ou ALL para remover todos os campos da lista de campos da tabela atual.

É feito um escopo de SET FIELDS para a sessão atual.

SET FILTER, comando

Especifica uma condição que os registros da tabela atual devem atender para serem acessíveis.

Sintaxe

SET FILTER TO [lExpressão]

Argumentos

lExpressão Especifica a condição que os registros devem satisfazer.

Se a tabela atual for indexada em um campo ou campos especificados em lExpressão, a tecnologia Rushmore do Visual FoxPro irá otimizar consultas baseadas no campo ou campos.

Comentários

Quando o SET FILTER for emitido, apenas os registros que satisfizerem a condição especificada pela expressão lógica lExpressão estarão disponíveis na tabela. Todos os comandos que acessam a tabela respeitam a condição SET FILTER. Um filtro separado pode ser definido para cada tabela aberta.

A condição especificada por SET FILTER não será avaliada até que o ponteiro do registro seja movido na tabela.

Emitir SET FILTER TO sem lExpressão desativa o filtro da tabela atual.

SELECT - SQL não respeita a condição de filtro atual.

SET FIXED, comando

Especifica se o número de casas decimais utilizado na exibição de dados numéricos é fixo.

[Pág.: 369]

Page 370: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

SET FIXED ON | OFF

Argumentos

ON Utiliza a definição SET DECIMALS para determinar o número de casas decimais exibido nos resultados. O número padrão de casas decimais é 2.

OFF (Padrão) Permite que o número de casas decimais exibido nos resultados dependa de constantes, variáveis e operadores específicos utilizados em uma expressão numérica. O conteúdo de campos é exibido com o número declarado de casas decimais.

Comentários

É feito um escopo de SET FIXED para a sessão de dados atual.

SET FULLPATH, comando

Especifica se CDX( ), DBF( ), MDX( ) e NDX( ) retornará o caminho em um nome de arquivo.

Sintaxe

SET FULLPATH ON | OFF

Argumentos

ON (Padrão) Especifica que CDX( ), DBF( ), MDX( ) e NDX( ) retornará o designador de unidade de disco, o caminho e o nome do arquivo.

OFF Especifica que apenas o designador de unidade de disco e o nome do arquivo são retornados.

SET FUNCTION, comando

Atribui uma expressão (macro de teclado) a uma tecla de função ou combinação de teclas.

Sintaxe

SET FUNCTION nNúmeroTeclaFunção | NomeRótuloTecla TO [eExpressão]

Argumentos

nNúmeroTeclaFunção Especifica o número da tecla de função atribuído à macro. Por exemplo, utilize SET FUNCTION 2 para especificar a tecla de função F2.

K NomeRótuloTecla Especifica uma combinação de teclas, incluindo uma tecla de função, à qual a macro será atribuída. O Visual FoxPro suporta combinações de teclas que incluam teclas de função. É possível utilizar a tecla CTRL ou a tecla SHIFT em combinações com uma tecla de função para criar teclas programáveis adicionais. Para obter uma lista de expressões de rótulo de tecla, consulte ON KEY LABEL.

TO [eExpressão] Especifica a série de pressionamentos de tecla armazenados para a tecla de função ou combinação de teclas. O Visual FoxPro interpreta um ponto-e-vírgula (;) na expressão como um avanço de linha.As definições de teclas de função podem ser limpas com CLEAR MACROS.

OBS : Veja comando ON KEY LABEL

[Pág.: 370]

Page 371: 74039361 Visual FoxPro Comandos e Funcoes

SET FWEEK, comando

Especifica os requisitos para a primeira semana do ano.

Sintaxe

SET FWEEK TO [nExpressão]

Argumentos

nExpressão Especifica um valor que determina os requisitos da primeira semana do ano. A tabela a seguir lista os valores que nExpressão pode assumir e os requisitos correspondentes da primeira semana do ano:

nExpressão Requisito da primeira semana

1 (Padrão) A primeira semana contém 1º de janeiro.2 A maior parte (quatro dias) da primeira semana está no ano corrente.3 A primeira semana tem sete dias.

Se você omitir nExpressão, a primeira semana do ano será redefinida como 1 (a primeira semana contém 1º de janeiro).

Comentários

Também é possível definir a primeira semana do ano com a caixa de listagem Primeira semana do ano na guia Regional da caixa de diálogo Opções.

Exemplo do comando SET FWEEK

STORE SET('FWEEK') TO gnFweek && Salva o valor atualSET FWEEK TO 1 && A primeira semana contém 1º de janeiroSET FWEEK TO 3 && A primeira semana tem sete dias

SET FWEEK TO &gnFweek && Restaura a definição original

SET HEADINGS, comando

Determina se os cabeçalhos de coluna serão exibidos para campos e se as informações sobre o arquivo serão incluídas quando TYPE for emitido para exibir o conteúdo de um arquivo.

Sintaxe

SET HEADINGS ON | OFF

Argumentos

ON (Padrão) Especifica que os nomes de campos são exibidos.

Se TYPE for emitido para exibir o conteúdo de um arquivo, o Visual FoxPro irá inserir uma alimentação de formulário, o caminho e o nome do arquivo e a data no início da saída exibida.

OFF Especifica que os nomes de campos não são exibidos.

Se TYPE for emitido para exibir o conteúdo de um arquivo, o Visual FoxPro não irá inserir informações adicionais sobre o arquivo no início da saída exibida.

Comentários

[Pág.: 371]

Page 372: 74039361 Visual FoxPro Comandos e Funcoes

SET HEADINGS especifica se um nome de campo aparecerá como um cabeçalho da coluna acima de cada campo na saída de AVERAGE, CALCULATE, DISPLAY, LIST e SUM.

SET HELP, comando

Ativa ou desativa a Ajuda on-line do Visual FoxPro ou especifica um arquivo de Ajuda.

Sintaxe

SET HELP ON | OFF – ou –SET HELP TO [NomeArquivo]

Argumentos

ON (Padrão) Exibe a janela Ajuda quando o usuário pressiona F1 ou exibe HELP na janela Comando.

OFF Torna a Ajuda on-line do Visual FoxPro não disponível.

TO [NomeArquivo] Especifica o arquivo de Ajuda diferente da Ajuda on-line do Visual FoxPro.

Se você emitir SET HELP TO sem incluir um nome de arquivo, o Visual FoxPro procura um arquivo de Ajuda com o nome FOXHELP.HLP.

Comentários

Utilize SET HELP para fornecer um arquivo de Ajuda on-line trabalhado dentro de um aplicativo personalizado ou para alternar entre os diferentes arquivos de Ajuda no Visual FoxPro.

Para obter maiores informações sobre a Ajuda on-line do Visual FoxPro, consulte a parte 7, “Criando arquivos de Ajuda”, no Guia do Desenvolvedor.

SET HELPFILTER, comando

Ativa o Visual FoxPro para exibir um subconjunto dos tópicos da Ajuda do estilo .DBF na janela Ajuda.

Sintaxe

SET HELPFILTER [AUTOMATIC] TO [lExpressão]

Argumentos

AUTOMATIC Remove automaticamente os critérios especificados com SET HELPFILTER depois que a janela Ajuda é fechada. A inclusão de AUTOMATIC é idêntica à emissão de SET HELPFILTER TO imediatamente depois que a janela Ajuda é fechada. Você deve colocar AUTOMATIC diretamente antes de TO lExpressão.

lExpressão Especifica uma expressão lógica utilizada para filtrar os tópicos da Ajuda. Apenas os tópicos para os quais lExpressão resulta em verdadeiro (.T.) são exibidos. lExpressão contém tipicamente um nome de um campo na tabela de ajuda.

Comentários

Você pode definir apenas um filtro para a Ajuda do estilo .DBF. Você não pode definir um filtro para a Ajuda gráfica.

Para obter maiores informações sobre a Ajuda on-line do Visual FoxPro, consulte a parte 7, “Criando arquivos de Ajuda”, no Guia do Desenvolvedor.

SET HOURS, comando

[Pág.: 372]

Page 373: 74039361 Visual FoxPro Comandos e Funcoes

Define o relógio do sistema para um formato de hora de 12 ou 24 horas.

Sintaxe

SET HOURS TO [12 | 24]

Argumentos

TO 12 (Padrão) Especifica um formato de 12 horas.

TO 24 Especifica um formato de 24 horas.

Comentários

Utilize SET HOURS TO sem 12 ou 24 para retornar ao formato padrão de 12 horas.

TIME( ) sempre retorna um valor em formato de 24 horas e não é afetado por SET HOURS. O valor retornado por DATETIME( ) é determinado pela definição SET HOURS atual.

SET HOURS é projetado para a sessão atual de dados.

SET INDEX, comando

Sintaxe Argumentos Comentários Consulte tambémAbre um ou mais arquivos de índice para uso com a tabela atual.

Sintaxe

SET INDEX TO [ListaArquivoÍndice | ? ][ORDER nNumeroÍndice | NomeArquivoÍndiceIDX | [TAG] NomeMarca [OF NomeArquivoCDX] [ASCENDING | DESCENDING]][ADDITIVE]

Argumentos

ListaArquivoÍndice Especifica um ou mais arquivos de índice a serem abertos. Utilize vírgulas para separar múltiplos arquivos de índice na lista. A lista de arquivo de índice pode conter qualquer combinação de nomes de arquivo de índice .IDX e .CDX; você não precisa incluir as extensões de nome de arquivo a menos que outro arquivo .IDX ou .CDX exista com o mesmo nome.

O primeiro arquivo de índice na lista de arquivo de índice torna-se o arquivo de índice de controle, o qual controla como os registros são acessados e exibidos. Os registros serão exibidos e acessados em ordem física de registro se o primeiro arquivo de índice for um arquivo .CDX e SET ORDER TO TAG não tiver sido emitido.

? Exibe a caixa de diálogo Abrir da qual você pode abrir um único arquivo .IDX.

ORDER nNumeroÍndice Especifica uma marca ou um arquivo de índice de controle. A expressão numérica nNumeroÍndice especifica os arquivos de índice como aparecem na lista de arquivo de índice.

Os arquivos .IDX são numerados primeiro na ordem em que aparecem na lista de arquivo de índice. As marcas no arquivo .CDX estrutural (se existir um) são numeradas na ordem em que foram criadas. Finalmente, as marcas em quaisquer arquivos .CDX independentes são numerados na ordem em que foram criadas. Consulte “ SET ORDER” para maiores explicações sobre a numeração das marcas e arquivos de índice.

Se nNumeroÍndice for 0, os registros na tabela serão exibidos e acessados em ordem física de registro, mas os arquivos de índice permanecem abertos. ORDER 0 permite atualizar os arquivos de índice abertos enquanto acessa registros em ordem física. ORDER sem argumentos adicionais é idêntico a ORDER 0.

[Pág.: 373]

Page 374: 74039361 Visual FoxPro Comandos e Funcoes

O Visual FoxPro gera uma mensagem de erro se nNumeroÍndice for maior que o número de marcas de arquivos .IDX e arquivo .CDX.

ORDER NomeArquivoÍndiceIDX Especifica um arquivo .IDX como o arquivo de índice de controle.

ORDER [TAG] NomeMarca [OF NomeArquivoCDX] Especifica uma marca (NomeMarca) de um arquivo .CDX para ser a marca de controle. O nome da marca pode ser do arquivo .CDX estrutural ou de qualquer arquivo .CDX independente aberto.

Se as marcas com o mesmo nome existirem em arquivos .CDX independentes abertos, a marca estará em uso por OF NomeArquivoCDX para especificar o arquivo .CDX.

ASCENDING | DESCENDING Especifica se os registros da tabela são exibidos e acessados em ordem ascendente ou descendente. As marcas ou arquivos de índice não são alterados em qualquer caminho; apenas a ordem em que os registros são exibidos e acessados é alterada. Inclua a cláusula ASCENDING ou DESCENDING imediatamente após a cláusula ORDER.

ADDITIVE Especifica que os arquivos de índice abertos anteriormente, exceto para um índice composto estrutural, são deixados abertos quando você emite SET INDEX para abrir arquivos ou um arquivo de índice adicional para uma tabela. Sem ADDITIVE, os arquivos abertos anteriormente seriam fechados.

Comentários

Os registros em uma tabela que têm arquivos ou um arquivo de índice aberto podem ser exibidos e acessados em uma ordem determinada por um dos arquivos de índice. Ambos os arquivos de índice simples (.IDX) e composto (.CDX) podem ser abertos com SET INDEX. Se uma tabela tiver um arquivo .CDX estrutural, o arquivo será aberto automaticamente quando a tabela é aberta.

Apenas um arquivo .IDX (o arquivo de índice de controle) ou marca de um arquivo .CDX (a marca de controle) controla a ordem em que os registros da tabela serão exibidos ou acessados. Certos comandos (SEEK, por exemplo) utilizam a marca ou arquivo de índice de controle para procurar registros.

A emissão de SET INDEX TO sem argumentos adicionais fecha todos os arquivos de índice abertos (exceto um arquivo .CDX estrutural) na Área de trabalho atual.

SET KEY, comando

Especifica o acesso para um intervalo de registros com base em suas chaves de índice.

Sintaxe

SET KEY TO [eExpressao1 | RANGE eExpressão2 [, eExpressão3]][IN cAliasTabela | nÁreaTrabalho]

Argumentos

eExpressao1 Permite acesso a um conjunto de registros com chaves de índice idênticas. eExpressao1 é um valor de chave de índice simples. Todos os registros com chaves de índice que correspondem a eExpressao1 estão acessíveis.

RANGE eExpressao2 [, eExpressao3] Permite acesso a um conjunto de registros com chaves de índice que está incluído em um intervalo de valores de chaves de índice. eExpressao2 permite acesso a registros com chaves de índice iguais a ou maiores que eExpressao2. eExpressao3 (precedido por vírgula) permite acesso a registros com chaves de índice iguais ou menores que eExpressao3. A inclusão de ambos eExpressao2 e eExpressao3 (separados por uma vírgula) permite acesso a registros com chaves de índice iguais a ou maiores que eExpressao2 e iguais ou menores que eExpressao3.Por exemplo, a tabela CUSTOMER inclui um campo de caractere que contém códigos postais. Se a tabela é indexada no campo de código postal, você pode especificar um intervalo de códigos postais com SET KEY.

[Pág.: 374]

Page 375: 74039361 Visual FoxPro Comandos e Funcoes

No exemplo a seguir, apenas registros com códigos postais que estão incluídos no intervalo de 40000 a 43999 aparecem em uma janela Pesquisar:

CLOSE DATABASESUSE customerSET ORDER TO postalcodeSET KEY TO RANGE '40000', '43999'BROWSE

IN cAliasTabela | nÁreaTrabalho Permite acesso a um intervalo de registros para uma tabela aberta em uma Área de trabalho específica. cAliasTabela especifica o alias da Área de trabalho e nÁreaTrabalho especifica o número da Área de trabalho. Se nenhuma tabela tiver o alias especificado, o Visual FoxPro irá gerar uma mensagem de erro. Se você omitir o alias e número da Área de trabalho, SET KEY irá operar na tabela na Área de trabalho atual.

Comentários

Utilize SET KEY para limitar o intervalo de registros que você pode acessar em uma tabela. A tabela deve ser indexada e o valor ou valores da chave de índice deve ser o mesmo tipo de dados como a expressão de índices ou a marca principal.

Emita SET KEY TO sem quaisquer argumentos adicionais para restaurar o acesso a todos os registros na tabela.

SET KEYCOMP, comando

Controla a navegação do pressionamento do Visual FoxPro.

Sintaxe

SET KEYCOMP TO DOS | WINDOWS | MAC

Comentários

SET KEYCOMP determina os pressionamentos e as combinações de pressionamentos utilizados para se mover através da interface do Visual FoxPro acessando controles como botões, caixas de listagem, menus e assim por diante. O efeito de SET KEYCOMP depende do controle.

Utilize SET KEYCOMP quando você quiser utilizar pressionamentos que lhe são familiares.

Para navegar no Windows ou Macintosh utilizando pressionamentos do MS-DOS, emita

SET KEYCOMP TO DOS

Você pode especificar a opção DOS ou WINDOWS (padrão).

Você pode especificar uma definição de inicialização SET KEYCOMP em seu arquivo de configuração do Visual FoxPro, CONFIG.FPW. Por exemplo, a linha a seguir, quando colocada em seu arquivo de configuração, tem o efeito de SET KEYCOMP TO DOS:

KEYCOMP = DOS

Esta seção descreve como as opções DOS e WINDOWS afetam o Visual FoxPro.

Botões padrão

DOS O botão padrão em uma caixa de diálogo está focalizado; sua aparência não se altera. É selecionado quando você pressiona CTRL+ENTER.

[Pág.: 375]

Page 376: 74039361 Visual FoxPro Comandos e Funcoes

WINDOWS O botão padrão em uma caixa de diálogo pode alterar a aparência quando você move entre controles. Pode estar escurecido ou estar focalizado (é cercado por uma borda em negrito) para indicar que é o padrão atual. É selecionado quando você pressiona ENTER. Pressionando sempre ENTER realiza-se a ação de botão padrão.

Para uma ilustração de como o botão padrão altera a aparência em uma caixa de diálogo, emita SET KEYCOMP TO WINDOWS, escolha Abrir do menu Arquivo e, em seguida, pressione TAB para se mover através da caixa de diálogo Abrir.

Teclas de acesso

DOS Uma tecla de acesso para um controle é uma tecla única. Se você não estiver em um controle que tem teclado (uma caixa de combinação ou uma caixa de listagem), poderá pressionar a tecla de acesso para selecioná-lo.

WINDOWS Uma tecla de acesso para um controle pode ser uma tecla única ou uma combinação de teclas. Se o controle atual tiver teclado (uma caixa de combinação ou uma caixa de listagem), você poderá pressionar ALT mais a tecla de acesso para selecionar o controle. Para selecionar outros controles, você pode pressionar a tecla de acesso ou ALT mais a tecla de acesso.

Caixas de combinação DOS Quando uma caixa de combinação está focalizada, você pode abri-la pressionando ENTER ou BARRA DE ESPAÇO. O teclado em uma caixa de combinação não estará disponível até que a caixa de combinação seja aberta.

WINDOWS Quando uma caixa de combinação está focalizada, você pode abri-la pressionando BARRA DE ESPAÇO, ALT+SETA PARA CIMA ou ALT+SETA PARA BAIXO . O teclado em uma caixa de combinação estará disponível quando a caixa de combinação estiver focalizada e aberta.

Por exemplo, uma caixa de combinação selecionada contém uma lista de unidades de disco disponíveis. Se as unidades de disco A, B e C estiverem disponíveis e a unidade de disco B estiver exibido atualmente, você pode selecionar a unidade de disco C sem abrir a caixa de combinação pressionando a C ou a tecla SETA PARA BAIXO . A unidade de disco C é selecionada e você passa para o próximo controle.

Botões Opção

DOS Pressione a tecla TAB quando um grupo de botões de opção é selecionado para se mover entre os botões de opção.

WINDOWS Pressione a tecla TAB quando um grupo de botões de opção é selecionado para se mover dos botões de opção ao próximo controle. Para se mover entre um conjunto de botões de opção, pressione as teclas SETA PARA CIMA e SETA PARA BAIXO .

Janela Pesquisar

DOS Um campo não é selecionado na entrada dentro do campo.WINDOWS Um campo é selecionado automaticamente na entrada dentro do campo.

SET LOCK, comando

Ativa ou desativa bloqueio automático do arquivo em certos comandos.

Sintaxe

SET LOCK ON | OFFArgumentos

[Pág.: 376]

Page 377: 74039361 Visual FoxPro Comandos e Funcoes

ON Especifica que os comandos listados abaixo automaticamente bloqueiam a tabela quando são executados. Isto fornece acesso somente para leitura a outros usuários na rede e assegura que você está utilizando os dados mais atuais.

OFF (Padrão) Ativa acesso compartilhado de tabelas com comandos listados abaixo. Utilize SET LOCK OFF se você não precisa das informações mais atuais de uma tabela.

Comentários

O Visual FoxPro não coloca um bloqueio em um arquivo quando executa comandos que requerem acesso somente para leitura para uma tabela. Estes comandos incluem:

Comandos

AVERAGE JOIN (ambos os arquivos)CALCULATE LISTCOPY TO LABELCOPY TO ARRAY REPORTCOUNT SORTDISPLAY (com um escopo) SUMINDEX TOTAL

Enquanto eles são executados, estes comandos não alteram o conteúdo de uma tabela e o acesso à tabela é disponível para outros usuários na rede. Assim, a tabela pode ser alterada enquanto você está executando um destes comandos. Por exemplo, você pode começar a imprimir um relatório utilizando REPORT antes de outro usuário alterar um registro incluído no relatório. Seu relatório agora contém informações desatualizadas.SET LOCK é projetado para a sessão atual de dados.

SET LOGERRORS, comando

Determina se o Visual FoxPro envia as mensagens de erro de compilação para um arquivo de texto.

Sintaxe

SET LOGERRORS ON | OFF

Argumentos

ON (Padrão) Especifica que um arquivo de resumo de mensagem de erro de compilação será criado com o mesmo nome do programa compilado e com uma extensão .ERR. Se um arquivo de resumo com o mesmo nome já existir, ele será sobrescrito.

OFF Especifica que um arquivo de resumo de mensagem de erro de compilação não é criado quando um programa é compilado.

Comentários

Utilize SET LOGERRORS para salvar as mensagens de erro de compilação para um arquivo de texto quando os programas são compilados.

Se existir um arquivo de resumo com o mesmo nome do programa compilado e se o programa compila sem erro, o arquivo de resumo será excluído.

SET MARGIN, comando

Define a margem esquerda da impressora e afeta todas as saídas direcionadas para a impressora.Sintaxe

[Pág.: 377]

Page 378: 74039361 Visual FoxPro Comandos e Funcoes

SET MARGIN TO nColunas

Argumentos

nColunas Especifica a margem esquerda em colunas. O padrão é 0 colunas; o máximo é 256.

Comentários

Se você utilizar SET MARGIN para ajustar a margem esquerda, o valor especificado com SET MARGIN será armazenado para a variável do sistema _PLOFFSET. Você pode também definir a margem esquerda ao armazenar um valor diretamente para _PLOFFSET.

O valor da variável do sistema _LMARGIN também afeta a definição de margem esquerda.

Importante A definição da margem esquerda especificada em SET MARGIN não afeta relatórios criados com o Criador de relatórios e assim executados com REPORT. Embora _PLOFFSET seja ajustada durante a execução de um relatório criado com o Criador de relatórios, a mesma é redefinida para seu valor original após executado o relatório. A definição de Margem esquerda na caixa de diálogo Configuração de página do Criador de relatórios determina o deslocamento a partir da borda esquerda do papel. Selecione Configuração de página no menu Arquivo para exibir a caixa de diálogo Configuração de página quando o Criador de relatórios estiver aberto.

SET MARK TO, comando

Especifica um delimitador para a exibição de expressões de data.

Sintaxe

SET MARK TO [cDelimitador]

Argumentos

cDelimitador Especifica um caractere a ser utilizado como o delimitador de data.

Comentários

SET MARK TO especifica o caractere que separa o mês, dia e ano em datas exibidas.

Utilize SET MARK TO sem cDelimitador para redefinir o delimitador para barra padrão ( / ).

SET MARK TO é projetado para a sessão de dados atual.

SET MEMOWIDTH, comando

Especifica a largura exibida dos campos Memo e expressões de caractere.

Sintaxe

SET MEMOWIDTH TO nColunas

Argumentos

nColunas Especifica uma largura entre 8 e 1024 colunas. A largura padrão para saída é de 50 colunas. Se você emitir SET COMPATIBLE ON ou SET COMPATIBLE DB4, a largura padrão será alterada para 80 colunas. Se você especificar um valor para nColunas maior que 1024, a largura será definida para 1024.

Comentários

[Pág.: 378]

Page 379: 74039361 Visual FoxPro Comandos e Funcoes

SET MEMOWIDTH especifica a largura da saída enviada para a janela principal do Visual FoxPro ou para uma janela definida pelo usuário por comandos, como ? | ??, DISPLAY ou LIST. Afeta a largura da saída de campos Memo e expressões de caractere maiores que 1024 caracteres. Também afeta os valores retornados pelas funções ATCLINE( ), ATLINE( ), MEMLINE( ) e MLINE( ).

Observe que para ? e ?? a largura exibida não irá exceder 256 caracteres.

Se a saída for direcionada para a janela principal do Visual FoxPro, a largura da saída será determinada pela fonte para a janela principal do Visual FoxPro. Se a saída for direcionada para uma janela definida pelo usuário, a largura da mesma será determinada pela fonte para a janela definida pelo usuário.

SET MEMOWIDTH é projetado para a sessão de dados atual.

SET MESSAGE, comando

Define uma mensagem a ser exibida na janela principal do Visual FoxPro ou na barra de status gráfico ou especifica a localização das mensagens para as barras de menus definidas pelo usuário e comandos de menu.

Sintaxe

SET MESSAGE TO [cTextoMensagem] – ou –SET MESSAGE TO [nLinha [LEFT | CENTER | RIGHT]] – ou –SET MESSAGE WINDOW [NomeJanela]

Argumentos

TO [cTextoMensagem] Especifica a mensagem a ser exibida.

TO [nLinha [LEFT | CENTER | RIGHT]] Especifica a localização das mensagens na janela principal do Visual FoxPro. NLinha especifica a linha em que as mensagens são exibidas. Se nLinha for 0, nenhuma mensagem será exibida.

LEFT, CENTER e RIGHT especificam a localização da tela horizontal de mensagens.

O Visual FoxPro ignora uma localização de mensagem especificada com SET MESSAGE, quando a barra de status gráfico é exibida.

WINDOW [NomeJanela] Especifica a janela na qual as mensagens são exibidas. Para remover uma mensagem da janela e exibi-la na tela, emita SET MESSAGE WINDOW.

Comentários

SET MESSAGE permite que você crie uma mensagem. Também permite que seja especificado onde as mensagens criadas com DEFINE BAR, DEFINE MENU, DEFINE PAD ou DEFINE POPUP serão exibidas.

Por padrão, as mensagens serão colocadas na última linha da janela principal do Visual FoxPro, se a barra de status com base em caractere for exibida. Se a barra de status gráfico for exibida, as mensagens serão colocadas na barra de status.

A linha de SET MESSAGE será redefinida para a última linha da janela principal do Visual FoxPro, sempre que SET DISPLAY for emitido.

SET MESSAGE TO sem argumentos coloca as mensagens na barra de status gráfico.

SET MULTILOCKS, comando

[Pág.: 379]

Page 380: 74039361 Visual FoxPro Comandos e Funcoes

Determina se você pode bloquear múltiplos registros com a utilização de LOCK( ) ou RLOCK( ).

Sintaxe

SET MULTILOCKS ON | OFF

Argumentos

ON Permite que você tente bloquear um conjunto de registros. Inclui um conjunto de números de registro em LOCK( ) ou RLOCK( ) para tentar bloquear múltiplos registros.

OFF (Padrão) Permite que você tente bloquear um único registro com LOCK( ) ou RLOCK( ).

Comentários

Quando uma tabela estiver aberta para utilização compartilhada em uma rede, você pode tentar bloquear mais do que um registro em um arquivo de tabela. A definição de SET MULTILOCKS determina se você pode tentar bloquear tanto um único registro quanto um conjunto de registros. Os registros podem ser bloqueados com a função LOCK( ) ou RLOCK( ).

Comutando SET MULTILOCKS de ON (ativado) para OFF (desativado) ou de OFF para ON emite de forma implícita UNLOCK ALL — todos os bloqueios de registro em todas as áreas de trabalho são liberados.

SET MULTILOCKS é projetado para a sessão de dados atual.

MULTILOCKS deve estar ON antes que a utilização do buffer de tabela ou linha possa ser ativada com CURSORSETPROP( ). Consulte CURSORSETPROP( ) para obter informações adicionais sobre a utilização do buffer de tabela e linha.

Se você selecionar a caixa de verificação Ativar utilização do buffer de dados na caixa de diálogo Propriedades da área de trabalho (que é exibida quando você seleciona o botão Propriedades na janela Sessão de dados), MULTILOCKS será automaticamente definido a ON para a sessão de dados atual. Entretanto, ao limpar a caixa de verificação Ativar utilização do buffer de dados não irá definir MULTILOCKS a OFF para a sessão de dados atual.

Para obter maiores informações sobre como bloquear o arquivo e registro e sobre compartilhamento de tabelas em uma rede, consulte as funções LOCK( ) e RLOCK( ) e o capítulo 17, “Programando para acesso compartilhado”, no Guia do Desenvolvedor.

SET NEAR, comando

Determina onde o ponteiro do registro estará posicionado, depois que FIND ou SEEK não conseguir procurar por um registro.

Sintaxe

SET NEAR ON | OFF

Argumentos

ON Posiciona o ponteiro do registro no registro mais próximo correspondente, caso uma busca de registro utilizando FIND ou SEEK não seja bem sucedida. Com esta definição, RECNO( ) retorna o número de registro do registro mais próximo correspondente, FOUND( ) retorna falso (.F.) e EOF( ) retorna falso (.F.).

OFF (Padrão) Posiciona o ponteiro do registro ao final da tabela caso uma busca de registro, utilizando FIND ou SEEK, não seja bem sucedida. Com esta definição, RECNO( ) retorna o número de registros na tabela mais 1, FOUND( ) retorna falso (.F.) e EOF( ) retorna verdadeiro (.T.).

Comentários

[Pág.: 380]

Page 381: 74039361 Visual FoxPro Comandos e Funcoes

Uma busca não é bem sucedida quando nenhum registro atinge os critérios de busca.

A emissão de RECNO( ), com um argumento 0, retornará o número de registro do registro mais próximo correspondente, caso uma busca não seja bem sucedida, independente da definição de SET NEAR.

SET NEAR é projetado para a sessão de dados atual.

SET NOTIFY, comando

Ativa e desativa a exibição de determinadas mensagens do sistema.

Sintaxe

SET NOTIFY ON | OFF

Argumentos

ON (Padrão) Ativa a exibição de determinadas mensagens do sistema.

OFF Desativa a exibição de determinadas mensagens do sistema.

Comentários

Os exemplos de mensagens do sistemas que são afetadas por SET NOTIFY são:

· “ Expressão válida” na caixa de diálogo Construtor de expressões.· “ Execução cancelada”, que aparece quando a execução do programa é cancelada.

As mensagens do sistema são exibidas na barra de status gráfica (não nas baseadas em caracteres) na parte inferior da janela principal do Visual FoxPro.

SET NULLDISPLAY, comando

Especifica o texto exibido para valores nulos.

Sintaxe

SET NULLDISPLAY TO [cTextoNulo]

Argumentos

cTextoNulo Especifica o texto que é exibido para valores nulos. Se cTextoNulo for omitido, o texto do valor nulo padrão, .NULL., será recuperado e exibido para os valores nulos.

Comentários

Como padrão, o Visual FoxPro exibe .NULL. para valores nulos em objetos, janelas Pesquisar, saída DISPLAY, saída LIST e assim por diante. Utilize SET NULLDISPLAY para trocar o texto do valor nulo padrão por uma outra seqüência de caracteres. SET NULLDISPLAY troca o texto do valor nulo padrão por todos os objetos para os quais a propriedade NullDisplay é uma seqüência vazia.

Utilize a propriedade NullDisplay para trocar o texto do valor nulo padrão por uma outra seqüência de caracteres de um objeto individual.

SET ODOMETER, comando

[Pág.: 381]

Page 382: 74039361 Visual FoxPro Comandos e Funcoes

Especifica o intervalo entre relatórios do contador de registros dos comandos que processam registros.

Sintaxe

SET ODOMETER TO [nRegistros]

Argumentos

TO [nRegistros] Especifica o intervalo entre relatórios em número de registros. O valor de nRegistros pode variar de 1 a 32.767 registros. O valor padrão é 100 registros.

Comentários

Utilize SET ODOMETER para alterar o intervalo no qual os comandos exibem informações sobre o número de registros processados.

Por exemplo, COPY TO exibe o número de registros que são copiados em um novo arquivo enquanto o comando está sendo executado. O contador de registros pode ser desativado emitindo SET TALK OFF.

SET OPTIMIZE, comando

Ativa e desativa a otimização Rushmore.

Sintaxe

SET OPTIMIZE ON | OFF

Argumentos

ON (Padrão) Ativa a otimização Rushmore.

OFF Desativa a otimização Rushmore.

Comentários

O Visual FoxPro utiliza uma tecnologia denominada Rushmore para otimizar a recuperação de dados. Os comandos de tabela que suportam uma cláusula FOR utilizam a tecnologia Rushmore para aprimorar seu desempenho. Quando um comando otimizável é emitido, Rushmore determina que registros correspondem ao critério FOR. O comando é executado nos registros da tabela que correspondem ao conjunto de registros Rushmore.

Em casos raros, você deve desativar a otimização Rushmore. Se um comando que se beneficia da otimização Rushmore modificar chaves de índices de uma consulta, o conjunto de registros Rushmore poderá ficar desatualizado. É possível desativar a otimização Rushmore para garantir que você tenha as informações mais atuais da tabela.

Você pode utilizar SET OPTIMIZE para ativar ou desativar globalmente a tecnologia Rushmore. Cada comando que utiliza Rushmore possui uma cláusula NOOPTIMIZE que pode ser incluída para desativar a otimização Rushmore para o comando.

Para obter maiores informações, consulte “Conhecendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos” no Guia do Desenvolvedor.

Estes são os comandos cujo desempenho é otimizado pela tecnologia Rushmore:

Comando

AVERAGE INDEX

[Pág.: 382]

Page 383: 74039361 Visual FoxPro Comandos e Funcoes

BLANK LABELBROWSE LISTCALCULATE LOCATECHANGE RECALLCOPY TO REPLACECOPY TO ARRAY REPLACE FROM ARRAYCOUNT REPORTDELETE SCANDISPLAY SORTEDIT SUMEXPORT TOTAL

SET ORDER, comando

Designa um arquivo ou marca de índice controlador para uma tabela.

Sintaxe

SET ORDER TO[nNúmeroÍndice | NomeArquivoÍndiceIDX | [TAG] NomeMarca [OF NomeArquivoCDX] [IN nÁreaTrabalho | cAliasTabela] [ASCENDING | DESCENDING]]

Argumentos

nNúmeroÍndice Especifica o número da marca ou do arquivo de índice controlador. nNúmeroÍndice refere-se aos arquivos de índice como estão relacionados em USE ou SET INDEX. Arquivos .IDX abertos são numerados primeiro na ordem em que eles aparecem em USE ou SET INDEX. As marcas no arquivo estrutural .CDX (caso exista alguma) são numeradas na ordem em que foram criadas. Finalmente, as marcas em quaisquer arquivos .CDX independentes abertos são numeradas na ordem em que foram criadas.

O exemplo abaixo ilustra como diferentes tipos de arquivo de índice e marcas são numerados. (Os nomes dos arquivos são apenas ilustrativos e não existem necessariamente.) Uma tabela denominada video.dbf é aberta com três índices (title.idx, costs.cdx e rating.idx) na primeira Área de trabalho com este comando:

USE video INDEX title.idx, costs.cdx, rating.idx IN 1

A tabela video possui um arquivo de índice composto estrutural (video.cdx) com duas marcas, NUMBERSOLD e YEARSOLD. O arquivo .CDX estrutural é aberto automaticamente quando a tabela video é aberta.

Uma vez que os arquivos .IDX são numerados primeiro, emita SET ORDER TO 1 para tornar title.idx o índice de controle e SET ORDER TO 2 para tornar rating.idx o índice de controle:

SET ORDER TO 1Controlling index: C:\FOX30\TITLE.IDX SET ORDER TO 2Controlling index: C:\FOX30\RATING.IDX

As marcas em video.cdx são numeradas a seguir:

SET ORDER TO 3Controlling index: C:\FOX30\VIDEO.CDX Tag: NUMBERSOLD SET ORDER TO 4Controlling index: C:\FOX30\VIDEO.CDX Tag: YEARSOLD Finalmente, as marcas no arquivo independente, costs.cdx, são numeradas:

SET ORDER TO 5

[Pág.: 383]

Page 384: 74039361 Visual FoxPro Comandos e Funcoes

Controlling index: C:\FOX30\COSTS.CDX Tag: RENTALCOSTSET ORDER TO 6Controlling index: C:\FOX30\COSTS.CDX Tag: BUYCOST

nNúmeroÍndice também pode ser 0. Caso você emita SET ORDER TO 0, todos os arquivos de índices permanecerão abertos e serão atualizados quando os registros forem adicionados, excluídos ou modificados. Entretanto, os registros na tabela são exibidos e acessados na ordem de número de registro e não em uma ordem indexada. Emitir SET ORDER TO sem argumentos adicionais é o mesmo que emitir SET ORDER TO 0.

Se nNúmeroÍndice for maior que o número de arquivos .IDX e que as marcas de arquivos.CDX , o Visual FoxPro gerará uma mensagem de erro.

NomeArquivoÍndiceIDX Especifica um arquivo .IDX como o arquivo de índice controlador.

[TAG] NomeMarca [OF NomeArquivoCDX] Especifica uma marca de um arquivo .CDX como a marca controladora. O nome da marca pode ser um arquivo .CDX estrutural ou qualquer um arquivo .CDX independente aberto.

Se houver nomes de marcas idênticos em arquivos .CDX independentes abertos, utilize OF NomeArquivoCDX para especificar o arquivo .CDX que contém a marca.

Observação O arquivo .IDX tem precedência se houver nomes de marca e arquivo .IDX duplicados.

IN nÁreaTrabalho | cAliasTabela Designa um arquivo ou marca de índice controlador para uma tabela aberta em uma outra Área de trabalho que não a selecionada atualmente. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela especifica o alias para uma tabela.

ASCENDING | DESCENDING Exibe e permite acesso aos registros de tabela em ordem ascendente ou descendente. A inclusão de ASCENDING ou DESCENDING não altera o arquivo de índice ou marca de índice.

Comentários

Uma tabela pode ter diversos arquivos de índices abertos simultaneamente. Mas, apenas um arquivo de índice simples (.IDX) (o arquivo de índice controlador) ou uma marca de um arquivo de índice composto (.CDX) (a marca controladora) determina a ordem na qual os registros de uma tabela são exibidos ou acessados. SET ORDER permite que você designe o arquivo ou marca de índice controladores. Determinados comandos (SEEK, por exemplo) utilizam o arquivo de índice ou marca controladores para pesquisar registros.

É possível abrir arquivos de índices com uma tabela incluindo a cláusula INDEX no comando USE. Se uma tabela tiver um arquivo .CDX estruturado associado, este arquivo será aberto automaticamente com a tabela. Após a tabela ter sido aberta, você pode abrir e fechar arquivos de índices da tabela que utiliza SET INDEX.

Como padrão, SET ORDER designa o índice ou a marca controladores da tabela aberta na Área de trabalho selecionada no momento.

SET PALETTE, comando

Especifica se a paleta de cores padrão do Visual FoxPro será utilizada.

Sintaxe

SET PALETTE ON | OFF

Argumentos

ON (Padrão) Restaura a paleta de cores padrão do Visual FoxPro.

[Pág.: 384]

Page 385: 74039361 Visual FoxPro Comandos e Funcoes

OFF Substitui a paleta de cores padrão do Visual FoxPro pela paleta de cores dos gráficos .BMP e dos objetos OLE.

Comentários

Os objetos OLE e os gráficos .BMP podem conter as paletas de cores que determinam como os gráficos e objetos aparecem quando são exibidos. A paleta de cores do primeiro gráfico ou objeto exibido é utilizada para todos os gráficos e objetos subseqüentes. Uma vez que a paleta de cores é utilizada para todos os gráficos e objetos, as cores de alguns dos gráficos e objetos podem ser alterados de uma forma inesperada.

A paleta de cores padrão do Visual FoxPro é designada para aprimorar a aparência da exibição dos vários gráficos .BMP e objetos OLE.

SET PATH, comando

Especifica um caminho para pesquisas de arquivos.

Sintaxe

SET PATH TO [Caminho]

Argumentos

TO [Caminho] Especifica os diretórios que você deseja que o Visual FoxPro procure. Utilize vírgula ou ponto-e- vírgula para separar os diretórios.

Observação O Visual FoxPro não reconhecerá o nome do caminho adequadamente se um nome de disco ou de diretório contiver um ponto de exclamação (!).

Em todas as plataformas FoxPro, as funções que retornam as informações sobre o caminho, tais como CURDIR( ), DBF( ) e SYS(2003), utilizam as convenções de nomenclatura de caminhos do MS-DOS em seus valores de retorno.

Comentários

Emita SET PATH TO sem Caminho para restaurar o caminho ao diretório padrão. Utilize SET DEFAULT para especificar o diretório padrão e CURDIR( ) para retornar o diretório padrão atual.

SET PATH não é projetado para a sessão de dados atual, as alterações feitas no caminho padrão utilizando o comando SET PATH afetam todas as sessões de dados.

SET PDSETUP, comando

Carrega uma configuração do driver da impressora ou apaga uma configuração do driver da impressora atual.

Sintaxe

SET PDSETUP TO [[cConfiguraçãoDriverImpressora [, Parâmetro1[, Parâmetro2 ...]]][WITH Parâmetro3 [, Parâmetro4 ...]]]

Argumentos

cConfiguraçãoDriverImpressora Especifica o nome da configuração do driver da impressora a ser carregado.Quando você carrega uma configuração do driver da impressora, o nome da configuração é armazenado na variável do sistema _PDSETUP e em uma matriz da variável especial, _PDPARMS, pode ser criada. (_PDPARMS é discutida em detalhes na cláusula WITH neste tópico.)

[Pág.: 385]

Page 386: 74039361 Visual FoxPro Comandos e Funcoes

Se o nome da configuração do driver da impressora que você especificou com cConfiguraçãoDriverImpressora não existir em seu arquivo de recursos, o aplicativo da configuração do driver da impressora atual é executado de forma que você possa criar uma configuração com este nome. Se o aplicativo de configuração do driver da impressora atual for GENPD.APP, a caixa de diálogo Edição da configuração da impressora aparecerá para que você possa criar a configuração.

Se o nome da configuração iniciar com um travessão (-), o programa _GENPD não será executado, mas o nome após o travessão será armazenado em _PDSETUP.

Se SET PDSETUP TO for emitido sem cConfiguraçãoDriverImpressora, a configuração do driver da impressora atual será apagada, a seqüência vazia será armazenada em _PDSETUP e a matriz _PDPARMS será apagada da memória.

Parâmetro1 [, Parâmetro2 ...] Especifica qualquer número de parâmetros opcionais. Estes parâmetros são passados para o aplicativo da interface de configuração da impressora e podem ser de qualquer tipo (caractere, numérico, lógico e assim por diante). A primeira linha do aplicativo da interface de configuração da sua impressora deve ser uma instrução LPARAMETERS ou PARAMETERS para aceitar os parâmetros passados a partir do SET PDSETUP.

Se você estiver utilizando GENPD.APP, não inclua esses parâmetros opcionais. GENPD.APP não aceita os parâmetros passados a partir do SET PDSETUP e, portanto, a inclusão deles irá gerar um erro.

WITH Parâmetro3 [, Parâmetro4 ...] Cria uma matriz _PDPARMS especial de impressora. Cada parâmetro especificado com Parâmetro3, Parâmetro4 e assim por diante torna-se um elemento em _PDPARMS. O primeiro parâmetro (Parâmetro3) é armazenado no primeiro elemento de _PDPARMS, o segundo parâmetro (Parâmetro4) é armazenado no segundo elemento e assim por diante. Esses parâmetros podem ser de qualquer tipo (caractere, numérico, lógico e outros).

Se GENPD.APP está sendo utilizado, qualquer parâmetro que você incluir será sobrescrito pelo aplicativo.

Comentários

No Visual FoxPro, uma configuração do driver da impressora é utilizada quando você imprime relatórios baseados em caracteres no FoxPro para MS-DOS.

Uma configuração do driver da impressora consiste de uma combinação de definições, incluindo o programa e as informações do driver da impressora, tais com orientação de página, tamanho de fonte e estilo de fonte padrão, margens etc. As configurações do driver da impressora são armazenadas no arquivo de recursos do FoxPro para MS-DOS, FOXUSER.DBF, e pode ser criadas interativamente e receber um nome na caixa de diálogo Edição da configuração da impressora.

Uma configuração do driver da impressora também pode ser carregada ou apagada com a variável do sistema _PDSETUP.

Quando você emite SET PDSETUP, o aplicativo da interface da configuração da impressora atual é executado. O aplicativo da interface recebe o nome da configuração do driver da impressora incluído em SET PDSETUP. O aplicativo de interface também pode ser especificado com a variável do sistema _GENPD. O aplicativo da interface padrão é GENPD.APP, aplicativo da interface da configuração da impressora incluído com o FoxPro for MS-DOS.

SET POINT, comando

Determina o caractere de casa decimal utilizado na exibição das expressões numéricas e monetárias.

Sintaxe

SET POINT TO [cCaractereCasaDecimal]

[Pág.: 386]

Page 387: 74039361 Visual FoxPro Comandos e Funcoes

Argumentos

cCaractereCasa Decimal Especifica o caractere para a casa decimal.

Comentários

Utilize SET POINT para alterar o padrão da casa decimal que é o ponto. (.). Emita SET POINT TO sem cCaractereCasa Decimal para redefinir o casa decimal para uma vírgula. Embora você possa definir a casa decimal exibida como um outro caractere, deve utilizar a vírgula para indicar casa decimal nos cálculos.

SET POINT é projetado para a sessão de dados atual.

SET POINT, exemplo do comando

gnX = 1.25gcNewPoint = '_'SET POINT TO gcNewPoint ? gnXSET POINT TO && Redefina a casa decimal para uma vírgula(,).? gnX

SET PRINTER, comando

Ativa ou desativa a saída para a impressora ou rotear a saída para um arquivo, porta ou impressora de rede.

Sintaxe

SET PRINTER ON [PROMPT] | OFF – or –SET PRINTER FONT cNomeFonte [, cTamanhoFonte]

[STYLE cEstiloFonte]– or –SET PRINTER TO [NomeArquivo [ADDITIVE] | NomePorta]– or –SET PRINTER TO [DEFAULT | NAME NomeImpressoraWindows] – or –SET PRINTER TO NAME \\NomeServidor\NomeImpressora

Argumentos

ON [PROMPT] Ativa a saída para a impressora. A saída formatada com @ ... SAY não será roteada para a impressora quando SET PRINTER estiver definido como ON. Utilize SET DEVICE TO PRINTER para rotear a saída de @ ... SAY para a impressora.

É possível incluir PROMPT para exibir uma caixa de diálogo antes que a impressão seja iniciada. Nessa caixa de diálogo, é possível ajustar os parâmetros da impressora. O driver de impressora instalado atualmente determina que parâmetros da impressora podem ser ajustados.

OFF (Padrão) Desativa a saída para a impressora.

FONT cFonteNome [, cTamanhoFonte] Especifica a fonte padrão para a saída da impressora. cFonteNome especifica o nome da fonte e cTamanhoFonte especifica o tamanho do ponto. Por exemplo, o comando a seguir especifica a fonte Courier de 16 pontos como a fonte padrão da impressora:

SET PRINTER FONT 'Courier', 16 Se a fonte especificada não estiver disponível, uma fonte com características semelhantes fará a substituição.

STYLE cEstiloFonte Especifica o estilo padrão da fonte para a saída da impressora. Se a cláusula STYLE for omitida, um estilo de fonte normal será utilizado.

[Pág.: 387]

Page 388: 74039361 Visual FoxPro Comandos e Funcoes

Se o estilo da fonte especificado não estiver disponível, um estilo de fonte com características semelhantes fará a substituição.

Os estilos de fonte que você pode especificar com cEstiloFonte são os seguintes:

Caractere Estilo de fonte

B NegritoI ItálicoN NormalO ContornoQ OpacoS Sombreado- RiscadoT TransparenteU Sublinhado

É possível incluir mais de um caractere para especificar um combinação de estilos de fonte. Por exemplo, o comando abaixo especifica a fonte Courier Negrito Itálico de 16 pontos:

SET PRINTER FONT 'Courier', 16 STYLE 'BI'

TO [NomeArquivo [ADDITIVE] | NomePorta] Especifica um arquivo ou porta para aonde a saída será direcionada.

No Visual FoxPro, em vez disso, utilize SET PRINTER TO NAME para especificar uma impressora.

NomeArquivo especifica um nome de arquivo para o qual a saída será direcionada. Se ADDITIVE for incluído, a saída será anexada ao conteúdo existente do arquivo. Se ADDITIVE for omitido, o conteúdo existente do arquivo será sobrescrito.

NomePorta envia a saída para uma outra impressora local.

TO [DEFAULT | NAME NomeImpressoraWindows] Envia a saída de impressora para a impressora padrão do Windows ou para uma impressora específica do Windows. Os nomes das impressoras do Windows estão armazenados em WIN.INI.

É possível utilizar GETPRINTER( ) ou APRINTERS( ) para determinar os nomes das impressoras instaladas atualmente. Por exemplo, o comando a seguir exibe a caixa de diálogo Configuração de impressora do Windows e faz da impressora selecionada aquela para a qual a saída impressa será direcionada:

SET PRINTER TO NAME GETPRINTER( )

TO NAME \\NomeServidor\NomeImpressora Aceita somente pelo Windows NT. Direciona a saída da impressora para uma impressora de rede.

NomeServidor é o nome da rede atribuído ao seu servidor de impressão. Este nome é atribuído pelo administrador da rede e deve ser exclusivo.

NomeImpressora é o nome atribuído à impressora e é também atribuído pelo administrador da rede.

Comentários

Utilize SET PRINTER TO com os argumentos especificados para direcionar a saída para um arquivo, uma porta para uma outra impressora local ou uma impressora de rede.Utilize SET PRINTER TO sem um argumento para redefinir a saída para o utilitário de impressora padrão MS-DOS PRN.

[Pág.: 388]

Page 389: 74039361 Visual FoxPro Comandos e Funcoes

Quando a saída é direcionada para uma impressora da rede, a saída é impressa ou reunida em um spooler de impressão até que um novo comando SET PRINTER seja emitido. Para obter maiores informações sobre a impressão em rede, consulte a documentação da rede.

SET READBORDER, comando

Determina se são colocadas bordas em torno das caixas de texto criadas com @ ... GET.

Sintaxe

SET READBORDER ON | OFF

Argumentos

ON Coloca uma borda de linha simples em torno de todas as caixas de texto criadas com @ ... GET. Se SET READBORDER for definido como ON quando a primeira caixa de texto for criada, todas as caixas de texto subseqüentes criadas no mesmo nível READ também terão bordas.

OFF (Padrão) Especifica que não será colocada uma borda em torno das caixas de texto criadas com @ ... GET. Se SET READBORDER for definido como OFF quando a primeira caixa de texto for criada, todas as caixas de texto subseqüentes criadas no mesmo nível READ não terão bordas.

Comentários

SET READBORDER especifica se devem ser colocadas bordas de linha única em torno das caixas de texto criadas com @ ... GET.

SET READBORDER, exemplo do comando

No exemplo abaixo, as primeiras três caixas de texto criadas com @ ... GET têm bordas. A terceira caixa de texto tem uma borda, embora SET READBORDER tenha sido SET como OFF antes de ter sido criada. A quarta caixa de texto não tem borda, uma vez que READBORDER foi SET como OFF e está incluída em um outro READ proveniente das três primeiras caixas de texto.

SET READBORDER ON@ 2,2 GET gnW DEFAULT 1 && 1st READ@ 4,2 GET gnX DEFAULT 1 && 1st READSET READBORDER OFF@ 6,2 GET gnY DEFAULT 1 && 1st READREAD@ 8,2 GET gnZ DEFAULT 2 && 2nd READREAD

SET REFRESH, comando

Determina se a janela Pesquisar é atualizada com as alterações feitas nos registros por outros usuários da rede e com que freqüência isto é feito.

Sintaxe

SET REFRESH TO nSegundos1 [, nSegundos2]

Argumentos

[Pág.: 389]

Page 390: 74039361 Visual FoxPro Comandos e Funcoes

TO nSegundos1 [, nSegundos2] Especifica se as atualizações são feitas e com que freqüência. nSegundos1 especifica o número de segundos entre as atualizações na janela de edição de memo ou na janela Pesquisar. nSegundos1 pode ter um valor entre 0 e 3.600; o valor padrão é 0 segundos. Quando nSegundos1 for um valor diferente de zero e outros usuários alterarem os registros que você está visualizando, aqueles registros serão atualizados quando o intervalo de atualização se esgotar. Os registros que você está visualizando não serão atualizados se nSegundos1 for 0.

O Visual FoxPro armazena em buffer as partes das tabelas na memória da sua estação de trabalho. nSegundos2 especifica com que freqüência esses buffers de dados locais são atualizados com os dados atuais da rede. nSegundos2 é o número de segundos entre atualizações do buffer de dados. Você pode especificar um valor entre 0 e 3.600; o valor padrão é 5. Os buffers nunca serão atualizados se nSegundos2 for definido como 0. LOURDES

Se você especificar um valor para nSegundos1 diferente de 0 mas não incluir nSegundos2, nSegundos2 é definido com o mesmo valor que nSegundos1. No entanto, nSegundos2 será definido como 5 se você especificar 0 para nSegundos1 e não incluir nSegundos2.

O desempenho pode ser melhorado aumentando-se o valor de nSegundos2.

Comentários

Como as tabelas podem ser abertas para uso compartilhado em uma rede, é possível que os registros que você está visualizando na janela Pesquisar estejam sendo editados por outros usuários na rede.

SET REFRESH afeta os registros exibidos na janela Pesquisar abertos com BROWSE, CHANGE ou EDIT. Os campos Memo abertos para edição na janela Pesquisar também são atualizados.

SET REFRESH também pode ser atualizado para especificar com que freqüência os dados que utilizam buffer localmente em sua estação de trabalho são atualizados.

SET RELATION OFF, comando

Interrompe um relacionamento estabelecido entre a tabela pai na Área de trabalho selecionada atualmente e a tabela filho associada.

Sintaxe

SET RELATION OFF INTO nÁreaTrabalho | cAliasTabela

Argumentos

INTO nÁreaTrabalho | cAliasTabela Especifica o número da Área de trabalho da tabela filho ou o alias de tabela.

SET RELATION, comando

Estabelece um relacionamento entre duas tabelas abertas.

Sintaxe

SET RELATION TO[eExpressão1 INTO nÁreaTrabalho1 | cAliasTabela1[, eExpressão2 INTO nÁreaTrabalho2 | cAliasTabela2 ...][IN nÁreaTrabalho | cAliasTabela][ADDITIVE]]

Argumentos

[Pág.: 390]

Page 391: 74039361 Visual FoxPro Comandos e Funcoes

eExpressão1 Especifica a expressão relacional que estabelece um relacionamento entre as tabelas pai e filho. A expressão relacional é, geralmente, a expressão índice do índice de controle da tabela filho.

O índice para a tabela filho pode ser um índice (.IDX ) de entrada única, um índice composto (.CDX) estrutural de várias entradas ou um índice composto independente. Se o índice for composto, especifique a marca de índice adequada para ordenar a tabela filho. SET ORDER pode ser utilizado para especificar a marca de índice que ordena a tabela filho.

Por exemplo, considere as tabelas customer e orders descritas na sessão Comentários abaixo. Suponha que a tabela filho orders tenha sido indexada ou ordenada no número do cliente com este comando:

SET ORDER TO TAG cust_id

Para relacionar as tabelas customer e orders no número de cliente, selecione a Área de trabalho que contém a tabela pai customer ou inclua a cláusula IN para especificar a Área de trabalho ou o alias da tabela pai e emita SET RELATION, especificando a expressão de índice com a seguinte expressão relacional:

SET RELATION TO cust_id INTO orders

A tabela filho deve ser indexada a menos que a expressão relacional seja numérica. O Visual FoxPro exibe uma mensagem de erro se você emitir SET RELATION com uma expressão relacional não-numérica e se a tabela filho não estiver ordenada com um índice.

Se eExpressão1 for numérica, ela é avaliada quando o ponteiro de registro na tabela pai for movido. O ponteiro de registro na tabela filho é movido para o número do registro eExpression1.

INTO nÁreaTrabalho1 | cAliasTabela1 Especifica o número da Área de trabalho (nÁreaTrabalho1) ou do alias de tabela (cAliasTabela1) da tabela filho.

eExpressão2 INTO nÁreaTrabalho2 | cAliasTabela2 ... Especifica uma expressão relacional (eExpressã0o2) e uma tabela filho ou tabelas para estabelecer um relacionamento adicional entre a tabela pai e as tabelas filho. A partir de um único comando SET RELATION, é possível criar relações múltiplas entre uma única tabela pai e diversas tabelas filho. Anteceda cada relação por uma vírgula.

nÁreaTrabalho2 especifica um número da Área de trabalho e cAliasTabela2 especifica um alias da tabela para a tabela filho.

IN nÁreaTrabalho Especifica a Área de trabalho da tabela pai.

IN cAliasTabela Especifica o alias da tabela pai.

A cláusula IN permite que você crie um relacionamento sem primeiro selecionar a Área de trabalho da tabela pai. Se nÁreaTrabalho e cAliasTabela forem omitidos, a tabela pai deverá ser aberta na Área de trabalho atualmente selecionada.

ADDITIVE Conserva todos os relacionamentos existentes na Área de trabalho atual e cria um relacionamento específico. Se você omitir ADDITIVE, quaisquer relacionamentos na Área de trabalho atual serão interrompidos e o relacionamento especificado será criado.

Comentários

Antes de estabelecer um relacionamento, uma tabela (a tabela pai) precisa ser aberta e a outra tabela (a tabela filho) precisa ser aberta em uma outra Área de trabalho.

As tabelas relacionadas possuem um campo comum. Por exemplo, vamos supor que uma tabela chamada customer contenha as informações do cliente. Ela tem campos para nome, endereço e um número de cliente exclusivo. Uma segunda tabela chamada orders contém as informações de ordem. Também possui um campo para o número do cliente, juntamente com os campos para datas e informações de expedição.SET RELATION relaciona essas duas tabelas nos seus campos comum — o campo Número do cliente. Para definir a relação, a tabela filho deve ser indexada no campo comum. Depois de definida a relação, sempre

[Pág.: 391]

Page 392: 74039361 Visual FoxPro Comandos e Funcoes

que você mover o ponteiro do registro para um registro com um determinado número de cliente na tabela pai customer, o ponteiro de registro na tabela filho orders se move para o registro que tenha o mesmo número de cliente. Se não for encontrado um registro correspondente na tabela filho, o ponteiro de registro na tabela filho é posicionado no final da tabela.

Emita SET RELATION TO sem nenhum argumento para remover todos os relacionamentos na Área de trabalho selecionada atualmente. SET RELATION OFF pode ser utilizado para remover um relacionamento pai-filho específico.

SET REPROCESS, comando

Especifica quantas vezes e por quanto tempo o Visual FoxPro tenta bloquear um arquivo ou registro após uma tentativa malsucedida de bloqueio.

Sintaxe

SET REPROCESS TO nTentativas [SECONDS] | TO AUTOMATIC

Argumentos

TO nTentativas [SECONDS] Especifica o número de vezes que o Visual FoxPro tenta bloquear um registro ou um arquivo após uma tentativa malsucedida inicial. O valor padrão é 0, o valor máximo é 32.000.

SECONDS especifica que o Visual FoxPro tenta bloquear um arquivo ou registro por nTentativas segundos. Estará disponível somente quando nTentativas for maior que zero.

Por exemplo, se nTentativas for 30, o Visual FoxPro tentará bloquear um registro ou arquivo até 30 vezes. Se você incluir, também, SECONDS (SET REPROCESS TO 30 SECONDS), o Visual FoxPro tenta bloquear continuamente um registro ou arquivo por até 30 segundos.

Uma mensagem do sistema (“Esperando pelo bloqueio ... “) aparece se SET STATUS estiver definido como ON.

Se uma rotina ON ERROR estiver ativa e se as tentativas de bloquear um registro ou arquivo através de um comando forem malsucedidas, a rotina ON ERROR será executada. No entanto, se uma função tentar o bloqueio, uma rotina ON ERROR não será executada e a função retornará falso (.F.).

Se a rotina ON ERROR não estiver ativa, um comando tentará bloquear o registro ou arquivo e o bloqueio não puser ser efetuado, um alerta apropriado aparecerá (por exemplo, “Registro em uso por outra pessoa”). Se uma função tentar fazer o bloqueio, o alerta não será exibido e a função retornará falso (.F.).

Se nTentativas for 0 (o valor padrão) e você emitir um comando ou função que tentar bloquear um registro ou arquivo, o Visual FoxPro tentará bloquear o registro ou arquivo indefinidamente. O Visual FoxPro exibe a mensagem do sistema, “Tentando bloquear... Para cancelar, pressione Cancel,” enquanto tenta bloquear o registro ou arquivo. O bloqueio será colocado e a mensagem do sistema apagada se o registro ou arquivo se tornar disponível para bloqueio enquanto você aguarda. Se uma função conseguir fazer o bloqueio, a função retornará verdadeiro (.T.).

Se você pressionar ESC em resposta à mensagem do sistema, aparecerá um alerta apropriado (por exemplo, “Registro em uso por outra pessoa”). Se uma função conseguir fazer o bloqueio, o alerta não será exibido e a função retornará falso (.F.).

Se a rotina ON ERROR estiver ativa e um comando estiver tentando bloquear o registro ou arquivo, a rotina ON ERROR terá precedência sobre as tentativas adicionais de bloquear o registro ou arquivo. A rotina ON ERROR será imediatamente executada. O Visual FoxPro não tentará bloqueios de registros ou arquivos adicionais e não exibirá a mensagem do sistema.

[Pág.: 392]

Page 393: 74039361 Visual FoxPro Comandos e Funcoes

Se nTentativas for –1, o Visual FoxPro tentará bloquear o registro ou arquivo indefinidamente. Você não poderá cancelar as tentativas de bloqueio pressionando a tecla ESC e uma rotina ON ERROR não será executada.

Definir nTentativas como -2 é o mesmo que utilizar a cláusula TO AUTOMATIC.

O Visual FoxPro exibe a mensagem do sistema “Esperando bloqueio ... ” somente se SET STATUS estiver definido como ON.

Se outro usuário tiver colocado um bloqueio no registro ou arquivo que você está tentando bloquear, você deverá esperar até que o usuário libere o bloqueio.

TO AUTOMATIC Especifica as tentativas do Visual FoxPro para bloquear o registro ou arquivo indefinidamente (o mesmo que definir nTentativas como –2). Esta cláusula é semelhante a definir nTentativas como -1, com a diferença que inclui o recurso de abandonar a tentativa de bloqueio de um registro ou arquivo.

A mensagem do sistema “Tentando bloquear ... Pressione Escape para cancelar” aparece enquanto o Visual FoxPro tenta bloquear o registro ou arquivo. O bloqueio será colocado e a mensagem do sistema será apagada se o registro ou arquivo se tornar disponível para bloqueio enquanto você aguarda. Se uma função for utilizada para colocar um bloqueio, a função retornará verdadeiro (.T.).

Se a rotina ON ERROR não estiver ativa e você pressionar ESC em resposta à mensagem do sistema, aparecerá um alerta adequado (por exemplo, “Registro em uso por outra pessoa”). Se uma função tentar fazer um bloqueio, o alerta não será exibido e a função retornará falso (.F.).

Se uma rotina ON ERROR estiver ativa e ESC for pressionado, a rotina ON ERROR será executada. Se uma função tentar fazer um bloqueio, uma rotina ON ERROR não será executada e a função retornará falso (.F.).

Para obter maiores informações sobre bloqueio de registros e arquivos e compartilhamento tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado” no Guia do Desenvolvedor.

Comentários

A primeira tentativa de bloquear um registro ou arquivo nem sempre é bem-sucedida. Freqüentemente, um registro ou arquivo está bloqueado por outro usuário na rede. SET REPROCESS determina se o Visual FoxPro fará tentativas adicionais para bloquear o registro ou arquivo quando a tentativa inicial não for bem-sucedida. Você pode especificar, inclusive, quantas vezes serão feitas tentativas adicionais e por quanto tempo. Uma rotina ON ERROR afeta a maneira como as tentativas de bloqueio malsucedidas são manipuladas.

SET REPROCESS é projetado para a sessão de dados atual.

SET SAFETY, comando

Determina se o Visual FoxPro exibe uma caixa de diálogo antes de sobrescrever um arquivo existente ou se regras de tabela ou de campo, valores padrão e mensagens de erro são avaliados quando as alterações são feitas no Criador de tabelas ou com ALTER TABLE.

Sintaxe

SET SAFETY ON | OFF

Argumentos

ON (Padrão) Especifica que uma caixa de diálogo será exibida antes que você sobrescreva um arquivo existente. A caixa de diálogo dá a você a opção de sobrescrever um arquivo existente.

[Pág.: 393]

Page 394: 74039361 Visual FoxPro Comandos e Funcoes

Para o Criador de tabelas, especifica que regras de tabela ou campo, valores padrão e mensagens de erro serão avaliados quando você salvar alterações em uma estrutura da tabela. A validação de dados ocorre para regras de validação modificadas ou novas depois de você ter salvado as alterações da estrutura de tabela. Se uma regra de validação contém uma função definida pelo usuário (UDF, User Defined Function), a UDF não é avaliada e a regra de validação é ignorada.

Em ALTER TABLE, tabela ou regras de campo, valores padrões e mensagens de erro são avaliadas quando ALTER TABLE altera a estrutura da tabela. A validação dos dados ocorre para as regras de validação novas ou modificadas quando ALTER TABLE altera a estrutura da tabela. Se uma regra de validação contém uma UDF (função definida pelo usuário), a UDF não é avaliada e a regra de validação é ignorada.

OFF Especifica que uma caixa de diálogo não será exibida antes que um arquivo existente seja sobrescrito.

Para o Criador de tabelas, especifica que regras de tabela ou de campo, valores padrão e mensagens de erro não são avaliados quando as alterações são salvas em uma estrutura da tabela. Entretanto, a validação de dados ocorre para as regras de validação novas ou modificadas depois de você salvar as alterações da estrutura de tabela.

Em ALTER TABLE, regras de tabela de campo, valores padrão e mensagens de erro não são avaliados quando ALTER TABLE altera a estrutura da tabela. A validação dos dados não ocorre para regras de validação novas ou modificadas após ALTER TABLE alterar a estrutura da tabela.

Comentários

SET SAFETY é projetado para a sessão de dados atuais.

SET SECONDS, comando

Especifica se são exibidos segundos na parte reservada à em um valor DataHora.

Sintaxe

SET SECONDS ON | OFF

Argumentos

ON (Padrão) Especifica que os segundos são exibidos nos valores de DataHora.

OFF Especifica que os segundos não são exibidos nos valores de DataHora.

Comentários

SET SECONDS é projetado para a sessão de dados atuais.

SET SECONDS, exemplo do comando

O exemplo a seguir demonstra o efeito da definição de SET SECONDS sobre o valor de hora retornado por DATETIME( ). Quando SET SECONDS for ON, o valor de hora será exibido com a parte dos segundos. Quando SET SECONDS for OFF, o valor de hora será exibido sem a parte dos segundos.

SET SECONDS ONCLEAR? DATETIME( ) && Exibe o valor de hora com a parte dos segundos

SET SECONDS OFF && Exibe o valor de hora sem a parte dos segundos? DATETIME( )

[Pág.: 394]

Page 395: 74039361 Visual FoxPro Comandos e Funcoes

SET SKIP OF, comando

Ativa ou desativa um menu, barra, títulos ou item de menu para menus definidos pelo usuário ou menu do sistema Visual FoxPro.

Sintaxe

SET SKIP OF MENU NomeBarraMenus1 lExpressão1 – Ou –SET SKIP OF PAD NomeTituloMenu OF NomeBarraMenus2 lExpressão2 – Ou –SET SKIP OF POPUP NomeMenu1 lExpressão3 – Ou –SET SKIP OF BAR nNúmeroItemMenu | NomeItemSistema

OF NomeMenu2 lExpressão4

Argumentos

MENU NomeBarraMenus1 lExpressão1 Ativa ou desativa a barra de menus do sistema Visual FoxPro ou a definida pelo usuário criada com DEFINE MENU. Por exemplo, a barra de menus do sistema Visual FoxPro, _MSYSMENU, pode ser desativada com este comando:

SET SKIP OF MENU _MSYSMENU .T.

Pode ser ativada com este comando:

SET SKIP OF MENU _MSYSMENU .F.

PAD NomeTituloMenu OF NomeBarraMenus2 lExpressão2 Ativa ou desativa um título de menu do sistema Visual FoxPro ou um título de menu definido pelo usuário criado com DEFINE PAD. Por exemplo, o título de menu Editar do Visual FoxPro pode ser desativado com este comando:

SET SKIP OF PAD _MSM_EDIT OF _MSYSMENU .T.

O título de menu pode ser ativado com este comando:

SET SKIP OF PAD _MSM_EDIT OF _MSYSMENU .F.

POPUP NomeMenu1 lExpressão3 Ativa ou desativa um menu do sistema Visual FoxPro ou um menu definido pelo usuário criado com DEFINE POPUP. Por exemplo, o menu Editar do Visual FoxPro pode ser desativado com este comando:

SET SKIP OF POPUP _MEDIT .T.

O menu pode ser ativado com este comando:

SET SKIP OF POPUP _MEDIT .F.

BAR nNúmeroItemMenu | NomeItemSistema OF NomeMenu2 lExpressão4 Ativa ou desativa um item de menu em um menu do sistema Visual FoxPro ou item de menu definido pelo usuário criado com DEFINE BAR. Por exemplo, o comando Novo no menu Arquivo do Visual FoxPro pode ser desativado com este comando:

SET SKIP OF BAR _MFI_NEW OF _MFILE .T.

onde NomeItemSistema especifica o comando de menu _MFI_NEW, NomeMenu2 especifica o menu _MFILE e lExpressão4 especifica a expressão lógica .T.. O comando de menu pode ser ativado com este comando:

SET SKIP OF BAR _MFI_NEW OF _MFILE .F.

[Pág.: 395]

Page 396: 74039361 Visual FoxPro Comandos e Funcoes

Utilize nNúmeroItemMenu para especificar um item de menu criado com DEFINE BAR.

Comentários

Para obter uma listagem completa dos nomes internos dos componentes de menu do sistema Visual FoxPro, consulte “Nomes do menu de sistema” Você pode também utilizar SYS(2013) para retornar os nomes internos de menu do sistema.

Caso a expressão lógica lExpressão for avaliada em verdadeiro (.T.), o menu, sua barra, seu nome ou item incluído em SET SKIP OF será desativado, aparecerá obscuro e não poderá ser selecionado. Se lExpressão for avaliada em falso (.F.), o menu, barra, nome ou item de menu será ativado e poderá ser selecionado.

SET SKIP, comando

Cria um relacionamento um-para-n entre tabelas.

Sintaxe

SET SKIP TO [AliasTabela1 [, AliasTabela2] ...]

Argumentos

TO AliasTabela1 [, AliasTabela2] ... Especifica os aliases de várias tabelas filho. São utilizados para criar um relacionamento um-para-n com uma tabela pai. Utilize vírgulas para separar os aliases. Em comandos que suportam um escopo (DISPLAY, LIST e assim por diante), os registros na tabela pai são repetidos para cada registro correspondente na tabela filho.

Utilize SET SKIP TO sem argumentos adicionais para remover o relacionamento um-para-n da tabela pai aberta na Área de trabalho selecionada no momento. Qualquer relacionamento um-para-um permanecerá em efeito; eles podem ser removidos com SET RELATION TO.

Comentários

Utilizando SET RELATION, você poderá estabelecer relações entre tabelas abertas em diferentes Áreas de trabalho. Quando o ponteiro de registro for movido na tabela pai, o ponteiro de registro na tabela filho se moverá para o primeiro registro correspondente. A expressão relacional em SET RELATION determina para onde o ponteiro de registro se moverá na tabela filho. Uma relação um-para-um será criada — para cada registro na tabela pai, o ponteiro de registro se moverá para o primeiro registro correspondente na tabela filho. Se um registro correspondente não puder ser localizado na tabela filho, o ponteiro de registro na tabela filho se moverá para o final da tabela.

Freqüentemente, uma tabela filho irá conter vários registros que correspondem a um registro na tabela pai. SET SKIP permite que você estabeleça um relacionamento um-para-n entre um registro na tabela pai e vários na tabela filho. Quando você percorre a tabela pai, o ponteiro de registro permanece no mesmo registro pai até que o ponteiro de registro se mova através de todos os registros relacionados na tabela filho.

Em primeiro lugar, para estabelecer um relacionamento um-para-n, crie o relacionamento entre a tabela pai e a tabela filho com SET RELATION. Em seguida, emita SET SKIP para criar um relacionamento um-para-n.

SET SKIP, exemplo do comando

O exemplo a seguir localiza todas as ocorrências em três tabelas, onde os itens no primeiro campo são os mesmos. Isto é realizado ao procurar a primeira tabela que contém uma relação com uma segunda e qual tabela tem uma relação com uma terceira. A primeira tabela executa então SET SKIP para as outras duas tabelas. Um SET SKIP na segunda tabela não tem efeito. Afeta somente a tabela sendo procurada (substituída, etc.). No exemplo, oito correspondências são encontradas.

[Pág.: 396]

Page 397: 74039361 Visual FoxPro Comandos e Funcoes

CLOSE DATABASES* Cria uma tabela pai com os valores a e b no campo NomeCREATE TABLE Parent FREE (Name C(1), Val C(10))INSERT INTO Parent VALUES ('a', 'Parent.a1')INSERT INTO Parent VALUES ('b', 'Parent.b1')

SELECT 0 && Child1 terá dois a(s) e dois b(s)CREATE TABLE Child1 FREE (Name1 C(1), Val C(10))INSERT INTO Child1 VALUES ('a', 'Child1.a1')INSERT INTO Child1 VALUES ('b', 'Child1.b1')INSERT INTO Child1 VALUES ('b', 'Child1.b2')INSERT INTO Child1 VALUES ('a', 'Child1.a2')

INDEX ON Name1 TAG tagName && O nome da marca é irrelevante

SELECT 0 && Child2 terá dois a(s) e dois b(s)CREATE TABLE Child2 FREE (Name2 C(1), Val C(10))INSERT INTO Child2 VALUES ('b', 'Child1.b1')INSERT INTO Child2 VALUES ('b', 'Child1.b2')INSERT INTO Child2 VALUES ('a', 'Child1.a1')INSERT INTO Child2 VALUES ('a', 'Child1.a2')INDEX ON Name2 TAG tagName && O nome da marca é irrelevante

SELECT Child1SET RELATION TO Name1 INTO Child2SELECT Parent

SET RELATION TO Name INTO Child1SET SKIP TO Child1, Child2 && Pai obtém dois pulos. && Caso contrário, apenas quatro grupos de três registros && seriam listados.SCAN ALL && Haverá oito grupos de três: quatro a(s) e quatro b(s)

? Parent.Val, Child1.Val, Child2.ValENDSCANSET SPACE, comando

Determina se um espaço será exibido entre campos ou expressões quando o comando ? ou ?? é utilizado.

Sintaxe

SET SPACE ON | OFF

Argumentos

ON (Padrão) Insere um espaço entre campos e expressões.

OFF Remove todos os espaços entre campos ou expressões e os executa juntamente.

SET SPACE, exemplo do comando

gcX = 'John'gcY = 'Smith'SET SPACE OFF? gcX,gcYSET SPACE ON? gcX,gcY

[Pág.: 397]

Page 398: 74039361 Visual FoxPro Comandos e Funcoes

SET STEP, comando

Abre a janela Rastrear e suspende a execução do programa para depuração.

Sintaxe

SET STEP ON

Argumentos

ON Abre a janela Rastrear e suspende a execução do programa.

Comentários

SET STEP é utilizado para depurar programas. Você pode inserir SET STEP ON em um programa em um ponto desejado para executar comandos individuais.

Para obter informações sobre a janela Rastrear, consulte o tópico da “ Janela Rastrear” e o capítulo 14, “Testando e depurando aplicativos”, no Guia do desenvolvedor.

Você pode passar parâmetros a um programa e, em seguida, rastrear sua execução seguindo estes passos:

1. Abra a janela Rastrear.2. A partir do menu Programa da janela Rastrear, selecione Abrir e o programa a ser rastreado.3. Defina um ponto de interrupção na primeira linha executável do programa.4. Na janela Comando, EXECUTE o programa COM os parâmetros.

SET SYSFORMATS, comando

Especifica se as definições do sistema Visual FoxPro for Windows são atualizadas com as definições atuais do Windows.

Sintaxe

SET SYSFORMATS ON | OFF

Argumentos

ON Especifica se as definições do sistema Visual FoxPro são atualizadas quando as definições do sistema do Windows são alteradas. SET SYSFORMAT ON é idêntico a escolher a caixa de verificação Utilizar as definições do sistema na guia International da caixa de diálogo Opções. Observe que a emissão de SET SYSFORMAT ON altera a definição de SET DATE para SHORT.

As definições são utilizadas durante a sessão de dados atual ou se emitidas durante a sessão de dados padrão, pela duração da sessão do Visual FoxPro.

OFF (Padrão) Especifica se as definições do sistema Visual FoxPro não são atualizadas quando as definições do sistema do Windows são alteradas. As definições padrões do Visual FoxPro não são restauradas.

Comentários

As definições do sistema do Windows são especificadas na opção Internacional do Painel de controle do Windows.Quando SET SYSFORMATS estiver ON (ativo), os seguintes comandos SET poderão ser utilizados para anular as definições atuais do sistema. Entretanto, alterar as definições do sistema do Windows quando SET SYSFORMATS estiver ON anulará estes comandos SET:

[Pág.: 398]

Page 399: 74039361 Visual FoxPro Comandos e Funcoes

· SET CENTURY· SET CURRENCY· SET DATE· SET DECIMALS· SET HOURS· SET MARK TO· SET POINT

Quando o Visual FoxPro for inicializado, as definições do sistema Visual FoxPro serão as definições padrões desses comandos SET. Para utilizar as definições do sistema do Windows quando o Visual FoxPro é inicializado, coloque a seguinte linha no seu arquivo de configuração CONFIG.FPW do Visual FoxPro:

SYSFORMATS = ON

SET SYSFORMATS é projetado para a sessão atual de dados.

SET SYSMENU, comando

Ativa ou desativa a barra de menus do sistema Visual FoxPro durante a execução do programa e permite a sua reconfiguração.

Sintaxe

SET SYSMENU ON | OFF | AUTOMATIC| TO [ListaMenu]| TO [ListaTituloMenu]| TO [DEFAULT] | SAVE | NOSAVE

Argumentos

ON Ativa a barra de menus principal do Visual FoxPro durante a execução do programa quando o Visual FoxPro espera pela entrada do teclado durante os comandos BROWSE, READ e MODIFY COMMAND.

OFF Desativa a barra de menus principal do Visual FoxPro durante a execução do programa.

AUTOMATIC Faz com que a barra de menus principal do Visual FoxPro se torne visível durante a execução do programa. A barra de menus é acessível e os itens de menu são ativados e desativados conforme apropriado pelo comando atual.

AUTOMATIC é a definição padrão.

TO [ListaMenu]TO [ListaTituloMenu] Especifica um subconjunto de menus ou títulos de menu para a barra de menus principal do Visual FoxPro. A lista de título de menu e menu pode conter qualquer combinação de menus ou títulos de menu separados por vírgulas. Os nomes internos para os títulos de menu e menus são listados em Nomes de menus do sistema.

Por exemplo, o seguinte comando remove todos os menus da barra de menus principal do Visual FoxPro exceto os menus Arquivo e Janela:

SET SYSMENU TO _MFILE, _MWINDOW

Utilize RELEASE BAR para especificar os itens de menu disponíveis nos menus.

TO [DEFAULT] Restaura a barra se menus principal para a sua configuração padrão. Caso a barra de menus principal ou seus menus tiverem sido modificados, emita SET SYSMENU TO DEFAULT para restaurá-los. Você pode especificar uma configuração padrão com SET SYSMENU SAVE.

[Pág.: 399]

Page 400: 74039361 Visual FoxPro Comandos e Funcoes

SAVE Faça com que o sistema de menu atual se torne a configuração padrão. Caso o sistema de menu tiver sido modificado antes da emissão de SET SYSMENU SAVE, você poderá restaurar a configuração anterior ao emitir SET SYSMENU TO DEFAULT.

NOSAVE Redefine o sistema de menu para o menu do sistema Visual FoxPro padrão. Entretanto, o menu do sistema Visual FoxPro padrão não será visualizado até que você emita SET SYSMENU TO DEFAULT.

Comentários

SET SYSMENU controla a barra de menus principal do Visual FoxPro durante a execução do programa e permite que você remova seletivamente os títulos de menu e menus do sistema de menu principal do Visual FoxPro e restaure-os para o mesmo.

A emissão de SET SYSMENU TO sem argumentos adicionais desativa a barra de menus principal do Visual FoxPro.

SET TALK, comando

Determina se o Visual FoxPro exibe os resultados dos comandos.

Sintaxe

SET TALK ON | OFF | WINDOW [NomeJanela] | NOWINDOW

Argumentos

ON (Padrão) Permite que a conversação seja enviada para a janela principal do Visual FoxPro, para a janela de mensagens do sistema, para a barra de status gráfico ou para a janela definida pelo usuário. Se SET TALK for definido a OFF e for então alterado para ON, a conversação será direcionada para a mesma localização que foi enviada antes da emissão de SET TALK OFF.

OFF Evita que a conversação seja enviada para a janela principal do Visual FoxPro, para a janela de mensagens do sistema, para a barra de status gráfico ou para a janela definida pelo usuário.

WINDOW [NomeJanela] NomeJanela especifica uma janela definida pelo usuário para a qual a conversação é direcionada. Você deve criar a janela definida pelo usuário antes de direcionar a conversação à mesma. A conversação será direcionada para a janela do sistema Visual FoxPro caso a janela especificada não existir.

NOWINDOW Direciona a conversação para a janela principal do Visual FoxPro.

Comentários

Algumas tabelas que processam comandos retornam informações ou “conversação”, sobre o status enquanto são executados. Estes comandos incluem:

Comandos

APPEND FROM PACKAVERAGE REINDEXCALCULATE REPLACECOPY TO SELECT - SQLCOUNT SORTDELETE SUMINDEX TOTAL

A conversação pode ser direcionada para a janela principal do Visual FoxPro, para a barra de status gráfico ou para a janela definida pelo usuário. A conversação pode também ser desativada.

[Pág.: 400]

Page 401: 74039361 Visual FoxPro Comandos e Funcoes

SET TALK relatando o intervalo pode ser especificado com SET ODOMETER. O valor padrão para SET ODOMETER é 100. Observe que a velocidade de execução poderá ser degradada quando SET TALK for definido a ON, porque a janela principal do Visual FoxPro ou a janela definida pelo usuário deverá ser freqüentemente atualizada. Caso você apenas necessite do número total de registros processados por um comando, você poderá emitir SET TALK OFF e exibir a variável do sistema _TALLY toda vez que o comando finalize a execução.

SET TALK é projetado para a sessão de dados atual.

SET TEXTMERGE DELIMITERS, comando

Especifica os delimitadores de mesclagem de textos.

Sintaxe

SET TEXTMERGE DELIMITERS[TO cDelimitadorEsquerdo [, cDelimitadorDireito]]

Argumentos

TO cDelimitadorEsquerdo [, cDelimitadorDireito] Especifica os delimitadores. Se você especificar apenas um delimitador com cDelimitadorEsquerdo, os delimitadores esquerdo e direito serão definidos para cDelimitadorEsquerdo. Se você especificar os dois delimitadores com cDelimitadorEsquerdo e cDelimitadorDireito, o delimitador esquerdo será definido para cDelimitadorEsquerdo e o delimitador direito será definido para cDelimitadorDireito.

Comentários

Com SET TEXTMERGE DELIMITERS, você pode especificar um conjunto de delimitadores de mesclagem de textos em vez dos delimitadores padrões, que correspondem a divisas (<< e >>). Os delimitadores atuais podem ser exibidos com DISPLAY STATUS.

Se você emitir SET TEXTMERGE DELIMITERS sem qualquer argumento adicional, os delimitadores padrões serão restaurados.

Para obter maiores informações sobre delimitadores de mesclagem de textos, consulte SET TEXTMERGE.

SET TEXTMERGE, comando

Ativa ou desativa a avaliação de campos, variáveis, elementos de matriz, funções ou expressões que são envolvidas por delimitadores de mesclagem de textos e permite que você especifique o resultado de mesclagem de textos.

Sintaxe

SET TEXTMERGE[ON | OFF][TO [NomeArquivo] [ADDITIVE]][WINDOW NomeJanela][SHOW | NOSHOW]

Argumentos

ON Especifica que todos os campos, variáveis, elementos de matriz, funções ou expressões envolvidas por delimitadores de mesclagem de textos serão avaliadas e terão resultado quando colocadas após \ ou \\ ou entre TEXT e ENDTEXT.

O seguinte exemplo de programa demonstra como o conteúdo da variável gcTodayDate e das funções DATE( ) e TIME( ) será avaliado quando SET TEXTMERGE estiver definido a ON. A variável gcTodayDate, DATE( ) e TIME( ) são avaliadas porque estão envolvidas por delimitadores de mesclagem de textos e SET TEXTMERGE está definido a ON.

[Pág.: 401]

Page 402: 74039361 Visual FoxPro Comandos e Funcoes

CLEARSET TALK OFFSTORE 'Hoje é: ' TO gcTodayDateSET TEXTMERGE ON\<<gcTodayDate>>\\<<DATE( )>>\A hora é:\\ <<TIME( )>>

Segue o resultado do programa acima, quando executado em 1 de janeiro:

Hoje é: 01/01/95A hora é: 10:55:19

OFF (Padrão) Especifica se todos os campos, variáveis, elementos de matriz, funções ou expressões terão literalmente resultado, juntamente com delimitadores de mesclagem de textos envolvendo-as. Observe a diferença de resultado quando SET TEXTMERGE estiver definido a OFF no exemplo anterior:

CLEARSET TALK OFFSTORE 'Hoje é: ' TO gcTodayDateSET TEXTMERGE OFF\<<gcTodayDate>>\\<<DATE( )>>\A hora é:\\ <<TIME( )>>

Segue o resultado deste programa:

<<gcTodayDate>><<DATE( )>>A hora é: <<TIME( )>>

TO [NomeArquivo] Especifica se o resultado de \, \\ e TEXT ... ENDTEXT será direcionado a um arquivo de texto em vez da janela principal do Visual FoxPro, que corresponde ao padrão. Você pode também direcionar o resultado a um arquivo de texto ao incluir NomeArquivo. Se um arquivo com este nome não existir, um novo arquivo será criado. Se um arquivo com o mesmo nome já existir e SET SAFETY estiver definido a ON, a opção de sobregravar o arquivo existente será dada.

O arquivo de texto será aberto como um arquivo de nível baixo e o seu tratamento de arquivo será armazenado na variável de memória _TEXT. Você pode fechar o arquivo ao emitir SET TEXTMERGE TO sem argumentos adicionais. Se o tratamento de arquivo de um outro arquivo estiver anteriormente armazenado em _TEXT, o arquivo será fechado.

ADDITIVE Especifica se o resultado de \, \\ e TEXT ... ENDTEXT será anexado a uma palavra-chave de arquivo existente.

Para obter maiores informações sobre como direcionar o resultado de mesclagem de textos a um arquivo, consulte _TEXT.

WINDOW NomeJanela Especifica se o resultado de \, \\ e TEXT ... ENDTEXT será direcionado para uma janela definida pelo usuário em vez da janela principal do Visual FoxPro, que corresponde ao padrão. NomeJanela especifica o nome da janela para a qual você deseja direcionar o resultado. A janela deve ser criada com DEFINE WINDOW antes que o resultado possa ser enviado para a mesma. A janela não precisa estar ativa ou visível.

SHOW | NOSHOW (Padrão) SHOW exibe o resultado de mesclagem de textos.

NOSHOW suprime a exibição do resultado de mesclagem de textos.

Como padrão, o resultado gerado por \, \\ e TEXT ... ENDTEXT será enviado para a janela principal do Visual FoxPro ou para uma janela ativa definida pelo usuário.

[Pág.: 402]

Page 403: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

Os comandos \, \\ e TEXT ... ENDTEXT são utilizados para mesclar textos com os conteúdos das tabelas, variáveis, elementos de matriz e os resultados de funções e expressões. Se um campo, variável, elemento de matriz, função ou expressão estiver envolvida por delimitadores de mesclagem de textos (como padrão, << e >>), a mesma poderá ser avaliada e mesclada com textos. Esta capacidade de mesclagem de textos permite que você produza letras, programas e modelos que criam programas.

SET TEXTMERGE determina como os campos, variáveis, elementos de matriz, funções ou expressões envolvidas por delimitadores de textos serão avaliadas. Também permite que você direcione um resultado de mesclagem de textos para a janela principal do Visual FoxPro, para uma janela definida pelo usuário ou para um arquivo.

Os campos Memo podem ser utilizados para aninhar o texto mesclado. Se um campo Memo contiver nomes de campos, variáveis, elementos de matriz, funções ou expressões envolvidas por delimitadores de mesclagem de textos atuais, os mesmos serão avaliados e terão resultado com os conteúdos do campo Memo. O nome do campo Memo deverá também ser envolvido por delimitadores de mesclagem de textos.

SET TOPIC, comando

Especifica o tópico de Ajuda ou tópicos a serem abertos quando o sistema de Ajuda do Visual FoxPro é solicitado.

Sintaxe

SET TOPIC TO [cNomeTopicoAjuda | lExpressao]

Argumentos

cNomeTopicoAjuda Especifica o nome do tópico de Ajuda que você deseja exibir.

lExpressao Uma expressão lógica que corresponde à base para que tópicos específicos ou tópicos sejam abertos.

Comentários

Para obter maiores informações sobre como criar o seu próprio sistema de Ajuda, consulte a Parte 7, “Criando arquivos de Ajuda”, no Guia do Desenvolvedor.

SET TYPEAHEAD, comando

Especifica o número máximo de caracteres que podem ser armazenados no buffer de teclado.

Sintaxe

SET TYPEAHEAD TO nCaracteres

Argumentos

nCaracteres Especifica o número máximo de caracteres a serem armazenados no buffer de teclado.

Nenhum caractere é mantido no buffer de teclado se você emitir SET TYPEAHEAD TO 0. Essa instrução desativa INKEY( ) e ON KEY.

Comentários

O buffer de teclado pode armazenar até 32.000 caracteres até que eles estejam prontos para serem processados. O valor padrão para SET TYPEAHEAD é 20.

[Pág.: 403]

Page 404: 74039361 Visual FoxPro Comandos e Funcoes

SET UDFPARMS, comando

Especifica se o Visual FoxPro passa parâmetros para uma função definida pelo usuário (UDF) por valor ou por referência.

Sintaxe

SET UDFPARMS TO VALUE | REFERENCE

Argumentos

TO VALUE Especifica que uma variável seja passada a uma função definida pelo usuário por valor. Quando uma variável é passada por valor, o valor da variável pode ser alterado na função definida pelo usuário, mas o valor original da variável no programa de chamada não é alterado.

TO REFERENCE Especifica que uma variável seja passada a uma função definida pelo usuário por referência. Quando uma variável é passada por referência e a função definida pelo usuário altera o valor da variável passada, o valor original da variável no programa de chamada também é alterado.

Comentários

Como padrão, as variáveis são passadas para uma função definida pelo usuário por valor. (Variáveis passadas para procedimentos com DO ... WITH são passadas por referência.)

Você pode forçar que os parâmetros sejam passados a uma UDF por valor ou referência, independente da definição de SET UDFPARMS. Coloca uma variável entre parênteses para forçar que uma variável seja passada por valor. Inicie a variável com um símbolo @ para forçar a variável a ser passada por referência.

Dica Matrizes inteiras podem ser passadas a um procedimento ou a uma função definida pelo usuário. A matriz inteira é passada se SET UDFPARMS TO REFERENCE for emitida ou se o nome da matriz for iniciado por @. O primeiro elemento da matriz é passado por valor se SET UDFPARMS TO VALUE for emitida ou se o nome da matriz estiver entre parênteses. Os elementos da matriz são sempre passados por valor.

SET UDFPARMS, exemplo do comando

O exemplo a seguir ilustra a diferença entre as variáveis que foram passadas por valor ou por referência.

*** Passa variável por valor ***CLEARSET TALK OFFWAIT 'Pressiona uma tecla por valor' WINDOWSET UDFPARMS TO VALUESTORE 1 TO gnX

*** O valor de gnX está inalterado ***@ 2,2 SAY 'valor UDF: ' + STR(plusone(gnX))@ 4,2 SAY 'Valor de gnX: ' + STR(gnX)

*** Passa a variável por referência ***WAIT 'Pressiona uma tecla para passar por referência' WINDOWCLEARSET UDFPARMS TO REFERENCESTORE 1 TO gnX*** O valor de gnX é alterado ***@ 2,2 SAY 'valor UDF: ' + STR(plusone(gnX))@ 4,2 SAY 'Valor de f X: ' + STR(gnX)SET UDFPARMS TO VALUE

*** Isto é uma UDF que adiciona um a um número ***FUNCTION plusonePARAMETER gnZgnZ = gnZ + 1RETURN gnZ*** Fim da UDF ***

[Pág.: 404]

Page 405: 74039361 Visual FoxPro Comandos e Funcoes

O exemplo a seguir mostra variáveis passadas por valor e por referência através do uso dos parênteses e @, respectivamente:

*** Passa a variável por valor ***CLEARSET TALK OFFWAIT 'Pressione uma tecla para passar por valor' WINDOWSTORE 1 TO gnX@ 2,2 SAY 'valor UDF: ' + STR(plusone((gnX)))@ 4,2 SAY 'Valor de gnX: ' + STR(gnX)

*** Passa variável por referência ***WAIT 'Pressione uma tecla para passar por referência' WINDOWCLEARSTORE 1 TO gnX@ 2,2 SAY 'valor UDF: ' + STR(plusone(@gnX))@ 4,2 SAY 'Valor de gnX: ' + STR(gnX)

*** Isto é uma UDF que adiciona um a um número ***

FUNCTION plusonePARAMETER gnZgnZ = gnZ + 1RETURN gnZ*** Fim da UDF ***

SET UNIQUE, comando

Especifica se os registros com valores de teclas de índices duplicados são mantidos em um arquivo de índice.

Sintaxe

SET UNIQUE ON | OFF

Argumentos

ON Especifica que qualquer registro com um valor de tecla de índice duplicado não será incluído em um arquivo de índice. Somente o primeiro registro com o valor de tecla de índice original será incluído no arquivo de índice.

OFF (Padrão) Especifica que os registros com valores de teclas de índices duplicados serão incluídos no arquivo de índice.

Comentários

Um arquivo de índice mantém a definição SET UNIQUE quando REINDEX é emitido. Para obter maiores informações, consulte “ INDEX” e “REINDEX”.

SET UNIQUE é esperado para a sessão de dados atual.

SET( ), função

Retorna o status dos diversos comandos SET.

Sintaxe

SET(cSETComando [, 1 | 2])

[Pág.: 405]

Page 406: 74039361 Visual FoxPro Comandos e Funcoes

Tipos de retorno: Caractere, Numérico

Argumentos

cSETComando Uma expressão de caracteres que especifica o comando SET para o qual você deseja que sejam retornadas informações. A definição atual do comando especificado é retornada como uma seqüência numérica ou de caracteres.

1 | 2 Especifica que serão retornadas informações adicionais sobre o comando SET.

A inclusão desse argumento não retorna informações adicionais para todos os comandos SET, somente para aqueles listados com 1 e 2 na tabela a seguir.

Comando SET Valor retornado

ALTERNATE ON ou OFFALTERNATE, 1 NomeArquivoCLOCK ON ou OFFCLOCK, 1 nLinha e nColunaCOMPATIBLE ON ou OFFCOMPATIBLE, 1 PROMPT ou NOPROMPTCURRENCY LEFT ou RIGHTCURRENCY, 1 cSímboloMonetárioDATE AMERICAN, ANSI, BRITISH/FRENCH, GERMAN, ITALIAN, JAPAN, USA, MDY, DMY ou YMDDATE, 1 Formato da data:0 - MDY1 - DMY2 - YMDDELIMITERS ON ou OFFDELIMITERS, 1 cDelimitadoresFIELDS ON ou OFFFIELDS, 1 NomeCampo1, NomeCampo2, ...FIELDS, 2 LOCAL ou GLOBALHELP ON ou OFFHELP, 1 NomeCampoKEY eExpressão2, eExpressão3KEY, 1 eExpressão2KEY, 2 eExpressão3MESSAGE nLinhaMESSAGE, 1 cTextoMensagemMOUSE ON ou OFFMOUSE, 1 nSensibilidadePRINTER ON or OFFPRINTER, 2 Nome da impressora padrãoRESOURCE ON ou OFFRESOURCE, 1 NomeArquivoTALK ON ou OFFTALK, 1 WINDOW, NOWINDOW ou NomeJanelaTEXTMERGE ON ou OFFTEXTMERGE, 1 cDelimitadorEsquerdo e cDelimitadorDireitoTOPICcNomeTópicoAjuda | lExpressãoTOPIC, 1 nIDContexto

Comentários

A função SET( ) reconhece a abreviação de quatro caracteres para todas as palavras-chave SET do Visual FoxPro. Por exemplo, STAT e PRIN podem ser utilizadas para SET STATUS e SET PRINTER, respectivamente.

A função SET( ) é idêntica a SYS(2001).

[Pág.: 406]

Page 407: 74039361 Visual FoxPro Comandos e Funcoes

SETFLDSTATE( ), função

Atribui um valor de campo ou de estado de exclusão a um campo ou registro de uma tabela ou cursor.

Sintaxe

SETFLDSTATE(cNomeCampo | nNúmeroCampo, nEstadoCampo [, cAliasTabela | nÁreaTrabalho])

Tipos de retorno: Lógico

Argumentos

cNomeCampo | nNúmeroCampo Especifica o nome ou o número do campo para o qual o status de edição ou exclusão está atribuído. O número do campo nNúmeroCampo corresponde à posição do campo na estrutura do cursor local. DISPLAY STRUCTURE ou FIELD( ) pode ser utilizado para determinar o número de um campo.

Para definir o status de exclusão para o registro, inclua 0 como o número do campo.

nEstadoCampo Especifica um valor para o campo ou status de exclusão. A tabela a seguir lista o valor de campo ou de estado de exclusão e o status de edição ou exclusão correspondente.

NEstadoCampo Status de edição ou exclusão

1 Campo não foi editado ou o status de exclusão não foi alterado.2 Campo foi editado ou o status de exclusão foi alterado.3 Campo de um registro incluído não foi editado ou o status de exclusão não foi alterado para o registro

incluído.4 Campo de um registro incluído foi editado ou o status de exclusão foi alterado para o registro

incluído.

cAliasTabela Especifica o alias de tabela incluído foi editado ou o status de exclusão foi alterado para o registro incluído.

nÁreaTrabalho Especifica a Área de trabalho da tabela ou cursor em que o status de edição ou exclusão é atribuído. O valor de campo ou de status de exclusão é atribuído à tabela ou ao cursor aberto na Área de trabalho selecionada no momento. Isso ocorre quando SETFLDSTATE( ) é emitido sem o argumento adicional cAliasTabela ou nÁreaTrabalho.

Comentários

O Visual FoxPro utiliza valores de estado de campo para determinar os campos de tabelas ou cursores que são atualizados. SETFLDSTATE( ) permite que você controle os campos que o Visual FoxPro tenta atualizar, independente dos campos que foram editados na tabela ou no cursor.

SETFLDSTATE( ), exemplo da função

O exemplo a seguir demonstra como é possível utilizar SETFLDSTATE( ) para alterar o status do campo. MULTILOCKS é definido como ON, um requisito para utilização do buffer de tabela. A tabela customer no banco de dados testdata é aberta e CURSORSETPROP( ) é, em seguida, utilizado para definir o modo de utilização de buffer para utilização do buffer de tabela otimista (5).GETFLDSTATE( ) é emitida para exibir um valor (1) correspondente ao estado não modificado do campo cust_id antes de ser modificado. O campo cust_id é modificado com REPLACE e GETFLDSTATE( ) é emitido novamente para exibir um valor (2) correspondente ao estado modificado do campo cust_id.

SETFLDSTATE( ) é utilizado para alterar o status do campo cust_id de volta para 1 (não modificado). GETFLDSTATE( ) é emitido novamente e exibe 1, correspondente ao estado do campo cust_id atribuído por SETFLDSTATE( ). TABLEREVERT( ) é utilizado para retornar a tabela ao seu estado original.

[Pág.: 407]

Page 408: 74039361 Visual FoxPro Comandos e Funcoes

CLOSE DATABASESSET MULTILOCKS ON && Deve estar ativo para a utilização do buffer de tabelaSET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dadosOPEN DATABASE testdata && Abre o banco de dados testdataUSE Customer && Abre a tabela customer= CURSORSETPROP('Utilização do buffer', 5, 'customer') && Ativa a utilização do buffer de tabela

CLEAR? GETFLDSTATE('cust_id') && Exibe 1, não modificadoREPLACE cust_id WITH '***' && Altera o conteúdo dos campos

? GETFLDSTATE('cust_id') && Retorna 2, campo modificado= SETFLDSTATE('cust_id', 1) && Altera o status do campo? GETFLDSTATE('cust_id') && Exibe 1, não modificado= TABLEREVERT(.T.) && Descartar todas as alterações de tabela

SHOW MENU, comando

Exibe uma ou mais barras de menus definidas pelo usuário sem ativá-las.

Sintaxe

SHOW MENU NomeBarraMenus1 [, NomeBarraMenus2 ...] | ALL[PAD NomeTítuloMenu][SAVE]

Argumentos

NomeBarraMenus1 [, NomeBarraMenus2 ...] Especifica o nome de uma ou mais barras de menus para exibição.

ALL Exibe todas as barras de menus atualmente definidas.

PAD NomeTítuloMenu Especifica um título de menu a ser destacado em uma barra de menus.

SAVE Retém uma imagem das barras de menus especificadas sem ativá-las. Para limpar as imagens das barras de menus, utilize CLEAR.

Comentários

As barras de menus são exibidas, mas não podem ser utilizadas. Antes de exibir as barras de menus, é preciso criá-las com DEFINE MENU.

SHOW MENU, exemplo do comando

CLEARDEFINE MENU mnuExample BAR AT LINE 2DEFINE PAD padConv OF mnuExample PROMPT '\<Conversões' COLOR SCHEME 3 ;

KEY ALT+C, ''DEFINE PAD padCard OF mnuExample PROMPT 'Card \<Info' COLOR SCHEME 3 ;

KEY ALT+I, ''SHOW MENU mnuExample

SHOW POPUP, comando

Exibe um ou mais menus definidos com DEFINE POPUP sem ativá-los.

[Pág.: 408]

Page 409: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

SHOW POPUP NomeMenu1 [, NomeMenu2 ...] | ALL [SAVE]

Argumentos

NomeMenu1 [, NomeMenu2 ...] Especifica o nome de um ou mais menus a serem exibidos.

ALL Exibe todos os menus definidos atualmente.

SAVE Retém uma imagem dos menus especificados, sem ativá-los. As imagens de menus podem ser apagadas com CLEAR.

Comentários

Os menus são exibidos, mas não podem ser utilizados. Os menus devem primeiro ser criados com DEFINE POPUP para que possam ser mostrados.

SHOW WINDOW, comando

Exibe uma ou mais janelas definidas pelo usuário ou janelas do sistema do Visual FoxPro sem ativá-las.

Sintaxe

SHOW WINDOW NomeJanela1 [, NomeJanela2 ...] | ALL | SCREEN[IN [WINDOW] NomeJanela3][REFRESH][TOP | BOTTOM | SAME][SAVE]

Argumentos

NomeJanela1 [, NomeJanela2 ...] Especifica o nome de uma ou mais janelas a serem exibidas.

ALL Exibe todas as janelas definidas pelo usuário.

SCREEN Exibe a janela principal do Visual FoxPro quando ela está oculta. Você também pode escolher Screen, no menu Janela, para exibir a janela principal do Visual FoxPro. É possível ocultar a janela principal do Visual FoxPro clicando na caixa de fechamento ou então emitindo DEACTIVATE WINDOW SCREEN, HIDE WINDOW SCREEN ou RELEASE WINDOW SCREEN.

IN [WINDOW] NomeJanela3 Exibe a janela dentro de uma janela pai especificada com NomeJanela3. A janela não assume as características da janela pai. Uma janela exibida dentro de uma janela pai não pode ser movida para fora desta. Se a janela pai for movida, a janela filho também será.

Primeiramente, a janela pai especificada com NomeJanela3 deve ser criada com DEFINE WINDOW.

IN SCREEN Exibe explicitamente a janela dentro da janela principal do Visual FoxPro em vez de colocá-la dentro de outra janela. Como padrão, as janelas são colocadas na janela principal do Visual FoxPro.

REFRESH Redesenha uma janela Pesquisar. Isto é útil em uma rede, para garantir que você pesquise a versão mais recente de uma tabela. A Área de trabalho da tabela da janela Pesquisar é selecionada.

As janelas de edição de memo são atualizadas quando outros usuários de uma rede fazem alterações no campo Memo. SET REFRESH determina o intervalo entre as atualizações das janelas de edição de memo. Consulte SET REFRESH para obter informações adicionais sobre como os dados são atualizados nas tabelas abertas para uso compartilhado em uma rede.

[Pág.: 409]

Page 410: 74039361 Visual FoxPro Comandos e Funcoes

TOP Coloca a janela especificada na frente de todas as outras janelas.

BOTTOM Coloca a janela especificada atrás de todas as outras janelas.

SAME Coloca a janela especificada de volta em uma pilha de janelas, na mesma posição que ocupava antes de ser desativada. SAME atinge somente as janelas que já foram exibidas anteriormente e, mais tarde, foram apagadas da janela principal do Visual FoxPro com DEACTIVATE WINDOW.

SAVE Mantém uma imagem da janela, depois que esta é liberada, na janela principal do FoxPro ou em outra janela. Normalmente, as janelas são removidas da janela principal do FoxPro após serem liberadas. A imagem da janela pode ser apagada da janela principal do Visual FoxPro ou de uma janela com CLEAR.

Comentários

SHOW WINDOW controla a exibição e a colocação das janelas na tela. Se uma janela está oculta ou não foi ativada, SHOW WINDOW a exibirá sem ativá-la. Se uma ou mais janelas estiverem sendo exibidas, SHOW WINDOW lhe permite alterar a ordem das janelas de frente para trás.

Você também pode exibir as janelas do sistema, tais como a janela Comando.

No Visual FoxPro, você pode utilizar SHOW WINDOW para exibir as barras de ferramentas do Visual FoxPro. Utilize HIDE WINDOW para remover uma barra de ferramentas da janela do FoxPro. As barras de ferramentas devem estar ativadas para que possam ser exibidas. A tabela a seguir lista os nomes das barras de ferramentas do Visual FoxPro, para serem utilizados em SHOW WINDOW e em HIDE WINDOW. O nome da barra de ferramentas deverá estar entre aspas.

Nomes de barras de ferramentas

Paleta de cores LayoutCriador de relatóriosCriador de banco de dados Visualizar impressão PadrãoControle de formulários Criador de consultas Criador de visualizaçõesCriador de formulários Controles de relatório

Para exibir uma janela de sistema, coloque o nome completo dessa janela entre aspas.Você não pode especificar para onde a saída será direcionada nas janelas definidas pelo usuário com SHOW WINDOW. Utilize ACTIVATE WINDOW para direcionar a saída para uma janela definida pelo usuário criada com DEFINE WINDOW.

SHOW WINDOW, exemplo do comando

Neste exemplo, uma janela denominada wOutput1 será criada e exibida. Quando SHOW WINDOW é utilizado para exibir a janela, a saída não poderá ser direcionada para a janela enquanto esta não for ativada.

CLEARDEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Saída' ;

CLOSE FLOAT GROW SHADOW ZOOMSHOW WINDOW wOutput1

SIGN( ), função

Retorna um valor numérico de 1, –1 ou 0 se a expressão numérica especificada resultar em um valor positivo, negativo ou 0.

Sintaxe

SIGN(nExpressão)

[Pág.: 410]

Page 411: 74039361 Visual FoxPro Comandos e Funcoes

Tipos de retorno: Numérico

Argumentos

nExpressão Especifica a expressão numérica resultante da função SIGN( ). SIGN( ) retorna 1 se nExpressão resulta em um número positivo, –1 se nExpressão resulta em um número negativo e 0 se nExpressão resultar em 0.

SIGN( ), exemplo da função

STORE 10 TO gnNum1STORE -10 TO gnNum2STORE 0 TO gnZeroCLEAR? SIGN(gnNum1) && Exibe 1? SIGN(gnNum2) && Exibe -1? SIGN(gnZero) && Exibe 0

SIN( ), função

Retorna o seno de um ângulo.

Sintaxe

SIN(nExpressão)

Tipos de retorno: Numérico

Argumentos

nExpressão Especifica um ângulo cujo seno é retornado por SIN( ). nExpressão pode assumir qualquer valor e o valor retornado por SIN( ) varia de –1 a 1.

Observação nExpressão é especificado em radianos. Utilize DTOR( ) para converter um ângulo de graus para radianos. O número de casas decimais exibido por SIN( ) pode ser especificado com SET DECIMALS.

SIN( ), exemplo da função

CLEAR? SIN(0) && Exibe 0.00? SIN(PI( )/2) && Exibe 1.00? SIN(DTOR(90)) && Exibe 1.00

SIZE POPUP, comando

Altera o tamanho de um menu criado com DEFINE POPUP.

Sintaxe

SIZE POPUP NomeMenu TO nLinha1, nColuna1 | BY nLinha2, nColuna2

Argumentos

NomeMenu Especifica o nome do menu cujo tamanho você deseja alterar.

TO nLinha1, nColuna1 Altera o tamanho de um menu para um tamanho específico. nLinha1 e nColuna1 especificam, respectivamente, as novas coordenadas de linha e de coluna do canto inferior direito do menu.

[Pág.: 411]

Page 412: 74039361 Visual FoxPro Comandos e Funcoes

BY nLinha2, nColuna2 Altera o tamanho de um menu com relação ao seu tamanho atual. nLinha2 e nColuna2 especificam a alteração de tamanho do menu em linhas e colunas com relação às coordenadas atuais de linha e de coluna do canto inferior direito do menu.

Comentários

Se um menu definido pelo usuário tiver sido criado, seu tamanho poderá ser alterado; ele não precisará estar ativado ou visível.

SIZE POPUP, exemplo do comando

Este exemplo cria um menu contendo arquivos com a extensão .PRG, bem como move, aumenta e reduz o menu antes de fechá-lo.

CLEARDEFINE 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 popup para baixo=CHRSAW(2)SIZE POPUP popMovIn BY 5,5 && Aumenta o popup=CHRSAW(2)SIZE POPUP popMovIn BY -5,-5 && Reduz o popup=CHRSAW(2)MOVE POPUP popMovIn BY -5,-5 && Move popup para cima=CHRSAW(2)DEACTIVATE POPUP popMovIn RELEASE POPUP popMovIn

SIZE WINDOW, comando

Altera o tamanho de uma janela criada com DEFINE WINDOW ou de uma janela do sistema do Visual FoxPro.

Sintaxe

SIZE WINDOW NomeJanela TO nLinha1, nColuna1 | BY nLinha2, nColuna2

Argumentos

NomeJanela Especifica o nome da janela cujo tamanho você deseja alterar.

Para alterar o tamanho de uma janela do sistema, coloque todo o nome da janela do sistema entre aspas. Por exemplo, para aumentar em 1 linha e 1 coluna o tamanho da janela Comando, emita o comando a seguir:

SIZE WINDOW 'Janela Comando' BY 1,1

Observe que somente é possível alterar o tamanho das janelas Comando, Depurar e Rastrear.

TO nLinha1, nColuna1 Altera o tamanho de uma janela para um tamanho específico. nLinha1 e nColuna1 especificam, respectivamente, as novas coordenadas de linha e de coluna do canto inferior direito da janela.

BY nLinha2, nColuna2 Altera o tamanho de uma janela com relação ao seu tamanho atual. nLinha2 e nColuna2 especificam a alteração de tamanho da janela em linhas e colunas com relação às coordenadas atuais de linha e de coluna do canto inferior direito da janela.

Comentários

Se uma janela definida pelo usuário tiver sido criada, seu tamanho poderá ser alterado; ela não precisará estar ativada ou visível.

[Pág.: 412]

Page 413: 74039361 Visual FoxPro Comandos e Funcoes

SKIP, comando

Move o ponteiro do registro para frente e para trás em uma tabela.

Sintaxe

SKIP[nRegistros][IN nÁreaTrabalho | cAliasTabela]

Argumentos

nRegistros Especifica o número de registros que serão percorridos pelo ponteiro do registro.

A emissão de SKIP sem nRegistros avançará o ponteiro para o próximo registro. Se nRegistros resultar em um número positivo, o ponteiro do registro se moverá em direção ao final dos registros do arquivo nRegistros. Se nRegistros resultar em um número negativo, o ponteiro do registro se moverá em direção ao começo dos registros do arquivo nRegistros.

Se o ponteiro do registro estiver posicionado sobre o último registro de uma tabela e SKIP for executado sem nenhum argumento, um valor 1 maior que o número de registros na tabela será retornado por RECNO( ) e EOF( ) retornará verdadeiro (.T.). Se o ponteiro do registro estiver posicionado no primeiro registro de uma tabela e SKIP -1 for executado, RECNO( ) retornará 1 e BOF( ) retornará verdadeiro (.T.).

IN nÁreaTrabalho | cAliasTabela Move o ponteiro do registro em uma tabela dentro de uma Área de trabalho específica. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela especifica um alias de tabela ou de Área de trabalho.

Comentários

Se a tabela tiver uma marca de índice de controle mestre ou um arquivo de índice, SKIP moverá o ponteiro para o registro determinado pela seqüência de índice.

SKIP, exemplo do comando

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerCLEAR

SKIP 4 IN 'customer'? RECNO('customer') && Exibe 5GO BOTTOMSKIP -5? RECNO( )

SKPPAD( ), função

Determina se um título de menu está ativado ou desativado com SET SKIP OF.

Sintaxe

SKPPAD(cNomeBarraMenus, cNomeTítuloMenu)

Tipos de retorno: Lógico

Argumentos

cNomeBarraMenus Especifica o nome da barra de menus que contém o título de menu.

cNomeTítuloMenu Especifica o nome do título de menu cujo status (ativado ou desativado) é retornado por SKPPAD( ).

[Pág.: 413]

Page 414: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

SKPPAD( ) retornará verdadeiro (.T.) se o título de menu estiver desativado e falso (.F.) se estiver ativado.

SORT, comando

Classifica os registros na tabela atualmente selecionada e direciona a saída dos registros classificados para uma nova tabela.

Sintaxe

SORT TO NomeTabelaON NomeCampo1 [/A | /D] [/C]

[, NomeCampo2 [/A | /D] [/C] ...][ASCENDING | DESCENDING][Escopo] [FOR lExpressão1] [WHILE lExpressão2][FIELDS ListaNomesCampos| FIELDS LIKE Estrutura| FIELDS EXCEPT Estrutura][NOOPTIMIZE]

Argumentos

NomeTabela Especifica o nome da nova tabela que contém os registros classificados. O Visual FoxPro assume uma extensão de nome de arquivo .DBF para as tabelas. Se o nome do arquivo incluído não tiver uma extensão, .DBF será automaticamente atribuída.

ON NomeCampo1 Especifica na tabela atualmente selecionada o campo em que se baseia a classificação. O tipo de dados e o conteúdo do campo determinarão a ordem dos registros na nova tabela. Como padrão, a classificação é feita em ordem ascendente. Não é possível classificar por campos memo ou do tipo geral.

O exemplo a seguir classifica uma tabela no campo cust_id. A tabela customer é aberta e classificada, criando uma nova tabela denominada temp. Os registros em temp são ordenados pelo campo cust_id.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerCLEARLIST FIELDS company, cust_id NEXT 3SORT TO temp ON cust_idUSE tempLIST FIELDS company, cust_id NEXT 3WAIT WINDOW 'Agora classificado por CUST_ID' NOWAIT

É possível incluir nomes de campos adicionais (NomeCampo2, NomeCampo3) para incrementar a ordenação da nova tabela. O primeiro campo NomeCampo1 será o campo de classificação primária, o segundo campo NomeCampo2 será o campo de classificação secundária, e assim por diante.

[/A | /D] [/C] Para cada campo incluído na classificação, você poderá especificar uma ordem de classificação ascendente ou descendente. /A especifica uma ordem ascendente para o campo. /D especifica uma ordem descendente. /A ou /D podem ser incluídos em qualquer tipo de campo.

Como padrão, a ordem de classificação de campos dos campos de caractere considera maiúsculas e minúsculas. Se você incluir a opção /C após o nome de um campo de caractere, as maiúsculas/minúsculas serão ignoradas. É possível combinar a opção /C com /D ou /A. Por exemplo, /AC ou /DC.

No exemplo abaixo, é criada uma nova tabela denominada clients. A tabela orders é classificada no campo order_date em ordem ascendente e no campo freight em ordem descendente.

[Pág.: 414]

Page 415: 74039361 Visual FoxPro Comandos e Funcoes

USE ordersSORT TO clients ON order_date/A,freight/D

ASCENDING Especifica uma ordem ascendente para todos os campos não seguidos por /D.

DESCENDING Especifica uma ordem descendente para todos os campos não seguidos por /A.

Se você omitir tanto ASCENDING quanto DESCENDING, como padrão a ordem de classificação será ascendente.

Escopo Especifica um intervalo de registros a serem classificados. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

O escopo padrão para SORT é ALL (todos os registros).

FOR lExpressão1 Especifica que somente os registros na tabela atual para os quais a condição lógica lExpressão1 resulta em verdadeiro (.T.) são incluídos na classificação. A inclusão de FOR permitirá classificar os registros condicionalmente, filtrando os registros indesejados.

O comando SORT ... FOR pode ser otimizado por meio da tecnologia Rushmore se lExpressão1 for uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Uma discussão sobre as expressões que podem ser otimizadas por meio da tecnologia Rushmore aparece no capítulo 15, “Otimizando aplicativos,” no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição em que os registros da tabela atual serão incluídos na classificação desde que a expressão lógica lExpressão2 resulte em verdadeiro (.T.).

FIELDS ListaNomesCampos Especifica os campos da tabela original a serem incluídos na nova tabela que SORT criar. Se você omitir a cláusula FIELDS, todos os campos da tabela original serão incluídos na nova tabela.

FIELDS LIKE Estrutura Especifica que os campos da tabela original correspondentes à estrutura de campo Estrutura serão incluídos na nova tabela que SORT criar.

FIELDS EXCEPT Estrutura Especifica que todos os campos, exceto aqueles correspondentes à estrutura de campo Estrutura, serão incluídos na nova tabela que SORT criar.

A estrutura de campo Estrutura suporta caracteres curinga. Por exemplo, para especificar que todos os campos iniciados pelas letras A e P serão incluídos na nova tabela, utilize:

SORT TO mytable ON myfield FIELDS LIKE A*,P*

As cláusulas LIKE e EXCEPT podem ser combinadas com a cláusula EXCEPT:

SORT TO mytable ON myfield FIELDS LIKE A*,P* EXCEPT PARTNO*

NOOPTIMIZE Desativa a otimização Rushmore do comando SORT.

Para obter maiores informações, consulte ” SET OPTIMIZE” e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Comentários

Um ou mais campos especificados na tabela atual determinam a ordem em que os registros aparecerão na nova tabela.

Importante Certifique-se de que você tem espaço em disco suficiente para a nova tabela e para os arquivos de trabalho temporários criados durante a classificação. O espaço em disco necessário para executar uma classificação pode ser até três vezes o tamanho da tabela fonte. O espaço em disco disponível pode ser determinado com DISKSPACE( ) e SYS(2020). Se você ficar sem espaço em disco durante uma classificação, o Visual FoxPro exibirá uma mensagem de erro, e os arquivos de trabalho temporários serão apagados.

[Pág.: 415]

Page 416: 74039361 Visual FoxPro Comandos e Funcoes

Campos do tipo caractere que contêm números e espaços não devem ser classificados na ordem desejada. Campos numéricos são preenchidos da direita para a esquerda, com espaços vazios à esquerda. De forma contrária, campos de caractere são preenchidos da esquerda para a direita, com espaços vazios à direita.

Por exemplo, se dois registros em uma tabela contiverem um campo de caractere com 1724 em um registro e 18 em outro e a tabela for classificada nesse campo em ordem ascendente, o registro com 1724 aparecerá antes do registro que contém 18. Isso ocorre porque o Visual FoxPro lê cada caractere nos campos de caractere da esquerda para a direita e, como 17 (em 1724) é menor do que 18 (em 18), ele coloca 1724 primeiro. Para evitar esse problema, preencha sempre os números baixos com zeros à esquerda (0018) ou estabeleça um campo numérico.

SOUNDEX( ), função

Retorna uma representação fonética da expressão de caracteres especificada.

Sintaxe

SOUNDEX(cExpressão)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres que resultam de SOUNDEX( ).

Comentários

SOUNDEX( ) retorna uma seqüência de quatro caracteres. Comparando os resultados que SOUNDEX( ) retorna para duas expressões de caracteres, é possível determinar se duas expressões são parecidas foneticamente, indicando que elas têm sons parecidos. Isso pode ser útil na procura de registros duplicados em uma tabela.

SOUNDEX( ) não considera letras maiúsculas e minúsculas e, geralmente, ignora vogais.

SOUNDEX( ), exemplo da função

CLEAR? SOUNDEX('Smith') = SOUNDEX('Smyth') && Exibe .T.? SOUNDEX('Computador') && Exibe C513

SPACE( ), função

Retorna uma seqüência de caracteres composta por um número especificado de espaços.

Sintaxe

SPACE(nEspaços)

Tipos de retorno: Caractere

Argumentos

nEspaços Especifica o número de espaços que SPACE( ) retorna. O valor máximo de nEspaços é limitado apenas pela memória no Visual FoxPro.

[Pág.: 416]

Page 417: 74039361 Visual FoxPro Comandos e Funcoes

SROWS( ), função

Retorna o número de linhas disponíveis na janela principal do Visual FoxPro.

Sintaxe

SROWS( )

Tipos de retorno: Numérico

Comentários

No Visual FoxPro for Windows, o valor retornado por SROWS( ) depende do modo de visualização atual. O modo de visualização pode ser alterado com SET DISPLAY.

SROWS( ), exemplo da função

CLEAR? SROWS( )

STORE, comando

Armazena dados para um elemento de matriz, uma matriz ou uma \variável.

Sintaxe

STORE eExpressão TO ListaNomeVar | ListaNomeMatriz – Ou –NomeVar | NomeMatriz = eExpressão

Argumentos

eExpressão Especifica uma expressão cujo valor é armazenado na variável, matriz ou elemento de matriz. Se a variável não existir, será criada e inicializada para eExpressão. Uma matriz deve ser previamente definida com DIMENSION. STORE substitui o valor em uma variável, matriz ou elemento de matriz existente com o novo valor.

ListaNomeVart Especifica uma lista de variáveis ou elementos de matriz na qual eExpressão é armazenada. Separe os nomes ou elementos de matriz por vírgulas.

ListaNomeMatriz Especifica uma lista de nomes de matrizes existentes na qual eExpressão é armazenada. Separe os nomes de matriz por vírgulas.

STORE inicializará cada elemento das matrizes para o valor especificado, se SET COMPATIBLE estiver OFF. STORE armazenará o valor especificado em variáveis de memória dos nomes especificados, se SET COMPATIBLE estiver ON, sobregravando qualquer matriz existente que contenha estes nomes.

Comentários

Uma alternativa para STORE é o operador de atribuição de sinal de igual (=). A variável, matriz ou elemento de matriz deve estar no lado esquerdo do sinal de mais e seu valor no lado direito.

As datas podem ser diretamente armazenadas em variáveis, matrizes ou elementos de matriz ao utilizar chaves:

STORE {12/25/95} TO gdXMas

O número máximo de variáveis ou matrizes que se pode criar é listado na tabela de Capacidades do sistema . O limite pode ser aumentado ou diminuído no seu arquivo de configuração do Visual FoxPro. Para obter maiores informações sobre como configurar o Visual FoxPro, consulte o capítulo 3, “Configurando o Visual FoxPro”, no Guia de Instalação e Índice Principal.

[Pág.: 417]

Page 418: 74039361 Visual FoxPro Comandos e Funcoes

STORE, exemplo do comando

STORE DATE( ) TO gdDateSTORE 50 TO gnNumericSTORE 'Alô' TO gcCharacterSTORE .T. TO glLogicalSTORE $19.99 TO gyCurrency

DIMENSION gaMyArray(2,2)SET COMPATIBLE OFFSTORE 2 TO gaMyArray

CLEARDISPLAY MEMORY LIKE g*

STR( ), função

Retorna o equivalente de caractere de uma expressão numérica especificada.

Sintaxe

STR(nExpressão [, nComprimento [, nCasasDecimais]])

Tipos de retorno: Caractere

Argumentos

nExpressão Especifica a expressão numérica retornada por STR( ).

nComprimento Especifica o comprimento da seqüência de caracteres que STR( ) retorna. O comprimento inclui um caractere para o ponto decimal e um caractere para cada dígito à direita do ponto decimal.

STR( ) aumentará a seqüência de caracteres que retorna com espaços à esquerda se você especificar um comprimento maior que o número de dígitos à esquerda do ponto decimal. STR( ) retornará uma seqüência de asteriscos indicando a capacidade numérica se você especificar um comprimento menor que o número de dígitos à esquerda do ponto decimal.

nCasasDecimais Especifica o número de casas decimais na seqüência de caracteres que STR( ) retorna. É necessário incluir nComprimento para especificar o número de casas decimais.

Se você especificar menos casas decimais das que estão em nExpressão, os dígitos extras serão truncados.

STUFF( ), função

Retorna uma seqüência de caractere criada substituindo um número específico de caracteres em uma expressão de caracteres com outra expressão de caracteres.

Sintaxe

STUFF(cExpressão, nIniciarSubstituição, nCaracteresSubstituídos, cSubstituição)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres na qual ocorre a substituição.

nIniciarSubstituição Especifica a posição em cExpressão onde começa a substituição.

nCaracteresSubstituídos Especifica o número de caracteres a serem substituídos. Se nCaracteresSubstituídos for 0, a seqüência de substituições cSubstituição será inserida em cExpressão.

cSubstituição Especifica a expressão de caracteres de substituição. Se cSubstituição for a seqüência vazia, o número de caracteres especificados por nCaracteresSubstituídos serão removidos de cExpressão.

[Pág.: 418]

Page 419: 74039361 Visual FoxPro Comandos e Funcoes

STUFF( ), exemplo da função

STORE 'abcdefghijklm' TO gcString1STORE '12345' TO gcString2CLEAR? STUFF(gcString1, 4, 0, gcString2) && inseri? STUFF(gcString1, 4, 3, gcString2) && substitui? STUFF(gcString1, 4, 6, '') && exclui? STUFF(gcString1, 4, 1, gcString2) && substitui e inseri ? STUFF(gcString1, 4, 4, gcString2) && substitui e exclui? STUFF(gcString1, 4, LEN(gcString1), gcString2)&& substitui, exclui o restante

STUFFC( ), função

Retorna uma seqüência de caracteres criada para substituir um número específico de caracteres em uma expressão de caracteres com outra expressão de caracteres.

Sintaxe

STUFFC(cExpressão, nIniciarSubstituição, nCaracteresSubstituídos, cSubstituição)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres na qual ocorre a substituição.

nIniciarSubstituição Especifica a posição de caractere em cExpressão onde começa a substituição.

nCaracteresSubstituídos Especifica o número de caracteres a serem substituídos. Se nCaracteresSubstituídos for 0, a seqüência de substituição completa cSubstituição será inserida em cExpressão.

cSubstituição Especifica a expressão de caracteres de substituição. Se cSubstituição é a seqüência vazia, o número de caracteres especificados por nCaracteresSubstituídos são removidos de cExpressão.

Comentários

STUFFC( ) é criado para expressões que contêm caracteres byte duplo. Se a expressão contiver apenas caracteres de byte único, STUFFC( ) será equivalente a STUFF( ).

STUFFC( ) retorna uma seqüência de caracteres criada substituindo-se um número específico de caracteres em uma expressão de caracteres por outra expressão de caracteres. As expressões de caracteres podem consistir em alguma combinação de caracteres de byte único e byte duplo.

SUBSTR( ), função

Retorna uma seqüência de caracteres da expressão de caracteres ou campo de dados fornecido.

Sintaxe

SUBSTR(cExpressão, nIniciarPosição [, nCaracteresRetornados])

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres ou campo Memo a partir da qual a seqüência de caracteres é retornada.

[Pág.: 419]

Page 420: 74039361 Visual FoxPro Comandos e Funcoes

IniciarPosição Especifica a posição na expressão de caracteres ou campo Memo cExpressão a partir da qual a seqüência de caracteres é retornada. O primeiro caractere de cExpressão tem a posição 1.

Se TALK for SET ON e nIniciarPosição for maior que o número de caracteres em cExpressão, o Visual FoxPro irá gerar uma mensagem de erro. Se TALK for SET OFF, a seqüência vazia será retornada.

nCaracteresRetornados Especifica o número de caracteres a serem retornados de cExpressão. Se você omitir nCaracteresRetornados, os caracteres serão retornados até que se chegue ao fim da expressão de caracteres.

Comentários

SUBSTR( ) retorna uma seqüência de caracteres de uma expressão de caracteres ou de um campo Memo, começando em uma posição especificada na expressão de caracteres ou no campo Memo e continuando por um número especificado de caracteres.

SUBSTR( ) não retornará um valor na janela Depurar para um campo Memo quando este é emitido. Para retornar um valor na janela Depurar, coloque o nome do campo Memo dentro de ALLTRIM( ) e coloque ALLTRIM( ) dentro de SUBSTR( ).

SUBSTR( ), exemplo da função

STORE 'abcdefghijklm' TO mystringCLEAR? SUBSTR(mystring, 1, 5) && Exibe abcde? SUBSTR(mystring, 6) && Exibe fghijklm

SUBSTRC( ), função

Retorna uma seqüência de caracteres a partir da expressão de caracteres ou do campo Memo fornecido.

Sintaxe

SUBSTRC(cExpressão, nIniciarPosição [, nCaracteresRetornados])

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres ou campo Memo a partir da qual a seqüência de caracteres é retornada.

nIniciarPosição Especifica a posição da expressão de caracteres ou do campo Memo cExpressão de onde a seqüência de caracteres é retornada. O primeiro caractere de cExpressão tem a posição 1.

Se TALK for definida como (ON) e nIniciarPosição for maior que o número de caracteres em cExpressão, o Visual FoxPro irá gerar uma mensagem de erro. Se TALK for definida como (OFF), é retornada a seqüência vazia.

nCaracteresRetornados Especifica o número de caracteres a serem retornados de cExpressão. Se você omitir nCaracteresRetornados, os caracteres serão retornados até que o final da expressão de caracteres seja atingido.

Comentários

SUBSTRC( ) é criado para expressões que contenham caracteres de byte duplo. Se a expressão contiver apenas caracteres de byte único, SUBSTRC( ) será equivalente a SUBSTR( ).

SUBSTRC( ) retorna uma seqüência de caracteres a partir do campo Memo ou da expressão de caracteres fornecida. A expressão de caracteres ou o campo Memo pode conter qualquer combinação de caracteres de byte único e de byte duplo.

SUBSTRC( ) não retornará um valor para um campo Memo quando emitido na janela Depurar. Para retornar um valor na janela Depurar, coloque o nome do campo Memo em ALLTRIM( ) e coloque ALLTRIM( ) em SUBSTRC( ).

[Pág.: 420]

Page 421: 74039361 Visual FoxPro Comandos e Funcoes

SUM, comando

Totaliza todos campos numéricos ou os especificados na tabela atualmente selecionada.

Sintaxe

SUM [eListaExpressão][Escopo] [FOR lExpressão1] [WHILE lExpressão2][TO ListaNomeVarMem | TO ARRAY NomeMatriz][NOOPTIMIZE]

Argumentos

eListaExpressão Especifica um ou mais campos ou expressões de campos a serem totalizados. Se você omitir a lista de expressão de campos, todos os campos numéricos serão totalizados.

Escopo Especifica um intervalo de registros a ser incluído no total. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

O escopo padrão para SUM é registros ALL.

FOR lExpressão1 Especifica que apenas os registros para os quais a condição lógica lExpressão1 resulta em verdadeiro (.T.) são incluídos no total. A inclusão de FOR permite totalizar os registros de modo condicional filtrando os registros indesejáveis.

Um comando SUM ... FOR terá otimização Rushmore se lExpressão1 for uma expressão otimizável. Para melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações sobre a otimização Rushmore, consulte “ SET OPTIMIZE” e “Utilizando a tecnologia Rushmore para acelerar o acesso a dados”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição pela qual os registros da tabela atual são incluídos no total enquanto a expressão lógica lExpressão2 resultar em verdadeiro (.T.).

TO ListaNomeVarMem Armazena cada total em uma variável. Se você especificar uma variável em ListaNomeVarMem que não existe, o Visual FoxPro a criará automaticamente. Separe os nomes das variáveis na lista com vírgulas.

TO ARRAY NomeMatriz Armazena os totais em uma matriz de variável. Se a matriz especificada em SUM não existir, o Visual FoxPro a criará automaticamente. Se a matriz existir e for muito pequena para conter todos os totais, o tamanho da matriz será aumentado automaticamente para acomodar os totais.

NOOPTIMIZE Desativa a otimização Rushmore de SUM.

Para obter maiores informações, consulte “ SET OPTIMIZE” e “Utilizando a tecnologia Rushmore para acelerar o acesso a dados”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

SUM, exemplo do comando

O exemplo a seguir exibe os totais dos campos In_stock e On_order na tabela products , com uma soma de dois totais.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE products && Abre a tabela Products

SUM in_stock, on_order, in_stock+on_order;TO gnInStock, gnOnOrder, gnUnits

CLEAR?? 'Total em estoque : ', gnInStock && Exibe 3119.00? 'Total requisitado: ', gnOnOrder && Exibe 780.00? 'Total # unidades : ', gnUnits && Exibe 3899.00

[Pág.: 421]

Page 422: 74039361 Visual FoxPro Comandos e Funcoes

SUSPEND, comando

Pausa a execução do programa e retorna ao Visual FoxPro interativo.

Sintaxe

SUSPEND

Comentários

Enquanto um programa é pausado, é possível executar comandos de intervenção, verificar os valores de variável, abrir as janelas Rastrear e Depurar e assim por diante.

Todas as variáveis criadas enquanto o programa está pausado são PRIVATE.

Utilize RESUME para reiniciar a execução de um programa suspenso. A execução do programa continua com a linha que segue a linha contendo SUSPEND.

[Pág.: 422]

Page 423: 74039361 Visual FoxPro Comandos e Funcoes

COMANDOS SYS(???)

SYS(0) - Informações do computador da rede

SYS(0) retorna as informações do computador da rede ao utilizar o Visual FoxPro em um ambiente de rede.

Sintaxe

SYS(0)

Tipos de retorno: Caractere

Comentários

As informações do computador devem, em primeiro lugar, ser atribuídas pelo software da rede e a shell da rede deve ser carregada.

Se as informações do computador não tiverem sido atribuídas ou a shell da rede não tiver sido carregada, SYS(0) retornará uma seqüência de caracteres que consistirá de 15 espaços, um sinal de número (#) seguido por um outro espaço e então 0. Consulte a sua documentação de rede para obter maiores informações sobre como definir as informações do computador.

SYS(0) retornará 1 ao utilizar o Visual FoxPro em um ambiente independente.

SYS(0) retornará um nome de computador e um nome de usuário.

SYS(1) - Dia do sistema Juliano

Retorna a data atual do sistema como uma seqüência de caracteres de número de dia Juliano.

Sintaxe

SYS(1)

Tipos de retorno: Caractere

Comentários

O valor retornado por SYS(1) é válido nos E.U.A. Você pode obter versões do Visual FoxPro em qualquer data do sistema após 14 de setembro de 1752 e antes de 31 de dezembro de 9999.

SYS(1) - Exemplo de data do sistema Juliano

? SYS(1)? SYS(10,VAL(SYS(1)))

SYS(2) - Segundos desde a meia-noite

Retorna o número de segundos decorridos desde a meia-noite.

Sintaxe

SYS(2)

Tipos de retorno: Caractere

SYS(2) - Exemplo de segundos desde meia-noite

? TIME( )? SYS(2)

[Pág.: 423]

Page 424: 74039361 Visual FoxPro Comandos e Funcoes

SYS(3) - Nome de arquivo válido

Retorna um nome de arquivo válido que pode ser utilizado para criar arquivos temporários.

Sintaxe

SYS(3)

Tipos de retorno: Caractere

Comentários

SYS(3) pode retornar um nome não exclusivo quando emitida com sucesso em um computador veloz. Utilize SUBSTR(SYS(2015), 3, 10) para criar um nome de arquivo válido e exclusivo de oito caracteres.

SYS(5) - Volume ou unidade de disco padrão

Retorna o volume ou a unidade de disco padrão atual do Visual FoxPro.

Sintaxe

SYS(5)

Tipos de retorno: Caractere

Comentários

Esta função retorna a unidade de disco padrão atual do Visual FoxPro. Utilize SET DEFAULT para especificar um volume ou unidade de disco padrão.

SYS(5) - Exemplo de volume ou unidade de disco padrão

IF _DOS OR _WINDOWSSET DEFAULT TO C:

ENDIF? SYS(5)

SYS(6) - Dispositivo de impressora atual

Retorna o dispositivo de impressora atual.

Sintaxe

SYS(6)

Tipos de retorno: Caractere

Comentários

Esta função retorna a definição atual de SET PRINTER TO.

SYS(6) - Exemplo de dispositivo de impressora atual

? SYS(6)SET PRINTER TO output.txt? SYS(6)

[Pág.: 424]

Page 425: 74039361 Visual FoxPro Comandos e Funcoes

SYS(7) - Arquivo de formato atual

Retorna o nome do arquivo de formato atual.

Sintaxe

SYS(7 [, nÁreaTrabalho])

Tipos de retorno: Caractere

Argumentos

nÁreaTrabalho Especifica o número da área de trabalho para a qual SYS(7) retorna o nome do arquivo de formato. O nome do arquivo de formato para a área de trabalho atual será retornado se você omitir nÁreaTrabalho.

Comentários

Um arquivo de formato é aberto com SET FORMAT. A seqüência vazia será retornada se um arquivo de formato não estiver aberto na área de trabalho especificada.

SYS(9) - Número serial do Visual FoxPro

Retorna o número serial do seu Visual FoxPro.

Sintaxe

SYS(9)

Tipos de retorno: Caractere

SYS(10) - Seqüência a partir do número de dia juliano

Converte um número de dia juliano para uma seqüência de caracteres.

Sintaxe

SYS(10, nNúmeroDiaJuliano)

Tipos de retorno: Caractere

Comentários

SYS(10) retorna uma data de tipo Caractere a partir de um número de dia juliano, nNúmeroDiaJuliano.

SYS(10) - Exemplo de seqüência a partir do número de dia juliano

? SYS(1)? SYS(10,VAL(SYS(1)))

SYS(11) - Número de dia juliano

Converte uma expressão de data ou seqüência de caracteres em um formato de data para um número de dia Juliano.

[Pág.: 425]

Page 426: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

SYS(11, dExpressão | tExpressão | cExpressão)

Tipos de retorno: Caractere

Comentários

SYS(11) retorna um número de dia juliano a partir de uma expressão de data, dExpressão, de uma expressão de data e hora, tExpressão ou de uma expressão de caracteres, cExpressão em uma formato de data. O número do dia será retornado como uma seqüência de caracteres.

SYS(11) - Exemplo de número de dia juliano

? SYS(11, {10/31/95})? SYS(11,'10/31/95')

SYS(12) - Memória disponível em bytes

Retorna a quantidade de memória abaixo de 640K disponível para executar um programa externo.

Sintaxe

SYS(12)

Tipos de retorno: Caractere

Comentários

No Visual FoxPro, SYS(12) sempre retorna 655.360.

SYS(12) é semelhante a MEMORY( ), com duas exceções:

· SYS(12) retorna a quantidade de memória disponível em bytes. MEMORY( ) retorna a memória disponível em kilobytes.· SYS(12) retorna uma seqüência de caracteres. MEMORY( ) retorna um valor numérico.

SYS(13) - Status da impressora

Retorna o status da impressora.

Sintaxe

SYS(13)

Tipos de retorno: Caractere

Comentários

OFFLINE será retornado se a impressora não estiver preparada. READY será retornado se a impressora estiver preparada.Se a impressora estiver conectada a uma porta COM, SYS(13) retornará READY se a impressora retornar Limpar para enviar dados ou Conjunto de dados preparado.

Se a impressora estiver conectada a uma porta paralela, SYS(13) retornará OFFLINE se a impressora retornar Sem papel, Erro de I/O, Tempo limite, Impressora ocupada ou Impressora não selecionada.

[Pág.: 426]

Page 427: 74039361 Visual FoxPro Comandos e Funcoes

SYS(13) - Exemplo de status da impressora

IF SYS(13) = 'OFFLINE'WAIT WINDOW 'A impressora está off-line'

ENDIF

SYS(14) - Expressão de índice

Retorna a expressão de índice de um arquivo de índice .IDX de entrada única aberto ou expressões de índice para marcas em arquivos de índice .CDX compostos.

Sintaxe

SYS(14, nNúmeroÍndice [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Caractere

Argumentos

nNúmeroÍndice Especifica qual expressão de índice será retornada das marcas ou arquivos de índice abertos. SYS(14) retornará expressões de índice das marcas e arquivos de índice abertos na seguinte ordem conforme nNúmeroÍndice aumenta de 1 para o número total de arquivos de entrada única abertos e marcas de índice composto independente e composto estrutural:

1. As expressões de índice de arquivos de índice de entrada única (se estiverem abertos) são retornados em primeiro lugar. A ordem em que os arquivos de índice de entrada única são incluídos em USE ou SET INDEX determina a ordem em que as expressões de índice são retornadas.

2. As expressões de índice para cada marca no índice composto estrutural (se presente) são retornadas em seguida. As expressões de índice são retornadas de marcas na ordem em que as mesmas foram criadas no índice estrutural.

3. As expressões de índice para cada marca em quaisquer índices compostos independentes abertos são retornadas por último. As expressões de índice são retornadas a partir das marcas na ordem em que foram criadas em índices compostos independentes.

A seqüência vazia será retornada se nNúmeroÍndice for maior que o número total de arquivos de entrada única abertos e marcas de índice composto independente e composto estrutural.

nÁreaTrabalho | cAliasTabela Especifica um número da área de trabalho ou alias da área de trabalho. Se você omitir nÁreaTrabalho e cAliasTabela, as expressões de índice serão retornadas de arquivos de índice abertos na área de trabalho atual. Se uma tabela não contiver o alias especificado, o Visual FoxPro irá gerar uma mensagem de erro.

Comentários

Uma expressão de índice é especificada quando uma marca ou arquivo de índice for criado com INDEX. A expressão de índice determina como uma tabela será exibida e acessada quando uma marca ou arquivo de índice for utilizado para solicitar a tabela.

Para obter maiores informações sobre expressões de índice e como criar marcas e arquivos de índice, consulte INDEX. SYS(14) é semelhante à função KEY( ).

USE e SET INDEX suportam uma lista de nome de arquivo de índice que lhe permite abrir arquivos de índice em uma tabela. Qualquer combinação de arquivos de índice de entrada única, nomes de arquivo de índice composto independente ou composto estrutural, pode ser incluída na lista de arquivo de índice.

[Pág.: 427]

Page 428: 74039361 Visual FoxPro Comandos e Funcoes

SYS(16) - Nome de arquivo do programa em execução

Retorna o nome de arquivo do programa sendo executado.

Sintaxe

SYS(16 [, nNívelPrograma])

Tipos de retorno: Caractere

Argumentos

nNívelPrograma Indica a partir de quantos níveis anteriores o nome do programa é carregado. Este valor pode variar de 1 para a profundidade em que os programas são aninhados.

Se nNívelPrograma for 0 ou 1, SYS(16) retornará o nome do programa principal (o primeiro programa executado). O nome do programa atualmente executado será retornado se nNívelPrograma for omitido. A seqüência vazia será retornada se nNívelPrograma for maior que a profundidade de aninhamento do programa.

Comentários

Esta opção é útil para recuperação de erros. SYS(16) é semelhante a PROGRAM( ). Entretanto, SYS(16) retorna um caminho com o nome do programa; enquanto que PROGRAM( ) retorna apenas o nome do programa.

Se um procedimento ou função estiver sendo executada, SYS(16) retornará o nome do arquivo contendo o procedimento ou função depois do nome da função ou procedimento.

Quando o programa em execução for parte de um aplicativo (.APP), SYS(16) retornará o nome do programa — o caminho não será retornado com o nome do programa.

SYS(16) - Exemplo do nome de arquivo do programa em execução

O aninhamento do programa é retornado no breve exemplo de programa a seguir:

STORE 1 TO gnXDO WHILE LEN(SYS(16,gnX)) != 0

? SYS(16,gnX)STORE gnX+1 TO gnX

ENDDO

SYS(17) - Processador em uso

Retorna a unidade de processamento central (CPU) sendo utilizada.

Sintaxe

SYS(17)

Tipos de retorno: Caractere

Comentários

Esta função retorna o tipo da unidade de processamento central sendo utilizada: 80386, 80486 e assim por diante.

Observação Para obter maiores informações sobre o tipo do processador, você pode solicitar a função FxGestalt( ) na biblioteca Foxtools.

[Pág.: 428]

Page 429: 74039361 Visual FoxPro Comandos e Funcoes

SYS(17) - Exemplo de processador em uso

? 'Processador em uso: ', SYS(17)

SYS(21) - Controlando o número do índice

Retorna, como uma seqüência de caracteres, o número da posição de índice do arquivo de índice .IDX ou marca de índice composto .CDX de controle principal para a área de trabalho atualmente selecionada.

Sintaxe

SYS(21)

Tipos de retorno: Caractere

Comentários

O número da posição de índice será determinado pela ordem em que os arquivos de índice .IDX e marcas de índice composto .CDX são especificadas em USE e SET INDEX.

Você pode usar SET INDEX, SET ORDER e USE para especificar qual arquivo de índice .IDX ou marca de índice composto .CDX é a marca ou arquivo de índice de controle principal. Para obter maiores informações sobre como especificar uma marca ou índice de controle principal, consulte SET INDEX, SET ORDER e USE.

“0” será retornado caso não haja arquivo de índice .IDX ou marca de índice composto .CDX de controle principal (por exemplo, SET ORDER TO é emitido para exibir e acessar a tabela na ordem de registro natural).

SYS(22) - Controlando nome ou marca de índice

Retorna o nome do arquivo de índice .IDX ou marca de índice composto .CDX de controle principal para uma tabela.

Sintaxe

SYS(22 [, nÁreaTrabalho])

Tipos de retorno: Caractere

Comentários

Você pode usar SET INDEX, SET ORDER e USE para especificar qual marca de índice composto .CDX ou arquivo de índice .IDX é a marca ou arquivo de índice de controle principal. Para obter maiores informações sobre como especificar uma marca ou índice de controle principal, consulte SET INDEX, SET ORDER e USE.

A seqüência vazia será retornada caso não haja um arquivo de índice .IDX ou marca de índice composto .CDX de controle principal (por exemplo, SET ORDER TO é emitido para exibir e acessar a tabela na ordem de registro natural).

nÁreaTrabalho Especifica o número da área de trabalho da tabela para a qual SYS(22) retorna o nome do arquivo de índice .IDX ou marca de índice composto .CDX de controle principal.

[Pág.: 429]

Page 430: 74039361 Visual FoxPro Comandos e Funcoes

SYS(23) - Utilização de memória EMS do FoxPro

Retorna a quantidade de memória EMS (em segmentos de 16K) que está sendo atualmente utilizada pela versão Padrão (16 bits) do FoxPro para MS-DOS.

Sintaxe

SYS(23)

Tipos de retorno: Caractere

Comentários

0 será retornado se nenhuma memória EMS estiver em uso.

SYS(23) sempre retorna 0 na versão Estendida (32 bits) do FoxPro para MS-DOS e do Visual FoxPro.

SYS(24) - Limite de memória EMS

Retorna a definição limite EMS em seu arquivo de configuração do FoxPro para MS-DOS.

Sintaxe

SYS(24)

Tipos de retorno: Caractere

Comentários

SYS(24) retornará 0 na versão Padrão do FoxPro para MS-DOS se um limite EMS não estiver incluído em seu arquivo de configuração.

SYS(24) sempre retorna 0 na versão Estendida (32 bits) do FoxPro para MS-DOS e Visual FoxPro.

Para obter informações completas sobre esta definição de configuração, consulte o capítulo 3, “Configurando o Visual FoxPro”, no Guia de Instalação e Índice Principal.

SYS(100) - Definição da console

Retorna a definição atual de SET CONSOLE.

Sintaxe

SYS(100)

Tipos de retorno: Caractere

SYS(100) - Exemplo de definição da console

IF SYS(100) != 'ON'SET CONSOLE ON

ENDIF

SYS(101) - Definição do dispositivo

Retorna a definição atual de SET DEVICE.

[Pág.: 430]

Page 431: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

SYS(101)

Tipos de retorno: Caractere

SYS(101) - Exemplo de definição de dispositivo

IF SYS(101) != 'SCREEN'SET DEVICE TO SCREEN

ENDIF

SYS(102) - Definição da impressora

Retorna a definição atual de SET PRINTER.

Sintaxe

SYS(102)

Tipos de retorno: Caractere

SYS(102) - Exemplo de definição de impressora

IF SYS(102) != 'OFF'SET PRINTER OFF

ENDIF

SYS(103) - Definição da comunicação

Retorna a definição atual de SET TALK.

Sintaxe

SYS(103)

Tipos de retorno: Caractere

SYS(103) - Exemplo de definição de comunicação

IF SYS(103) != 'ON'SET TALK ON

ENDIF

SYS(1001) - Memória do Visual FoxPro

Retorna a quantidade total de memória disponível para o gerenciador de memória do Visual FoxPro.

Sintaxe

SYS(1001)

Tipos de retorno: Caractere

Comentários

No Visual FoxPro, SYS(1001) retorna o tamanho de reserva de memória virtual, que é aproximadamente quatro vezes a quantidade de memória física.

[Pág.: 431]

Page 432: 74039361 Visual FoxPro Comandos e Funcoes

SYS(1016) - Uso da memória de objeto do usuário

Retorna a quantidade de memória sendo utilizada pelos objetos definidos.

Sintaxe

SYS(1016)

Tipos de retorno: Caractere

Comentários

Os objetos definidos pelo usuário incluem: janelas definidas pelo usuário, barras de menus, menus, variáveis, matrizes, tabelas abertas, arquivos abertos com funções de arquivo de nível baixo e assim por diante.

SYS(1023) - Ativar modo de diagnóstico da Ajuda

Ativa o modo de diagnóstico da Ajuda, permitindo que você desvie HelpContextID passada para o sistema de Ajuda do Visual FoxPro.

Sintaxe

SYS(1023)

Tipos de retorno: Caractere

Comentários

SYS(1023) é útil para depuração de um sistema de Ajuda personalizado em seu aplicativo. SYS(1023) retorna a seqüência vazia.

Quando o modo de diagnóstico da Ajuda for ativado com SYS(1023), uma caixa de diálogo será exibida sempre que você pressionar F1 ou emitir HELP. A caixa de diálogo exibe HelpContextID a ser passada para o sistema de Ajuda do Visual FoxPro e será dada a opção de passar HelpContextID ao sistema de Ajuda do Visual FoxPro.

Se você escolher Sim, HelpContextID será passada para o sistema de Ajuda do Visual FoxPro e o tópico da Ajuda correspondente (se disponível) será exibido. Se você selecionar Não, HelpContextID não será passada ao sistema de Ajuda do Visual FoxPro e o tópico da Ajuda correspondente não será exibido.

Use SYS(1024) para desativar o modo de diagnóstico da Ajuda e restaurar o processamento do sistema de Ajuda padrão do Visual FoxPro.

SYS(1024) - Desativar o modo de diagnóstico da Ajuda

Desativa o modo de diagnóstico da Ajuda ativado ao emitir SYS(1023).

Sintaxe

SYS(1024)

Tipos de retorno: Caractere

Comentários

Utilize SYS(1024) para desativar o modo de diagnóstico da Ajuda ativado com SYS(1023) e restaurar o processamento do sistema de Ajuda padrão do Visual FoxPro. SYS(1023) é utilizada para depurar um sistema de Ajuda personalizado em seu aplicativo.

SYS(1024) retorna a seqüência vazia.

[Pág.: 432]

Page 433: 74039361 Visual FoxPro Comandos e Funcoes

SYS(1500) - Ativar um item de menu do sistema

Ativa um item de menu do sistema Visual FoxPro.

Sintaxe

SYS(1500, cNomeItemSistema, cNomeMenu)

Tipos de retorno: Caractere

Argumentos

cNomeItemSistema Especifica o nome do item de menu do sistema Visual FoxPro a ser ativado.

cNomeMenu Especifica o nome do submenu ou menu do sistema Visual FoxPro que contém o item de menu.

Comentários

Consulte Nomes do menu de sistema para obter uma lista de nomes de item de menu e menus do Visual FoxPro. Você pode também utilizar SYS(2013) - Seqüência de nomes do menu do sistema para exibir uma lista de nomes de item de menu e menus do Visual FoxPro.

Os itens de menu definidos pelo usuário e os itens de menu do sistema desativados não podem ser ativados com SYS(1500).

SYS(1500) retorna a seqüência vazia.

SYS(1500) - Exemplo de Ativar um item de menu do sistema

O exemplo a seguir utiliza SYS(1500) para colar um comando em um arquivo de programa.

_CLIPTEXT = "MESSAGEBOX('TEST')" && Comando a ser coladoMODIFY COMMAND myprog NOWAIT && Abre um arquivo de programaSYS(1500, '_MED_PASTE', '_MEDIT') && Cola um item de menu

SYS(2000) - correspondência curinga de nome do arquivo

Retorna o nome do primeiro arquivo que corresponde a uma estrutura de nome de arquivo.

Sintaxe

SYS(2000, Estrutura [, 1])

Tipos de retorno: Caractere

Argumentos

Estrutura Especifica a estrutura do nome de arquivo. A estrutura do arquivo não pode conter os curingas ? e *.

1 Retorna o nome do próximo arquivo correspondente.

Comentários

A seqüência vazia será retornada se um arquivo correspondente não for localizado.

SYS(2000) - exemplo da correspondência de curinga de nome de arquivo

? SYS(2000,'FOX.*')? SYS(2000,'FOX.*',1)

[Pág.: 433]

Page 434: 74039361 Visual FoxPro Comandos e Funcoes

SYS(2001) - SET ... status do comando

Retorna o status dos comandos SET especificados.

Sintaxe

SYS(2001, cSETComando [, 1 | 2])

Tipos de retorno: Caractere

Argumentos

cSETComando Especifica o comando SET cujo status é retornado por SYS(2001).

1 | 2 Alguns comandos SET possuem duas ou mais definições; por exemplo, SET PRINTER ON, SET PRINTER OFF e SET PRINTER TO FileName. Utilize SYS(2001) sem 1 ou 2 para retornar a definição da chave ON ou OFF. Utilize SYS(2001) com 1 ou 2 para retornar as definições adicionais. Consulte “SET( )” para obter comandos SET para o qual informações adicionais são retornadas quando 1 ou 2 está incluído.

Comentários

SYS(2001) é idêntico a SET( ).

SYS(2001) - SET ... exemplo do status de comando

? SYS(2001,'PRINTER')? SYS(2001,'PRINTER',1)

SYS(2002) - ativar ou desativar ponto de inserção

Ativa ou desativa o ponto de inserção.

Sintaxe

SYS(2002 [, 1])

Tipos de retorno: Nenhum

Comentários

SYS(2002) desativa o ponto de inserção. SYS(2002, 1) ativa o ponto de inserção. Para obter maiores informações sobre ativação e desativação do ponto de inserção, consulte “ SET CURSOR”.

SYS(2003) - diretório atual

Retorna o nome do diretório atual na unidade padrão.

Sintaxe

SYS(2003)

Tipos de retorno: Caractere

Comentários

Você pode utilizar SYS(5) para determinar a unidade atual.

[Pág.: 434]

Page 435: 74039361 Visual FoxPro Comandos e Funcoes

SYS(2004) - diretório inicial do Visual FoxPro

Retorna o nome do diretório a partir do qual o Visual FoxPro foi iniciado.

Sintaxe

SYS(2004)

Tipos de retorno: Caractere

Comentários

SYS(2004) retorna o local do arquivo .ESL em um aplicativo em tempo de execução distribuído do Visual FoxPro.

SYS(2004) - exemplo do diretório inicial do Visual FoxPro

? 'diretório inicial do Visual FoxPro: ', SYS(2004)

SYS(2006) - placa de vídeo atual

Retorna o tipo de monitor e placa de vídeo que você está utilizando.

Sintaxe

SYS(2006)Tipos de retorno: Caracter

SYS(2006) - exemplo da placa de vídeo atual

? 'monitor/placa de vídeo atual: ', SYS(2006)

SYS(2007) - Valor da soma de verificação

Retorna o valor da soma de verificação de uma expressão de caracteres.

Sintaxe

SYS(2007, cExpressão)

Tipos de retorno: Caractere

Comentários

Uma soma de verificação pode ser utilizada para testar a validade dos dados ou para comparar duas expressões de caracteres.

cExpressão Especifica a expressão de caracteres para a qual SYS(2007) retorna um valor da soma de verificação.

SYS(2010) - Definições do arquivo CONFIG.SYS

Retorna a definição de arquivos em CONFIG.SYS.

[Pág.: 435]

Page 436: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

SYS(2010)

Tipos de retorno: Caractere

Comentários

No FoxPro para MS-DOS, SYS(2010) retorna a definição de arquivos como uma seqüência de caracteres em seu arquivo de configuração CONFIG.SYS.

No Visual FoxPro, SYS(2010) sempre retorna 255.

Muitos arquivos CONFIG.SYS contêm uma linha que especifica o número máximo de arquivos que podem ser abertos ao mesmo tempo no MS-DOS. Esta linha geralmente lê FILES=NNN, onde NNN é um número. SYS(2010) retorna este número.

Um arquivo de configuração CONFIG.SYS não precisa ter uma definição de arquivos; além disso, você não precisa ter um arquivo CONFIG.SYS. SYS(2010) retorna a definição de arquivos padrão do MS-DOS em cada caso.

O número retornado por SYS(2010) não é o número de arquivos que você pode abrir no Visual FoxPro, FoxPro para Windows e FoxPro para MS-DOS. MS-DOS abre arquivos para seu próprio uso. O Visual FoxPro e o FoxPro para Windows também abrem seu próprio uso interno e o número desses arquivos abertos pode variar ao longo de uma sessão do FoxPro. A definição de arquivos em seu arquivo CONFIG.SYS deve ser um pouco maior que o número de arquivos que você gostaria de abrir no Visual FoxPro.

Para obter maiores informações sobre o arquivo de configuração CONFIG.SYS, consulte seu manual do MS-DOS.

SYS(2011) - Status de bloqueio atual

Retorna o status de bloqueio de registro ou tabela para a Área de trabalho atual.

Sintaxe

SYS(2011)

Tipos de retorno: Caracter

Comentários

Ao contrário das funções FLOCK( ), LOCK( ) e RLOCK( ), SYS(2011) não tenta bloquear a tabela ou o registro.

A seqüência de registros retornada por SYS(2011) é idêntica à mensagem exibida na barra de status (Exclusivo, Registro desbloqueado, Registro bloqueado...).

SYS(2011) retorna Exclusivo apenas na estação de trabalho que abriu exclusivamente a tabela e Registro desbloqueado apenas na estação de trabalho que aplicou o bloqueio do registro.

SYS(2012) - Tamanho do bloco do campo Memo

Retorna o tamanho do bloco do campo Memo para uma tabela.

Sintaxe

SYS(2012 [, nÁreaTrabalho | cAliasTabela])

[Pág.: 436]

Page 437: 74039361 Visual FoxPro Comandos e Funcoes

Tipos de retorno: Caractere

Argumentos

nÁreaTrabalho | cAliasTabela Especifica o número da Área de trabalho ou alias da tabela para a tabela para a qual o tamanho de bloco do campo Memo é retornado. nÁreaTrabalho especifica um número da Área de trabalho e cAliasTabela especifica um alias de tabela. Se você não especificar uma Área de trabalho ou alias, SYS(2012) retornará o tamanho do bloco do campo Memo da tabela aberta na Área de trabalho selecionada atualmente.

SYS(2012) retornará 0 se uma tabela não estiver aberta na Área de trabalho especificada ou a tabela não tiver um campo Memo.

Comentários

Para obter maiores informações sobre como especificar o tamanho do bloco do campo Memo para uma tabela, consulte “ SET BLOCKSIZE”.

SYS(2013) - Seqüência de nomes do menu do sistema

Retorna uma seqüência de caracteres delimitada por espaço que contém os nomes internos do sistema de menus do Visual FoxPro.

Sintaxe

SYS(2013)

Tipos de retorno: Caractere

Comentários

SYS(2013) facilita a utilização da barra de menus e dos menus de sistema do Visual FoxPro. A seqüência de caracteres retornada contém o nome da barra de menus de sistema, seus títulos de menu e o nome de cada item nos menus.

SYS(2013) retorna os nomes dos títulos de menu e os itens de menu em cada plataforma do FoxPro. Consulte “Nomes do menu de sistema” para uma lista de títulos de menu e itens de menu para uma plataforma específica do FoxPro.

SYS(2014) - Caminho mínimo

Retorna o caminho mínimo relativo ao diretório atual ou especificado para um arquivo especificado.

Sintaxe

SYS(2014, cNomeArquivo [, Caminho])

Tipos de retorno: Caractere

Argumentos

cNomeArquivo Especifica o nome do arquivo para o qual SYS(2014) retorna o caminho mínimo. Se você omitir Caminho, SYS(2014) retornará o caminho mínimo entre o arquivo e o diretório atual. Você pode alterar o diretório atual com SET DEFAULT.

Caminho Especifica um diretório para o qual SYS(2014) retorna o caminho mínimo entre o diretório especificado e o arquivo especificado com cNomeArquivo.

Path Specifies a folder for which SYS(2014) returns the minimum path between the specified folder and the file specified with cFileName.

[Pág.: 437]

Page 438: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

SYS(2014) pode ser utilizada com FULLPATH( ) para tornar os aplicativos portáteis. Isto é, quando fornecidas a localização do programa atual e a localização de outros arquivos utilizados pelo programa, FULLPATH( ) e SYS(2014) alcançam os caminhos apropriados para esses arquivos. Uma vez que os caminhos dos arquivos são determinados, os arquivos podem ser acessados pelo programa.

SYS(2018) - Parâmetro da mensagem de erro

Retorna o parâmetro da mensagem de erro para o erro mais recente.

Sintaxe: SYS(2018)

Tipos de retorno: Caractere

Comentários

Certas mensagens de erro retornam informações adicionais sobre a causa do erro. Por exemplo, se você fizer referência a uma variável que não existe, o nome da variável será incluído na mensagem de erro. SYS(2018) retorna essa informação adicional, denominada parâmetro de mensagem de erro. Os nomes de variáveis e arquivos são tipos comuns de parâmetros de mensagem de erro.

Suponha que você tente executar um programa denominado REPORTS, mas o programa não existe. O texto da mensagem de erro exibida é:

File REPORTS does not exist.

REPORTS é o parâmetro da mensagem de erro e é retornado por SYS(2018):

? SYS(2018)

SYS(2019) - Nome e localização do arquivo de configuração

Retorna o nome e a localização do arquivo de configuração do Visual FoxPro.

Sintaxe

SYS(2019)

Tipos de retorno: Caractere

Comentários

O arquivo de configuração é denominado CONFIG.FPW.

Se um arquivo de configuração não puder ser localizado, SYS(2019) retornará uma seqüência vazia.

O arquivo de configuração do Visual FoxPro é localizado tipicamente no diretório onde o Visual FoxPro é inicializado, mas pode ser localizado em qualquer lugar. O Visual FoxPro primeiro o procura no diretório de inicialização.

Se o arquivo de configuração não for localizado no diretório de inicialização, o caminho do MS-DOS será, em seguida, procurado. Duas opções permitem relatar o Visual FoxPro onde seu arquivo de configuração é localizado e seu nome:

· Você pode criar uma variável ambiental do MS-DOS denominada FOXPROWCFG com o comando MS-DOS SET e pode armazenar a localização e o nome de seu arquivo de configuração em FOXPROCFG. No FoxPro para MS-DOS, a variável ambiental do MS-DOS é denominada FOXPROCFG.

[Pág.: 438]

Page 439: 74039361 Visual FoxPro Comandos e Funcoes

· Quando você inicia o Visual FoxPro, pode também utilizar a chave -C para designar um arquivo de configuração. Inclua a localização e o nome do arquivo de configuração imediatamente após -C.

Para obter informações adicionais sobre o arquivo de configuração do Visual FoxPro, consulte o capítulo 3, “Configurando o Visual FoxPro”, no Guia de instalação e índice principal.

SYS(2020) - Tamanho padrão de disco

Retorna o tamanho total em bytes do disco padrão.

Sintaxe

SYS(2020)

Tipos de retorno: Caractere

Comentários

O disco padrão pode ser especificado com SET DEFAULT.

SYS(2021) - Expressão de índice filtrada

Retorna a expressão de filtragem para um arquivo de índice de entrada única aberto (.IDX) ou expressões de filtragem para marcas em arquivos de índice composto (.CDX).

Sintaxe

SYS(2021, nNúmeroÍndice [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Caractere

Argumentos

nNúmeroÍndice A expressão numérica nNúmeroÍndice especifica a qual expressão de filtragem retornar a partir dos arquivos de índice abertos. SYS(2021) retorna expressões de filtragem a partir de arquivos de índice abertos na seguinte ordem como nNúmeroÍndice aumenta de 1 até o número total de arquivos .IDX de entrada única abertos e marcas de índice composto independente e composto estrutural:

1. Expressões de filtragem de arquivos .IDX de entrada único (se algum estiver aberto) são retornadas primeiro. A ordem na qual os arquivos .IDX de entrada única são incluídos em USE ou SET INDEX determina a ordem na qual as expressões de filtragem são retornadas.2. As expressões de filtragem para cada marca no arquivo .CDX estrutural (se houver algum ) são retornadas em seguida. As expressões de filtragem são retornadas a partir das marcas na ordem em que estas foram criadas no índice estrutural.

3. As expressões de filtragem para cada marca em qualquer dos arquivos .CDX independentes abertos são retornadas por último. As expressões de filtragem são retornadas a partir das marcas na ordem em que estas foram criadas nos índices compostos independentes.

A seqüência vazia é retornada se nNúmeroÍndice for maior que o número total de arquivos .IDX de entrada única abertos e marcas de arquivo .CDX independentes e estruturais.

nÁreaTrabalho Especifica o número da Área de trabalho para uma tabela aberta em outra Área de trabalho.

cAliasTabela Especifica um alias de tabela para uma tabela aberta em outra Área de trabalho. Se uma tabela não tiver o alias especificado, o Visual FoxPro exibirá uma mensagem de erro.

[Pág.: 439]

Page 440: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

Você pode criar índices filtrados no Visual FoxPro. Se incluir a cláusula FOR opcional em INDEX, o arquivo de índice agirá como um filtro na tabela. Somente os registros que correspondem à expressão de filtragem lExpressão na cláusula FOR estão disponíveis para exibição e acesso. As chaves de índice são criadas no arquivo de índice somente para esses registros.

A seqüência vazia será retornada se um índice ou marca de índice for criada sem uma cláusula FOR.

Tanto USE como SET INDEX suportam uma lista de nome de arquivo de índice que permite abrir arquivos de índice para uma tabela. Qualquer combinação de nomes de arquivo .IDX de entrada única, nomes de arquivo .CDX estrutural e nomes de arquivo .CDX independente pode ser incluída na lista de nome de arquivo de índice.

SYS(2021) retorna expressões de filtragem a partir de arquivos de índice abertos na Área de trabalho atual a menos que você inclua uma Área de trabalho específica ou um alias.

SYS(2022) - Tamanho do grupo no disco

Retorna o tamanho do grupo em bytes de um disco especificado.

Sintaxe

SYS(2022 [, cNomeDisco])

Tipos de retorno: Caractere

Argumentos

cNomeDisco Especifica uma letra da unidade de disco (A, B, C, ...) para um disco que não o disco padrão atual.

SYS(2023) - caminho temporário

Retorna o caminho no qual o Visual FoxPro armazena seus arquivos temporários.

Sintaxe

SYS(2023)

Tipos de retorno: Caractere

Comentários

É possível especificar o caminho no qual arquivos temporários são armazenados incluindo o item de configuração TMPFILES especial; em seu arquivo de configuração do Visual FoxPro.

Para obter informações adicionais sobre o item de configuração TMPFILES especial, consulte o capítulo 3, “Configurando o Visual FoxPro”, no Guia de Instalação e Índice Principal.

SYS(2029) - Tipo de tabela

Retorna um valor correspondente ao tipo de tabela.

Sintaxe

SYS(2029 [, nÁreaTrabalho | cAliasTabela])

[Pág.: 440]

Page 441: 74039361 Visual FoxPro Comandos e Funcoes

Tipos de retorno: Caractere

Argumentos

nÁreaTrabalho Especifica a Área de trabalho na qual a tabela é aberta.

cAliasTabela Especifica o alias da tabela. Se você omitir nÁreaTrabalho e cAliasTabela, SYS(2029) retornará um valor para a tabela aberta na Área de trabalho selecionada no momento.

Comentários

A tabela a seguir lista os valores retornados por SYS(2029) e o tipo de tabela correspondente:

Valor de retorno Tipo de tabela

0 Nenhuma tabela aberta3 Versões anteriores de FoxPro, FoxBASE+, dBASE III PLUS e dBASE IV sem campo Memo48 Visual FoxPro com ou sem um campo Memo67 Tabela do dBASE IV SQL sem campo Memo99 Tabela do sistema do dBASE IV SQL com um campo Memo131 Tabela do FoxBASE+ e dBASE III PLUS com um campo Memo139 Tabela do dBASE IV com um campo Memo203 Tabela do dBASE IV SQL com um campo Memo245 Versões anteriores do FoxPro com um campo Memo

SYS(2029) - Exemplo do tipo de tabela

O exemplo a seguir abre a tabela customer no banco de dados testdata.

CLOSE DATABASESOPEN DATABASE (SYS(2004) + 'samples\data\testdata')USE Customer && Abre a tabela customer

CLEARDO CASE

CASE SYS(2029) = '3'? 'Versões anteriores do FoxPro'

CASE SYS(2029) = '48'? 'Tabela do Visual FoxPro'

CASE SYS(2029) = '67'? 'Tabela do dBASE IV SQL, sem campos Memo'

CASE SYS(2029) = '99'? 'Tabela do sistema do dBASE IV SQL com um campo Memo'

CASE SYS(2029) = '131'

? 'Tabela do FoxBASE+ com um campo Memo'CASE SYS(2029) = '139'

? 'Tabela do dBASE IV com um campo Memo'CASE SYS(2029) = '203'

? 'Tabela do dBASE IV SQL com um campo Memo'CASE SYS(2029) = '245'

? 'Versões anteriores do FoxPro com um campo Memo'ENDCASE

SYS(3050) - Definir tamanho do buffer de memória

Define o tamanho do buffer de memória de primeiro plano ou segundo plano.

[Pág.: 441]

Page 442: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

SYS(3050, nTipo, [nTamanhoMemBuff])

Tipos de retorno: Caractere

Argumentos

nTipo Especifica o buffer. A tabela a seguir relaciona os valores de nTipo e o buffer correspondente:

nTipo Buffer

1 Primeiro plano2 Segundo plano

nTamanhoMemBuff Especifica o tamanho máximo do buffer de memória em bytes. Se você especificar um valor para nTamanhoMemBuff menor que 256K bytes, o Visual FoxPro irá definir o tamanho do buffer de memória para 256K bytes.

Especifica 0 para nTamanhoMemBuff para retornar o tamanho do buffer de memória ao valor de inicialização do Visual FoxPro. Este valor depende da quantidade de memória do seu computador. Se você omitir nTamanhoMemBuff, SYS(3050) retornará o tamanho do buffer de memória para o buffer especificado com nTipo.

Comentários

SYS(3050) permite otimizar o desempenho do Visual FoxPro ajustando a quantidade da memória que o Visual FoxPro atribui para os buffers de primeiro plano e de segundo plano. O buffer de memória de primeiro plano é a memória disponível para Visual FoxPro quando operado em primeiro plano como o aplicativo ativo no momento. O buffer de memória de segundo plano é a memória disponível para Visual FoxPro o qual opera no segundo plano quando outro aplicativo é o de primeiro plano.

SYS(3050) retorna um valor numérico como uma seqüência de caracteres que indica a quantidade máxima de memória que o Visual FoxPro atribui para os buffers de primeiro ou de segundo plano.

SYS(3051) - Definir o intervalo de tentativa de bloqueio

Especifica o tempo em milissegundos que o Visual FoxPro espera antes de tentar bloquear um arquivo de índice, memo, tabela ou registro após uma tentativa de bloqueio malsucedida.

Sintaxe

SYS(3051, [nEsperarMilissegundos])

Tipos de retorno: Caractere

Argumentos

nEsperarMilissegundos Especifica o tempo de espera em milissegundos; pode ser um valor de 100 a 1000 milissegundos.

Especifica 0 para nEsperarMilissegundos para retornar o intervalo de tempo da tentativa de bloqueio para o valor de inicialização padrão do Visual FoxPro (333 milissegundos). Se você omitir nEsperarMilissegundos, SYS(3051) retorna o intervalo de tempo da tentativa de bloqueio.

Comentários

SYS(3051) retorna um valor numérico como uma seqüência de caracteres que indica o intervalo de tempo da tentativa de bloqueio.

SYS(3052) - Substituir bloqueio de SET REPROCESS

Especifica se o Visual FoxPro utiliza a definição SET REPROCESS quando tenta bloquear um arquivo de índice ou memo.

[Pág.: 442]

Page 443: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

SYS(3052, nTipoArquivo, [lHonorReprocess])

Tipos de retorno: Caractere

Argumentos

nTipoArquivo Especifica o tipo de arquivo. A tabela a seguir lista os valores de nTipo e o tipo de arquivo correspondente:

nTipoArquivo Tipo de arquivo

1 Índice2 Memo

lHonorReprocess Especifica se o Visual FoxPro utiliza a definição SET REPROCESS para tentativas de bloqueio malsucedidas de arquivos de índice e memo.

Especifica verdadeiro (.T.) para utilizar a definição SET REPROCESS quando o Visual FoxPro tenta bloquear arquivos especificados com nTipoArquivo. Especifica falso (.F.), o padrão, para substituir a definição SET REPROCESS quando do Visual FoxPro tenta bloquear arquivos especificados com nTipoArquivo. Ao definir como falso, o Visual FoxPro espera indefinidamente por bloqueios nos arquivos especificados; esta opção é a mesma de comportamento de bloqueio nas versões anteriores do FoxPro.

Se você omitir lHonorReprocess, SYS(3052) retornará a definição atual para o arquivo especificado com nTipoArquivo.

Comentários

SYS(3052) fornece controle adicional sobre o bloqueio do arquivo no Visual FoxPro. É melhor definir lHonorReprocess como verdadeiro (.T.) a fim de reduzir o risco de contenção de bloqueio do arquivo se seu aplicativo utilizar processamento de transação.SYS(3052) retorna um valor numérico de 0 como uma seqüência de caracteres (correspondendo a falso (.F.)) ou 1 (correspondendo a verdadeiro (.T.)). Se lHonorReprocess é incluído em SYS(3052), o valor retornado será idêntico ao valor lógico especificado para lHonorReprocess. Se você omitir lHonorReprocess, o valor retornado será a definição atual para o tipo de arquivo especificado com nTipoArquivo.

TABLEREVERT( ), função

Ignora as alterações feitas em uma linha, tabela ou cursor que esteja utilizando buffer e restaura os dados de OLDVAL( ) para cursores remotos e os valores atuais do disco para tabelas e cursores locais.

Sintaxe

TABLEREVERT([lTodasLinhas [, cAliasTabela | nÁreaTrabalho]])

Tipos de retorno: Numérico

Argumentos

lTodasLinhas Determina se todas as mudanças feitas na tabela ou no cursor serão ignoradas. Se lTodasLinhas for verdadeiro (.T.), e a utilização do buffer de tabela estiver ativada, as alterações feitas em todos os registros da tabela ou do cursor serão ignoradas. Se lTodasLinhas for falso (.F.) e a utilização do buffer de tabela estiver ativada, somente as alterações feitas no registro atual da tabela ou do cursor serão ignoradas.

Se a utilização do buffer de linha estiver ativada, o valor de lTodasLinhas será ignorado, e as alterações feitas no registro atual da tabela ou do cursor serão ignoradas.

[Pág.: 443]

Page 444: 74039361 Visual FoxPro Comandos e Funcoes

O valor padrão de lTodasLinhas é falso (.F.).

cAliasTabela Especifica o alias da tabela ou do cursor cujas alterações serão ignoradas.

NÁreaTrabalho Especifica a Área de trabalho da tabela ou do cursor cujas alterações serão ignoradas.

Comentários

A função TABLEREVERT( ) retornará o número de registros cujas alterações foram ignoradas.

Observação Em uma rede, os dados presentes atualmente no disco poderão diferir dos dados contidos no disco quando a tabela e o cursor foram criados. Outros usuários da rede podem ter alterado os dados depois que a tabela foi aberta ou depois que o cursor foi criado.

A função TABLEREVERT( ) não pode ignorar as alterações feitas em uma tabela ou cursor onde a utilização do buffer de linha não esteja ativada. Se você emitir TABLEREVERT( ), e a utilização do buffer de linha ou de tabela não estiver ativada, o Visual FoxPro irá gerar uma mensagem de erro. Utilize a função CURSORSETPROP( ) para ativar ou desativar a utilização do buffer de linha ou de tabela.

As alterações serão ignoradas na tabela ou cursor aberto na Área de trabalho selecionada atualmente, se TABLEREVERT( ) for emitida sem os argumentos opcionais cAliasTabela ou nÁreaTrabalho.

A função TABLEREVERT( ) não retorna um ponteiro de registro a sua posição original.

TABLEREVERT( ), exemplo da função

O exemplo abaixo demonstra como a função TABLEREVERT( ) pode ser utilizada para ignorar as alterações feitas a uma tabela com utilização de buffer. MULTILOCKS é definido como ON, um requisito de utilização do buffer de tabela. A tabela customer no banco de dados testdata é aberta e CURSORSETPROP( ) será utilizado para definir o modo de utilização de buffer para utilização de buffer de tabela otimista (5).O valor do campo cust_id é exibido e o campo cust_id é modificado com REPLACE. O novo valor do campo cust_id será então exibido. TABLEREVERT( ) é utilizado para retornar a tabela ao seu estado original (TABLEUPDATE( ) poderia ser emitida para gravar fisicamente alterações). O valor revertido do campo cust_id será, então, exibido.

CLOSE DATABASESSET MULTILOCKS ON && Deve estar ativado para a utilização do buffer de tabelaSET PATH TO (HOME( ) + 'samples\data\') && Define caminho para o banco de dadosOPEN DATABASE testdata && Abre o banco de dados testdataUSE Customer && Abre a tabela customer = CURSORSETPROP('Utilização de buffer', 5, 'customer') && Ativa a utilização do buffer de tabela

CLEAR? 'Valor original de cust_id: '?? cust_id && Exibe o valor atual de cust_idREPLACE cust_id WITH '***' && Altera o conteúdo do campo

? 'Novo valor de cust_id: '?? cust_id && Exibe o novo valor de cust_id= TABLEREVERT(.T.) && Ignora todas as alterações na tabela? 'Valor revertido de cust_id: '?? cust_id && Exibe o valor revertido de cust_id

TABLEUPDATE( ), função

Grava fisicamente as alterações feitas em uma linha, tabela ou cursor que esteja utilizando buffer.

[Pág.: 444]

Page 445: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

TABLEUPDATE([nLinhas [, lForçar]] [, cAliasTabela | nÁreaTrabalho][, cMatrizErro])

Tipos de retorno: LógicoArgumentos

nLinhas Especifica se as alterações feitas na tabela ou no cursor serão gravadas fisicamente.Se nLinhas for 0 e a utilização do buffer de tabela ou de linha estiver ativo, apenas as alterações feitas no registro atual da tabela ou do cursor serão gravadas fisicamente.

Se nLinhas for 1 e a utilização do buffer de tabela estiver ativa, as alterações feitas em todos os registros na tabela ou no cursor serão gravadas fisicamente. Se nLinhas for 1 e a utilização do buffer de linha estiver ativo, apenas as alterações feitas no registro atual da tabela ou do cursor serão gravadas fisicamente.

Se nLinhas for 2 e a utilização do buffer de tabela estiver ativa, as alterações feitas em todos os registros na tabela ou no cursor serão gravadas fisicamente. Se nLinhas for 2 e a utilização do buffer de linha estiver ativo, apenas as alterações feitas no registro atual na tabela ou no cursor serão gravadas fisicamente.

Ao contrário do que acontece com os valores 0 e 1 para nLinha, um erro não ocorre quando uma alteração não pode ser gravada fisicamente e o Visual FoxPro continua a processar qualquer registro restante na tabela ou no cursor. Se cMatrizErro for incluída, uma matriz contendo informações de erro será criada quando ocorrer um erro.

O valor padrão para nLinhas é 0.

lForçar Determina se as alterações feitas na tabela ou no cursor por outro usuário da rede serão sobrescritas. Se lForçar for verdadeiro (.T.), quaisquer alterações feitas na tabela ou no cursor por outro usuário da rede serão sobrescritas.

Se lForçar for falso (.F.), o Visual FoxPro gravará fisicamente as alterações na tabela ou no cursor, começando com o primeiro registro até o fim da tabela ou do cursor. Se um registro modificado por outro usuário da rede for encontrado, o Visual FoxPro irá gerar um erro.

Quando o Visual FoxPro gera o erro , este pode ser gerenciado através da rotina ON ERROR, e esta rotina pode emitir a função TABLEUPDATE( ) com lForçar definido para verdadeiro (.T.) a fim de gravar fisicamente as alterações feitas no registro. Opcionalmente, se uma transação estiver em andamento, a rotina ON ERROR poderá gerenciar o erro e, em seguida, emitir ROLLBACK para reverter a tabela ou o cursor para seu estado original.

O valor padrão para lForçar é falso (.F.).

cAliasTabela Especifica o alias da tabela ou do cursor no qual as alterações são gravadas fisicamente.

nÁreaTrabalho Especifica a Área de trabalho da tabela ou do cursor no qual as alterações são gravadas fisicamente.

cMatrizErro Especifica o nome de uma matriz criada quando nLinhas é 2 e altera um registro que não pode ser gravado fisicamente. A matriz possui uma coluna simples contendo o número dos registros para os quais as alterações não puderam ser gravadas fisicamente.

Comentários

A função TABLEUPDATE( ) retornará verdadeiro (.T.) se as alterações feitas em todos os registros forem gravadas fisicamente; do contrário, TABLEUPDATE( ) retornará falso (.F.). Se você especificar 0 ou 1 nLinha, o ponteiro do registro permanece em um registro onde as alterações não puderam ser gravadas fisicamente e pode emitir AERROR( ) para determinar porque as alterações não puderam ser gravadas.

A função TABLEUPDATE( ) não poderá gravar fisicamente as alterações feitas em uma tabela ou cursor que não tenha a utilização do buffer de linha ou de tabela ativada. Se você emitir TABLEUPDATE( ), e a utilização do buffer de linha não estiver ativada, o Visual FoxPro irá gerar uma mensagem de erro. Entretanto, TABLEUPDATE( ) ainda poderá gravar fisicamente alterações em uma tabela ou cursor que possua regras de validação. Utilize CURSORSETPROP( ) para ativar ou desativar a utilização do buffer de linha ou de tabela.

[Pág.: 445]

Page 446: 74039361 Visual FoxPro Comandos e Funcoes

As alterações são gravadas fisicamente na tabela ou no cursor aberto na Área de trabalho atualmente selecionada se TABLEUPDATE( ) for emitida sem os argumentos opcionais cAliasTabela ou nÁreaTrabalho.

TABLEUPDATE( ), exemplo da função

O exemplo abaixo demonstra como a função TABLEUPDATE( ) pode ser utilizada para gravar alterações fisicamente em uma tabela com utilização de buffer. Uma tabela denominada employees é criada e INSERT - SQL é utilizado para inserir o valor “Smith” no campo cLastName.MULTILOCKS é definido como ON, um requisito de utilização do buffer de tabela. CURSORSETPROP( ) é utilizado para definir o modo de utilização do buffer para utilização do buffer de tabela otimista (5).

O valor original do campo cLastName (Smith) é exibido e então o campo cLastName é modificado com REPLACE. O novo valor do campo cLastName (Jones) será exibido. TABLEUPDATE( ) é utilizado para gravar alterações fisicamente na tabela (a função TABLEREVERT( ) poderia ser emitida ao invés de ignorar as alterações). O valor atualizado do campo cLastName (Jones) é então exibido.

CLOSE DATABASESCREATE TABLE employee (cLastName C(10))SET MULTILOCKS ON && Deve estar ativado para a utilização do buffer de tabela= CURSORSETPROP('Utilização do buffer', 5, 'employee' ) && Ativa a utilização do buffer da tabelaINSERT INTO employee (cLastName) VALUES ('Smith')

CLEAR? 'Valor original de cLastName: '?? cLastName && Exibe o valor atual de cLastName (Smith)

REPLACE cLastName WITH 'Jones'? 'Novo valor de cLastName: '?? cLastName && Exibe o novo valor de cLastName (Jones)

= TABLEUPDATE(.T.) && Grava alterações fisicamente? 'Valor atualizado de cLastName: '?? cLastName && Exibe o valor atual de cLastName (Jones)

TAG( ), função

Retorna um nome de marca a partir de um arquivo de índice composto .CDX de várias entradas aberto ou o nome de um arquivo de índice de entrada única .IDX aberto.

Sintaxe

TAG([NomeArquivoCDX] nNúmeroMarca [, nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Caractere

Argumentos

NomeArquivoCDX Especifica o nome de um arquivo de índice composto .CDX de várias entradas a partir do qual TAG( ) retornará o nome da marca.

NNúmeroMarca Especifica um número correspondente à ordem na qual uma marca foi criada no arquivo de índice composto. Por exemplo, se nNúmeroMarca for 1, TAG( ) retornará o nome da primeira marca criada no arquivo de índice composto. Se nNúmeroMarca for 2, TAG( ) retornará o nome da segunda marca criada, etc. TAG( ) retornará uma seqüência vazia quando nNúmeroMarca exceder o número de nomes de marca.

Se você omitir NomeArquivoCDX, TAG( ) retornará nomes de marcas de arquivo de índice composto e nomes de arquivo de índice de entrada única em uma ordem específica, conforme indicado abaixo.

[Pág.: 446]

Page 447: 74039361 Visual FoxPro Comandos e Funcoes

1. Nomes de arquivos de índice de entrada única são retornados de acordo com sua ordem na cláusula INDEX de USE ou SET INDEX.2. Nomes de marcas do arquivo de índice composto estrutural (caso exista um para a tabela) são retornados.3. Nomes de marcas de outros arquivos de índice composto abertos são retornados na ordem em que as marcas foram criadas nos arquivos de índice composto e na ordem em que os arquivos de índice composto são especificados na cláusula INDEX de USE ou SET INDEX.

nÁreaTrabalho | cAliasTabela Retorna nomes de marcas e nomes de arquivo de índice a partir de arquivos abertos em outra Área de trabalho. nÁreaTrabalho especifica um número de Área de trabalho e cAliasTabela especifica um alias de tabela. Como padrão, nomes de marca e de arquivo de índice são retornados a partir de arquivos que estão na Área de trabalho atual.

Comentários

As marcas são entradas de índice em arquivos de índice composto .CDX de várias entradas criados com INDEX.

Observação Os arquivos de índice composto .CDX de várias entradas e os arquivos de índice de entrada única .IDX podem ser abertos para uma tabela com a cláusula INDEX de USE ou com SET INDEX. Um arquivo de índice composto estrutural .CDX é automaticamente aberto com essa tabela.

TAG( ), exemplo da função

O exemplo abaixo abre a tabela customer no banco de dados testdata. FOR ... ENDFOR é utilizado para criar um loop no qual CDX( ) é utilizado para exibir o nome de cada índice estrutural.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE Customer && Abre a tabela customer

CLEARFOR nCount = 1 TO 254

IF !EMPTY(TAG(nCount)) && Verifica as guias no índice? CDX(nCount) && Exibe os nomes .CDXELSE

EXIT && Finaliza o loop quando não forem encontradas mais nenhuma tabulaçãoENDIF

ENDFOR

TAN( ), função

Esta função trigonométrica retorna a tangente de um ângulo.

Sintaxe

TAN(nExpressão)

Tipos de retorno: Numérico

Argumentos

nExpressão Especifica o ângulo em radianos para o qual TAN( ) retorna a tangente. Para converter um ângulo de graus para radianos, utilize DTOR( ). O número de casas decimais retornadas por TAN( ) pode ser especificado com SET DECIMALS.

TAN( ), exemplo da função

CLEAR? TAN(0) && Exibe 0.00? TAN(PI( )/4) && Exibe 1.00? TAN(PI( )*3/4) && Exibe -1.00

[Pág.: 447]

Page 448: 74039361 Visual FoxPro Comandos e Funcoes

TEXT ... ENDTEXT, comando

Fornece as linhas de texto, os resultados de expressões e funções e o conteúdo das variáveis de memória.

Sintaxe

TEXTLinhasTexto

ENDTEXT

Argumentos

LinhasTexto Especifica o texto enviado para o dispositivo de saída atual. LinhasTexto pode consistir em texto, variáveis de memória, elementos de matriz, expressões, funções ou qualquer combinação desses itens.

Expressões, funções, variáveis de memória e elementos de matriz especificados com LinhasTexto são avaliados apenas se SET TEXTMERGE estiver ativado (ON) e devem estar demarcados por delimitadores especificados por SET TEXTMERGE DELIMITERS. Se SET TEXTMERGE estiver desativado (OFF), expressões, funções, variáveis de memória e elementos de matriz serão fornecidos como literais junto com seus delimitadores.

Por exemplo, a data de hoje será fornecida se SET TEXTMERGE estiver ativado (ON) e uma linha de texto contiver <<DATE( )>>. Se SET TEXTMERGE estiver desativado (OFF), <<DATE( )>> será fornecido literalmente.

Se você colocar comentários em TEXT e ENDTEXT ou após \ ou \\, os comentários também serão fornecidos.

Comentários

Este comando de programação estruturada envia as linhas de texto colocadas entre TEXT e ENDTEXT para a janela principal do Visual FoxPro, uma janela definida pelo usuário, uma impressora, um arquivo de texto ou um arquivo de nível inferior.

TEXT envia as linhas de texto para o dispositivo de saída atual. Esse procedimento prossegue até que uma instrução ENDTEXT seja encontrada ou até que o programa seja encerrado.

Como padrão, a saída de TEXT ... ENDTEXT é enviada para a janela principal do Visual FoxPro ou para a janela ativa. Emita SET CONSOLE OFF para eliminar a saída da janela principal do Visual FoxPro ou da janela ativa. Utilize SET PRINTER para enviar a saída para uma impressora ou para um arquivo de texto.

A saída de TEXT ... ENDTEXT também pode ser enviada para um arquivo de nível inferior criado ou aberto com FCREATE( ) ou FOPEN( ). Se um identificador de arquivo retornado por FCREATE( ) ou FOPEN( ) for armazenado na variável de memória de sistema _TEXT, a saída será direcionada para o arquivo de nível inferior correspondente.

TEXT ... ENDTEXT, exemplo do comando

O exemplo a seguir demonstra como SET TEXTMERGE, SET TEXTMERGE DELIMITERS, TEXT ... ENDTEXT e a variável do sistema _TEXT podem ser utilizados.Um arquivo de nível inferior chamado NAMES.TXT é criado e o identificador de arquivo é armazenado na variável do sistema _TEXT. O programa será finalizado se NAMES.TXT não puder ser criado. A tabela customer é aberta e os nomes dos 10 primeiros contatos são emitidos para NAMES.TXT. O texto e os resultados das funções serão emitidos para o arquivo de texto.

O arquivo de texto que contém os nomes é aberto com MODIFY FILE.

CLEARCLOSE DATABASESSET TALK OFF

[Pág.: 448]

Page 449: 74039361 Visual FoxPro Comandos e Funcoes

SET TEXTMERGE ON && Ativa a incorporação de expressões e funçõesSTORE FCREATE('names.txt') TO _TEXT && Cria um arquivo de nível inferiorIF _TEXT = -1 && Não pode criar uma arquivo de nível inferior então saia do programa

WAIT WINDOW 'Não pode criar um arquivo de saída, pressione uma tecla para sair'CANCEL

ENDIF

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela Customer

TEXTCONTACT NAMES

<<DATE( )>> <<TIME( )>>ENDTEXTWAIT WINDOW 'Pressione uma tecla para gerar os dez primeiros nomes'SCAN NEXT 10

TEXT<<contact>>

ENDTEXTENDSCANCLOSE ALL && Fecha o arquivo e a tabela de textoMODIFY FILE names.txtERASE names.txt

TIME( ), função

Retorna ao horário do sistema atual de 24 horas um formato de seqüência de 8 caracteres (hh:mm:ss).

Sintaxe

TIME([nExpressão])

Tipos de retorno: Caractere

Argumentos

nExpressão O horário retornado inclui centésimos de um segundo se nExpressão for incluída. A expressão numérica nExpressão pode assumir qualquer valor. Entretanto, a resolução máxima atual é cerca de 1/18 segundos. Utilize SECONDS( ) para obter uma resolução maior.

TOTAL, comando

Calcula os totais dos campos numéricos na tabela selecionada atualmente.

Sintaxe

TOTAL TO NomeTabela ON NomeCampo

[FIELDS ListaNomesCampos][Escopo][FOR lExpressão1][WHILE lExpressão2][NOOPTIMIZE]

Argumentos

NomeTabela Especifica o nome da tabela que conterá os totais. Se a tabela especificada não existir, o Visual FoxPro irá criá-la. Se a tabela existir e SET SAFETY estiver ativada, o Visual FoxPro irá perguntar se você deseja sobrescrevê-la. Se SET SAFETY estiver desativada, não será feita nenhuma pergunta e a tabela de saída será sobrescrita.

[Pág.: 449]

Page 450: 74039361 Visual FoxPro Comandos e Funcoes

NomeCampo Especifica o campo no qual os totais são agrupados. A tabela deve ser classificada de acordo com esse campo, ou uma marca de índice ou índice aberto deve ter esse campo como sua expressão-chave.

FIELDS ListaNomesCampos Especifica os campos a serem totalizados. Separe os nomes dos campos na lista por vírgulas. Se você omitir a cláusula FIELDS, todos os campos numéricos serão totalizados como padrão.

Escopo Especifica uma faixa de registros a serem totalizados. As cláusulas do escopo são as seguintes: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

O escopo padrão para TOTAL é ALL, ou seja, todos os registros.

FOR lExpressão1 Especifica uma condição pela qual apenas os registros que satisfazem à condição lógica lExpressão1 são incluídos nos totais.

Rushmore otimiza uma consulta criada com TOTAL ... FOR se lExpressão1 for uma expressão otimizável. Para obter um melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter maiores informações, consulte ” SET OPTIMIZE” e “Compreendendo a tecnologia Rushmore” no capítulo 15, “Otimizando aplicativos” no Guia do Desenvolvedor.

WHILE lExpressão2 Especifica uma condição pela qual os registros da tabela atual são incluídos nos totais enquanto a expressão lógica lExpressão2 resulta em verdadeiro (.T.).

NOOPTIMIZE Desativa a otimização Rushmore de TOTAL.

Para obter maiores informações, consulte ” SET OPTIMIZE” e “Compreendendo a tecnologia Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

Comentários

A tabela na Área de trabalho selecionada atualmente deve ser classificada ou indexada. Um total separado é calculado para cada conjunto de registros com um valor de campo comum ou valor-chave de índice único. Os resultados são colocados em registros em uma segunda tabela. Um registro é criado na segunda tabela para cada valor de campo comum ou valor-chave de índice único.

Um estouro de capacidade numérica pode ocorrer se os campos numéricos na segunda tabela não forem grandes o suficiente para conter os totais. O Visual FoxPro conserva as partes mais significativas dos totais quando ocorre um estouro de capacidade numérica. Quando um campo é pequeno demais para aceitar um total:

· As casas decimais são cortadas e a parte decimal restante do total é arredondada.· Se o total ainda não couber, será utilizada a notação cientifica se o campo do total tiver sete ou mais

dígitos.· Finalmente, os asteriscos substituem o conteúdo do campo.

TRANSFORM( ), função

Retorna uma seqüência de caracteres a partir de uma expressão em um formato determinado pelo código do formato.

Sintaxe

TRANSFORM(eExpressão, cCódigosFormato)

Tipos de retorno: Caractere

Argumentos

eExpressão Especifica o caractere, moeda, data ou expressão numérica a ser formatada.

[Pág.: 450]

Page 451: 74039361 Visual FoxPro Comandos e Funcoes

cCódigosFormato Especifica um ou mais códigos de formatos que determinam como a expressão é formatada. A tabela a seguir traz uma lista dos códigos de formato disponíveis.

Códigos de formato Descrição

@C CR é incluído para valores monetários positivos ou valores numéricos para indicar um crédito.@D Valores de data e data e hora são convertidos para o formato SET DATE atual.@E Valores de data e data e hora são convertidos para o formato de data BRITISH.@T Espaços à direita e à esquerda são removidos dos valores de caracteres.@X DB é incluído para valores monetários negativos ou valores numéricos para indicar um débito.@Z Se for 0, os valores numéricos ou monetários serão convertidos em espaços.@( Coloca valores numéricos ou monetários negativos em parênteses.@^ Converte valores numéricos ou monetários em notação cientifica.@0 Converte valores numéricos ou monetários em seus equivalentes hexadecimais. O valor numérico ou monetário deverá ser positivo e menor que 4,294,967,296.! Transforma dados de caracteres em letras maiúsculas.$ Adiciona o símbolo atual de moeda especificado por SET CURRENCY aos valores numéricos ou monetários. Pelo padrão, o símbolo é colocado imediatamente antes ou depois do valor. Entretanto, o símbolo de moeda e sua posição (especificada em SET CURRENCY), o caractere separador (especificado em SET SEPARATOR) e o caractere decimal (especificado em SET POINT) podem ser alterados.X Especifica a largura dos valores dos caracteres. Por exemplo, se cCódigosFormato for ‘XX’, 2 caracteres serão retornados.Y Converte valores lógicos verdadeiros (.T.) e falsos (.F.) em Y e N, respectivamente.! Converte caracteres em letras minúsculas para letras maiúsculas.. Especifica a posição do ponto decimal nos valores numéricos ou monetários., Separa dígitos para a esquerda do ponto decimal nos valores decimais ou monetários.

TRANSFORM( ), exemplo da função

STORE 12.34 TO gnPriceCLEAR? TRANSFORM(gnPrice, '$$$$.99') && Exibe $12.34

TRIM( ), função

Retorna a expressão de caracteres especificada com todos espaços à direita removidos.

Sintaxe

TRIM(cExpressão)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão de caracteres a partir da qual TRIM( ) remove todos os espaços à direita.

Comentários

TRIM( ) é idêntica à RTRIM( ).

TRIM( ), exemplo da função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerCLEAR? 'O contato para '+ TRIM(company) + ' é ' + contact

[Pág.: 451]

Page 452: 74039361 Visual FoxPro Comandos e Funcoes

TTOC( ), função

Converte a expressão de data e hora para um valor de caractere de um formato especificado.

Sintaxe

TTOC(tExpressão [, 1 | 2])

Tipos de retorno: Caractere

Argumentos

tExpressão Especifica uma expressão de data e hora a partir da qual TTOC( ) retorna um valor de caractere. Se tExpressão contiver apenas uma hora, o Visual FoxPro adicionará a data padrão 30/12/1899 a tExpressão. Se tExpressão contiver apenas uma data, o Visual FoxPro adicionará a hora padrão de meia-noite (12:00:00 A.M.) a tExpressão.

1 Especifica que TTOC( ) retorna uma seqüência de caracteres em um formato apropriado para indexação. A seqüência de caracteres possui o formato de 14 caracteres aaaa:mm:dd:hh:mm:ss, que não é afetado pelas definições atuais de SET CENTURY ou SET SECONDS.

2 Especifica que TTOC( ) retorna uma seqüência de caracteres consistindo de apenas uma parte da expressão de data e hora. As definições de SET SECONDS e SET DATE especificam se os segundos, na expressão de hora, serão incluídos na seqüência de caracteres. Observe que se SET DATE estiver definido como LONG (longo) ou SHORT (curto), o formato da seqüência de caracteres será determinado pelo formato da definição de hora do Painel de controle.

TTOC( ), exemplo da função

O exemplo a seguir cria uma variável do tipo DataHora denominada gtDtime. TYPE( ) exibe T, indicando que a variável é do tipo DataHora. TTOC( ) é utilizado para converter a variável em uma do tipo caractere e TYPE( ) agora exibirá C, indicando que a variável é do tipo caractere após a conversão.

STORE DATETIME( ) TO gtDtime && Cria uma variável de memória do tipo DataHoraCLEAR? "gtDtime é digitada: " ?? TYPE('gtDtime') && Exibe T, valor do tipo DataHora

gtDtime = TTOC(gtDtime) && Converte gtDtime para um valor de caractere? "gtDtime será digitada agora: " ?? TYPE('gtDtime') && Exibe C, valor do tipo de caractere

TTOD( ), função

Retorna um valor de Data a partir de uma expressão de data e hora.

Sintaxe

TTOD(tExpressão)

Tipos de retorno: Data

Argumentos

tExpressão Especifica uma expressão de data e hora a partir da qual TTOD( ) retorna um valor de data. tExpressão deve resultar em uma expressão de data e hora válida. Se tExpressão contiver apenas uma hora, o Visual FoxPro adicionará a data padrão de 30/12/1899 ao argumento tExpressão e retornará essa data padrão.

[Pág.: 452]

Page 453: 74039361 Visual FoxPro Comandos e Funcoes

TTOD( ), exemplo da função

O exemplo a seguir cria uma variável do tipo DataHora denominada gtDtime. TYPE( ) exibe T, indicando que a variável é do tipo DataHora. TTOD( ) é utilizado para converter a variável em uma do tipo data e TYPE( ) agora exibirá D, indicando que a variável é do tipo data após a conversão.

STORE DATETIME( ) TO gtDtime && Cria uma variável de memória do tipo DataHoraCLEAR? "gtDtime é digitada: " ?? TYPE('gtDtime') && Exibe T, valor do tipo DataHora

gtDtime = TTOD(gtDtime) && Converte gtDtime em um valor de data? "gtDtime será digitado agora: " ?? TYPE('gtDtime') && Exibe D, valor do tipo caractere

TXTWIDTH( ), função

Retorna o comprimento de uma expressão de caracteres em relação à largura de caractere média de uma fonte.

Sintaxe

TXTWIDTH(cExpressão [, cNomeFonte, nTamanhoFonte [, cEstiloFonte]])

Tipos de retorno: Numérico

Argumentos

cExpressão Especifica uma expressão de caracteres para a qual TXTWIDTH( ) retorna o comprimento. Se você incluir apenas cExpressão, o comprimento da expressão de caracteres é retornado para a fonte atual da janela principal do Visual FoxPro ou da janela de saída ativa. Uma fonte não proporcional sempre retorna um valor igual ao número de caracteres em cExpressão.

Inclui os argumentos opcionais cNomeFonte, nTamanhoFonte e cEstiloFonte para determinar o comprimento de uma expressão de caracteres com uma fonte específica, um tamanho de fonte em pontos ou um estilo de fonte.

cNomeFonte Especifica o nome da fonte. Inclui cNomeFonte para retornar o comprimento de uma expressão de caracteres com uma fonte específica.

nTamanhoFonte Especifica um número que corresponde ao tamanho da fonte em pontos. Inclui nTamanhoFonte para retornar o comprimento de uma expressão de caracteres com um tamanho em pontos específico.

cEstiloFonte Especifica um estilo especial de fonte para a expressão de caracteres. cEstiloFonte é um código de estilo de fonte especificado por um caractere ou conjunto de caracteres. O estilo normal da fonte será utilizado se cEstiloFonte não for incluído.

A seguir, é apresentada uma tabela com os caracteres para cada estilo de fonte:

Caractere Estilo da fonte

B NegritoI ItálicoN NormalO ContornoQ OpacoS Sombreado- RiscadoT TransparenteU Sublinhado

[Pág.: 453]

Page 454: 74039361 Visual FoxPro Comandos e Funcoes

Você pode incluir mais de um caractere para especificar uma combinação de estilos de fontes. Por exemplo, BI especifica um estilo de fonte Negrito e Itálico.O comando a seguir exibe uma mensagem em fonte Courier normal de 24 pontos, centralizada horizontalmente na janela principal do Visual FoxPro:

@ 25,(WCOLS( )-TXTWIDTH('Olá!','Courier ',24)* ;FONTMETRIC(6,'Courier ',24)/FONTMETRIC(6))/2 ;SAY 'Olá!' FONT 'Courier ',24

Comentários

TXTWIDTH( ) retorna o número de caracteres ocupado por uma expressão de caracteres cExpressão, com base na largura média de caractere de uma fonte especificada (a largura média de caractere de uma fonte é denominada foxel). Utilize FONTMETRIC(6) para determinar a largura média de caractere de uma fonte.

Se você não incluir uma fonte em TXTWIDTH( ), o valor retornado por TXTWIDTH( ) será determinado pela fonte atual da janela principal do Visual FoxPro, uma vez que a saída é direcionada para a janela principal do Visual FoxPro quando TXTWIDTH( ) é emitida. Se a saída estiver sendo direcionada para uma janela definida pelo usuário, o valor retornado é determinado pela fonte atual da janela.

TYPE( ), função

Avalia uma expressão e retorna o tipo de dados do seu conteúdo.

Sintaxe

TYPE(cExpressão)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica a expressão a ser avaliada, que pode ser uma variável, um campo, um campo Memo ou qualquer outra expressão. A expressão deverá ser passada como uma seqüência de caracteres, com aspas nos nomes de variáveis de memória, campos e assim por diante. Se não forem colocadas aspas na expressão, a função TYPE( ) retornará “U” (expressão indefinida).

Comentários

A tabela a seguir lista os valores de caracteres que TYPE( ) retorna e seus correspondentes tipos de dados:

Tipo de dados Caractere retornado

Caractere CNumérico (também flutuante, duplo e inteiro) NMoeda YData DData e hora TLógicoLMemo MObjeto OGeral GTipo indefinido de expressão U

TYPE( ), exemplo da função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomernTest = 1.01cTest = "Seqüência"

[Pág.: 454]

Page 455: 74039361 Visual FoxPro Comandos e Funcoes

CLEAR? TYPE('customer.contact') && Exibe C? TYPE('(12 * 3) + 4') && Exibe N? TYPE('DATE( )') && Exibe D? TYPE('.F. OR .T.') && Exibe L? TYPE('ANSWER=42') && Exibe U? TYPE('$19.99') && Exibe Y? TYPE('nTest') && Exibe N? TYPE('cTest') && Exibe C

TYPE, comando

Exibe o conteúdo de um arquivo.

Sintaxe

TYPE NomeArquivo1[AUTO][WRAP][TO PRINTER [PROMPT] | TO FILE NomeArquivo2][NUMBER]

Argumentos

NomeArquivo1 Especifica o nome do arquivo a ser exibido. O nome deve incluir uma extensão de arquivo.

AUTO Ativa o recuo automático. Quando você inclui WRAP, TYPE recua, automaticamente, textos com quebras de linha de cada parágrafo com o mesmo valor de recuo da primeira linha do parágrafo. Por exemplo:

· Linhas quebradas são alinhadas com a tabulação quando um parágrafo inicia com uma tabulação.· Linhas quebradas são alinhadas com a tabulação quando um parágrafo inicia com um número (ou outro texto) seguido de uma tabulação e texto.· Linhas quebradas são recuadas com o mesmo valor de recuo da primeira linha quando a primeira linha de um parágrafo é recuada com espaços.

WRAP Ativa a quebra de texto de modo que uma palavra muito grande para caber no final de uma linha seja automaticamente movida para a próxima linha.

TO PRINTER [PROMPT] Direciona a saída para a impressora.

Você pode incluir a cláusula PROMPT opcional para exibir uma caixa de diálogo de impressão antes de a impressão ser iniciada. Coloque a palavra-chave PROMPT logo após TO PRINTER.

TO FILE NomeArquivo2 Direciona a saída para o arquivo especificado com NomeArquivo2.

NUMBER Coloca os números das linhas no início de cada linha na saída.

Comentários

TYPE exibe o conteúdo dos arquivos. Essa exibição pode ser direcionada para a janela principal do Visual FoxPro, uma janela ativa definida pelo usuário, para uma impressora ou por outro arquivo.

Quando SET HEADINGS está ON, o Visual FoxPro insere uma alimentação de linha, o caminho e o nome do arquivo, bem como a data no início da saída produzida com TYPE. Se SET HEADINGS estiver OFF, essas informações não serão incluídas.

No FoxPro para MS-DOS, se a configuração do driver de uma impressora for carregada e você direcionar a saída de TYPE para um arquivo ou uma impressora, TYPE exibirá o conteúdo do arquivo utilizando as definições da configuração do driver de impressora.

[Pág.: 455]

Page 456: 74039361 Visual FoxPro Comandos e Funcoes

UNLOCK, comando

Libera um bloqueio de registro, bloqueios de múltiplos registros ou um bloqueio de arquivo de uma tabela, ou libera todos os bloqueios de registros e arquivos de todas as tabelas abertas.

Sintaxe

UNLOCK [RECORD nNúmeroRegistro][IN nÁreaTrabalho | cAliasTabela][ALL]

Argumentos

RECORD nNúmeroRegistro Libera o bloqueio do registro em um registro de número nNúmeroRegistro. Você pode especificar 0 para nNúmeroRegistro para desbloquear o cabeçalho de tabela com LOCK(0) ou RLOCK(0).

A emissão de UNLOCK RECORD nNúmeroRegistro para um registro em uma tabela com um bloqueio de arquivo libera o bloqueio.

IN nÁreaTrabalho | cAliasTabela Libera um bloqueio (ou bloqueios) de registro ou um bloqueio de arquivo de uma tabela em uma determinada Área de trabalho. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela especifica o alias da tabela. Se você não incluir nÁreaTrabalho ou cAliasTabela, UNLOCK irá liberar um bloqueio (ou bloqueios) de registro ou um bloqueio de arquivo da tabela na Área de trabalho selecionada no momento.

ALL Libera todos os bloqueios de registros e de arquivos em todas as áreas de trabalho.

Para obter maiores informações sobre o bloqueio de registros e de arquivos e o compartilhamento de tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado,” no Guia do Desenvolvedor.

Comentários

Os bloqueios de registros e de arquivos só podem ser removidos de uma tabela pelo usuário que os executou. UNLOCK não consegue desbloquear uma tabela aberta para uso exclusivo.

Um bloqueio (ou bloqueios) de registro ou um bloqueio de arquivo será liberado de uma tabela na Área de trabalho atual se você emitir UNLOCK sem argumentos adicionais.

Caso tenham sido estabelecidas relações entre tabelas, a liberação de um bloqueio (ou bloqueios) de registro ou de um bloqueio de arquivo de uma das tabelas não desbloqueará os registros ou arquivos relacionados. É preciso liberar os bloqueios de registros ou de arquivos explicitamente em cada arquivo relacionado. Você pode liberar todos os bloqueios em quaisquer tabelas relacionadas emitindo UNLOCK ALL (isso também libera bloqueios em arquivos não-relacionados).

UNLOCK, exemplo do comando

CLOSE DATABASESSET REPROCESS TO 3 AUTOMATICSTORE '1,2,3,4' TO gcRecList && Bloqueia registros de 1 até 4gcOldExc = SET('EXCLUSIVE') && Salva a definição EXCLUSIVESET EXCLUSIVE OFF && Permite o compartilhamento das tabelas

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerSELECT 0USE employee && Abre a tabela Employee

? LOCK('1,2,3,4', 'customer') && Bloqueia os quatro primeiros registros em Customer? RLOCK(gcRecList, 'employee') && Bloqueia os quatro primeiros registros em Employee

UNLOCK IN customerUNLOCK IN employeeSET EXCLUSIVE &gcOldExc && Restaura a definição original EXCLUSIVE

[Pág.: 456]

Page 457: 74039361 Visual FoxPro Comandos e Funcoes

UPPER( ), função

Retorna a expressão de caracteres especificada em maiúscula.

Sintaxe

UPPER(cExpressão)

Tipos de retorno: Caractere

Argumentos

cExpressão Especifica que expressão de caracteres UPPER( ) converte em maiúscula.

Comentários

Cada letra minúscula (a – z) na expressão de caracteres é convertida em maiúscula (A – Z) na seqüência retornada. Todos os outros caracteres permanecem inalterados.

UPPER( ), exemplo da função

CLEAR? UPPER('abcdefgh') && Exibe ABCDEFGH

USE, comando

Abre uma tabela e seus arquivos de índice associados, ou uma visualização SQL.

Sintaxe

USE [[NomeBancoDados.]Tabela | NomeVisualizaçãoSQL | ?][IN nÁreaTrabalho | cAliasTabela][ONLINE][ADMIN][AGAIN][NOREQUERY [nNúmeroSessãoDados]][NODATA][INDEX ListaArquivosNÍndice | ?[ORDER [nNúmeroNÍndice | NomeArquivoIDX| [TAG] NomeMarca [OF NomeArquivoCDX]

[ASCENDING | DESCENDING]]]][ALIAS cAliasTabela][EXCLUSIVE][SHARED][NOUPDATE]

Argumentos

[NomeBancoDados.]NomeTabela Especifica o nome da tabela a ser aberta. Como os espaços são significativos nos nomes de arquivos do Windows 95, Windows NT e no Macintosh, evite utilizar espaços desnecessários em NomeTabela.

Para abrir uma tabela que não está no banco de dados atual, qualifique o nome da tabela com o nome do banco de dados, utilizando um ponto (.) para separar os nomes das tabelas e do banco de dados. Se você não qualificar uma tabela com um nome de banco de dados, o Visual FoxPro poderá abrir tabelas apenas no banco de dados atual.

NomeVisualizaçãoSQL Especifica o nome de uma visualização SQL a ser aberta no banco de dados atual. Uma visualização SQL é criada com CREATE SQL VIEW. NomeVisualizaçãoSQL também pode ser o nome de uma visualização off-line criada com CREATEOFFLINE( ).

[Pág.: 457]

Page 458: 74039361 Visual FoxPro Comandos e Funcoes

? Exibe a caixa de diálogo Usar, na qual você pode escolher uma tabela a ser aberta.

IN nÁreaTrabalho Especifica a Área de trabalho na qual a tabela é aberta. Você pode fechar uma tabela em uma Área de trabalho específica emitindo USE com a cláusula IN e o número da Área de trabalho.

A cláusula IN suporta 0 como uma Área de trabalho. Ao incluir 0, é aberta uma tabela na Área de trabalho disponível de menor número. Por exemplo, se houver tabelas abertas nas áreas de trabalho de 1 a 10, o seguinte comando abrirá a tabela customer na Área de trabalho 11:

USE customer IN 0

IN cAliasTabela Especifica que uma tabela será aberta na Área de trabalho de uma tabela que está aberta atualmente. O alias da tabela aberta é especificado com cAliasTabela.

Se você omitir nÁreaTrabalho e cAliasTabela, a tabela será aberta na Área de trabalho selecionada atualmente.

ONLINE Abre uma visualização off-line com CREATEOFFLINE( ).Especifica o nome da visualização off-line em NomeVisualizaçãoSQL. Utilize TABLEUPDATE( ) para atualizar os dados no servidor.

A visualização off-line deve ser aberta de forma exclusiva. Inclua a cláusula EXCLUSIVE em USE ou SET EXCLUSIVE para ON antes de abrir a visualização off-line com USE.

ADMIN Abre uma visualização off-line criada com CREATEOFFLINE( ), mas não atualiza os dados no servidor com as alterações feitas na visualização off-line. Ao abrir uma visualização off-line com a palavra-chave ADMIN permite fazer alterações na visualização off-line sem atualizar os dados no servidor.

AGAIN Para abrir uma tabela simultaneamente em diversas áreas de trabalho, você pode adotar um dos procedimentos a seguir:

· Selecione outra Área de trabalho e emita USE com o nome da tabela e a cláusula AGAIN.· Emita USE com o nome da tabela e com a cláusula AGAIN, e especifique uma Área de trabalho

diferente com a cláusula IN.

Quando você abre uma tabela novamente em outra Área de trabalho, a tabela na nova Área de trabalho assume os atributos da tabela da Área de trabalho original. Por exemplo, se uma tabela for aberta com acesso exclusivo ou somente para leitura e for aberta novamente em outra Área de trabalho, ela será aberta com acesso exclusivo ou somente para leitura na nova Área de trabalho.

Arquivos de índice abertos para a tabela original estarão disponíveis para a tabela que você abrir novamente se você não abrir índices ao abrir a tabela. A ordem do índice está definida com 0 nas áreas de trabalho em que a tabela é aberta novamente.

Você pode abrir índices que não foram abertos na tabela original. Isto define a ordem do índice como 0 para a tabela original.

A tabela aberta novamente utiliza o alias padrão da Área de trabalho. Você pode incluir um alias sempre que abrir uma tabela em diversas áreas de trabalho, desde que os aliases sejam exclusivos.

No Visual FoxPro, no FoxPro para Windows, a abertura de uma tabela novamente em outra Área de trabalho não utiliza um identificador de arquivo adicional.

NOREQUERY [nNúmeroSessãoDados] Especifica que os dados de uma visualização SQL remota não são transferidos novamente. NOREQUERY está disponível somente para visualizações SQL e é utilizado normalmente quando você abre uma visualização SQL novamente incluindo a cláusula AGAIN. A inclusão da cláusula NOREQUERY aumenta o desempenho de grandes conjuntos de dados, pois os dados não precisam ser transferidos novamente.

nNúmeroSessãoDados pode ser incluído para especificar que os dados de uma visualização SQL remota em uma sessão de dados específica não são descarregados novamente. Se nNúmeroSessãoDados for omitido, os dados não serão descarregados para a visualização aberta na sessão de dados atual.

[Pág.: 458]

Page 459: 74039361 Visual FoxPro Comandos e Funcoes

Para obter informações adicionais sobre a cláusula NOREQUERY, consulte o capítulo 8, “Criando visualizações”, no Guia do Desenvolvedor.

NODATA Especifica que só a estrutura da visualização SQL é descarregada. Os dados da visualização SQL não são descarregados. NODATA é o método mais rápido para determinar a estrutura de uma visualização SQL.

Para obter informações adicionais sobre a cláusula NODATA, consulte o capítulo 8, “Criando visualizações”, no Guia do Desenvolvedor.

INDEX ListaArquivosNÍndice Especifica um conjunto de índices a ser aberto com a tabela. Se uma tabela tiver um arquivo de índice composto estrutural, o arquivo de índice será automaticamente aberto com a tabela.

ListaArquivosNÍndice pode conter qualquer combinação de nomes de entrada única .IDX e arquivos de índice compostos .CDX. Não é preciso incluir extensões de nomes de arquivo para arquivos de índice, a não ser que um arquivo .IDX e um arquivo de índice .CDX na lista de arquivos de índice tenham o mesmo nome.

O primeiro arquivo de índice definido na lista de arquivos de índice é o arquivo de índice de controle mestre, que controla como os registros da tabela são acessados e exibidos. Contudo, se o primeiro arquivo de índice for um arquivo de índice composto .CDX, os registros da tabela serão exibidos e acessados na ordem física dos registros.

INDEX ? Exibe a caixa de diálogo Abrir com uma lista de arquivos de índice disponíveis para escolha.

ORDER [nNúmeroNÍndice] Especifica um arquivo de índice mestre de entrada única .IDX de controle ou uma marca de arquivo de índice composto .CDX diferente do primeiro arquivo ou marca de índice especificados em ListaArquivosNÍndice.

Os arquivos de índice .IDX são numerados primeiro, na ordem em que aparecem na lista de arquivos de índice. As marcas no arquivo de índice composto estrutural (se houver) são, então, numeradas na ordem em que foram criadas. Por fim, as marcas em qualquer arquivo de índice composto independente também são numeradas nesta ordem. SET ORDER pode ser utilizado também para especificar o arquivo ou marca de índice de controle. Consulte ” SET ORDER” para obter maiores explicações sobre a numeração de arquivos e marcas de índice.

Se nNúmeroNÍndice for 0, os registros na tabela serão exibidos e acessados na ordem física dos registros e os índices permanecerão abertos. A inclusão de ORDER 0 permite que arquivos de índice abertos sejam atualizados durante a apresentação do arquivo pela ordem do número do registro. A inclusão de ORDER sem nNúmeroNÍndice é idêntica à inclusão de ORDER 0.

ORDER [NomeArquivoIDX] Especifica um arquivo de índice de entrada única .IDX como o arquivo de índice de controle mestre.

ORDER [TAG NomeMarca] [OF NomeArquivoCDX] Especifica uma marca de controle mestre em um arquivo de índice composto .CDX.O nome da marca pode ser de um arquivo de índice composto estrutural ou qualquer arquivo de índice composto aberto. Se nomes de marcas idênticos existirem em arquivos de índice composto abertos, inclua OF NomeArquivoCDX e especifique o nome do arquivo de índice composto que contém a marca desejada.

ASCENDING Especifica que os registros da tabela são acessados e exibidos em ordem ascendente.

DESCENDING Especifica que os registros da tabela são acessados e exibidos em ordem descendente.

A inclusão de ASCENDING ou DESCENDING não altera o arquivo ou marca de índice; altera somente a ordem em que os registros são exibidos e acessados.

ALIAS cAliasTabela Cria um alias para a tabela. Você pode se referir a uma tabela pelo seu alias em comandos ou funções que exijam ou suportem um alias.

[Pág.: 459]

Page 460: 74039361 Visual FoxPro Comandos e Funcoes

Quando uma tabela é aberta, recebe automaticamente um alias, que será o nome da tabela se ALIAS não for incluído. Você pode criar um alias diferente para a tabela incluindo ALIAS e um novo alias. No Visual FoxPro, um alias pode conter até 254 letras, dígitos ou caracteres de sublinhado e precisa começar com uma letra ou um caractere de sublinhado. Em outras versões do FoxPro, um alias pode conter até 10 letras, dígitos ou caracteres de sublinhado e precisa começar com uma letra ou caractere de sublinhado.

Um alias padrão será automaticamente atribuído à tabela se você utilizar AGAIN para abrir uma tabela única simultaneamente em diversas áreas de trabalho e não especificar um alias ao abrir a tabela em cada Área de trabalho.

Um alias padrão também será atribuído se ocorrer um conflito. Por exemplo:

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')ACTIVATE WINDOW View && Abre a janela Sessão de dadosUSE customer ALIAS orders IN 1 && Alias é ORDERSUSE orders IN 3 && Conflito; alias é C

EXCLUSIVE Abre uma tabela para uso exclusivo em uma rede. Para obter maiores informações sobre o uso exclusivo de tabelas, consulte ” SET EXCLUSIVE”.

SHARED Abre uma tabela para uso compartilhado em uma rede. SHARED permite que você abra uma tabela para uso compartilhado mesmo quando EXCLUSIVE está ativado.

NOUPDATE Impede que sejam feitas alterações na tabela e em sua estrutura.

Comentários

Se USE for emitido sem um nome de tabela e um arquivo de tabela estiver aberto na Área de trabalho selecionada no momento, a tabela será fechada. Além disso, uma tabela é fechada quando outra tabela é aberta na mesma Área de trabalho. Não é possível ter mais de uma tabela aberta em uma Área de trabalho ao mesmo tempo.

USE, exemplo do comando

O exemplo a seguir abre três tabelas em três áreas de trabalho diferentes. A janela Sessão de dados é aberta para mostrar onde as tabelas são abertas e para mostrar o alias para cada tabela.

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')ACTIVATE WINDOW View

USE customer IN 0 && Abre a tabela CustomerUSE employee IN 0 && Abre a tabela EmployeeUSE products IN 0 && Abre a tabela Products

USED( ), função

Determina se uma tabela é aberta em uma Área de trabalho especificada.

Sintaxe

USED([nÁreaTrabalho | cAliasTabela])

Tipos de retorno: Lógico

Argumentos

nÁreaTrabalho | cAliasTabela Especifica a Área de trabalho da tabela. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela especifica o alias da tabela. Se você não incluir nÁreaTrabalho ou cAliasTabela, será verificado se existe uma tabela aberta na Área de trabalho selecionada no momento.

Caso você inclua um alias de tabela, USED( ) retornará verdadeiro se uma tabela com o alias especificado estiver aberta em uma das áreas de trabalho.

[Pág.: 460]

Page 461: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

Se uma tabela estiver aberta em uma determinada Área de trabalho, USED( ) retornará verdadeiro (.T.); caso contrário, USED( ) retornará falso (.F.).

USED( ), exemplo da função

CLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')SELECT AUSE customer && Abre a tabela CustomerSELECT BUSE orders && Abre a tabela OrdersSELECT CUSE employee && Abre a tabela Employee? USED('A') && Exibe .T.? USED('B') && Exibe .T.? USED(4) && Exibe .F.

VAL( ), função

Retorna um valor numérico de uma expressão de caracteres composta de números.

Sintaxe

VAL(cExpressão)

Tipos de retorno: Numérico

Argumentos

cExpressão Especifica uma expressão de caracteres composta de no máximo 16 números. O arredondamento ocorre se mais que 16 números forem incluídos em cExpressão.

Comentários

VAL( ) retorna os números na expressão de caracteres, da esquerda para a direita, até que um caractere não-numérico seja encontrado (os brancos à esquerda são ignorados). VAL( ) retornará 0 se o primeiro caractere da expressão de caracteres não for um número, um sinal de mais (+) ou um sinal de menos (-).

VAL( ) pode ser utilizada para converter as seqüências de caracteres retornadas pelas funções SYS( ) do Visual FoxPro para valores numéricos.

VAL( ), exemplo da função

CLEARSTORE '12' TO ASTORE '13' TO B? VAL(A) + VAL(B) && Exibe 25.00STORE '1.25E3' TO C? 2 * VAL(C) && Exibe 2500.00

VALIDATE DATABASE, comando

Assegura que as localizações de tabelas e índices no banco de dados atual sejam corretas.

[Pág.: 461]

Page 462: 74039361 Visual FoxPro Comandos e Funcoes

Sintaxe

VALIDATE DATABASE[RECOVER][NOCONSOLE][TO PRINTER [PROMPT] | TO FILE NomeArquivo]

Argumentos

RECOVER Exibe caixas de diálogo que permitem localizar tabelas e índices que não estejam nas localizações contidas no banco de dados. VALIDATE DATABASE RECOVER deve ser emitido na janela Comando. A emissão de VALIDATE DATABASE RECOVER em um programa gera uma mensagem de erro.

NOCONSOLE Suprime a saída de mensagens de erro para a janela principal do Visual FoxPro ou para a janela ativa definida pelo usuário.

TO PRINTER [PROMPT] Direciona a saída de mensagens de erro de VALIDATE DATABASE para uma impressora.

PROMPT exibe uma caixa de diálogo Imprimir antes do início da impressão. Coloque a palavra-chave PROMPT logo depois de TO PRINTER.

TO FILE NomeArquivo Direciona a saída das mensagens de erro para o arquivo especificado em NomeArquivo. Se o arquivo já existir e SET SAFETY estiver (ON), será perguntado se você deseja sobrescrever o arquivo.

Comentários

VALIDATE DATABASE assegura que o banco de dados contenha as localizações apropriadas de tabelas e índices, que as tabelas no banco de dados contenham os campos apropriados e que existam marcas de índice no banco de dados.

VALIDATE DATABASE opera no banco de dados atual. O banco de dados deve ser aberto para uso exclusivo, incluindo-se a palavra-chave EXCLUSIVE quando você emitir OPEN DATABASE.

VALIDATE DATABASE, exemplo do comando

O exemplo a seguir abre o banco de dados testdata e utiliza VALIDATE DATABASE para garantir que as localizações das tabelas e dos índices no banco de dados estejam corretas.

CLOSE DATABASESSET PATH TO (SYS(2004) + 'samples\data\') && Determina o caminho para o banco de dadosOPEN DATABASE testdata EXCLUSIVE && Abre o banco de dados testdata

VALIDATE DATABASE

VERSION( ), função

Retorna as informações sobre a versão do Visual FoxPro que está sendo utilizada.

Sintaxe

VERSION(nExpressão)

Tipos de retorno: Caractere, Numérico

Argumentos

nExpressão Especifica que VERSION( ) deve retornar informações adicionais sobre o Visual FoxPro. Se você omitir nExpressão, VERSION( ) retornará o número da versão do Visual FoxPro.

[Pág.: 462]

Page 463: 74039361 Visual FoxPro Comandos e Funcoes

A tabela a seguir lista os valores para nExpressão e as informações adicionais retornadas sobre o Visual FoxPro.

NExpressão Informações adicionais retornadas sobre o Visual FoxPro

1 Data e número de série do Visual FoxPro.2 Tipo da versão do Visual FoxPro:0 - Versão em tempo de execução1 - Standard Edition (versões anteriores)2 - Professional Edition (versões anteriores)3 Idioma do Visual FoxPro. Os dois valores de caracteres a seguir indicam o idioma para o qual o

Visual FoxPro foi traduzido:00 - Inglês33 - Francês34 - Espanhol39 - Italiano42 - Tcheco48 - Polonês49 - Alemão55 - Português82 - Coreano86 - Chinês simplificado88 - Chinês tradicional

Comentários

Utilize VERSION( ) para executar condicionalmente trechos de código específicos da versão.VERSION( ), VERSION(1) e VERSION(3) retornam seqüências de caracteres; VERSION(2) retorna um valor numérico.

VERSION( ), exemplo da função

CLEAR? VERSION( )

SYS( ), visão geral das funções

Retorna as informações do sistema Visual FoxPro.

Sintaxe

SYS( )

Tipos de retorno: Caractere

Comentários

As funções SYS( ) do Visual FoxPro retornam valores de caractere que contêm informações úteis do sistema. A seguinte tabela mostra o que cada função SYS( ) retorna:

FunçãoInformações retornadas

SYS(0) Informações do computador da redeSYS(1) Data do sistema JulianoSYS(2) Segundos desde a meia-noiteSYS(3) Nome de arquivo válido SYS(5) Volume ou unidade de disco padrãoSYS(6) Dispositivo de impressora atual SYS(7) Arquivo de formato atual

[Pág.: 463]

Page 464: 74039361 Visual FoxPro Comandos e Funcoes

SYS(9) Número serial do Visual FoxProSYS(10) Seqüência a partir do número de dia Juliano SYS(11) Número de dia Juliano SYS(12) Memória disponível em bytesSYS(13) Status da impressora SYS(14) Expressão de índice SYS(15) Conversão de caracteres SYS(16) Nome de arquivo do programa em execuçãoSYS(17) Processador em uso SYS(18) Controle atualSYS(20) Transforma texto em alemão SYS(21) Controlando o número do índice SYS(22) Controlando o nome ou marca de índiceSYS(23) Utilização de memória EMS do FoxPro SYS(24) Limite de memória EMS SYS(100) Definição do console SYS(101) Definição do dispositivo SYS(102) Definição da impressora SYS(103) Definição da comunicação SYS(1001) Memória do Visual FoxPro SYS(1016) Uso da memória de objeto do usuário SYS(1023) Ativar modo de diagnóstico da Ajuda.SYS(1024) Desativar modo de diagnóstico da Ajuda.SYS(1037) Caixa de diálogo Configurar páginaSYS(1269) Informações sobre propriedadesSYS(1270) Localização do objetoSYS(1271) Arquivo .SCX do objetoSYS(1272) Hierarquia do objetoSYS(1500) Ativar um item do menuSYS(2000) Correspondência de curinga no nome de arquivoSYS(2001) Status do comando SETSYS(2002) Ativar ou desativar o ponto de inserçãoSYS(2003) Diretório atualSYS(2004) Diretório inicial do Visual FoxProSYS(2005) Arquivo de recursos atualSYS(2006) Placa gráfica atualSYS(2007) Valor da soma de verificaçãoSYS(2010) Definições do arquivo CONFIG.SYSSYS(2011) Status de bloqueio atualSYS(2012) Tamanho de bloco de campo MemoSYS(2013) Seqüência de nomes de menu do sistemaSYS(2014) Caminho mínimoSYS(2015) Nome do procedimento exclusivoSYS(2016) Nome de SHOW GETS WINDOWSYS(2017) Exibir tela de inicializaçãoSYS(2018) Parâmetro de mensagem de erroSYS(2019) Nome e localização do arquivo de configuraçãoSYS(2020) Tamanho de disco padrãoSYS(2021) Expressão de índice filtradaSYS(2022) Tamanho do grupo (bloco) no discoSYS(2023) Caminho temporárioSYS(2029) Tipo de tabelaSYS(2333) Suporte de Interface ActiveX DualSYS(3004) Retornar identificador de localSYS(3005) Definir identificador de localSYS(3006) Definir identificadores de local e linguagemSYS(3050) Definir tamanho de buffer de memóriaSYS(3051) Definir intervalo de repetição de bloqueioSYS(3052) Substituir bloqueio de SET REPROCESSSYS(3053) Identificador de ambiente do ODBC

[Pág.: 464]

Page 465: 74039361 Visual FoxPro Comandos e Funcoes

WAIT, comando

Exibe uma mensagem e interrompe a execução do Visual FoxPro até que o usuário pressione uma tecla ou clique o mouse.

Sintaxe

WAIT[cTextoMensagem][TO NomeVarMem][WINDOW [AT nLinha, nColuna]][NOWAIT][CLEAR | NOCLEAR][TIMEOUT nSegundos]

Argumentos

cTextoMensagem Especifica uma mensagem personalizada a ser exibida. Se você omitir cTextoMensagem, o Visual FoxPro exibirá a mensagem padrão. Se cTextoMensagem for a seqüência vazia (""), nenhuma mensagem será exibida e o Visual FoxPro aguardará que uma tecla seja pressionada antes de continuar a execução do programa.

TO NomeVarMem Salva a tecla pressionada em uma variável de memória ou em um elemento de matriz. Se a variável de memória ou um elemento de matriz especificado por você com NomeVarMem não existir, ele será criado. A seqüência vazia será armazenada em NomeVarMem se você pressionar ENTER, uma tecla que não possa ser impressa, uma combinação de teclas ou clicar o mouse.

WINDOW Exibe a mensagem em uma janela de mensagem do sistema localizada na extremidade superior direita da janela principal do Visual FoxPro. A janela pode ser temporariamente ocultada ao pressionar a tecla CTRL ou SHIFT.

AT nLinha, nColuna No Visual FoxPro especifica a posição da janela de mensagem na tela.

NOWAIT Continua a execução do programa imediatamente após a exibição da mensagem. O programa não espera a remoção da mensagem da janela principal do Visual FoxPro, mas prossegue com a execução na linha do programa imediatamente após a linha do programa contendo WAIT NOWAIT. Se você omitir NOWAIT, a execução do programa será interrompida até que a mensagem seja removida da janela principal do Visual FoxPro, pressionando uma tecla ou clicando o mouse.

CLEAR Remove uma janela do sistema Visual FoxPro ou uma janela de mensagem WAIT encontrada na janela principal do Visual FoxPro em um programa. Por exemplo, quando você emite SET TALK WINDOW, a comunicação de indexação ou classificação, entre outras, é direcionada a uma janela do sistema do Visual FoxPro. A janela poderá ser removida interativamente se você pressionar uma tecla ou mover o mouse. Emita WAIT CLEAR para remover a janela de um programa.

NOCLEAR Especifica que a janela de uma mensagem WAIT permanece na janela principal do Visual FoxPro até que WAIT CLEAR ou outro comando WAIT WINDOW seja emitido, ou uma mensagem do sistema Visual FoxPro seja exibida.

TIMEOUT nSegundos Especifica quantos segundos podem decorrer sem uma entrada do teclado ou do mouse antes da conclusão do WAIT. nSegundos especifica o número de segundos (frações de segundos são permitidas) decorridos. Se TIMEOUT não for a última cláusula de WAIT, o Visual FoxPro irá gerar uma mensagem de erro de sintaxe.

Comentários

Se uma mensagem WAIT for exibida no Visual FoxPro para Windows, o pressionamento das teclas SHIFT ou CTRL farão com que todas as janelas incluindo a mensagem WAIT sejam ocultadas.

[Pág.: 465]

Page 466: 74039361 Visual FoxPro Comandos e Funcoes

WFONT( ), função

Retorna o nome, o tamanho ou o estilo da fonte atual para uma janela do Visual FoxPro para Windows.

Sintaxe

WFONT(nAtributoFonte [, NomeJanela])

Tipos de retorno: Caractere e Numérico

Argumentos

nAtributoFonte Especifica o atributo de fonte que você deseja retornar.Se nAtributoFonte for 1, WFONT( ) retornará o nome da fonte atual para a janela ativa ou especificada.Se nAtributoFonte for 2, WFONT( ) retornará o tamanho da fonte.Se nAtributoFonte for 3, WFONT( ) retornará um código que identifica o estilo da fonte.

O código de estilo da fonte é um caractere ou um conjunto de caracteres que corresponde ao estilo de fonte atual. Por exemplo, o estilo de fonte atual é negrito itálico quando WFONT(3) retorna BI.

A tabela a seguir lista os códigos para cada estilo de fonte:

Caractere Estilo de fonte

B NegritoI ItálicoN NormalO ContornoQ OpacoS Sombreado- Tachado T TransparenteU Sublinhado

NomeJanela Especifica o nome da janela para a qual você deseja determinar a fonte atual, o tamanho da fonte ou o estilo desta. No Visual FoxPro, você pode também incluir o nome de uma barra de ferramentas. Inclua a seqüência vazia para retornar a fonte atual, o tamanho da fonte ou o estilo desta a partir da janela principal do Visual FoxPro.

NomeJanela pode ser o nome de uma janela definida pelo usuário e criada com DEFINE WINDOW ou uma janela para edição de textos e memos.Você pode também incluir o nome de uma janela do sistema (Visualizar, Rastrear, Depurar etc.). WFONT( ) pode retornar somente atributos de fonte para uma janela do sistema que tenha sido aberta e esteja visível ou oculta no momento. Se a janela do sistema especificada por você estiver fechada, o Visual FoxPro irá gerar uma mensagem de erro.

Se você omitir NomeJanela, WFONT( ) retornará a fonte atual, o tamanho da fonte ou o estilo desta para a janela de saída ativa.

WFONT( ), exemplo da função

O exemplo a seguir cria uma janela definida pelo usuário definida wFontChar. A janela é ativada e as características de suas fontes são exibidas na janela. As características de fonte são exibidas na janela principal do Visual FoxPro.

CLEARDEFINE WINDOW wFontChar;

FROM 1,1 TO 3,35;FONT 'MS SANS SERIF',8;STYLE 'BI' && Define a janela com fonte e estilo

[Pág.: 466]

Page 467: 74039361 Visual FoxPro Comandos e Funcoes

ACTIVATE WINDOW wFontChar ? WFONT(1), WFONT(2), WFONT(3) && Janela wFontCharACTIVATE SCREEN??? 'Características de fonte da janela wFontChar'?? WFONT(1,''), WFONT(2,''), WFONT(3,'') && Janela principal do Visual FoxPro? ? 'Características de fonte da janela principal do Visual FoxPro'

WAIT WINDOWRELEASE WINDOW wFontCharCLEAR

WITH ... ENDWITH, comando

Especifica várias propriedades para um objeto.

Sintaxe

WITH NomeObjeto[.cInstruções]

ENDWITH

Argumentos

NomeObjeto Especifica o nome do objeto. NomeObjeto pode ser o nome do objeto ou uma referência a ele.

.cInstruções cInstruções pode consistir em qualquer número de comandos do Visual FoxPro utilizados para especificar propriedades de NomeObjeto. Coloque um ponto antes de cInstruções para indicar que se trata de uma propriedade de NomeObjeto.

Comentários

WITH ... ENDWITH fornece um modo conveniente de especificar diversas propriedades para um único objeto. Observe que também é possível executar métodos a partir de uma estrutura WITH ... ENDWITH.

WITH ... ENDWITH, exemplo do comando

O exemplo a seguir cria um nome de classe personalizado Employee. Depois que a classe Employee tiver sido criada com CREATEOBJECT( ), WITH ... ENDWITH será utilizado para definir múltiplas propriedades para a classe. Em seguida, os valores das propriedades são exibidos.

moemployee = CREATEOBJECT('employee')

WITH moemployee.First_Name = 'Fernando'.Last_Name = 'Pinheiro'.Address = 'Avenida Brasil 16'.HireDate = {02/16/95}

ENDWITHCLEAR? moemployee.First_Name + ' '?? moemployee.Last_Name? moemployee.Address? moemployee.HireDateDEFINE CLASS employee AS CUSTOM

First_Name = SPACE(20)Last_Name = SPACE(20)Address = SPACE(30)HireDate = { \ \ }

ENDDEFINE

[Pág.: 467]

Page 468: 74039361 Visual FoxPro Comandos e Funcoes

WTITLE( ), função

Retorna o título atribuído à janela ativa ou especificada.

Sintaxe

WTITLE([NomeJanela])

Tipos de retorno: Caractere

Argumentos

NomeJanela Especifica uma janela cujo título é retornado por WTITLE( ). O título atribuído à janela com a cláusula TITLE é retornado quando você inclui o nome de uma janela definida pelo usuário e criada com DEFINE WINDOW.

Quando BROWSE WINDOW for emitido para abrir uma janela Pesquisar em uma janela definida pelo usuário, WTITLE( ) retornará o título da janela definida pelo usuário se a janela Pesquisar não possuir um título. Se possuir, WTITLE( ) retornará o título da própria janela Pesquisar.

É possível, também, utilizar a seqüência vazia em NomeJanela para especificar a janela principal do Visual FoxPro.

Comentários

WTITLE( ) pode ser utilizada para retornar um título de janela, que aparecerá na borda superior da mesma. O título será retornado para a janela ativa se você omitir NomeJanela. WTITLE( ) retornará a seqüência vazia se a janela Depurar, Rastrear ou Comando estiver ativa ou a saída estiver sendo direcionada para a janela principal do Visual FoxPro.

Nomes e títulos de janelas Os nomes são atribuídos às janelas definidas pelo usuário, janelas do sistema, barras de ferramentas (no Visual FoxPro) e janelas Pesquisar da seguinte forma:

As janelas definidas pelo usuário recebem nomes quando são criadas com DEFINE WINDOW. Há uma diferença entre nomes e títulos de janelas definidas pelo usuário. Como padrão, as janelas definidas pelo usuário não possuem títulos. Se a cláusula TITLE for incluída na hora da criação da janela, o título especificado aparecerá na borda superior da janela, mas não será seu nome.

Como padrão, cada janela do sistema, que faz parte da interface do Visual FoxPro, obtém o seu nome a partir do título da janela. Os exemplos de janelas do sistema incluem a janela Comando, a janela Sessão de dados e a janela Rastrear. No Visual FoxPro, cada barra de ferramentas obtém o seu nome a partir do título da barra de ferramentas.

As janelas de programa e edição e as janelas Criador de relatórios e Criador de etiquetas obtêm os seus nomes a partir do nome do arquivo que está sendo criado ou modificado.

Uma janela Pesquisar obtém o seu nome a partir do título da janela. O nome e o título da janela Pesquisar são atribuídos por meio de uma das três formas a seguir: pela atribuição do título padrão do alias da tabela, pelo título da janela (se existir algum) ou pelo título da Pesquisa (se existir algum).

Como padrão, o nome da janela Pesquisar é o alias da tabela.

Para especificar os nomes de janelas do sistema e de barras de ferramentas em comandos e funções, coloque o nome completo da janela ou da barra de ferramentas entre aspas. Por exemplo, para ocultar a barra de ferramentas controles de relatório no Visual FoxPro, emita o comando a seguir:

HIDE WINDOW "Controles de relatório "

Observações adicionais sobre nomes de janelas Se você não tiver certeza quanto ao nome atribuído a uma janela, verifique o menu Janela. Todos os nomes de janelas são listados na parte inferior deste menu.

Haverá duas janelas se você emitir BROWSE WINDOW NomeJanela. A janela Pesquisar é separada e possui os atributos da janela definida pelo usuário que foi especificada. Se uma janela estiver ativa quando BROWSE for emitido e você não incluir a cláusula WINDOW, a janela Pesquisar terá os atributos da janela ativa. Você poderá substituir este comportamento incluindo NORMAL em BROWSE.

[Pág.: 468]

Page 469: 74039361 Visual FoxPro Comandos e Funcoes

É possível incluir nomes de janelas que contêm espaços em comandos e funções que aceitam nomes de janelas, tais como MOVE WINDOW, DEACTIVATE WINDOW e WONTOP( ); basta especificar a parte do nome da janela que começa com o primeiro caractere diferente de espaço, continuando até o último ser encontrado.

Por exemplo, uma janela Pesquisar com o nome Entrada de fatura pode ser movida com o comando abaixo:

MOVE WINDOW invoice BY 1,1

Os nomes de janelas definidas pelo usuário não podem conter espaços, mas os nomes das janelas Pesquisar e do sistema podem.

YEAR( ), função

Retorna o ano de uma data específica ou de uma expressão de data e hora.

Sintaxe

YEAR(dExpressão | tExpressão)

Tipos de retorno: Numérico

Argumentos

dExpressão Especifica a expressão de data a partir da qual YEAR( ) retorna o ano. dExpressão pode ser uma função que retorna uma data, uma variável de memória do tipo Data, um elemento de matriz ou campo. Também pode ser uma seqüência literal, como {06/06/95}.

tExpressão Especifica a expressão data e hora a partir da qual YEAR( ) retorna o ano.

Comentários

YEAR( ) sempre retorna o ano com o século. A definição de CENTURY (ON ou OFF) não afeta o valor retornado.

YEAR( ), exemplo da função

CLEAR? YEAR(DATE( ))

ZAP, comando

Remove todos os registros de uma tabela, deixando apenas sua estrutura.

Sintaxe

ZAP[IN nÁreaTrabalho | cAliasTabela]

Argumentos

IN nÁreaTrabalho Especifica a Área de trabalho da tabela na qual todos os registros serão removidos.

IN cAliasTabela Especifica o alias da tabela na qual todos os registros serão removidos.

Se nÁreaTrabalho e cAliasTabela forem omitidos, todos os registros serão removidos da tabela na Área de trabalho selecionada atualmente.

[Pág.: 469]

Page 470: 74039361 Visual FoxPro Comandos e Funcoes

Comentários

A emissão de ZAP é equivalente a emissão de DELETE ALL seguida por PACK, mas o comando ZAP é muito mais rápido.

Se SET SAFETY estiver ativado (ON), o Visual FoxPro pergunta se você deseja remover todos os registros da tabela atual.

A emissão de ZAP não provoca a ocorrência do disparador de exclusão. Para obter maiores informações sobre disparadores em uma tabela, consulte “CREATE TRIGGER”.

Importante: Os registros excluídos da tabela atual não poderão ser reintegrados.

ZOOM WINDOW, comando

Altera o tamanho e a posição da janela definida pelo usuário ou da janela do sistema do Visual FoxPro.

Sintaxe

ZOOM WINDOW NomeJanela MIN | MAX | NORM[AT nLinha1, nColuna1 | FROM AT nLinha1, nColuna1[SIZE AT nLinha2, nColuna2 | TO nLinha2, nColuna2]]

Argumentos

NomeJanela Especifica o nome da janela cujo nome você deseja alterar.

MIN Reduz a janela ao tamanho mínimo.

No Visual FoxPro para Windows, a janela é reduzida a um ícone.

Todas as janelas do sistema podem ser reduzidas a um tamanho mínimo no Visual FoxPro para Windows. As janelas do sistema do Visual FoxPro devem ser abertas na janela principal do Visual FoxPro ou na janela definida pelo usuário antes que elas possam ser minimizadas.

Uma janela definida pelo usuário pode ser minimizada após sua definição. Ela não deve ser ativada antes de sua alteração de tamanho.

MAX Expande uma janela para preencher a janela principal do Visual FoxPro window, a Área de trabalho do Windows ou a janela definida pelo usuário. Se uma janela filho for colocada em uma janela pai e a janela filho for maximizada, ela preenche a janela pai. Se qualquer uma das cláusulas adicionais de ZOOM WINDOW (AT, SIZE, TO ou FROM) forem incluídas com MAX, MAX será ignorado.

Apenas as janelas definidas pelo usuário com ZOOM podem ser expandidas ao tamanho máximo.

NORM Retorna uma janela ao seu tamanho original após ter sido minimizada ou maximizada. NORM pode também ser utilizado para mover uma janela sem alterar seu tamanho. Utilize ZOOM WINDOW NORM sem qualquer cláusula adicional para retornar uma janela minimizada ou maximizada ao seu tamanho e localização original.

AT nLinha1, nColuna1 | FROM nLinha2, nColuna2 É possível especificar a localização de uma janela incluindo a cláusula AT ou FROM.

ZOOM WINDOW NomeJanela NORM AT AT nLinha1, nColuna1 restaura uma janela minimizada ou maximizada ao seu tamanho original e a posiciona em um local específico. As coordenadas AT nLinha1, nColuna1 especificam onde o canto esquerdo superior da janela será posicionado. A localização da janela também pode ser alterada com MOVE WINDOW.

[Pág.: 470]

Page 471: 74039361 Visual FoxPro Comandos e Funcoes

No Visual FoxPro for Windows, se NORM for incluído, o canto superior esquerdo da janela será colocado na janela principal do Visual FoxPro no local especificado com AT nLinha1, nColuna1. Se MIN for incluído, AT e FROM são ignorados e a janela é exibida como um ícone na parte mais inferior da janela principal do Visual FoxPro. Se MAX for incluído, AT e FROM são ignorados e a janela será expandida para preencher a janela principal do Visual FoxPro.

No Visual FoxPro para Windows, se a janela for criada com a cláusula IN DESKTOP, o canto superior esquerdo da janela é colocado na Área de trabalho do Windows no local especificado com AT nLinha1, nColuna1. Se MIN for incluído, AT e FROM são ignorados e a janela será exibida como um ícone na parte mais inferior da Área de trabalho do Windows. Se MAX for incluído, AT e FROM são ignorados e a janela é expandida para preencher a Área de trabalho do Windows.

SIZE AT nLinha2, nColuna2 | TO nLinha2, nColuna2 Também é possível especificar o tamanho de uma janela incluindo SIZE ou TO. Se SIZE for incluído, o tamanho da janela será composto pela altura das linhas nLinha2 e pela largura das colunas nColuna2. Se a cláusula TO for incluída, o canto superior esquerdo da janela permanece em sua posição atual e o canto inferior direito da janela é colocado na posição especificada com nLinha2, nColuna2.

Comentários

No Visual FoxPro para Windows, as janelas podem ser reduzidas ao tamanho mínimo, aumentadas para preencher toda a janela principal do Visual FoxPro ou dimensionada em qualquer parte entre elas.

Se uma janela definida pelo usuário for criada com DEFINE WINDOW e com a cláusula IN DESKTOP no Visual Área de trabalho.

No Visual FoxPro for Windows, as visualizações das janelas podem ser alteradas diretamente do tamanho mínimo ao máximo ou vice-versa.

Quando a visualização de uma janela é aumentada ou diminuída, é possível especificar onde colocar a janela redimensionada na janela do Visual FoxPro ou na janela definida pelo usuário.

Para aumentar a visualização de uma janela do sistema, coloque o nome inteiro da janela do sistema entre aspas simples. Por exemplo, para maximizar a janela Comando, utilize o comando a seguir:

ZOOM WINDOW 'janela Comando' MAX

Você pode utilizar ZOOM WINDOW para redimensionar todas as janelas do sistema exceto as janelas Arquivista, Calculadora e Jogo.

ZOOM WINDOW, Exemplo do comando

No exemplo abaixo, a janela Pesquisar é aberta para a tabela customer. A janela Pesquisar é minimizada. A janela Pesquisar retorna ao seu tamanho padrão. Ela então será novamente minimizada em um local específico. A janela Pesquisar é aumentada para um tamanho especifico e é maximizada.

CLEAR ALLCLEARCLOSE DATABASESOPEN DATABASE (HOME( ) + 'samples\data\testdata')USE customer && Abre a tabela CustomerBROWSE NORMAL NOWAIT

IF _DOS OR _WINDOWSZOOM WINDOW customer MINWAIT WINDOW TIMEOUT 3 ;

'Cláusula MIN - Esta janela irá estabelecer o tempo limite. Por favor, espere.'ENDIF

ZOOM WINDOW customer NORM

[Pág.: 471]

Page 472: 74039361 Visual FoxPro Comandos e Funcoes

WAIT WINDOW TIMEOUT 3 ;'Cláusula NORM - Esta janela irá estabelecer o tempo limite. Por favor, espere.'

IF _DOS OR _WINDOWSZOOM WINDOW customer MIN AT 10,10WAIT WINDOW TIMEOUT 3 ;

'Cláusula MIN AT 10,10 - Esta janela irá estabelecer o tempo limite. Por favor, espere.'ENDIF

ZOOM WINDOW customer NORM AT 1,1 SIZE 22,25WAIT WINDOW TIMEOUT 3 ;

'Cláusulas NORM & SIZE - Esta janela irá estabelecer o tempo limite. Por favor.'ZOOM WINDOW customer NORM FROM 10,10 TO 22,70WAIT WINDOW TIMEOUT 3 ;

'Cláusulas NORM & TO - Esta janela irá estabelecer o tempo limite.'ZOOM WINDOW customer MAXWAIT WINDOW TIMEOUT 3 'Cláusula MAX - Esta janela irá estabelecer o tempo limite. Por favor, espere.'CLEAR ALL

APENDICE PRÁTICO

Bloco de comandos, que traz o formulário de CORES na tela, e conforme a cor selecionada, retorna com os valores de RGB

Pequena rotina

ncor=getcolor()Permite voce escolher uma CORB=INT(ncor / 65536)G=INT((ncor – (B*65536)) / 256)R=ncor((G*256) + (B*65536))

Em R, G e B retornará os valores de RGB

.... SET COLOR OF SCHEME 1 TO RGB(R,G,B)

COMANDOS QUE RETORNAM COM OS VALORES DA RESOLUÇÃO DE VIDEO EM USO

Nhorizontal=sysmetric(1)Nvertical =sysmetric(2)

Esta apostila vai receber diversos anexos de programadores..Acesse nossa página www.visualscreen.hpg.com.br e faça o download a medida que estes anexos forem disponibilizados(Copiar e colar ao final deste .DOC) Envie-nos um E-mail com sugestoões : [email protected]

[Pág.: 472]