Sie sind auf Seite 1von 779

D Di in na ar rt te e I In n c ci io o K Kr re eu ut tz z

R
RRe
eef
ffe
eer
rr
n
nnc
cci
iia
aas
ss :
:: E
EEs
sst
tte
ee t
ttr
rra
aab
bba
aal
llh
hho
oo f
ffo
ooi
ii d
dde
ees
sse
een
nnv
vvo
ool
llv
vvi
iid
ddo
oo a
aa p
ppa
aar
rrt
tti
iir
rr d
ddo
oo H
HHE
EEL
LLP
PP d
ddo
oo V
VVF
FFP
PP 6
66
A
AAu
uut
tto
oor
rr :
:: D
DDi
iin
nna
aar
rrt
tte
ee I
IIn
nn
c
cci
iio
oo K
KKr
rre
eeu
uut
ttz
zz /
// A
AAn
nna
aal
lli
iis
sst
tta
aa d
dde
ee S
SSi
iis
sst
tte
eem
mma
aas
ss
E
EE-
--m
mma
aai
iil
ll :
:: m
mmo
oon
nna
aal
lli
iis
ssa
aa@
@@b
bbe
eew
wwn
nne
eet
tt.
.. c
cco
oom
mm.
.. b
bbr
rr

http://www.visualscreen.hpg.com.br





I
IIM
MMP
PPO
OOR
RRT
TTA
AAN
NNT
TTE
EE :
:: E
EEs
sst
tta
aa a
aap
ppo
oos
sst
tti
iil
lla
aa t
ttr
rra
aaz
zz o
oos
ss c
cco
oom
mma
aan
nnd
ddo
oos
ss d
ddo
oo V
VVi
iis
ssu
uua
aal
ll F
FFo
oox
xxP
PPr
rro
oo,
,,
p
ppr
rri
iin
nnc
cci
iip
ppa
aal
llm
mme
een
nnt
tte
ee a
aaq
qqu
uue
eel
lle
ees
ss q
qqu
uue
ee p
ppo
ood
dde
eem
mm s
sse
eer
rr i
iim
mme
eed
ddi
iia
aat
tta
aam
mme
een
nnt
tte
ee a
aap
ppl
lli
iic
cca
aad
ddo
oos
ss p
ppo
oor
rr
P
PPr
rro
oog
ggr
rra
aam
mma
aad
ddo
oor
rre
ees
ss q
qqu
uue
ee e
ees
sst
tt
o
oo m
mmi
iig
ggr
rra
aan
nnd
ddo
oo d
ddo
oo C
CCL
LLI
IIP
PPP
PPE
EER
RR.
..



COMANDOS E FUNES

RUN | !, comando

Executa programas ou comandos operacionais externos.

Sintaxe

RUN [/N [K]] ComandoMS-DOS | NomePrograma
Ou
! [/N [K]] ComandoMS-DOS | NomePrograma

Argumentos

ComandoMS-DOS Especifica o comando do MS-DOS a ser executado. Consulte a documentao
do MS-DOS para obter maiores informaes sobre os comandos disponveis.

NomePrograma Especifica o programa ou o aplicativo a ser executado. Poder ser especificado um
programa ou aplicativo baseado no Windows ou no MS-DOS.

/N [K] Especifica NOWAIT. Inclua a letra N (no substitua N por um valor numrico nem inclua
K) para executar outro aplicativo do Windows.

Comentrios

possvel emitir RUN de dentro da janela Comando ou de outro programa.

Importante Para utilizar RUN, voc precisa ter o arquivo de sistema operacional
COMMAND.COM no diretrio atual ou esse arquivo dever estar localizado onde o parmetro MS-
DOS COMSPEC possa encontr-lo. Para obter maiores informaes sobre COMSPEC, consulte a
documentao do MS-DOS.

Cuidado No utilize RUN para executar programas de reorganizao de disco, como o CHKDSK,
a partir do Visual FoxPro. Esses programas modificam o contedo do seu disco de maneira a
impedir o bom funcionamento do Visual FoxPro.

RUN e Visual FoxPro Quando RUN utilizado para executar programas fora do Visual FoxPro,
ele pesquisa os programas de forma um pouco diferente do FoxPro para MS-DOS.

Se o programa especificado em RUN no possuir uma extenso, o Visual FoxPro procurar
primeiro, no caminho do MS-DOS, um arquivo PIF (Program Information File) com o nome que
voc indicou. Esse arquivo permite a execuo de um programa no Windows no Windows. Voc
poder especificar parmetros para o programa, ou seja, se ele executado em uma janela ou na tela
inteira, o total de memria alocado para o programa etc.

Se o PIF for encontrado, o programa nele especificado ser executado com os parmetros PIF. Caso
contrrio, ser feita uma procura no caminho do MS-DOS para encontrar um arquivo executvel
com o nome que voc indicar.

Quando um PIF no encontrado, o Visual FoxPro utiliza o FOXRUN.PIF, um PIF instalado no
diretrio do Visual FoxPro. O FOXRUN.PIF configurado para executar o programa em uma
janela. possvel modificar o FOXRUN.PIF para que execute programas com outra configurao.

FOXRUN.PIF O FOXRUN.PIF permite a execuo de programas e comandos do MS-DOS e do
Windows a partir do Visual FoxPro. O FOXRUN.PIF deve estar no mesmo diretrio que VFP.EXE
no Visual FoxPro.

/N significa NOWAIT. Inclua a letra N (no substitua N por um valor numrico nem inclua K) para
executar outro aplicativo do Windows. Por exemplo, a instruo a seguir abre o acessrio Mapa de
caracteres do Windows:

! /N CHARMAP.EXE

No exemplo a seguir, o Selecionador de cores aberto no Painel de controle do Windows:

! /N CONTROL COLOR

Um aplicativo do Windows executado com RUN /N ou ! /N apresenta o mesmo comportamento que
quando aberto atravs do Gerenciador de Programas ou do Gerenciador de Arquivos. Voc pode
alternar entre o aplicativo e o Visual FoxPro ou o FoxPro para Windows utilizando as operaes
padro do Windows.

Para especificar como o aplicativo do Windows ser aberto, inclua um valor numrico opcional
imediatamente aps /N. No inclua espaos entre /N e o valor numrico. A tabela a seguir lista os
valores numricos que podem ser includos e descreve o estado do aplicativo do Windows quando
ele aberto.

Valor Atributos do aplicativo

1 Ativo e tamanho normal
2 Ativo e minimizado
3 Ativo e maximizado
4 Inativo e tamanho normal
7 Inativo e minimizado


Executando programas do MS-DOS no Visual FoxPro Como padro, o FOXRUN.PIF executa o
programa do MS-DOS externo especificado em uma janela. Enquanto o programa ou comando do
MS-DOS executado, o ttulo da janela Executar Comando do FoxPro. No Visual FoxPro, a
janela Executar Comando do FoxPro fechada aps a execuo do comando ou do programa
externo.
Voc pode utilizar o editor PIF do Windows para personalizar o FOXRUN.PIF. O PIF pode ser
editado para especificar se a janela Executar Comando do Visual FoxPro Inativo deve ser mantida
aberta ou fechada (padro no Visual FoxPro) usando a caixa de verificao Fechar janela ao sair.
Tambm possvel abrir programas externos em uma tela inteira selecionando Tela inteira, Alocar
memria para o programa, etc.

Consideraes de memria Como padro, o FOXRUN.PIF aloca um mnimo de 256K de memria
para a execuo de um comando ou programa externo. Se voc no tiver 256K de memria
convencional livre, o Visual FoxPro exibir uma mensagem de erro. Para corrigir tal mensagem,
experimente um ou mais dos procedimentos a seguir:

Feche os aplicativos e arquivos para liberar memria adicional.
Edite o FOXRUN.PIF para reduzir o total exigido de memria na caixa de texto KB
Requerido.


Se o comando externo exigir mais de 256K, o MS-DOS exibir uma mensagem de erro na janela
Executar Comando do Visual FoxPro. Para corrigir tal erro, edite o FOXRUN.PIF para aumentar o
total de memria necessrio na caixa de texto KB Requerido.


$, operador

Retorna verdadeiro (.T.) se uma expresso de caracteres estiver contida em outra expresso de
caracteres; caso contrrio, retorna falso (.F.).

Sintaxe

cProcurarPor $ cProcurarEm

Tipos de retorno

Lgico

Argumentos

cProcurarPor Especifica a expresso procurada em cProcurarEm.

cProcurarEm Especifica a expresso procurada para ver se ela contm cProcurarPor.

Se cProcurarPor for localizado em cProcurarEm, $ retornar verdadeiro (.T.); caso contrrio,
retornar falso (.F.). cProcurarPor e cProcurarEm podem ser variveis do tipo Caractere ou
elementos de matriz, campos do tipo Caractere, literais de seqncia de caracteres ou campos
Memo de qualquer tamanho.

Os campos Memo podem ser manipulados como expresses de caracteres, campos em tabelas,
variveis ou elementos de matriz. Por exemplo, se MEMO_FLD for um campo Memo, a linha
abaixo ser aceitvel:

LIST FOR 'FOX' $ UPPER(memo_fld)


Comentrios

Se a expresso de caracteres no for localizada, ser retornado falso (.F.). O operador $ considera
maisculas/minsculas e no otimizado por Rushmore.































%, operador

Retorna o resto (mdulo) obtido pela diviso de uma expresso numrica por outra.

Sintaxe

nDividendo % nDivisor

Argumentos

nDividendo Especifica o dividendo (a expresso numrica que est sendo dividida). O nmero de
casas decimais em nDividendo determina o nmero de casas decimais no resultado.

nDivisor Especifica o divisor (a expresso numrica que divide o dividendo nDividendo). Se
nDivisor for positivo, ser retornado um nmero positivo; se nDivisor for negativo, ser retornado
um nmero negativo. nDivisor no pode ser zero.


Comentrios

O operador de mdulo (%) e MOD( ) retornam resultados idnticos.

O operador de mdulo (%) um operador aritmtico. Outros operadores aritmticos so: + (adio),
- (subtrao), * (multiplicao), / (diviso) e ^ (exponenciao). Quando esses operadores forem
combinados em uma expresso numrica, % ter a mesma precedncia que * e /.





&&, comando


Indica o incio de um comentrio no-executvel em uma linha de um arquivo de programa.

Sintaxe

&& [Comentrios]


Argumentos

Comentrios Indica que o texto que se segue um comentrio em uma linha. Por exemplo:

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


A insero de comentrios em uma linha para denotar o fim dos comandos de programao
estruturada IF ... ENDIF, DO e FOR ... ENDFOR melhora consideravelmente a legibilidade dos
programas.

Comentrios

Coloque um ponto-e-vrgula (;) no final de cada linha de comentrio que continue na linha seguinte.
No possvel colocar && e um comentrio depois do ponto-e-vrgula utilizado para continuar uma
linha de comando em uma linha adicional.

*, comando


Indica o incio de uma linha de comentrio no-executvel em um arquivo de programa.

Sintaxe

* [Comentrios]

Argumentos

Comentrios Especifica o comentrio na linha de comentrio. Por exemplo:

* Isto um comentrio


Comentrios

Coloque um ponto-e-vrgula (;) no final de cada linha de comentrio que continue na prxima linha.


@ ... CLEAR, comando


Limpa uma parte da janela principal do Visual FoxPro ou de uma janela definida pelo usurio.

Sintaxe

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


Argumentos

@ nLinha1, nColuna1 CLEAR Limpa uma rea retangular cujo canto superior esquerdo comea
em nLinha1 e nColuna1 e continua at o canto inferior direito da janela principal do Visual FoxPro
ou de uma janela definida pelo usurio.

CLEAR TO nLinha2, nColuna2 Limpa uma rea retangular cujo canto superior esquerdo est em
nLinha1 e nColuna1 e cujo canto inferior direito est em nLinha2 e nColuna2.

Comentrios

Se CLEAR ou CLEAR TO forem omitidos, o Visual FoxPro limpar nLinha1 da nColuna1 at o
final da linha.


@ ... FILL, exemplo do comando

O exemplo a seguir limpa a janela principal do Visual FoxPro e preenche uma rea com uma cor.

ACTIVATE SCREEN
CLEAR
@ 4,1 FILL TO 10, 8 COLOR GR+/B

@ ... SCROLL, comando


Move uma rea da janela principal do Visual FoxPro ou uma janela definida pelo usurio para cima,
para baixo, para a esquerda ou para a direita.

Sintaxe

@ nLinha1, nColuna1 TO nLinha2, nColuna2 SCROLL
[UP | DOWN | LEFT | RIGHT]
[BY nQuantidadeMovida]


Argumentos

@ nLinha1, nColuna1 TO nLinha2, nColuna2 SCROLL Move uma rea retangular cujo canto
superior esquerdo se encontra em nLinha1, nColuna1 e o canto inferior direito em nLinha2,
nColuna2.

UP | DOWN | LEFT | RIGHT Especifica a direo na qual a rea retangular ser movida. Se uma
clusula de direo for omitida, a rea ser movida para cima.

BY nQuantidadeMovida Especifica o nmero de linhas ou colunas que a rea retangular ser
movida. Se BY nQuantidadeMovida for omitido, a regio ser movida uma linha ou coluna.



\ | \\, comando


Imprime ou exibe linhas de texto.

Sintaxe

\LinhaTexto
Ou
\\LinhaTexto


Argumentos

\LinhaTexto Quando voc utiliza \, a linha de texto precedida por um retorno de carro e uma
alimentao de linha.

\\LinhaTexto Quando voc utiliza \\, a linha de texto no precedida por um retorno de carro e
uma alimentao de linha.

Qualquer espao antes de \ e \\ no includo na linha de sada, mas os espaos aps \ e \\ so
includos.

Voc pode incorporar uma expresso linha de texto. Se a expresso estiver entre delimitadores de
mesclagem de textos (<< >>, como padro) e SET TEXTMERGE estiver ativado (ON), a
expresso ser avaliada e seu valor ser fornecido como texto.

Comentrios

Os comandos \ e \\ facilitam a mesclagem de textos no Visual FoxPro. A mesclagem de textos
permite que voc oriente a sada do texto para um arquivo para criar cartas-formulrio ou
programas.

Utilize \ e \\ para orientar a sada de uma linha de texto para o atual arquivo de sada da mesclagem
de textos e para a tela. SET TEXTMERGE utilizado para especificar o arquivo de sada da
mesclagem de textos. Se a mesclagem de textos no for direcionada a um arquivo, a linha de texto
ser fornecida apenas para a janela principal do Visual FoxPro ou para a janela de sada ativa
definida pelo usurio. SET TEXTMERGE NOSHOW suprime a sada para a janela principal do
Visual FoxPro ou para a janela ativa definida pelo usurio.

\ | \\, exemplo do comando

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE Customer && Abre tabela customer
SET TEXTMERGE ON
SET TEXTMERGE TO letter.txt
\<<CDOW(DATE( ))>>, <<CMONTH(DATE( ))>>
\\ <<DAY(DATE( ))>>, <<YEAR(DATE( ))>>
\
\
\Caro <<contact>>
\Texto adicional
\
\Grato,
\
\Companhia XYZ
CLOSE ALL
MODIFY FILE letter.txt NOEDIT


=, comando

Avalia uma ou mais expresses.

Sintaxe

= Expresso1 [, Expresso2 ...]


Argumentos

Expresso1 [, Expresso2 ...] Especifica a expresso ou as expresses avaliadas pelo comando =.


Comentrios

O comando = avalia uma ou mais expresses, Expresso1, Expresso2 ... e descarta os valores de
retorno. Essa opo particularmente til quando uma funo do Visual FoxPro ou uma funo
definida pelo usurio tem um efeito desejado, mas no h necessidade de atribuir o valor de retorno
da funo a uma varivel, elemento de matriz ou campo.

Por exemplo, para ativar o modo de insero, voc pode emitir o comando:

= INSMODE(.T.)

INSMODE normalmente retorna um valor verdadeiro (.T.) ou falso (.F.). No exemplo acima, a
funo executada, mas o valor de retorno descartado.

Se apenas uma expresso (Expresso1) for includa, o sinal de igualdade ser opcional.

Observao O sinal de igualdade (=) pode ser utilizado de duas formas no-relacionadas. Pode-se
utiliz-lo como um operador em expresses lgicas para fazer uma comparao ou para atribuir
valores a variveis e a elementos de matriz. Nesses dois casos, o sinal de igualdade (=) um
operador e no um comando.


ABS( ), funo


Retorna o valor absoluto da expresso numrica especificada.

Sintaxe

ABS(nExpresso)


Tipos de retorno

Numrico

Argumentos

nExpresso Especifica a expresso numrica cujo valor absoluto a funo ABS( ) retorna.

ABS( ), exemplo da funo

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


ACOS( ), funo


Retorna o arco co-seno de uma expresso numrica especificada.

Sintaxe

ACOS(nExpresso)

Tipos de retorno

Numrico

Argumentos

nExpresso Especifica uma expresso numrica cujo arco co-seno a funo ACOS( ) retorna. O
valor de nExpresso pode variar de 1 a +1. O valor retornado por ACOS( ) varia de 0 a pi
(3,141592). O nmero de casas decimais retornado por ACOS( ) determinado por SET
DECIMALS.

Utilize RTOD( ) para converter radianos para graus.

Comentrios

O arco co-seno retornado em radianos.

ACOS( ), exemplo da funo

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


Envia toda a sada subseqente para a janela principal do Visual FoxPro, em vez de enviar para a
janela definida pelo usurio que est ativa.

Sintaxe

ACTIVATE SCREEN

Comentrios

Utilize o comando ACTIVATE WINDOW para direcionar a sada para uma janela definida pelo
usurio.


ACTIVATE WINDOW, comando


Exibe e ativa uma ou mais janelas definidas pelo usurio ou janelas do sistema do Visual FoxPro.

Sintaxe

ACTIVATE WINDOW NomeJanela1 [, NomeJanela2 ...]
| ALL
[IN [WINDOW] NomeJanela3 | IN SCREEN]
[BOTTOM | TOP | SAME]
[NOSHOW]

Argumentos

NomeJanela1 [, NomeJanela2 ...] Especifica o nome de cada janela a ser ativada. Separe os nomes
das janelas com vrgulas. No Visual FoxPro, voc pode especificar o nome de uma barra de
ferramentas para ativar a janela. Consulte SHOW WINDOW para obter uma lista de nomes das
barras de ferramentas do Visual FoxPro.

ALL Especifica que todas as janelas sejam ativadas. A ltima janela ativada a janela de sada
ativa.

IN [WINDOW] NomeJanela3 Especifica o nome da janela pai dentro da qual a janela colocada e
ativada. A janela ativada torna-se uma janela filho. A janela pai pode ter vrias janelas filho. Uma
janela filho ativada dentro de uma janela pai no pode ser movida para fora. Caso a janela pai seja
movida, a janela filho ser movida junto com ela.

Observao A janela pai deve estar visvel para que qualquer uma de suas janelas filho fique
visvel.

IN SCREEN Coloca e ativa uma janela na janela principal do Visual FoxPro. Uma janela pode
colocada em uma janela pai, incluindo-se IN WINDOW em DEFINE WINDOW quando a janela
for criada. A incluso da clusula IN SCREEN em ACTIVATE WINDOW substitui a clusula IN
WINDOW em DEFINE WINDOW.

BOTTOM | TOP | SAME Especifica onde as janelas so ativadas em relao a outras janelas
anteriormente ativadas. Como padro, uma janela torna-se a janela frontal quando ativada. A
incluso de BOTTOM coloca uma janela atrs de todas as outras janelas. TOP ir coloc-la na
frente de todas as outras. SAME ativa uma janela sem afetar o seu posicionamento.

NOSHOW Ativa e direciona a sada para uma janela sem exibir a janela.

Comentrios

Janelas definidas pelo usurio so criadas com DEFINE WINDOW.

Quando uma janela ativada, ela passa a ser a janela frontal e toda a sada direcionada para ela. A
sada pode ser direcionada apenas para uma janela de cada vez. A janela permanece como a janela
de sada ativa at ser desativada ou liberada ou at que outra janela ou a janela principal do Visual
FoxPro seja ativada.

Os nomes de janelas definidas pelo usurio so exibidos na parte inferior do menu Janela. O nome
da janela ativa, definida pelo usurio, est selecionada com uma marca de verificao.

possvel colocar mais de uma janela ao mesmo tempo na janela principal do Visual FoxPro, mas a
sada ser direcionada somente para a janela ativada por ltimo. Quando mais de uma janela estiver
aberta, se a janela de sada ativa for desativada, ela ser removida da janela principal do Visual
FoxPro e a sada subseqente ser enviada para outra janela. Caso nenhuma janela de sada esteja
ativa, a sada ser direcionada para a janela principal do Visual FoxPro.

Para garantir que a sada seja direcionada para uma janela especfica quando a janela de sada ativa
for desativada, voc deve ativar explicitamente a janela para a qual deseja enviar a sada com o
comando ACTIVATE WINDOW.

Todas as janelas ativadas so exibidas at que o comando DEACTIVATE WINDOW ou HIDE
WINDOW seja executado para remov-las da tela. A emisso de qualquer um destes comandos
remove as janelas da tela, mas no da memria. Para exibir novamente as janelas, execute o
comando ACTIVATE WINDOW ou SHOW WINDOW.

Para remover janelas da tela e da memria, utilize CLEAR WINDOWS, RELEASE WINDOWS ou
CLEAR ALL. necessrio redefinir as janelas removidas da memria para coloc-las novamente
na janela principal do
Visual FoxPro.

Voc pode utilizar ACTIVATE WINDOW para colocar as janelas do sistema na janela principal do
Visual FoxPro ou em uma janela pai.

As janelas do sistema a seguir podem ser abertas com ACTIVATE WINDOW:

Comando
Chamar pilha
Sesso de dados
De depurao
Depurar sada
Locais
Rastrear
Observar



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

ACTIVATE WINDOW Chamar Pilha

Utilize HIDE WINDOW ou RELEASE WINDOW para remover uma janela do sistema da janela
principal do Visual FoxPro ou de uma janela pai.

ACTIVATE WINDOW, exemplo do comando

O exemplo a seguir define e ativa uma janela denominada output, colocando-a na janela principal
do Visual FoxPro. O comando WAIT pausa a execuo, a janela oculta e, em seguida, reexibida.

CLEAR
DEFINE WINDOW output FROM 2,1 TO 13,75 TITLE 'Sada' ;
CLOSE FLOAT GROW SHADOW ZOOM
ACTIVATE WINDOW output
WAIT WINDOW 'Pressione qualquer tecla para ocultar a janela Sada'
HIDE WINDOW output
WAIT WINDOW 'Pressione qualquer tecla para exibir a janela Sada'
SHOW WINDOW output
WAIT WINDOW 'Pressione qualquer tecla para liberar a janela Sada'
RELEASE WINDOW output

ADATABASES( ), funo

Coloca os nomes de todos os bancos de dados abertos e seus caminhos em uma matriz de varivel.

Sintaxe

ADATABASES(NomeMatriz)

Tipos de retorno

Numrico

Argumentos

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

Comentrios

Os nomes de todos os bancos de dados abertos na sesso de dados atual so colocados em uma
matriz de varivel.

A funo ADATABASES( ) cria uma matriz bidimensional. A primeira coluna da matriz contm os
nomes dos bancos de dados abertos e a segunda coluna contm os caminhos dos bancos de dados.

ADATABASES( ) retorna o nmero de nomes de bancos de dados (linhas) na matriz. Caso nenhum
banco de dados esteja aberto, ADATABASES( ) ir retornar 0 e a matriz no ser criada.

ADATABASES( ), exemplo da funo

O exemplo a seguir abre o banco de dados testdata e, em seguida, utiliza ADATABASES( ) para
criar uma matriz denominada gaDatabase contendo os nomes de todos os bancos de dados abertos.

SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dados
OPEN DATABASE testdata && Abre o banco de dados
CLEAR
? ADATABASES(gaDatabase) && Cria uma matriz de bancos de dados abertos
DISPLAY MEMORY LIKE gadatabase && Exibe o contedo da matriz
CLOSE DATABASES

ADD TABLE, comando

Adiciona uma tabela livre ao banco de dados atual.

Sintaxe

ADD TABLE NomeTabela | ?
[NAME NomeTabelaExtenso]


Argumentos

NomeTabela Especifica o nome da tabela que est sendo adicionada ao banco de dados.

? Exibe a caixa de dilogo Abrir, na qual voc pode selecionar uma tabela a ser adicionada ao
banco de dados.

NAME NomeTabelaExtenso Especifica um nome extenso para a tabela. Nomes extensos podem
conter at 128 caracteres, podendo ser utilizados no lugar de nomes de arquivos reduzidos com
extenso .DBF.

Comentrios

Depois que for adicionada ao banco de dados, voc poder executar as mesmas operaes na tabela
assim como em qualquer outra tabela.

Uma vez adicionada ao banco de dados, a tabela no estar mais livre. No entanto, ser possvel
liberar qualquer tabela do banco de dados ao se executar REMOVE TABLE.

A tabela que est sendo adicionada:

Deve ser um arquivo .DBF vlido.
No pode ter o mesmo nome de uma tabela existente no banco de dados aberto, a menos
que seja atribudo tabela um nome extenso nico.
No pode existir em outro banco de dados. Utilize REMOVE TABLE para remover a tabela
do outro banco de dados.


O banco de dados ao qual a tabela est sendo adicionada no pode estar envolvido em uma
transao.


ADD TABLE, exemplo do comando

O exemplo a seguir cria dois bancos de dados denominados mydbc1 e mydbc2 e uma tabela
denominada table1. Ao ser criada, a tabela adicionada a mydbc1. A tabela ento fechada e
removida de mydbc1. Em seguida, ADD TABLE utilizado para adicionar a tabela a mydbc2.
RENAME TABLE utilizado para mudar o nome da tabela de table1 para table2.

CREATE DATABASE mydbc1
CREATE DATABASE mydbc2
SET DATABASE TO mydbc1
CREATE TABLE table1 (cField1 C(10), n N(10)) && Adiciona tabela a mydbc1
CLOSE TABLES && Uma tabela deve estar fechada para ser removida de um banco de
dados
REMOVE TABLE table1
SET DATABASE TO mydbc2
ADD TABLE table1
RENAME TABLE table1 TO table2


ADEL( ), funo


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

Sintaxe

ADEL(NomeMatriz, nNmeroElemento [, 2])

Tipos de retorno

Numrico

Argumentos

NomeMatriz Especifica a matriz da qual a linha, coluna ou o elemento excludo.

nNmeroElemento Especifica o nmero do elemento, linha ou coluna a ser excludo da matriz.
Para excluir uma coluna da matriz, inclua o argumento opcional 2.

Para obter maiores informaes sobre como fazer referncia a elementos em uma matriz, consulte
DIMENSION.

2 Exclui uma coluna da matriz.

Comentrios

A excluso de um elemento, linha ou coluna de uma matriz no altera o seu tamanho; em vez disso,
as linhas, colunas ou os elementos direita so movidos em direo ao incio da matriz e o ltimo
elemento, linha ou coluna da matriz definido como falso (.F.).

Caso o elemento, a linha ou coluna sejam excludos com sucesso, retorna o nmero 1.

ADEL( ), exemplo da funo

O exemplo a seguir cria e preenche uma matriz e, em seguida, procura por um determinado nome
de empresa que, se encontrado, ser removido da matriz.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre tabela customer
SELECT company FROM customer ;
WHERE country = 'UK' ;
INTO ARRAY gaCompanies
gnCount = _TALLY
gcName = 'Seven Seas Imports'
CLEAR
DISPLAY MEMORY LIKE gaCompanies
gnPos = ASCAN(gaCompanies, gcName) && Procura pela empresa
IF gnPos != 0
* Empresa encontrada, remova-a da matriz
= ADEL(gaCompanies, gnPos)
gnCount = gnCount - 1
ENDIF

DISPLAY MEMORY LIKE gaCompanies

ADIR( ), funo


Coloca informaes sobre arquivos em uma matriz e, em seguida, retorna o nmero de arquivos.

Sintaxe

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

Tipos de retorno

Numrico

Argumentos

NomeMatriz Especifica o nome da matriz. Se a matriz includa no existir, o Visual FoxPro ir
cri-la automaticamente. Se existir e no for suficientemente grande para conter todas as
informaes, o Visual FoxPro aumentar, automaticamente, o seu tamanho para que comporte as
informaes. Se a matriz for maior do que o necessrio, o Visual FoxPro ir trunc-la. Se a matriz
existir e ADIR( ) retornar a 0 por no ter localizado nenhum arquivo correspondente, a matriz
permanecer inalterada. Se no existir e ADIR( ) retornar a 0, a matriz no ser criada.

A tabela a seguir descreve os contedos e tipos de dados de cada coluna da matriz:

Coluna Contedo da matriz Tipo de dados

1 Nomes dos arquivos Caractere
2 Tamanho dos arquivos Numrico
3 Datas da ltima modificao Data
4 Horrio da ltima modificao Caractere
5 Atributos dos arquivos Caractere
A ltima coluna da matriz contm os atributos dos arquivos correspondentes. Cada atributo de
arquivo expresso por uma letra e um arquivo pode ter mais de um atributo. A tabela abaixo indica
o atributo de arquivo que cada letra representa:

Letra Atributo

A Arquivo - leitura/gravao
H Oculto
R Somente para leitura
S Sistema
D Diretrio ou pasta
cEstruturaArquivo Especifica uma estrutura de arquivo para que voc possa armazenar
informaes sobre arquivos com nomes ou extenses correspondentes a um critrio de pesquisa. Por
exemplo, o critrio pode ser todas as tabelas, todos os arquivos de texto, todos os arquivos com
nomes que comeam pela letra A e assim por diante. Estas pesquisas gerais so feitas incluindo-se
os caracteres curinga * e ? em cEstruturaArquivo
. O ponto de interrogao representa um nico caractere e o asterisco representa qualquer
quantidade de caracteres. Pode-se utilizar qualquer quantidade de caracteres curinga em qualquer
posio dentro da estrutura de arquivo.

Voc pode especificar uma unidade e/ou diretrio para pesquisar nomes de arquivo
correspondentes. Se a unidade e o diretrio no forem especificados, o Visual FoxPro colocar as
informaes sobre os arquivos do diretrio atual na matriz.

cAtributo Especifica a incluso de subdiretrios e arquivos ocultos ou do sistema.

cAtributo pode conter qualquer combinao de D, H e S. A incluso de D retorna nomes de
subdiretrios do diretrio atual, alm dos nomes de arquivos correspondentes estrutura de arquivo
especificado em cEstruturaArquivo. A incluso de H retorna informaes sobre arquivos ocultos
que correspondem estrutura de arquivo especificada em cEstruturaArquivo. A incluso de S
retorna informaes sobre arquivos do sistema correspondentes estrutura de arquivo especificada
em cEstruturaArquivo.

Inclua uma seqncia vazia em cEstruturaArquivo para retornar somente nomes de subdiretrios,
arquivos ocultos ou arquivos do sistema.

Comentrios

Para cada arquivo, ADIR( ) coloca na matriz o nome, o tamanho, a data e o horrio da ltima
modificao e os atributos do arquivo.

ADIR( ), exemplo da funo

O exemplo a seguir utiliza ADIR( ) para criar uma matriz contendo informaes de banco de dados.
Em seguida, os nomes dos bancos de dados so exibidos.

CLOSE DATABASES
SET PATH TO (HOME( ) + 'samples\data')

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

CLEAR
FOR nCount = 1 TO gnDbcnumber && Loop para nmero de bancos de dados
? gaDatabase(nCount,1) && Exibe nomes de bancos de dados
ENDFOR
SET PATH TO HOME( ) && Define caminho para diretrio do Visual FoxPro

AELEMENT( ), funo


Retorna o nmero de um elemento de matriz a partir dos ndices do elemento.

Sintaxe

AELEMENT(NomeMatriz, nndiceLinha [, nndiceColuna])

Tipos de retorno

Numrico

Argumentos

NomeMatriz Especifica o nome da matriz cujo nmero do elemento voc deseja retornar.

nndiceLinha Especifica o ndice de linha. Se a matriz for unidimensional, AELEMENT( ) ir
retornar ao mesmo valor de nndiceLinha.

Se voc incluir apenas nndiceLinha e ele for maior do que o nmero de linhas na matriz, o Visual
FoxPro exibir uma mensagem de erro.

nndiceColuna Especifica o ndice de coluna. Se a matriz for bidimensional, inclua nndiceLinha e
nndiceColuna.

Comentrios

Voc pode referir-se a um elemento de uma matriz bidimensional de duas maneiras. O primeiro
mtodo utiliza dois ndices para especificar a posio da linha e da coluna do elemento na matriz e o
segundo mtodo utiliza o nmero de um nico elemento. AELEMENT( ) retorna o nmero do
elemento quando fornecido com ndices de linha e coluna de um elemento.

As funes do Visual FoxPro ADEL( ), ADIR( ), AFIELDS( ), AINS( ), ALEN( ), ASCAN( ),
ASORT( ) e ASUBSCRIPT( ) podem manipular matrizes bidimensionais e exigem que a referncia
aos elementos seja feita pelo nmero do elemento. AELEMENT( ) facilita a converso de ndices
para um nmero de elemento para uso por meio dessas funes. Os ndices de linha e coluna
correspondentes podem ser retornados de um nmero de elemento com ASUBSCRIPT( ).

O exemplo a seguir ilustra a criao de uma matriz com duas linhas e trs colunas. DISPLAY
MEMORY exibe o contedo dos elementos da matriz listados na ordem dos nmeros de elementos.

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

Pode-se fazer referncia a um elemento pelos seus ndices ou pelo seu nmero de elemento. Os
comandos STORE INVOICE TO gaMyArray(2, 1) e STORE INVOICE TO gaMyArray(4)
armazenam a seqncia de caracteres INVOICE no mesmo elemento de matriz.

Em matrizes unidimensionais, o nmero do elemento idntico ao seu ndice de linha nica. No
necessrio utilizar AELEMENT( ) com matrizes unidimensionais.


AERROR( ), funo

Cria uma matriz de varivel que contm informaes sobre o erro mais recente do ODBC, OLE ou
Visual FoxPro.

Sintaxe

AERROR(NomeMatriz)

Tipos de retorno

Numrico

Argumentos

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

Comentrios

A funo AERROR( ) cria uma matriz com seis colunas e retorna o nmero de linhas da matriz. O
tipo de erro ocorrido determina o nmero de linhas da matriz.

A tabela a seguir descreve o contedo de cada elemento quando ocorre um erro do Visual FoxPro.
Na ocorrncia de um erro, a matriz conter uma linha.

Nmero do elemento Descrio

1 Numrico. Contm o nmero do erro. Idntico ao valor retornado por ERROR( ).
2 Caractere. O texto da mensagem de erro. Idntico ao valor retornado por MESSAGE( ).
3 O valor nulo. No entanto, se o erro possuir um parmetro de erro adicional, ir conter o
texto do parmetro de erro. Idntico ao valor retornado por SYS(2018).
4 O valor nulo. No entanto, quando apropriado, contm o nmero da rea de trabalho em que
o erro ocorreu.
5 O valor nulo. No entanto, se um disparador falhar (erro 1539), ir conter um dos valores
numricos abaixo:
1 - Erro no Disparador de insero.
2 - Erro no Disparador de atualizao.
3 - Erro no Disparador de excluso.
6 O valor nulo.
7 O valor nulo.
A tabela a seguir descreve o contedo de cada elemento quando ocorrem os erros de OLE nmero
1427 ou 1429. Nestes casos, a matriz contm uma linha.

Nmero do elemento Descrio

1 Numrico. Contm 1427 ou 1429.
2 Caractere. O texto da mensagem de erro do Visual FoxPro.
3 Caractere. O texto da mensagem de erro de OLE.
4 Caractere. O nome do aplicativo (Microsoft Excel, por exemplo).
5 O valor nulo ou Caractere. Contm o nome do arquivo de Ajuda do aplicativo em que
podem ser encontradas maiores informaes sobre o erro, se as informaes estiverem disponveis
no aplicativo; caso contrrio, contm o valor nulo.
6 O valor nulo ou Caractere. Contm o identificador de contexto da Ajuda para o tpico
apropriado, se as informaes estiverem disponveis no aplicativo; caso contrrio, contm o valor
nulo.
7 Numrico. Um nmero de exceo OLE 2.0.
A tabela a seguir descreve o contedo de cada elemento quando ocorre um erro do ODBC de
nmero 1526. Neste caso, a matriz contm duas ou mais linhas; uma linha para cada erro do ODBC.

Nmero do elemento Descrio

1 Numrico. Contm 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 Numrico. O nmero do erro da fonte de dados do ODBC.
6 Numrico. O identificador de conexo do ODBC.
7 O valor nulo.

AERROR( ), exemplo da funo

O exemplo a seguir utiliza ON ERROR para especificar uma rotina de manipulao de erros
denominada errhand. Um erro gerado emitindo-se um comando com erro de ortografia (BRWS).
A rotina de manipulao de erros errhand utiliza AERROR( ) para criar uma matriz contendo
informaes de erro e essa informao , ento, exibida.

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

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

PROCEDURE errhand
= AERROR(aErrorArray) && Dadas do erro mais recente
CLEAR
? 'O erro apresentou as seguintes informaes' && Exibe mensagem
FOR n = 1 TO 7 && Exibe todos os elementos da matriz
? aErrorArray(n)
ENDFOR


AFIELDS( ), funo


Coloca as informaes sobre a estrutura da tabela atual em uma matriz e retorna o nmero de
campos da tabela.

Sintaxe

AFIELDS(NomeMatriz [, nreaTrabalho | cAliasTabela])

Tipos de retorno

Numrico

Argumentos

NomeMatriz Especifica uma matriz na qual so colocadas informaes sobre a estrutura da tabela.
Se a matriz includa em AFIELDS( ) no existir, o Visual FoxPro a criar automaticamente. Se
existir, mas no for grande o bastante para conter as informaes retornadas por AFIELDS( ), o
tamanho da matriz aumentado automaticamente para acomodar as informaes.

nreaTrabalho Especifica a rea de trabalho da tabela cujas informaes de estrutura so
colocadas em uma matriz.

cAliasTabela Especifica o alias da tabela cujas informaes de estrutura so colocadas em uma
matriz.

Se voc omitir nreaTrabalho e cAliasTabela, as informaes de estrutura colocadas em uma
matriz diro respeito tabela na rea de trabalho selecionada atualmente.

A tabela a seguir descreve o que cada coluna da matriz contm e o tipo de dados da informao
armazenada em cada coluna. Uma linha criada para cada campo da tabela.

Nmero da coluna Informao do campo Tipo de dados

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

Comentrios

AFIELDS( ) retorna o nmero de campos da tabela. A matriz contm 11 colunas e um nmero de
linhas igual ao nmero de campos da tabela.
Voc pode utilizar COPY STRUCTURE EXTENDED para colocar informaes similares em uma
tabela em vez de matriz.

AFIELDS( ), exemplo da funo

O exemplo a seguir cria uma matriz denominada gaMyArray contendo informaes sobre os
campos na tabela customer. Os nomes dos campos so exibidos.

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

gnFieldcount = AFIELDS(gaMyArray) && Cria matriz
CLEAR
FOR nCount = 1 TO gnFieldcount
? gaMyArray(nCount,1) && Exibe nomes de campo
ENDFOR

AFONT( ), funo

Coloca as informaes sobre as fontes disponveis em uma matriz.

Sintaxe

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

Tipos de retorno

Lgico

Argumentos

NomeMatriz Especifica a matriz de varivel em que so colocados os nomes de fontes disponveis.
Se a matriz no for suficientemente grande para conter todas as fontes, o Visual FoxPro aumenta,
automaticamente, o tamanho da matriz. Se voc especificar uma matriz bidimensional j existente,
o Visual FoxPro mudar a matriz para uma matriz unidimensional.

Se a matriz for criada com sucesso, AFONT( ) retornar verdadeiro (.T.); caso contrrio, retornar
falso (.F.).

cNomeFonte Especifica uma fonte para a qual a informao ser colocada na matriz.

Se a fonte que voc especificar suportar apenas tamanhos de fonte discretos (8 pontos, 10 pontos,
...), os tamanhos sero armazenados na matriz e AFONT( ) retornar verdadeiro (.T.). Se a fonte
especificada for dimensionvel (suportar valores fracionrios de tamanho), a matriz ter um nico
elemento contendo -1 e AFONT( ) retornar verdadeiro (T.).

Se a fonte que voc especificar no estiver disponvel, a matriz no ser criada e AFONT( )
retornar falso (.F.).

nTamanhoFonte Especifica um tamanho para a fonte determinada em cNomeFonte.

Se o tamanho da fonte nTamanhoFonte estiver disponvel para a fonte especificada em
nTamanhoFonte, a matriz ter um nico elemento contendo um valor verdadeiro (.T.) e AFONT( )
retornar verdadeiro (.T.). Se o tamanho no estiver disponvel para a fonte especificada, a matriz
no ser criada e AFONT( ) retornar falso (.F.).

Comentrios

AFONT( ) coloca os nomes de fontes disponveis em uma matriz e tambm pode ser utilizada para
determinar os tamanhos possveis de fontes ou se uma fonte dimensionvel. Utilize GETFONT( )
para exibir uma caixa de dilogo contendo as fontes disponveis, seus tamanhos e estilos.

AFONT( ), exemplo de funo

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

CLEAR
=AFONT(gaFontArray) && Matriz contendo nomes de fonte
gnNumFonts = ALEN(gaFontArray) && Nmero de fontes
IF gnNumFonts > 10
gnNumFonts = 10 && Exibe primeiras 10 fontes
ENDIF

FOR nCount = 1 TO gnNumFonts
? ALLTRIM(gaFontArray(nCount)) && Exibe nome da fonte
?? ' Este um exemplo de ' ;
+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8
ENDFOR


AINS( ), funo

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

Sintaxe

AINS(NomeMatriz, nNmeroElemento [, 2])

Tipos de retorno

Numrico

Argumentos

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

nNmeroElemento Especifica onde o novo elemento, linha ou coluna inserido na matriz.

Para inserir um elemento em uma matriz unidimensional, inclua NomeMatriz e o elemento
nNmeroElemento onde ocorre a insero. O novo elemento inserido imediatamente antes do
elemento nNmeroElemento. Para inserir uma linha em uma matriz bidimensional, inclua
NomeMatriz e o nmero da linha nNmeroElemento onde ocorre a insero. A nova linha
inserida imediatamente antes da linha nNmeroElemento.

Para obter maiores informaes sobre como fazer referncia a um elemento de matriz atravs de
seus ndices, consulte DIMENSION.

2 Insere uma coluna em uma matriz bidimensional. A nova coluna inserida imediatamente antes
da coluna especificada com nNmeroElemento.
Comentrios

Inserir um elemento, linha ou coluna em uma matriz no altera o tamanho da matriz. Os elementos,
linhas ou colunas direita so deslocados para o fim da matriz e seu o ltimo elemento, linha ou
coluna descartado. O elemento, linha ou coluna recm-inserido inicializado com um valor falso
(.F.).

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

AINS( ), exemplo da funo

O exemplo a seguir cria e preenche uma matriz com nomes de empresas e procura um nome de
empresa especfico na matriz. Se no for encontrado, o nome ausente ser adicionado matriz.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
SELECT company FROM customer ;
WHERE country = 'Germany' ;
INTO ARRAY gaCompanies

gnCount = _TALLY
gcName = 'Seven Seas Imports'
CLEAR
DISPLAY MEMORY LIKE gaCompanies

IF ASCAN(gaCompanies, gcName) = 0 && Procura pela empresa
*** Empresa no encontrada-adicione-a ***
DIMENSION gaCompanies[gnCount+1,1]
= AINS(gaCompanies, gnCount+1)

gaCompanies[gnCount+1] = gcName
ENDIF
DISPLAY MEMORY LIKE gaCompanies


ALEN( ), funo


Retorna o nmero de elementos, linhas ou colunas de uma matriz.

Sintaxe

ALEN(NomeMatriz [, nAtributoMatriz])

Tipos de retorno

Numrico

Argumentos

NomeMatriz Especifica o nome da matriz. Se voc incluir apenas o nome da matriz, ALEN( )
retornar o nmero de elementos da matriz.

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

0 Retorna o nmero de elementos da matriz. Omitir nAtributoMatriz equivale a especificar 0.
1 Retorna o nmero de linhas da matriz.
2 Retorna o nmero de colunas da matriz. Se a matriz for unidimensional, ALEN( ) retornar
0 (sem colunas).

ALEN( ), exemplo da funo

O exemplo a seguir utiliza AFONT( ) para criar uma matriz contendo os nomes de todas as fontes
disponveis. ALEN( ) utilizado para determinar o nmero de linhas na matriz. O nome de cada
fonte exibido, juntamente com um exemplo da fonte. Se houver mais de 10 fontes instaladas,
somente as 10 primeiras sero exibidas.

CLEAR
=AFONT(gaFontArray) && Matriz contendo nomes de fonte
gnNumFonts= ALEN(gaFontArray) && Nmero de fontes
IF gnNumFonts > 10
gnNumFonts = 10 && Exibe as primeiras 10 fontes
ENDIF

FOR nCount = 1 TO gnNumFonts
? ALLTRIM(gaFontArray(nCount)) && Exibe nome da fonte
?? ' Este um exemplo da fonte ' ;
+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8
ENDFOR


ALLTRIM( ), funo

Remove os espaos em branco do incio e do final da expresso de caracteres especificada e retorna
a expresso com os espaos removidos como uma seqncia de caracteres.

Sintaxe

ALLTRIM(cExpresso)

Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres da qual sero retirados os espaos em branco
iniciais e finais.

Comentrios

ALLTRIM( ) pode ser utilizado para assegurar que os espaos em branco sero removidos dos
dados inseridos pelo usurio.

ALLTRIM( ), exemplo da funo

O exemplo a seguir utiliza AFONT( ) para criar uma matriz contendo os nomes de todas as fontes
disponveis. ALLTRIM( ) utilizada para remover espaos iniciais e finais dos nomes de fonte. O
nome de cada fonte com espaos removidos ser exibido, juntamente com um exemplo da fonte. Se
mais de 10 fontes estiverem instaladas, somente as 10 primeiras sero exibidas.

CLEAR
=AFONT(gaFontArray) && Matriz contendo nomes de fonte
gnNumFonts= ALEN(gaFontArray) && Nmero de fontes
IF gnNumFonts > 10
gnNumFonts = 10 && Exibe 10 primeiras fontes
ENDIF

FOR nCount = 1 TO gnNumFonts
? ALLTRIM(gaFontArray(nCount)) && Exibe nome da fonte
?? ' Isto um exemplo de ' ;
+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8
ENDFOR

APPEND FROM ARRAY, comando

Adiciona tabela atualmente selecionada um registro para cada linha de uma matriz e preenche
cada registro com dados da linha da matriz correspondente.

Sintaxe

APPEND FROM ARRAY NomeMatriz
[FOR lExpresso]
[FIELDS ListaCampos]

Argumentos

NomeMatriz Especifica o nome da matriz que contm os dados que devem ser copiados para os
novos registros. Novos registros so adicionados tabela at que todas as linhas da matriz tenham
sido includas.

FOR lExpresso Especifica uma condio para a incluso de registros da matriz. lExpresso deve
conter o nome de um campo de destino em sua expresso condicional.

Antes da incluso de uma linha da matriz em um registro da tabela, o elemento de matriz
correspondente ao campo de destino especificado em lExpresso verificado para ver se
corresponde condio em lExpresso. Caso o elemento de matriz satisfaa a condio, ser
includo um registro.

Caso o elemento de matriz no satisfaa a condio, a linha da matriz no ser includa e a linha
seguinte ser verificada para ver se corresponde condio.

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

Comentrios

Campos dos tipos Memo e Geral so ignorados em APPEND FROM ARRAY. Quando uma tabela
aberta para uso compartilhado, APPEND FROM ARRAY bloqueia o cabealho da tabela
enquanto os registros so adicionados.

Caso a matriz seja unidimensional, APPEND FROM ARRAY adicionar um registro tabela. O
contedo do primeiro elemento da matriz preenche o primeiro campo do registro recm-adicionado,
o contedo do segundo elemento da matriz preenche o segundo campo do registro, e assim por
diante.

Caso o nmero de elementos da matriz unidimensional seja maior do que o nmero de campos da
tabela, os elementos adicionais sero ignorados. Caso o nmero de campos da tabela seja maior do
que o nmero de elementos da matriz, os campos adicionais sero inicializados com o valor vazio
padro. A seguir, so apresentados os valores vazios padro para cada tipo de campo:

Tipo de campo Valor padro

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


Caso a matriz seja bidimensional, APPEND FROM ARRAY adicionar um registro tabela para
cada linha da matriz. Por exemplo, caso a matriz tenha quatro linhas, quatro novos registros sero
includos na tabela.

O contedo da primeira coluna da matriz preenche o primeiro campo dos registros recm-
adicionados, a segunda coluna da matriz preenche o segundo campo dos novos registros, e assim
sucessivamente. Por exemplo, se a matriz tiver quatro linhas e trs colunas, os elementos da
primeira coluna da matriz preenchero o primeiro campo de cada um dos quatro novos registros
includos na tabela.

Caso o nmero de colunas da matriz bidimensional seja maior do que o nmero de campos da
tabela, as colunas adicionais sero ignoradas. Caso o nmero de campos da tabela seja maior do que
o nmero de colunas da matriz, os campos adicionais sero inicializados com valores vazios.

APPEND FROM ARRAY pode preencher um campo, mesmo que o tipo de dado do elemento da
matriz correspondente no corresponda ao tipo de dado do campo, desde que os dados do elemento
de matriz sejam compatveis com o tipo de dado do campo correspondente. Caso os dados no
sejam compatveis, o campo ser inicializado com um valor vazio.
Exemplo de incompatibilidade nos tipos de dados

Este exemplo cria uma tabela e, em seguida, utiliza APPEND FROM ARRAY para incluir um
registro na nova tabela.

LOCAL ARRAY aNewRec(3)

* Criar uma tabela
CREATE TABLE Test FREE (Object C(10), Color C(16), SqFt n(6,2))
SCATTER TO aNewRec BLANK && Cria uma nova matriz a partir da tabela
aNewRec[1]="Box" && Preenche a matriz
aNewRec[2]="Red"
aNewRec[3]=12.5
APPEND FROM ARRAY aNewRec && Adiciona o registro contendo contedo da matriz
&& tabela


APPEND FROM, comando


Adiciona registros de outro arquivo no fim da tabela atualmente selecionada.

Sintaxe

APPEND FROM NomeArquivo | ?
[FIELDS ListaCampos]
[FIELDS ListaCampos]
[[TYPE] [DELIMITED [WITH Delimitador | WITH BLANK | WITH TAB]
| WITH CHARACTER Delimitador]
| DIF | FW2 | MOD | PDOX | RPD | SDF | SYLK
| WK1 | WK3 | WKS | WR1 | WRK | XLS | XL5]]
[AS nPginaCdigo]

Argumentos

NomeArquivo Especifica o nome do arquivo a partir do qual deve ser feita a incluso. Se voc no
incluir uma extenso de nome de arquivo, ser considerada uma tabela do Visual FoxPro e a
extenso padro .DBF. Se a tabela de origem da incluso for do Visual FoxPro, os registros dessa
tabela marcados para excluso sero includos, desconsiderando a definio de SET DELETED.

? Exibe a caixa de dilogo Abrir, onde voc pode selecionar uma tabela de origem para a incluso.

FIELDS ListaCampos Especifica para quais campos sero includos dados.

FOR lExpresso Inclui um novo registro para cada registro da tabela selecionada atualmente para
o qual lExpresso resulte em verdadeiro (.T.). Os registros so includos at chegar ao fim desta
tabela. Se voc omitir FOR, o arquivo de origem inteiro ser includo na tabela.

TYPE Especifica o tipo do arquivo a partir do qual est sendo feita a incluso. Embora seja
necessrio especificar um tipo de arquivo se o arquivo a partir do qual a incluso estiver sendo feita
no for uma tabela do Visual FoxPro, no ser necessrio incluir a palavra-chave TYPE. possvel
fazer incluses a partir de uma ampla variedade de tipos de arquivos diferentes, inclusive arquivos
de texto ASCII delimitados, onde voc pode especificar um delimitador de campo.

Se o arquivo a partir do qual voc est fazendo a incluso no tiver a extenso padro usual para
esse tipo de arquivo, o nome do arquivo dever incluir a respectiva extenso. Por exemplo, as
planilhas do Microsoft Excel normalmente tm a extenso .XLS. Se a planilha do Excel a partir da
qual voc est fazendo incluses tiver uma extenso diferente da extenso .XLS esperada,
certifique-se de especificar essa extenso.

Observao Ao fazer incluses a partir de uma planilha, os dados desta devem ser armazenados na
ordem principal das linhas e no na ordem principal das colunas. Isso permite que os dados da
planilha includa correspondam estrutura da tabela.

DELIMITED Especifica que o arquivo de origem dos dados a serem includos na tabela atual do
Visual FoxPro delimitado. Um arquivo delimitado um arquivo de texto ASCII em que cada
registro termina com um retorno de carro e uma alimentao de linha. Considera-se, como padro,
que os contedos do arquivo esto separados um do outro por vrgulas (no inclua espaos extras
antes ou depois das vrgulas) e que os valores dos campos de caractere esto delimitados tambm
por aspas. Por exemplo:

"Smith",9999999,"TELEFONE"



Considera-se que a extenso de arquivo .TXT para todos os arquivos delimitados.

Voc poder importar datas de arquivos delimitados se as datas estiverem no formato apropriado. O
formato de data assume o padro mm/dd/aa. A incluso da parte da data relativa ao sculo
opcional. O Visual FoxPro importar uma data, como 12/25/95, que no inclui o sculo e ir
considerar que a data est no sculo XX. Os delimitadores de data podem ser qualquer caractere
no-numrico, exceto o delimitador que separa os campos no arquivo delimitado.

As datas em outros formatos podero ser importadas se o seu formato corresponder a um formato de
data disponvel em SET DATE. Para importar datas que no esto no formato padro, emita SET
DATE com o formato de data correto antes de utilizar APPEND FROM. Para testar se um formato
de data poder ser importado com sucesso, utilize-o com CTOD( ). Se a data for aceitvel para
CTOD( ), ela ser importada corretamente.

DELIMITED WITH Delimitador Indica que os campos de caractere esto delimitados por um
caractere diferente de aspas.

DELIMITED WITH BLANK Especifica arquivos que contm campos separados por espaos em
vez de vrgulas.

DELIMITED WITH TAB Especifica arquivos que contm campos separados por tabulaes em
vez de vrgulas.

DELIMITED WITH CHARACTER Delimitador Especifica os arquivos que contm campos
delimitados pelo caractere especificado com Delimitador. Se Delimitador for um ponto-e-vrgula (o
caractere usado no Visual FoxPro para indicar a continuao da linha de comando), coloque o
ponto-e-vrgula entre aspas. Voc tambm pode especificar as palavras-chaves BLANK e TAB para
Delimitador.

A clusula WITH Delimitador pode ser combinada com a clusula WITH CHARACTER. Por
exemplo, o seguinte comando adiciona registros de um arquivo de texto com campos de caracteres
delimitados com sublinhados e todos os campos delimitados com asteriscos:

APPEND FROM mytxt.txt DELIMITADO COM _ ;
WITH CHARACTER *


DIF Inclua DIF para importar dados de um arquivo .DIF (Data Interchange Format) do VisiCalc.
Vetores (colunas) tornam-se campos da tabela selecionada atualmente e tuplas (linhas) tornam-se
registros. Considera-se que os nomes de arquivos DIF tenham a extenso .DIF.

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

MOD Inclua MOD para importar dados de um arquivo do Microsoft Multiplan verso 4.01. Os
arquivos MOD so criados pelo Microsoft Multiplan verso 4.01, e considera-se que tenham a
extenso .MOD.

PDOX Inclua PDOX para importar dados de um arquivo de banco de dados do Paradox verses
3.5 ou 4.0. Considera-se que os nomes de arquivos do Paradox tenham a extenso .DB.

RPD Inclua RPD para importar dados de um arquivo criado pelo RapidFile verso 1.2. Considera-
se que os nomes de arquivos do RapidFile tenham a extenso .RPD.

SDF Inclua SDF para importar dados de um arquivo System Data Format. Um arquivo SDF um
arquivo de texto ASCII em que os registros tm um comprimento fixo e terminam com um retorno
de carro e uma alimentao de linha. Os campos no so delimitados. Considera-se que a extenso
de arquivos SDF seja .TXT.

SYLK Inclua SYLK para importar dados de um arquivo de formato SYLK (Symbolic Link) de
intercmbio. Os arquivos SYLK so utilizados no Microsoft MultiPlan. As colunas do arquivo
SYLK tornam-se campos da tabela do Visual FoxPro, e as linhas tornam-se registros. Os nomes de
arquivos SYLK no tm extenso.

WK1 Inclua WK1 para importar dados de uma planilha do Lotus 1-2-3 verso 2.x. Cada coluna da
planilha torna-se um campo da tabela; cada linha da planilha torna-se um registro da tabela. Uma
extenso de nome de arquivo .WK1 atribuda a uma planilha criada pelo Lotus 1-2-3 reviso 2.x.

WK3 Inclua WK3 para importar dados de uma planilha do Lotus 1-2-3. Cada coluna da planilha
torna-se um campo da tabela; cada linha da planilha torna-se um registro da tabela. Uma extenso
de nome de arquivo .WK3 atribuda a uma planilha criada pelo Lotus 1-2-3 reviso 3.x.

WKS Inclua WKS para importar dados de uma planilha do Lotus 1-2-3 reviso 1-A. Cada coluna
da planilha torna-se um campo da tabela; cada linha da planilha torna-se um registro da tabela. Uma
extenso de nome de arquivo .WKS atribuda a uma planilha criada pelo Lotus 1-2-3 reviso 1-A.

WR1 Inclua WR1 para importar dados de uma planilha do Lotus Symphony verso 1.1 ou 1.2.
Cada coluna da planilha torna-se um campo da tabela, e cada linha torna-se um registro. Uma
extenso de nome de arquivo .WR1 atribuda a uma planilha criada pelo Symphony verses 1.1 ou
1.2.

WRK Inclua WRK para importar dados de uma planilha do Lotus Symphony verso 1.0. Cada
coluna da planilha torna-se um campo da tabela, e cada linha torna-se um registro. Uma extenso de
nome de arquivo .WRK atribuda a uma planilha criada pelo Symphony verso 1.0.

XLS Inclua XLS para importar dados de uma planilha do Microsoft Excel. Cada coluna da
planilha torna-se um campo da tabela, e cada linha torna-se um registro. A extenso .XLS
atribuda a nomes de arquivos de planilha criados pelo Microsoft Excel.

XL5 Inclua XL5 para importar dados do Microsoft Excel verso 5.0. As colunas da planilha se
tornam campos da tabela, e as linhas tornam-se registros. Os arquivos de planilha criados no
Microsoft Excel tm a extenso .XLS.

AS nPginaCdigo Especifica a pgina de cdigo da tabela ou arquivo de origem. O Visual
FoxPro copia o contedo da tabela ou arquivo de origem e, medida que copia os dados, converte-
os automaticamente na pgina de cdigo da tabela atual.

Se voc especificar um valor para nPginaCdigo que no seja suportado, o Visual FoxPro ir gerar
uma mensagem de erro. Pode-se utilizar GETCP( ) como nPginaCdigo para exibir a caixa de
dilogo Pgina de cdigo, que permite especificar uma pgina de cdigo para a tabela ou arquivo
includo.

Se AS nPginaCdigo for omitido e o Visual FoxPro no conseguir determinar a pgina de cdigo
da tabela ou arquivo de origem, ele copiar o contedo dessa tabela ou arquivo e, medida que
copia os dados, ir convert-los automaticamente na pgina de cdigo atual do Visual FoxPro. Se
SET CPDIALOG estiver ativado (ON), a tabela na rea de trabalho atualmente selecionada ser
marcada com uma pgina de cdigo. Caso voc esteja fazendo a incluso a partir de uma tabela que
no esteja marcada com uma pgina de cdigo, a caixa de dilogo Pgina de cdigo ser exibida,
permitindo que voc selecione a pgina de cdigo da tabela a partir da qual est fazendo a incluso.
A pgina de cdigo atual do Visual FoxPro pode ser determinada com CPCURRENT( ).

Se AS nPginaCdigo for omitido e o Visual FoxPro conseguir determinar a pgina de cdigo da
tabela ou do arquivo que est sendo includo, ele copiar o contedo da tabela ou do arquivo
includo e, medida que copia os dados, ir convert-los automaticamente na pgina de cdigo da
tabela atualmente selecionada.

Se nPginaCdigo for 0, o Visual FoxPro ir considerar que a pgina de cdigo da tabela ou do
arquivo que est sendo includo igual ao da tabela atualmente selecionada e no ser feita
nenhuma converso para a pgina de cdigo atual do Visual FoxPro.

Comentrios

Se o arquivo do qual se faz a incluso for uma tabela criada pelo Visual FoxPro ou por uma verso
anterior do FoxPro, ser considerada uma extenso .DBF. Se a tabela criada pelo Visual FoxPro ou
por uma verso anterior do FoxPro no tiver a extenso .DBF, voc dever especificar a extenso.
Caso o arquivo no seja uma tabela criada pelo Visual FoxPro ou por uma verso anterior do
FoxPro, voc dever especificar o tipo de arquivo a partir do qual est fazendo a incluso.

Antes de fazer uma incluso a partir de uma tabela criada no dBASE IV ou no dBASE V que
contenha um campo Memo, voc deve abrir a tabela no Visual FoxPro com USE. Quando aparecer
a opo para converter o arquivo, selecione Sim.

Se voc fizer a incluso a partir de uma tabela criada pelo Visual FoxPro ou por uma verso anterior
do FoxPro, essa tabela poder ser aberta em uma outra rea de trabalho. Os registros marcados para
excluso nessa tabela sero desmarcados aps a sua incluso.

APPEND FROM, exemplo do comando

No exemplo a seguir, a tabela customer aberta, sua estrutura copiada para uma tabela
denominada backup, e backup aberta. Em seguida, o Visual FoxPro inclui todos os registros da
Finlndia da tabela customer. Estes registros so copiados para um novo arquivo delimitado
denominado TEMP.TXT.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
COPY STRUCTURE TO backup
USE backup
APPEND FROM customer FOR country = 'Finlndia'
COPY TO temp TYPE DELIMITED
MODIFY FILE temp.txt
USE
DELETE FILE backup.dbf
DELETE FILE temp.txt

APPEND MEMO, comando

Copia o contedo de um arquivo texto para um campo Memo.

Sintaxe

APPEND MEMO NomeCampoMemo FROM NomeArquivo
[OVERWRITE] [AS nPginaCdigo]

Argumentos

NomeCampoMemo Especifica o nome do campo Memo no qual o arquivo includo.

FROM NomeArquivo Especifica o arquivo texto cujo contedo copiado para o campo Memo.
Voc deve incluir o nome do arquivo texto inteiro, inclusive a extenso.

OVERWRITE Substitui o contedo atual do campo Memo pelo contedo do arquivo.

AS nPginaCdigo Especifica a pgina de cdigo do arquivo texto copiado para o campo Memo.
O Visual FoxPro copia o contedo do arquivo texto e, medida que copia os dados para o campo
Memo, converte-os automaticamente da pgina de cdigo especificada para a pgina de cdigo da
tabela que contm o campo Memo. Se a tabela que contm o campo Memo no estiver marcada
com uma pgina de cdigo, o Visual FoxPro converter automaticamente os dados da pgina de
cdigo especificada para a pgina de cdigo atual do Visual FoxPro.

Se voc especificar um valor para nPginaCdigo que no seja suportado, o Visual FoxPro ir gerar
uma mensagem de erro. Voc pode utilizar GETCP( ) em nPginaCdigo para exibir a caixa de
dilogo Pgina de cdigo, que permite especificar uma pgina de cdigo para a tabela ou o arquivo
includo.

Se voc omitir a clusula AS nPginaCdigo ou especificar 0 para nPginaCdigo, no haver
nenhuma converso de pgina de cdigo no arquivo texto.

Comentrios

Todo o contedo do arquivo texto ser includo no contedo do campo Memo especificado no
registro atual se a opo Overwrite for omitida.

APPEND MEMO, exemplo do comando

No exemplo a seguir, os contedos do campo Memo notes so copiados para um arquivo
denominado TEST.TXT. TEST.TXT e includos no contedo do campo Memo. Finalmente, os
contedos de TEST.TXT substituem o contedo atual do campo Memo.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE employee && Abre a tabela Employee
WAIT WINDOW 'Observaes de funcionrios no campo Memo - pressione ESC' NOWAIT
MODIFY MEMO notes NOEDIT && Abre o campo Memo notes
COPY MEMO notes TO test.txt && Cria o arquivo de teste a partir do campo Memo
WAIT WINDOW 'Arquivos texto TEST.TXT - pressione ESC' NOWAIT
MODIFY FILE test.txt NOEDIT && Abre o arquivo texto
WAIT WINDOW 'Observaes de funcionrios agora acrescentadas- pressione ESC' NOWAIT

APPEND MEMO notes FROM test.txt && Adiciona contedo do arquivo texto
MODIFY MEMO notes NOEDIT && Exibe campo Memo novamente
WAIT WINDOW 'Sobrescreve observaes de funcionrio- pressione ESC' NOWAIT
APPEND MEMO notes FROM test.txt OVERWRITE && Substitui notes
MODIFY MEMO notes NOEDIT NOWAIT
DELETE FILE test.txt

APPEND PROCEDURES, comando


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

Sintaxe

APPEND PROCEDURES FROM NomeArquivo
[AS nPginaCdigo] [OVERWRITE]

Argumentos

NomeArquivo Especifica o nome de um arquivo texto a partir do qual os procedimentos
armazenados so includos.

AS nPginaCdigo Especifica a pgina de cdigo do arquivo texto a partir do qual os
procedimentos armazenados so includos. O Visual FoxPro copia o contedo do arquivo texto e, ao
fazer isso, converte-o automaticamente na pgina de cdigo especificada.

Se voc especificar um valor para nPginaCdigo que no seja suportado, o Visual FoxPro ir gerar
uma mensagem de erro. Pode-se utilizar GETCP( ) em nPginaCdigo
para exibir a caixa de dilogo Pgina de cdigo, que permite especificar uma pgina de cdigo para
o arquivo texto a partir do qual os procedimentos armazenados so includos.

Se voc omitir AS nPginaCdigo, o Visual FoxPro copiar o contedo do arquivo texto a partir do
qual os procedimentos armazenados so includos e, ao fazer isso, ir convert-lo automaticamente
na pgina de cdigo atual do Visual FoxPro. Para determinar a pgina de cdigo atual do Visual
FoxPro, utilize CPCURRENT( ).

Se nPginaCdigo for 0, o Visual FoxPro ir considerar que a pgina de cdigo do arquivo texto, a
partir do qual os procedimentos armazenados so includos, a mesma pgina de cdigo do banco
de dados atual, no ocorrendo nenhuma converso para a pgina de cdigo atual do Visual FoxPro.

OVERWRITE Especifica que os procedimentos atuais armazenados no banco de dados so
sobrescritos pelos do arquivo texto. Se voc omitir OVERWRITE, os procedimentos atuais
armazenados no banco de dados no sero sobrescritos e os procedimentos armazenados no arquivo
texto sero includos nos procedimentos j armazenados.

Comentrios

Utilize o comando APPEND PROCEDURES para modificar procedimentos armazenados em um
banco de dados utilizando a linguagem de programao. Um banco de dados dever estar aberto e
ativo quando APPEND PROCEDURES for emitido; caso contrrio, o Visual FoxPro ir gerar uma
mensagem de erro.

APPEND PROCEDURES, exemplo do comando

O exemplo a seguir abre o banco de dados testdata. Uma tabela temporria, denominada
mytablecom um nico campo Memo, criada; e REPLACE utilizado para colocar um
procedimento armazenado denominado MyProcedure no campo Memo. COPY MEMO utilizado
para criar um arquivo texto temporrio denominado MYTEMP.TXT, que contm o contedo do
campo Memo.
APPEND PROCEDURES utilizado para incluir o procedimento armazenado do arquivo texto
temporrio no banco de dados. DISPLAY PROCEDURES exibe os procedimentos armazenados no
banco de dados e, em seguida, a tabela e o arquivo texto temporrios so apagados.

Observao: Para exibir ou editar procedimentos armazenados por meio da interface do usurio,
utilize o Criador de bancos de dados.

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

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

* Adiciona o comando PROCEDURE, nome e retorno de carro /alimentao de linha ao
* campo Memo
REPLACE mProcedure WITH "PROCEDURE MyProcedure" + CHR(13) + CHR(10)

* Copia o contedo do campo Memo para um arquivo temporrio

COPY MEMO mProcedure TO mytemp.txt
USE && Fecha a tabela temporria

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

* Exibe os procedimentos associados com o banco de dados atual
DISPLAY PROCEDURES
DELETE FILE mytable.dbf && Apaga a tabela temporria
DELETE FILE mytable.fpt && Apaga o arquivo memo da tabela temporria
DELETE FILE mytemp.txt && Apaga o arquivo texto temporrio




APPEND, comando


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

Sintaxe

APPEND [BLANK]
[IN nreaTrabalho | cAliasTabela]
[NOMENU]


Argumentos

BLANK Adiciona um registro em branco ao fim da tabela atual. O Visual FoxPro no abre uma
janela de edio quando voc emite APPEND BLANK.

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

IN nreaTrabalho Especifica a rea de trabalho da tabela na qual um novo registro ser includo.

IN cAliasTabela Especifica o alias da tabela na qual um novo registro ser includo.

Se voc omitir nreaTrabalho e cAliasTabela, um novo registro ser includo na tabela na rea de
trabalho selecionada no momento. Se voc emitir APPEND, um registro em branco ser adicionado
tabela especificada com nreaTrabalho ou cAliasTabela e a tabela ser automaticamente
selecionada. Se voc emitir APPEND BLANK, um registro em branco ser adicionado tabela
especificada com nreaTrabalho ou cAliasTabela e a tabela no ser selecionada.

NOMENU Especifica que o ttulo do menu Tabela ser removido da barra de menus do sistema,
evitando alteraes no formato da janela de edio.

Comentrios

Quando voc emite APPEND ou APPEND BLANK e uma tabela no est aberta na rea de
trabalho selecionada no momento, a caixa de dilogo Abrir exibida, de forma que voc possa
escolher uma tabela na qual inclua registros.

APPEND abre uma janela de edio para que voc possa fornecer dados a um ou mais novos
registros. Quando voc adiciona um novo registro, o Visual FoxPro atualiza todos os ndices
abertos.

APPEND, exemplo do comando

O exemplo a seguir utiliza APPEND BLANK para criar uma tabela com 10 registros contendo
valores aleatrios e, em seguida, exibe os valores mximo e mnimo na tabela.

CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10 && Inclui 10 registros
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatrios
ENDFOR

CLEAR
LIST && Exibe os valores
gnMaximum = 1 && Inicializa valor mnimo
gnMinimum = 100 && Inicializa valor mximo
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'O valor mnimo : ', gnMinimum && Exibe valor mnimo
? 'O valor mximo : ', gnMaximum && Exibe valor mximo


APRINTERS( ), funo


Coloca os nomes das impressoras atualmente instaladas no Gerenciador de Impresso do Windows
em uma matriz de memria.

Sintaxe

APRINTERS(NomeMatriz)

Tipos de retorno

Numrico

Argumentos

NomeMatriz Especifica o nome da matriz que contm os nomes das impressoras instaladas e suas
portas. Se a matriz includa no existir, o Visual FoxPro ir cri-la automaticamente. Se a matriz
existir e no for grande o suficiente para conter todas as informaes sobre as impressoras, o Visual
FoxPro aumentar automaticamente o tamanho da matriz para que comporte as informaes. Caso a
matriz seja maior do que o necessrio, o Visual FoxPro ir trunc-la. Caso a matriz exista e
APRINTERS( ) retorne 0, porque nenhuma impressora est instalada, a matriz permanecer
inalterada. Se a matriz no existir e APRINTERS( ) retornar 0, a matriz no ser criada.


Comentrios

A funo APRINTERS( ) cria uma matriz bidimensional. A primeira coluna da matriz contm os
nomes das impressoras atualmente instaladas e a segunda coluna contm as portas s quais as
impressoras esto conectadas.

APRINTERS( ) retorna o nmero de impressoras instaladas. Caso nenhuma impressora esteja
instalada, ela retornar 0.

O Visual FoxPro obtm os nomes das impressoras instaladas e suas portas no Windows. No
entanto, o Visual FoxPro no verifica se as impressoras esto de fato conectadas mquina.

APRINTERS( ), exemplo da funo

O exemplo a seguir utiliza APRINTERS( ) para criar uma matriz denominada gaPrinters que
contm os nomes e as portas das impressoras instaladas. Em seguida, as impressoras e suas portas
so exibidas. Se nenhuma impressora estiver instalada, ser exibida uma mensagem.

IF APRINTERS(gaPrinters) > 0 && Se houver drivers de impressoras instalados
CLEAR && Limpa a janela principal do Visual FoxPro
DISPLAY MEMORY LIKE gaPrinters && Exibe as impressoras e portas
ELSE && Caso contrrio, Nenhuma impressora instalada
WAIT WINDOW ' Nenhuma impressora instalada.'
ENDIF



ASC( ), funo

Retorna o valor ANSI para o caractere mais esquerda em uma expresso de caracteres.

Sintaxe

ASC(cExpresso)


Tipos de retorno

Numrico

Argumentos

cExpresso Especifica a expresso de caracteres que contm o caractere cujo valor ANSI
retornado por ASC( ). Qualquer caractere aps o primeiro caractere em cExpresso ser ignorado
por ASC( ).

Comentrios

ASC( ) retorna a posio do caractere na tabela de caracteres da pgina de cdigo atual. Cada
caractere tem um valor ANSI exclusivo no intervalo de 0 a 255.

ASC( ), exemplo da funo

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

STORE 'ABCDEFGHIJ' TO gcANSI && 10 caracteres
CLEAR
FOR nCOUNT = 1 TO 10
? SUBSTR(gcANSI, nCount,1) && Exibe um caractere
?? ASC(SUBSTR(gcANSI, nCount)) && Exibe o valor ANSI
ENDFOR


ASCAN( ), funo

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

Sintaxe

ASCAN(NomeMatriz, eExpresso [, nElementoInicial [, nElementosProcurados]])


Tipos de retorno

Numrico

Argumentos

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

eExpresso Especifica a expresso geral a ser procurada.

nElementoInicial Especifica o nmero do elemento em que a procura ir comear. O nmero do
elemento especificado ser includo na procura. Se voc omitir nElementoInicial, a procura ser
feita, como padro, na matriz inteira.

nElementosProcurados Especifica o nmero de elementos em que ser feita a procura. Se voc
omitir nElementoInicial e nElementosProcurados, a procura ter incio no primeiro elemento da
matriz e continuar at o ltimo elemento.

Observao Voc pode referir-se a um elemento de uma matriz de varivel bidimensional de duas
maneiras. O primeiro mtodo utiliza dois ndices para especificar a posio do elemento na matriz
em termos de linha e coluna; o outro mtodo utiliza um nmero de elemento. Esta funo e outras
que manipulam matrizes bidimensionais exigem nmeros de elementos (nElementoInicial e
nElementosProcurados). Utilize AELEMENT( ) para retornar o nmero do elemento a partir de
ndices de linha e coluna em uma matriz bidimensional.

Comentrios

Caso seja localizada uma correspondncia, ASCAN( ) retornar o nmero do elemento que contm
a expresso. Caso contrrio, ASCAN( ) retornar 0.

Os critrios para uma correspondncia bem-sucedida de dados de caractere so determinados pela
definio de SET EXACT. Se SET EXACT estiver ativado (ON), um elemento dever
corresponder ao caractere da expresso de procura e ter o mesmo comprimento. Caso SET EXACT
esteja desativado (OFF) e haja uma correspondncia entre um elemento e a expresso de procura at
o final da expresso, a correspondncia ser bem-sucedida. Para obter maiores informaes sobre
critrios de correspondncia para seqncias de caracteres, consulte a tabela de comparao de
seqncias no tpico SET EXACT.

ASCAN( ), exemplo da funo

O exemplo a seguir cria e preenche uma matriz com nomes de empresa e depois utiliza ASCAN( )
para procurar determinado nome de empresa. Se o nome da empresa for localizado, ser removido
da matriz.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
SELECT company FROM customer ;
WHERE country = 'UK' ;
INTO ARRAY gaCompanies
gnCount = _TALLY
gcName = 'Seven Seas Imports'
CLEAR
DISPLAY MEMORY LIKE gaCompanies*
gnPos = ASCAN(gaCompanies, gcName) && Procura pela empresa
IF gnPos != 0
*** Empresa encontrada, remova-a da matriz ***
= ADEL(gaCompanies, gnPos)
gnCount = gnCount - 1

ENDIF
DISPLAY MEMORY LIKE gaCompanies

ASIN( ), funo

Retorna em radianos o arco seno de uma expresso numrica.

Sintaxe

ASIN(nExpresso)

Tipos de retorno

Numrico

Argumentos

nExpresso Especifica a expresso numrica cujo arco seno retornado por ASIN( ). O valor de
nExpresso pode variar de +1 at 1 e o valor retornado por ASIN( ) pode variar de pi/2 a +pi/2 (
1,57079 a 1,57079). O nmero de casas decimais na exibio do resultado pode ser especificado
com SET DECIMALS.

Comentrios

Utilize RTOD( ) para converter radianos em graus.

ASIN( ), exemplo da funo

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



ASORT( ), funo


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

Sintaxe

ASORT(NomeMatriz [, nElementoInicial [, nNmeroClassificados [, nOrdemClassificao]]])

Tipos de retorno

Numrico

Argumentos

NomeMatriz Especifica o nome da matriz a ser classificada.

nElementoInicial Especifica o elemento inicial da classificao. Se voc omitir nElementoInicial,
a matriz ser classificada, como padro, a partir do primeiro elemento. Se a matriz for
unidimensional, a classificao incluir nElementoInicial. Se ela for bidimensional, o elemento
inicial nElementoInicial determinar a linha em que a classificao ir comear e a coluna que
determina a ordem de classificao das linhas.

Observao Voc pode referir-se a um elemento de uma matriz bidimensional de duas maneiras. O
primeiro mtodo utiliza dois ndices para especificar a posio do elemento na matriz em termos de
linha e coluna; o outro mtodo utiliza um nmero de elemento. Esta funo e outras que manipulam
matrizes bidimensionais exigem nmeros de elementos (em ASORT( ), as expresses numricas
nElementoInicial e nNmeroClassificados). Voc pode utilizar AELEMENT( ) para retornar o
nmero do elemento a partir de ndices de linha e coluna em uma matriz bidimensional.

O exemplo a seguir ilustra o fato de que o elemento inicial nElementoInicial determina o modo
como as linhas em uma matriz bidimensional so classificadas. Uma matriz pequena denominada
gaArray criada e classificada duas vezes. A primeira classificao comea no primeiro elemento
de gaArray e as linhas so classificadas com base nos valores contidos na primeira coluna da
matriz. A segunda classificao comea no quarto elemento de gaArray e as linhas so classificadas
com base nos valores contidos na segunda coluna.

A primeira classificao comea na primeira linha. A segunda comea na segunda linha. Voc pode
utilizar DISPLAY MEMORY para exibir o contedo da matriz; nestes exemplos, so utilizadas
tabelas para exibir graficamente os resultados das classificaes.

Os comandos abaixo criam a matriz denominada gaArray:

DIMENSION gaArray(3,2)
gaArray(1) = 'G'
gaArray(2) = 'A'
gaArray(3) = 'C'
gaArray(4) = 'Z'
gaArray(5) = 'B'
gaArray(6) = 'N'


gaArray tem a aparncia a seguir:

Coluna 1 Coluna 2

Linha 1 G A
Linha 2 C Z
Linha 3 B N


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

=ASORT(gaArray,1)

Observe a nova ordem das linhas:

Coluna 1 Coluna 2

Linha 1 B N
Linha 2 C Z
Linha 3 G A


Em seguida, a matriz classificada a partir do seu quarto elemento (2,2). Os elementos na segunda
coluna so colocados em ordem por meio de uma reorganizao das linhas da matriz.

=ASORT(gaArray,4)



Observe a diferena na ordem das linhas:

Coluna 1 Coluna 2

Linha 1 B N
Linha 2 G A
Linha 3 C Z
nNmeroClassificados Especifica o nmero de elementos classificados em uma matriz
unidimensional ou o nmero de linhas classificadas em uma matriz bidimensional. Por exemplo, se
a matriz for unidimensional e nElementoInicial for 2, indicando que a classificao comea no
segundo elemento da matriz, e nNmeroClassificados for 3, indicando que a classificao deve
incluir trs elementos, o segundo, o terceiro e o quarto elementos da matriz sero classificados. Se
nNmeroClassificados for 1 ou for omitido, todos os elementos da matriz, a partir do elemento
inicial nElementoInicial at o ltimo elemento, sero classificados.

Se a matriz for bidimensional, nNmeroClassificados designar o nmero de linhas que devem ser
classificadas, a partir da linha que contm o elemento inicial nElementoInicial. Por exemplo, se
nElementoInicial for 2 e nNmeroClassificados for 3, a linha que contm o segundo elemento de
matriz e as duas linhas seguintes sero classificadas. Se nNmeroClassificados for 1 ou for
omitido, todas as linhas da matriz, a partir da linha que contm o elemento inicial nElementoInicial
at a ltima linha, sero classificadas.

nOrdemClassificao Especifica a ordem de classificao (ascendente ou descendente) dos
elementos da matriz. Como padro, os elementos de matriz so classificados em ordem ascendente.
Se nOrdemClassificao for 0 ou for omitida, os elementos de matriz sero classificados em ordem
ascendente. Se nOrdemClassificao for 1 ou qualquer valor diferente de zero, os elementos de
matriz sero classificados em ordem descendente.

Comentrios

Todos os elementos includos na classificao devem ter o mesmo tipo de dados. As matrizes
unidimensionais so classificadas pelos seus elementos; as matrizes bidimensionais so
classificadas pelas suas linhas. Quando uma matriz bidimensional classificada, a ordem das linhas
na matriz alterada para que os elementos de uma coluna da matriz fiquem em ordem ascendente
ou descendente.

Se a classificao for bem-sucedida, ser retornado 1; caso contrrio, ser retornado 1.

ASORT( ), exemplo da funo

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

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

COUNT TO gnCount && Nmero de contatos
DIMENSION gaContact(gnCount,1) && Cria uma matriz de contatos
COPY TO ARRAY gaContact FIELD contact && Preenche a matriz

CLEAR
? 'Contact names:'
?
FOR nCount = 1 TO 20
? gaContact(nCount) && Exibe os 20 primeiros contatos
ENDFOR
= ASORT(gaContact) && Classifica a matriz

?
? 'Sorted Contact names:'

?
FOR nCount = 1 TO 20
? gaContact(nCount) && Exibe os 20 primeiros contatos, classificados
ENDFOR

ASSERT, comando


Exibe uma caixa de mensagem quando uma expresso lgica avaliada como falsa (.F.).

Sintaxe

ASSERT lExpresso [MESSAGE cTextoMensagem]

Argumentos

lExpresso Especifica a expresso lgica que avaliada. Se lExpresso resultar em um falso (.F.)
lgico, uma caixa de dilogo de depurao ser exibida. Se lExpresso resultar em um verdadeiro
(.T.) lgico, a caixa de dilogo no ser exibida.

cTextoMensagem Especifica o texto exibido na caixa de dilogo de depurao. Se voc omitir
cTextoMensagem, o texto padro ser exibido, indicando o nmero da linha na qual a declarao
falhou e o procedimento contendo a declarao.

Comentrios

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

A caixa de mensagem contm os botes Cancelar, Depurar, Ignorar e Ignorar todos. A tabela a
seguir descreve a ao executada quando cada boto selecionado.

Boto Ao

Depurar A execuo do programa suspensa e a janela Depurar exibida com a janela
Rastrear ativa.
Cancelar A execuo do programa encerrada.
Ignorar A execuo do programa continua com a linha aps o comando ASSERT.
Ignorar Todos A execuo do programa continua com a linha aps o comando ASSERT e
ASSERTS definido como OFF. Os comandos ASSERT subseqentes sero ignorados at que
ASSERTS seja definido como ON.

ASUBSCRIPT( ), funo

Retorna o ndice de linha ou coluna de um elemento a partir do nmero do elemento.

Sintaxe

ASUBSCRIPT(NomeMatriz, nNmeroElemento, nndice)

Tipos de retorno

Numrico

Argumentos

NomeMatriz Especifica o nome da matriz.

nNmeroElemento Especifica o nmero do elemento.

nndice Determina se retornado o ndice de linha ou coluna.

Se a matriz for unidimensional, inclua o nmero do elemento em nNmeroElemento e 1 em
nndice. ASUBSCRIPT( ) retorna nNmeroElemento de forma idntica.

Se a matriz for bidimensional, voc deve incluir o nmero do elemento nNmeroElemento e um
valor 1 ou 2 em nndice. A especificao de 1 em nndice retorna o ndice de linha do elemento, e a
especificao de 2 retorna o ndice de coluna.

Para obter maiores informaes sobre como fazer referncia a elementos de uma matriz, consulte
DIMENSION.



Comentrios

Voc pode referir-se a elementos de matrizes de varivel bidimensionais de duas maneiras. O
primeiro mtodo utiliza dois ndices para especificar a posio do elemento na matriz em termos de
linha e coluna. O segundo mtodo utiliza um nmero de elemento. Utilize ASUBSCRIPT( ) para
obter o ndice de linha ou coluna de um elemento a partir do nmero do elemento.

No exemplo a seguir, criada uma matriz com duas linhas e trs colunas. DISPLAY MEMORY
exibe o contedo dos elementos da matriz listados na ordem dos nmeros dos elementos.

DIMENSION gaMyArray(2,3)
DISPLAY MEMORY LIKE gaMyArray
GAMYARRAY Pub A
( 1, 1) L .F. (elemento nmero 1)
( 1, 2) L .F. (elemento nmero 2)
( 1, 3) L .F. (elemento nmero 3)
( 2, 1) L .F. (elemento nmero 4)
( 2, 2) L .F. (elemento nmero 5)
( 2, 3) L .F. (elemento nmero 6)



Os dois comandos abaixo armazenam a seqncia de caracteres INVOICE no mesmo elemento de
matriz:

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



Em matrizes unidimensionais, o nmero de um elemento idntico ao seu ndice de linha nico.
No necessrio utilizar ASUBSCRIPT( ) com matrizes unidimensionais.


AT( ), funo


Retorna a posio numrica inicial da primeira ocorrncia de uma expresso de caracteres ou campo
Memo dentro de uma outra expresso de caracteres ou campo Memo, contando a partir do caractere
mais esquerda.

Sintaxe

AT(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia])

Tipos de retorno

Numrico

Argumentos

cExpressoProcurada Especifica a expresso de caracteres que AT( ) procura em
cExpressoPesquisada.

cExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura.

Tanto cExpressoProcurada como cExpressoPesquisada podem ser campos Memo de qualquer
tamanho.

nOcorrncia Especifica qual ocorrncia (primeira, segunda, terceira e assim por diante) da
cExpressoProcurada procurada na cExpressoPesquisada. Como padro, AT( ) procura a
primeira ocorrncia da cExpressoProcurada (nOcorrncia = 1). A incluso de nOcorrncia permite
que voc procure ocorrncias adicionais da cExpressoProcurada na cExpressoPesquisada. AT( )
retornar 0 se nOcorrncia for maior do que o nmero de vezes que a cExpressoProcurada ocorre
na cExpressoPesquisada.
Comentrios

AT( ) procura a primeira ocorrncia da primeira expresso de caracteres na segunda expresso de
caracteres. Em seguida, retorna um inteiro que indica a posio do primeiro caractere na expresso
de caracteres localizada. Caso a expresso de caracteres no seja localizada, AT( ) retornar 0.

A procura executada por AT( ) considera maisculas/minsculas. Para executar uma procura que
no considere maisculas/minsculas, utilize ATC( ).

AT( ), exemplo da funo

STORE 'Agora a hora da verdade' TO gcString
STORE ' a' TO gcFindString
CLEAR
? AT(gcFindString,gcString) && Exibe 5
STORE '' TO gcFindString
? AT(gcFindString,gcString) && Exibe 0, considera maisculas/minsculas














AT_C( ), funo


Retorna a posio numrica inicial da primeira ocorrncia de uma expresso de caracteres ou campo
Memo dentro de uma outra expresso de caracteres ou campo Memo, contando a partir do caractere
mais esquerda.

Sintaxe

AT_C(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia])

Tipos de retorno

Numrico

Argumentos

cExpressoProcurada Especifica a expresso de caracteres que AT_C( ) procura em
cExpressoPesquisada.

CExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura.

Tanto a cExpressoProcurada como a cExpressoPesquisada podem ser campos Memo de qualquer
tamanho.

nOcorrncia Especifica qual ocorrncia (primeira, segunda, terceira e assim por diante) da
cExpressoProcurada procurada na cExpressoPesquisada. Como padro, AT_C( ) procura a
primeira ocorrncia da cExpressoProcurada (nOcorrncia = 1). A incluso de nOcorrncia permite
que voc procure ocorrncias adicionais de cExpressoProcurada em cExpressoPesquisada.
AT_C( ) retornar 0 se nOcorrncia for maior do que o nmero de vezes que a
cExpressoProcurada ocorre na cExpressoPesquisada.


Comentrios

AT_C( ) procura a primeira ocorrncia da primeira expresso de caracteres na segunda expresso de
caracteres. Em seguida, retorna um inteiro que indica a posio do primeiro caractere na expresso
de caracteres localizada. Caso a expresso de caracteres no seja localizada, AT_C( ) retornar 0.

AT_C( ) foi criada para expresses que contm caracteres de byte duplo. Se a expresso contiver
apenas caracteres de byte nico, AT_C( ) ser equivalente a AT( ).

A procura executada por AT_C( ) considera maisculas/minsculas. Para executar uma procura que
no considere maisculas/minsculas, utilize ATCC( ).

ATAN( ), funo


Retorna em radianos o arco tangente de uma expresso numrica.

Sintaxe

ATAN(nExpresso)

Tipos de retorno

Numrico

Argumentos

nExpresso Especifica uma expresso numrica cujo arco tangente retornado por ATAN( ).
nExpresso pode ser qualquer valor. O valor retornado por ATAN( ) pode variar de pi/2 a +pi/2 (
1,57079 a 1,57079). O nmero de casas decimais exibidas no valor retornado por ATAN( )
determinado por SET DECIMALS.

Comentrios

Utilize RTOD( ) para converter radianos em graus.

ATAN( ), exemplo da funo

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

ATC( ), funo

Retorna a posio numrica inicial da primeira ocorrncia de uma expresso de caracteres ou campo
Memo dentro de uma outra expresso de caracteres ou campo Memo, sem considerar
maisculas/minsculas nas duas expresses.

Sintaxe

ATC(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia])

Tipos de retorno

Numrico

Argumentos

cExpressoProcurada Especifica a expresso de caracteres que ATC( ) procura em
cExpressoPesquisada.

cExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura.

Tanto a cExpressoProcurada como a cExpressoPesquisada podem ser campos Memo de qualquer
tamanho.

nOcorrncia Especifica qual ocorrncia (primeira, segunda, terceira e assim por diante) da
cExpressoProcurada ser procurada na cExpressoPesquisada. Como padro, ATC( ) procura a
primeira ocorrncia da cExpressoProcurada (nOcorrncia = 1). A incluso de nOcorrncia permite
que voc procure ocorrncias adicionais da cExpressoProcurada na cExpressoPesquisada.



Comentrios

ATC( ) procura a ocorrncia da primeira expresso de caracteres na segunda expresso de
caracteres, sem considerar maisculas/minsculas nas duas expresses. Utilize AT( ) para executar
uma procura que considere maisculas/minsculas.

ATC( ) retorna um inteiro correspondente posio em que o primeiro caractere da expresso de
caracteres foi localizado. Se a expresso de caracteres no for localizada, ATC( ) retornar 0.

ATC( ), exemplo da funo

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

ATCC( ), funo

Retorna a posio numrica inicial da primeira ocorrncia de uma expresso de caracteres ou campo
Memo dentro de outra expresso de caracteres ou campo Memo, sem considerar
maisculas/minsculas nas duas expresses.

Sintaxe

ATCC(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia])


Tipos de retorno

Numrico

Argumentos

cExpressoProcurada Especifica a expresso de caracteres que ATCC( ) procura em
cExpressoPesquisada.

cExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura.

Tanto a cExpressoProcurada como a cExpressoPesquisada podem ser campos Memo de qualquer
tamanho.

nOcorrncia Especifica qual ocorrncia (primeira, segunda, terceira e assim por diante) da
cExpressoProcurada ser procurada na cExpressoPesquisada. Como padro, ATCC( ) procura a
primeira ocorrncia da cExpressoProcurada (nOcorrncia = 1). A incluso de nOcorrncia permite
que voc procure ocorrncias adicionais da cExpressoProcurada na cExpressoPesquisada.

Comentrios

ATCC( ) foi criada para expresses que contm caracteres de byte duplo. Se a expresso contiver
apenas caracteres de byte nico, ATCC( ) ser equivalente a ATC( ).

ATCC( ) procura a ocorrncia da primeira expresso de caracteres na segunda expresso de
caracteres, sem considerar maisculas/minsculas nas duas expresses. Utilize AT_C( ) para
executar uma procura que considere maisculas/minsculas.

ATCC( ) retorna um inteiro correspondente posio em que o primeiro caractere da expresso de
caracteres foi localizado. Caso a expresso de caracteres no seja localizada, ATCC( ) retornar 0.

ATCLINE( ), funo

Retorna o nmero da linha da primeira ocorrncia de uma expresso de caracteres ou campo Memo
dentro de uma outra expresso de caracteres ou campo Memo, sem considerar
maisculas/minsculas nas duas expresses.

Sintaxe

ATCLINE(cExpressoProcurada, cExpressoPesquisada)

Tipos de retorno

Numrico

Argumentos

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

cExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura.

Tanto a cExpressoProcurada como a cExpressoPesquisada podem ser campos Memo de qualquer
tamanho. Utilize MLINE( ) para retornar a linha que contm a expresso de caracteres
correspondente.

Dica ATCLINE( ) oferece um mtodo conveniente para pesquisar em campos Memo.


Comentrios

Se a procura for bem-sucedida, ATCLINE( ) retornar o nmero da linha que contm a primeira
expresso de caracteres. Caso contrrio, ATCLINE( ) retornar 0.

O nmero de linha retornado por ATCLINE( ) determinado pelo valor de SET MEMOWIDTH,
mesmo que a cExpressoPesquisada no seja um campo Memo. Para obter maiores informaes,
consulte SET MEMOWIDTH na Ajuda.

Utilize ATLINE( ) para executar uma procura que considere maisculas/minsculas.

ATCLINE( ), exemplos da funo

O exemplo 1 localiza a primeira ocorrncia de uma seqncia de caracteres em um campo Memo e
exibe o nome e o sobrenome do funcionrio, e a linha do memo contendo a seqncia de caracteres.
O exemplo 2 demonstra como a largura do Memo afeta ATCLINE( ).

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

CLEAR
STORE 'JAPANESE' TO gcFindString && No considera maisculas/minsculas
LOCATE FOR ATCLINE(gcFindString, notes) != 0
? First_Name
?? Last_Name
? MLINE(notes, ATCLINE(gcFindString, notes))

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

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

ATLINE( ), funo


Retorna o nmero da linha da primeira ocorrncia de uma expresso de caracteres ou campo Memo
dentro de uma outra expresso de caracteres ou campo Memo, contando a partir da primeira linha.

Sintaxe

ATLINE(cExpressoProcurada, cExpressoPesquisada)

Tipos de retorno

Numrico

Argumentos

cExpressoProcurada Especifica a expresso de caracteres que o Visual FoxPro procura em
cExpressoPesquisada.

cExpressoPesquisada Especifica a expresso de caracteres que a cExpressoProcurada procura.

Tanto a cExpressoProcurada como a cExpressoPesquisada podem ser campos Memo de qualquer
tamanho.

Utilize MLINE( ) para retornar a linha que contm a expresso de caracteres correspondente como
uma seqncia de caracteres.

Dica ATLINE( ) oferece um mtodo conveniente de procura de campos Memo.

Comentrios

ATLINE( ) procura a ocorrncia da primeira expresso de caracteres na segunda expresso de
caracteres, sem considerar maisculas/minsculas em ambas expresses. Utilize ATCLINE( ) para
executar uma procura que no considere maisculas/minsculas.

Se a procura for bem-sucedida, ATLINE( ) retornar o nmero da linha em que ocorre a
correspondncia. Caso contrrio, ATLINE( ) retornar 0.

O nmero de linha retornado por ATLINE( ) determinado pelo valor de SET MEMOWIDTH,
mesmo que a cExpressoPesquisada no seja um campo Memo. Para obter maiores informaes,
consulte SET MEMOWIDTH na Ajuda.

ATLINE( ), exemplos da funo

O exemplo 1 localiza a primeira ocorrncia de uma seqncia de caracteres em um campo Memo e
exibe o nome e o sobrenome do funcionrio, e a linha do memo contendo a seqncia de caracteres.
O exemplo 2 demonstra como a largura do memo afeta ATLINE( ).

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

CLEAR
STORE 'Japons' TO gcFindString && Considera maisculas/minsculas
LOCATE FOR ATLINE(gcFindString, notes) != 0
? First_Name
?? Last_Name
? MLINE(notes, ATLINE(gcFindString, notes))

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

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


ATN2( ), funo


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

Sintaxe

ATN2(nCoordenadaY, nCoordenadaX)


Tipos de retorno

Numrico

Argumentos

nCoordenadaY Especifica a coordenada y.

nCoordenadaX Especifica a coordenada x.

Comentrios

ATN2( ) retorna o ngulo (em radianos) entre a linha y = 0 e a linha que conecta as coordenadas
especificadas e a origem (0, 0) do sistema de coordenadas.

ATN2( ) retorna um valor entre pi/2 e + pi/2.

Para converter o valor retornado por ATN2( ) em graus, utilize RTOD( ). Para especificar o nmero
de casas decimais exibidas no resultado, utilize SET DECIMALS.

ATN2( ), exemplo da funo

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

AVERAGE, comando


Calcula o mtodo aritmtico das expresses ou campos numricos.

Sintaxe

AVERAGE [ListaExpresses]
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[TO ListaVarMem | TO ARRAY NomeMatriz]
[NOOPTIMIZE]



Argumentos

ListaExpresses Especifica as expresses para a mdia. ListaExpresses pode ser uma lista de
campos a partir da tabela separada por vrgulas ou expresses numricas que envolvem campos
dessa tabela.

Escopo Especifica o registro ou o intervalo de registros para incluir na mdia. Apenas os registros
includos no intervalo de registros especificados pelo escopo esto com mdia calculada. As
clusulas do escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. O escopo
padro para AVERAGE registros ALL.

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

FOR lExpresso1 Especifica uma condio pela qual so includos apenas os registros que
satisfazem as condies lgicas de lExpresso. Esse argumento permite filtrar registros
indesejveis.

Rushmore otimiza uma consulta AVERAGE FOR se lExpresso for uma expresso de otimizao.
Para obter um melhor desempenho, utilize uma expresso de otimizao da clusula FOR. Para
obter maiores informaes sobre expresses de otimizao Rushmore, consulte SET OPTIMIZE
e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do
Desenvolvedor.

WHILE lExpresso2 Especifica que, uma vez que a expresso lgica lExpresso2 resulta em
verdadeiro (.T.), os registros esto includos na mdia.

TO ListaVarMem Especifica a lista de variveis ou elementos de matriz para os quais os
resultados da mdia so armazenados.

TO ARRAY NomeMatriz Especifica a matriz unidimensional na qual os resultados da mdia so
armazenados. A matriz unidimensional pode ser criada antes da execuo de AVERAGE.

Se a matriz includa em AVERAGE no existir, o Visual FoxPro a criar automaticamente. Se a
matriz existir e no for grande o suficiente para conter todos os resultados, o Visual FoxPro
automaticamente aumentar o tamanho da matriz para acomodar as informaes.

NOOPTIMIZE Desativa a otimizao Rushmore de AVERAGE. Para obter maiores informaes,
consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15,
Otimizando aplicativos, no Guia do Desenvolvedor.

Comentrios

Todos os campos numricos na tabela selecionada esto com mdias calculadas, a menos que voc
inclua uma lista de expresses opcional. O resultado exibido na tela se SET TALK estiver ativado
(ON). Se SET HEADINGS estiver ativado (ON), os nomes dos campos ou expresses envolvendo
os nomes dos campos so exibidos acima dos resultados.

AVERAGE, exemplo do comando

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

CLEAR
AVERAGE Order_Amt && Calcula as mdias de todos os pedidos
AVERAGE Order_Amt TO gnAvg && Armazena a mdia na varivel de memria
? 'Quantidade mdia dos pedidos: '
?? gnAvg && Exibe a mdia novamente

TABELA de Cores

A tabela a seguir lista valores tpicos de cor.

Cor Valores RGB Valor de nCor

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





BETWEEN( ), funo


Determina se o valor de uma expresso est entre os valores de duas outras expresses com mesmo
tipo de dado.

Sintaxe

BETWEEN(eValorTeste, eValorMnimo, eValorMximo)

Tipos de retorno

Lgico ou valor nulo

Argumentos

eValorTeste Especifica a expresso cujo valor testado por BETWEEN( ). Se o valor de
eValorTeste for maior que ou igual ao valor de eValorMnimo e menor que ou igual ao valor de
eValorMximo, BETWEEN( ) retornar verdadeiro (.T.). Caso contrrio, BETWEEN( ) retornar
falso (.F.). BETWEEN( ) retornar o valor nulo se eValorMnimo ou eValorMximo representarem
um valor nulo.

eValorMnimo Especifica o valor mais baixo no intervalo avaliado por BETWEEN( ).

eValorMximo Especifica o valor mais alto no intervalo avaliado por BETWEEN( ).

Comentrios

BETWEEN( ) retornar um valor verdadeiro (.T.) se o valor de uma expresso do tipo caractere,
data, data e hora, numrico, flutuante, inteiro, duplo ou moeda situar-se entre os valores de duas
outras expresses com o mesmo tipo de dado. Caso contrrio, BETWEEN( ) retornar falso (.F.).
BETWEEN( ) retornar o valor nulo se eValorMnimo ou eValorMximo representarem um valor
nulo.

BETWEEN( ), exemplo da funo

O exemplo a seguir procura na tabela orders todos os registros no campo order_amt com valores
entre 950 e 1000 inclusive e exibe o campo cust_id e o campo order_amt.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE orders && Abre a tabela Order

CLEAR
SCAN FOR BETWEEN(order_amt,950,1000)
? cust_id, order_amt
ENDSCAN



BINTOC( ), funo

Converte um valor inteiro em uma representao de caracteres binrios.

Sintaxe

BINTOC(nExpresso [, nTamanho])



Tipos de retorno

Caractere

Argumentos

nExpresso Especifica o valor inteiro a ser convertido.

nTamanho Especifica o tamanho em caracteres da seqncia de caracteres retornada.

nTamanho tambm determina o valor que pode ser especificado para nExpresso. A tabela a seguir
lista os valores aceitos para nTamanho e o intervalo correspondente de valores para nExpresso:

nTamanho Intervalo nExpresso

1 -128 a 127
2 -32,768 a 32,767
4 (padro) -2,147,483,648 a 2,147,483,647


Se nTamanho for omitido, BINTOC( ) retornar uma seqncia de caracteres composta por quatro
caracteres.
Comentrios

Utiliza-se BINTOC( ) para reduzir o tamanho dos ndices para campos numricos que contm dados
inteiros. Por exemplo, um campo numrico denominado iPartCode pode conter um valor inteiro
entre 1 e 127 que corresponde a um cdigo de classificao de peas. BINTOC( ) permite que voc
converta o valor no campo numrico em uma representao de caracteres simples. Por exemplo, o
comando a seguir cria um ndice com uma chave de ndice de um caractere:

INDEX ON BINTOC(nPartCode,1) TAG PartCode

BITAND( ), funo


Retorna o resultado de uma operao AND em nvel de bit executada sobre dois valores numricos.

Sintaxe

BITAND(nExpresso1, nExpresso2)
Tipos de retorno

Numrico

Argumentos

nExpresso1, nExpresso2 Especifica os valores numricos sobre os quais a operao AND em
nvel de bit executada. Se nExpresso1 e nExpresso2 no forem nmeros inteiros, sero
convertidos em inteiros antes que a operao AND em nvel de bit seja executada.

Comentrios

BITAND( ) compara cada bit em nExpresso1 com o bit correspondente em nExpresso2. Se os bits
em nExpresso1 e nExpresso2 forem ambos 1, o bit resultante correspondente ser definido como
1; caso contrrio, ser definido como 0.

A tabela a seguir mostra o resultado de uma operao AND em nvel de bit em bits correspondentes
de nExpresso1 e nExpresso2:

Bit de nExpresso1 Bit de nExpresso2 Bit resultante

0 0 0
0 1 0
1 1 1
1 0 0

BITAND( ), exemplo da funo

x = 3 && 0011 binrio
y = 6 && 0110 binrio

? BITAND(x,y) && Retorna 2, 0010 binrio

BITCLEAR( ), funo


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

Sintaxe

BITCLEAR(nExpresso1, nExpresso2)

Tipos de retorno

Numrico

Argumentos

nExpresso1 Especifica o valor numrico em que um bit limpo. Se nExpresso1 no for um
nmero inteiro, ser convertido em inteiro antes que o seu bit seja definido.

nExpresso2 Especifica a posio do bit que limpo em nExpresso1. nExpresso2 pode estar no
intervalo de 0 a 31; 0 o bit mais direita.


BITCLEAR( ), exemplo da funo

x = 7 && 0111 binrio
y = 1 && 2a. posio de bit (0 = 1a. posio de bit)
? BITCLEAR(x,y) && Retorna 5, 0101 binrio

BITLSHIFT( ), funo


Retorna o resultado do deslocamento para a esquerda dos bits de um valor numrico, um nmero
especificado de posies.

Sintaxe

BITLSHIFT(nExpresso1, nExpresso2)


Tipos de retorno

Numrico

Argumentos

nExpresso1 Especifica o valor numrico cujos bits so deslocados para a esquerda. Se
nExpresso1 no for um nmero inteiro, ser convertido em inteiro antes que os respectivos bits
sejam deslocados.

nExpresso2 Especifica o nmero de posies de bits a serem deslocados. Se nExpresso2 no for
um nmero inteiro, ser convertido.


BITLSHIFT( ), exemplo da funo

x = 5 && 0101 binrio
y = 1 && Desloca os bits 1 posio para a esquerda

? BITLSHIFT(x,y) && Retorna 10, 1010 binrio

BITNOT( ), funo

Retorna o resultado de uma operao NOT em nvel de bit executada sobre um valor numrico.

Sintaxe

BITNOT(nExpresso)
Tipos de retorno

Numrico

Argumentos

nExpresso Especifica o valor numrico sobre o qual a operao NOT em nvel de bit executada.
Se nExpresso1 no for um nmero inteiro, ser convertido em inteiro antes que os respectivos bits
sejam deslocados.

Comentrios

A funo BITNOT( ) retorna o complemento em nvel de bit de nExpresso. O valor numrico
retornado por BITNOT( ) representa nExpresso com cada bit de valor 0 alternado para 1 e cada bit
de valor 1 alternado para 0.

A tabela a seguir mostra o resultado de uma operao NOT em nvel de bit em nExpresso:

Bit de nExpresso Bit resultante

0 1
1 0

BITNOT( ), exemplo da funo

x = 5 && 0101 binrio
? BITNOT(x) && Retorna -6

BITOR( ), funo


Retorna o resultado de uma operao OR inclusiva em nvel de bit executada sobre dois valores
numricos.

Sintaxe

BITOR(nExpresso1, nExpresso2)

Tipos de retorno

Numrico

Argumentos

nExpresso1, nExpresso2 Especifica os valores numricos sobre os quais a operao OR
inclusiva em nvel de bit executada. Se nExpresso1 e nExpresso2 no forem nmeros inteiros,
sero convertidos em inteiros antes que a operao OR inclusiva em nvel de bit seja executada.

Comentrios

BITOR( ) compara cada bit em nExpresso1 com o bit correspondente em nExpresso2. Se um dos
bits em nExpresso1 ou nExpresso2 for 1, o bit resultante correspondente ser definido como 1;
caso contrrio, ser definido como 0.

A tabela a seguir mostra o resultado de uma operao OR inclusiva sobre bits correspondentes em
nExpresso1 e nExpresso2:

Bit de nExpresso1 Bit de nExpresso2 Bit resultante

0 0 0
0 1 1
1 0 1
1 1 1

BITOR( ), exemplo da funo

x = 5 && 0101 binrio
y = 6 && 0110 binrio

? BITOR(x,y) && Retorna 7, 0111 binrio

BITRSHIFT( ), funo


Retorna o resultado do deslocamento para a direita dos bits de um valor numrico, um nmero
especificado de posies.

Sintaxe

BITRSHIFT(nExpresso1, nExpresso2)

Tipos de retorno

Numrico

Argumentos

nExpresso1 Especifica o valor numrico cujos bits so deslocados para a direita. Se nExpresso1
no for um nmero inteiro, ser convertido em inteiro antes que os respectivos bits sejam
deslocados.

nExpresso2 Especifica o nmero de posies de bits a serem deslocados. Se Expresso2 no for
um nmero inteiro, ser convertido.

BITRSHIFT( ), exemplo da funo

x = 5 && 0101 binrio
y = 1 && Desloca os bits 1 posio para a direita

? BITRSHIFT(x,y) && Retorna 2, 0010 binrio
BITSET( ), funo


Define o bit como 1 em um valor numrico e retorna o valor resultante.

Sintaxe

BITSET(nExpresso1, nExpresso2)

Tipos de retorno

Numrico

Argumentos

nExpresso Especifica o valor numrico em que um bit definido. Se nExpresso1 no for um
nmero inteiro, ser convertido em inteiro antes que o seu bit seja definido.

nExpresso Especifica a posio em nExpresso1 do bit que definido como 1. nExpresso2 pode
estar no intervalo de 0 a 31; 0 o bit mais direita.

BITSET( ), exemplo da funo

x = 5 && 0101 binrio
y = 1 && 2a. posio de bit (0 = 1a. posio de bit)
? BITSET(x,y) && Retorna 7, 0111 binrio



B
BBI
IIT
TTT
TTE
EES
SST
TT(
(( )
)),
,, f
ffu
uun
nn

o
oo


Retornar verdadeiro (.T.) se um bit especificado em um valor numrico estiver definido como 1;
caso contrrio, retornar falso (.F.).

Sintaxe

BITTEST(nExpresso1, nExpresso2)

Tipos de retorno

Lgico

Argumentos

nExpresso1 Especifica o valor numrico em que um bit verificado. Se nExpresso1 no for um
nmero inteiro, ser convertido em inteiro antes que o respectivo bit seja verificado.

nExpresso2 Especifica a posio do bit que verificado em nExpresso1. nExpresso2 pode
estar no intervalo de 0 a 31; 0 o bit mais direita.
BITTEST( ), exemplo da funo

O exemplo a seguir utiliza BITTEST( ) para determinar se uma srie de inteiros par. Se um inteiro
for par, a funo IsEven retornar verdadeiro (.T.); caso contrrio, retornar falso (.F.).

CLEAR
? '2 even? '
?? IsEven(2) && par, retorna .T.
? '3 even? '
?? IsEven(3) && No par, retorna .F.
? '0 even? '
?? IsEven(0) && par, retorna .T.
? '-13 even? '
?? IsEven(-13) && No par, retorna .F.

Function IsEven
PARAMETER nInteger
RETURN NOT BITTEST(nInteger, 0)

BITXOR( ), funo


Retorna o resultado de uma operao OR exclusiva em nvel de bit executada sobre dois valores
numricos.

Sintaxe

BITXOR(nExpresso1, nExpresso2)

Tipos de retorno

Numrico

Argumentos

nExpresso1, nExpresso2 Especifica os valores numricos sobre os quais a operao OR
exclusiva em nvel de bit executada. Se nExpresso1 e nExpresso2 no forem nmeros inteiros,
sero convertidos em inteiros antes que a operao OR exclusiva em nvel de bit seja executada.

Comentrios

BITXOR( ) compara cada bit em nExpresso1 com o bit correspondente em nExpresso2. Se um bit
for 0 e o outro bit for 1, o bit resultante correspondente ser definido como 1. Caso contrrio, ser
definido como 0.

A tabela a seguir mostra o resultado de uma operao OR exclusiva sobre bits correspondentes em
nExpresso1 e nExpresso2:

Bit de nExpresso1 Bit de nExpresso2 Bit resultante

0 0 0
0 1 1
1 0 1
1 1 0

BITXOR( ), exemplo da funo

x = 5 && 0101 binrio
y = 6 && 0110 binrio

? BITXOR(x,y) && Retorna 3, 0011 binrio

BLANK, comando


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

Sintaxe

BLANK
[FIELDS ListaCampos]
[Escopo]
[FOR lExpresso1]
[WHILE lExpresso2]
[NOOPTIMIZE]

Argumentos

FIELDS ListaCampos Limpa apenas os campos especificados com ListaCampos. Como padro, se
a clusula FIELDS for omitida, todos os campos de um registro sero limpos. Qualquer campo
especificado em uma rea de trabalho no selecionada deve ser precedido pelo alias da rea de
trabalho.

Importante BLANK no ir limpar os dados dos campos de um registro em outra rea de trabalho
relacionada se o ponteiro do registro estiver no final do arquivo na rea de trabalho do momento. O
ponteiro dever estar em um registro na rea de trabalho atual para que BLANK atue sobre os
campos do registro relacionado.

Escopo Especifica um intervalo de registros a serem limpos. Somente os registros que estiverem
dentro do intervalo sero limpos. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD
nNmeroRegistro e REST.

Para obter maiores informaes sobre as clusulas de escopo, consulte o tpico Clusulas de
escopo. Os comandos que incluem Escopo operam somente na tabela na rea de trabalho ativa.

O escopo padro para BLANK o registro atual (NEXT 1).

FOR lExpresso1 Limpa os dados dos campos dos registros para os quais lExpresso1 resulta em
verdadeiro (.T.). Rushmore otimizar BLANK FOR se lExpresso1 for uma expresso otimizvel.
Uma discusso sobre a otimizao Rushmore apresentada em Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando Aplicativos, no Guia do Desenvolvedor.

WHILE lExpresso2 Especifica uma condio pela qual os dados dos campos dos registros sero
limpos desde que a expresso lgica lExpresso2 resulte em verdadeiro (.T.).

NOOPTIMIZE Evita a otimizao Rushmore de BLANK. Para obter maiores informaes,
consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando
aplicativos, no Guia do Desenvolvedor.

Comentrios

Utilize APPEND BLANK para adicionar um novo registro em branco ao final de uma tabela.
Utilize ISBLANK( ) para determinar se um campo de um registro est em branco.

BLANK, exemplo de comando

O exemplo a seguir abre a tabela customer no banco de dados testdata. O contedo do primeiro
registro exibido. Utiliza-se SCATTER para salvar o contedo do registro em uma matriz. Este
limpo com BLANK, e o contedo do registro exibido novamente. Usa-se GATHER para restaurar o
contedo do registro original, e o contedo do registro restaurado exibido novamente.

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

CLEAR
DISPLAY && Exibe o registro atual
SCATTER TO gaCustomer && Cria matriz com o contedo do registro
BLANK && Limpa o registro
DISPLAY && Exibe o registro em branco
GATHER FROM gaCustomer && Restaura o contedo do registro original
DISPLAY && Exibe o registro restaurado

BOF( ), funo

Determina se o ponteiro do registro est posicionado no incio de uma tabela.

Sintaxe

BOF([nreaTrabalho | cAliasTabela])

Tipos de retorno

Lgico

Argumentos

nreaTrabalho Especifica o nmero 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 condio de incio do arquivo esteja aberta em uma rea
de trabalho diferente da selecionada no momento, utilize estes argumentos opcionais para
especificar o nmero da rea de trabalho ou o alias da tabela. Caso a tabela no esteja aberta na
rea de trabalho especificada, BOF( ) retornar falso (.F.).


Comentrios

Utilize BOF( ) para testar uma condio de incio do arquivo para uma tabela. BOF( ) retornar
verdadeiro (.T.) se voc tiver tentado mover o ponteiro do registro para uma posio anterior ao
primeiro registro da tabela.

BOF( ), exemplo de funo

O exemplo a seguir abre a tabela customer e lista o nome da empresa, uma pgina de cada vez,
comeando pelo ltimo registro. A lista continua at o incio do arquivo ser alcanado ou at que se
escolha Cancelar.

CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME() + "samples\data\testdata")
USE customer
GO BOTTOM
local recCtr, btnValue
recCtr = 0
btnValue = 1
DO WHILE btnValue = 1 AND NOT BOF()
? "Company : " + company
recCtr = recCtr + 1
if (recCtr % 20) = 0 then
btnValue =MESSAGEBOX ("Clique em OK para continuar, clique sobre Cancelar para
sair.",33)
clear
endif
Skip -1 && Move um registro acima
ENDDO
=MESSAGEBOX("Lista concluda.",48)


BROWSE, comando


Abre a janela Pesquisar e exibe registros da tabela selecionada no momento.

Sintaxe

BROWSE
[FIELDS ListaCampos]
[FONT cNomeFonte [, nTamanhoFonte]]
[STYLE cEstiloFonte]
[FOR lExpresso1 [REST]]
[FORMAT]
[FREEZE NomeCampo]
[KEY eExpresso1 [, eExpresso2]]
[LAST | NOINIT]
[LOCK nNmeroDeCampos]
[LPARTITION]
[NAME NomeObjeto]
[NOAPPEND]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLGRID] [NORGRID]
[NOLINK]
[NOMENU]
[NOOPTIMIZE]
[NOREFRESH]
[NORMAL]
[NOWAIT]
[PARTITION nNmeroColuna [LEDIT] [REDIT]]
[PREFERENCE NomePreferncia]
[SAVE]
[TIMEOUT nSegundos]
[TITLE cTextoTtulo]
[VALID [:F] lExpresso2 [ERROR cTextoMensagem]]
[WHEN lExpresso3]
[WIDTH nLarguraCampo]
[[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]
[COLOR SCHEME nNmeroEsquema]

Argumentos

FIELDS ListaCampos Especifica os campos exibidos na janela Pesquisar. Os campos so exibidos
na ordem especificada em ListaCampos. Voc pode incluir campos de outras tabelas relacionadas
na lista de campos. Quando um campo de uma tabela relacionada includo, antes do nome dele,
deve ser colocado o alias de tabela e um ponto.

Se voc omitir FIELDS, todos os campos da tabela sero exibidos na ordem em que aparecem na
estrutura da tabela.

FONT cNomeFonte [, nTamanhoFonte] Especifica a fonte e o tamanho da fonte da janela
Pesquisar. A expresso de caracteres cNomeFonte especifica o nome da fonte e a expresso
numrica nTamanhoFonte especifica o tamanho dela. Por exemplo, a clusula a seguir especifica
uma fonte Courier de 16 pontos para os campos exibidos em uma janela Pesquisar:

FONT 'Courier',16

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

Se a fonte especificada no estiver disponvel, ela ser substituda por outra com caractersticas
semelhantes.

STYLE cEstiloFonte Especifica o estilo da fonte da janela Pesquisar. Caso voc omita a clusula
STYLE, ser utilizado o estilo de fonte Normal.

Se o estilo de fonte especificado no estiver disponvel, ele ser substitudo por outro com
caractersticas semelhantes, ou ser utilizada uma fonte estilo Normal.

Caractere Estilo de fonte

B Negrito
I Itlico
N Normal
O Contornado
Q Opaco
S Sombreado
- Riscado
T Transparente
U Sublinhado
Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. O
exemplo a seguir abre uma janela Pesquisar e utiliza uma fonte sublinhada:

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
IF _WINDOWS
BROWSE FIELDS contact FONT 'System', 15 STYLE 'NU'
ENDIF
IF _MAC
BROWSE FIELDS contact FONT 'Geneva', 14 STYLE 'NU'
ENDIF



FOR lExpresso1 Especifica uma condio pela qual somente registros para os quais lExpresso1
verdadeira so exibidos na janela Pesquisar.

Rushmore otimizar uma consulta especificada com um comando BROWSE FOR se lExpresso1
for uma expresso otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel
na clusula FOR. Para obter informaes sobre expresses otimizveis por Rushmore, consulte SET
OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos,
no Guia do Desenvolvedor.

Inclua FOR para mover o ponteiro do registro at o primeiro registro que corresponda condio.
Inclua REST para manter o ponteiro do registro na sua posio atual.

REST Impede que o ponteiro do registro seja movido da sua posio atual para o incio da tabela
quando uma janela Pesquisar aberta com a clusula FOR. Caso contrrio, BROWSE, como
padro, posiciona o ponteiro do registro no incio da tabela.

FORMAT Especifica o uso de um arquivo de formatao para controlar a exibio e o formato da
entrada de dados em uma janela Pesquisar. Primeiro, o arquivo de formatao deve ser aberto com
SET FORMAT. As informaes a seguir so extradas do arquivo de formatao e aplicadas
janela Pesquisar:

A lista de campos a serem pesquisados
Todas as clusulas VALID
Todas as clusulas WHEN
Todas as clusulas RANGE
Tamanhos de campos (conforme especificado em clusulas PICTURE)
Todas as expresses SAY (includas como campos BROWSE calculados)



O exemplo a seguir utiliza um arquivo de formatao para validar os dados digitados em uma janela
Pesquisar. As posies especificadas com @ ... GET so ignoradas.

A primeira linha cria um campo BROWSE (Cust_id) com 5 caracteres de largura e permite a
entrada somente de letras e dgitos. A segunda linha cria um campo BROWSE (
Company) que no pode conter um valor em branco e pode conter um mximo de 20 caracteres
alfabticos.

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

A seguir apresentado o contedo do arquivo de formatao CUSTENTR.FMT, que utilizado
para validar dados digitados na tabela customer:

@ 3,0 GET cust_id PICTURE 'NNNNN'
@ 3,0 GET company VALID company != SPACE(40) ;
PICTURE 'AAAAAAAAAAAAAAAAAAAA'
@ 3,0 GET contact WHEN contact = SPACE(40)

* Este o programa que utiliza o arquivo de formatao
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
SET FORMAT TO custentr.fmt
BROWSE FORMAT



FREEZE NomeCampo Permite que sejam feitas alteraes somente em um campo da janela
Pesquisar. Este campo especificado com NomeCampo. Os demais campos so exibidos e no
podem ser editados.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
BROWSE FIELDS phone :H = 'Telefone:' , ;
company :H = 'Empresa:' ;
FREEZE phone



KEY eExpresso1 [, eExpresso2] Limita o escopo de registros exibidos na janela Pesquisar. Com
KEY, voc pode especificar um valor de chave de ndice (eExpresso1) ou um intervalo de valores
de chaves (eExpresso1, eExpresso2) para os registros exibidos na janela Pesquisar. A tabela
pesquisada deve estar indexada e o valor ou os valores de chave de ndice includos na clusula
KEY devem ter o mesmo tipo de dados da expresso de ndice da marca ou arquivo de ndice
principal.

Por exemplo, a tabela customer inclui um campo de caractere que contm cdigos postais. Caso a
tabela esteja indexada no campo de cdigo postal, voc poder especificar um intervalo deles na
clusula KEY.

No exemplo a seguir, somente registros com cdigos postais dentro do intervalo de 10.000 a 30.000
so exibidos na janela Pesquisar:

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
SET ORDER TO postalcode
BROWSE KEY '10000', '30000'



LAST | NOINIT Salva qualquer alterao na configurao feita na aparncia de uma janela
Pesquisar. As alteraes so salvas no arquivo FOXUSER, podendo incluir alteraes feitas na lista
de campos, no tamanho de cada campo e na localizao e tamanho da janela Pesquisar.

Se BROWSE for emitido com a clusula LAST ou NOINIT, a janela Pesquisar ser aberta na
mesma configurao que foi salva por ltimo no arquivo FOXUSER, caso SET RESOURCE esteja
ativado (ON). Este procedimento restaura a configurao anterior da janela Pesquisar criada com o
ltimo comando BROWSE. Caso o ltimo BROWSE emitido na janela Comando inclua uma lista
extensa de clusulas, emita BROWSE com a opo LAST ou NOINIT para evitar a necessidade de
digitar novamente o comando. Para obter maiores informaes sobre o arquivo FOXUSER,
consulte SET RESOURCE na Ajuda.

Caso a ltima janela Pesquisar tenha sido aberta com um BROWSE com uma clusula
PREFERENCE, BROWSE LAST no ir restaurar a preferncia.

As alteraes na configurao da janela Pesquisar feitas na sesso atual no sero salvas se voc
sair de BROWSE pressionando as teclas CTRL+Q.

As clusulas LAST e NOINIT so idnticas; NOINIT fornece compatibilidade com o dBASE.

LOCK nNmeroDeCampos Especifica o nmero de campos que pode ser exibido na partio
esquerda da janela Pesquisar sem tabular ou rolar. A partio esquerda automaticamente
dimensionada para que possa exibir o nmero de campos especificado com nNmeroDeCampos.

LPARTITION Especifica que o cursor colocado no primeiro campo na partio esquerda da
janela Pesquisar. Como padro, o cursor colocado no primeiro campo na partio direita quando a
janela Pesquisar aberta.

NAME NomeObjeto Cria uma referncia de objeto para a janela Pesquisar, permitindo que voc
manipule essa janela com as propriedades orientadas a objetos disponveis para o controle Grid.
Para obter informaes adicionais sobre a programao orientada a objetos do Visual FoxPro,
consulte o captulo 3, Programao orientada a objetos, no Guia do Desenvolvedor. Para obter
informaes adicionais sobre as propriedades do controle Grid que podem ser especificadas para
uma janela Pesquisar criada com a clusula NAME, consulte o tpico Grid, controle.

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

Important Including NOAPPEND doesnt prevent you from appending a record from within a
routine (created with VALID, WHEN, or ON KEY LABEL) while in the Browse window.

NODELETE Impede que os registros sejam marcados para excluso de dentro de uma janela
Pesquisar. Como padro, um registro pode ser marcado para excluso pressionando-se as teclas
CTRL+T, selecionando-se Alternar excluso no menu Tabela ou clicando-se na coluna mais
esquerda do registro a ser excludo.

Important Including NODELETE doesnt prevent you from marking a record for deletion from
within a routine (created with VALID, WHEN, or ON KEY LABEL) while in the Browse
window.

NOEDIT | NOMODIFY Impede que um usurio modifique a tabela. NOEDIT e NOMODIFY so
idnticas. Se voc incluir qualquer uma destas clusulas, poder pesquisar ou percorrer a tabela,
mas no poder edit-la. No entanto, voc poder incluir e excluir registros.

NOLGRID Remove as linhas de grade dos campos na partio esquerda da janela Pesquisar.

NORGRID Remove as linhas de grade dos campos na partio direita da janela Pesquisar.

NOLINK Desvincula as parties de uma janela Pesquisar. Como padro, as parties esquerda e
direita da janela Pesquisar esto vinculadas de modo que quando voc percorre uma partio, a
outra partio rolada.

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

NOOPTIMIZE Desativa a otimizao Rushmore de BROWSE. Para obter maiores informaes,
consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore na Ajuda no captulo 15,
Otimizando aplicativos, no Guia do Desenvolvedor.

NOREFRESH Impede que a janela Pesquisar seja atualizada. As janelas Pesquisar so atualizadas
em intervalos determinados por SET REFRESH. NOREFRESH til com arquivos somente para
leitura e melhora o desempenho.

NORMAL Abre a janela Pesquisar com as definies padro normais, tais como as opes de
cores, tamanho, posio, ttulo e controle (GROW, FLOAT, ZOOM e assim por diante). Se voc
omitir NORMAL e a janela de sada atual for implementada pelo usurio com suas prprias
definies, a janela Pesquisar tambm assumir as definies especificadas pelo usurio.

NOWAIT Continua a execuo do programa logo depois da abertura da janela Pesquisar. O
programa no aguarda o fechamento da janela Pesquisar, mas continua a execuo na linha de
programa imediatamente aps a linha que contm BROWSE NOWAIT. Se voc omitir NOWAIT
quando emitir BROWSE dentro de um programa, uma janela Pesquisar ser aberta e a execuo do
programa ser colocada em pausa at que a janela Pesquisar seja fechada.

NOWAIT est disponvel apenas dentro de um programa. A incluso de NOWAIT quando
BROWSE emitido na janela Comando no tem qualquer efeito.

PARTITION nNmeroColuna Divide uma janela Pesquisar em parties esquerda e direita com
nNmeroColuna especificando o nmero da coluna da barra de diviso. Por exemplo, se
nNmeroColuna for 20, a barra de diviso ser colocada na coluna 20 da janela Pesquisar.

LEDIT Especifica que a partio esquerda da janela Pesquisar ser exibida no modo Editar
.

REDIT Especifica que a partio direita da janela Pesquisar ser exibida no modo Editar. O
exemplo a seguir abre uma janela Pesquisar com a barra de diviso colocada na coluna 20 e a
partio direita aberta no modo Editar.

Inclua as duas palavras-chave para abrir as duas parties no modo Editar.

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

PREFERENCE NomePreferncia Salva os atributos e as opes de uma janela Pesquisar para uso
posterior. Ao contrrio de LAST, que restaura a janela Pesquisar como ela foi exibida na sesso
anterior, PREFERENCE salva os atributos de uma janela Pesquisar indefinidamente no arquivo de
recursos FOXUSER. As preferncias podem ser recuperadas a qualquer momento.

Na primeira vez que BROWSE emitido com o nome da preferncia especificado, criada uma
entrada no arquivo FOXUSER que salva a configurao da janela Pesquisar. A emisso de
BROWSE posteriormente com o mesmo nome da preferncia restaura a janela Pesquisar a esse
estado de preferncia. Quando a janela Pesquisar fechada, a preferncia atualizada.

Os nomes de preferncias podem ter at 10 caracteres, devem iniciar com uma letra ou um caractere
sublinhado e podem conter qualquer combinao de letras, nmeros e caracteres sublinhados.

Quando uma preferncia estiver como voc deseja, voc poder impedir que ela seja alterada. Feche
a janela Pesquisar, emita SET RESOURCE OFF, abra o arquivo FOXUSER como uma tabela e
altere o registro que contm a preferncia para somente para leitura, alterando o valor do campo
lgico READONLY para verdadeiro (.T.).

Para obter maiores informaes sobre o arquivo de recurso FOXUSER, consulte SET RESOURCE.

Se voc sair de uma janela Pesquisar pressionando as teclas CTRL+Q, nenhuma alterao feita na
janela Pesquisar ser salva no arquivo de recursos.

SAVE Mantm a janela Pesquisar e qualquer uma de suas janelas de edio de texto de campo
Memo ativas e visveis (abertas). Em seguida, voc poder retornar janela Pesquisar depois de
percorrer as outras janelas abertas com o teclado ou o mouse.

SAVE s est disponvel dentro de um programa, e no tem qualquer efeito quando includa com
BROWSE na janela Comando, pois BROWSE SAVE sempre o padro no modo interativo.

TIMEOUT nSegundos Especifica quanto tempo uma janela Pesquisar pode aguardar entrada.
expresso numrica nSegundos especifica quantos segundos podem decorrer sem nenhuma entrada
antes do fechamento automtico da janela Pesquisar.

TIMEOUT s est disponvel dentro de um programa, no apresentando qualquer efeito quando
BROWSE emitido na janela Comando. No exemplo a seguir, a janela Pesquisar ser fechada caso
no ocorra nenhuma entrada dentro de 10 segundos.

DEFINE WINDOW wBrowse FROM 1,1 TO 24,40 ;
CLOSE ;
GROW ;
COLOR SCHEME 10
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
BROWSE WINDOW wBrowse ;
FIELDS phone :H = 'Phone Number:' , ;
company :H = 'Company:' ;
TIMEOUT 10
RELEASE WINDOW wBrowse



TITLE cTextoTtulo Substitui o alias ou o nome de tabela padro exibido na barra de ttulo da
janela Pesquisar pelo ttulo especificado com cTextoTtulo. Caso contrrio, o nome ou o alias da
tabela que est sendo pesquisada ser exibido na barra de ttulo.

Se BROWSE WINDOW for emitido para colocar a janela Pesquisar em outra, definida pelo
usurio, o ttulo desta janela substituir o ttulo da outra.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
BROWSE;
TITLE 'My Browse Window' ;
FIELDS phone :H = 'Phone Number' , ;
company :H = 'Company:'



VALID lExpresso2 Executa a validao em nvel de registro em uma janela Pesquisar. A
clusula VALID s ser executada se houver uma alterao no registro e voc tentar mover o cursor
para outro registro. A clusula VALID no ser executada se a nica alterao feita for em um
campo Memo.

Se VALID retornar um valor verdadeiro (.T.), o usurio poder mover o cursor para outro registro.
Se VALID retornar um valor falso (.F.), o cursor permanecer no campo atual e o Visual FoxPro ir
gerar uma mensagem de erro. Se VALID retornar 0, o cursor permanecer no campo atual e no
ser exibida nenhuma mensagem de erro.

A clusula VALID no deve ser confundida com a opo de verificao (:V), que permite a
validao em nvel de campo.

:F Fora a execuo da clusula VALID antes de o usurio mover o cursor para o registro
seguinte. Nesse caso, VALID executada mesmo que o registro no seja alterado.

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

WHEN lExpresso3 Avalia uma condio quando o usurio move o cursor para outro registro. Se
lExpresso3 resultar em verdadeiro (.T.), o usurio poder modificar o registro para o qual se
moveu. Se lExpresso3 resultar em falso (.F.) ou 0, o registro para o qual o usurio se moveu se
tornar somente para leitura e no poder ser modificado

A clusula WHEN no executada quando outra janela est ativada.

WIDTH nLarguraCampo Limita o nmero de caracteres exibidos para todos os campos em uma
janela Pesquisar a nLarguraCampo. O contedo de um campo pode ser rolado horizontalmente,
utilizando as teclas de Seta Direita e Seta Esquerda ou a barra de rolagem horizontal. A incluso
da clusula WIDTH no altera o tamanho dos campos da tabela; ela altera somente a maneira como
os campos so exibidos na janela Pesquisar. Caso uma largura tenha sido especificada para um
campo individual com a clusula FIELDS, ela substituir a largura especificada com a clusula
WIDTH para esse campo.

WINDOW NomeJanela1 Especifica uma janela definida pelo usurio cujas caractersticas so
assumidas pela janela Pesquisar. Por exemplo, se a janela definida pelo usurio for criada com a
clusula FLOAT, a janela Pesquisar poder ser movida. A janela especificada no precisa estar
ativa ou visvel, mas deve estar definida.

IN [WINDOW] NomeJanela2 Especifica a janela pai dentro da qual a janela Pesquisar aberta. A
janela Pesquisar no assume as caractersticas da janela pai. Uma janela Pesquisar ativada dentro de
uma janela pai no pode ser deslocada para fora dela. Caso a janela pai seja movida, a janela
Pesquisar a acompanhar.

Para acessar a janela Pesquisar, a janela pai dever primeiro ser definida com DEFINE WINDOW
e dever estar ativa e visvel.

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

COLOR SCHEME nNmeroEsquema Especifica o nmero de um esquema de cores utilizado para
as cores da janela Pesquisar.

A janela Pesquisar assume o esquema de cores estabelecido com o uso da opo Cor do painel de
controle do Windows.

Comentrios

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

Se voc pressionar ESC para sair da janela Pesquisar, as alteraes feitas no ltimo campo
modificado sero descartadas. No entanto, se voc mover para outro registro aps modificar um
campo, as alteraes feitas nele sero salvas.

Para obter informaes sobre como navegar na janela Pesquisar, consulte o captulo 2, Criando
tabelas e ndices, no Guia do usurio.

A lista de campos pode especificar qualquer combinao de campos ou campos calculados.

A sintaxe da lista de campo :

FieldName1
[:R]
[:nColumnWidth]
[:V = lExpression1 [:F] [:E = cMessageText]]
[:P = cFormatCodes]
[:B = eLowerBound, eUpperBound [:F]]
[:H = cHeadingText]
[:W = lExpression2]
[, FieldName2 [:R]...]



Campos calculados A lista de campos pode conter instrues para a criao de campos
calculados. Um campo calculado contm dados somente para leitura criados com uma expresso.
Esta pode ter qualquer forma, mas deve ser do Visual FoxPro.

O formato da instruo que voc utiliza para criar um campo calculado o seguinte:

NomeCampoCalculado = eExpresso

Este exemplo cria um campo calculado chamado location:

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

City e Country so os nomes dos campos da tabela selecionada no momento.

A lista de campos da clusula FIELDS inclui opes que permitem a manipulao especial dos
campos exibidos em uma janela Pesquisar:

:R Especifica que o campo somente para leitura. Os dados contidos no campo podem ser
visualizados, mas no editados.

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

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



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

:V = lExpresso1 [:F] [:E = cTextoMensagem] Permite que voc execute validao de dados em
nvel de campo dentro da janela Pesquisar. Se lExpresso1 resultar em verdadeiro (.T.) quando o
cursor for movido de um campo, a entrada de dados nele ser considerada correta e o cursor se
mover para o campo seguinte.

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

A opo de verificao no executada para campos Memo.

Como padro, lExpresso1 ser avaliada somente quando o campo for modificado. Para forar a
verificao, inclua a opo :F.

possvel exibir a sua prpria mensagem de erro, incluindo a opo :E descrita abaixo.

:F Determina se a expresso na opo de verificao ser avaliada quando o cursor for movido
para fora de um campo ou outra janela for ativada. Se a opo :F no estiver includa, lExpresso1
s ser avaliado se forem feitas alteraes no campo. Se a opo :F estiver includa, lExpresso1
ser avaliada mesmo se o campo no for modificado.

:E = cTextoMensagem Se a expresso de validao :V = lExpresso1 resultar em verdadeiro (.T),
o cursor deixar o campo normalmente. Se a expresso resultar em falso (.F.), o cursor permanecer
no campo e o Visual FoxPro exibir uma mensagem de erro.

Se a opo de erro (:E) for includa, cTextoMensagem aparecer no lugar da mensagem de erro do
sistema. cTextoMensagem aparecer somente se SET NOTIFY estiver ativado (ON). A campainha
soar se SET BELL estiver ativado (ON).

Se :V = lExpresso1 resultar em 0, nenhuma mensagem ser exibida e o cursor permanecer no
campo que est sendo validado. Esta opo permite que voc exiba as suas prprias mensagens de
erro em rotinas de validao.

O exemplo a seguir abre a tabela products e exibe os campos Product_id e Prod_name. O campo
Product_id um campo numrico que aceitar at cinco nmeros. Para este exemplo, consideramos
um campo Product_id maior que 100 como no-vlido.

:V especifica os critrios de validao. :F fora a verificao da validao a ser executada se os
dados forem alterados ou no. :E substitui a mensagem de erro do sistema do Visual FoxPro por
uma definida pelo usurio. No Visual FoxPro, a mensagem de erro exibida na barra de status na
parte inferior da janela principal.

Pressione ESC para fechar a janela Pesquisar.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela products
IF _WINDOWS OR _MAC
SET STATUS BAR ON
ENDIF
USE products
BROWSE FIELDS in_stock :V = in_stock < 100 ;
:F ;
:E = 'O valor do estoque deve ser inferior a 100'



:P = cCdigosFormato Se voc incluir uma clusula FIELDS, tambm poder especificar uma
opo de figura (:P) para cada campo na lista. Ela permite que voc crie uma lista de cdigos que
controle a exibio e a entrada de dados para cada campo em uma janela Pesquisar.
cCdigosFormato a lista de cdigos.

O exemplo a seguir utiliza a opo de figura para permitir apenas a insero de dados numricos em
um formato especfico no campo unit_price:

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



Consulte as propriedades Format e InputMask para obter maiores informaes sobre os cdigos de
opo de figura.

:B = eLigaoInferior eLigaoSuperior [:F] Especifica um conjunto de limites no qual os dados
em um campo devem se encontrar. As expresses de limite eLigaoInferior e eLigaoSuperior
devem corresponder ao tipo de dados do campo. Elas no podem ser funes definidas pelo usurio.
Se os dados digitados no estiverem no intervalo entre eLigaoInferior e eLigaoSuperior, uma
mensagem de erro do sistema ser exibida indicando onde os dados devem se encontrar.

Como padro, os dados digitados s sero verificados com os valores de limite se voc alterar o
contedo do campo. Para forar esta verificao, inclua a opo de validao forada (:F).

O exemplo a seguir assegura que o valor no campo In_stock se encontre entre 1 e 100. Pressione
ESC para fechar a janela Pesquisar.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela products
BROWSE FIELDS in_stock :B = 1, 100 :F



:H = cTextoCabealho Substitui os nomes de campo padro pelos seus prprios cabealhos, que
so especificados com cTextoCabealho. Como padro, os nomes de campos so utilizados como
cabealhos de coluna na janela Pesquisar.

O exemplo a seguir fornece cabealhos definidos pelo usurio para os campos exibidos.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela products
BROWSE FIELDS prod_name :H = 'Product Name:', ;
unit_price :H = 'Price per Unit:'



:W = lExpresso2 Determina se o cursor pode ser movido para um campo. Se lExpresso2 resultar
em falso (.F.), ser proibido mover o cursor para o campo. Se lExpresso2 resultar em verdadeiro
(.T.), o cursor poder ser movido para o campo. As funes definidas pelo usurio so suportadas
em lExpresso2.

Se for proibida a movimentao do cursor para todos os campos, o registro atual ser marcado
como somente para leitura. Isto s ocorrer quando cada campo contiver uma clusula WHEN que
resulte em falsa.

Suporte SET SKIP SET SKIP permite que voc estabelea um relacionamento um-para-n entre
duas tabelas. Para cada registro da tabela pai, podem existir vrios registros relacionados na tabela
filho. Se voc criar um relacionamento um-para-n, poder utilizar BROWSE para visualizar
registros das tabelas pai e filho.

O registro pai exibido uma vez, junto com o primeiro registro correspondente da tabela filho. Os
registros correspondentes subseqentes so exibidos nas linhas aps o registro pai e o primeiro
registro filho correspondente. O caractere de preenchimento para informaes pai repetidas depende
da fonte atual da janela Pesquisar.

Caso o ponteiro do registro esteja posicionado em um registro pai, voc poder mov-lo entre os
registros pai na janela Pesquisar, pressionando as teclas CTRL+SETA ABAIXO para mover-se para
o prximo registro pai ou CTRL+SETA ACIMA para mover-se para o registro pai anterior. Para
obter maiores informaes sobre como criar relacionamentos um-para-n, consulte SET SKIP.

O exemplo a seguir utiliza SET SKIP para criar um relacionamento um-para-n entre duas tabelas.
Na tabela pai (customer) existe um nico registro. A tabela filho (orders) contm vrios registros
para cada registro da tabela pai. Depois de criado o relacionamento, aberta uma janela Pesquisar
que exibe registros das tabelas pai e filho.

A lista de campos da clusula FIELDS contm registros das tabelas pai e filho. Os nomes dos
campos so precedidos do respectivo alias de tabela (orders ou customer) e de um ponto.

CLEAR
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer ORDER cust_id IN 0 && Tabela pai
USE orders ORDER cust_id IN 0 && Tabela filho
SELECT customer && Volta rea de trabalho pai
SET RELATION TO cust_id INTO orders && Estabelece relacionamento
SET SKIP TO orders && Relacionamento um-para-n
WAIT WINDOW 'Role para ver as datas de expedio para cada cliente' NOWAIT
BROWSE FIELDS customer.cust_id :H='Nmero do Cliente', ;
customer.city :H='Cidade do Cliente', orders.shipped_on

Funes teis Vrias funes do Visual FoxPro retornam informaes teis sobre uma janela
Pesquisar.

Funo Descrio

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

BUILD EXE, comando


Cria um arquivo executvel a partir de um projeto.

Sintaxe

BUILD EXE NomeArquivoEXE FROM NomeProjeto [RECOMPILE]


Argumentos

NomeArquivoEXE Especifica o nome do arquivo executvel a ser criado. Caso exista um arquivo
de aplicativo .APP com o mesmo nome de arquivo raiz do arquivo executvel independente, ele
ser excludo. Se existir um arquivo executvel e voc criar um arquivo .APP com o mesmo nome,
o arquivo executvel ser excludo.

FROM NomeProjeto Especifica o nome do projeto a partir do qual o arquivo executvel criado.

RECOMPILE Especifica que o projeto compilado antes da criao do arquivo executvel. Todos
os arquivos de formato e de programa; formulrio, etiqueta, relatrio e cdigo de origem de
biblioteca de classe visual, bem como procedimentos armazenados nos bancos de dados do projeto,
so compilados.

Comentrios

Para obter informaes adicionais sobre a criao de arquivos executveis, consulte o captulo 25,
Construindo um aplicativo para distribuio, no Guia do Desenvolvedor.

Um arquivo executvel criado com BUILD EXE exige dois arquivos de suporte: VFP500.DLL e
VFP5ENU.DLL (EN denota a verso em ingls). Esses arquivos devem ser colocados no mesmo
diretrio que o arquivo executvel ou junto ao caminho do MS-DOS.

Se o arquivo executvel contm as definies de classe OLEPUBLIC, BUILD EXE
automaticamente registra as definies de classe OLEPUBLIC no registro do sistema. As definies
de classe OLEPUBLIC aparecem na caixa de listagem Classes do servidor, na guia Servidores da
caixa de dilogo Informaes sobre o projeto.

BUILD EXE tambm cria arquivos .VBR (registro) e .TLB (biblioteca de tipos) com o mesmo
nome do arquivo executvel. O arquivo .VBR permite registrar as definies de classe no registro
do sistema quando o arquivo executvel movido para um computador diferente. O arquivo .TLB
deve ser utilizado com pesquisadores de objeto.

Para obter maiores informaes sobre o registro das definies de classe OLEPUBLIC em um
arquivo executvel, consulte Criando servidores OLE personalizados no captulo 16,
Adicionando a OLE, no Guia do Desenvolvedor.

BUILD PROJECT, comando

Cria e constri um arquivo de projeto.

Sintaxe

BUILD PROJECT NomeArquivoProjeto
FROM NomePrograma1 | NomeMenu1 | NomeRelatrio1 | NomeEtiqueta1
| NomeFormulrio1 | NomeBiblioteca1
[, NomePrograma2 | NomeMenu2 | NomeRelatrio2 | NomeEtiqueta2
| NomeFormulrio2 | NomeBiblioteca2 ...]



Argumentos

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

FROM NomePrograma1 | NomeMenu1 | NomeRelatrio1 | NomeEtiqueta1
| NomeFormulrio1 | NomeBiblioteca1 Especifica os arquivos a serem includos no projeto.
possvel especificar um ou mais arquivos de programa, menu, relatrio, etiqueta, formulrio ou
biblioteca e o projeto ir controlar esses arquivos, bem como as dependncias, referncias e
conexes entre eles.

Como padro, o primeiro arquivo de menu ou programa executvel na clusula FROM o arquivo
de programa mestre do projeto.


Comentrios

BUILD PROJECT cria automaticamente uma tabela de projeto com uma extenso de nome de
arquivo .PJX ao abrir e processar um ou mais arquivos de programa, menu, relatrio, etiqueta,
formulrio ou biblioteca especificados. Voc pode utilizar o arquivo de projeto para criar um dentre
dois tipos de programa: um arquivo de aplicativo com uma extenso .APP ou um arquivo
executvel com uma extenso .EXE. A tabela de projeto controla todos os arquivos necessrios para
a criao de um aplicativo, bem como as dependncias, referncias e conexes entre os arquivos.
Uma vez que as partes do projeto forem especificadas, o Visual FoxPro certifica-se de que o
aplicativo est baseado nos arquivos fonte mais recentes.


Para obter maiores informaes sobre a criao de projetos, consulte o captulo 13, Compilando
um aplicativo, no Guia do Desenvolvedor.

Quando o Visual FoxPro encontra um arquivo de programa, menu ou formulrio ao criar um
arquivo de projeto com BUILD PROJECT, ele procura seu arquivo compilado e compara a marca
de data e hora dos dois arquivos. Caso a marca de data e hora do arquivo fonte seja posterior do
arquivo compilado, o Visual FoxPro ir recompilar o arquivo fonte.

Cada arquivo de projeto contm uma marca de data e hora para que voc possa atualiz-lo quando
fizer alteraes nos arquivos do projeto ou quando as dependncias forem alteradas. Isso ajuda a
garantir que qualquer aplicativo criado a partir de um arquivo de projeto sempre utilizar os
arquivos fonte mais recentes. Para atualizar um arquivo de projeto, emita BUILD PROJECT sem a
clusula opcional FROM. Em seguida, o Visual FoxPro atualizar o projeto especificado.

Quando voc emite BUILD PROJECT, referncias no resolvidas e outros erros so reportados,
mas no impedem que o arquivo de projeto seja criado. Isso permite criar um projeto mesmo que
todas as partes necessrias no tenham sido de fato criadas ou no estejam disponveis no momento
que o projeto criado. Referncias no resolvidas e outros problemas podero ser corrigidos
atualizando-se o arquivo de projeto em uma data posterior ou modificando-se manualmente as
informaes armazenadas no arquivo de projeto com MODIFY PROJECT.


I
IIM
MMP
PPO
OOR
RRT
TTA
AAN
NNT
TTE
EE :
:: C
CCo
oom
mmo
oo g
gge
eer
rra
aar
rr u
uum
mm .
.. E
EEX
XXE
EE

.
.. C
CCr
rri
ii a
aar
rr o
oo .
.. P
PPR
RRG
GG (
((C
CCo
oom
mm u
uum
mm e
eed
ddi
ii t
tt o
oor
rr)
))
.
.. E
EEx
xxe
eec
ccu
uut
tt a
aar
rr o
oo c
cco
oom
mma
aan
nnd
ddo
oo B
BBU
UUI
IIL
LLD
DD P
PPR
RRO
OOJ
JJE
EEC
CCT
TT n
nno
oom
mme
ee-
--1
11 F
FFR
RRO
OOM
MM n
nno
oom
mme
ee-
--p
ppr
rrg
gg
.
.. E
EEx
xxe
eec
ccu
uut
tt a
aar
rr o
oo c
cco
oom
mma
aan
nnd
ddo
oo B
BBU
UUI
IIL
LLD
DD E
EEX
XXE
EE n
nno
oom
mme
ee-exe FROM nome-1


CALCULATE, comando


Executa operaes financeiras e estatsticas em campos de uma tabela ou em expresses que
envolvem campos.

Sintaxe

CALCULATE eListaExpresses
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[TO ListaVarMem | TO ARRAY NomeMatriz]
[NOOPTIMIZE]


Argumentos

eListaExpresso Especifica as expresses que podem conter qualquer combinao das seguintes
funes:

AVG(nExpresso)

CNT( )

MAX(eExpresso)

MIN(eExpresso)

NPV(nExpresso1, nExpresso2 [, nExpresso3])

STD(nExpresso)

SUM(nExpresso)

VAR(nExpresso)

Na lista de expresses eListaExpresses, as funes so separadas por vrgulas. Essas funes so
especficas do comando CALCULATE e sero descritas em maiores detalhes posteriormente nesta
seo. Elas no devem ser confundidas com as funes independentes de mesmo nome. Por
exemplo, CALCULATE MIN( ) no igual a MIN( ).

Escopo Especifica um intervalo de registros utilizados no clculo. Apenas os registros dentro do
intervalo so includos no clculo. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD
nNmeroRegistro e REST. Para obter maiores informaes sobre as clusulas de escopo, consulte o
tpico Clusulas de escopo. Os comandos que incluem Escopo operam somente na tabela da
rea de trabalho ativa.

O escopo padro para CALCULATE ALL, ou seja todos os registros.

FOR lExpresso1 Especifica que somente os registros que satisfazem a condio lgica
lExpresso1 sero includos no clculo. A incluso de uma clusula FOR resulta na incluso
condicional dos registros no clculo, filtrando os registros indesejveis.

Rushmore otimizar uma consulta CALCULATE ... FOR se lExpresso1 for uma expresso
otimizvel. Para um melhor desempenho, use uma expresso otimizvel na clusula FOR. Para
obter maiores informaes sobre expresses otimizveis Rushmore, consulte SET OPTIMIZE e
Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do
Desenvolvedor.

WHILE lExpresso2 Especifica uma condio pela qual os registros sero includos no clculo
desde que a expresso lgica lExpresso2 resulte em verdadeiro (.T.).

TO ListaVarMem Especifica uma ou mais variveis de memria nas quais os resultados do clculo
so armazenados. Se voc especificar uma varivel de memria que no existe, o Visual FoxPro ir
cri-la automaticamente com o nome especificado.

TO ARRAY NomeMatriz Especifica um nome de matriz na qual os resultados do clculo podem
ser armazenados. Se voc especificar um nome de matriz que no existe, o Visual FoxPro criar
uma matriz automaticamente com o nome especificado. Se a matriz existir, mas no for grande o
bastante para conter todos os resultados do clculo, o Visual FoxPro aumentar automaticamente o
tamanho da matriz para abrir espao para as informaes. Se uma matriz existente for maior do que
o necessrio, os elementos adicionais permanecero inalterados. Os resultados so armazenados nos
elementos da matriz na ordem em que so especificados no comando CALCULATE.

NOOPTIMIZE Desativa a otimizao Rushmore de CALCULATE. Para obter maiores
informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore no captulo
15, Otimizando aplicativos, no Guia do Desenvolvedor.

AVG(nExpresso) Calcula a mdia aritmtica de nExpresso. Somente os registros que
correspondam ao Escopo e/ou condio opcional FOR ou WHILE sero includos no resultado.

CNT( ) Retorna o nmero de registros da tabela. Somente os registros que correspondam ao
Escopo e/ou condio opcional FOR ou WHILE sero includos no resultado.

MAX(eExpresso) Retorna o valor mais alto ou mais recente de eExpresso. Na clusula MAX( ),
pode ser especificado qualquer campo do tipo inteiro, numrico, flutuante, duplo, de caractere, de
data, de datahora ou de moeda, ou qualquer expresso que utilize campos desses tipos. Somente os
registros que correspondam ao Escopo e/ou condio opcional FOR ou WHILE sero includos no
resultado.

MIN(eExpresso) Retorna o valor mais baixo ou mais antigo de eExpresso. Qualquer campo de
caractere, data, datahora, numrico, flutuante, inteiro, duplo ou de moeda, ou qualquer expresso
vlida que utilize campos destes tipos pode ser includa em e
Expresso. Apenas os registros que correspondam ao Escopo e/ou condio opcional FOR ou
WHILE so includos no resultado.

NPV(nExpresso1, nExpresso2 [, nExpresso3]) Calcula o valor presente lquido de uma srie de
fluxos de caixa futuros descontados a uma taxa de juros peridica e constante.

nExpresso1 especifica a taxa de juros expressa como um valor decimal.

nExpresso2 especifica um campo, uma expresso de campo ou uma expresso numrica que
representa uma srie de fluxos de caixa. Cada fluxo de caixa pode ser positivo ou negativo. Nos
casos em que nExpresso2 for um campo, o valor de cada registro do campo ser considerado um
fluxo de caixa.

nExpresso3 especifica um investimento inicial opcional. Caso o investimento inicial no for
includo, ser admitido que ele ocorra no final do primeiro perodo. Esse investimento inicial o
primeiro registro do campo, sendo negativo a fim de representar uma sada de caixa.

Somente os registros que correspondam ao Escopo e/ou condio opcional FOR ou WHILE sero
includos no resultado.

STD(nExpresso) Calcula o desvio padro de nExpresso. O desvio padro mede o grau em que os
valores dos campos ou das expresses que envolvem campos diferem da mdia de todos os valores.
Quanto menor for o desvio padro, menor ser a variao entre os valores e a mdia. Somente os
registros que correspondam ao Escopo e/ou condio opcional FOR ou WHILE sero includos no
resultado.

SUM(nExpresso) Totaliza os valores de nExpresso. Somente os registros que correspondam ao
Escopo e/ou condio opcional FOR ou WHILE sero includos no resultado.

VAR(nExpresso) Calcula a varincia da mdia de nExpresso. A varincia o desvio padro
elevado ao quadrado. Quanto menor for a varincia, menor ser a variao entre os valores e a
mdia. Somente os registros que correspondam ao Escopo e/ou condio opcional FOR ou
WHILE sero includos no resultado.

Comentrios

Registros que contenham valores nulos no sero includos nas operaes executadas por
CALCULATE.

CALCULATE, exemplo do comando

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

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


CANCEL, comando


Finaliza a execuo do arquivo de programa atual do Visual FoxPro.

Sintaxe

CANCEL


Comentrios

O controle retornar janela Comando quando o Visual FoxPro estiver sendo utilizado de forma
interativa. Se um aplicativo distribudo em tempo de execuo estiver sendo executado, CANCEL
terminar o aplicativo e o controle retorna ao Windows. Se um programa estiver sendo executado
no Visual FoxPro na hora da criao, CANCEL terminar o programa e o controle retorna janela
Comando.

A execuo de CANCEL libera todas as variveis privadas.

CANCEL, exemplo do comando

O exemplo a seguir simula um loop de execuo do programa. Pelo loop, voc solicitado a
informar se deseja continuar. Se pressionar o boto Cancelar, CANCEL pra a execuo do
programa.

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

CAPSLOCK( ), funo

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

Sintaxe

CAPSLOCK([lExpresso])

Tipos de retorno

Lgico

Argumentos

lExpresso Includa para ativar ou desativar a tecla CAPS LOCK. CAPSLOCK(.T.) ativa CAPS
LOCK e CAPSLOCK(.F.) desativa CAPS LOCK. Um valor lgico correspondente definio de
CAPS LOCK emitido antes de CAPSLOCK(.T.) ou CAPSLOCK(.F.).

Comentrios

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

CAPSLOCK( ), exemplo da funo

O cdigo a seguir armazena o estado de CAPSLOCK( ) para uma varivel do sistema. O comando =
executa a funo CAPSLOCK( ) para ativar CAPS LOCK. Em seguida, o comando = executa a
funo CAPSLOCK( ) para definir CAPS LOCK como seu estado anterior.

glOldLock = CAPSLOCK( ) && Grava a definio original
= CAPSLOCK(.T.) && Ativa CAPS LOCK

*** Executar qualquer nmero de instrues ***

= CAPSLOCK(glOldLock) && Retorna definio original

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

= CAPSLOCK(!CAPSLOCK( ))
WAIT WINDOW
= CAPSLOCK(!CAPSLOCK( ))
WAIT WINDOW
= CAPSLOCK(glOldLock) && Retorna definio original


CD | CHDIR, comando

Altera o diretrio padro do Visual FoxPro para o diretrio especificado.

Sintaxe

CD cCaminho | CHDIR cCaminho

Argumentos

cCaminho Especifica um dos itens a seguir:

Um designador de unidade de disco.
Um designador de unidade de disco com um diretrio.
Um diretrio filho.
Qualquer opo acima usando a notao abreviada do MS-DOS ( \ ou ..). Quando voc
inclui .. para alterar ao diretrio pai, deve acrescentar um espao entre CD ou CHDIR e os dois
pontos.

Comentrios

Utilize CD ou CHDIR para especificar o diretrio padro do Visual FoxPro. O Visual FoxPro
procura arquivos no diretrio padro do Visual FoxPro. Caso o Visual FoxPro no localize um
arquivo no diretrio padro, ele ir procurar no caminho do Visual FoxPro, caso tenha sido
especificado. Utilize SET PATH para especificar o caminho do Visual FoxPro.

Se voc criar um arquivo e no especificar onde dever ser colocado, ele ser colocado no diretrio
padro do Visual FoxPro.



CD | CHDIR, exemplo do comando


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

SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro
MKDIR mytstdir && Cria um novo diretrio
CHDIR mytstdir && Altera para o novo diretrio
= GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio
SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro
RMDIR mytstdir && Remove o novo diretrio
= GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio

CDOW( ), funo


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

Sintaxe

CDOW(dExpresso | tExpresso)

Tipos de retorno

Caractere

Argumentos

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

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

Comentrios

CDOW( ) retorna o nome do dia da semana como uma seqncia no formato de nome prprio.

CDOW( ), exemplo da funo

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


CDX( ), funo


Retorna o nome do arquivo de ndice composto aberto (.CDX) que tem o nmero de posio de
ndice especificado.

Sintaxe

CDX(nNmerondice [, nreaTrabalho | cAliasTabela])

Tipos de retorno

Caractere

Argumentos

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

nNmerondice Descrio

1 Retorna o nome do arquivo de ndice estrutural(que sempre o mesmo que o nome da
tabela).
2 Retorna o primeiro nome de arquivo de ndice composto especificado na clusula INDEX
de USE ou em SET INDEX.
3 Retorna o segundo nome de arquivo de ndice composto, se presente, e assim por diante.
Maior que o nmero de arquivos .CDX abertos Retorna a seqncia vazia.


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

nNmerondice Descrio

1 Retorna o primeiro nome de arquivo de ndice composto especificado na clusula INDEX
de USE ou em SET INDEX.
2 Retorna o segundo nome de arquivo de ndice composto, se presente, e assim por diante.
Maior que o nmero de arquivos .CDX abertos Retorna a seqncia vazia.


nreaTrabalho Especifica o nmero da rea de trabalho de uma tabela, cujos nomes de arquivos
de ndice composto abertos voc deseja que sejam retornados por CDX( ).
cAliasTabela Especifica o alias de uma tabela, cujos nomes de arquivos de ndice composto
abertos voc deseja que sejam retornados por CDX( ).

Se voc omitir nreaTrabalho e cAliasTabela, sero retornados os nomes dos arquivos de ndice
composto correspondentes tabela na rea de trabalho selecionada no momento.

Comentrios

A funo CDX( ) idntica funo MDX( ).
Um ndice .CDX (composto) consiste em um arquivo fsico contendo vrias marcas de ndice. Cada
marca uma referncia de ordem de ndice para a tabela associada.
H dois tipos de arquivos .CDX: ndice composto padro (.CDX) e .CDX estrutural. Um ndice
composto padro (.CDX) pode ter um nome diferente da tabela associada e pode residir em um
diretrio diferente da tabela associada. Uma tabela pode ter vrios arquivos de ndice composto. Um
ndice composto aberto com a clusula INDEX de USE ou com SET INDEX.

Um .CDX estrutural deve ter o mesmo nome da tabela associada e residir no mesmo diretrio. Uma
tabela pode ter somente um arquivo de ndice estrutural. Os arquivos .CDX estruturais so abertos e
atualizados automaticamente quando a tabela associada aberta com USE.
CDX( ) ignora qualquer arquivo .IDX (ndice compatvel com FoxBASE+ e FoxPro 1.0)
especificados em USE ou SET INDEX.
Utilize TAG( ) para retornar nomes de marcas individuais contidos em um .CDX e NDX( ) para
retornar o nome dos arquivos .IDX abertos.

Quando SET FULLPATH estiver ON, CDX( ) retornar o caminho e o nome de .CDX. Quando
SET FULLPATH estiver OFF, CDX( ) retornar a unidade de disco e o nome de .CDX.

CDX( ), exemplo da funo

O exemplo a seguir abre a tabela customer no banco de dados testdata. FOR ... ENDFOR utilizado
para criar um loop em que o nome de cada ndice estrutural exibido.

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

CLEAR
FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount)) && Verifica marcas no ndice
? CDX(nCount) && Exibe nomes de ndice estrutural
ELSE
EXIT && Sai do loop quando no so mais encontradas marcas
ENDIF
ENDFOR



CEILING( ), funo


Retorna o prximo inteiro maior ou igual expresso numrica especificada.

Sintaxe

CEILING(nExpresso)

Tipos de retorno

Numrico

Argumentos

nExpresso Especifica o nmero cujo prximo inteiro maior retornado por CEILING( ).

Comentrios

CEILING arredonda um nmero com frao para o prximo inteiro maior.

CEILING( ), exemplo de funo

STORE 10.1 TO num1
STORE -10.9 TO num2
? CEILING(num1) && Exibe 11
? CEILING(num2) && Exibe -10
? CEILING(10.0) && Exibe 10
? CEILING(-10.0) && Exibe -10


CHANGE, comando


Exibe campos para edio.

Sintaxe

CHANGE
[FIELDS ListaCampos]
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[FONT cNomeFonte [,nTamanhoFonte]]
[STYLE cEstiloFonte]
[FREEZE NomeCampo]
[KEY eExpresso1 [, eExpresso2]]
[LAST | NOINIT]
[LPARTITION]
[NAME NomeObjeto]
[NOAPPEND]
[NOCLEAR]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLINK]
[NOMENU]
[NOOPTIMIZE]
[NORMAL]
[NOWAIT]
[PARTITION nNmeroColuna [LEDIT] [REDIT]]
[PREFERENCE NomePreferncia]
[REST]
[SAVE]
[TIMEOUT nSegundos]
[TITLE cTextoTtulo]
[VALID [:F] lExpresso3 [ERROR cTextoMensagem]]
[WHEN lExpresso4]
[WIDTH nLarguraCampo]
[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN | IN MACDESKTOP]]
[COLOR SCHEME nNmeroEsquema
| COLOR ListaParesCores]


Argumentos

Os argumentos de CHANGE so iguais aos de EDIT. Consulte EDIT para obter uma descrio dos
argumentos.


Comentrios

CHANGE funciona da mesma forma que EDIT.


CHR( ), funo


Retorna o caractere associado ao cdigo numrico ANSI especificado.

Sintaxe

CHR(nCdigoANSI)

Tipos de retorno

Caractere

Argumentos

nCdigoANSI Especifica um nmero entre 0 e 255, cujo caractere ANSI equivalente retornado
por CHR( ).

Utilize ASC( ) para retornar o valor ANSI para um caractere especfico.

Comentrios

CHR( ) retorna um caractere nico correspondente posio numrica do caractere na tabela de
caracteres da pgina de cdigo atual. CHR( ) pode ser utilizado para enviar cdigos de controle de
impresso para a impressora.

CHR( ), exemplo de funo

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

CLEAR
FOR nCOUNT = 65 TO 75
? nCount && Exibe o valor numrico
?? ' ' + CHR(nCount) && Exibe o caractere
ENDFOR

CHRSAW( ), funo


Determina se um caractere est presente ou no no buffer de teclado.

Sintaxe

CHRSAW([nSegundos])

Tipos de retorno

Lgico

Argumentos

nSegundos Especifica o tempo em segundos que CHRSAW( ) espera antes de verificar o buffer do
teclado. O buffer do teclado ser verificado imediatamente se nSegundos for omitido.

A incluso de nSegundos permite que voc utilize CHRSAW( ) para diversas atividades com
intervalo de tempo determinado. Por exemplo, seu programa pode fechar um aplicativo se uma tecla
no for pressionada aps um nmero especfico de segundos.

Comentrios

CHRSAW( ) retornar verdadeiro (.T.) se um caractere estiver presente no buffer do teclado; caso
contrrio, retornar falso (.F.). CHRSAW( ) no afeta o contedo do buffer do teclado.

CHRSAW( ), exemplo de funo

No exemplo a seguir, o sistema exibe uma janela que contm campos de entrada criados com os
comandos @... GET e espera 5 segundos para a entrada do teclado. Se uma tecla no for
pressionada neste perodo de tempo, CHRSAW( ) resultar em falso (.F.) e o programa ser
finalizado.

SET TALK OFF
DEFINE WINDOW wEnter FROM 7,10 to 13,70 PANEL
ACTIVATE WINDOW wEnter
@ 1,3 SAY 'Customer: ' GET gcCustomer DEFAULT SPACE(40)
@ 3,3 SAY 'Address: ' GET gcAddress DEFAULT SPACE(40)
WAIT WINDOW 'Waiting for input' NOWAIT
IF NOT CHRSAW(5)
DEACTIVATE WINDOW wEnter
CLEAR GETS
ELSE
READ
DEACTIVATE WINDOW wEnter
ENDIF
RELEASE WINDOW wEnter
WAIT
CLEAR

CHRTRAN( ), funo


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

Sintaxe

CHRTRAN(cExpressoProcurada, cExpressoProcura, cExpressoSubstituio)


Tipos de retorno

Caractere

Argumentos

cExpressoProcurada Especifica a expresso na qual CHRTRAN( ) substitui caracteres.

cExpressoProcura Especifica a expresso que contm os caracteres que CHRTRAN( ) procura em
cExpressoProcurada.

cExpressoSubstituio Especifica a expresso que contm os caracteres de substituio.

Se um caractere em cExpressoProcura for localizado em cExpressoProcurada, o caractere em
cExpressoProcurada ser substitudo pelo caractere de cExpressoSubstituio que estiver na
mesma posio em cExpressoSubstituio que o respectivo caractere em cExpressoProcura.

Se cExpressoSubstituio tiver menos caracteres do que cExpressoProcura, os caracteres
adicionais em cExpressoProcura sero excludos de cExpressoProcurada. Se
cExpressoSubstituio tiver mais caracteres do que cExpressoProcura, os caracteres adicionais
em cExpressoSubstituio sero ignorados.

Comentrios

CHRTRAN( ) converte a expresso de caracteres cExpressoProcurada utilizando as expresses de
converso cExpressoProcura e cExpressoSubstituio e retorna a seqncia de caracteres
resultante.

CHRTRAN( ), exemplo de funo

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

CHRTRANC( ), funo


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

Sintaxe

CHRTRANC(cProcurado, cProcurarPor, cSubstituio)

Tipos de retorno

Caractere

Argumentos

cProcurada Especifica a expresso na qual CHRTRANC( ) substitui caracteres.

cProcurarPor Especifica a expresso que contm os caracteres que CHRTRANC( ) procura em
cProcurada.

cSubstituio Especifica a expresso que contm os caracteres de substituio.

Se um caractere em cProcurarPor for localizado em cProcurada, o caractere em cProcurada ser
substitudo por um caractere de cSubstituio que estiver na mesma posio em cSubstituio que o
respectivo caractere em cProcurarPor.

Se cSubstituio tiver menos caracteres do que cProcurarPor, os caracteres adicionais em
cProcurarPor sero excludos de cProcurado. Se cSubstituio tiver mais caracteres do que
cProcurarPor, os caracteres adicionais em cSubstituio sero ignorados.

Comentrios

CHRTRANC( ) projetado para facilitar o trabalho com expresses que contenham caracteres de
byte duplo. Utilize CHRTRANC( ) para substituir os caracteres de byte nico por caracteres de byte
duplo ou vice-versa. SE as expresses contiverem apenas caracteres de byte nico, o
CHRTRANC( ) ser equivalente a CHRTRAN( ).

CLEAR, comandos


Libera o item ou itens especificados da memria.

Sintaxe

CLEAR
[ALL | CLASS NomeClasse | CLASSLIB NomeBibliotecaClasses | DEBUG
| DLLS | EVENTS | FIELDS | GETS | MACROS | MEMORY
| MENUS | POPUPS | PROGRAM | PROMPT | READ [ALL]
| RESOURCES [NomeArquivo] | TYPEAHEAD | WINDOWS]



Argumentos

ALL Libera da memria todas as matrizes e variveis de memria e todas as definies do usurio
para barras de menus, menus e janelas. CLOSE ALL tambm fecha qualquer tabela, inclusive todos
os arquivos de ndice, de formatao e memo associados, e seleciona a rea de trabalho 1. CLEAR
ALL tambm remove da memria todas as funes de bibliotecas compartilhadas externas
registradas por meio de DECLARE - DLL.

CLEAR ALL no libera variveis de memria do sistema e no limpa o buffer do programa
compilado. Para limpar o buffer, utilize CLEAR PROGRAM.

Se voc emitir CLEAR ALL dentro de um evento ou mtodo de um controle ou objeto ativo, o
Visual FoxPro exibir uma mensagem de erro. Uma varivel de memria do tipo objeto no pode
ser liberada da memria enquanto o controle ou objeto associado a ela estiver ativo.

CLASS NomeClasse Limpa uma definio de classe da memria.Quando uma instncia de classe
criada, o Visual FoxPro guarda a definio de classe na memria, mesmo depois que a instncia
liberada. Utilize CLEAR CLASS para limpar uma definio de classe da memria depois que a
instncia for liberada.

CLASSLIB NomeBibliotecaClasses Limpa da memria todas as definies de classes contidas em
uma biblioteca de classes visuais. Se existirem instncias de classes na biblioteca de classes, as
definies de classes no so limpas da memria. Entretanto, todas as definies de classes que no
tenham instncias so limpas da memria.

DEBUG Limpa todos os pontos de interrupo no Depurador e restaura as janelas de depurao
(Chamar Pilha, Rastrear, Observar etc.) s suas posies padro.

Se Clear Debug for emitido quando o Depurador estiver fechado, o Depurador ser aberto com as
janelas de depurao em suas posies padro.

Trabalha no modo de moldura do depurador ou fox.

DLLS Limpa da memria todas as bibliotecas compartilhadas externas com DECLARE - DLL.
Consulte DECLARE -DLL para obter maiores informaes sobre como registrar as funes de
bibliotecas compartilhadas externas.

EVENTS Interrompe o processamento de eventos iniciado com READ EVENTS. Quando CLEAR
EVENTS for executado, a execuo do programa continuar na linha do programa imediatamente
aps READ EVENTS.

FIELDS Libera uma lista criada com SET FIELDS e executa SET FIELDS OFF. A diferena entre
CLEAR FIELDS e SET FIELDS TO que o primeiro libera todas as listas de campos de todas as
reas de trabalho, e no apenas a lista de campos da rea de trabalho atual. Alm disso, SET
FIELDS TO no emite um comando SET FIELDS OFF de forma implcita.

GETS Libera todos os controles @ ... GET pendentes. O comando CLEAR tambm libera todos os
controles @ ... GET pendentes.

MACROS Libera da memria todas as macros de teclado, inclusive todas as atribuies de teclas
definidas com SET FUNCTION. As macros podem ser salvas em um arquivo de macros ou em um
campo Memo atravs de SAVE MACROS e restauradas posteriormente com RESTORE
MACROS. As macros padro tambm podem ser restauradas com RESTORE MACROS.

MEMORY Libera da memria todas as matrizes e variveis de memria pblicas e privadas. As
variveis de memria do sistema no so liberadas.

MENUS Libera todas as definies de barras de menus da memria.

POPUPS Libera da memria todas as definies de menus criadas com DEFINE POPUP.

PROGRAM Limpa o buffer de programa compilado. O Visual FoxPro mantm um buffer dos
ltimos programas executados. Em raras ocasies, o Visual FoxPro poder no reconhecer as
alteraes feitas nos arquivos de programa no disco. CLEAR PROGRAM fora o Visual FoxPro a
ler os programas no disco, em vez de ler no buffer de programa. O motivo mais comum para o
Visual FoxPro no reconhecer as alteraes feitas nos arquivos de programa a utilizao de um
editor externo ou residente (TSR) para fazer essas modificaes. Com exceo desta situao, no
ser necessrio utilizar CLEAR PROGRAM.

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

READ [ALL] Includo para manter a compatibilidade com verses anteriores. Utilize CLEAR
EVENTS como substituto.

RESOURCES [NomeArquivo] Especifica o nome de um arquivo de cone, cursor, fonte, figura ou
bitmap no cache a ser limpo da memria. Se nenhum nome de arquivo for especificado, todos os
arquivos de cone, cursor, fonte, figura e bitmap sero removidos da memria.

Quando o Visual FoxPro exibe um recurso de fonte, cone, cursor, figura ou bitmap, o recurso fica
na memria cache para otimizar o desempenho. Se um recurso com o mesmo nome for utilizado
(por exemplo, um bitmap diferente com o mesmo nome de um j existente no cache de memria), o
Visual FoxPro no recarregar o recurso.

Limpar um arquivo de recurso til principalmente para remover uma imagem grfica da memria
e fazer com que o Visual FoxPro recarregue uma imagem com o mesmo nome a partir do disco. Por
exemplo, um relatrio pode exibir imagens grficas de um banco de dados, todas denominadas
TEMP; no entanto, como todas possuem o mesmo nome, o Visual FoxPro no recarregar cada
nova imagem grfica, a menos que uma j existente tenha sido limpa da memria utilizando o
comando CLEAR RESOURCES.

TYPEAHEAD Limpa o buffer de teclado. CLEAR TYPEAHEAD til quando voc deseja evitar
que um campo receba entrada ou que um aviso seja respondido antes que o campo ou aviso seja
exibido.
WINDOWS Libera da memria todas as caractersticas de janelas definidas pelo usurio e limpa
as janelas da janela principal do Visual FoxPro ou da janela ativa definida pelo usurio. Utilize
SAVE WINDOW para salvar as definies de janelas em um arquivo ou campo Memo para uso
posterior.

CLEAR WINDOWS libera da memria qualquer referncia de variveis de memria aos
formulrios. Por exemplo, os comandos a seguir criam uma referncia de varivel de memria para
um formulrio e, em seguida, exibem informaes sobre a varivel:

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



Ao se emitir CLEAR WINDOWS, a referncia da varivel de memria liberada e a varivel de
memria passa a conter o valor nulo:

CLEAR WINDOWS
DISPLAY MEMORY LIKE goMyForm && Exibe GOMYFORM O .NULL.

Comentrios

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

CLOSE, comandos


Fecha diversos tipos de arquivos.

Sintaxe

CLOSE
[ALL | ALTERNATE | DATABASES [ALL] | DEBUGGER
| FORMAT | INDEXES | PROCEDURE | TABLES [ALL]]



Argumentos

ALL Fecha todos os bancos de dados, tabelas e ndices abertos em todas as reas de trabalho e
seleciona a rea de trabalho 1. CLOSE ALL tambm fecha todos os arquivos abertos com as
funes de arquivo de nvel inferior FCREATE( ) e FOPEN( ). CLOSE ALL no fecha um arquivo
aberto com SET PRINT.

CLOSE ALL tambm fecha os itens:

Criador de formulrios
Gerenciador de projetos
Criador de etiquetas
Criador de relatrios
Criador de consultas

CLOSE ALL no fecha os itens:

janela Comando
janela Depurar
Ajuda
janela Rastrear
CLOSE ALTERNATE Fecha um arquivo alternativo aberto com SET ALTERNATE.

CLOSE DATABASES [ALL] Fecha o banco de dados atual e suas tabelas. Se no houver um
banco de dados aberto no momento, todas as tabelas livres, ndices e arquivos de formatao
abertos em todas as reas de trabalho so fechados e a rea de trabalho 1 selecionada.

ALL

Especifica que sero fechados os itens a seguir:

Todos os bancos de dados abertos e suas respectivas tabelas.
Todas as tabelas livres abertas.
Todos os ndices e arquivos de formatao em todas as reas de trabalho.
A rea de trabalho 1 selecionada.

CLOSE DEBUGGER Fecha o depurador do Visual FoxPro.

CLOSE FORMAT Fecha um arquivo de formatao da rea de trabalho atual aberto com SET
FORMAT.

CLOSE INDEXES Fecha todos os arquivos de ndice abertos (arquivos .IDX de entrada simples e
arquivos .CDX compostos independentes) na rea de trabalho atual. Um ndice composto estrutural
(arquivos .CDX abertos automaticamente com a tabela) no fechado.

CLOSE PROCEDURE Fecha um arquivo de procedimentos aberto com SET PROCEDURE.

CLOSE TABLES [ALL] Fecha todas as tabelas de todos os bancos de dados abertos, mas deixa os
bancos de dados abertos. Caso no haja um banco de dados aberto, CLOSE TABLES fechar todas
as tabelas livres de todas as reas de trabalho.

CLOSE TABLES no dever ser emitido quando uma transao estiver em andamento, pois o
Visual FoxPro ir gerar uma mensagem de erro.

ALL

Especifica que todas as tabelas, inclusive as livres, sero fechadas em todas as reas de trabalho.
Todos os bancos de dados permanecero abertos.




CMONTH( ), funo


Retorna o nome do ms de uma determinada expresso de data ou Data Hora.

Sintaxe

CMONTH(dExpresso | tExpresso)

Tipos de retorno

Caractere

Argumentos

dExpresso Especifica a expresso de data a partir da qual CMONTH( ) retorna o nome do ms.

tExpresso Especifica a expresso DataHora a partir da qual CMONTH( ) retorna o nome do ms.

Comentrios

CMONTH( ) retorna o nome do ms como uma seqncia no formato de substantivo prprio.

CMONTH( ), exemplo de funo

? CMONTH(DATE( ))
STORE {02/16/95} TO gdDueDate
? 'Seu pagamento venceu em ', CMONTH(gdDueDate)
STORE gdDueDate+60 TO gdFinalDate
? 'Voc deve pagar at ', CMONTH(gdFinalDate)
? | ??, comando


Avalia expresses e exibe os resultados.

Sintaxe

? | ?? Expresso1
[PICTURE cCdigosFormato] | [FUNCTION cCdigosFormato] | [VnLargura]
[AT nColuna]
[FONT cNomeFonte [, nTamanhoFonte] [STYLE cEstiloFonte | Expresso2]]
[, Expresso3] ...



Argumentos

? Expresso1 Avalia a expresso especificada por Expresso1 e envia um retorno de carro e
alimentao de linha antes dos resultados da expresso. Os resultados so exibidos na prxima linha
da janela principal do Visual FoxPro ou da janela ativa definida pelo usurio e so impressos na
margem esquerda de uma pgina, a menos que um cdigo de funo cCdigosFormato ou a varivel
do sistema _ALIGNMENT especifique o contrrio.

Se voc omitir as expresses, uma linha em branco ser exibida ou impressa. Um espao ser
colocado entre os resultados dessas expresses quando vrias expresses forem includas.

?? Expresso1 Avalia a expresso especificada por Expresso1 e exibe os resultados da expresso
na linha atual na posio atual da janela principal do Visual FoxPro, de uma janela ativa definida
pelo usurio ou da impressora. Um retorno de carro e alimentao de linha no so enviados antes
dos resultados.

PICTURE cCdigosFormato Especifica um formato de figura no qual exibido o resultado de
Expresso1. cCdigosFormato pode consistir em cdigos de funo, cdigos de figura ou em uma
combinao dos dois. possvel utilizar os mesmos cdigos disponveis nas propriedades Format e
InputMask.

Os cdigos de funo afetam o formato geral do resultado; os cdigos de figura agem sobre
caracteres individuais no resultado. Se os cdigos de funo forem utilizados em cCdigosFormato,
eles devero aparecer antes dos cdigos de figura e ser precedidos por @. Vrios cdigos de funo
sem espaos incorporados podem aparecer logo depois de @. O ltimo cdigo de funo deve ser
seguido de um ou mais espaos. O(s) espao(s) indicam o fim dos cdigos de funo e o incio dos
cdigos de figura.

FUNCTION cCdigosFormato Especifica um cdigo de funo a ser includo na sada ? e ??. Se a
clusula de funo estiver includa, no coloque @ antes dos cdigos de funo. Os cdigos de
funo devem ser precedidos por @ quando includos em PICTURE.

VnLargura Especifica um cdigo de funo especial que permite que os resultados de uma
expresso de caracteres se estendam verticalmente em um nmero limitado de colunas. nLargura
especifica o nmero de colunas na sada.

? 'Este um exemplo de como o cdigo de funo V funciona.' ;
FUNCTION 'V10'

AT nColuna Especifica o nmero da coluna onde a sada exibida. Essa opo permite que voc
alinhe a sada em colunas para criar uma tabela. A expresso numrica nColuna pode ser uma
funo definida pelo usurio que retorne um valor numrico.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte para a sada ? | ??. cNomeFonte
especifica o nome da fonte e nTamanhoFonte especifica o tamanho em pontos. Por exemplo, o
comando a seguir exibe a data do sistema na fonte Courier de 16 pontos:

? DATE( ) FONT 'Courier',16

Se voc incluir a clusula FONT, mas omitir o tamanho em pontos nTamanhoFonte, ser utilizada
uma fonte de 10 pontos.

Caso omita clusula FONT e a sada ? | ?? for colocada na janela principal do Visual FoxPro, a
fonte da janela principal do FoxPro ser utilizada na sada. Caso omita a clusula FONT e a sada ? |
?? for colocada em uma janela definida pelo usurio, a fonte da janela definida pelo usurio ser
utilizada na sada.

Se a fonte especificada no estiver disponvel, ela ser substituda por outra fonte com
caractersticas semelhantes.

STYLE cEstiloFonte Especifica um estilo de fonte para a sada ? | ??. Se voc omitir a clusula
STYLE, o estilo de fonte Normal ser utilizado. Se o estilo de fonte especificado no estiver
disponvel, ele ser substitudo por um estilo de fonte com caractersticas semelhantes.

Observao necessrio incluir a clusula FONT ao especificar um estilo de fonte com a clusula
STYLE.

Os estilos de fonte que podem ser especificados com cEstiloFonte so:

Caractere Estilo de fonte

B Negrito
I Itlico
N Normal
O Contorno
Q Opaco
S Sombreado
- Riscado
T Transparente
U Sublinhado
Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. Por
exemplo, o comando a seguir exibe a data do sistema em Courier Negrito Itlico:

? DATE( ) FONT 'COURIER' STYLE 'BI'

Comentrios

? e ?? avaliam expresses e enviam os resultados para a janela principal do Visual FoxPro, para
uma janela ativa definida pelo usurio ou para a impressora.

Caso SET PRINTER estiver ativado (ON), os resultados da expresso sero direcionados para a
impressora e para a janela principal do Visual FoxPro ou para uma janela ativa definida pelo
usurio. Se SET PRINTER estiver ativado (ON) e SET CONSOLE estiver desativado (OFF), os
resultados sero direcionados somente para a impressora.

? | ??, exemplo do comando

? 15 * (10+10)
? 'Bem-vindo ao ' PICTURE '@!'
?? 'Visual FoxPro'


????, comando


Envia a sada diretamente para a impressora.

Sintaxe

??? cExpresso



Argumentos

cExpresso Especifica os caracteres que so enviados para a impressora.


Comentrios

Um grupo de trs pontos de interrogao desconsidera o driver da impressora e envia o contedo de
cExpresso diretamente para a impressora. cExpresso deve conter cdigos de impressora vlidos.

Os cdigos de controle de impressora permitem reinicializar a impressora, alterar o tamanho e estilo
de tipo grfico, bem como ativar ou desativar a impresso em negrito. Esses cdigos podem
consistir em qualquer combinao de caracteres que podem ser ou no impressos e so especficos
da impressora que est sendo utilizada. Existem vrias maneiras diferentes de direcionar cdigos de
controle impressora:

Utilizar combinaes de CHR( ) e seqncias entre aspas concatenadas com + para enviar
caracteres ASCII diretamente impressora.
Utilizar aspas para enviar uma seqncia contendo cdigos de impressora ou caracteres
ASCII.
Os cdigos podem ser enviados para a impressora antes do incio e depois do trmino da
impresso com as variveis do sistema _PSCODE e _PECODE. Para obter maiores informaes,
consulte _PSCODE e _PECODE.



Os cdigos de controle de impressora variam de impressora a impressora. A melhor fonte de
informaes sobre os cdigos de controle de impressora o manual que acompanha a sua
impressora.

CONTINUE, comando


D continuidade ao LOCATE anterior.

Sintaxe

CONTINUE



Comentrios

CONTINUE utilizado depois que LOCATE localiza um registro, a fim de continuar a operao de
LOCATE. CONTINUE move o ponteiro do registro at o prximo registro para o qual a expresso
lgica especificada no LOCATE anterior resultar verdadeiro (.T.).

CONTINUE pode ser utilizado vrias vezes at o fim do arquivo ou do escopo especificado com
LOCATE.

Se CONTINUE localizar um registro, RECNO( ) retornar o nmero do registro, FOUND( )
retornar um valor verdadeiro (.T.) e EOF( ) retornar um valor falso (.F.).

Se CONTINUE no localizar um registro, RECNO( ) retornar o nmero de registros da tabela mais
um, FOUND( ) retornar falso (.F.) e EOF( ) retornar verdadeiro (.T.).

CONTINUE, exemplo do comando

No exemplo a seguir, todos os clientes da Frana so contados e o total ser exibido. Todos os
registros so encontrados com a utilizao de um comando LOCATE seguido de um comando
CONTINUE dentro de um loop.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
SET TALK OFF
STORE 0 TO gnCount

LOCATE FOR ALLTRIM(UPPER(country)) = 'FRANCE'
DO WHILE FOUND( )
gnCount = gnCount + 1
CONTINUE
ENDDO
? 'Total de clientes na Frana: '+ LTRIM(STR(gnCount))

COPY FILE, comando


Duplica qualquer tipo de arquivo.

Sintaxe

COPY FILE NomeArquivo1 TO NomeArquivo2



Comentrios

COPY FILE cria uma duplicata do arquivo cujo nome especificado em NomeArquivo1.
possvel utilizar COPY FILE para copiar qualquer tipo de arquivo. O arquivo a ser copiado no
pode estar aberto. Voc deve incluir as extenses para o nome de arquivo de origem NomeArquivo1
e o nome de arquivo de destino NomeArquivo2.

NomeArquivo1 e NomeArquivo2 pode conter caracteres curinga como * e ?. Por exemplo, para
criar cpias de backup de todos os arquivos de programa com a extenso .PRG no diretrio ou pasta
atual, emita COPY FILE *.PRG TO *.BAK.

Se voc utilizar COPY FILE para criar uma cpia de backup de uma tabela, que possui um campo
Memo, um ndice estrutural ou ambos, certifique-se de copiar tambm os arquivos .FPT e .CDX.

COPY STRUCTURE, comando


Cria uma nova tabela livre e vazia com a mesma estrutura da tabela selecionada no momento.

Sintaxe

COPY STRUCTURE TO NomeArquivo
[FIELDS ListaCampos]
[[WITH] CDX | [WITH] PRODUCTION]



Argumentos

NomeArquivo Especifica o nome da nova tabela vazia a ser criada.

No Visual FoxPro, o suporte ao valor nulo e pgina de cdigo para a nova tabela livre so
idnticos tabela selecionada atualmente.

FIELDS ListaCampos Especifica que apenas os campos, cujos nomes esto indicados em
ListaCampos, sero copiados para a nova tabela. Se voc omitir FIELDS ListaCampos, todos os
campos sero copiados para a nova tabela.

[WITH] CDX | [WITH] PRODUCTION Cria, para a nova tabela, um arquivo de ndice estrutural
idntico ao da tabela existente. As marcas e as expresses de ndice do arquivo de ndice estrutural
original so copiadas para o novo arquivo de ndice estrutural.


As clusulas CDX e PRODUCTION so idnticas.

No Visual FoxPro, um ndice primrio para a tabela selecionada no momento convertido em um
ndice candidato para a nova tabela vazia.



COPY STRUCTURE, exemplo do comando

No exemplo a seguir, a tabela customer aberta, sua estrutura copiada para uma tabela
denominada backup e a tabela backup aberta. APPEND FROM, em seguida, inclui registros na
tabela backup a partir da tabela customer e uma janela Pesquisar aberta para a tabela backup.

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

COPY STRUCTURE TO backup
USE backup
APPEND FROM customer FOR country = 'UK'
BROWSE FIELDS contact, country
USE
DELETE FILE backup.dbf

COPY STRUCTURE EXTENDED, comando


Cria uma nova tabela com campos contendo a estrutura da tabela selecionada no momento.

Sintaxe

COPY STRUCTURE EXTENDED TO NomeArquivo
[DATABASE NomeBancoDeDados [NAME NomeTabelaExtenso]]
[FIELDS ListaCampos]



Argumentos

NomeArquivo Especifica a nova tabela a ser criada.

DATABASE NomeBancoDeDados Especifica um banco de dados ao qual a nova tabela ser
adicionada.

NAME NomeTabelaExtenso Especifica um nome extenso para a nova tabela. Os nomes extensos
podem conter at 128 caracteres e podem ser utilizados no lugar de nomes de arquivo curtos no
banco de dados.

FIELDS ListaCampos Especifica que apenas os campos indicados em ListaCampos sero includos
em um registro na nova tabela. Se voc omitir FIELDS ListaCampos, todos os campos tero um
registro na nova tabela.



Comentrios

As informaes sobre cada campo da tabela selecionada no momento so copiadas para um registro
na nova tabela. A estrutura da nova tabela tem um formato fixo e consiste em dezesseis campos. A
tabela abaixo lista os nomes dos dezesseis campos e seu respectivo contedo.

Campo Tipo do campo Contedo

FIELD_NAME Caractere Nomes de campos da tabela selecionada (128 caracteres de largura)
FIELD_TYPE Caractere Tipos de campos:
C = Caractere
Y = Moeda
N = Numrico
F = Flutuante
I = Inteiro
B = Duplo
D = Data
T = DataHora
L = Lgico
M = Memo
G = Geral
FIELD_LEN Numrico Largura dos campos
FIELD_DEC Numrico Nmero de casas decimais em campos numricos
FIELD_NULL Lgico Suporte ao valor nulo do campo
FIELD_NOCP Lgico No permitida a traduo da pgina de cdigo (somente campos do tipo
caractere e memo)
FIELD_DEFA Memo Valores padro do campo
FIELD_RULE Memo Regras de validao do campo
FIELD_ERR Memo Texto de validao do campo
TABLE_RULE Memo Regra de validao da tabela
TABLE_ERR Memo Texto de validao da tabela
TABLE_NAME Caractere Nome de tabela extenso (somente o primeiro registro)
INS_TRIG Memo Inserir expresso de disparo (somente o primeiro registro)
UPD_TRIG Memo Atualizar expresso de disparo (somente o primeiro registro)
DEL_TRIG Memo Excluir expresso de disparo (somente o primeiro registro)
TABLE_CMT Memo Comentrio da tabela (somente o primeiro registro)


Voc pode modificar a tabela recm-criada e utilizar CREATE FROM para criar uma nova tabela
com uma estrutura diferente. COPY STRUCTURE e CREATE FROM permitem a alterao da
estrutura de uma tabela atravs de programao.
A largura do campo FIELD_NAME de 10 caracteres em verses anteriores do Visual FoxPro,
FoxPro para Windows e FoxPro para MS-DOS. Para utilizar CREATE FROM com uma tabela
criada por COPY STRUCTURE EXTENDED no Visual FoxPro 4.0, deve-se alterar a largura do
campo FIELD_NAME para 10 caracteres.


COPY STRUCTURE EXTENDED, exemplo do comando

O exemplo a seguir exibe a estrutura da tabela orders, copia a estrutura estendida para uma tabela
temp, pesquisa temp, cria uma tabela backup a partir de temp e exibe a estrutura de backup.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE orders && Abre a tabela Orders
CLEAR
DISPLAY STRUCTURE

WAIT WINDOW 'Estrutura da tabela orders' NOWAIT
COPY STRUCTURE EXTENDED TO temp
USE temp
WAIT WINDOW 'A tabela temp - 1 linha por campo em orders' NOWAIT
BROWSE
CREATE backup FROM temp
USE backup
DISPLAY STRUCTURE
WAIT WINDOW 'Backup.dbf possui a mesma estrutura que orders' NOWAIT
USE
DELETE FILE temp.dbf
DELETE FILE backup.dbf

COPY TAG, comando


Cria um arquivo de ndice de entrada nica .IDX a partir de uma marca existente em um arquivo de
ndice composto.

Sintaxe

COPY TAG NomeMarca [OF NomeArquivoCDX]
TO NomeArquivondice



Argumentos

NomeMarca Especifica a marca utilizada para criar o arquivo de ndice de entrada nica .IDX.

OF NomeArquivoCDX Especifica o arquivo de ndice composto que contm a marca. Inclua esta
clusula se houver marcas com nomes iguais nos arquivos de ndice composto abertos. Se OF
NomeArquivoCDX for omitido, o Visual FoxPro ir procurar a marca primeiro no arquivo de
ndice estrutural. Se a marca no for encontrada nesse arquivo, o Visual FoxPro pesquisar todos os
arquivos de ndice composto no-estrutural que estiverem abertos.

TO NomeArquivondice Especifica o nome do arquivo de ndice de entrada nica .IDX a ser
criado.






Comentrios

Utilize COPY TAG para criar um novo arquivo de ndice de entrada nica .IDX a partir de uma
marca em um arquivo de ndice composto .CDX.

O arquivo de ndice composto a partir do qual criado o arquivo de ndice de entrada nica .IDX
deve estar aberto. Os arquivos de ndice composto estrutural so abertos automaticamente quando
voc abre uma tabela. Os ndices compostos no-estruturais devem ser explicitamente abertos com
USE ... INDEX ou SET INDEX. Para obter maiores informaes sobre arquivos de ndice
composto, consulte INDEX.

Utilize COPY INDEX para criar marcas em arquivos de ndice composto a partir de arquivos de
ndice de entrada nica .IDX.

COPY TO ARRAY, comando


Copia dados da tabela selecionada no momento para uma matriz.

Sintaxe

COPY TO ARRAY NomeMatriz
[FIELDS ListaCampos]
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[NOOPTIMIZE]



Argumentos

NomeMatriz Especifica a matriz para a qual os dados da tabela so copiados.

FIELDS ListaCampos Especifica que apenas os campos especificados em ListaCampos sero
copiados para a matriz. Se voc omitir FIELDS ListaCampos, todos os campos sero copiados para
a matriz, caso ela possua o nmero suficiente de colunas.

Escopo Especifica um intervalo de registros a serem copiados para a matriz. Apenas os registros
dentro do intervalo so copiados. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD
nNmeroRegistro e REST.

Para obter maiores informaes sobre clusulas de escopo, consulte o tpico Clusulas de Escopo.

O escopo padro para COPY TO ARRAY ALL (todos os registros).

FOR lExpresso1 Especifica que apenas os registros que satisfazem a condio lgica lExpresso1
sero copiados para a matriz. Ao incluir FOR, voc poder copiar os registros condicionalmente
para a matriz, filtrando os registros indesejveis.

Uma otimizao Rushmore ocorrer em uma consulta COPY TO ARRAY que inclui FOR
lExpresso1 se lExpresso1 for uma expresso otimizvel. Para obter um melhor desempenho,
utilize uma expresso otimizvel na clusula FOR.

Para obter informaes sobre expresses otimizveis Rushmore, consulte SET OPTIMIZE e
Compreendendo a Tecnologia Rushmore no captulo 15, Otimizando Aplicativos, no Guia do
Desenvolvedor.

WHILE lExpresso2 Especifica uma condio pela qual os registros sero copiados para a matriz
desde que a expresso lgica lExpresso2 resulte em verdadeiro (.T.).

NOOPTIMIZE Desativa a otimizao Rushmore de COPY TO ARRAY. Para obter maiores
informaes, consulte SET OPTIMIZE e Compreendendo a Tecnologia Rushmore no captulo
15, Otimizando Aplicativos, no Guia do Desenvolvedor.



Comentrios

COPY TO ARRAY e SCATTER so semelhantes. COPY TO ARRAY copia vrios registros para
uma matriz, enquanto SCATTER copia apenas um registro para uma matriz ou um conjunto de
variveis de memria. COPY TO ARRAY e SCATTER criaro uma nova matriz caso no exista
uma matriz com o nome especificado.

Para copiar um s registro para uma matriz, voc pode especificar uma matriz unidimensional. A
matriz unidimensional especificada deve ter o mesmo nmero de elementos que os campos da
tabela, sem contar os campos Memo. Os campos Memo so ignorados em COPY TO ARRAY.

Se voc especificar uma matriz unidimensional, o primeiro campo do registro ser armazenado no
primeiro elemento da matriz, o segundo campo ser armazenado no segundo elemento da matriz e
assim por diante. Se uma matriz unidimensional possuir mais elementos do que a tabela possui
campos, os elementos restantes permanecero inalterados. Caso o nmero de elementos da matriz
seja menor do que o nmero de campos da tabela, os campos restantes sero ignorados.

Para copiar vrios registros ou uma tabela inteira para uma matriz, especifique uma matriz
bidimensional. O nmero de linhas na matriz corresponde ao nmero de registros que a matriz pode
conter, e o nmero de colunas corresponde ao nmero de campos que ela pode conter.

Cada registro armazenado em uma linha da matriz, e cada campo do registro armazenado em
uma coluna da matriz. Para cada registro, o primeiro campo armazenado na primeira coluna da
matriz, o segundo campo armazenado na segunda coluna e assim por diante. Se o nmero de
colunas da matriz for maior do que o nmero de campos da tabela, as colunas restantes no sero
alteradas. Se o nmero de colunas da matriz for menor do que o nmero de campos da tabela, os
campos restantes no sero armazenados na matriz.

Cada linha sucessiva na matriz preenchida com o contedo do registro seguinte na tabela. Se o
nmero de linhas da matriz for maior do que o nmero de registros da tabela, as linhas restantes no
sero alteradas. Se o nmero de linhas da matriz for menor do que o nmero de registros da tabela,
os registros restantes no sero armazenados na matriz.

Os dados podem ser copiados das matrizes para os novos registros de tabela com APPEND FROM
ARRAY. Eles tambm podem ser copiados de uma matriz ou de um conjunto de variveis de
memria para os registros de uma tabela, atravs de GATHER.

COPY TO ARRAY, exemplo do comando

No exemplo a seguir, a tabela customer aberta. Uma matriz bidimensional ento criada e os trs
primeiros registros de customer so copiados para a matriz. DISPLAY MEMORY mostra os dados
armazenados na matriz.

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

DIMENSION gaTemp(3,10)
COPY NEXT 3 TO ARRAY gaTemp
DISPLAY MEMORY LIKE gaTemp

COPY TO, comando

Cria um novo arquivo a partir dos contedos da tabela selecionada no momento.

Sintaxe

COPY TO NomeArquivo
[DATABASE NomeBancoDeDados [NAME NomeTabelaExtenso]]
[FIELDS ListaCampos
| FIELDS LIKE Estrutura
| FIELDS EXCEPT Estrutura]
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[[WITH] CDX] | [[WITH] PRODUCTION]
[NOOPTIMIZE]
[[TYPE] [FOXPLUS | FOX2X | DIF | MOD
| SDF | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5
| DELIMITED [WITH Delimitador | WITH BLANK | WITH TAB
| WITH CHARACTER Delimitador]]]
[AS nPginaCdigo]



Argumentos

NomeArquivo Especifica o nome do novo arquivo criado por COPY TO. Se voc no incluir uma
extenso com o nome do arquivo, ser atribuda a extenso padro do tipo de arquivo especificado.
Se voc no especificar um tipo de arquivo, COPY TO criar uma nova tabela do Visual FoxPro e
atribuir a extenso padro .DBF ao nome de arquivo da tabela.

DATABASE NomeBancoDeDados Especifica um banco de dados ao qual a nova tabela ser
adicionada.

NAME NomeTabelaExtenso Especifica um nome extenso para a nova tabela. Os nomes extensos
podem conter at 128 caracteres e podem ser utilizados no lugar de nomes de arquivo curtos no
banco de dados.

FIELDS ListaCampos Especifica os campos que sero copiados para o novo arquivo. Se voc
omitir FIELDS ListaCampos, todos os campos sero copiados para o arquivo. Se o arquivo que
voc est criando no for uma tabela, os campos Memo no sero copiados para o novo arquivo,
mesmo que nomes de campos Memo tenham sido includos na lista de campos.

FIELDS LIKE Estrutura Especifica que os campos da tabela original, correspondentes estrutura
do arquivo estrutura, so includos no novo arquivo criado por COPY TO.

FIELDS EXCEPT Estrutura Especifica que todos os campos, exceto os que correspondem ao
estrutura do arquivo Estrutura, so includos no novo arquivo criado por COPY TO.

A estrutura do campo Estrutura suporta caracteres curinga. Por exemplo, para especificar que todos
os campos que comecem pelas letras A e P sejam includos no novo arquivo, Utilize:

COPY TO mytable FIELDS LIKE A*,P*



A clusula LIKE pode ser combinada com a clusula EXCEPT:

COPY TO mytable FIELDS LIKE A*,P* EXCEPT PARTNO*
Escopo Especifica um intervalo de registros a serem copiados para um arquivo. Apenas os
registros dentro do intervalo so copiados. As clusulas de escopo so: ALL, NEXT nRegistros,
RECORD nNmeroRegistro e REST. Para obter maiores informaes sobre clusulas de escopo,
consulte o tpico Clusulas de Escopo.

FOR lExpresso1 Especifica que somente os registros para os quais a condio lgica lExpresso1
resulta em verdadeiro (.T.) so copiados para o arquivo. Inclua FOR lExpresso1 para copiar
registros condicionalmente, filtrando os registros indesejveis.

Uma otimizao Rushmore ocorrer em COPY TO com uma clusula FOR lExpresso1 se
lExpresso1 for uma expresso otimizvel. Para obter um melhor desempenho, utilize uma
expresso otimizvel na clusula FOR lExpresso1.

Para obter informaes sobre expresses otimizveis Rushmore, consulte SET OPTIMIZE
e Compreendendo a Tecnologia Rushmore no captulo 15, Otimizando Aplicativos, no Guia
do Desenvolvedor.

WHILE lExpresso2 Especifica uma condio pela qual os registros sero copiados, desde que a
expresso lgica lExpresso2 resulte em verdadeiro (.T.).

[WITH] CDX | [WITH] PRODUCTION Cria, para a nova tabela, um arquivo de ndice estrutural
idntico ao da tabela existente. As marcas e as expresses de ndice do arquivo de ndice estrutural
original so copiadas para o novo arquivo de ndice estrutural. As clusulas CDX e PRODUCTION
so idnticas.

No inclua CDX ou PRODUCTION, se a cpia estiver sendo feita para um arquivo que no
pertence a uma nova tabela do Visual FoxPro.

NOOPTIMIZE Desativa a otimizao Rushmore de COPY TO.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a Tecnologia
Rushmore no captulo 15, Otimizando Aplicativos, no Guia do Desenvolvedor
.

TYPE Especifica o tipo de arquivo, caso o arquivo criado no seja uma tabela do Visual FoxPro.
Embora voc deva especificar um tipo de arquivo, no necessrio incluir a palavra-chave TYPE.

FOXPLUS Os arquivos do tipo memo do Visual FoxPro possuem uma estrutura diferente daquela
dos arquivos memo do FoxBASE+. Caso a tabela-fonte do Visual FoxPro contenha um campo
Memo, inclua a clusula FOXPLUS para criar uma tabela que possa ser utilizada no FoxBASE+. O
campo Memo do Visual FoxPro no pode conter dados binrios, pois o FoxBASE+ no suporta
dados binrios em campos Memo.

FOX2X Cria uma nova tabela que pode ser aberta em verses anteriores do FoxPro (verses 2.0,
2.5 e 2.6).

Para campos do tipo Numrico, Flutuante, Inteiro, Duplo e Moeda, valores nulos na tabela-fonte
so convertidos para zero na nova tabela. Para outros tipos de campo, valores nulos na tabela-fonte
so deixados em branco na nova tabela. Para obter maiores informaes sobre valores em branco,
consulte ISBLANK( ).

A tabela abaixo lista os tipos de campo do Visual FoxPro que sero convertidos em tipos de campos
diferentes na nova tabela, quando o argumento FOX2X for includo.



Tipo de Campo do Visual FoxPro Tipo de Campo do FoxPro 2.X

Moeda Flutuante
DataHora Data
Duplo Flutuante

Inteiro Numrico
DIF Cria um arquivo DIF (Data Interchange Format) do VisiCalc. Os campos da tabela do
Visual FoxPro tornam-se vetores (colunas) e os registros tornam-se tuplas (linhas). O nome do novo
arquivo receber a extenso .DIF, caso no seja includa uma extenso em NomeArquivo.
MOD Cria um arquivo do Microsoft Multiplan verso 4.01. O nome do novo arquivo do
Microsoft Multiplan receber a extenso .MOD, caso no seja includa uma extenso
SDF Cria um arquivo SDF (System Data Format). Um arquivo SDF um arquivo de texto ASCII
no qual os registros possuem um comprimento fixo e terminam com um retorno de carro e um
comando de alimentao de linha. Os campos no so delimitados. O nome do arquivo SDF
receber a extenso .TXT, caso no seja includa uma extenso.

SYLK Cria um arquivo de intercmbio SYLK (Symbolic Link). Os arquivos SYLK so utilizados
no Microsoft MultiPlan. Cada campo da tabela selecionada no momento torna-se uma coluna da
planilha, e cada registro torna-se uma linha. Os nomes de arquivos SYLK no possuem extenso.
WK1 Cria um arquivo de planilha do Lotus 1-2-3 verso 2.x. Cada campo da tabela
selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A
nova planilha recebe a extenso de nome de arquivo .WK1.

WKS Cria um arquivo de planilha do Lotus 1-2-3 verso 1a. Cada campo da tabela selecionada no
momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A nova planilha
recebe a extenso de nome de arquivo .WKS.
WR1 Cria um arquivo de planilha do Lotus Symphony verso 1.1 ou 1.2. Cada campo da tabela
selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A
nova planilha recebe a extenso de nome de arquivo .WR1.

WRK Cria um arquivo de planilha do Lotus Symphony verso 1.0. Cada campo da tabela
selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A
nova planilha recebe a extenso de nome de arquivo .WR1.
XLS Cria um arquivo de planilha do Microsoft Excel verso 2.0. Cada campo da tabela
selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A
nova planilha receber a extenso .XLS, caso no seja includa uma extenso.

XL5 Cria um arquivo de planilha do Microsoft Excel verso 5.0. Cada campo da tabela
selecionada no momento torna-se uma coluna da planilha, e cada registro torna-se uma linha. A
nova planilha receber a extenso .XLS, caso no seja includa uma extenso.
DELIMITED Cria um arquivo delimitado. Um arquivo delimitado um arquivo de texto ASCII
no qual cada registro termina com um retorno de carro e um comando de alimentao de linha. O
separador de campo padro a vrgula. Como os dados de caractere podem incluir vrgulas, os
campos de caractere tambm podem ser delimitados por aspas.

A menos que voc especifique outra coisa, a extenso .TXT ser atribuda a todos os arquivos do
tipo DELIMITED recm-criados.

DELIMITED WITH Delimitador Cria um arquivo delimitado com campos de caractere
delimitados por um caractere que no seja as aspas. O caractere que delimita campos de caractere
especificado com Delimitador.
DELIMITED WITH BLANK Cria um arquivo delimitado com campos separados por espaos em
vez de vrgulas.
DELIMITED WITH TAB Cria um arquivo delimitado com campos separados por tabulaes em
vez de vrgulas.
DELIMITED WITH CHARACTER Delimitador Cria um arquivo delimitado com todos os
campos delimitados pelo caractere especificado por Delimitador. Se Delimitador for um ponto-e-
vrgula (o caractere utilizado no Visual FoxPro para indicar continuao de linha de comando),
coloque o caractere de ponto-e-vrgula entre aspas. Voc tambm pode especificar as palavras-
chave BLANK e TAB para Delimitador.

Observe que a clusula WITH do Delimitador pode ser combinada com a clusula WITH
CHARACTER. Por exemplo, o comando a seguir cria um arquivo de texto com campos de
caracteres delimitados por caracteres de sublinhado e todos os campos delimitados por ponto-e-
vrgula:

COPY TO mytxt.txt DELIMITED WITH _ WITH CHARACTER ;



AS nPginaCdigo Especifica a pgina de cdigo para a tabela ou arquivo criado por COPY TO.
O Visual FoxPro copia o contedo da tabela selecionada no momento e, ao copiar os dados,
converte-os automaticamente para a pgina de cdigo especificada para a nova tabela ou arquivo.
Se for possvel, o Visual FoxPro marcar a tabela ou arquivo recm-criado com a pgina de cdigo
especificada.

Se voc especificar para nPginaCdigo um valor que no seja suportado, o Visual FoxPro gera
uma mensagem de erro. Voc pode utilizar GETCP( ) em nPginaCdigo a fim de exibir a caixa de
dilogo Pgina de cdigo, onde poder especificar uma pgina de cdigo para a tabela ou o arquivo
criado pelo Visual FoxPro.

Se voc omitir AS nPginaCdigo, a tabela ou o arquivo recm-criados sero convertidos para a
pgina de cdigo atual do Visual FoxPro.

Caso nPginaCdigo seja igual a 0, no ocorrer a converso de pgina de cdigo e a tabela ou
arquivo recm-criados no sero marcados com uma pgina de cdigo.


Comentrios

Caso uma ordem de ndice seja definida, os registros sero copiados na ordem do ndice principal.

COPY TO, exemplo do comando

No exemplo a seguir, a tabela customer aberta e os trs registros seguintes so copiados para um
novo arquivo de dados do tipo DELIMITED, denominado TEMP.TXT.

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

COPY NEXT 3 TO temp TYPE DELIMITED
WAIT WINDOW 'Este o arquivo de texto delimitado' NOWAIT
MODIFY FILE temp.txt
DELETE FILE temp.txt

COS( ), funo


Retorna o co-seno de uma expresso numrica.

Sintaxe

COS(nExpresso)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica uma expresso numrica, cujo co-seno retornado por COS( ). nExpresso
pode ser qualquer valor.



Comentrios

COS( ) retorna o co-seno de nExpresso em radianos. Utilize DTOR( ) para converter um ngulo de
graus em radianos. O nmero de casas decimais que COS( ) retorna pode ser especificado com SET
DECIMALS. O valor retornado por COS( ) varia entre 1 e 1.

COS( ), funo exemplo

CLEAR
? COS(0) && Exibe 1.00
? COS(PI( )) && Exibe -1.00
? COS(DTOR(180)) && Exibe -1.00
STORE PI( ) * 3 TO gnAngle
? COS(gnAngle) && Exibe -1.00

COUNT, comando


Conta os registros de uma tabela.

Sintaxe

COUNT
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[TO NomeVarMem]
[NOOPTIMIZE]



Argumentos

Escopo Especifica um intervalo de registros a serem includos na contagem. As clusulas de
escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Os comandos que
incluem Escopo operam somente na tabela da rea de trabalho ativa.

O escopo padro para COUNT ALL, ou seja, todos os registros.

FOR lExpresso1 Especifica que apenas os registros que satisfaam a condio lgica lExpresso1
sero contados.Ao incluir FOR, voc poder contar os registros condicionalmente, filtrando os
registros indesejveis.

Rushmore ir otimizar uma consulta COUNT FOR se lExpresso1 for uma expresso otimizvel.
Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes sobre expresses otimizveis, consulte SET OPTIMIZE, e
Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do
Desenvolvedor.

WHILE lExpresso2 Especifica uma condio pela qual os registros sero contados, quando a
expresso lgica lExpresso2 resulta em verdadeiro (.T.).

TO NomeVarMem Especifica a matriz ou varivel de memria na qual a contagem de registros
ser armazenada.Se a varivel de memria especificada no existir, o Visual FoxPro criar uma.

NOOPTIMIZE Desativa a otimizao Rushmore de COUNT. Para obter maiores informaes,
consulte SET OPTIMIZE, e Compreendendo a tecnologia Rushmore na Ajuda ou o captulo 17,
Otimizando aplicativos, no Guia do Desenvolvedor.

Comentrios

COUNT conta os registros dentro de um escopo de registros para os quais a condio FOR ou
WHILE seja verdadeira. Se SET TALK estiver ativo (ON), a contagem de registros exibida.

Os registros marcados para excluso sero includos na contagem caso SET DELETE esteja
desativado (OFF).

COUNT, exemplo do comando

O exemplo a seguir conta e exibe o nmero de clientes em Paris.

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

CLEAR
COUNT FOR UPPER(city) = 'PARIS'
DISPLAY FIELDS company, contact FOR UPPER(city) = 'PARIS'


CREATE COLOR SET, comando


Cria um conjunto de cores a partir das definies de cores atuais.

Sintaxe

CREATE COLOR SET NomeConjuntoCores



Argumentos

NomeConjuntoCores Especifica o nome do conjunto de cores a ser criado.



Comentrios

Os conjuntos de cores no so aceitos no FoxPro para Macintosh; CREATE COLOR SET ser
ignorado.

Cada par de cores em cada esquema de cores salvo no conjunto de cores que voc criou. O nome
de um conjunto de cores pode ter at 24 caracteres no Visual FoxPro (10 caracteres em verses
anteriores do FoxPro) e pode conter nmeros e caracteres de sublinhado, mas no pode comear
com um nmero.

Uma vez criado um conjunto de cores, voc poder carreg-lo com SET COLOR SET.

Os conjuntos de cores so salvos no arquivo de recurso do Visual FoxPro. Se j existir um conjunto
de cores com o nome especificado, ele ser sobrescrito.

Para obter maiores informaes sobre esquemas de cores e pares de cores, consulte Viso Geral de
Cores.

CREATE DATABASE, comando


Cria e abre um banco de dados.

Sintaxe

CREATE DATABASE [NomeBancoDados | ?]



Argumentos

NomeBancoDados Especifica o nome do banco de dados a ser criado.

Caso SAFETY esteja ativado (ON) e o nome do banco de dados especificado tenha o mesmo
caminho e o mesmo nome de um banco de dados existente, o Visual FoxPro exibir uma caixa de
dilogo de aviso, solicitando a especificao de um novo caminho ou nome para o banco de dados.

? Exibe a caixa de dilogo Criar na qual voc pode especificar o nome do banco de dados a ser
criado.



Comentrios

Um arquivo de banco de dados tem uma extenso .DBC. Os arquivos de memo do banco de dados
associado tm uma extenso .DCT e os arquivos de ndice associados tm uma extenso .DCX.

O banco de dados aberto em modo exclusivo, independente da definio de SET EXCLUSIVE.
Como CREATE DATABASE abre o banco de dados aps a sua criao, no necessrio emitir um
comando OPEN DATABASE subseqente.

Caso CREATE DATABASE seja emitido sem nenhum de seus argumentos opcionais, a caixa de
dilogo Criar ser exibida, permitindo que voc especifique um nome para o banco de dados.

CREATE DATABASE, exemplo do comando

Este exemplo cria um banco de dados chamado people. Uma tabela denominada friends criada e
automaticamente adicionada ao banco de dados. DISPLAY TABLES utilizado para exibir as
tabelas no banco de dados e DISPLAY DATABASES utilizado para exibir informaes sobre as
tabelas no banco de dados.

CREATE DATABASE people
CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES && Exibe as tabelas do banco de dados
DISPLAY DATABASES && Exibe informaes sobre as tabelas

CREATE FROM, comando


Cria uma tabela a partir de um arquivo construdo com COPY STRUCTURE EXTENDED.

Sintaxe

CREATE
[NomeArquivo1 [DATABASE NomeBancoDados [NAME NomeLongoTabela]]]
FROM [NomeArquivo2]



Argumentos

NomeArquivo1 Especifica o nome da nova tabela a ser criada.

DATABASE NomeBancoDados Especifica um banco de dados em que a nova tabela ser
adicionada.

NAME NomeLongoTabela Especifica um nome longo para a nova tabela. Os nomes longos
podem conter at 128 caracteres e podem ser utilizados em substituio aos nomes de arquivos
reduzidos no banco de dados.

NomeArquivo2 Especifica a tabela (criada com COPY STRUCTURE EXTENDED ou
manualmente) a partir da qual a nova tabela ser criada.

Comentrios

Esta variao de CREATE pressupe que a tabela especificada em NomeArquivo2 tenha sido
criada com COPY STRUCTURE EXTENDED ou manualmente. Uma nova tabela,
NomeArquivo1, criada com a estrutura descrita em NomeArquivo2. A tabela recm-criada torna-
se a tabela ativa.

Se voc no incluir NomeArquivo1 ou NomeArquivo2 ou ambos, ser exibida uma caixa de
dilogo, na qual voc poder especificar o arquivo a ser criado, o arquivo FROM ou ambos.

Observe que todos os registros em NomeArquivo2, incluindo aqueles que esto marcados para
excluso, so utilizados para criar NomeArquivo1.

CREATE FROM, exemplo do comando

O exemplo a seguir exibe a estrutura da tabela orders, copia a estrutura estendida para a tabela
temp, pesquisa temp, cria uma tabela denominada backup a partir de temp e exibe a estrutura de
backup.

CLOSE DATABASES
CLEAR
SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dados
USE orders
DISPLAY STRUCTURE
WAIT WINDOW 'Estrutur da tabela orders' NOWAIT
COPY STRUCTURE EXTENDED TO temp
USE temp
WAIT WINDOW 'A tabela temporria contm 1 linha por campo em ORDERS' NOWAIT
BROWSE
CREATE backup FROM temp
USE backup
DISPLAY STRUCTURE
WAIT WINDOW 'Backup.dbf tem a mesma estrutura que ORDERS' NOWAIT
USE
DELETE FILE temp.dbf

DELETE FILE backup.dbf

CREATE MENU, comando


Abre o Criador de menus no Visual FoxPro.

Sintaxe

CREATE MENU [NomeArquivo | ?]
[NOWAIT] [SAVE]
[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]



Argumentos

NomeArquivo Especifica o nome de arquivo para a tabela de menu. Caso no seja especificada
uma extenso para o nome de arquivo, o Visual FoxPro atribuir automaticamente a extenso
.MNX.

? Exibe a caixa de dilogo Criar, solicitando que voc digite um nome para o menu que est sendo
criado.

NOWAIT Continua a execuo do programa depois que o Criador de menus aberto. Oprograma
no espera que o Criador de menus seja fechado, mas continua a execuona linha de programa
imediatamente aps a linha que contm CREATE MENU NOWAIT.Caso voc omita NOWAIT
quando CREATE MENU for emitido em um programa, oCriador de menus ser aberto e a execuo
do programa interrompida at que oCriador de menus seja fechado.

Se voc emitir CREATE MENU na janela Comando e incluir NOWAIT, no ser exibida a caixa
de dilogo Novo menu. Esta caixa de dilogo permite que voc especifique o tipo de menu criado
(padro ou de atalho).

SAVE Faz com que o Criador de menus permanea aberto depois que outra janela ativada. Se
voc omitir SAVE, o Criador de menus ser fechado quando outra janela forativada. A incluso de
SAVE no tem efeito quando o comando emitido na janelaComando.

WINDOW NomeJanela1 Especifica uma janela cujas caractersticas so adotadas peloCriador de
menus. Por exemplo, se a janela for criada com a opo FLOAT de DEFINEWINDOW, o Criador
de menus poder ser movido. No necessrio que a janela estejaativa ou visvel, mas ela deve
estar definida.

O Criador de menus possui um tamanho padro que pode ser maior que a janela
cujascaractersticas ele assume. Nesse caso, o Criador de menus ainda adquire ascaractersticas da
janela na qual posicionado. O canto superior esquerdo do Criador demenus posicionado nas
mesmas coordenadas do canto superior esquerdo da janela ese estende alm das bordas da janela.

IN [WINDOW] NomeJanela2 Especifica uma janela pai onde o Criador de menus aberto. O
Criador de menus no adquire as caractersticas da janela pai e no pode sermovido para fora dela.
Caso a janela pai seja movida, o Criador de menus tambm sermovido.

A janela pai deve ser definida primeiramente com DEFINE WINDOW, e deve estar visvelpara
que se possa acessar o Criador de menus.

IN SCREEN Especifica que o Criador de menus seja explicitamente aberto na janelaprincipal do
Visual FoxPro, depois de ter sido posicionado em uma janela pai. O Criadorde menus posicionado
em uma janela pai com a incluso da clusula IN WINDOW.



Comentrios

A emisso de CREATE MENU sem argumentos adicionais abre o Criador de menus, noqual voc
pode definir um sistema de menu. O nome MENU1 atribudo temporariamente tabela de
definio de menu. Ao sair do Criador de menus, voc pode salvar a definio demenu com um
nome diferente.

Para obter maiores informaes sobre como criar menus, consulte Criando um sistema de menus
e o captulo 11, Criando menus e barras de ferramentas, no Guia do Desenvolvedor.

CREATE REPORT - Relatrio Rpido, comando


Cria um relatrio utilizando a linguagem de programao.

Sintaxe

CREATE REPORT NomeArquivo1 | ? FROM NomeArquivo2
[FORM | COLUMN] [FIELDS ListaCampos] [ALIAS]
[NOOVERWRITE] [WIDTH nColunas]



Argumentos

NomeArquivo1 Especifica o nome de arquivo do relatrio. Caso no seja especificada uma
extenso para o nome de arquivo, o Visual FoxPro atribuir automaticamente a extenso .FRX.

? Exibe a caixa de dilogo Criar, que solicita um nome para o relatrio que est sendo criado.

FROM NomeArquivo2 Especifica o nome da tabela a partir da qual o relatrio ser criado. A
tabela no precisa estar aberta.

FORM Especifica que o relatrio criado com os campos e seus nomes organizados de cima para
baixo na faixa Detalhes.

COLUMN Especifica que o relatrio seja criado com os campos organizados da esquerda para a
direita da pgina na faixa Detalhes. Os nomes dos campos so localizados na faixa Cabealho de
pgina. Caso voc omita FORM e COLUMN, o relatrio assume os padres para o formato de
COLUMN.

FIELDS ListaCampos Especifica os campos da tabela que aparecero no relatrio. Separa os
campos em ListaCampos por vrgulas.

ALIAS Especifica que o alias da tabela adicionado aos nomes dos campos no relatrio.

NOOVERWRITE Especifica que um relatrio existente no sobrescrito. Caso j exista um
relatrio com o nome especificado com NomeArquivo1, o relatrio no ser criado.

WIDTH nColunas Especifica a largura da pgina do relatrio, em colunas.

Comentrios

Este formato de CREATE REPORT cria um relatrio rpido sem abrir o Criador de relatrios. O
relatrio ser criado como se voc selecionar Relatrio rpido no menuRelatrio.

Outra forma de CREATE REPORT, discutida no tpico anterior, abre o Criador de relatrios e
permite criar um relatrio de forma interativa.

Para obter outras informaes sobre relatrios e etiquetas, consulte Criando relatrios e etiquetas
na seo Utilizando o Visual FoxPro e o captulo 7, Criando relatrios e etiquetas, no Guia do
Usurio.

CREATE TRIGGER, comando


Cria um disparador de Excluso, Insero ou Atualizao para uma tabela.

Sintaxe

CREATE TRIGGER ON NomeTabela
FOR DELETE | INSERT | UPDATE AS lExpresso



Argumentos

NomeTabela Especifica a tabela do banco de dados atual para a qual criado um disparador.

FOR DELETE | INSERT | UPDATE Especifica o tipo de disparador criado pelo Visual FoxPro.

Caso j exista um disparador do tipo especificado e SET SAFETY esteja ativado (ON), o Visual
FoxPro perguntar se voc gostaria de sobrescrever o disparador existente. Caso SET SAFETY
esteja desativado (OFF), o disparador existente ser automaticamente sobrescrito.

AS lExpresso Especifica a expresso lgica avaliada quando o disparador ocorre. lExpresso pode
ser uma funo definida pelo usurio ou um procedimento armazenado que retorna um valor lgico.
Procedimentos armazenados so criados para uma tabela com MODIFY PROCEDURE.

Uma funo definida pelo usurio ou um procedimento armazenado pode utilizar AERROR( ) para
determinar o nome da tabela para a qual o disparador ocorreu e o tipo de disparador.

Caso lExpresso resulte em verdadeiro (.T.), o comando ou evento que provocou a ocorrncia do
disparador ser executado.

Caso lExpresso resulte em falso (.F.), o comando ou evento, que provocou a ocorrncia do
disparador, no ser executado. Caso haja um procedimento ON ERROR em vigor, o procedimento
ON ERROR ser executado em vez do comando ou evento. Caso no haja um procedimento ON
ERROR em vigor, o comando ou evento no ser executado e o Visual FoxPro ir gerar uma
mensagem de erro.



Comentrios

Utilize CREATE TRIGGER para interceptar eventos que fazem com que os registros de uma tabela
sejam excludos, adicionados ou alterados. Os disparadores de Excluso, Insero ou Atualizao
podem ser criados somente para uma tabela que tenha sido adicionada a um banco de dados. Utilize
CREATE DATABASE para criar um banco de dados e ADD TABLE para adicionar uma tabela a
um banco de dados.

As listas abaixo descrevem os eventos que provocam a ocorrncia de um disparador de Excluso,
Insero ou Atualizao.

Disparador de excluso

DELETE emitido.
Um registro marcado para excluso a partir do menu Tabela em uma janela Pesquisar ou
em uma janela Editar.
Disparador de insero

APPEND FROM emitido.
APPEND FROM ARRAY emitido.
APPEND BLANK emitido.
Um registro includo a partir do menu Tabela em uma janela Pesquisar ou Editar.
IMPORT emitido.
INSERT - SQL emitido.
RECALL emitido.
Um registro reintegrado a partir do menu Tabela em uma janela Pesquisar ou Editar.



Disparador de atualizao

GATHER emitido.
REPLACE emitido.
REPLACE FROM ARRAY emitido.
UPDATE SQL emitido.
outro evento que provoque uma modificao em um registro, como acontece a um
Formulrio alterar o contedo de um campo.



As regras a seguir aplicam-se a disparadores criados com CREATE TRIGGER:

INSERT no pode ser emitido para uma tabela com um disparador. No entanto, INSERT -
SQL pode ser utilizado.
A emisso de PACK no provoca a ocorrncia de nenhum disparador.
A emisso de ZAP no provoca a ocorrncia de um disparador de Excluso.
No ocorrer nenhum disparador se voc atualizar um registro marcado para excluso.
Um disparador poder no ocorrer imediatamente, dependendo do modo de utilizao do
buffer atual:


CREATE TRIGGER, exemplo de comando

O exemplo a seguir cria um disparador de Atualizao que impede que valores acima de 50 sejam
digitados no campo maxordamt da tabela customer. Uma mensagem de erro gerada quando o
primeiro comando REPLACE executado, pois o valor do campo maxordamt
maior que 50. O segundo comando REPLACE no gera erro porque o valor do campo
maxordamt menor ou igual a 50.

CLOSE DATABASES

OPEN DATABASE SYS(2004)+"samples\data\testdata"
USE customer && Abre a tabela customer

* Define o disparador no campo maxordamt para falhar com valores <= 50
CREATE TRIGGER ON customer FOR UPDATE AS maxordamt <= 50

ON ERROR && Restaura o gerenciador de erro do sistema

WAIT WINDOW "Pressione uma tecla para testar o disparador com valor 60"+CHR(13);
+"Quando voc receber a mensagem de erro, pressione Ignorar".
REPLACE maxordamt WITH 60 && Exibe uma mensagem de erro

? maxordamt

WAIT WINDOW "Pressione uma tecla para testar com valor 50".
REPLACE maxordamt WITH 50 && O valor aceito
? maxordamt
DELETE TRIGGER ON customer FOR UPDATE && Remove o disparador


CREATE, comando


Cria uma nova tabela do Visual FoxPro.

Sintaxe

CREATE [NomeArquivo | ?]



Argumentos

NomeArquivo Especifica o nome da tabela a ser criada.

? Exibe a caixa de dilogo Criar, solicitando que voc digite um nome para a tabela que est sendo
criada.



Comentrios

No Visual FoxPro, se houver um banco de dados aberto, quando uma tabela for criada, a tabela ser
automaticamente adicionada ao banco de dados.

No Visual FoxPro, FoxPro para Windows e FoxPro para MS-DOS, no possvel criar uma tabela
com o nome de um dispositivo do MS-DOS, como CON, NUL, PRN e COM1. Voc deve evitar
utilizar hfens em um nome de tabela, pois os nomes de tabela hifenizados no aparecem na janela
Visualizar e podem ser confundidos com o indicador de alias (->).

Uma tabela criada definindo-se o nome, o tipo e o tamanho de cada campo. Depois que a estrutura
da tabela estiver criada, voc poder adicionar os registros. Para obter maiores informaes sobre
tabelas, consulte o captulo 2, Criando tabelas e ndices, no Guia do Usurio.

CTOBIN( ), funo


Converte uma representao de caractere binrio para um valor inteiro.

Sintaxe

CTOBIN(cExpresso)



Tipos de retorno

Numrico

Argumentos

cExpresso Especifica a representao de caractere binrio a ser convertida.



Comentrios

Utilize CTOBIN( ) para converter uma representao de caractere binrio criada com BINTOC( )
de volta ao seu valor inteiro.

CTOD( ), funo


Converte uma expresso de caracteres em uma expresso de data.

Sintaxe

CTOD(cExpresso)



Tipos de retorno

Data

Argumentos

cExpresso Especifica uma expresso de caracteres para a qual CTOD( ) retorna um valor do tipo
Data. cExpresso deve resultar em uma data vlida de 1/1/100 a 12/31/9999.

O formato padro para cExpresso mm/dd/aa. possvel utilizar SET DATE e SET CENTURY
para alterar o formato padro. Se o sculo no for especificado quando uma data for digitada (como
na expresso de caracteres 1/1/95), ser adotado o sculo XX.



Comentrios

CTOD( ), a funo de converso de caractere para data, retorna um valor do tipo Data a partir de
uma expresso de caracteres.

CTOD( ), exemplo da funo

STORE '7/4/1776' TO gcthe_4th

CLEAR
? CTOD(gcthe_4th)
STORE DATE( ) TO gdtoday
STORE CTOD('12/25/95') TO gdchristmas
STORE STR(gdchristmas - gdtoday, 4) TO gddays_left
? 'Faltam', gddays_left, 'dias para o Natal'

CTOT( ), funo


Retorna um valor de DataHora a partir de uma expresso de caracteres.

Sintaxe

CTOT(cExpressoCaracteres)



Tipos de retorno

DataHora

Argumentos

cExpressoCaracteres Especifica uma expresso de caracteres a partir da qual um valor de
DataHora retornado. O formato adequado para cExpressoCaracteres determinado pelas
definies atuais de SET DATE, SET HOURS e SET MARK. cExpressoCaracteres tem que
retornar um valor de DataHora reconhecvel, caso contrrio o Visual FoxPro ir gerar um erro.

A seguir so apresentados exemplos de expresses de caracteres vlidas:

02/16/95 2:00:00pm
02/16/95 2:00pm
02/16/95 14:00
02/16/95
14:00



Caso apenas uma parte relativa data ou hora seja especificada em cExpressoCaracteres, o
Visual FoxPro adicionar automaticamente a hora padro de meia-noite (12:00:00 A.M.) ou a data
padro de 12/30/1899 cExpressoCaracteres.

possvel incluir o sculo em cExpressoCaracteres, mas ele somente ser retornado se SET
CENTURY estiver ativado (ON). Caso no seja includo um sculo, ser adotado o sculo XX.



CTOT( ), exemplo da funo

O exemplo a seguir utiliza CTOT( ) para converter uma seqncia de caracteres para um valor de
DataHora. Observe que CTOT( ) acrescenta automaticamente a hora de meia-noite (12:00:00 A.M.)
seqncia de caracteres.

? BETWEEN(CTOT('02/16/95'), {02/15/95 11:00pm}, {02/16/95 1:00am})
? CTOT('02/16/95')

CURDIR( ), Funo


Retorna o diretrio atual.

Sintaxe

CURDIR([cExpresso])



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a unidade de disco ou o volume para o qual CURDIR( ) retorna o diretrio
ou pasta atual. Caso voc omita cExpresso, ser adotado o volume ou a unidade de disco padro
atual. A seqncia vazia ser retornada se a unidade ou volume especificado em cExpresso no
existir.



Comentrios

CURDIR( ) retorna, como seqncia de caracteres, o diretrio atual do MS-DOS em uma unidade
especificada.

CURDIR( ), exemplo de Funo



O exemplo a seguir armazena o diretrio atual em uma varivel, define a padro para o diretrio no
qual o Visual FoxPro foi criado, exibe o novo diretrio, retorna o padro para o diretrio original e
exibe o diretrio original.

CLEAR
? 'Diretrio atual: ', CURDIR( )
gcOldDir = SET('DEFAULT') + SYS(2003)
SET DEFAULT TO (HOME( ))
? 'Diretrio do Visual FoxPro: ', CURDIR( )
SET DEFAULT TO (gcOldDir)
? 'Diretrio atual: ', CURDIR( )

DATE( ), funo


Retorna a data do sistema atual, que controlada pelo sistema operacional.

Sintaxe

DATE( )



Tipos de Retorno

Data

Comentrios

Nenhum comando ou funo do Visual FoxPro pode alterar diretamente a data do sistema.

O formato da seqncia de caracteres retornado por DATE( ) pode ser alterado com SET
CENTURY, SET DATE e SET MARK TO.

DATE( ),exemplo da funo

O exemplo a seguir exibe a data do sistema atual com e sem o sculo.

CLEAR
SET CENTURY OFF
? DATE( ) && Exibe a data de hoje sem o sculo
SET CENTURY ON
? DATE( ) && Exibe a data de hoje com o sculo
DATETIME( ), funo


Retorna a data e a hora atuais como um valor de DataHora.

Sintaxe

DATETIME( )



Tipos de Retorno

DataHora

Comentrios

O formato do valor de DataHora retornado por DATETIME( ) depende das definies atuais de
SET DATE, SET MARK, SET CENTURY, SET HOURS e SET SECONDS. Depende tambm das
definies selecionadas no Painel de controle do sistema operacional.

DATETIME( ), exemplo da funo

Este exemplo armazena a data e hora para Ano Novo em uma varivel denominada tNewyear, e
armazena a data e hora atual em uma varivel denominada tToday. O nmero de segundos entre a
data e hora atual e Ano Novo ser ento exibido.

tNewyear = {01/01/96 12:00am} && Ano Novo 1996
tToday = DATETIME( )
nSecondstonewyear = tNewyear - tToday
CLEAR
? "There are " + ALLTRIM (STR(nSecondstonewyear)) ;
+ " seconds to the New Year."

DAY( ), funo


Retorna o nmero do dia do ms para uma dada expresso de data ou de data e hora.

Sintaxe

DAY(dExpresso | tExpresso)



Tipos de Retorno

Numrico

Argumentos

dExpresso Especifica a data da qual DAY( ) retorna um dia do ms. dExpresso pode ser um
literal de data, uma varivel de memria do tipo Data, um elemento de matriz ou um campo de data.

tExpresso Especifica uma data ou hora da qual DAY( ) retorna um dia do ms. dExpresso pode
ser um literal de data e hora, uma varivel de memria do tipo DataHora, um elemento de matriz ou
um campo de data e hora.



Comentrios

DAY( ) retorna um nmero de 1 a 31.

DAY( ), exemplo da funo

STORE {03/05/95} TO gdBDate

CLEAR
? CDOW(gdBDate) && Exibe Domingo
? DAY(gdBDate) && Exibe 5
? 'That date is ', CMONTH(gdBDate),STR(DAY(gdBDate),2)

DBC( ), funo


Retorna o nome e o caminho do banco de dados atual.

Sintaxe

DBC( )



Tipos de Retorno

Caractere

Comentrios

DBC( ) retornar a seqncia vazia caso no haja nenhum banco de dados atual.

Utilize SET DATABASE para especificar o banco de dados atual.

DBC( ), exemplo da funo

O exemplo a seguir abre o banco de dados testdata e utiliza DBC( ) para exibir informaes sobre o
banco de dados.

CLOSE DATABASES
OPEN DATABASE (SYS(2004) + "samples\data\testdata") && Abre o DBC.

CLEAR
? DBC( ) && Exibe o caminho e o nome do banco de dados

DBF( ), funo


Retorna o nome de uma tabela aberta em uma rea de trabalho especificada ou um nome de tabela
de um alias de tabela.

Sintaxe

DBF([cAliasTabela | nreaTrabalho])



Tipos de Retorno

Caractere

Argumentos

cAliasTabela Especifica o alias de tabela.

nreaTrabalho Especifica o nmero da rea de trabalho.

Se voc omitir cAliasTabela e nreaTrabalho, DBF( ) retornar o nome da tabela aberta na rea de
trabalho atual. DBF( ) retornar uma seqncia vazia caso no esteja aberta uma tabela na rea de
trabalho especificada. Caso uma tabela no tenha o alias especificado com cAliasTabela, o Visual
FoxPro ir gerar uma mensagem de erro.

Para obter informaes sobre como criar um alias para uma tabela, consulte USE.



Comentrios

Quando SET FULLPATH est ativado (ON), DBF( ) retorna o caminho da tabela com o nome da
tabela. Quando SET FULLPATH est desativado (OFF), DBF( ) retorna a unidade de disco em que
a tabela est residente com o nome da tabela.

DBF( ), exemplo da funo

O exemplo abaixo retorna o nome de uma tabela de sua rea de trabalho e seu alias e retorna a
seqncia vazia aps o fechamento de todas as tabelas.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer IN 2 ALIAS mycust
CLEAR
? DBF(2) && Exibe customer.dbf com seu caminho
? DBF('mycust') && Exibe customer.dbf com seu caminho
CLOSE DATABASES
? DBF( ) && Exibe a seqncia vazia

DBUSED( ), funo


Retorna verdadeiro (.T.) se o banco de dados especificado estiver aberto.

Sintaxe

DBUSED(cNomeBancoDados)



Tipos de retorno

Lgico

Argumentos

cNomeBancoDados Especifica o nome do banco de dados para o qual DBUSED( ) retorna um
valor lgico que indica se o banco de dados est ou no aberto.

Comentrios

A funo DBUSED( ) retornar verdadeiro (.T.) se o banco de dados especificado estiver aberto;
caso contrrio, retornar falso (.F.).

DBUSED( ), exemplo da funo

O exemplo a seguir abre o banco de dados TESTDATA e, em seguida, utiliza DBUSED( ) para
determinar se o banco de dados TESTDATA e um banco de dados definido TEST esto abertos.

CLOSE DATABASES
OPEN DATABASE (SYS(2004) + "samples\data\testdata")

CLEAR
? 'Banco de dados Testdata est aberto? '
?? DBUSED('testdata') && Exibe .T.
? 'Banco de dados Test est aberto? '
?? DBUSED('test') && Exibe .F.
DEACTIVATE MENU, comando


Desativa uma barra de menu definida pelo usurio e remove-a da tela, mas no remove da memria
a definio da barra de menus.

Sintaxe

DEACTIVATE MENU NomeMenu1 [, NomeMenu2 ...] | ALL



Argumentos

NomeMenu1 [, NomeMenu2 ...] Especifica os nomes das barras de menus a serem desativadas.
possvel desativar um conjunto de barras de menus incluindo uma lista de nomes de barras de
menus separados por vrgulas.

ALL Desativa todos os menus ativos.



Comentrios

DEACTIVATE MENU remove uma barra de menus ativa ou um conjunto de barras de menus da
janela principal do Visual FoxPro ou de uma janela definida pelo usurio sem remover a definio
da barra de menus da memria. possvel ativar novamente uma barra de menus utilizando
ACTIVATE MENU e o nome da barra de menus.

Dica Ao incluir a barra de menus do sistema (_MSYSMENU) em um aplicativo, no necessrio
defini-la, ativ-la ou desativ-la. Em vez disso, emita SET SYSMENU AUTOMATIC.



Para liberar uma barra de menus especfica ou um conjunto de barras de menus da memria, utilize
RELEASE MENUS. Voc pode liberar todas as barras de menus da memria com CLEAR
MENUS ou CLEAR ALL.

O controle do programa ser retornado linha do programa imediatamente aps linha que ativou a
barra de menus, a menos que DEFINE MENU BAR seja utilizado para criar a barra de menus ou
que ACTIVATE MENU NOWAIT seja utilizado para ativ-la.

DEACTIVATE MENU, exemplo do comando

O exemplo a seguir utiliza DEACTIVATE MENU para desativar um menu e remov-lo da tela. A
barra de menus do sistema atual salva na memria com SET SYSMENU SAVE e todos os ttulos
de menu do sistema so removidos com SET SYSMENU TO.
Dois ttulos de menu so criados com DEFINE PAD, e DEFINE POPUP cria um menu para cada
ttulo de menu. DEFINE BAR cria itens de menu em cada um dos menus. Quando um ttulo de
menu selecionado, ON PAD utiliza ACTIVATE POPUP para ativar o menu correspondente.
ACTIVATE MENU exibe e ativa a barra de menus.

Quando um item de um menu selecionado, executado o procedimento CHOICE. CHOICE exibe
o nome do item selecionado e o nome do menu que contm o item. O controle do programa
continua na linha aps ACTIVATE MENU.
Finalmente, o menu desativado e removido da tela e, em seguida, liberado da memria com
RELEASE MENUS EXTENDED.

*** Nomeia este programa como DEACMENU.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
ON KEY LABEL ESC KEYBOARD CHR(13)
DEFINE MENU example BAR AT LINE 1
DEFINE PAD convpad OF example PROMPT '\<Converses' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF example PROMPT 'Informaes \<do carto' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD convpad OF example ACTIVATE POPUP conversion
ON PAD cardpad OF example ACTIVATE POPUP cardinfo
DEFINE POPUP conversion MARGIN RELATIVE SHADOW COLOR SCHEME 4

DEFINE BAR 1 OF conversion PROMPT 'r\<ea' ;
KEY CTRL+E, '^E'
DEFINE BAR 2 OF conversion PROMPT '\<Comprimento' ;
KEY CTRL+O, '^O'
DEFINE BAR 3 OF conversion PROMPT 'Ma\<ssa' ;
KEY CTRL+S, '^S'
DEFINE BAR 4 OF conversion PROMPT 'Velo\<cidade' ;
KEY CTRL+V, '^V'
DEFINE BAR 5 OF conversion PROMPT '\<Temperatura' ;
KEY CTRL+T, '^T'
DEFINE BAR 6 OF conversion PROMPT 'Te\<mpo' ;
KEY CTRL+M, '^M'
DEFINE BAR 7 OF conversion PROMPT 'Volu\<me' ;
KEY CTRL+L, '^L'

ON SELECTION POPUP conversion DO choice IN deacmenu WITH PROMPT( ), POPUP( )
DEFINE POPUP cardinfo MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF cardinfo PROMPT '\<Visualizar cobranas' ;
KEY ALT+B, ''
DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<pagamentos' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar\<w usurios' ;
KEY ALT+U, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranas'
ON SELECTION POPUP cardinfo;

DO choice IN deacmenu WITH PROMPT( ), POPUP( )

ACTIVATE MENU example
DEACTIVATE MENU example
RELEASE MENU example EXTENDED
SET SYSMENU NOSAVE
SET SYSMENU TO DEFAULT
ON KEY LABEL ESC

PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'Voc escolheu ' + mprompt + ;
' do popup ' + mpopup NOWAIT

DEACTIVATE WINDOW, comando


Desativa as janelas definidas pelo usurio ou as janelas do sistema do
Visual FoxPro e as remove da tela, mas no da memria.

Sintaxe

DEACTIVATE WINDOW NomeJanela1 [, NomeJanela2 ...] | ALL




Argumentos

NomeJanela1 [, NomeJanela2 ...] Especifica uma ou mais janelas a serem desativadas. possvel
especificar janelas do sistema do Visual FoxPro como a janela Comando ou a janela de pesquisa.

ALL Desativa todas as janelas ativas.



Comentrios

Mais de uma janela definida pelo usurio pode ser colocada na janela principal do Visual FoxPro ao
mesmo tempo, mas a sada direcionada apenas janela definida pelo usurio mais recentemente
ativada. Quando mais de uma janela definida pelo usurio for exibida, desativar a janela de sada
atual definida pelo usurio limpar o contedo da janela, remover a janela da tela e envia a sada
subseqente janela definida pelo usurio anteriormente ativada. Se no houver janela de sada, a
sada ser direcionada para a janela principal do Visual FoxPro.

Utilize CLEAR WINDOWS ou RELEASE WINDOWS para remover janelas tanto da tela quanto
da memria.

Para desativar uma janela do sistema e/ou uma barra de ferramentas (no Visual FoxPro), inclua o
nome completo da janela ou barra de ferramentas do sistema entre aspas. Por exemplo, para
desativar a Barra de ferramentas controles de relatrio no Visual FoxPro, emita o comando a seguir:

DEACTIVATE WINDOW "Controles de relatrio"



DEACTIVATE WINDOW, exemplo do comando

No exemplo a seguir, uma janela denominada wOutput1 definida e ativada. Depois que um
registro da tabela customer exibido, o programa espera que o usurio pressione uma tecla e, em
seguida, desativa a janela.

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

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Sada' ;
CLOSE FLOAT GROW SHADOW ZOOM
ACTIVATE WINDOW wOutput1

DISPLAY
WAIT WINDOW 'Pressione uma tecla para desativar a janela'
DEACTIVATE WINDOW wOutput1
RELEASE WINDOW wOutput1

DECLARE, comando


Cria uma matriz unidimensional ou bidimensional.

Sintaxe

DECLARE NomeMatriz1 (nLinhas1 [, nColunas1])
[, NomeMatriz2 (nLinhas2 [, nColunas2])] ...



Comentrios

DECLARE idntico a DIMENSION em termos de operao e sintaxe. Para obter maiores
informaes, consulte DIMENSION.

DEFINE MENU, comando


Cria uma barra de menus.

Sintaxe

DEFINE MENU NomeBarraMenus
[BAR [AT LINE nLinha]]
[IN [WINDOW] NomeJanela | IN SCREEN]
[FONT cNomeFonte [, nTamanhoFonte]]
[STYLE cEstiloFonte]
[KEY RtuloTecla]
[MARK cCaractereMarca]
[MESSAGE cTextoMensagem]
[NOMARGIN]
[COLOR SCHEME nNmeroEsquema
| COLOR ListaParesCores]



Argumentos

NomeBarraMenus Especifica o nome da barra de menus a ser criada. O nome da barra de menus
permite que voc faa referncia barra de menus em outros comandos e funes.

BAR [AT LINE nLinha] Cria uma barra de menus que age como a barra de menus do sistema do
Visual FoxPro. A barra de menus possui as caractersticas a seguir:

A barra de menus desenhada horizontalmente, com uma linha de altura, de um lado a
outro da janela principal do Visual FoxPro ou da janela definida pelo usurio na qual est localizada
A colocao dos ttulos de menus na barra de menus gerenciada automaticamente.
Se o tamanho ou nmero de ttulos de menus definidos ultrapassar o tamanho da tela ou
janela na qual a barra de menus est localizada, a barra de menus rola.



O nmero da linha especificado com nLinha.

IN [WINDOW] NomeJanela Coloca a barra de menus em uma janela definida pelo usurio.
Especifique o nome da janela na qual voc deseja colocar a barra de menus com NomeJanela. Se
voc omitir IN WINDOW, a barra de menus ser colocada na janela principal do Visual FoxPro
como padro, a menos que haja uma janela ativa definida pelo usurio. Nesse caso, a barra de
menus ser colocada na janela ativa.

IN SCREEN Coloca a barra de menus explicitamente na janela principal do Visual FoxPro.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte padro para todos os ttulos de
menus da barra de menus. Voc pode substituir a fonte padro de um ttulo de menu individual
incluindo a clusula FONT em DEFINE PAD.

cNomeFonte especifica o nome da fonte e cTamanhoFonte o tamanho em pontos. Por exemplo, o
comando a seguir cria uma barra de menus com ttulos de menus na fonte Courier de 12 pontos:

DEFINE MENU mnuExample FONT 'Courier', 12



Se a fonte especificada no estiver disponvel, uma fonte similar com caractersticas de fontes
similares ir substitu-la. Se voc incluir a clusula FONT, mas omitir o tamanho em pontos de
cTamanhoFonte, ser utilizada uma fonte de 10 pontos.

A clusula FONT ser ignorada para ttulos de menus acrescentados ao menu do sistema do Visual
FoxPro _MSYSMENU. Observe que o Criador de menus utiliza o menu do sistema do Visual
FoxPro.

STYLE cEstiloFonte Especifica um estilo de fonte padro para todos os ttulos de menus da barra
de menus. Voc pode substituir o estilo padro de ttulos de menu individuais incluindo a clusula
STYLE em DEFINE PAD.

Se voc omitir a clusula STYLE ou se o estilo de fonte especificado no estiver disponvel, ser
utilizado o estilo de fonte Normal.

Os estilos de fonte que podem ser especificados com cEstiloFonte so os seguintes:

Caractere Estilo de fonte

B Negrito
I Itlico
N Normal
Q Opaco
- Riscado
T Transparente
U Sublinhado
Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. Por
exemplo, o comando a seguir especifica Negrito e Itlico:

DEFINE MENU mnuExample STYLE 'BI'
A clusula STYLE ser ignorada para ttulos de menu adicionados ao menu _MSYSMENU do
sistema do Visual FoxPro. Observe que o Criador de menus utiliza o menu do sistema do Visual
FoxPro.

KEY RtuloTecla Especifica a tecla ou combinao de teclas utilizada para ativar a barra de
menus. Para obter uma lista de teclas e combinaes de teclas disponveis e seus respectivos nomes
de rtulos de tecla, consulte ON KEY LABEL.

Incluir a clusula KEY equivalente a emitir o comando a seguir:

ON KEY LABEL RtuloTecla ACTIVATE MENU NomeMenu



Observao Se uma macro de teclado j estiver definida com o mesmo rtulo de tecla, ela ter
prioridade e a barra de menus no poder ser ativada com a tecla ou combinao de teclas
especificada.

MARK cCaractereMarca Especifica um caractere de marca exibido esquerda dos ttulos de
menus na barra de menus. MARK pode ser includo para alterar o caractere de marca padro por um
caractere especificado com cCaractereMarca. Se cCaractereMarca incluir mais de um caractere,
somente o primeiro caractere ser utilizado como o caractere de marca.

O caractere de marca padro uma verificao. A clusula MARK ignorada e o caractere de
marca padro ser utilizada se a barra de menus for o menu do sistema do Visual FoxPro. Alm
disso, a clusula MARK ser ignorada se FoxFont no for a fonte da janela principal do Visual
FoxPro ou da janela definida pelo usurio na qual est localizada a barra de menus.

Observao A especificao de um caractere de marca no marca os nomes de menus em uma barra
de menus. Utilize SET MARK OF para marcar os ttulos de menus em uma barra de menus com o
caractere especificado.

Os caracteres de marca especificados com DEFINE PAD tm prioridade sobre os caracteres de
marca especificados com a clusula MARK em DEFINE MENU. SET MARK OF utilizado para
ativar ou desativar caracteres de marca, podendo tambm ser utilizado para especificar um caractere
de marca para um item individual ou todos os itens de menu.

MESSAGE cTextoMensagem Exibe uma mensagem quando voc seleciona um ttulo de menu. A
mensagem colocada na barra de status grfica. Se a barra de status for desativada com SET
STATUS BAR OFF, a mensagem ser centralizada na ltima linha da janela principal do Visual
FoxPro.

NOMARGIN Como padro, remove os espaos colocados esquerda e direita de cada nome de
menu.

COLOR SCHEME nNmeroEsquema Especifica as cores para uma barra de menus individual.

COLOR ListaParesCores Especifica as cores para uma barra de menus individual. Por padro, as
cores dos itens de menu so determinadas pelo esquema de cores 2 do conjunto atual de cores.

Para obter maiores informaes sobre esquemas e pares de cores, consulte o tpico Viso geral de
cores .



Comentrios

Utilize DEFINE MENU para criar a barra de menus para o sistema de menus de seu aplicativo.
Utilize DEFINE PAD para criar cada um dos ttulos de menus (pads) na barra de menus. Utilize
ON PAD ... ACTIVATE para especificar o menu que ser exibido embaixo de cada ttulo de menu.
Utilize DEFINE POPUP para criar os menus embaixo de cada ttulo de menu. Utilize ACTIVATE
MENU para ativar todo o sistema de menus.

Se voc utilizar o Criador de menus para criar seu menu, talvez no tenha que utilizar nenhum
desses comandos. O Criador de menus cria automaticamente os comandos para seu menu. Ele
utiliza o menu do sistema do Visual FoxPro, que voc pode modificar adicionando seus prprios
itens de menu.

Para obter maiores informaes sobre a criao de menus, consulte Criando um sistema de
menus, no captulo 11, Criando menus e barras de ferramentas, no Guia do Desenvolvedor.

DEFINE MENU, exemplo do comando

O exemplo a seguir utiliza DEFINE MENU para criar um sistema de menus definido pelo usurio.
A barra de menus do sistema atual salva para memria com SET SYSMENU SAVE e, em
seguida, os ttulos de menu do sistema so removidos com SET SYSMENU TO.
DEFINE MENU cria a barra de menus e dois ttulos de menu so criados com DEFINE PAD.
DEFINE POPUP cria um menu para cada ttulo de menu. DEFINE BAR cria itens em cada um dos
menus. Quando um ttulo de menu escolhido, ON PAD utiliza ACTIVATE POPUP para ativar o
menu correspondente. ACTIVATE MENU exibe e ativa a barra de menus.

Quando um item escolhido a partir de um menu, o procedimento CHOICE executado. CHOICE
exibe o nome do item escolhido e o nome do menu que contm o item.

*** Nomeie este programa como DEFIMENU.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
ON KEY LABEL ESC KEYBOARD CHR(13)
DEFINE MENU example BAR AT LINE 1
DEFINE PAD convpad OF example PROMPT '\<Converses' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF example PROMPT '\<Informaes do carto' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD convpad OF example ACTIVATE POPUP conversion
ON PAD cardpad OF example ACTIVATE POPUP cardinfo
DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4

DEFINE BAR 1 OF conversion PROMPT 'r\<ea' ;
KEY CTRL+E, '^E'
DEFINE BAR 2 OF conversion PROMPT 'C\<omprimento' ;
KEY CTRL+O, '^O'
DEFINE BAR 3 OF conversion PROMPT 'Ma\<ssa' ;
KEY CTRL+S, '^S'
DEFINE BAR 4 OF conversion PROMPT '\<Velocidade' ;
KEY CTRL+V, '^V'
DEFINE BAR 5 OF conversion PROMPT '\<Temperatura' ;
KEY CTRL+T, '^T'
DEFINE BAR 6 OF conversion PROMPT 'Te\<mpo' ;
KEY CTRL+M, '^M'
DEFINE BAR 7 OF conversion PROMPT 'Vo\<lume' ;
KEY CTRL+L, '^L'

ON SELECTION POPUP conversion DO choice IN defimenu WITH PROMPT( ), POPUP( )
DEFINE POPUP cardinfo MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF cardinfo PROMPT 'Visualizar co\<branas' ;
KEY ALT+B, ''
DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<Pagamentos' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar\< Usurios' ;
KEY ALT+U, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranas '
ON SELECTION POPUP cardinfo;

DO choice IN defimenu WITH PROMPT( ), POPUP( )

ACTIVATE MENU example
DEACTIVATE MENU example
RELEASE MENU example EXTENDED
SET SYSMENU TO DEFAULT
ON KEY LABEL ESC
PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'Voc escolheu ' + mprompt + ;
' do popup ' + mpopup NOWAIT

DEFINE PAD, comando


Cria um ttulo de menu (pad) em uma barra de menus definida pelo usurio ou na barra de menus
do sistema do Visual FoxPro.

Sintaxe

DEFINE PAD TtuloMenu1 OF NomeBarraMenus PROMPT cTextoTtuloMenu
[AT nLinha, nColuna]
[BEFORE NomeMenu2 | AFTER NomeMenu3]
[NEGOTIATE LEFT | NEGOTIATE MIDDLE | NEGOTIATE RIGHT]
[FONT cNomeFonte [, nTamanhoFonte]]
[STYLE cEstiloFonte]
[KEY RtuloTecla [, cTextoTecla]]
[MARK cCaractereMarca]
[SKIP [FOR lExpresso]]
[MESSAGE cTextoMensagem]
[COLOR SCHEME nNmeroEsquema
| COLOR ListaParesCores]



Argumentos

TtuloMenu1 Especifica o ttulo de menu a ser criado. O ttulo de menu permite fazer referncia ao
ttulo de menu de outros comandos e funes.

OF NomeBarraMenus Especifica o nome da barra de menus na qual o ttulo de menu est
localizado.

PROMPT cTextoTtuloMenu Especifica o texto exibido no ttulo de menu.

Voc pode criar uma tecla de acesso para o ttulo de menu, colocando uma barra invertida e um
sinal de menor que (\<) antes do caractere que voc gostaria que fosse a tecla de acesso. No
exemplo a seguir, o usurio pode pressionar a tecla F para escolher Faturas no menu Receber e a
tecla C para escolher Consulta no mesmo menu:

DEFINE MENU mnuReceive
DEFINE PAD padInvoice OF mnureceive PROMPT "\<Faturas"
DEFINE PAD padInquire OF mnureceive PROMPT "\<Estoque"
ACTIVATE MENU mnuReceive



AT nLinha, nColuna Especifica onde o ttulo de menu exibido na barra de menus. nLinha
, nColuna so as coordenadas do lado esquerdo do ttulo de menu na janela principal do Visual
FoxPro ou em uma janela definida pelo usurio.

Se voc omitir a clusula AT, o lado esquerdo do primeiro ttulo de menu ser colocado na linha 0
da janela principal do Visual FoxPro ou da janela definida pelo usurio. O prximo ttulo de menu
ser colocado direita do primeiro nome na linha 0 e assim por diante.

Observao Voc no pode incluir AT para especificar uma localizao para os ttulos de menus
nas barras de menus criadas com a clusula BAR em DEFINE MENU.

BEFORE NomeMenu2 Coloca o ttulo de menu na barra de menus esquerda do ttulo de menu
especificado com NomeMenu2.A ordem em que os ttulos de menus so acessados pelo teclado
corresponde localizao dos ttulos de menus na barra de menus.
AFTER NomeMenu3 Coloca o ttulo de menu na barra de menus direita do ttulo de menu
especificado com NomeMenu3. A ordem em que os ttulos de menus so acessados a partir do
teclado corresponde localizao dos ttulos de menus na barra de menus.

Voc deve criar primeiro o ttulo de menu especificado na clusula BEFORE ou AFTER. Se voc
no cri-lo primeiro, a colocao do ttulo de menu na barra de menus ser determinada pela ordem
na qual ele criado ou pela localizao especificada com a clusula AT.

Para as barras de menus criadas sem BAR, a ordem em que os ttulos de menus so acessados pelo
teclado determinada por BEFORE ou AFTER. A localizao de um ttulo de menu determinada
pela localizao especificada com a clusula AT.

Execute os dois exemplos a seguir e observe as diferenas na colocao do ttulo de menu e na
ordem de acesso quando os ttulos de menus so definidos com e sem a clusula AT:

*** Exemplo de Programa 1 sem ATs ***
DEFINE MENU mnuBefAft
DEFINE PAD padOne OF mnuBefAft PROMPT '1111'
DEFINE PAD padTwo OF mnuBefAft PROMPT '2222'
DEFINE PAD padThree OF mnuBefAft PROMPT '3333'
DEFINE PAD padFour OF mnuBefAft PROMPT '4444' BEFORE padTwo
ACTIVATE MENU mnuBefAft

*** Exemplo de Programa 2 com ATs ***
DEFINE MENU mnuBefAft
DEFINE PAD padOne OF mnuBefAft PROMPT '1111' AT 1,5
DEFINE PAD padTwo OF mnuBefAft PROMPT '2222' AT 1,15
DEFINE PAD padThree OF mnuBefAft PROMPT '3333' AT 1,25

DEFINE PAD padFour OF mnuBefAft PROMPT '4444' BEFORE padTwo AT 1,35
WAIT WINDOW 'Pressione ESC para apagar o menu' NOWAIT
ACTIVATE MENU mnuBefAft



NEGOTIATE LEFT | NEGOTIATE MIDDLE | NEGOTIATE RIGHT Especifica a localizao do
ttulo de menu na barra de menus do
Visual FoxPro quando ocorre a edio visual de OLE.

NEGOTIATE LEFT especifica que o ttulo de menu colocado esquerda do Grupo de arquivos.

NEGOTIATE MIDDLE especifica que o ttulo de menu colocado esquerda do Grupo de
recipientes, aps o menu Editar.

NEGOTIATE RIGHT especifica que o ttulo de menu colocado esquerda do Grupo de janelas.

Se voc omitir a clusula NEGOTIATE, o ttulo de menu ser removido da barra de menus quando
ocorre a edio visual de OLE.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte para o ttulo de menu. cNomeFonte
especifica o nome da fonte e cTamanhoFonte, o tamanho em pontos. Por exemplo, o comando a
seguir cria um ttulo de menu na fonte Courier de 12 pontos:

DEFINE PAD padPageAccts OF mnuReceive FONT 'Courier', 12



Se a fonte especificada no estiver disponvel, uma fonte similar com caractersticas de fonte
similares ir substitu-la. Se voc incluir a clusula FONT mas omitir o tamanho em pontos de
cTamanhoFonte, ser utilizada uma fonte de 10 pontos.

A clusula FONT ser ignorada para ttulos de menus acrescentados ao menu do sistema do Visual
FoxPro _MSYSMENU. Observe que o Criador de menus utiliza o menu do sistema do Visual
FoxPro.

STYLE cEstiloFonte Especifica um estilo de fonte para o item de menu. Se voc omitir a clusula
STYLE ou se o estilo de fonte no estiver disponvel, o estilo de fonte Normal ser utilizado.

Os estilos de fonte que podem ser especificados com cEstiloFonte so:

Caractere Estilo de fonte

B Negrito
I Itlico
N Normal
Q Opaco
- Riscado
T Transparente
U Sublinhado
Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. Por
exemplo, o comando a seguir especifica Negrito e Itlico:

DEFINE PAD padPageAccts OF mnuReceive STYLE 'BI'



A clusula STYLE ser ignorada para os ttulos de menus adicionados ao menu _MSYSMENU do
sistema do Visual FoxPro. Observe que o Criador de menus utiliza o menu do sistema do Visual
FoxPro.

KEY RtuloTecla [, cTextoTecla] Especifica uma tecla de acesso ou combinao de teclas para
um ttulo de menu. Para obter uma lista de teclas e combinaes de teclas disponveis e seus
respectivos nomes de rtulos de teclas, consulte ON KEY LABEL.

Observao Se uma macro de teclado j estiver definida com o mesmo rtulo de tecla, ela ter
prioridade e o item de menu no poder ser escolhido com a tecla ou combinao de teclas
especificada.

O rtulo de tecla colocado direita dos ttulos de menus nas barras de menus criadas sem a
clusula BAR. O rtulo de tecla no exibido nas barras de menus criadas com a clusula BAR ou
para os ttulos de menus da barra de menus do sistema do Visual FoxPro.

Inclua cTextoTecla para substituir o rtulo de tecla pelo seu prprio texto. Voc pode utilizar
qualquer caractere no parmetro cTextoTecla; por exemplo, o texto ^B pode ser utilizado para
indicar um rtulo de tecla de CTRL+B. A incluso de KEY CTRL+B coloca o texto CTRL+B no
menu, direita do nome do ttulo de menu. Ao especificar KEY CTRL+B, ^B, o texto ^+B ser
colocado no menu. Voc pode suprimir a exibio de um rtulo de tecla, especificando a seqncia
vazia para cTextoTecla.

MARK cCaractereMarca Especifica um caractere de marca exibido esquerda do ttulo de menu.
MARK pode ser includo para alterar o caractere de marca padro por um caractere especificado
com cCaractereMarca. Se cCaractereMarca incluir mais de um caractere, somente o primeiro
caractere ser utilizado como o caractere de marca.

O caractere de marca padro uma verificao. A clusula MARK ser ignorada e o caractere de
marca padro ser utilizado se a barra de menus que contm o ttulo de menu for o menu do sistema
do Visual FoxPro. Alm disso, a clusula MARK ser ignorada se FoxFont no for a fonte da janela
principal do Visual FoxPro ou da janela definida pelo usurio na qual est localizada a barra de
menus que contm o ttulo de menu.

Os caracteres de marca especificados com DEFINE PAD tm prioridade sobre os caracteres de
marca especificados com a clusula MARK em DEFINE MENU. SET MARK OF utilizado para
ativar ou desativar as marcas, podendo ser utilizado tambm para especificar um caractere de marca
para um ttulo de menu individual ou para todos os ttulos de menus.

Observao A especificao de um caractere de marca no marca o ttulo de menu. Utilize SET
MARK OF para marcar um ttulo de menu com o caractere especificado.

SKIP [FOR lExpresso] Especifica uma condio por meio da qual, se lExpresso resultar em
verdadeiro (.T.), o ttulo de menu ser desativado, impedindo que o formulrio do usurio o escolha.
Se lExpresso resultar em falso (.F.), o ttulo de menu ser ativado

Voc pode tambm desativar um item de menu, colocando uma barra invertida (\) antes do texto do
ttulo de menu. Por exemplo:

DEFINE PAD padPageAccts OF mnuReceive PROMPT '\Age Accounts'



O ttulo de menu padPageAccts exibido escurecido, indicando que no pode ser escolhido.

Um ttulo de menu desativado pode ser exibido, mas no selecionado. Entretanto, uma mensagem
especificada com a clusula MESSAGE exibida.

MESSAGE cTextoMensagem Exibe uma mensagem quando voc seleciona um ttulo de menu. A
mensagem colocada na barra de status grfica. Se a barra de status for desativada com SET
STATUS BAR OFF, a mensagem ser centralizada na ltima linha da janela principal do Visual
FoxPro.

COLOR SCHEME nNmeroEsquema Especifica as cores para um ttulo de menu individual,
substituindo as cores padro ou as cores especificadas com DEFINE MENU.

COLOR ListaParesCores Especifica as cores para um ttulo de menu individual, substituindo as
cores padro ou as cores especificadas com DEFINE MENU.

Como padro, as cores dos ttulos de menus nas barras de menus so determinadas pelo esquema
de cores 2 do conjunto de cores atual.

Para obter maiores informaes sobre esquemas e pares de cores, consulte o tpico Viso geral de
cores.



Comentrios

Voc deve criar cada ttulo de menu localizado na barra de menus com seu prprio comando
DEFINE PAD. A barra de menus deve ser definida com DEFINE MENU antes que se possam
colocar ttulos de menus e voc deve incluir o nome da barra de menus em DEFINE PAD.

Se voc utilizar o Criador de menus para criar seu menu, talvez no precise utilizar esses comandos.
O Criador de menus cria automaticamente os comandos para seu menu. Ele utiliza o menu do
sistema do Visual FoxPro, que voc pode modificar adicionando seus prprios itens de menu. Para
obter maiores informaes sobre a criao de menus, consulte Criando um sistema de menus no
captulo 11, Criando menus e barras de ferramentas, no Guia do Desenvolvedor.


DEFINE PAD, exemplo do comando

O exemplo a seguir utiliza DEFINE PAD para colocar os ttulos de menu na barra de menus do
sistema do Visual FoxPro. A barra de menus do sistema atual salva para memria com SET
SYSMENU SAVE e, em seguida, os ttulos de menu do sistema so removidos com SET
SYSMENU TO.
Muitos ttulos de menu do sistema so criados com DEFINE PAD. Quando um ttulo de menu
escolhido, o procedimento CHOICE executado. CHOICE exibe o nome do ttulo de menu
escolhido e o nome da barra de menus e ativa e desativa o caractere de marca de ttulo de menu. Se
o ttulo de menu Sair escolhido, o menu do sistema original do Visual FoxPro restaurado.

*** Nomeie este programa como DEFINPAD.PRG ***
CLEAR
SET TALK OFF
SET SYSMENU SAVE
SET SYSMENU TO
PUBLIC markpad
markpad = .T.
DEFINE PAD syspad OF _MSYSMENU PROMPT '\<Sistema' COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD editpad OF _MSYSMENU PROMPT '\<Editar' COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD recordpad OF _MSYSMENU PROMPT '\<Registro' COLOR SCHEME 3 KEY
ALT+R, ''

DEFINE PAD windowpad OF _MSYSMENU PROMPT '\<Janela' COLOR SCHEME 3 ;
KEY ALT+J, ''
DEFINE PAD reportpad OF _MSYSMENU PROMPT 'Re\<latrios' COLOR SCHEME 3 ;
KEY ALT+L, ''
DEFINE PAD exitpad OF _MSYSMENU PROMPT 'Sa\<ir' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN definpad WITH PAD( ), MENU( )
PROCEDURE choice

PARAMETER mpad, mmenu
WAIT WINDOW 'Voc escolheu ' + mpad + ;
' do menu ' + mmenu NOWAIT
SET MARK OF PAD (mpad) OF _MSYSMENU TO ;
! MRKPAD('_MSYSMENU', mpad)
markpad = ! markpad
IF mpad = 'EXITPAD'
SET SYSMENU TO DEFAULT
ENDIF










DEFINE POPUP, comando


Cria um menu.

Sintaxe

DEFINE POPUP NomeMenu
[FROM nLinha1, nColuna1]
[TO nLinha2, nColuna2]
[IN [WINDOW] NomeJanela | IN SCREEN]
[FONT cNomeFonte [, nTamanhoFonte]]
[STYLE cEstiloFonte]
[FOOTER cTextoRodap]
[KEY RtuloTecla]
[MARGIN]
[MARK cCaractereMarca]
[MESSAGE cTextoMensagem]
[MOVER]
[MULTISELECT]
[PROMPT FIELD NomeCampo | PROMPT FILES [LIKE EstruturaArquivo]
| PROMPT STRUCTURE]
[RELATIVE]
[SCROLL]
[SHORTCUT]
[TITLE cTextoTtuloMenu]
[COLOR SCHEME nNmeroEsquema
| COLOR ListaParesCores]



Argumentos

NomeMenu Especifica o nome do menu a ser criado.

FROM nLinha1, nColuna1 TO nLinha2, nColuna2 Especifica onde o menu colocado.
nLinha1, nColuna1 especifica coordenadas para o canto superior esquerdo do menu. Se voc omitir
a clusula FROM, o Visual FoxPro colocar o canto superior esquerdo do menu na primeira linha e
coluna da janela principal do Visual FoxPro ou de uma janela definida pelo usurio.

Para criar um menu com um tamanho especfico, voc pode tambm incluir TO nLinha2, nColuna2
para especificar a localizao do canto inferior direito do menu. Se voc incluir FROM nLinha1,
nColuna1 e omitir TO nLinha2, nColuna2, o Visual FoxPro dimensionar automaticamente o menu.
O menu tem a largura do item de menu mais longo contido nele (se os itens forem criados com
DEFINE BAR) e a extenso necessria para exibir todos os itens de menu. O comprimento do menu
limitado pelo tamanho da janela principal do Visual FoxPro ou da janela definida pelo usurio na
qual o menu est localizado. Se o menu no for grande o suficiente para conter todos os itens de
menu, ser exibida uma barra de rolagem para que voc possa percorrer os itens de menu.

IN [WINDOW] NomeJanela Coloca o menu em uma janela definida pelo usurio especificada
com NomeJanela. Se voc omitir essa clusula, o menu ser colocado na janela principal do Visual
FoxPro como padro a menos que haja uma janela ativa definida pelo usurio. Se houver uma
janela ativa definida pelo usurio, o menu ser colocado na janela ativa.

IN SCREEN Coloca o menu explicitamente na janela principal do Visual FoxPro.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte padro para o menu. Voc pode
substituir a fonte padro de um item de menu individual, incluindo a clusula FONT em DEFINE
BAR.

cNomeFonte especifica o nome da fonte e cTamanhoFonte, o tamanho em pontos. Por exemplo, o
comando a seguir cria um menu na fonte Courier de
12 pontos:

DEFINE POPUP popMyPopup FONT 'Courier', 12



Se a fonte especificada no estiver disponvel, uma fonte similar com caractersticas de fonte
similares ir substitu-la. Se voc incluir a clusula FONT, mas omitir o tamanho em pontos de
cTamanhoFonte, ser utilizada uma fonte de 10 pontos.

STYLE cEstiloFonte Especifica um estilo de fonte padro para o menu. Voc pode substituir o
estilo padro de um item individual incluindo a clusula FONT em DEFINE BAR.

Se voc omitir a clusula STYLE ou se o estilo de fonte especificado no estiver disponvel, o estilo
de fonte Normal ser utilizado.

Os estilos de fonte que podem ser especificados com cEstiloFonte so listados na tabela a seguir:

Caractere Estilo de fonte

B Negrito
I Itlico
N Normal
Q Opaco
- Riscado
T Transparente
U Sublinhado
Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. Por
exemplo, o comando a seguir especifica Negrito e Itlico:

DEFINE MENU popMyPopup STYLE 'BI'



FOOTER cTextoRodap Cria um rodap com o texto especificado, com cTextoRodap
centralizado na borda inferior do menu.

KEY RtuloTecla Especifica uma tecla de acesso ou combinao de teclas para um menu. Para
obter uma lista de teclas e combinaes de teclas disponveis e seus respectivos nomes de rtulos de
tecla, consulte ON KEY LABEL.

Incluir KEY equivalente a emitir o comando a seguir:

ON KEY LABEL RtuloTecla ACTIVATE POPUP NomeMenu



Observao Se uma macro de teclado j estiver definida com o mesmo rtulo de tecla, ela ter
prioridade e o menu no poder ser ativado com a tecla ou combinao de teclas especificada.

MARGIN Coloca um espao extra esquerda e direita de cada item de menu. Os caracteres de
marca so exibidos no espao esquerda de um item e setas indicando submenus adicionais em
cascata esto disponveis, sendo exibidos direita dos itens de menu. Se voc omitir MARGIN, os
caracteres de marca iro sobrescrever o primeiro caractere dos nomes dos itens de menu; setas
hierrquicas iro sobrescrever o ltimo caractere dos itens de menu.

MARK cCaractereMarca Especifica um caractere exibido esquerda de um item de menu. O
caractere de marca uma marca de verificao. A clusula MARK ser ignorada e o caractere de
marca padro ser utilizado se o menu estiver integrado dentro do menu do sistema do Visual
FoxPro. Alm disso, a clusula MARK ser ignorada se FoxFont no for a fonte da janela principal
do FoxPro ou da janela definida pelo usurio na qual o menu est localizado.

MARK pode ser includo para alterar o caractere de marca padro por um caractere especificado
com cCaractereMarca. Se cCaractereMarca incluir mais de um caractere, somente o primeiro
caractere ser utilizado como o caractere de marca.

Observao A especificao de um caractere de marca no marca um item de menu. Utilize SET
MARK OF para marcar um item de menu.

A clusula MARK define o caractere de marca para todos os itens do menu. Os caracteres de marca
especificados com os comandos DEFINE BAR tm prioridade sobre os caracteres de marca
especificados com a clusula MARK em DEFINE POPUP. SET MARK OF utilizado para ativar
ou desativar os caracteres de marca, podendo ser utilizado tambm para especificar um caractere de
marca para um item de menu individual ou para todos os itens de menu.

MESSAGE cTextoMensagem Exibe uma mensagem quando voc seleciona um item de menu. A
mensagem colocada na barra de status grfica. Se a barra de status baseada em caractere for
ativada com SET STATUS ON, a mensagem ser centralizada na ltima linha da janela principal do
Visual FoxPro.

MOVER Coloca uma seta de duas pontas () na caixa de dilogo Deslocador esquerda do item
selecionado no menu. Voc pode arrastar a seta de duas pontas a fim de mover um item para outra
posio no menu. GETBAR( ) pode ser utilizado para determinar o posicionamento de cada item no
menu.

No possvel reorganizar itens em menus criados com a clusula PROMPT.

MULTISELECT Permite que o usurio selecione vrios itens de um menu ao mesmo tempo.
Quando o usurio escolhe o item de um menu, o caractere de marca colocado esquerda do item.

No possvel fazer vrias selees a partir de um menu criado com a clusula PROMPT.

MRKBAR( ) pode ser utilizado para determinar os itens que sero escolhidos a partir do menu.

Se voc incluir MULTISELECT em DEFINE POPUP, poder incluir MARGIN para reservar
espao em cada item para o caractere de marca.

No exemplo a seguir, criado um menu denominado popFruits. MULTISELECT includo para
criar um menu que permita que vrios itens sejam escolhidos.

Cada um dos quatro itens tm um caractere de marca diferente. Quando o usurio escolhe itens do
menu, eles so marcados e uma rotina denominada yourchoice exibe os itens escolhidos.

CLEAR
IF NOT _DOS
MODIFY WINDOW SCREEN FONT 'foxfont', 12
ENDIF
ACTIVATE SCREEN
DEFINE POPUP popFruits FROM 5,5 ;
MULTISELECT MARGIN && Cria um menu que permite
vrias escolhas
DEFINE BAR 1 OF popFruits ;
PROMPT '\<Mas' MARK CHR(3) && Primeiro item
DEFINE BAR 2 OF popFruits ;
PROMPT '\<Bananas' MARK CHR(4) && Segundo item
DEFINE BAR 3 OF popFruits ;
PROMPT '\<Uvas' MARK CHR(5) && Terceiro item
DEFINE BAR 4 OF popFruits ;
PROMPT '\<Limes' MARK CHR(6) && Quarto item

@ 12,5 SAY 'Suas escolhas:'
ON SELECTION POPUP popFruits DO yourchoice && Rotina de escolha
ACTIVATE POPUP popFruits
PROCEDURE yourchoice && Executada quando a escolha feita
@ 13,5 CLEAR
FOR gnCount = 1 TO CNTBAR('popFruits') && Loop para n. de itens
IF MRKBAR('popFruits', gnCount) = .T. && A opo marcada,
? PRMBAR('popFruits', gnCount) AT 5 && exibe legenda
ENDIF
NEXT



PROMPT FIELD NomeCampo Especifica o nome de campo de uma tabela aberta cujos registros
sero os itens do menu. O menu contm um item para cada registro da tabela. Quando o menu
ativado, a rea de trabalho da tabela selecionada.

Dica Voc pode beneficiar-se da otimizao de Rushmore se definir um filtro no campo
especificado com PROMPT FIELD utilizado no menu.

Para obter maiores informaes sobre a otimizao de Rushmore, consulte SET OPTIMIZE e
Compreendendo a tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do
Desenvolvedor.

NomeCampo pode tambm conter vrios nomes de campos e expresses concatenadas com o
operador de adio (+). NomeCampo pode tambm ser o nome do campo de uma tabela aberta em
outra rea de trabalho ou uma funo definida pelo usurio.

No h limite para o nmero de entradas que podem ser exibidas em um menu criado com
PROMPT FIELD.

PROMPT FILES [LIKE EstruturaArquivo] Cria um menu que exibe os nomes dos arquivos
disponveis no diretrio ou pasta atual.

LIKE EstruturaArquivo permite especificar os arquivos a serem exibidos no menu utilizando
curingas. Por exemplo, para criar um menu que exiba os nomes das tabelas na unidade ou diretrio
padro, inclua o comando a seguir:

PROMPT FILES LIKE *.DBF



Voc pode criar um menu que exiba os nomes dos arquivos em outras unidades e em outros
diretrios, incluindo uma especificao de unidade, de diretrio ou ambas. Por exemplo, para criar
um menu que exiba os nomes dos arquivos de programa em um diretrio denominado PROGRAMS
na unidade C, inclua o comando a seguir:

PROMPT FILES LIKE C:\PROGRAMS\*.PRG



PROMPT STRUCTURE Exibe os nomes dos campos da tabela atual no menu, de acordo com a
estrutura dos campos da tabela. Quando o menu ativado, a rea de trabalho da tabela
selecionada.

RELATIVE Especifica a ordem de colocao dos itens no menu. Se voc criar um menu sem a
clusula RELATIVE, um item ser posicionado no menu na ordem ditada pelo nmero da barra do
item. O espao no menu reservado para itens indefinidos. Por exemplo, se o primeiro e terceiro
itens forem definidos e o menu estiver ativado, uma linha em branco reservada para o segundo item
ser colocada no menu.

Se voc criar um menu com RELATIVE, os itens sero exibidos no menu na ordem em que foram
definidos. O espao no menu no reservado para itens indefinidos.

A definio de um menu com RELATIVE tambm permite que voc utilize as clusulas BEFORE e
AFTER em DEFINE BAR para posicionar os itens de um menu em relao a outros itens. Se um
menu for criado sem RELATIVE,
a incluso de BEFORE ou AFTER em DEFINE BAR gerar um erro.

Execute os dois exemplos de programas a seguir e compare a colocao dos itens em cada menu.

*** Exemplo de RELATIVE ***
DEFINE POPUP popRelatYes RELATIVE FROM 1,1
DEFINE BAR 4 OF popRelatYes PROMPT '4444'
DEFINE BAR 3 OF popRelatYes PROMPT '3333'
DEFINE BAR 2 OF popRelatYes PROMPT '2222'
DEFINE BAR 1 OF popRelatYes PROMPT '1111'
DEFINE BAR 6 OF popRelatYes PROMPT '6666' BEFORE 4
ACTIVATE POPUP popRelatYes
*** Exemplo de NON-RELATIVE ***
DEFINE POPUP popRelatNo FROM 1,1
DEFINE BAR 4 OF popRelatNo PROMPT '4444'
DEFINE BAR 3 OF popRelatNo PROMPT '3333'

DEFINE BAR 2 OF popRelatNo PROMPT '2222'
DEFINE BAR 1 OF popRelatNo PROMPT '1111'
DEFINE BAR 6 OF popRelatNo PROMPT '6666'
ACTIVATE POPUP popRelatNo



SCROLL Coloca uma barra de rolagem direita do menu criado. Essa barra somente exibida
quando h mais itens do que o menu pode conter ou se o menu for longo demais para a janela
principal do Visual FoxPro ou para uma janela definida pelo usurio na qual est localizado.

SHORTCUT Cria um menu de atalho. Um menu de atalho exibido tipicamente quando um boto
de seleo, barra de ferramentas ou barra de tarefas clicado com o boto direito do mouse. O
menu de atalho lista comandos que pertencem rea da tela na qual o mouse foi clicado com o
boto direito.

Voc pode incluir MROW( ) e MCOL( ) na clusula FROM para ativar o popup na localizao
onde o mouse clicado.

TITLE cTextoTtuloMenu Exibe um ttulo no centro da borda superior do menu.
cTextoTtuloMenu especifica o ttulo do menu.

COLOR SCHEME nNmeroEsquema Especifica as cores de todos os elementos do menu. Como
padro, as cores dos menus criadas com DEFINE POPUP so controladas pelo esquema de cores 2.

COLOR ListaParesCores Especifica as cores de todos os elementos do menu.

Para obter maiores informaes sobre esquemas e pares de cores, consulte o tpico Viso geral de
cores.



Comentrios

Para colocar um conjunto de itens definidos no menu, utilize uma srie de comandos DEFINE
BAR. Para colocar registros, arquivos ou campos no menu utilize as opes PROMPT FIELD,
PROMPT FILES ou PROMPT STRUCTURE de DEFINE POPUP.

Quando o menu exibido e ativado com ACTIVATE POPUP, voc pode escolher um dos itens do
menu. Dependendo do item escolhido, uma rotina poder ser executada ou outro menu poder ser
exibido e ativado. Um menu que exibe outro menu quando um item escolhido denominado
submenu em cascata. Para obter maiores informaes sobre a criao de submenus, consulte ON
BAR.

Se voc utilizar o Criador de menus para criar seu menu, talvez no precise utilizar esses comandos.
O Criador de menus cria automaticamente os comandos para seu menu. Ele utiliza o menu do
sistema do Visual FoxPro, que voc pode modificar adicionando seus prprios itens de menu.

Para obter maiores informaes sobre a criao de menus, consulte Criando um sistema de
menus, no captulo 11, Criando menus e barras de ferramentas, no Guia do Desenvolvedor.

DEFINE POPUP, exemplo do comando

O exemplo a seguir utiliza DEFINE POPUP para criar menus que esto ativos quando um ttulo de
menu na barra de menus escolhido. A barra de menus do sistema atual salva para memria com
SET SYSMENU SAVE e, em seguida, os ttulos de menu do sistema so removidos com SET
SYSMENU TO.
Dois ttulos novos de menu do sistema so criados com DEFINE PAD e DEFINE POPUP cria um
menu suspenso para cada ttulo de menu. DEFINE BAR cria itens em cada um dos menus. Quando
um ttulo de menu escolhido, ON PAD utiliza ACTIVATE POPUP para ativar o menu
correspondente.

Quando um item escolhido a partir de um menu, ON SELECTION POPUP utiliza PROMPT( ) e
POPUP( ) para passar o nmero do item e o nome do menu para o procedimento CHOICE.
CHOICE exibe o texto do item escolhido e o nome do menu que contm o item. Se o item Sada for
escolhido de um menu Informaes de carto, o menu do sistema do Visual FoxPro restaurado.

*** Nomeie este programa como DEFINPOP.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD convpad OF _MSYSMENU PROMPT '\<Converses' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF _MSYSMENU PROMPT '\<Informaes do Carto' COLOR SCHEME
3 ;
KEY ALT+I, ''
ON PAD convpad OF _MSYSMENU ACTIVATE POPUP conversion
ON PAD cardpad OF _MSYSMENU ACTIVATE POPUP cardinfo
DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF conversion PROMPT 'r\<ea' KEY CTRL+E, '^E'

DEFINE BAR 2 OF conversion PROMPT 'C\<omprimento' ;
KEY CTRL+O, '^O'
DEFINE BAR 3 OF conversion PROMPT 'Ma\<ssa' ;
KEY CTRL+S, '^S'
DEFINE BAR 4 OF conversion PROMPT '\<Velocidade' ;
KEY CTRL+V, '^V'
DEFINE BAR 5 OF conversion PROMPT '\<Temperatura' ;
KEY CTRL+T, '^T'
DEFINE BAR 6 OF conversion PROMPT 'Te\<mpo' ;
KEY CTRL+M, '^M'
DEFINE BAR 7 OF conversion PROMPT 'Vo\<lume' ;
KEY CTRL+L, '^L'
ON SELECTION POPUP conversion;
DO choice IN definpop WITH PROMPT( ), POPUP( )

DEFINE POPUP cardinfo MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF cardinfo PROMPT 'Visualizar co\<branas' ;
KEY ALT+B, ''
DEFINE BAR 2 OF cardinfo PROMPT 'Visualizar \<Pagamentos' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Visualizar \<Usurios' ;
KEY ALT+U, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Cobranas '
DEFINE BAR 6 OF cardinfo PROMPT '\-'
DEFINE BAR 7 OF cardinfo PROMPT 'Sa\<ir '
ON SELECTION POPUP cardinfo;

DO choice IN definpop WITH PROMPT( ), POPUP( )
PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'Voc escolheu ' + mprompt + ;
' do popup ' + mpopup NOWAIT
IF mprompt = 'Sada'
SET SYSMENU TO DEFAULT
ENDIF

DEFINE WINDOW, comando


Cria uma janela e especifica seus atributos.

Sintaxe

DEFINE WINDOW NomeJanela1
FROM nLinha1, nColuna1 TO nLinha2, nColuna2
| AT nLinha3, nColuna3 SIZE nLinha4, nColuna4
[IN [WINDOW] NomeJanela2 | IN SCREEN | IN DESKTOP

[NAME ObjectName]
[FONT cFontName [, nFontSize]]
[STYLE cFontStyle]
[FOOTER cFooterText]
[TITLE cTitleText]
[HALFHEIGHT]
[DOUBLE | PANEL | NONE | SYSTEM | cBorderString]
[CLOSE | NOCLOSE]
[FLOAT | NOFLOAT]
[GROW | NOGROW]
[MDI | NOMDI]
[MINIMIZE | NOMINIMIZE]
[ZOOM | NOZOOM]
[ICON FILE FileName1]
[FILL cFillCharacter | FILL FILE FileName2]
[COLOR SCHEME nSchemeNumber
| COLOR ColorPairList]



Argumentos

NomeJanela1 Especifica o nome da janela a ser criada. Os nomes das janelas podem ter at 254
caracteres de extenso no Visual FoxPro (10 caracteres nas verses anteriores do FoxPro). Eles
devem comear com uma letra ou caractere de sublinhado e no podem comear com um nmero.
Eles podem conter qualquer combinao de letras, nmeros e caracteres de sublinhado.

FROM nLinha1, nColuna1 TO nLinha2, nColuna2 Especifica a posio e o tamanho da janela
definida pelo usurio na janela principal do Visual FoxPro. FROM nLinha1, nColuna1 especifica a
posio do canto superior esquerdo da janela definida pelo usurio na janela principal do Visual
FoxPro. TO nLinha2, nColuna2 especifica a posio do canto inferior direito da janela definida pelo
usurio na janela principal do Visual FoxPro.

Uma janela pode ser definida com as coordenadas que esto fora da borda da janela do Visual
FoxPro e pode ser maior que a janela principal do Visual FoxPro.

A localizao e o tamanho da janela so determinados pela fonte da janela pai. A janela pai pode ser
outra janela definida pelo usurio ou a janela principal do Visual FoxPro.

AT nLinha3, nColuna3 SIZE nLinha4, nColuna4 Especifica a posio e o tamanho de uma janela
definida pelo usurio.

AT nLinha3, nColuna3 especifica a posio do canto superior esquerdo da janela definida pelo
usurio na janela principal do Visual FoxPro. Essa posio determinada pela fonte atual da janela
pai. Como a clusula AT idntica clusula FROM em todos os aspectos, as duas clusulas
podem ser utilizadas de forma intercambivel.

SIZE nLinha4, nColuna4 especifica em linhas e colunas o tamanho da janela definida pelo usurio e
assegura que o texto exibido em uma fonte especfica caber na janela criada.

Voc pode especificar uma fonte e um estilo de fonte para uma janela definida pelo usurio,
incluindo as clusulas FONT e STYLE. Se voc especificar uma fonte para a janela e incluir a
clusula SIZE, o tamanho da fonte ser determinado pela largura e altura da fonte da janela. Se voc
no especificar a fonte para uma janela, ser utilizada a fonte padro do sistema, a fonte FoxFont de
10 pontos.

IN [WINDOW] NomeJanela2 Coloca uma janela definida pelo usurio em uma janela pai. A
janela definida pelo usurio torna-se a janela filho e no pode ser movida para fora da janela pai. Se
a janela pai for movida, a janela filho ser movida junto com ela.

Quando uma janela filho colocada em uma janela pai, as coordenadas da janela filho especificadas
com as clusulas FROM e TO ou AT e SIZE tero relao com a janela pai, no com a janela
principal do Visual FoxPro.

No exemplo a seguir, uma janela pai, wParent, criada. Uma janela filho, wChild, colocada na
janela pai.

CLEAR
DEFINE WINDOW wParent ;
FROM 1, 1 TO 20, 30 ;
TITLE "Pai" && Janela pai.
ACTIVATE WINDOW wParent
DEFINE WINDOW wChild ;
FROM 1, 1 TO 20, 20 ;
TITLE "Filho" ;
IN WINDOW wParent && Janela filho.
ACTIVATE WINDOW wChild
ACTIVATE SCREEN
WAIT WINDOW 'Pressione uma tecla para limpar as janelas'
RELEASE WINDOW wParent, wChild
CLEAR



IN SCREEN Coloca a janela definida pelo usurio explicitamente na janela principal do Visual
FoxPro. Se voc omitir IN SCREEN, a janela definida pelo usurio ser colocada na janela
principal do Visual FoxPro, como padro.

Voc pode incluir a clusula IN WINDOW em ACTIVATE WINDOW para colocar a janela em
outra janela definida pelo usurio e substituir a clusula IN SCREEN.

IN DESKTOP Coloca uma janela definida pelo usurio na rea de trabalho do Microsoft
Windows, fora da janela principal do Visual FoxPro. A posio da janela est relacionada com a
rea de trabalho do Windows e com a fonte atual da janela principal do Visual FoxPro.

NAME NomeObjeto Cria uma referncia de objeto para a janela, permitindo que voc manipule a
janela com as propriedades orientadas a objetos disponveis para o objeto do formulrio.

Para obter informaes adicionais sobre a programao orientada a objetos no Visual FoxPro,
consulte o captulo 3, Programao orientada a objetos, no Guia do Desenvolvedor. Para obter
informaes adicionais sobre as propriedades do objeto do formulrio que podem ser especificadas
para uma janela criada com a clusula NAME, consulte o tpico Form, objeto.

FONT cNomeFonte [, nTamanhoFonte] Especifica uma fonte para o texto colocado na janela.
cNomeFonte especifica o nome da fonte, e cTamanhoFonte, o tamanho em pontos. Se voc omitir
nTamanhoFonte, ser utilizada uma fonte de 9 pontos.

Por exemplo, este comando cria uma janela que exibe a sada enviada para a janela na fonte Courier
de 16 pontos:

DEFINE WINDOW wDisplayFont FROM 2,2 TO 12,22 FONT 'Courier', 16



Se voc omitir a clusula FONT, ser utilizada a fonte FoxFont de 10 pontos. Se a fonte
especificada no estiver disponvel, ser utilizada uma fonte com caractersticas semelhantes em
substituio.

STYLE cEstiloFonte Especifica um estilo de fonte para o texto colocado na janela. cEstiloFonte
especifica a fonte. Se voc omitir a clusula STYLE ou se o estilo de fonte especificado no estiver
disponvel, o estilo de fonte Normal ser utilizado.

A tabela a seguir lista estilos de fonte e seus caracteres correspondentes.



Caractere Estilo de fonte

B Negrito
I Itlico
N Normal
Q Opaco
- Riscado
T Transparente
U Sublinhado
Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. No
Visual FoxPro, os comandos a seguir especificam os estilos Negrito e Itlico:

DEFINE WINDOW wDisplayStyle FROM 2, 2 TO 12, 22 STYLE 'BI'



TITLE cTextoTtulo Atribui um ttulo com a clusula TITLE. cTextoTtulo especifica o texto do
ttulo e centralizado na borda superior da janela. Se o ttulo for mais largo do que a janela, ser
truncado.

HALFHEIGHT Cria uma janela com uma barra de ttulo de meia altura. Isso fornece
compatibilidade para as janelas criadas nas verses anteriores do FoxPro que so importadas para o
Visual FoxPro.

Quando voc utiliza DEFINE WINDOW para criar uma janela, uma barra de ttulo de meia altura
utilizada, a menos que voc inclua a palavra-chave SYSTEM ou uma clusula FONT.

Se voc incluir a palavra-chave HALFHEIGHT, a barra de ttulo de meia altura ser utilizada
independentemente da clusula SYSTEM ou FONT estar includa.

DOUBLE | PANEL | NONE | SYSTEM | cSeqnciaBorda Especifica um estilo de borda para
uma janela definida pelo usurio. A borda padro uma nica linha.

Argumento Descrio

DOUBLE Especifica uma borda com linha dupla em volta da janela.
PANEL Especifica uma borda larga em volta da janela.
NONE Suprime completamente a borda.
SYSTEM Especifica que a janela definida pelo usurio dever ter a aparncia de uma janela
do sistema. Quando certas clusulas diferentes (GROW, ZOOM etc.) so includas, os controles
apropriados da janela so colocados na sua borda.
cSeqnciaBorda Especifica uma borda personalizada. Para obter maiores informaes sobre
a definio de uma borda personalizada, consulte SET BORDER.
A incluso de DOUBLE ou de uma seqncia de borda personalizada cria uma janela com a borda
PANEL. A incluso das clusulas CLOSE, FLOAT, GROW, ZOOM ou MINIMIZE coloca os
controles apropriados na janela, mesmo que a clusula SYSTEM de definio da janela no seja
includa.

CLOSE Permite fechar uma janela definida pelo usurio utilizando o teclado ou mouse. Ao fechar
uma janela, ela removida da janela principal do Visual FoxPro ou de uma janela pai definida pelo
usurio e sua definio removida da memria. Se omitir CLOSE, voc no poder fechar a janela
utilizando a interface; a janela dever ser fechada utilizando um comando em um programa ou na
janela Comando.
NOCLOSE Impede que a janela seja fechada exceto ao utilizar um comando em um programa ou
na janela Comando.

FLOAT Permite que a janela seja movida, utilizando o teclado ou mouse. Se omitir FLOAT, voc
no poder mover a janela, a menos que utilize o comando MOVE WINDOW em um programa ou
na janela Comando.
NOFLOAT Impede que a janela seja movida, exceto quando utilizar o comando MOVE
WINDOW em um programa ou na janela Comando.
GROW Permite que voc dimensione uma janela definida pelo usurio, utilizando o teclado ou
mouse. Se omitir GROW, voc no poder dimensionar a janela exceto ao utilizar o comando SIZE
WINDOW em um programa ou na janela Comando.

NOGROW Impede que voc dimensione uma janela exceto ao utilizar o comando SIZE WINDOW
em um programa ou na janela Comando.
MDI Cria uma janela definida pelo usurio em conformidade com MDI. MDI (interface de
mltiplos documentos) uma especificao que permite janelas com vrios documentos e
determina suas estruturas e procedimentos. Se voc omitir MDI, a janela criada no estar em
conformidade com MDI.

Quando uma janela em conformidade com MDI maximizada:

A janela considera o tamanho da janela principal do Visual FoxPro. Os controles da janela
desaparecem e a caixa do menu Controle exibida na barra de menus do sistema do Visual FoxPro.
O boto Restaurar da janela tambm colocado na barra de menus do sistema do Visual FoxPro.
O ttulo da janela colocado na barra de ttulos do Visual FoxPro e separado do ttulo do
Visual FoxPro por um hfen.
Se voc ativar outra janela em conformidade com MDI, ela ser automaticamente
maximizada.



NOMDI Cria uma janela que no est em conformidade com MDI.

MINIMIZE Permite minimizar uma janela definida pelo usurio utilizando o teclado ou mouse.

NOMINIMIZE Impede que as janelas sejam minimizadas.

ZOOM Permite que a janela seja maximizada utilizando o teclado ou mouse. Voc pode tambm
restaurar a janela ao seu tamanho original.

NOZOOM Impede que a janela seja maximizada.

ICON FILE NomeArquivo Especifica o cone exibido quando a janela minimizada. preciso
incluir a palavra-chave MINIMIZE em DEFINE WINDOW. Voc pode especificar somente um
arquivo de cone (.ICO); no possvel especificar um arquivo bitmap (.BMP).

FILL FILE NomeArquivo2 Especifica um papel de parede (o segundo plano) para a janela. A
janela exibida lado a lado, com o NomeArquivo2 especificado. Voc especifica um arquivo
bitmap .BMP.

COLOR SCHEME nNmeroEsquema Especifica as cores para a janela definida pelo usurio.
Como padro, as cores das janelas criadas com DEFINE WINDOW so controladas pelo esquema
de cores 1.

COLOR ListaParesCores Especifica as cores para a janela definida pelo usurio.

Para obter maiores informaes sobre esquemas e pares de cores, consulte o tpico Viso geral de
cores.



Comentrios

Depois que as janelas definidas pelo usurio forem criadas com DEFINE WINDOW, elas podero
ser exibidas na janela principal do Visual FoxPro com ACTIVATE WINDOW ou SHOW
WINDOW. O nmero de janelas definidas pelo usurio que podem ser criadas limitado somente
pela quantidade de memria disponvel e pelos recursos do sistema.

As janelas ativadas permanecem na janela principal do Visual FoxPro at que DEACTIVATE
WINDOW ou HIDE WINDOW seja emitido. DEACTIVATE WINDOW e HIDE WINDOW
removem janelas da janela principal do Visual FoxPro, mas no removem as definies das janelas
da memria. As janelas podem ser colocadas de volta na janela principal do Visual FoxPro com
ACTIVATE WINDOW ou SHOW WINDOW.

Utilize CLEAR WINDOWS ou RELEASE WINDOWS para remover janelas da janela principal do
Visual FoxPro e as definies das janelas da memria. As janelas cujas definies foram removidas
da memria devem ser recriadas com DEFINE WINDOW para serem exibidas novamente.

DEFINE WINDOW, exemplo do comando

No exemplo a seguir, uma janela denominada Sada criada e ativada. O programa espera voc
pressionar uma tecla e, em seguida, oculta a janela. O programa espera voc pressionar uma tecla
novamente e, em seguida, exibe a janela mais uma vez.

CLEAR
DEFINE WINDOW output FROM 2,1 TO 13,75 TITLE 'Sada' ;
CLOSE FLOAT GROW ZOOM
ACTIVATE WINDOW output
WAIT WINDOW 'pressione qualquer tecla para ocultar a janela Sada'
HIDE WINDOW output
WAIT WINDOW 'pressione qualquer tecla para exibir a janela Sada'
SHOW WINDOW output
WAIT WINDOW 'pressione qualquer tecla para liberar a janela Sada'
RELEASE WINDOW output

DELETE DATABASE, comando


Exclui um banco de dados do disco.

Sintaxe

DELETE DATABASE NomeBancoDados | ?
[DELETETABLES] [RECYCLE]



Argumentos

NomeBancoDados Especifica o nome do banco de dados a ser excludo do disco. O banco de
dados especificado no poder ser aberto. NomeBancoDados pode incluir o caminho do banco de
dados com o nome dele.

? Exibe a caixa de dilogo Excluir onde voc pode especificar o nome do banco de dados a ser
excludo do disco.

DELETETABLES Exclui do disco as tabelas contidas no banco de dados e o banco de dados que
contm as tabelas.

RECYCLE Especifica que o banco de dados no excludo imediatamente do disco e colocado
na Lixeira do Windows 95.



Comentrios

Utilize sempre DELETE DATABASE para excluir um banco de dados do disco. Ao contrrio de
outros utilitrios de manipulao do sistema operacional, DELETE DATABASE remove
referncias do banco de dados das tabelas do banco de dados.

Caso SET SAFETY esteja ativado (ON), o Visual FoxPro perguntar se voc gostaria de excluir o
banco de dados especificado. Caso SET SAFETY esteja desativado (OFF), o banco de dados ser
excludo automaticamente do disco.


DELETE DATABASE, exemplo do comando

Este exemplo cria um banco de dados denominado people. Uma tabela denominada friends criada
e automaticamente adicionada ao banco de dados. DISPLAY TABLES utilizado para exibir as
tabelas no banco de dados e DISPLAY DATABASES utilizado para exibir as informaes sobre
as tabelas no banco de dados.
DELETE DATABASE utilizado com a opo DELETETABLES para remover o banco de dados
e sua tabela friends do disco.

CLOSE ALL
CREATE DATABASE people
CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES && Exibe as tabelas no banco de dados
DISPLAY DATABASES && Exibe as informaes da tabela
CLOSE ALL
DELETE DATABASE people DELETETABLES

DELETE FILE, comando


Exclui um arquivo de um disco.

Sintaxe

DELETE FILE [NomeArquivo | ?] [RECYCLE]



Argumentos

NomeArquivo Especifica o arquivo a ser excludo. NomeArquivo pode conter caracteres curingas
como * e ?. Por exemplo, para excluir os arquivos de backup com a extenso .BAK no diretrio ou
pasta atual, emita DELETE FILE *.BAK.

? Exibe a caixa de dilogo Excluir do qual voc pode escolher um arquivo a ser excludo.

RECYCLE Especifica que o banco de dados no excludo imediatamente do disco e colocado
na Lixeira do Windows 95.



Cuidado Qualquer arquivo excludo com este comando no pode ser recuperado. Mesmo se SET
SAFETY estiver ativado (ON), voc no ser avisado antes de o arquivo ser excludo.



Comentrios

O arquivo que voc deseja excluir no pode estar aberto quando DELETE FILE emitido. O nome
do arquivo deve incluir um caminho se estiver em uma unidade de disco ou volume diferente, ou
em um diretrio ou pasta diferente do padro e a extenso do nome do arquivo deve estar includa.
O nome do arquivo no pode conter curingas.

Antes de excluir uma tabela de um banco de dados, emita REMOVE TABLE com o nome da tabela
para remover as referncias tabela do banco de dados. Se voc excluir uma tabela que tenha um
arquivo memo .FPT associado, certifique-se de excluir o arquivo memo.


DELETE FILE, exemplo do comando

No exemplo a seguir, a estrutura de CUSTOMER.DBF e todos os registros no qual o pas EUA
so copiados para uma tabela denominada backup. Os dados em backup so, em seguida, copiados
para um arquivo de texto, temp, que aberto e, em seguida, excludo quando fechado.

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

COPY STRUCTURE TO backup
USE backup
APPEND FROM customer FOR country = 'EUA'
COPY TO temp TYPE DELIMITED

WAIT WINDOW 'Pressione Esc para fechar e apaga temp.txt' NOWAIT
MODIFY FILE temp.txt NOEDIT
DELETE FILE temp.txt
? IIF(FILE('temp.txt'),'Arquivo no excludo','Arquivo excludo')
USE
DELETE FILE backup.dbf

DELETE TRIGGER, comando


Remove um disparador de excluso, insero ou atualizao de uma tabela do banco de dados atual.

Sintaxe

DELETE TRIGGER ON NomeTabela FOR DELETE | INSERT | UPDATE



Argumentos

NomeTabela Especifica o nome da tabela da qual o disparador est excludo.

FOR DELETE | INSERT | UPDATE Especifica o disparador a ser excludo. Inclui FOR DELETE
para remover o Disparador de excluso, FOR INSERT para remover o Disparador de insero e
FOR UPDATE para remover o Disparador de atualizao.



Comentrios

Utilize CREATE TRIGGER para criar um disparador de excluso, insero ou atualizao de uma
tabela.

DELETE TRIGGER, exemplo do comando



Os exemplos a seguir criam um Disparador de atualizao que impede que valores maiores que 50
sejam digitados no campo maxordamt na tabela customer. DISPLAY DATABASE utilizado para
exibir o Disparador de atualizao. Em seguida, DELETE TRIGGER utilizado para remover o
Disparador de atualizao e DISPLAY DATABASE emitido novamente para verificar a remoo
do Disparador de atualizao.

CLOSE DATABASES
OPEN DATABASE SYS(2004) + 'samples\data\testdata' && Abre o banco de dados do testdata
USE CUSTOMER && Abre a tabela Customer

CREATE TRIGGER ON customer FOR UPDATE AS maxordamt <= 50
CLEAR
DISPLAY DATABASE
DELETE TRIGGER ON customer FOR UPDATE
DISPLAY DATABASE

DELETE, comando


Marca registros para excluso.

Sintaxe

DELETE
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[IN nreaTrabalho | cAliasTabela]
[NOOPTIMIZE]



Argumentos

Escopo Especifica um intervalo de registros a serem marcados para excluso. As clusulas de
escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST.

Para obter maiores informaes sobre as clusulas de escopo, consulte o tpico Clusulas de
escopo.

O escopo padro para DELETE o registro atual (NEXT 1).

FOR lExpresso1 Especifica uma condio atravs da qual somente os registros que satisfazem
condio lgica lExpresso1 so marcados para excluso.

Rushmore otimizar uma consulta especificada com DELETE ... FOR se lExpresso1 for uma
expresso otimizvel e a tabela for indexada em DELETED( ). Para obter um melhor desempenho,
utilize uma expresso otimizvel na clusula FOR.

Para obter informaes sobre expresses otimizveis Rushmore, consulte SET OPTIMIZE
e Compreendendo a tecnologia Rushmore, no captulo 15, Otimizando aplicativos, no Guia do
Desenvolvedor.

WHILE lExpresso2 Especifica uma condio atravs da qual os registros sero marcados para
serem excludos quando lExpresso2 resultar em verdadeiro (.T.).

IN nreaTrabalho Especifica a rea de trabalho da tabela onde os registros so marcados para
excluso.

IN cAliasTabela Especifica o alias da tabela onde os registros so marcados para excluso.

Se voc omitir nreaTrabalho e cAliasTabela, os registros sero marcados para excluso na tabela
da rea de trabalho atualmente selecionada.

NOOPTIMIZE Desativa a otimizao de Rushmore de DELETE.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore, no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.



Comentrios

Os registros marcados para excluso no so removidos fisicamente da tabela at que PACK seja
emitido. Os registros marcados para excluso podem ser reintegrados (desmarcados) com
RECALL.
DELETE, exemplo do comando

O exemplo a seguir abre a tabela customer no banco de dados testdata. DELETE utilizado para
marcar todos os registros para excluso onde o campo country contm EUA. Todos os registros
marcados para excluso so exibidos. RECALL ALL utilizado para desmarcar todos os registros
marcados para excluso.

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

DELETE FOR country = 'EUA' && Marca para excluso
CLEAR
LIST FIELDS company, country FOR DELETED( ) && Lista os registros marcados
RECALL ALL && Desmarca todos os registros marcados para excluso

DELETED( ), funo


Retorna um valor lgico que indica se o registro atual est marcado para excluso.

Sintaxe

DELETED([cAliasTabela | nreaTrabalho])



Tipos de retorno

Lgico

Argumentos

cAliasTabela | nreaTrabalho Voc pode verificar o status do registro atual de uma tabela aberta
em outra rea de trabalho especificando o nmero da rea de trabalho com nreaTrabalho ou o
alias da tabela com cAliasTabela. Se uma tabela no estiver aberta na rea de trabalho especificada,
DELETED( ) retornar falso.

Se voc omitir cAliasTabela e nreaTrabalho, o status de excluso ser retornado para o registro
atual da rea de trabalho atual.



Comentrios

Se o registro estiver marcado para excluso, DELETED( ) retornar verdadeiro (.T.); caso contrrio,
DELETED( ) retornar falso (.F.).

possvel marcar registros para excluso com DELETE e DELETE - SQL e desmarc-los com
RECALL.

Rushmore otimiza consultas que testam o status de excluso dos registros se a tabela estiver
indexada por DELETED( ).

Para obter informaes sobre como utilizar a otimizao de Rushmore para consultas, consulte SET
OPTIMIZE e Compreendendo a tecnologia Rushmore, no captulo 15, Otimizando aplicativos,
no Guia do Desenvolvedor.

DELETED( ), exemplo da funo



O exemplo a seguir abre a tabela customer no banco de dados testdata. DELETE - SQL utilizado
para marcar todos os registros a serem excludos, onde o campo country que contm USA.
DELETED( ) utilizado para exibir todos os registros marcados para excluso. RECALL ALL
utilizado para desmarcar todos os registros a serem excludos.

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

DELETE FROM customer WHERE country = 'USA' && Marca para excluso
CLEAR
LIST FIELDS company, country FOR DELETED( ) && Lista os registros marcados
RECALL ALL && Desmarca todos os registros a serem excludos



DIFFERENCE( ), funo


Retorna um nmero inteiro de 0 a 4 que representa a diferena fontica relativa entre duas
expresses de caracteres.

Sintaxe

DIFFERENCE(cExpresso1, cExpresso2)



Tipos de retorno

Numrico

Argumentos

cExpresso1, cExpresso2 Especifica as expresses de caracteres que so comparadas por
DIFFERENCE( ).



Comentrios

DIFFERENCE( ) til para procurar tabelas quando a ortografia exata de uma entrada no
conhecida.

Quanto mais parecida for a ortografia de duas expresses, maior ser o nmero retornado por
DIFFERENCE( ). Se a ortografia das expresses de caracteres for muito semelhante,
DIFFERENCE( ) retornar 4. Para duas expresses de caracteres com poucas semelhanas
fonticas, DIFFERENCE( ) retornar 0.

DIFFERENCE( ), exemplo da funo



STORE 'Smith' TO gcName1
STORE 'Smythe' TO gcName2
STORE 'Smittie' TO gcName3
STORE '' TO gcName4
CLEAR
? DIFFERENCE(gcName1, gcName2) && Exibe 4
? DIFFERENCE(gcName1, gcName3) && Exibe 4
? DIFFERENCE(gcName1, gcName4) && Exibe 1























DIMENSION, comando


Cria uma matriz uni ou bidimensional de variveis de memria.

Sintaxe

DIMENSION NomeMatriz1 (nLinhas1 [, nColunas1])
[, NomeMatriz2 (nLinhas2 [, nColunas2])] ...



Argumentos

NomeMatriz1 Especifica o nome da matriz. Podem ser criadas vrias matrizes com um nico
comando DIMENSION, incluindo nomes de matrizes adicionais (NomeMatriz2, NomeMatriz3
etc.).

nLinhas1 [, nColunas1] Especifica o tamanho da matriz a ser criada. Se voc incluir apenas
nLinhas1, ser criada uma matriz unidimensional. Esse tipo de matriz apresenta uma coluna e
nLinhas1 linhas. Por exemplo, o comando a seguir cria uma matriz unidimensional denominada
gaArrayOne que contm uma coluna e dez linhas.

DIMENSION gaArrayOne(10)



Para criar uma matriz bidimensional, inclua os argumentos nLinhas1 e nColunas1. nLinhas1
especifica o nmero de linhas da matriz e nColunas1 especifica o nmero de colunas. O exemplo a
seguir cria uma matriz bidimensional denominada gaArrayTwo que contm duas linhas e quatro
colunas:

DIMENSION gaArrayTwo(2,4)



preciso especificar um tamanho para cada matriz criada com DIMENSION. No exemplo a seguir,
so criadas trs matrizes: gaArrayOne e gaArrayTwo, a partir dos exemplos anteriores, e uma
terceira matriz denominada gaArrayThree:

DIMENSION gaArrayOne(10), gaArrayTwo(2,4), gaArrayThree(3,3)



Voc pode colocar as expresses em DIMENSION ou DECLARE entre colchetes ou parnteses.
Por exemplo, os dois comandos a seguir criam matrizes idnticas:

DIMENSION gaArrayOne(10), gaArrayTwo[2,4], gaArrayThree(3,3)
DIMENSION gaArrayOne[10], gaArrayTwo(2,4), gaArrayThree[3,3]



Comentrios

DIMENSION idntico, em operao e sintaxe, a DECLARE.

Elementos da matrizO tamanho de uma matriz determina a quantidade de elementos que ela pode
conter. Cada elemento de uma matriz pode armazenar um nico item de informao. Para
determinar quantos elementos uma matriz contm e a quantidade de informaes que pode
armazenar, multiplique seu nmero de linhas (nLinhas1) pelo seu nmero de colunas (nColunas1).

Os elementos de uma matriz podem conter qualquer tipo de dados e so inicializados com o valor
falso (.F.) na primeira vez que a matriz criada. Voc pode inicializar todos os elementos de uma
matriz com o mesmo valor utilizando STORE se SET COMPATIBLE estiver definido como
FOXPLUS ou OFF (a definio padro). Por exemplo:

DIMENSION gaArray(10,3)
STORE 'initial' TO gaArray



ndices de matrizPara se fazer referncia aos elementos de uma matriz, empregam-se os
respectivos ndices. Cada elemento de matriz possui um ndice numrico exclusivo que o identifica.
Se a matriz for unidimensional, o ndice de um elemento ser igual ao seu nmero de linha. Por
exemplo, o ndice correspondente ao elemento da terceira linha de uma matriz unidimensional 3.

Para se fazer referncia aos elementos de matrizes bidimensionais, utilizam-se dois ndices. O
primeiro indica a localizao da linha do elemento e o segundo, a localizao da coluna. Por
exemplo, os ndices correspondentes ao elemento da terceira linha e quarta coluna de uma matriz
bidimensional so 3,4. Para obter uma discusso mais ampla sobre os ndices de elementos de
matriz, consulte ASUBSCRIPT( ).

O(s) ndice(s) do primeiro elemento de uma matriz sempre comeam com 1. Caso uma matriz seja
bidimensional, ela tambm poder ser referenciada por um nico ndice. Utilize AELEMENT( )
para retornar esse ndice nico a partir de um par de ndices de linha e de coluna de uma matriz.
Utilize ASUBSCRIPT( ) para retornar os ndices de linha e de coluna a partir de um nico ndice.

Redimensionando matrizesPara alterar o tamanho e as dimenses de uma matriz, emita o
comando DIMENSION novamente. O tamanho de uma matriz pode ser aumentado ou diminudo,
matrizes unidimensionais podem ser convertidas em duas dimenses e matrizes bidimensionais
podem ser reduzidas a uma dimenso.

Se o nmero de elementos de uma matriz for aumentado, o contedo de todos os elementos da
matriz original ser copiado para a matriz recm-redimensionada. Os elementos adicionais so
inicializados com o valor falso (.F.).


Exemplo de redimensionamento de matrizes

O Exemplo 1 mostra o resultado do aumento do tamanho de uma matriz unidimensional. (Observe
que se voc digitar esses comandos na janela Comando, a matriz ser pblica (PUBLIC), mas se
copi-los para um programa e execut-lo, a matriz ser privada (PRIVATE)).
Se o nmero de elementos em uma matriz estiver reduzido, os elementos e qualquer dos dados
contidos neles sero excludos. Quando uma matriz unidimensional remanejada para duas
dimenses, o contedo da matriz original copiado para a nova matriz em uma ordem elemento
para linha.

No Exemplo 2, uma matriz unidimensional convertida em uma matriz bidimensional. O contedo
dos elementos da matriz unidimensional copiado para a primeira linha da nova matriz, seguido da
segundo linha e, assim, sucessivamente. Os elementos adicionais so inicializados com o valor falso
(.F.).
Quando uma matriz bidimensional convertida em uma dimenso, seu contedo copiado para a
nova matriz em uma ordem linha-para-elemento. O primeiro elemento da primeira linha torna-se o
primeiro elemento da matriz unidimensional, o segundo elemento da primeira linha torna-se o
segundo elemento e, assim, sucessivamente.

Utilize ADEL( ) ou AINS( ) para excluir ou inserir elementos de matriz, linhas e colunas. Utilize
APPEND FROM ARRAY, COPY TO ARRAY, SCATTER e GATHER para transferir dados entre
registros e matrizes da tabela.
No Exemplo 3, uma matriz bidimensional criada e carregada com os dados. Os elementos de
matriz e os dados contidos neles so exibidos.

* Exemplo 1
DIMENSION marray(2)
STORE 'A' TO marray(1)
STORE 'B' TO marray(2)
CLEAR
DISPLAY MEMORY LIKE marray
DIMENSION marray(4)
DISPLAY MEMORY LIKE marray
WAIT WINDOW

* Exemplo 2
DIMENSION marrayone(4)
STORE 'E' TO marrayone(1)
STORE 'F' TO marrayone(2)
STORE 'G' TO marrayone(3)
STORE 'H' TO marrayone(4)
CLEAR
DISPLAY MEMORY LIKE marrayone
DIMENSION marrayone(2,3)
DISPLAY MEMORY LIKE marrayone
WAIT WINDOW

* Exemplo 3
DIMENSION sample(2,3)

STORE 'Goodbye' TO sample(1,2)
STORE 'Hello' TO sample(2,2)
STORE 99 TO sample(6)
STORE .T. TO sample(1)
CLEAR
DISPLAY MEMORY LIKE sample




























DIR ou DIRECTORY, comando


Exibe informaes sobre arquivos em um diretrio ou pasta.

Sintaxe

DIR | DIRECTORY [ON Unidade]
[[LIKE] [Caminho] [EstruturaArquivo]]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]



Argumentos

ON Unidade Especifica o nome da unidade de disco ou do volume onde est localizado o diretrio
ou pasta.

[LIKE] [Caminho] [EstruturaArquivo] Especifica o caminho para o diretrio ou pasta que contm
os arquivos. O caminho poder incluir o nome da unidade de disco ou do volume se voc omitir ON
Unidade.

Inclua EstruturaArquivo para exibir informaes sobre tipos de arquivo que no as tabelas.
EstruturaArquivo uma estrutura de especificao de arquivo que aceita curingas. Por exemplo,
para listar todos os arquivos de programa no diretrio ou pasta atual, emita o comando a seguir:

DIR *.PRG



No Visual FoxPro, voc pode emitir o comando a seguir para listar todos os arquivos sem as
extenses:

DIR *.



TO PRINTER [PROMPT] Envia a sada de DIRECTORY para uma impressora.

No Visual FoxPro, voc pode incluir a clusula PROMPT opcional para exibir uma caixa de
dilogo de impresso antes do incio da impresso. Nessa caixa de dilogo, voc pode ajustar as
definies da impressora, incluindo o nmero de cpias e de pginas a serem impressas. As
definies da impressora que podem ser ajustadas dependem do driver de impressora instalado no
momento. Coloque a palavra-chave PROMPT logo aps TO PRINTER.

TO FILE NomeArquivo Envia a sada de DIR para o arquivo especificado com NomeArquivo. Se
o arquivo j existir e SET SAFETY estiver ativado (ON), ser exibida uma pergunta para saber se
voc deseja ou no sobrescrever o arquivo..



Comentrios

Use DIR para exibir informaes sobre arquivos.

DIR sem a clusula LIKE ou uma estrutura exibe o seguinte:

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

O nmero total de bytes restantes no disco.



As informaes da tabela para a unidade de disco padro ou volume e o diretrio ou pasta so
exibidas, a menos que sejam especificadas de forma diferente com Unidade, Caminho ou ambos.

DIR ou DIRECTORY, exemplo de comando

CLEAR
DIR && Exibe as tabelas no diretrio ou pasta atual
DIR *.CDX && Exibe os arquivos de ndice no diretrio ou pasta atual
DIR A*.DBF && Exibe as tabelas que comeam com A
DIR *.* && Exibe todos os arquivos, incluindo aqueles sem extenses














DIRECTORY( ) , funo


Retorna verdadeiro (.T.) se o diretrio especificado for encontrado em disco.

Sintaxe

DIRECTORY(cNomeDiretrio)



Tipos de retorno

Lgico

Argumentos

cNomeDiretrio Especifica o nome do diretrio a ser localizado. Se voc no incluir um caminho
absoluto para o diretrio especificado, o Visual FoxPro ir procurar aquele em relao ao diretrio
padro do Visual FoxPro.

Comentrios

O diretrio padro do Visual FoxPro especificado com SET DEFAULT.







DISKSPACE( ), funo


Retorna o nmero de bytes disponvel na unidade ou volume de disco padres ou especificados.

Sintaxe

DISKSPACE([cNomeVolume])



Tipos de retorno

Numrico

Argumentos

cNomeVolume Especifica o nome da unidade de disco ou do volume para o qual o espao
disponvel retornado. Se cNomeVolume for omitido, o espao disponvel ser retornado para o
volume ou unidade de disco padro.



Comentrios

Esta funo til para determinar se h espao suficiente em disco para fazer cpias de reserva de
arquivos ou executar comandos, como SORT, que precisam de espao adicional em disco para
arquivos de trabalho temporrio.

A unidade de disco ou o volume padro so especificados com SET DEFAULT.

DISKSPACE( ) retorna -1 se houver um erro na leitura da unidade de disco ou volume. Em algumas
redes, o valor retornado por DISKSPACE( ) pode no ser exato para grandes unidades de rede.


DISKSPACE( ), exemplo de funo

O exemplo a seguir utiliza DISKSPACE( ) para determinar se h espao suficiente em disco
disponvel para executar uma classificao.

*** Check DISKSPACE before sort ***
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer

*** Get size of table header ***
gnTableHead = HEADER( )

*** Calculate size of table ***
gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)
IF DISKSPACE( ) > (gnFileSize * 3)
WAIT WINDOW 'Espao suficiente em disco para classificao.'
ELSE
WAIT WINDOW 'Espao insuficiente em disco. A classificao no pode ser feita.'

ENDIF





DISPLAY DATABASE, comando


Exibe informaes sobre bancos de dados ou campos atuais, conexes definidas, tabelas ou
visualizaes do banco de dados atual.

Sintaxe

DISPLAY DATABASE
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]



Argumentos

TO PRINTER [PROMPT] Direciona a sada de DISPLAY DATABASE para uma impressora.

No Visual FoxPro, voc pode incluir a clusula opcional PROMPT para exibir a caixa de dilogo
Imprimir antes do incio da impresso. Coloque PROMPT logo depois de TO PRINTER.

TO FILE NomeArquivo Direciona a sada de DISPLAY DATABASE para o arquivo especificado
com NomeArquivo. Caso o arquivo j exista e SET SAFETY esteja ativado (ON), o Visual FoxPro
exibir um aviso perguntando se voc deseja sobrescrever o arquivo.

NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usurio.



Comentrios

Utilize DBGETPROP( ) para retornar maiores informaes sobre o banco de dados atual.

DISPLAY DATABASE, exemplo de comando

O exemplo a seguir cria um banco de dados denominado people. Uma tabela denominada friends
criada, sendo automaticamente acrescentada ao banco de dados. DISPLAY TABLES utilizado
para exibir as tabelas do banco de dados e DISPLAY DATABASES usado para exibir
informaes sobre essas tabelas.

CREATE DATABASE people
CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES && Exibe as tabelas do banco de dados
DISPLAY DATABASES && Exibe informaes sobre as tabelas

















DISPLAY FILES, comando


Exibe informaes sobre arquivos.

Sintaxe

DISPLAY FILES
[ON Unidade]
[LIKE EstruturaArquivo]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]



Argumentos

ON Unidade Especifica a unidade ou volume onde residem os arquivos.

LIKE EstruturaArquivo Especifica uma condio que faz com que o Visual FoxPro exiba
informaes apenas sobre arquivos com padro correspondentes da estrutura EstruturaArquivo. O
padro da estrutura pode conter curingas como ? e *.

TO PRINTER [PROMPT] Inclua TO PRINTER para enviar a sada de DISPLAY FILES para a
impressora.

No Visual FoxPro, voc pode incluir a clusula opcional PROMPT para exibir uma caixa de
dilogo antes do incio da impresso. Nela, voc pode ajustar as definies da impressora, incluindo
o nmero de cpias e de pginas a serem impressas. As definies da impressora que podem ser
ajustadas dependem do driver de impressora instalado atualmente. Coloque a palavra-chave
PROMPT logo aps TO PRINTER.

TO FILE NomeArquivo Inclua TO FILE NomeArquivo para enviar a sada de DISPLAY FILES
para o arquivo especificado com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver
ativado (ON), ser exibida uma pergunta para saber se voc deseja ou no substitu-lo.



Comentrios

Utilize DISPLAY FILES para exibir informaes sobre arquivos em um disco. Voc pode exibir
informaes sobre todos os arquivos de uma determinada unidade de disco, volume, diretrio ou
pasta, ou apenas arquivos que correspondam a um padro de estrutura que contenha curingas como
? e *.

A emisso de DISPLAY FILES sem qualquer argumento exibe informaes sobre as tabelas do
diretrio atual. As informaes exibidas incluem :

O nome da tabela.
O nmero de registros na tabela.
Data e hora da ltima atualizao da tabela.
O tamanho de cada tabela em bytes.
Se cada tabela faz parte de um banco de dados.



DISPLAY FILES, exemplo de comando



O exemplo a seguir exibe os nomes dos bancos de dados do diretrio EXEMPLOS\DADOS.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')

CLEAR
DISPLAY FILES LIKE *.DBC






























DISPLAY MEMORY, comando


Exibe o contedo atual das matrizes e variveis de memria.

Sintaxe

DISPLAY MEMORY
[LIKE EstruturaArquivo]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]



Argumentos

LIKE EstruturaArquivo Exibe informaes sobre variveis e matrizes que correspondem a
EstruturaArquivo do padro de estrutura. Se voc incluir LIKE EstruturaArquivo, o Visual FoxPro
exibir apenas o contedo das matrizes e variveis de memria que correspondam a
EstruturaArquivo. EstruturaArquivo aceita curingas como ? e *. Por exemplo, para exibir todas as
variveis de memria que comecem com a letra A, emita:

DISPLAY MEMORY LIKE A*



TO PRINTER [PROMPT] Direciona a sada de DISPLAY MEMORY para a impressora.

Voc pode incluir a clusula PROMPT opcional para exibir uma caixa de dilogo antes do incio da
impresso. Nessa caixa de dilogo, voc pode ajustar as definies da impressora, incluindo o
nmero de cpias e de pginas a serem impressas. As definies da impressora a serem ajustadas
dependem do driver de impressora atualmente instalado. Coloque a palavra-chave PROMPT logo
aps TO PRINTER.

TO FILE NomeArquivo Direciona a sada de DISPLAY MEMORY para o arquivo especificado
com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado, ser exibida uma
pergunta para saber se voc deseja ou no sobrescrever o arquivo.

NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela definida
pelo usurio que est ativa.



Comentrios

DISPLAY MEMORY exibe o nome, tipo, contedo e status de todas as matrizes de variveis e
variveis definidas atualmente. Alm disso, exibe o nmero de variveis definidas, o nmero de
bytes utilizados e o nmero de variveis adicionais disponveis. Observe que o nmero de bytes
utilizados representa a memria utilizada por variveis do tipo caractere. As variveis do tipo de
caractere so o nico tipo de variveis que precisam de memria adicional, alm daquela alocada
pela contagem de variveis especificada com o item de configurao MVCOUNT.

Tambm so exibidas informaes sobre variveis do sistema, menus, barras de menus, ttulos de
menus e janelas.


DISPLAY MEMORY, exemplo do comando

No exemplo a seguir, muitas variveis so criadas e atribudas a valores. DISPLAY MEMORY
exibe primeiro todas as variveis que comeam com sam e, em seguida, exibe todas as variveis
que contm cinco letras e terminam com exit.

STORE 'Adeus' TO sample1
STORE 'Al' TO sample2
STORE .T. TO texit
STORE .F. TO mexit

CLEAR
DISPLAY MEMORY LIKE sam*
DISPLAY MEMORY LIKE ?exit
























DISPLAY STATUS, comando


Exibe o status do ambiente do Visual FoxPro.

Sintaxe

DISPLAY STATUS
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]



Argumentos

TO PRINTER [PROMPT] Direciona a sada de DISPLAY STATUS para uma impressora.

Voc pode incluir a clusula PROMPT opcional para exibir uma caixa de dilogo de impresso
antes do incio da impresso. Nessa caixa de dilogo, voc pode ajustar as definies da impressora,
incluindo o nmero de cpias e de pginas a serem impressas. As definies da impressora que
podem ser ajustadas dependem do driver de impressora atualmente instalado. Coloque a palavra-
chave PROMPT logo aps TO PRINTER.

TO FILE NomeArquivo Direciona a sada de DISPLAY STATUS para o arquivo especificado
com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado, ser exibida uma
pergunta para saber se voc deseja ou no sobrescrever o arquivo.

NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usurio.



Comentrios

Esse formulrio de DISPLAY lista informaes sobre o ambiente atual do Visual FoxPro. As
categorias de informaes e as informaes sobre cada categoria so as seguintes.

Informaes sobre arquivos de ndice e tabelas:

Tabelas abertas
Arquivos memo abertos
Aliases de tabela
Pginas de cdigo de tabela
Relacionamentos de tabela
ndices ativos
Chaves de arquivos de ndice
A marca ou arquivo de ndice controlador
Arquivos compostos estruturais abertos
Marcas de ndice compostas abertas
O status do atributo compartilhado de cada tabela aberta
Os registros bloqueados atualmente em cada tabela

A definio EXCLUSIVE de uso
A definio LOCK
A definio MULTILOCKS
O valor SET REFRESH
O valor SET REPROCESS



Informaes sobre o arquivo de baixo nvel aberto:

Arquivos de baixo nvel abertos
O nmero do identificador de arquivo para cada arquivo de baixo nvel
A posio do ponteiro de arquivo para cada arquivo de baixo nvel
Atributos de leitura e gravao para cada arquivo de baixo nvel



Informaes adicionais sobre o ambiente do Visual FoxPro:

O arquivo de procedimentos em uso
O tipo de processador
O caminho do Visual FoxPro
O diretrio ou pasta padro do Visual FoxPro
O destino da impresso
A definio das margens
A rea de trabalho atual
Definies do comando SET
Mdulos binrios carregados atualmente
Informaes de DDE no Visual FoxPro
Pgina de cdigo atual
Seqncia de ordenao atual

Pgina de cdigo do compilador
Formato de data atual
Combinao de teclas da macro de teclado
Modo como os parmetros UDF so passados
Opes de MesclagemTexto
Funes registradas da biblioteca compartilhada, como aquelas das bibliotecas de vnculo
dinmico (DLLs, Dynamic-Link Libraries) do Windows ou das bibliotecas Apple Shared Library
Manager (ASLM) ou Code Fragment Manager (CFM) do Macintosh.



DISPLAY STRUCTURE, comando


Exibe a estrutura de um arquivo de tabela.

Sintaxe

DISPLAY STRUCTURE
[IN nreaTrabalho| cAliasTabela]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]



Argumentos

IN nreaTrabalho| cAliasTabela Exibe a estrutura da tabela em uma rea de trabalho diferente
das reas de trabalho atuais. nreaTrabalho especifica o nmero da rea de trabalho e
cAliasTabela, o alias da tabela.

TO PRINTER [PROMPT] Direciona a sada de DISPLAY STRUCTURE para a impressora.

Voc pode incluir a clusula PROMPT opcional para exibir uma caixa de dilogo antes do incio da
impresso. Nessa caixa de dilogo, voc pode ajustar as definies da impressora, incluindo o
nmero de cpias e de pginas a serem impressas. As definies da impressora que podem ser
ajustadas dependem do driver de impressora instalado atualmente. Coloque a palavra-chave
PROMPT logo aps TO PRINTER.

TO FILE NomeArquivo Direciona a sada de DISPLAY STRUCTURE para o arquivo
especificado com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado, ser
exibida uma pergunta para saber se voc deseja ou no sobrescrever o arquivo.

NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usurio.



Comentrios

Utilize DISPLAY STRUCTURE para exibir a estrutura dos campos de uma tabela. O nome de cada
campo da tabela exibido junto com seu tipo e comprimento. Se um campo for do tipo Numrico,
Duplo ou Flutuante, ser exibido o nmero de casas decimais do campo. Tambm ser exibido o
valor nulo aceito em cada campo.

DISPLAY STRUCTURE tambm exibe o nmero atual de registros na tabela e a data de sua ltima
atualizao. Se a tabela tiver um campo Memo associado, ser exibido o tamanho de bloco do
campo Memo. O comprimento total de todos os campos tambm ser exibido, assim como a pgina
de cdigo da tabela.

A tabela pode ter um ndice composto estrutural que aberto com a tabela. Se uma marca desse
ndice tiver o mesmo nome que um campo da tabela, a ordem da marca (ascendente ou
descendente) e a seqncia de ordenao da marca sero exibidas prximas ao nome do campo.

Se SET FIELDS for utilizado para limitar o acesso aos campos da tabela, um colchete (>) ser
exibido ao lado dos nomes dos campos que podem ser acessados.

DISPLAY STRUCTURE, exemplo do comando

No exemplo a seguir, a tabela customer no banco de dados testdata aberta. DISPLAY
STRUCTURE utilizado para exibir a estrutura da tabela.

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

CLEAR
DISPLAY STRUCTURE

























DISPLAY TABLES, comando


Exibe nomes e informaes sobre todas as tabelas contidas no banco de dados atual.

Sintaxe

DISPLAY TABLES
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]



Argumentos

TO PRINTER [PROMPT] Direciona a sada de DISPLAY TABLES para uma impressora.

Voc pode incluir PROMPT para exibir a caixa de dilogo Imprimir antes do incio da impresso.
Coloque a palavra-chave PROMPT logo aps TO PRINTER.

TO FILE NomeArquivo Direciona a sada de DISPLAY TABLES para o arquivo em disco
especificado com NomeArquivo. Caso o arquivo j exista e SET SAFETY esteja ativado (ON), o
Visual FoxPro exibir um aviso perguntando se voc deseja sobrescrever o arquivo.

NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usurio.



Comentrios

As informaes retornadas formam um subconjunto de informaes exibidas com DISPLAY
STATUS. No entanto, as informaes exibidas com DISPLAY TABLES contm apenas
informaes relacionadas a tabelas, exibindo as informaes, independente de as tabelas estarem ou
no abertas.

As seguintes informaes so exibidas:

Nome da tabela
Caminho da tabela



DISPLAY TABLES, exemplo do comando

O exemplo a seguir abre a tabela customer no banco de dados testdata. DISPLAY TABLES
utilizado para exibir informaes sobre as tabelas do banco de dados.

CLOSE DATABASES
SET PATH TO (SYS(2004) + 'samples\data\') && Define o caminho para o banco de dados
OPEN DATABASE testdata && Abre o banco de dados testdata

CLEAR
DISPLAY TABLES && Exibe informaes sobre as tabelas no banco de dados






DISPLAY, comando


Exibe informaes sobre a tabela atual na janela principal do Visual FoxPro ou em uma janela
definida pelo usurio.

Sintaxe

DISPLAY
[[FIELDS] ListaCampos]
[Escopo] [FOR lExpresso1] [WHILE Expresso2]
[OFF]
[NOCONSOLE]
[NOOPTIMIZE]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]



Argumentos

FIELDS ListaCampos Especifica os campos a serem exibidos. Se voc omitir FIELDS
ListaCampos, todos os campos da tabela sero exibidos, como padro.

O contedo do campo Memo no exibido, a menos que o nome deste campo esteja explicitamente
includo na lista de campos. Sua largura apresentada determinada por SET MEMOWIDTH

Escopo Especifica o intervalo de registros a serem exibidos. Apenas os registros dentro do
intervalo sero exibidos. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD
nNmeroRegistro e REST. Os comandos que incluem Escopo operam apenas na tabela da rea de
trabalho ativa.

Para obter maiores informaes sobre as clusulas de escopo, consulte o tpico Clusulas de
escopo.

O escopo-padro para DISPLAY o registro atual (NEXT 1).

FOR lExpresso1 Especifica que apenas os registros que satisfazem a condio lgica lExpresso1
sero exibidos. Isso permite que voc extraia os registros no desejados.

Rushmore otimiza consultas criadas com DISPLAY ... FOR se lExpresso1 for uma expresso
otimizvel. Para obter o melhor desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor.

WHILE lExpresso2 Especifica uma condio atravs da qual os registros sero exibidos quando a
expresso lgica lExpresso2 resultar em verdadeiro (.T.).

OFF Suprime a exibio dos nmeros de registro. Se voc omitir OFF, o nmero de registro ser
exibido antes de cada registro.

NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usurio.

NOOPTIMIZE Desativa a otimizao Rushmore de DISPLAY.

Para maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia Rushmore
no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.

TO PRINTER [PROMPT] Envia a sada de DISPLAY para a impressora

No Visual FoxPro, , voc pode incluir a clusula PROMPT opcional para exibir uma caixa de
dilogo antes do incio da impresso. Nela, voc pode ajustar as definies da impressora, incluindo
o nmero de cpias e de pginas a serem impressas. As definies da impressora que podem ser
ajustadas dependem do driver de impressora instalado no momento. Coloque PROMPT logo aps
TO PRINTER.

TO FILE NomeArquivo Envia a sada de DISPLAY para o arquivo especificado com
NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado (ON), ser exibida uma
pergunta para saber se voc deseja ou no sobrescrever o arquivo.



Comentrios

DISPLAY exibe o contedo dos registros e os resultados de expresses para a tabela atual. Se
houver mais informaes do que podem ser exibidas na janela, a primeira tela de informaes ser
exibida e o Visual FoxPro, colocado em pausa. Pressione qualquer tecla ou clique sobre qualquer
local para ver a prxima tela de informaes. DISPLAY semelhante a LIST, com exceo de que
LIST exibe as mesmas informaes em um fluxo contnuo sem ser colocado em pausa.

DISPLAY tambm pode ser utilizado para exibir os resultados de expresses, que podem consistir
em combinaes de literais, variveis de memria, elementos de matriz, campos e campos Memo.
Os nomes de campos e as expresses sero exibidas se SET HEADINGS estiver ativado (ON).

DISPLAY, exemplo de comando

O exemplo a seguir abre a tabela customer do banco de dados testdata. O contedo do primeiro
registro exibido.

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

CLEAR
DISPLAY FIELD cust_id, company, contact OFF NEXT 10


























DMY( ), funo


Retorna uma expresso de caractere no formato dia-ms-ano(por exemplo, 31 Maio 1996) a partir
de uma expresso de data ou data e hora. O nome do ms no abreviado.

Sintaxe

DMY(dExpresso | tExpresso)



Tipos de retorno

Caractere

Argumentos

dExpresso Especifica a expresso de data a partir da qual a funo DMY( ) retorna uma
seqncia de caracteres no formato dia-ms-ano.

tExpresso Especifica a expresso de data e hora a partir da qual a funo DMY( ) retorna uma
seqncia de caracteres no formato dia-ms-ano.



Comentrios

Se SET CENTURY estiver desativado (OFF), DMY( ) retornar uma seqncia de caracteres no
formato dd ms yy ano (por exemplo, 16 Fevereiro 96). Se SET CENTURY estiver ativado (ON), o
formato ser dd-ms-aaaa (por exemplo, 16 Fevereiro 1996).

DMY( ), exemplo da funo

CLEAR
SET CENTURY OFF
? DMY(DATE( ))
SET CENTURY ON
? DMY(DATE( ))

























DO CASE ... ENDCASE, comando


Executa o primeiro conjunto de comandos cuja expresso condicional resulta em verdadeiro (.T.).

Sintaxe

DO CASE
CASE lExpresso1
Comandos
[CASE lExpresso2
Comandos
...
CASE lExpressoN
Comandos]
[OTHERWISE
Comandos]
ENDCASE



Argumentos

CASE lExpresso1 Comandos ... Quando a primeira expresso CASE verdadeira (.T.) localizada,
o conjunto de comandos que a acompanha executado. A execuo do conjunto de comandos
continua at que a prxima clusula CASE ou ENDCASE seja localizada. A execuo retomada,
ento, pelo primeiro comando seguinte a ENDCASE.

Se uma expresso CASE for falsa (.F.), o conjunto de comandos seguintes a ela at a prxima
clusula CASE ser ignorado.

Apenas um conjunto de comandos executado. o primeiro conjunto de comandos cuja expresso
CASE resulta em verdadeiro (.T.). Qualquer expresso CASE verdadeira (.T.) posterior ser
ignorada.

OTHERWISE Comandos Se todas as expresses CASE resultarem em falso (.F.), OTHERWISE
determinar se um conjunto de comandos adicionais ser executado.

Se voc incluir OTHERWISE, os comandos que acompanham OTHERWISE sero
executados e a execuo saltar para o primeiro comando que acompanha ENDCASE.
Se voc omitir OTHERWISE, a execuo saltar para o primeiro comando que acompanha
ENDCASE.



Comentrios

DO CASE utilizado para executar um conjunto de comandos do Visual FoxPro, baseado no valor
de uma expresso lgica. Quando DO CASE executado, as expresses lgicas sucessivas so
avaliadas; os valores das expresses determinam o conjunto de comandos que ser executado.

Podem ser colocados comentrios na mesma linha, aps DO CASE e ENDCASE. Os comentrios
so ignorados durante a compilao e execuo do programa.

DO CASE ... ENDCASE, exemplo de comando

Neste exemplo, o Visual FoxPro avalia cada clusula CASE at que a varivel MONTH seja
encontrada em uma das listas. A seqncia apropriada armazenada na varivel rpt_title e a
estrutura DO CASE fechada.

STORE CMONTH(DATE( )) TO month && O ms atual

DO CASE && Comea o loop

CASE INLIST(month,'Janeiro','Fevereiro','Maro')
STORE 'Ganhos no primeiro trimestre' TO rpt_title

CASE INLIST(month,'Abril','Maio','Junho')
STORE 'Ganhos no segundo trimestre' TO rpt_title

CASE INLIST(month,'Julho','Agosto','Setembro')
STORE 'Ganhos no terceiro trimestre' TO rpt_title

OTHERWISE
STORE 'Ganhos no quarto trimestre' TO rpt_title

ENDCASE && Finaliza o loop
WAIT WINDOW rpt_title NOWAIT
















DO WHILE ... ENDDO, comando


Executa um conjunto de comandos em um loop condicional.

Sintaxe

DO WHILE lExpresso
Comandos
[LOOP]
[EXIT]
ENDDO



Argumentos

lExpresso Especifica uma expresso lgica cujo valor determina se os comandos entre DO
WHILE e ENDDO so executados. Se lExpresso for verdadeiro (.T.), o conjunto de comandos ser
executado.

Comandos Especifica o conjunto de comandos do Visual FoxPro a ser executado se lExpresso for
verdadeiro (.T.).

LOOP Retorna o controle do programa diretamente para DO WHILE. LOOP pode ser colocado
em qualquer lugar entre DO WHILE e ENDDO.

EXIT Transfere o controle do programa de dentro do loop DO WHILE para o primeiro comando
aps ENDDO. EXIT pode ser colocado em qualquer lugar entre DO WHILE e ENDDO.



Comentrios

Os comandos entre DO WHILE e ENDDO so executados enquanto a expresso lgica lExpresso
permanecer como verdadeira (.T.). Cada instruo DO WHILE deve ter uma instruo ENDDO
correspondente.

Os comentrios podem ser colocados depois de DO WHILE e ENDDO na mesma linha. Os
comentrios sero ignorados durante a compilao e execuo do programa.


DO WHILE ... ENDDO, exemplo do comando

No exemplo a seguir, o nmero de produtos em estoque com preos acima de $20 totalizado no
loop DO WHILE at que seja encontrado o final do arquivo (EOF). O loop DO WHILE executado
e o total exibido.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela Products
SET TALK OFF
gnStockTot = 0

DO WHILE .T. && Inicia o loop
IF EOF( )
EXIT
ENDIF
IF unit_price < 20
SKIP
LOOP
ENDIF
gnStockTot = gnStockTot + in_stock
SKIP
ENDDO && Finaliza o loop

CLEAR
? 'O total de itens em estoque so avaliados em aproximadamente 20 dlares:'
?? gnStockTot





























DO, comando


Executa um procedimento ou programa do Visual FoxPro.

Sintaxe

DO NomePrograma1 | NomeProcedimento
[IN NomePrograma2]
[WITH ListaParmetros]



Argumentos

NomePrograma1 Especifica o nome do programa a ser executado.

Se voc no incluir uma extenso com o programa que executar, o Visual FoxPro procurar e
executar essas verses do programa na seguinte ordem:

.EXE (verso executvel)
.APP (um aplicativo)
.FXP (verso compilada)
.PRG (programa)

Para utilizar DO, a fim de executar um programa de menu, um programa de formulrio ou uma
consulta especfica, voc deve incluir as respectivas extenses (.MPR, .SPR ou .QPR).

NomeProcedimento Especifica o nome de um procedimento a ser executado. O Visual FoxPro
primeiro procura o procedimento no programa atualmente em execuo. Se o procedimento no
estiver localizado nesse programa, o Visual FoxPro procurar o procedimento em um arquivo de
procedimentos aberto com SET PROCEDURE.

Voc pode incluir a clusula IN NomePrograma2, avisando ao Visual FoxPro para procurar o
procedimento no arquivo que voc especificar.

Os procedimentos mltiplos, dentro de uma verso executvel (.EXE) ou de um aplicativo (.APP),
podem ter o mesmo nome. Quando voc utiliza DO para iniciar um procedimento em uma verso
executvel ou em um aplicativo, o Visual FoxPro procura apenas o programa principal do aplicativo
ou verso executvel do procedimento especificado.

IN NomePrograma2 Executa um procedimento no arquivo de programa especificado com
NomePrograma2.

Quando o arquivo localizado, o procedimento executado. Se o arquivo de programa no puder
ser localizado, ser exibida a mensagem Arquivo inexistente. Se o arquivo de programa for
localizado mas o procedimento especificado no estiver nesse arquivo, ser exibida a mensagem
Procedimento no localizado.

WITH ListaParmetros Especifica os parmetros a serem passados ao programa ou procedimento.
Os parmetros listados em ListaParmetros so expresses, variveis de memria, literais, campos
ou funes definidas pelo usurio. Como padro, os parmetros so passados aos programas e
procedimentos por referncia. Voc pode passar um parmetro por valor, colocando-o entre
parnteses.

Consulte SET UDFPARMS para obter informaes sobre como passar parmetros por valor ou
referncia. O nmero mximo de parmetros, que podem ser passados a um programa ou
procedimento 27. Para obter maiores informaes sobre como passar parmetros, consulte
LPARAMETERS e PARAMETERS.



Comentrios

DO executa um procedimento ou programa do Visual FoxPro em um programa ou arquivo de
procedimentos. O prprio arquivo de programa pode conter comandos DO adicionais, permitindo
que voc aninhe os comandos DO em at 128 nveis.

Quando voc utiliza DO para executar um programa, os comandos contidos no arquivo de programa
so executados at que ocorra uma das opes a seguir:

RETURN encontrado.
CANCEL executado.
Outro comando DO emitido.
O fim do arquivo atingido.
QUIT executado.



Quando a execuo do programa for concluda, o controle ser retornado para um dos locais a
seguir:

O programa de chamada.
A janela Comando.
O sistema operacional.



Se voc escolher Executar no menu Programa e executar um programa em um diretrio em uma
unidade de disco diferente do diretrio ou unidade de disco atual, o Visual FoxPro alterar
automaticamente a unidade de disco e o diretrio padro para o diretrio e unidade de disco que
contm o programa.
































DOW( ), funo


Retorna um valor numrico de dia da semana a partir de uma expresso de Data ou DataHora.

Sintaxe

DOW(dExpresso | tExpresso [, nPrimeiroDiaSemana])



Tipos de retorno

Numrico

Argumentos

dExpresso Especifica a expresso de Data da qual DOW( ) retorna o nmero do dia.

tExpresso Especifica a expresso de DataHora da qual DOW( ) retorna o nmero do dia.

nPrimeiroDiaSemana Especifica o primeiro dia da semana.

nPrimeiroDiaSemana pode ser um dos valores a seguir.

NPrimeiroDiaSemana Descrio

0 DOW( ) utiliza qualquer dia atualmente selecionado na caixa de listagem Comear semana
em, exibida na guia Regional da caixa de dilogo Opes.
1 Domingo. Esse o padro quando nPrimeiroDiaSemana omitido, alm de ser o primeiro
dia da semana utilizado nas verses anteriores do FoxPro.
2 Segunda-feira
3 Tera-feira
4 Quarta-feira
5 Quinta-feira
6 Sexta-feira
7 Sbado


DOW( ), exemplo da funo

STORE DATE( ) TO gdDayNum
CLEAR
? DOW(gdDayNum)
? CDOW(gdDayNum)


















DROP TABLE, comando


Remove uma tabela do banco de dados atual e a exclui do disco.

Sintaxe

DROP TABLE NomeTabela | NomeArquivo | ? [RECYCLE]



Definies

NomeTabela Especifica a tabela a ser removida do banco de dados atual e excluda do disco.

NomeArquivo Especifica uma tabela livre a ser excluda do disco.

? Exibe a caixa de dilogo Remover da qual voc pode selecionar uma tabela a ser removida do
banco de dados atual e excluda do disco.

RECYCLE Especifica que a tabela no seja imediatamente excluda do disco e seja colocada na
Lixeira do Windows 95.

Comentrios

Quando DROP TABLE emitido, todos os ndices principais, valores padro e regras de validao
associados tabela tambm so removidos. DROP TABLE tambm afeta outras tabelas no banco
de dados atual se as tabelas possurem regras ou relaes associadas tabela sendo removidas. As
regras e relaes no estaro mais vlidas quando a tabela for removida do banco de dados.

Qualquer tabela excluda com esse comando no pode ser recuperada. Mesmo que SET SAFETY
esteja ativado (ON), voc no ser avisado quando a tabela for excluda.
































DTOC( ), funo


Retorna uma data tipo Caractere a partir de uma expresso Data ou DataHora.

Sintaxe

DTOC(dExpresso | tExpresso [, 1])



Tipos de retorno

Caractere

Argumentos

dExpresso Especifica uma varivel de Data, elemento de matriz ou campo para os quais a funo
DTOC( ) retorna uma data tipo Caractere.

tExpresso Especifica uma varivel de DataHora, elemento de matriz ou campo para os quais a
funo DTOC( ) retorna uma data do tipo Caractere.

1 Retorna a data em formato adequado para indexao. Isto til para manter os registros de
tabelas em seqncia cronolgica.

Por exemplo, para ordenar os registros da tabela em uma seqncia de entrada, voc pode emitir
este comando:

INDEX ON DTOC(gdInvDate, 1) + gnInvTime TAG Timeindx



gdInvDate e gnInvTime so campos que contm a data e a hora em que os dados foram inseridos no
registro.



Comentrios

DTOC( ) retorna uma seqncia de caracteres que corresponde expresso Data ou DataHora. O
formato de data determinado por SET CENTURY e SET DATE.


DTOC( ), exemplo da funo



STORE CTOD('10/31/95') TO gdThisDate
CLEAR
? DTOC(gdThisDate)
STORE DTOC({10/31/95}+90) TO gcExpireDate
? 'Sua garantia de 90 dias expirou ', gcExpireDate
? DTOC({10/31/95},1)












DTOR( ), funo


Converte graus em radianos.

Sintaxe

DTOR(nExpresso)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica a expresso numrica cujo valor voc deseja converter em radianos. Um
ngulo expresso no formato grau:minuto:segundo deve ser convertido no seu equivalente decimal.

Comentrios

DTOR( ) converte o valor de uma expresso numrica determinada em graus em um valor
equivalente em radianos. DTOR( ) til para trabalhar com estas funes trigonomtricas do Visual
FoxPro: ACOS( ), ASIN( ), COS( ), SIN( ) e TAN( ).

Utilize RTOD( ) para converter radianos em graus.

DTOR( ), exemplo da funo

CLEAR
? DTOR(0) && Exibe 0.00
? DTOR(45) && Exibe 0.79
? DTOR(90) && Exibe 1.57
? DTOR(180) && Exibe 3.14
? COS(DTOR(90)) && Exibe 0.00






























DTOS( ), funo


Retorna uma data de seqncia de caracteres no formato aaaammdd a partir de uma expresso Data
ou DataHora especificada.

Sintaxe

DTOS(dExpresso | tExpresso)



Tipos de retorno

Caractere

Argumentos

dExpresso Especifica a expresso Data que DTOS( ) converte em uma seqncia de caracteres de
oito dgitos.

tExpresso Especifica a expresso DataHora que DTOS( ) converte em uma seqncia de
caracteres de oito dgitos.



Comentrios

Essa funo til para indexar tabelas em um campo Data ou DataHora. equivalente a DTOC( )
quando o argumento opcional 1 includo.

A seqncia de caracteres retornada por DTOS( ) no afetada por SET DATE ou SET
CENTURY.

DTOS( ), exemplo da funo

CLEAR
? DTOS(DATE( ))






























DTOT( ), funo


Retorna um valor de DataHora a partir de uma expresso Data.

Sintaxe

DTOT(dExpressoData)



Tipos de retorno

DataHora

Argumentos

dExpressoData Especifica a expresso Data da qual retornado um valor de DataHora.

Comentrios

O formato do valor de DataHora retornado por DTOT( ) depende das definies atuais de SET
DATE e SET MARK. Se no for dado um sculo, ser utilizado o sculo vinte.

DTOT( ) adiciona uma hora padro de meia-noite (12:00:00 A.M.) data para produzir um valor de
DataHora vlido.


DTOT( ), exemplo da funo

? DTOT({02/16/95}) && Exibe 02/16/95 12:00:00am

EDIT, comando


Exibe campos para edio.

Sintaxe

EDIT
[FIELDS ListaCampos]
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[FONT cNomeFonte [, nTamanhoFonte]]
[STYLE cEstiloFonte]
[FREEZE NomeCampo]
[KEY eExpresso1 [, eExpresso2]]
[LAST | NOINIT]
[LPARTITION]
[NAME NomeObjeto]
[NOAPPEND]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLINK]
[NOMENU]
[NOOPTIMIZE]
[NORMAL]
[NOWAIT]
[PARTITION nNmeroColuna [LEDIT] [REDIT]]
[PREFERENCE NomePreferncia]
[REST]
[SAVE]
[TIMEOUT nSegundos]
[TITLE cTextoTitulo]
[VALID [:F] lExpresso3 [ERROR cTextoMensagem]]
[WHEN lExpresso4]
[WIDTH nLarguraCampo]
[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]
[COLOR SCHEME nNmeroEsquema]



Argumentos

FIELDS ListaCampos Especifica os campos que iro aparecer na janela Editar. Os campos so
exibidos na ordem especificada na ListaCampos. Voc pode incluir campos de outras tabelas
relacionadas na lista de campos. Ao incluir um campo de uma tabela relacionada, coloque o alias da
tabela e um ponto antes do nome do campo.

Se voc omitir FIELDS, todos os campos da tabela sero exibidos na ordem em que aparecem na
estrutura da tabela.

A lista de campos pode especificar qualquer combinao de campos ou campos calculados,
incluindo campos de tabelas abertas em outras reas de trabalho. A sintaxe da lista de campos :

NomeCampo1
[:R]
[:nLarguraColuna]
[:V = lExpresso1 [:F] [:E = cTextoMensagem]]
[:P = cCdigosFormato]
[:B = eLimiteInferior, eLimiteSuperior [:F]]
[:H = cTextoCabealho]
[:W = lExpressao2]
[, NomeCampo2 [:R]...]



Campos calculados

A lista de campos pode conter instrues para a criao de campos calculados. Um campo calculado
contm dados somente para leitura criados com uma expresso. Essa expresso pode assumir
qualquer forma, mas precisa ser uma expresso vlida do Visual FoxPro.

A sintaxe da instruo utilizada para criar um campo calculado :

NomeCampoCalculado = eExpresso

Este exemplo cria um campo calculado chamado location:

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



A lista de campos da clusula FIELDS inclui oito opes, o que permite um gerenciamento especial
dos campos exibidos na janela Editar.

:nLarguraColuna Especifica o tamanho para exibio de um campo em colunas. O valor de :
nLarguraColuna no afeta o tamanho do campo na tabela; ele s altera a forma de exibio do
campo na janela Editar

:R No exemplo a seguir, a janela Editar aberta com os campos cust_id e company. O campo
cust_id somente para leitura, no podendo ser alterado.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
EDIT FIELDS cust_id:R, company



:V = lExpresso1 Especifica uma opo de verificao que executa validao de dados em nvel de
campos na janela Editar. Se lExpresso1 retornar verdadeiro (.T.) quando voc mover o cursor para
fora do campo, a entrada de dados no campo ser considerada correta e o cursor passar para o
prximo campo.

Se lExpresso1 retornar falso (.F.), a entrada de dados ser considerada incorreta, o cursor
permanecer no campo e ser exibida uma mensagem. Se lExpresso1 retornar 0, a entrada de
dados ser considerada incorreta e o cursor permanecer no campo, mas no ser exibida uma
mensagem de erro.

Como padro, lExpresso1 s avaliada quando o campo modificado. Para forar uma
verificao, inclua a opo :F.

Voc pode exibir sua prpria mensagem de erro incluindo a opo :E.

A opo de verificao no executada para campos Memo.

:F Especifica uma opo de validao forada que determina se a expresso na opo de
verificao (lExpresso1) ser avaliada quando voc mover o cursor para fora de um campo. Se :F
no for includo, lExpresso1 s ser avaliada se forem feitas alteraes no campo. Se :F for
includo, lExpresso1 ser avaliada, mesmo que o campo no seja modificado

:E = cTextoMensagem Exibe uma mensagem de erro especificada com cTextoMensagem em vez
da mensagem padro do sistema.

Se a expresso de validao :V = lExpresso1 for verdadeira (.T.), o cursor sair normalmente do
campo. Se a expresso for falsa (.F.), o cursor permanecer no campo e uma mensagem de erro ser
exibida.

Se a expresso de validao :V = lExpresso1 for 0, no ser exibida uma mensagem de erro e o
cursor permanecer no campo que est sendo validado, permitindo que voc exiba suas prprias
mensagens de erro em rotinas de validao.

A mensagem de erro s ser exibida se SET NOTIFY estiver ativado (ON). Uma campainha ser
ouvida se SET BELL estiver ativado (ON).

O exemplo a seguir abre a tabela products e exibe os campos product_id e prod_name. Digite um
valor superior a 100 no campo product_id para executar a validao do campo.

:V especifica o critrio de validao. :F fora a verificao da validao, quer os dados sejam ou
no alterados. :E substitui a mensagem de erro do sistema do Visual FoxPro por uma mensagem de
erro definida pelo usurio.

No Visual FoxPro, a mensagem de erro exibida na barra de status, na parte inferior da janela
principal do Visual FoxPro.

Pressione ESC para fechar a janela Editar.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela products
IF _WINDOWS OR _MAC
SET STATUS BAR ON
ENDIF
USE products
EDIT FIELDS in_stock :V = in_stock < 100 ;
:F ;
:E = 'The stock amount must be less than 100'



:P = cCdigosFormato Especifica uma opo de figura que permite criar um modelo de edio
especificado com cCdigosFormato, que controla a exibio e entrada de dados para cada campo
em uma janela Editar.

Para obter maiores informaes sobre a utilizao de cdigos de edio de figuras, consulte as
propriedades Format e InputMask.

O exemplo a seguir utiliza a opo de figura para permitir que somente dados numricos em um
formato especfico sejam digitados no campo unit_price:

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



:B = eLimiteInferior, eLimiteSuperior [:F] Especifica um conjunto de limites entre os quais os
dados precisam estar. As expresses de limite eLimiteInferior e eLimiteSuperior precisam
corresponder ao tipo de dados do campo e no podem ser nomes de funes definidas pelo usurio.
Se os dados digitados no estiverem entre eLimiteInferior e eLimiteSuperior, uma mensagem do
sistema ser exibida, indicando o intervalo entre o qual os dados precisam estar.

Como padro, os dados digitados s sero comparados com os valores dos limites se voc alterar o
contedo do campo. Para forar uma comparao com os valores dos limites, inclua a opo de
validao forada (:F).

O exemplo a seguir garante que o valor do campo in_stock fique entre 1 e 100. Pressione ESC para
fechar a janela Editar.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela products
EDIT FIELDS in_stock :B = 1, 100 :F



:H = cTextoCabealho Especifica uma opo de cabealho (:H) que permite a substituio dos
nomes de campo padro por seus prprios cabealhos, especificados com cTextoCabealho. Como
padro, os nomes de campos so posicionados do lado esquerdo dos campos na janela Editar.

O exemplo a seguir fornece cabealhos definidos pelo usurio para os campos exibidos.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela products
EDIT FIELDS prod_name :H = 'Nome Produto:', ;
unit_price :H = 'Preo por Unidade:'



:W = lExpresso2 Especifica uma opo WHEN que permite impedir, condicionalmente, que o
cursor seja movido para um campo baseado no valor da expresso lgica lExpresso
. (:W) avalia lExpresso. Se lExpresso2 retornar um valor falso, (.F.), voc no poder mover o
cursor para o campo. Se lExpresso2 retornar um valor verdadeiro (.T.), voc poder mover o
cursor para o campo. Funes definidas pelo usurio so aceitas em lExpresso2.

proibido mover o cursor em todos os campos se o campo atual estiver marcado como somente
para leitura. Isso ocorre somente quando todos os campos contm uma clusula WHEN cujo retorno
falso.

Escopo Especifica um intervalo de registros exibido na janela Editar. As clusulas de escopo so:
ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Comandos que incluem Escopo
funcionam somente na tabela da rea de trabalho ativa. O escopo padro para EDIT ALL, isto ,
todos os registros.

Para obter maiores informaes, consulte Clusulas de escopo.

FOR lExpresso1 Especifica que somente os registros que satisfazem a condio lgica
lExpresso1 so exibidos na janela Editar. Isso permite que voc exclua os registros indesejados.

Rushmore otimizar uma consulta EDIT FOR se lExpresso1 for uma expresso otimizvel. Para
obter melhor desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.

WHILE lExpresso2 Especifica uma condio em que os registros so exibidos na janela Editar
enquanto a expresso lgica lExpresso2 retorna um valor verdadeiro (.T.).

FONT cNomeFonte [, nTamanhoFonte] Especifica o nome e o tamanho da fonte da janela Editar.
A expresso de caracteres cNomeFonte especifica o nome da fonte e a expresso numrica
nTamanhoFonte especifica o tamanho da fonte. Por exemplo, a clusula a seguir especifica a fonte
Courier de 16 pontos para os campos exibidos na janela Editar:

FONT 'Courier',16



Se voc incluir a clusula FONT, mas omitir o tamanho da fonte nTamanhoFonte, uma fonte de 10
pontos ser utilizada na janela Editar.

Se voc omitir a clusula FONT, a fonte MS Sans Serif de 8 pontos ser utilizada. Se a fonte
especificada no estiver disponvel, uma fonte com caractersticas semelhantes ser utilizada em seu
lugar.

STYLE cEstiloFonte Especifica o estilo da fonte da janela Editar no Visual FoxPro. Se voc omitir
a clusula STYLE, o estilo de fonte normal ser utilizado.

Se o estilo da fonte especificado no estiver disponvel, um estilo de fonte com caractersticas
semelhantes ser utilizado em seu lugar.

Caractere Estilo da fonte

B Negrito
I Itlico
N Normal
O Contorno
Q Opaco
S Sombra
- Riscado
T Transparente
U Sublinhado
Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fonte. O
exemplo a seguir abre a janela Editar e utiliza uma fonte sublinhada:

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
IF _WINDOWS
EDIT FIELDS contact FONT 'System', 15 STYLE 'NU'
ENDIF
IF _MAC
EDIT FIELDS contact FONT 'Geneva', 14 STYLE 'NU'
ENDIF



FREEZE NomeCampo Permite que alteraes sejam feitas somente em um campo especificado
com NomeCampo na janela Editar. Os campos restantes so exibidos, mas no podem ser editados.

KEY eExpresso1 [, eExpresso2] Limita o escopo dos registros exibidos na janela Editar. Com
KEY, voc pode especificar um valor-chave de ndice (eExpresso1) ou um intervalo de valores-
chave (eExpresso1, eExpresso2) para os registros exibidos na janela Editar. A tabela tem que ser
indexada e o valor ou valores-chave de ndice includos na clusula KEY devem ter o mesmo tipo
de dados que a expresso de ndice do arquivo de ndice mestre ou marca mestre.

No exemplo a seguir, somente registros com cdigos postais entre 10.000 e 30.000 so exibidos na
janela Editar:

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
SET ORDER TO postalcode
EDIT KEY '10000', '30000'



LAST | NOINIT Salva qualquer alterao de configurao feita na aparncia de uma janela Editar.
As alteraes so salvas no arquivo FOXUSER e podem incluir alteraes feitas na lista de campos,
no tamanho de cada campo e na localizao e tamanho da janela Editar. Para obter maiores
informaes sobre este arquivo, consulte SET RESOURCE.

Se voc emitir EDIT com a clusula LAST, a janela Editar ser aberta com a mesma configurao
que foi salva pela ltima vez no arquivo FOXUSER. Isso restaura a janela Editar anterior, criada
com o ltimo EDIT. Se o ltimo comando EDIT emitido na janela Comando tiver includo uma
longa lista de clusulas, emita EDIT LAST para no precisar digitar o comando novamente.

Alteraes na configurao da janela Editar feitas na sesso atual no sero salvas se voc sair de
EDIT pressionando CTRL+Q.

LPARTITION Coloca o cursor no primeiro campo da partio esquerda da janela Editar. Pode-se
dividir a janela Editar nas parties esquerda e direita, incluindo-se a clusula PARTITION. Como
padro, o cursor ser colocado no primeiro campo da partio direita quando a janela Editar for
aberta.

O cursor ser posicionado na partio direita da janela Editar se voc incluir LPARTITION sem a
clusula PARTITION.

NAME NomeObjeto Cria uma referncia de objeto para a janela Editar, permitindo a voc
manipular a janela Editar com propriedades orientadas a objetos disponveis para o controle Grid.

Para obter informaes adicionais sobre programao orientada a objetos no Visual FoxPro,
consulte o captulo 3, Programao orientada a objetos, no Guia do Desenvolvedor. Para obter
maiores informaes sobre as propriedades do controle Grid que podem ser especificadas para uma
janela Editar criada com a clusula NAME, consulte o tpico Controle Grid.

NOAPPEND Impede que o usurio adicione registros tabela pressionando CTRL+Y ou
escolhendo Modo de incluso no menu Exibir.

Importante A incluso de NOAPPEND no impede que voc inclua o registro de uma rotina
(criada com VALID, WHEN ou ON KEY LABEL) enquanto estiver na janela Editar.

NODELETE Impede que registros sejam marcados para excluso na janela Editar. Como padro,
um registro pode ser marcado para excluso quando voc pressiona CTRL+T, escolhe Alternar
marca de excluso ou clica na coluna mais esquerda do registro a ser excludo.

Importante A incluso de NODELETE no impede que voc marque um registro para excluso em
uma rotina (criada com VALID, WHEN ou ON KEY LABEL) enquanto estiver na janela Editar.

NOEDIT | NOMODIFY Impede que um usurio modifique a tabela. NOEDIT e NOMODIFY so
idnticos. Se voc incluir uma dessas clusulas, poder pesquisar ou procurar registros na tabela,
mas no poder edit-la. No entanto, poder incluir e excluir registros.


NOLINK Desvincula parties na janela Editar. Como padro, as parties esquerda e direita da
janela Editar esto vinculadas; quando voc rola uma partio, a outra partio tambm rolada.

NOMENU Remove da barra de menus do sistema o ttulo de menu Tabela do Visual FoxPro,
impedindo o acesso ao menu Editar.

NOOPTIMIZE Desativa a otimizao Rushmore de EDIT.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore na Ajuda ou o captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.

NORMAL Abre a janela Editar com suas definies padro normais, como cores, tamanho,
posio, ttulo e opes de controle (GROW, FLOAT, ZOOM e assim por diante). Se voc omitir
NORMAL e a janela de sada atual for uma janela definida pelo usurio com suas prprias
definies, a janela Editar tambm assumir as definies feitas pelo usurio.

NOWAIT Continua a execuo do programa quando a janela Editar aberta. O programa no
espera que a janela Editar seja fechada, mas continua executando na linha do programa,
imediatamente aps a linha do programa que contm EDIT NOWAIT. Se voc omitir NOWAIT,
quando EDIT for emitido em um programa, uma janela Editar ser aberta e a execuo do programa
ser interrompida at que ela seja fechada.

NOWAIT s pode ser acessado a partir de um programa. A incluso de NOWAIT ao emitir EDIT
na janela Comando no tem efeito.

PARTITION nNmeroColuna Divide uma janela Editar nas parties esquerda e direita com
nNmeroColuna especificando o nmero da coluna da barra de diviso. Por exemplo, se
nNmeroColuna for 20, a barra de diviso ser posicionada na coluna 20 da janela Editar.

LEDIT Especifica que a partio esquerda da janela Editar aparece no modo Pesquisa.

REDIT Especifica que a partio direita da janela Editar aparece no modo Pesquisa. O exemplo a
seguir abre uma janela Editar, com a barra de diviso posicionada na coluna 20 e a partio direita
aberta no modo Pesquisa.

Inclua as duas palavras-chave para abrir ambas as parties no modo Pesquisa.

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

EDIT PARTITION 30 REDIT



PREFERENCE NomePreferncia Salva os atributos e opes de uma janela Editar para utilizao
posterior. Ao contrrio de LAST, que restaura a janela Editar da maneira como apareceu na sesso
anterior, PREFERENCE salva os atributos de uma janela Editar indefinidamente, no arquivo de
recursos FOXUSER. As preferncias podem ser recuperadas sempre que desejado. Para obter
maiores informaes sobre o arquivo de recursos FOXUSER, consulte SET RESOURCE.

Se voc emitir EDIT pela primeira vez com o nome de preferncia NomePreferncia especificado,
ser criada uma entrada no arquivo FOXUSER que salva a configurao da janela Editar. Se voc
emitir EDIT posteriormente, com o mesmo nome de preferncia, a janela Editar retornar quele
estado de preferncia. Quando a janela Editar for fechada, o estado de preferncia ser atualizado.

Os nomes das preferncias podem ter at 10 caracteres, tm que comear com uma letra ou um
caractere de sublinhado e podem conter qualquer combinao de letras, nmeros e caracteres de
sublinhado.

Quando voc conseguir estabelecer uma preferncia, poder impedir que ela seja alterada. Feche a
janela Editar, emita SET RESOURCE OFF, abra o arquivo FOXUSER como uma tabela e altere o
arquivo que contm a preferncia para somente para leitura, mudando o valor do campo lgico
READONLY para verdadeiro (.T.).

Para obter maiores informaes sobre o arquivo de recursos FOXUSER, consulte SET
RESOURCE.

REST Impede que o ponteiro do registro seja movido de sua posio atual para o topo da tabela.
Como padro, EDIT posiciona o ponteiro do registro no topo da tabela.

SAVE Mantm ativa e visvel (aberta) a janela Editar e qualquer de suas janelas de edio de texto
de campos Memo. Voc pode, ento, retornar para a janela Editar aps percorrer outras janelas
abertas com o teclado ou mouse.

SAVE s pode ser acessado a partir de um programa. SAVE no tem efeito quando includo com
EDIT na janela Comando, pois EDIT SAVE sempre o padro no modo interativo.

TIMEOUT nSegundos Especifica o tempo que uma janela Editar espera por entrada. A expresso
numrica nSegundos especifica quantos segundos podem se passar sem entrada antes que a janela
Editar se feche automaticamente.

TIMEOUT s pode ser acessado a partir de um programa; no tem efeito quando EDIT emitido a
partir da janela Comando. No exemplo a seguir, a janela Editar ser fechada se no houver entrada
em 10 segundos.

DEFINE WINDOW wEdit FROM 1,1 TO 24,40 ;
CLOSE ;
GROW ;
COLOR SCHEME 10
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
EDIT WINDOW wEdit ;
FIELDS phone :H = 'Nmero Telefone:' , ;
company :H = 'Empresa:' ;
TIMEOUT 10
RELEASE WINDOW wEdit



TITLE cTextoTitulo Substitui o nome ou alias padro da tabela, exibido na barra de ttulo da
janela Editar pelo ttulo especificado com cTextoTitulo. Do contrrio, o nome ou alias da tabela que
est sendo pesquisada aparece na barra de ttulo.

Se voc emitir EDIT WINDOW para colocar a janela Editar em uma janela definida pelo usurio, o
ttulo da janela Editar substituir o ttulo da janela definida pelo usurio.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela customer
EDIT;
TITLE 'Minha Janela Editar' ;
FIELDS phone :H = 'Nmero Telefone' , ;
company :H = 'Empresa:'



VALID lExpresso3 Executa a validao no nvel de registros na janela Editar. A clusula VALID
s ser executada se uma alterao for feita no registro e voc mover o cursor para outro registro. A
clusula VALID no ser executada se forem feitas alteraes somente em um campo Memo.

Se VALID retornar verdadeiro (.T.), voc poder mover o cursor para outro registro. Se VALID
retornar falso (.F.), o cursor permanecer no campo atual e o Visual FoxPro exibir uma mensagem
de erro. Voc poder exibir sua prpria mensagem de erro quando VALID retornar falso, incluindo
a clusula ERROR. A expresso de caracteres cTextoMensagem exibida como mensagem de erro.
Se VALID retornar 0, o cursor permanecer no campo atual e no ser exibida uma mensagem de
erro.

A clusula VALID no deve ser confundida com a opo de verificao (:V), que permite validao
dos campos.

:F Faz com que a clusula VALID seja executada antes que o usurio mova o cursor para o
registro seguinte. Nesse caso, VALID ser executada mesmo que o registro no seja alterado.

ERROR cTextoMensagem Especifica uma mensagem de erro que substitui o padro do sistema e
cujo contedo especificado por cTextoMensagem. O Visual FoxPro exibe sua mensagem de erro
quando VALID retorna falso (.F.).

WHEN lExpresso4 Avalia uma condio quando o usurio move o cursor para outro registro. Se
lExpresso4 retornar verdadeiro (.T.), o usurio poder modificar o registro para onde foi movido.
Se lExpresso4 retornar falso (.F.) ou 0, o registro em que o usurio estiver passar a ser somente
para leitura e no poder ser modificado.

A clusula WHEN no ser executada quando outra janela estiver ativada.

WIDTH nLarguraCampo Limita o nmero de caracteres exibidos para todos os campos em uma
partio da janela editar a nLarguraCampo. A incluso da clusula WIDTH no altera o tamanho
dos campos na tabela em si, apenas a forma de exibio dos campos na janela Editar. Se uma
largura tiver sido especificada para um nico campo com a clusula FIELDS, ela substituir a
largura especificada com a clusula WIDTH para aquele campo.

WINDOW NomeJanela1 Especifica uma janela definida pelo usurio cujas caractersticas so
assumidas pela janela Editar. Por exemplo, se a janela definida pelo usurio for criada com a
clusula FLOAT, a janela Editar poder ser movida. A janela especificada no precisa estar ativa ou
visvel, mas precisa estar definida.

IN [WINDOW] NomeJanela2 Especifica a janela pai NomeJanela2 na qual a janela Editar
aberta. A janela Editar no assume as caractersticas da janela pai. Uma janela Editar ativada dentro
de uma janela pai no pode ser movida para fora desta. Se a janela pai for movida, a janela Editar
ser movida junto com ela.

Para acessar a janela Editar, a janela pai tem que ser definida como DEFINE WINDOW e estar
ativa e visvel.

IN SCREEN Posiciona uma janela Editar de forma explcita na janela principal do Visual FoxPro
quando uma janela definida pelo usurio est ativa.

COLOR SCHEME nNmeroEsquema Especifica o nmero de um esquema de cores utilizado para
as cores da janela Editar. No Visual FoxPro, a janela Editar assume o esquema de cores definido
utilizando o Painel de controle de cores.

Comentrios

EDIT possibilita a edio da tabela selecionada em uma janela. EDIT funciona de forma idntica a
CHANGE.

Se voc pressionar ESC para sair da janela Editar, as alteraes feitas no ltimo campo modificado
so descartadas. No entanto, se voc mover outro registro aps modificar um campo, as alteraes
feitas no campo sero salvas.

Em um programa, utilize DEACTIVATE WINDOW para salvar suas alteraes e fechar uma janela
Editar. Inclua o nome da janela Editar em DEACTIVATE WINDOW. Para obter maiores
informaes sobre os nomes da janela Editar, consulte WTITLE( ).

Suporte SET SKIP

SET SKIP permite que voc estabelea um relacionamento um-para-n entre duas tabelas (veja o
exemplo). Para cada registro da tabela pai, podem existir diversos registros relacionados na tabela
filho. Se voc criar um relacionamento um-para-n, poder utilizar EDIT para visualizar registros
das tabelas pai e filho.

O registro pai aparece uma vez, juntamente com o primeiro registro correspondente da tabela filho.
Qualquer registro correspondente subseqente exibido nas linhas que vm aps o registro pai e o
primeiro registro filho correspondente. No FoxPro para MS-DOS, blocos sombreados so exibidos
em qualquer coluna que contenha informaes da tabela pai alm do primeiro registro
correspondente. No Visual FoxPro, caractere de preenchimento para informaes pai repetidas
depende da atual fonte da janela Editar.

Para obter maiores informaes, consulte SET SKIP.

Suporte COL( ) e ROW( )

Utilize COL( ) e ROW( ) para retornar a linha da tela e posio da coluna em que se encontra o
cursor em uma janela Editar. Se uma janela Editar estiver aberta na janela principal do Visual
FoxPro, a posio do cursor retornada ser relativa janela principal do Visual FoxPro, no janela
Editar em si. Se uma janela Editar estiver aberta em uma janela definida pelo usurio, COL( ) e
ROW( ) retornaro a posio do cursor em relao janela definida pelo usurio.























EJECT PAGE, comando


Envia um comando de avano de pgina condicional para a impressora.

Sintaxe

EJECT PAGE



Comentrios

Utilize EJECT PAGE para avanar o fluxo de sada. O avano depende do valor de _PADVANCE
e se uma rotina ON PAGE est em andamento.

Se _PADVANCE estiver configurada para FORMFEED e uma rotina ON PAGE no estiver em
andamento, EJECT PAGE far o seguinte:

Enviar um comando de alimentao de pgina para a impressora, se ela estiver on-line.
Enviar comandos de alimentao de linha, como foi determinado pelas variveis de
memria do sistema _PLENGTH e _PLINENO, para a tela, um arquivo alternativo ou ambos.
Incrementar _PAGENO em 1.
Configurar _PLINENO para 0.
Se a varivel de memria do sistema _PADVANCE estiver configurada para INEFEEDS e
uma rotina ON PAGE estiver em andamento e _PLINENO for menor do que o nmero da linha da
pgina especificado na rotina ON PAGE, EJECT PAGE enviar para a impressora, para a janela
principal do Visual FoxPro ou para um arquivo alternativo (ou ambos) tantos comandos de
alimentao de linha quantos forem necessrios para avanar at o incio da pgina seguinte.



Se uma rotina ON PAGE no estiver em andamento ou se _PADVANCE estiver configurada para
LINEFEEDS e _PLINENO for maior do que o nmero da linha da pgina especificado com ON
PAGE, EJECT PAGE far o seguinte:

Enviar comandos de alimentao de linha, conforme determinado pelas variveis de
memria do sistema _PLENGTH e _PLINENO, para a impressora, para a janela principal do Visual
FoxPro ou para um arquivo alternativo (ou ambos).
Incrementar _PAGENO em 1.
Configurar _PLINENO para 0.


















EJECT, comando


Envia um comando de alimentao de pgina para a impressora.

Sintaxe

EJECT



Comentrios

EJECT faz com que a impressora avance para o incio da pgina seguinte. EJECT enviar um
comando de alimentao de pgina para a impressora se a varivel de memria do sistema
_PADVANCE estiver configurada para FORMFEED. Se _PADVANCE estiver configurada para
LINEFEEDS, EJECT enviar comandos de alimentao de linha para avanar at o incio da pgina
seguinte.

EJECT redefine os valores PCOL( ) e PROW( ) para a posio atual de coluna e de linha do
cabeote de impresso da impressora, mas no afeta o valor das variveis do sistema _PAGENO e
_PLINENO.

EJECT, exemplo do comando

No exemplo a seguir, os campos company e phone na tabela customer sero impressos. (Certifique-
se de que h uma impressora anexada e ligada para esse exemplo.) Quando o nmero de linhas
impressas for maios do que 62, a pgina ser ejetada.

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

SET DEVICE TO PRINTER
SET PRINT ON
DO WHILE NOT EOF( )
@ PROW( )+1,10 SAY 'Company: ' + company
@ PROW( )+1,10 SAY 'Phone: ' + phone
@ PROW( )+1,1 SAY ''
IF PROW( ) > 62
EJECT
ENDIF
SKIP
ENDDO
SET PRINT OFF
SET DEVICE TO SCREEN




















EMPTY( ), funo


Determina se uma expresso retorna um valor vazio.

Sintaxe

EMPTY(eExpresso)



Tipos de Retorno

Lgico

Argumentos

eExpresso Especifica a expresso retornada pela funo EMPTY( ).

A expresso includa pode ser de caracteres, data, numrica ou lgica, bem como o nome de um
campo Memo ou geral de uma tabela aberta. EMPTY( ) retorna verdadeiro (.T.) quando as
expresses retornam um dos valores a seguir:

Tipo de expresso Retorna este valor

Caractere Seqncia vazia, espaos, tabulaes, retornos de carro, alimentaes de linha ou
qualquer combinao dos mesmos.
Numrica 0
Moeda 0
Flutuante 0
Nmero inteiro 0
Dupla 0
Data Vazio (e.g. CTOD(''))
DataHora Vazio (e.g. CTOT(''))
Lgica Falso (.F.)
Memo Vazio (sem contedo)
Geral Vazio (sem objeto OLE)
Figura Vazio (nenhuma figura)
EMPTY( ) no pode ser utilizada para determinar se uma referncia a um objeto de varivel de
memria vazia. Por exemplo, uma varivel de memria pode conter uma referncia de objeto para
um formulrio. Se o formulrio for fechado a partir da caixa de menu Controle do formulrio ou
com CLEAR WINDOWS, a varivel de memria conter o valor nulo.
O exemplo de programa a seguir mostra como utilizar TYPE( ) e ISNULL( ) para determinar se
uma referncia a um objeto de varivel de memria vlida.


goMyForm = CREATEOBJECT('Form')
WAIT WINDOW IIF(TYPE('goMyForm') = 'O' AND !ISNULL(goMyForm), ;
'goMyForm has valid object reference',;
'goMyForm does not have valid object reference')



Comentrios

EMPTY( ) retornar verdadeiro (.T.) se a expresso eExpresso retornar um valor vazio; caso
contrrio, EMPTY( ) retornar falso (.F.).


EMPTY( ), exemplo da funo

O exemplo a seguir abre a tabela customer do banco de dados testdata. FOR ... ENDFOR utilizado
para criar um loop em que EMPTY( ) utilizado para determinar se TAG( ) retorna a seqncia
vazia. O nome de cada marca de ndice estrutural exibida com seu status de candidato.

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

FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount)) && Verifica se h uma seqncia vazia
? TAG(nCount) && Exibe o nome da marca
? CANDIDATE(nCount) && Exibe o status de candidato
ELSE
EXIT && Sai do loop quando mais nenhuma marca for encontrada
ENDIF
ENDFOR

















EOF( ), funo


Determina se o ponteiro do registro est posicionado aps o ltimo registro na tabela atual ou
especificada.

Sintaxe

EOF([nreaTrabalho | cAliasTabela])



Tipos de Retorno

Lgico

Argumentos

nreaTrabalho Especifica o nmero da rea de trabalho da tabela.

cAliasTabela Especifica o alias da tabela.

EOF( ) retornar falso (.F.) se uma tabela no estiver aberta na rea de trabalho que voc
especificou.

Se voc no especificar uma rea de trabalho ou alias, a tabela que estiver aberta na rea de
trabalho selecionada no momento ser testada para o final da condio de tabela.



Comentrios

EOF( ) retornar verdadeiro (.T.) se o ponteiro do registro alcanar o final do arquivo de tabela
(EOF). O final da tabela alcanado quando o ponteiro do registro passa pelo ltimo registro da
tabela. Por exemplo, quando os comandos FIND, LOCATE ou SEEK no tm xito, o Visual
FoxPro move o ponteiro do registro para depois do ltimo registro e EOF( ) retorna verdadeiro
(.T.). EOF( ) retornar falso (.F.) se o ponteiro do registro no estiver no final da tabela.


EOF( ), exemplo da funo

O exemplo a seguir abre a tabela customer e lista o nome da empresa, uma pgina de cada vez at o
final do arquivo ser alcanado ou at voc selecionar Cancelar.

CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME() + "samples\data\testdata")
USE customer
GO TOP
local recCtr, btnValue
recCtr = 0
btnValue = 1
DO WHILE btnValue = 1 AND NOT EOF()
? "Empresa : " + company
recCtr = recCtr + 1
if (recCtr % 20) = 0 then
btnValue =MESSAGEBOX ("Click OK to continue, ;
Cancel to quit.",33)
clear
endif
Skip 1 && Move um registro para baixo
ENDDO
=MESSAGEBOX("Listing complete.",48)
ERASE, comando


Apaga um arquivo do disco.

Sintaxe

ERASE NomeArquivo | ? [RECYCLE]



Argumentos

NomeArquivo Especifica o arquivo a ser apagado. Inclua o caminho com o nome do arquivo se o
arquivo estiver em uma unidade de disco ou diretrio diferente da unidade de disco ou diretrio
atual.

NomeArquivo pode conter caracteres curinga como * e ?. Por exemplo, para excluir arquivos de
backup com ERASE *.BAK.

? Exibe a caixa de dilogo Excluir, a partir da qual voc pode escolher um arquivo a ser apagado.

RECYCLE Especifica que o arquivo no seja imediatamente excludo do disco e seja colocado na
Lixeira do Windows 95.



Cuidado Ateno ao utilizar ERASE. Os arquivos apagados com esse comando no podero ser
recuperados. Voc no ser avisado antes do arquivo ser apagado, mesmo que SET SAFETY esteja
ativado (ON).



ERASE, exemplo do comando

No exemplo a seguir, a estrutura de CUSTOMER.DBF e todos os registros nos quais o pas
Estados Unidos so copiados para uma tabela denominada backup. Os dados em backup so, ento,
copiados para um arquivo texto, temp, que aberto e, em seguida, excludo ao ser fechado.

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

COPY STRUCTURE TO backup
USE backup
APPEND FROM customer FOR country = 'USA'
COPY TO temp TYPE DELIMITED

WAIT WINDOW 'Press Esc to close and erase temp.txt' NOWAIT
MODIFY FILE temp.txt NOEDIT
ERASE temp.txt
? IIF(FILE('temp.txt'),'File not deleted','File deleted')
USE
ERASE backup.dbf











ERROR( ), funo


Retorna o nmero do erro que disparou uma rotina ON ERROR.

Sintaxe

ERROR( )



Tipos de retorno

Numrico

Comentrios

ERROR( ) retorna o nmero do erro mais recente. Uma rotina ON ERROR deve estar ativa para
que ERROR( ) retorne um valor diferente de 0.

Quando um erro interceptado durante a execuo de um programa, o tipo de erro pode ser
retornado por ERROR( ) em uma rotina ON ERROR. A mensagem de erro correspondente pode ser
retornada por MESSAGE( ).

O valor retornado por ERROR( ) redefinido por RETURN ou RETRY.

Para obter uma listagem numrica de todos os nmeros de erro e as mensagens de erro
correspondentes, consulte Mensagens de erro na seo Referncia tcnica.


ERROR( ), exemplo da funo

O exemplo a seguir demonstra uma rotina de gerenciamento de erro simples que exibe uma
mensagem quando ocorre um erro.

CLEAR
ON ERROR DO errhand WITH ERROR( ), MESSAGE( )

*** The next line generates an error - there is no BRWSE command

BRWSE
ON ERROR
RETURN

*** Error handler ***

PROCEDURE errhand
PARAMETER errnum,message
? Message
? 'Error number: '+ ALLTRIM(STR(Errnum))
RETURN














ERROR, comando


Gera um erro do Visual FoxPro.

Sintaxe

ERROR nNmeroErro
| nNmeroErro, cTextoMensagem1
| [cTextoMensagem2]



Argumentos

nNmeroErro Especifica o nmero do erro a ser gerado. A mensagem de erro padro do Visual
FoxPro ser utilizada quando um nmero de erro for especificado.

Para obter uma lista de mensagens de erro do Visual FoxPro e os respectivos nmeros de erro,
consulte Mensagens de erro.

cTextoMensagem1 Especifica o texto a ser exibido em mensagens de erro que fornecem
informaes adicionais sobre o erro. Por exemplo, se voc fizer referncia a uma varivel de
memria que no existe, o Visual FoxPro fornecer o nome da varivel de memria na mensagem
de erro.

cTextoMensagem2 Especifica o texto exibido na mensagem de erro. Quando cTextoMensagem2
for especificado em vez de nNmeroErro, o nmero de erro 1098 (erro definido pelo usurio) do
Visual FoxPro ser gerado. Utilize um retorno de carro (CHR(13)) em cTextoMensagem2 para
mover uma parte da mensagem de erro para a prxima linha.



Comentrios

ERROR pode ser utilizado para testar rotinas de gerenciamento de erro ou para exibir mensagens de
erro personalizadas.

Se uma rotina de gerenciamento de erro ON ERROR estiver ativa quando ERROR for emitido, o
Visual FoxPro executar a rotina ON ERROR. Se ocorrer um erro para um objeto, o evento Error
desse objeto ser executado.

Se voc emitir ERROR a partir da janela Comando e uma rotina de gerenciamento de erro ON
ERROR no estiver ativa, o Visual FoxPro exibir a mensagem de erro. Se ERROR for emitido em
um programa e uma rotina de gerenciamento de erro ON ERROR no estiver ativa, o Visual FoxPro
exibir a mensagem de erro e permitir que voc cancele ou suspenda o programa ou ignore o erro.


ERROR, exemplo do comando

O exemplo a seguir gera trs mensagens de erro. A primeira mensagem de erro Varivel no
encontrada do Visual FoxPro (nmero de erro 12). A segunda mensagem de erro torna a gerar o
erro 12, incluindo o nome de varivel Myvariable. A ltima mensagem de erro definida pelo
usurio (nmero de erro 1089) Minha mensagem de erro.

ERROR 12 && Gera o erro do Visual FoxPro "Varivel no encontrada"
ERROR 12, 'Myvariable' && Erro varivel 'Myvariable' no encontrada
ERROR 'My error message' && Gera o erro 'Minha mensagem de erro'

































EVALUATE( ), funo


Avalia uma expresso de caracteres e retorna o resultado.

Sintaxe

EVALUATE(cExpresso)



Tipos de retorno

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

Argumentos

cExpresso Especifica a expresso a ser avaliada. cExpresso pode ser uma seqncia de
caracteres literal ou uma expresso, uma varivel de memria, um elemento de matriz ou campo de
qualquer tipo de dados vlidos do Visual FoxPro includos entre delimitadores de seqncia de
caracteres. cExpresso no pode exceder 255 caracteres.

Sempre que possvel, utilize EVALUATE( ) ou uma expresso de nome para trocar uma
substituio de macro utilizando &. EVALUATE e expresses de nome so executadas mais
rapidamente do que a substituio de macro.



Comentrios

EVALUATE( ) semelhante a TYPE( ), mas retorna o resultado de uma expresso em vez do tipo
da expresso. Uma expresso que contenha EVALUATE( ) no pode ser otimizada por Rushmore.
































EXIT, comando


Sai de um loop DO WHILE, FOR ou SCAN.

Sintaxe

EXIT



Comentrios

EXIT transfere o controle de dentro de um loop DO WHILE ... ENDDO, FOR ... ENDFOR ou
SCAN ... ENDSCAN para o comando imediatamente aps ENDDO, ENDFOR ou ENDSCAN.


EXIT, exemplo do comando

No exemplo a seguir, o nmero de produtos em estoque com preo acima de 20 dlares totalizado
no loop DO WHILE at que o final do arquivo (EOF) seja encontrado. O loop DO WHILE
fechado e o total, exibido.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela Products
SET TALK OFF
gnStockTot = 0

DO WHILE .T. && Incio do loop
IF EOF( )
EXIT
ENDIF
IF unit_price < 20
SKIP
LOOP
ENDIF
gnStockTot = gnStockTot + in_stock
SKIP
ENDDO && Fim do loop

CLEAR
? 'Total dos items em estoque com preo acima de 20 dlares:'
?? gnStockTot






















EXP( ), funo


Retorna o valor de e^x onde x uma expresso numrica especificada.

Sintaxe

EXP(nExpresso)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica o expoente, x, na expresso exponencial e^x.



Comentrios

O valor de e, a base de logaritmos naturais, aproximadamente 2,71828. O nmero de casas
decimais retornadas por EXP( ) especificado com SET DECIMALS.


EXP( ), exemplo da funo

? EXP(0) && Exibe 1.00
? EXP(1) && Exibe 2.72



































EXPORT, comando


Copia dados de uma tabela do Visual FoxPro para um arquivo em um formato diferente.

Sintaxe

EXPORT TO NomeArquivo
[TYPE] DIF | MOD | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5
[FIELDS ListaCampos]
[Escopo]
[FOR lExpresso1]
[WHILE lExpresso2]
[NOOPTIMIZE]
[AS nPginaCdigo]



Argumentos

NomeArquivo Especifica o nome do arquivo para o qual o Visual FoxPro exporta dados. Se voc
no incluir uma extenso com o nome do arquivo, ser atribuda a extenso padro para o tipo de
arquivo especificado.

TYPE Especifica o tipo de arquivo a ser criado. A palavra-chave TYPE opcional, mas preciso
especificar um dos tipos a seguir.

Tipo de arquivo Descrio

DIF Cada campo de uma tabela do Visual FoxPro torna-se um vetor (coluna) e cada registro
torna-se uma tupla (linha) em um arquivo DIF (Data Interchange Format) utilizado por VisiCalc.
Ser atribuda uma extenso .DIF ao nome do novo arquivo se no for includa uma extenso em
NomeArquivo.
MOD Utilize a clusula MOD para exportar para um arquivo do Microsoft Multiplan verso 4.01
formato MOD. Ser atribuda uma extenso .MOD se no for includa uma extenso em
NomeArquivo.
SYLK Um formato de intercmbio Symbolic Link (utilizado pelo Microsoft Multiplan) no qual
cada campo de uma tabela do Visual FoxPro torna-se uma coluna da planilha e cada registro torna-
se uma linha. Como padro, nomes de arquivos SYLK no possuem extenso.
WK1 Inclua essa opo para criar uma planilha eletrnica do Lotus 1-2-3 a partir de uma tabela
do Visual FoxPro. atribuda uma extenso .WK1 ao nome do arquivo de planilha eletrnica para
ser utilizado com o Lotus 1-2-3 reviso 2.x. Cada campo da tabela torna-se uma coluna na nova
planilha eletrnica e cada registro da tabela torna-se uma linha na planilha.
WKS Inclua essa opo para criar uma planilha eletrnica do Lotus 1-2-3 a partir de uma tabela
do Visual FoxPro. atribuda uma extenso .WKS ao nome do arquivo de planilha eletrnica para
ser utilizado com o Lotus 1-2-3 reviso 1-A. Cada campo da tabela torna-se uma coluna na nova
planilha eletrnica e cada registro torna-se uma linha na planilha.
WR1 Inclua essa opo para criar uma planilha eletrnica do Lotus Symphony a partir de uma
tabela do Visual FoxPro. Uma extenso .WR1 atribuda planilha para ser utilizada com o
Symphony verso 1.01. Cada campo da tabela torna-se uma coluna na nova planilha eletrnica e
cada registro torna-se uma linha na planilha.
WRK Inclua essa opo para criar uma planilha eletrnica do Lotus Symphony a partir de uma
tabela do Visual FoxPro. Uma extenso WRK atribuda ao nome do arquivo de planilha eletrnica
para ser utilizado com o Symphony verso 1.10. Cada campo da tabela torna-se uma coluna na nova
planilha eletrnica e cada registro torna-se uma linha na planilha.
XLS Inclua essa opo para criar uma planilha eletrnica do Microsoft Excel a partir de uma
tabela do Visual FoxPro. Cada campo da tabela selecionada torna-se uma coluna da planilha
eletrnica e cada registro torna-se uma linha. Ser atribuda uma extenso de nome de arquivo .XLS
ao ltimo arquivo de planilha criado, a no ser que voc especifique uma extenso diferente.
XL5 Inclua essa opo para criar um arquivo de planilha do Microsoft Excel verso 5.0 a partir
de uma tabela do Visual FoxPro. Cada campo da tabela selecionada torna-se uma coluna na planilha
eletrnica e cada registro torna-se uma linha. Ser atribuda uma extenso .XLS nova planilha se
voc no incluir uma extenso de arquivo.


FIELDS ListaCampos Especifica os campos copiados para o novo arquivo. Se voc omitir a
clusula FIELDS, todos os campos sero copiados para o novo arquivo. Campos Memo e Geral no
so copiados para o novo arquivo, mesmo que seus nomes estejam includos na lista de campos.
Escopo Especifica um intervalo de registros a serem copiados para o novo arquivo. Escopo
Especifica um intervalo de registros a serem copiados para o novo arquivo. Apenas os registros
que estejam no intervalo so copiados para o novo arquivo. As clusulas de escopo so: ALL,
NEXT nRegistros, RECORD nNmeroRegistro e REST.

Para obter maiores informaes sobre clusulas de escopo, consulte Clusulas de escopo
. Os comandos que incluem Escopo operam somente na tabela da rea de trabalho ativa.
O escopo padro para EXPORT so todos os registros.

FOR lExpresso1 Especifica que somente os registros que satisfazem condio lgica
lExpresso1 so copiados para o novo arquivo. Isso permite extrair os registros no desejados.

Um comando EXPORT ... FOR lExpresso1 ter otimizao Rushmore se a lExpresso1 for uma
expresso otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na
clusula FOR..
Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore, no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor
.

WHILE lExpresso2 Especifica uma condio de acordo com a qual os registros so copiados para
o novo arquivo enquanto a expresso lgica lExpresso2 retornar um valor verdadeiro (.T.).
NOOPTIMIZE Desativa a otimizao Rushmore de EXPORT.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore, no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.

AS nPginaCdigo Especifica a pgina de cdigo do arquivo criada por EXPORT. O Visual
FoxPro copia o contedo da tabela atualmente selecionada e, medida que copia os dados,
converte-os automaticamente na pgina de cdigo especificada para o novo arquivo. Se possvel, o
Visual FoxPro marcar o arquivo recm-criado com a pgina de cdigo especificada.

Caso voc especifique um valor para nPginaCdigo que no seja suportado, o Visual FoxPro ir
gerar uma mensagem de erro. possvel utilizar GETCP( ) para nPginaCdigo a fim de exibir a
caixa de dilogo Pgina de cdigo, que permite especificar uma pgina de cdigo para o arquivo
criado pelo Visual FoxPro.
Caso AS nPginaCdigo for omitida, no ocorrer a converso de pgina de cdigo. Se possvel, o
Visual FoxPro marcar o arquivo recm-criado com a pgina de cdigo da tabela da qual os dados
so copiados.

Se nPginaCdigo for 0, no ocorrer converso de pgina e o arquivo recm-criado no ser
marcado com uma pgina de cdigo.



Comentrios

Utilize EXPORT para empregar os dados do Visual FoxPro em outros pacotes de software.
Se a tabela da qual voc est exportando estiver indexada, o novo arquivo ser criado na ordem
indexada.
























FCHSIZE( ), funo


Altera o tamanho de um arquivo aberto com uma funo de arquivo de nvel inferior.

Sintaxe

FCHSIZE(nIdentificadorArquivo, nNovoTamanhoArquivo)



Tipos de retorno

Numrico

Argumentos

nIdentificadorArquivo Especifica o identificador do arquivo cujo tamanho voc deseja alterar. O
identificador de arquivo retornado por FOPEN( ) quando voc abre o arquivo ou por FCREATE( )
quando voc cria o arquivo. Caso um arquivo seja aberto com FOPEN( ), ele deve ser aberto com
permisso para gravao ou para leitura e gravao para que o seu tamanho possa ser alterado.

nNovoTamanhoArquivo Especifica o novo tamanho do arquivo em bytes. Se
nNovoTamanhoArquivo for menor do que o tamanho do arquivo original, o arquivo ser truncado.
Se nNovoTamanhoArquivo for maior do que o tamanho do arquivo original, o tamanho do arquivo
ser aumentado.



Comentrios

Utilize a funo FCHSIZE( ) para aumentar o tamanho do arquivo ou para trunc-lo aps um byte
especificado.

Quando aumenta-se o tamanho de um arquivo, o Visual FoxPro aloca setores para este arquivo na
unidade em que ele est aberto. Visto que FCHSIZE( ) no inicializa o novo espao do arquivo, este
espao poder conter dados anteriores. Certifique-se de gerenciar o novo espao do arquivo.

retornado o tamanho final do arquivo em bytes. O Visual FoxPro retornar 1 caso FCHSIZE( )
no consiga alterar o tamanho do arquivo se, por exemplo, for especificado um identificador de
arquivo invlido por causa de espao insuficiente no disco ou se o arquivo for somente para leitura.

Dica Pode-se utilizar esta funo para truncar um arquivo para o comprimento 0.

















FCLOSE( ), funo

Descarrega e fecha um arquivo ou uma porta de comunicao aberta com uma funo de arquivo de
nvel inferior.

Sintaxe

FCLOSE(nIdentificadorArquivo)



Tipos de retorno

Lgico

Argumentos

nIdentificadorArquivo Especifica o identificador do arquivo de nvel inferior a ser fechado. O
identificador de arquivo numrico retornado quando voc cria o arquivo com FCREATE( ) ou
abre o arquivo com FOPEN( ).



Comentrios

Caso o fechamento do arquivo seja bem-sucedido, FCLOSE( ) retornar verdadeiro (.T.) e liberar
o identificador de arquivo. Caso no seja possvel fechar o arquivo, FCLOSE( ) retornar falso (.F.).

A funo CLOSE ALL tambm fecha arquivos de nvel inferior.






































FCOUNT( ), funo



Retorna o nmero de campos em uma tabela.

Sintaxe

FCOUNT([nreaTrabalho| cAliasTabela])



Tipos de retorno

Numrico

Argumentos

nreaTrabalho Especifica a rea de trabalho da tabela para a qual FCOUNT( ) retorna o nmero
de campos.

A funo FCOUNT( ) retornar 0 caso no esteja aberta nenhuma tabela na rea de trabalho
especificada.

cAliasTabela Especifica o alias da tabela para a qual FCOUNT( ) retorna o nmero de campos.

O Visual FoxPro gerar uma mensagem de erro se voc especificar um alias de tabela inexistente.



Comentrios

Se voc omitir os argumentos opcionais, FCOUNT( ) retornar o nmero de campos da tabela
aberta na rea de trabalho atualmente selecionada.

FCOUNT( ), exemplo da funo

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
SELECT 0
USE employee && Abre a tabela employee

CLEAR
? FCOUNT('CUSTOMER') && Exibe 13, nmero de campos na tabela Customer
? FCOUNT('EMPLOYEE') && Exibe 22, nmero de campos na tabela Employee


















FCREATE( ), funo



Cria e abre um arquivo de nvel inferior.

Sintaxe

FCREATE(cNomeArquivo [, nAtributoArquivo])



Tipos de retorno

Numrico

Argumentos

cNomeArquivo Especifica o nome do arquivo a ser criado. Pode-se incluir um designador de
unidade e um caminho com o nome do arquivo. Caso no seja includo um designador de unidade
ou um caminho, o arquivo ser criado no diretrio padro.

Observao O Visual FoxPro no reconhecer um nome de caminho de maneira apropriada se um
nome de diretrio ou disco contiver um ponto de exclamao (!).



nAtributoArquivo Especifica os atributos do arquivo criado. A tabela a seguir lista os atributos de
arquivo que podem ser especificados.

nAtributoArquivo Atributos de arquivo

0 (Padro) Leitura e gravao
1 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 no poder ser gravado
com FPUTS( ) ou FWRITE( ) at que o arquivo seja fechado e aberto novamente.
Utilize DISPLAY STATUS ou LIST STATUS para exibir ou imprimir informaes sobre arquivos
criados e abertos com FCREATE( ). DISPLAY STATUS e LIST STATUS fornecem as
informaes a seguir sobre cada arquivo aberto ou criado com uma funo de arquivo de nvel
inferior:

A unidade, o diretrio e o nome do arquivo
O nmero do identificador de arquivo
A posio do ponteiro do arquivo
Os atributos de leitura e gravao



Comentrios

Caso j exista um arquivo com o nome especificado, ele ser sobrescrito sem aviso.

A funo FCREATE( ) atribui ao arquivo um nmero de identificador de arquivo que pode ser
utilizado para identific-lo em outras funes de arquivo de nvel inferior do Visual FoxPro.
FCREATE( ) retorna o nmero do identificador de arquivo quando o arquivo criado ou retorna 1
caso no seja possvel criar o arquivo.

Dica Atribua o nmero do identificador de arquivo a uma varivel de memria para que voc
possa acessar o arquivo pela varivel de memria em outras funes de arquivo de nvel inferior.



Voc no pode abrir uma porta de comunicao com FCREATE( ). Para tal, utilize FOPEN( ).


FCREATE( ), exemplo da funo

IF FILE('errors.txt') && O arquivo existe?
gnErrFile = FOPEN('errors.txt',12) && Caso exista, abra leitura e gravao
ELSE
gnErrFile = FCREATE('errors.txt') && Caso contrrio, crie um
ENDIF
IF gnErrFile < 0 && Verifica erros no arquivo de abertura
WAIT 'no possvel abrir ou criar um arquivo de sada' WINDOW NOWAIT
ELSE && Se no houver erros, grave no arquivo
=FWRITE(gnErrFile , 'Informao de erro a ser gravada aqui')
ENDIF
=FCLOSE(gnErrFile ) && Fecha o arquivo

IF gnErrFile > 0
MODIFY FILE errors.txt NOWAIT && Abre o arquivo na janela de edio
ENDIF




































FDATE( ), funo


Retorna a data da ltima modificao de um arquivo.

Sintaxe

FDATE(cNomeArquivo)



Tipos de retorno

Data

Argumentos

cNomeArquivo Especifica o nome do arquivo cuja data da ltima modificao retornada por
FDATE( ). cNomeArquivo pode incluir um caminho com o nome do arquivo. Se no houver
nenhum caminho includo com o nome do arquivo, o Visual FoxPro ir procurar o arquivo no
diretrio e pasta padro e nos diretrios e pastas especificados por SET PATH.



Comentrios

A data retornada por FDATE( ) atribuda ao arquivo pelo sistema operacional. O formato do valor
retornado por FDATE( ) determinado pelas definies atuais de SET DATE, SET MARK e SET
CENTURY.

Utilize LUPDATE( ) para determinar a data da ltima modificao para uma tabela aberta.


FDATE( ), exemplo da funo

O exemplo a seguir utiliza FDATE( ) para exibir a data da ltima modificao em FOXUSER.DBF,
arquivo de recursos do Visual FoxPro.

? FDATE('FOXUSER.DBF') && Exibe a data da ltima modificao























FEOF( ), funo


Determina se o ponteiro do arquivo est ou no posicionado no fim de um arquivo.

Sintaxe

FEOF(nIdentificadorArquivo)



Tipos de retorno

Lgico

Argumentos

nIdentificadorArquivo Especifica o nmero do identificador do arquivo no qual deve ser verificada
a condio de fim de arquivo. FEOF( ) sempre retornar verdadeiro (.T.) se voc especificar um
nmero de identificador de arquivo de uma porta de comunicao aberta com FOPEN( ).



Comentrios

Esta funo de arquivo de nvel inferior retornar verdadeiro (.T.) se o ponteiro do arquivo estiver
posicionado no fim de um arquivo aberto com uma funo de arquivo de nvel inferior. FEOF( )
retornar falso (.F.) se o ponteiro no estiver no fim do arquivo.


FEOF( ), exemplo da funo

*** Abre o arquivo test.txt ***

gnFileHandle = FOPEN('test.txt')

*** Move o ponteiro do arquivo para BOF ***

gnPosition = FSEEK(gnFileHandle, 0)

*** Se o ponteiro do arquivo estiver em BOF e EOF, o arquivo estar vazio ***
*** Caso contrrio o arquivo deve conter alguma coisa ***

IF FEOF(gnFileHandle)
WAIT WINDOW 'Este arquivo est vazio!' NOWAIT
ELSE
WAIT WINDOW 'Este arquivo contm alguma coisa!' NOWAIT
ENDIF
= FCLOSE(gnFileHandle)














FERROR( ), funo


Retorna um nmero correspondente ao erro na funo de arquivo de nvel inferior mais recente.

Sintaxe

FERROR( )



Tipos de retorno

Numrico

Comentrios

A funo FERROR( ) retornar 0 caso a funo de arquivo de nvel inferior seja executada com
sucesso. Um valor positivo ser retornado caso a execuo da funo seja mal-sucedida. A tabela a
seguir lista o nmero de cada erro retornado por FERROR( ) e a causa do erro.

Nmero do erro Causa do erro

2 Arquivo no localizado
4 Nmero excessivo de arquivos abertos (identificadores de arquivo esgotados)
5 Acesso negado
6 Identificador de arquivo invlido fornecido
8 Memria esgotada
25 Erro na pesquisa (impossvel pesquisar antes do incio de um arquivo)
29 Disco cheio
31 Erro na abertura do arquivo

































FFLUSH( ), funo


Descarrega no disco um arquivo aberto com uma funo de nvel inferior.

Sintaxe

FFLUSH(nIdentificadorArquivo)



Tipos de retorno

Lgico

Argumentos

nIdentificadorArquivo Especifica o identificador do arquivo a ser descarregado no disco.



Comentrios

A funo FFLUSH( ) tambm libera a memria utilizada pelo buffer do arquivo.

A funo FLUSH diferente de FFLUSH( ). FLUSH no opera em arquivos de nvel inferior, mas
em tabelas e ndices.


FFLUSH( ), exemplo da funo

O exemplo a seguir abre e grava um arquivo denominado INPUT.DAT. Depois de gravar as
primeiras duas seqncias, o programa descarrega os buffers para garantir que as seqncias sejam
gravadas no disco. Em seguida, ele grava as duas prximas seqncias, descarrega os buffers
novamente e fecha o arquivo.

IF FILE('input.dat')
gnTestFile = FOPEN('input.dat',2)
ELSE
gnTestFile = FCREATE('input.dat')
ENDIF
gnIOBytes = FWRITE(gnTestFile,'Testar sada')
gnIOBytes = FWRITE(gnTestFile,' para arquivo E/S de nvel inferior')
glFlushOk = FFLUSH(gnTestFile)
gnIOBytes = FWRITE(gnTestFile,'Testar sada2')
gnIOBytes = FWRITE(gnTestFile,' para arquivo E/S de nvel inferior')
glFlushOk = FFLUSH(gnTestFile)
glCloseOk = FCLOSE(gnTestFile)
MODIFY FILE input.dat NOWAIT NOEDIT














FGETS( ), funo


Retorna uma srie de bytes de um arquivo ou de uma porta de comunicao aberta com uma funo
de arquivo de nvel inferior at localizar um retorno de carro.

Sintaxe

FGETS(nIdentificadorArquivo [, nBytes])



Tipos de retorno

Caractere

Argumentos

nIdentificadorArquivo Especifica o identificador de arquivo numrico da porta de comunicao ou
do arquivo a partir do qual FGETS( ) retorna dados.

nBytes Especifica o nmero de bytes que FGETS( ) retorna. FGETS( ) retornar nBytes bytes, a
menos que antes seja localizado um retorno de carro. FGETS( ) retornar os dados entre a posio
inicial do ponteiro do arquivo e o retorno de carro, caso seja localizado um retorno de carro dentro
dos nBytes bytes.

Se voc omitir nBytes, FGETS( ) retornar um mximo de 254 bytes como padro.



Comentrios

Voc pode ler linha por linha de um arquivo emitindo-se uma srie de FGETS( ).

A funo FGETS( ) retorna uma srie de bytes como uma seqncia de caracteres. O retorno dos
dados feito a partir da posio atual do ponteiro do arquivo e continua at localizar um retorno de
carro. Em seguida, o ponteiro do arquivo posicionado no byte seguinte ao retorno de carro. O
retorno de carro no retornado como parte da seqncia e as alimentaes de linha so ignoradas.


FGETS( ), exemplo da funo

*** TEST.TXT deve existir ***
STORE FOPEN('test.txt') TO gnFileHandle && Abre o arquivo
STORE FSEEK(gnFileHandle, 0, 2) TO gnEnd && Move o ponteiro a EOF
STORE FSEEK(gnFileHandle, 0) TO gnTop && Move o ponteiro a BOF
IF gnEnd <= 0 && O arquivo est vazio?
WAIT WINDOW 'Este arquivo est vazio!' NOWAIT
ELSE && Caso no esteja
gcString = FGETS(gnFileHandle, gnEnd) && Armazene o contedo
? gcString
ENDIF
= FCLOSE(gnFileHandle) && Fecha o arquivo





FIELD( ), funo


Retorna o nome de um campo de uma tabela ao qual feita referncia pelo nmero.

Sintaxe

FIELD(nNmeroCampo [, nreaTrabalho | cAliasTabela])



Tipos de retorno

Caractere

Argumentos

nNmeroCampo Especifica o nmero do campo. Caso nNmeroCampo seja 1, ser retornado o
nome do primeiro campo da tabela; caso nNmeroCampo seja 2, ser retornado o nome do segundo
campo, e assim sucessivamente. A seqncia vazia ser retornada se nNmeroCampo for maior do
que o nmero de campos. Os nomes dos campos so retornados em letras maisculas.

nreaTrabalho Especifica a rea de trabalho da tabela para a qual FIELD( ) retorna os nomes dos
campos.

A funo FIELD( ) retornar a seqncia vazia caso no esteja aberta nenhuma tabela na rea de
trabalho especificada.

cAliasTabela Especifica o alias da tabela para a qual FIELD( ) retorna os nomes dos campos.

O Visual FoxPro gerar uma mensagem de erro se voc especificar um alias de tabela inexistente.



Comentrios

Se voc omitir os argumentos opcionais, FIELD( ) retornar os nomes dos campos da tabela aberta
na rea de trabalho atualmente selecionada.


FIELD( ), exemplo da funo

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

CLEAR
FOR gnCount = 1 TO FCOUNT( ) && Realiza um loop para nmeros de campos
? FIELD(gnCount) && Exibe cada campo
NEXT
?
? 'Nmero de campos: ' + ALLTRIM(STR(gnCount -1))










FILE( ), funo


Retorna verdadeiro (.T.), se o arquivo especificado for encontrado em disco.

Sintaxe

FILE(cNomeArquivo)



Tipos de retorno

Lgico

Argumentos

cNomeArquivo Especifica o nome do arquivo a ser localizado. cNomeArquivo deve incluir a
extenso do arquivo. O Visual FoxPro procura no diretrio ou pasta padro pelo arquivo. Se o
arquivo no for encontrado nestes locais, o Visual FoxPro procura pelo prprio caminho
estabelecido com SET PATH.

Voc pode incluir um caminho ao nome do arquivo para procurar por um arquivo em um diretrio
ou em uma unidade diferentes dos atuais.



Comentrios

Utilize FILE( ) para localizar um arquivo em disco. FILE( ) retorna (.T.) se o arquivo puder ser
localizado; caso contrrio FILE( ) retorna (.F.) falso.


FILE( ), exemplo da funo

O exemplo a seguir exibe uma mensagem indicando se o arquivo de recursos do Visual FoxPro est
presente na pasta ou diretrio de inicializao do Visual FoxPro.

SET PATH TO HOME( )
CLEAR
IF FILE('foxuser.dbf')
WAIT WINDOW 'Arquivo de recursos do Visual FoxPro presente'
ELSE
WAIT WINDOW 'Arquivo de recursos do Visual FoxPro no presente'
ENDIF















FILTER( ), funo


Retorna a expresso de filtragem de tabela especificada em SET FILTER.

Sintaxe

FILTER([nreaTrabalho | cAliasTabela])



Tipos de retorno

Caractere

Argumentos

nreaTrabalho Especifica a rea de trabalho da tabela para a qual FILTER( ) retorna a expresso
de filtragem.

FILTER( ) retornar a seqncia vazia caso nenhuma tabela esteja aberta na rea de trabalho
especificada.

cAliasTabela Especifica o alias da tabela para a qual FILTER( ) retorna a expresso de filtragem.

O Visual FoxPro ir gerar uma mensagem de erro se voc especificar um alias de tabela inexistente.



Comentrios

Se voc omitir os argumentos opcionais, FILTER( ) retornar a expresso de filtragem da tabela
aberta na rea de trabalho atualmente selecionada. Para obter maiores informaes sobre como
criar um filtro, consulte SET FILTER.


FILTER( ), exemplo da funo

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
SET TALK ON
SET FILTER TO SUBSTR(cust_id,1) = 'B'

CLEAR
? FILTER( ) && Exibe a expresso de filtro
STORE FILTER('customer') TO gcOldFilter && Grava a expresso de filtro
SET FILTER TO country = 'USA'
? FILTER( ) && Exibe a expresso de filtro
SET FILTER TO &gcOldFilter && Restaura a expresso de filtro
? FILTER( ) && Exibe a expresso de filtro


LIST FIELDS cust_id, contact && Demonstra a condio de filtro










FKLABEL( ), funo

Retorna o nome da tecla de funo (F1, F2, F3 ...) a partir do nmero da tecla de funo
correspondente.

Sintaxe

FKLABEL(nNmeroTeclaFuno)



Tipos de retorno

Caractere

Argumentos

nNmeroTeclaFuno Especifica o nmero da tecla de funo. O valor de nNmeroTeclaFuno
deve estar entre 0 e o nmero de teclas de funo menos 1. FKLABEL( ) retornar a seqncia
vazia se nNmeroTeclaFuno for maior do que o nmero de teclas de funo menos 1. O nmero
de teclas de funo pode ser determinado com FKMAX( ).



Comentrios

Pode-se programar teclas de funo com SET FUNCTION.

O valor retornado por FKLABEL( ) afetado por SET COMPATIBLE. Quando COMPATIBLE
for definido para FOXPLUS (padro), FKLABEL( ) retorna as teclas de funo. Quando
COMPATIBLE for definido para DB4, FKLABEL( ) retorna a tecla de funo e as combinaes de
teclas de funo (F1, CTRL+F1, SHIFT+F1, F2, CTRL+F2, SHIFT+F2, ...).

FKLABEL( ), exemplo da funo

CLEAR
SET COMPATIBLE OFF
? 'COMPATIBLE OFF'
?
FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de funo
? FKLABEL(nCount) && Exibe as teclas programveis de funo
ENDFOR
SET COMPATIBLE ON

?
? 'COMPATIBLE ON'
?
FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de funo
? FKLABEL(nCount) && Exibe as teclas programveis de funo
ENDFOR











FKMAX( ), funo



Retorna o nmero de teclas de funo ou combinaes de teclas de funo programveis em seu
teclado.

Sintaxe

FKMAX( )



Tipos de retorno

Numrico

Comentrios

O valor retornado por FKMAX( ) afetado por SET COMPATIBLE. Quando SET COMPATIBLE
definido para FOXPLUS (padro), FKMAX( ) retorna o nmero de teclas de funo. Quando SET
COMPATIBLE definido para DB4, FKMAX( ) retorna o nmero de teclas de funo e
combinaes de teclas de funo (F1, CTRL+F1, SHIFT+F1, F2, CTRL+F2, SHIFT+F2, ...).


FKMAX( ), exemplo da funo

CLEAR
SET COMPATIBLE OFF
? 'COMPATIBLE OFF'
?
FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de funo
? FKLABEL(nCount) && Exibe as teclas programveis de funo
ENDFOR
SET COMPATIBLE ON

?
? 'COMPATIBLE ON'
?
FOR nCount = 1 TO FKMAX( ) && Loop para No de teclas de funo
? FKLABEL(nCount) && Exibe as teclas programveis de funo
ENDFOR




















FLOCK ( ), funo


Tenta bloquear a tabela atual ou a tabela especificada.

Sintaxe

FLOCK([nreaTrabalho | cAliasTabela])



Tipos de retorno

Lgico

Argumentos

nreaTrabalho Especifica a rea de trabalho da tabela que FLOCK( ) tenta bloquear.

A funo FLOCK( ) retornar falso (.F.) caso nenhuma tabela esteja aberta na rea de trabalho
especificada.

cAliasTabela Especifica o alias da tabela que FLOCK( ) tenta bloquear.

O Visual FoxPro ir gerar uma mensagem de erro se voc especificar um alias de tabela
inexistente.



Comentrios

A funo FLOCK( ) retornar verdadeiro (.T.) se o bloqueio da tabela for bem-sucedido e retornar
falso (.F.) se a tabela ou um registro da tabela j estiver bloqueado por outro usurio.

Se voc omitir os argumentos opcionais, FLOCK( ) tentar bloquear a tabela aberta na rea de
trabalho atualmente selecionada.

Observao Caso a funo FLOCK( ) no consiga bloquear uma tabela, ela retornar falso (.F.) e
no ir gerar um erro. Como resultado, no ser possvel utilizar FLOCK( ) para disparar uma rotina
ON ERROR.



Quando uma tabela est bloqueada, o usurio que a bloqueou tem acesso a ela para leitura e
gravao. Os outros usurios da rede tm acesso tabela somente para leitura. Para obter
informaes sobre como bloquear uma tabela e impedir que outros usurios tenham acesso a ela,
consulte SET EXCLUSIVE e USE.

A tabela permanece bloqueada at que o usurio altere isto. possvel desbloquear a tabela
emitindo UNLOCK, fechando-a ou saindo do Visual FoxPro. As tabelas podem ser fechadas com
USE, CLEAR ALL ou CLOSE DATABASES.

Como padro, a funo, FLOCK( ) tenta bloquear a tabela uma vez. Utilize SET REPROCESS para
repetir automaticamente o bloqueio de uma tabela caso a primeira tentativa falhe. SET
REPROCESS determina o nmero de tentativas de bloqueio ou o perodo de tempo durante o qual
so feitas essas tentativas, caso a inicial seja malsucedida. Para obter maiores informaes, consulte
SET REPROCESS.

possvel estabelecer relaes entre duas ou mais tabelas com SET RELATION. A colocao de
um bloqueio de arquivo em uma tabela relacionada a uma ou mais tabelas no coloca um bloqueio
de arquivo nas tabelas relacionadas. Voc deve colocar os bloqueios nelas e remov-los
explicitamente.

Para obter maiores informaes sobre bloqueio de registro e arquivo e sobre como compartilhar
tabelas em uma rede, consulte o captulo 17, Programando para acesso compartilhado, no Guia do
desenvolvedor.


FLOCK( ), exemplo de funo

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE produtos && Abre tabelas de produtos
SET REPROCESS TO 3 SECONDS
SELECT * FROM produtos INTO TABLE novoproduto

IF FLOCK( )
*** Inicilizao de produto novo ***
REPLACE ALL in_stock WITH 0.00
REPLACE ALL on_order WITH 0.00
WAIT 'Inicializao completa' WINDOW NOWAIT
ELSE
*** Arquivos esto bloqueados, avisar usurio ***
WAIT WINDOW 'Impossvel abrir arquivos de produtos; tente novamente mais tarde!'
NOWAIT

ENDIF

BROWSE FIELDS in_stock, on_order && Exibe tabela newprods
USE
ERASE novoprods.dbf


FLOOR( ), funo



Retorna o nmero inteiro mais prximo que seja menor ou igual expresso numrica especificada.

Sintaxe

FLOOR(nExpresso)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica a expresso numrica para a qual FLOOR( ) retorna o nmero inteiro mais
prximo que seja menor ou igual expresso numrica.


FLOOR( ), exemplo de funo

STORE 10.9 TO gnNumber1
STORE -10.1 TO gnNumber2

CLEAR
? FLOOR(gnNumber1) && Exibe 10
? FLOOR(gnNumber2) && Exibe -11
? FLOOR(10.0) && Exibe 10
? FLOOR(-10.0) && Exibe -10
FLUSH, comando


Salva no disco as modificaes feitas em um ndice ou em uma tabela.

Sintaxe

FLUSH



Comentrios

O comando FLUSH assegura que as modificaes feitas em todas as tabelas e ndices abertos sero
salvas no disco.

O Visual FoxPro salva automaticamente as alteraes no disco quando:

Voc fecha uma tabela com USE, CLOSE ALL ou CLOSE DATABASES. Apenas as
informaes do arquivo ou arquivos fechados sero descarregadas no disco.
Voc desbloqueia um registro ou um arquivo. Apenas as informaes do registro ou do
arquivo desbloqueado sero descarregadas no disco.








FONTMETRIC( ), funo


Retorna os atributos das fontes do sistema operacional atualmente instaladas.

Sintaxe

FONTMETRIC(nAtributo [, cNomeFonte, nTamanhoFonte [, cEstiloFonte]])



Tipos de retorno

Numrico

Argumentos

nAtributo Determina atributo de fonte que FONTMETRIC( ) retorna. Se voc omitir cNomeFonte,
nTamanhoFonte e cEstiloFonte, FONTMETRIC( ) retornar o atributo da fonte atual da janela de
sada ativa.

A tabela a seguir lista valores para nAtributo e os atributos de fonte correspondentes retornados.

NAtributo Atributo


1 Altura do caractere em pixels
2 Sinal ascendente de caractere (unidades acima da linha de base) em pixels
3 Sinal descendente de caractere (unidades abaixo da linha de base) em pixels
4 Espaos (entre linhas) em pixels
5 Espaos extras em pixels
6 Largura mdia do caractere em pixels
7 Largura mxima do caractere em pixels
8 Peso da fonte.
9 Itlico (0 =no, diferente de zero =sim)
10 Sublinhado (0 = no, diferente de zero = sim)
11 Riscado (0 = no, diferente de zero = sim)
12 Primeiro caractere definido na fonte
13 ltimo caractere definido na fonte
14 Caractere padro (substitudo por caracteres no contidos na fonte)
15 Caractere de quebra de texto.
16 Pitch e famlia
17 Conjunto de caracteres
18 Projeo(largura extra adicionada)
19 Aspecto horizontal para dispositivo de fonte
20 Aspecto vertical para dispositivo de fonte

* Estes atributos no esto disponveis no Visual FoxPro para Macintosh e retornam sempre 0.
Para obter maiores informaes sobre os valores numricos retornados por FONTMETRIC( ),
consulte a funo TEXTMETRIC no Guia de Referncia do Programador do Microsoft Windows.

cNomeFonte Especifica o nome de uma fonte instalada.
nTamanhoFonte Especifica o tamanho em pontos de uma fonte especificada com cNomeFonte.
cEstiloFonte Especifica um cdigo de estilo de fonte para a fonte especificada com cNomeFonte.
Se voc omitir cEstiloFonte, FONTMETRIC( ) retornar o atributo do estilo de fonte Normal.

cEstiloFonte pode ser um caractere ou uma combinao de caracteres listados na tabela de estilos de
fonte abaixo. Por exemplo, a combinao BI especifica o estilo de fonte Negrito Itlico.

Caractere Estilo de fonte

B Negrito
I Itlico
N Normal
O Delineado
Q Opaco
S Sombreado
- Riscado
T Transparente
U Sublinhado
Comentrios

A funo FONTMETRIC( ) retorna atributos da fonte atual da janela de sada ativa. Pode-se
utilizar. WFONT( ) para determinar a fonte da janela atual.
Para obter maiores informaes sobre como instalar ou remover fontes, consulte o captulo Painel
de Controle no Guia do Usurio do Microsoft Windows.















FOPEN( ), funo


Abre um arquivo ou porta de comunicao para uso com funes de arquivo de baixo nvel.

Sintaxe

FOPEN(cNomeArquivo [, nAtributo])



Tipos de retorno

Numrico

Argumentos

cNomeArquivo Especifica o nome do arquivo ou porta de comunicao a ser aberta. Se
cNomeArquivo um nome de arquivo, pode incluir um caminho para arquivos abertos nos
diretrios, pastas, unidades de disco ou volumes atualmente inexistentes no caminho de procura do
Visual FoxPro. Se o caminho no est includo, o Visual FoxPro procura pelo arquivo nos locais
abaixo:

Diretrio ou pasta padro
Caminho estabelecido com SET PATH



Observao O Visual FoxPro poder no reconhecer o caminho ou nome da propriedade se o disco
ou nome do diretrio contiver um ponto de exclamao (!).

nAtributo Especifica privilgios de leitura e gravao ou um esquema de utilizao de buffer para
o arquivo que voc abriu. A tabela a seguir lista cada nmero includo em nAtributo e os privilgios
de leitura e gravao do arquivo e esquema de utilizao de buffer que ele estabelece.

nAtributo Privilgio de leitura e gravao Utilizando buffer/no utilizando buffer

0 (Padro) Somente para leitura Utilizando buffer
1 Somente para gravao Utilizando buffer
2 Leitura e gravao Utilizando buffer
10 Somente para leitura No utilizando buffer
11 Somente para gravao No utilizando buffer
12 Leitura e gravao No utilizando buffer


Se nAtributo no estiver includo ou se nAtributo resultar em 0, o arquivo ser aberto somente para
leitura e utilizar buffer. As portas de comunicao devem estar sempre abertas sem uso do buffer.
Observao O Visual FoxPro no reconhecer apropriadamente um caminho se um nome de disco
ou diretrio contiver um ponto de exclamao (!).



Comentrios

Se FOPEN( ) conseguir abrir o arquivo ou a porta de comunicao, o nmero do identificador do
arquivo ou da porta ser retornado. Caso contrrio, FOPEN( ) retornar o valor 1.

Dica Atribua o nmero do identificador de arquivo a uma varivel de memria para que voc
possa acessar o arquivo ou a porta de comunicao pela varivel de memria em outras funes de
arquivo de baixo nvel.



As informaes abaixo sobre arquivos abertos com FOPEN( ) podem ser exibidas ou enviadas para
uma impressora utilizando-se DISPLAY STATUS ou LIST STATUS.

Unidade de disco e diretrio, ou volume e pasta e nome de arquivo
Nmero do identificador de arquivo
Posio do ponteiro do arquivo
Atributos de leitura e gravao



FOPEN( ), exemplo da funo

IF FILE('errors.txt') && Existe o arquivo?
gnErrFile = FOPEN('errors.txt',12) && Caso sim, abrir leitura e gravao
ELSE
gnErrFile = FCREATE('errors.txt') && Caso no, cri-lo
ENDIF
IF gnErrFile < 0 && Verificar erros na abertura de arquivos
WAIT 'Impossvel abrir ou criar arquivo de sada' WINDOW NOWAIT
ELSE && Caso no haja erro, gravar o arquivo
=FWRITE(gnErrFile, 'Informao de erro a ser gravada aqui')
ENDIF
=FCLOSE(gnErrFile) && Fechar arquivo

MODIFY FILE errors.txt NOWAIT && Abrir arquivo na janela editar
FOR ... ENDFOR, comando


Executa um conjunto de comandos, um determinado nmero de vezes.

Sintaxe

FOR Var = nValorInicial TO nValorFinal [STEP nIncremento]
Comandos
[EXIT]
[LOOP]
ENDFOR | NEXT



Argumentos

Var Especifica uma varivel ou um elemento de matriz que atue como contador. No necessrio
que a varivel ou o elemento de matriz j exista antes da execuo de FOR ... ENDFOR.

nValorInicial TO nValorFinal nValorInicial o valor inicial do contador e nValorFinal o valor
final do contador.

STEP nIncremento nIncremento o valor incrementado ou decrementado do contador. Caso
nIncremento seja negativo, o contador ser decrementado. Se voc omitir STEP, o contador ser
incrementado de 1.

Comandos Especifica os comando do Visual FoxPro a serem executados. Comandos pode incluir
qualquer nmero de comandos.

EXIT Transfere o controle do loop FOR ... ENDFOR para o comando logo depois de ENDFOR.
EXIT pode ser colocado em qualquer parte entre FOR e ENDFOR.

LOOP Retorna o controle diretamente para a clusula FOR sem executar as instrues entre LOOP
e ENDFOR. O contador incrementado ou decrementado como se ENDFOR tivesse sido atingido.
LOOP pode ser colocado em qualquer parte entre FOR e ENDFOR.



Comentrios

Utiliza-se uma varivel de memria ou um elemento de matriz como um contador para especificar
quantas vezes os comandos do Visual FoxPro dentro do loop FOR ... ENDFOR so executados.

Os comandos do Visual FoxPro depois de FOR so executados at ENDFOR ou NEXT ser
atingido. Em seguida, o contador NomeVarMem incrementado do valor de nIncremento. Se voc
omitir a clusula STEP, o contador ser incrementado em 1. Em seguida, o contador comparado
ao nValorFinal. Se ele for menor ou igual ao nValorFinal, os comandos depois da clusula FOR
sero executados novamente. Se for maior que o nValorFinal, o loop FOR ... ENDFOR ser
abandonado e a execuo do programa continuar com o primeiro comando depois de ENDFOR ou
NEXT.

Observao Os valores de nValorInicial, nValorFinal e nIncremento so, inicialmente, somente
para leitura. No entanto, uma alterao no valor do contador NomeVarMem dentro do loop afeta o
nmero de vezes que o loop executado.



Se o valor de nIncremento for negativo e o valor inicial nValorInicial for maior que o valor final
nValorFinal, o contador ser decrementado a cada execuo do loop.


FOR ... ENDFOR, exemplos do comando

No exemplo 1, os nmeros de 1 a 10 so exibidos.
P exemplo 2 utiliza variveis de memria para valores os inicial, final e STEP para exibir tudo,
inclusive registros pares de 2 a 10 em customer.

* Exemplo 1
CLEAR
FOR gnCount = 1 TO 10
? gnCount
ENDFOR

* Example 2
SET TALK OFF
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre tabela Customer
STORE 2 TO gnI && Valor inicial
STORE 10 TO gnJ && Valor final
STORE 2 TO K && Valor Step
FOR gnCount = gnI TO gnJ STEP K
GOTO gnCount && Move o ponteiro do registro
DISPLAY company && Exibe o nome da empresa
ENDFOR





FOR EACH ENDFOR, comando


Executa um conjunto de comandos para cada elemento em uma matriz ou coleo do Visual
FoxPro.

Sintaxe

FOR EACH Var IN Group
Comandos
[EXIT]
[LOOP]
ENDFOR | NEXT [Var]



Definio

Var Uma varivel ou elemento de matriz utilizado para interagir por meio dos elementos de
Grupo.

Grupo Uma matriz do Visual FoxPro, uma matriz OLE, uma coleo do Visual FoxPro ou uma
coleo OLE.

Comandos Especifica os comandos Visual FoxPro a serem executados para cada elemento em
Grupo. Comandos pode incluir qualquer quantidade de comandos.

EXIT Transfere o controle do loop FOR EACH ... ENDFOR para o comando imediatamente aps
ENDFOR. Pode-se colocar EXIT em qualquer parte entre FOR EACH e ENDFOR.

LOOP Retorna o controle diretamente para a clusula FOR EACH sem executar as instrues
entre LOOP e ENDFOR. LOOP pode ser colocado em qualquer parte entre FOR EACH e
ENDFOR.
Exemplos

O exemplos a seguir demonstram como FOR EACH utilizado para enumerar elementos em uma
matriz do Visual FoxPro, matriz OLE e um conjunto de botes de comando atribudos em uma
matriz de objeto.
No exemplo a seguir, uma matriz varivel do Visual FoxPro criada e FOR EACH utilizado para
exibir contedos para cada elemento da matriz.

DIMENSION cMyArray(3)
cMyArray[1] = A
cMyArray[2] = B
cMyArray[3] = C

FOR EACH cMyVar IN cMyArray
? cMyVar
ENDFOR



No exemplo a seguir, uma instncia do Microsoft Excel criada e um novo livro adicionado. FOR
EACH utilizado para exibir o nome de cada planilha na pasta de trabalho. Este exemplo requer
que o Microsoft Excel seja instalado corretamente na mquina onde o exemplo est sendo
executado.

oExcel = CREATE("Excel.Application")
oExcel.Workbooks.ADD

FOR EACH oMyVar IN oExcel.sheets
? oMyVar.name
NEXT oMyVar



No exemplo a seguir, cinco botes de comando so colocados em um formulrio. FOR EACH
utilizado para exibir os botes em formulrios e especifica legendas, estilos de fontes e posies de
cada boto.

PUBLIC oMyObject
oMyObject = CREATEOBJECT("frmTest")
oMyObject.SHOW

DEFINE CLASS frmTest AS FORM
Height = 200
DIMENSION MyArray[5]
PROCEDURE Init

FOR i = 1 to 5
THIS.AddObject('THIS.MyArray[i]',;
'COMMANDBUTTON')
ENDFOR

****** FOR EACH - NEXT ******
FOR EACH oButton IN THIS.MyArray
oButton.Visible = .T.
NEXT

****** elemento FOR EACH - NEXT ******
FOR EACH oButton IN THIS.MyArray
oButton.FontBold = .T.

NEXT obutton

j = 1
****** FOR EACH - ENDFOR ******
FOR EACH oButton IN THIS.MyArray
oButton.top = j * 30
j = j + 1
ENDFOR

****** elemento FOR EACH - ENDFOR ******
FOR EACH oButton IN THIS.MyArray
oButton.FontItalic = .T.
ENDFOR obutton

j = 1
****** EXIT ******
FOR EACH oButton IN THIS.MyArray
oButton.Caption = "teste" + str(j)
j = j+1
IF j > 3
EXIT
ENDIF

NEXT

j = 1
****** LOOP ******
FOR EACH oButton IN THIS.MyArray
IF j > 3
LOOP
ENDIF
j = j + 1
oButton.Left = 25
NEXT
ENDPROC
ENDDEFINE





FOR( ), funo


Retorna a expresso de filtragem de ndice de um arquivo de ndice de entrada nica (.IDX) aberto
ou uma marca de ndice.

Sintaxe

FOR([nNmerondice [, nreaTrabalho | cAliasTabela]])



Tipos de retorno

Caractere

Argumentos

Se voc no incluir nenhum dos argumentos opcionais, FOR( ) retornar a expresso de filtragem
de ndice para a marca de ndice ou o arquivo de ndice mestre. Se uma marca de ndice ou um
arquivo de ndice mestre no estiver em andamento (por exemplo, voc emitiu SET ORDER TO
para colocar a tabela na ordem de registro natural), FOR( ) retornar a seqncia vazia.

nNmerondice Especifica o arquivo ou a marca de ndice para o qual a expresso de filtragem
retornada. FOR( ) retorna expresses de filtragem na ordem a seguir, visto que nNmerondice
aumenta de 1 ao nmero total de marcas de ndice composto independente e estrutural e de arquivos
de entrada nica abertos:

1. Primeiramente, so retornadas as expresses de filtragem de arquivos de ndice de entrada
nica (caso algum esteja aberto). A ordem em que os arquivos de ndice de entrada nica so
includos em USE ou SET INDEX determinar a ordem de retorno das expresses de filtragem.
2. Em seguida, so retornadas as expresses de filtragem para cada marca no ndice composto
estrutural (caso haja algum). As expresses de filtragem so retornadas das marcas na ordem em
que estas so criadas no ndice estrutural.

3. Por ltimo, so retornadas as expresses de filtragem para cada marca em qualquer ndice
composto independente aberto. As expresses de filtragem so retornadas das marcas na ordem em
que estas so criadas nos ndices compostos independentes.

A seqncia vazia ser retornada se uma marca de ndice ou um ndice for criado sem a clusula
FOR ou se nNmerondice for maior do que o nmero total de marcas de ndice composto
independente e estrutural e de arquivos de entrada nica abertos.

nreaTrabalho Especifica a rea de trabalho da tabela para a qual FOR( ) retorna as expresses de
filtragem de ndice.

A funo FOR( ) retornar a seqncia vazia caso nenhuma tabela esteja aberta na rea de trabalho
especificada.

cAliasTabela Especifica o alias da tabela para a qual FOR( ) retorna as expresses de filtragem de
ndice.

O Visual FoxPro ir gerar uma mensagem de erro se voc especificar um alias de tabela
inexistente.



Comentrios

possvel criar ndices filtrados no Visual FoxPro. Se voc incluir a clusula opcional FOR
lExpresso em INDEX, o arquivo de ndice atuar como um filtro na tabela. Somente os registros
correspondentes expresso de filtragem lExpresso estaro disponveis para exibio e acesso.
So criadas chaves de ndice no arquivo de ndice apenas para os registros correspondentes
expresso de filtragem.

USE e SET INDEX suportam uma lista de nomes de arquivo de ndice, permitindo que se abra
vrios arquivos de ndice para uma tabela. Qualquer combinao de nomes de arquivo de ndice de
entrada nica e de nomes de arquivo de ndice composto independente ou estrutural pode ser
includa na lista de nomes de arquivo de ndice. A funo FOR( ) idntica a SYS(2021), sendo
fornecida para manter a compatibilidade com o dBASE IV.






















FOUND( ), funo


Retornar verdadeiro (.T.) se CONTINUE, FIND, LOCATE ou SEEK obtiver xito.

Sintaxe

FOUND([nreaTrabalho | cAliasTabela])



Tipos de retorno

Lgico

Argumentos

nreaTrabalho Especifica a rea de trabalho da tabela para a qual FOUND( ) retorna um valor
indicando o xito do ltimo CONTINUE, FIND, LOCATE ou SEEK.

FOUND( ) retornar falso (.F.) se uma tabela no for aberta na rea de trabalho especificada.

cAliasTabela Especifica o alias da tabela para a qual FOUND( ) retorna um valor indicando o xito
do ltimo CONTINUE, FIND, LOCATE ou SEEK.

O Visual FoxPro gera uma mensagem de erro se for especificado um alias de tabela que no existe.



Comentrios

FOUND( ) retorna um valor lgico que indica se o CONTINUE, FIND, LOCATE ou SEEK
executado mais recentemente obteve xito ou se o ponteiro do registro foi movido em uma tabela
relacionada. FOUND( ) retornar verdadeiro (.T.) se a procura obtiver xito; caso contrrio,
FOUND( ) retornar falso (.F.).

Se voc omitir os argumentos opcionais, FOUND( ) retornar um valor indicando o xito do ltimo
CONTINUE, FIND, LOCATE ou SEEK para a tabela aberta na rea de trabalho selecionada
atualmente.

Dica Esta funo pode ser utilizada para determinar se uma tabela filho tem algum registro
correspondente ao registro pai.



FOUND( ), exemplo da funo

No exemplo a seguir, todos os clientes da GERMANY foram contados.

SET TALK OFF
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abrir tabela Customer

STORE 0 TO gnCount
LOCATE FOR UPPER(country) = 'GERMANY'
DO WHILE FOUND( )
gnCount = gnCount + 1
CONTINUE
ENDDO
WAIT WINDOW 'Total de clientes da Alemanha: ' ;
+ LTRIM(STR(gnCount)) NOWAIT


































FPUTS( ), funo


Grava uma seqncia de caracteres, um retorno de carro e uma alimentao de linha em um arquivo
ou em uma porta de comunicao aberta com uma funo de arquivo de baixo nvel.

Sintaxe

FPUTS(nIdentificadorArquivo, cExpresso [, nCaracteresGravados])



Tipos de retorno

Numrico

Argumentos

nIdentificadorArquivo Especifica o nmero do identificador do arquivo ou da porta de
comunicao em que FPUTS( ) grava dados.

cExpresso Especifica a expresso de caracteres que FPUTS( ) grava no arquivo ou na porta.

nCaracteresGravados Especifica o nmero de caracteres em cExpresso para gravar no arquivo ou
na porta.

FPUTS( ) grava toda a expresso de caracteres cExpresso para o arquivo ou porta se
nCaracteresGravados for omitido. Se voc incluir nCaracteresGravados, os caracteres de
nCaracteresGravados sero gravados em um arquivo ou porta. Se nCaracteresGravados for menor
que o nmero de caracteres em cExpresso, somente os caracteres de nCaracteresGravados sero
gravados no arquivo ou na porta. Toda a cExpresso gravada em arquivos ou portas, se
nCaracteresGravados for igual ou maior que o nmero de caracteres em cExpresso.



Comentrios

FPUTS( ) retornar o nmero de bytes gravados para o arquivo ou porta. 0 ser retornado se, por
algum motivo, FPUTS( ) no puder gravar no arquivo ou porta.
























FREAD( ), funo


Retorna um nmero especificado de bytes a partir de um arquivo ou de uma porta de comunicao
aberta com uma funo de nvel inferior.

Sintaxe

FREAD(nIdentificadorArquivo, nBytes)



Tipos de retorno

Caractere

Argumentos

nIdentificadorArquivo Especifica o nmero do identificador de arquivo para o arquivo ou a porta
de comunicao a partir de onde FREAD( ) retorna os dados.

nBytes Especifica o nmero de bytes retornados por FREAD( ). FREAD( ). FREAD( ) retorna os
dados comeando na posio atual do ponteiro do arquivo e prossegue at retornar nBytes bytes ou
encontrar o fim do arquivo.


FREAD( ), exemplo de funo

O exemplo a seguir utiliza FREAD( ) para exibir o contedo de um arquivo. Se o arquivo estiver
vazio, uma mensagem ser exibida.

* TEST.TXT deve existir -- voc pode criar este arquivo
* utilizando Notepad.

Local gnFileHandle,nSize,cString
gnFileHandle = FOPEN("test.txt")
* Procure o fim do arquivo para determinar o nmero de bytes no arquivo
nSize = FSEEK(gnFileHandle, 0, 2) && Move o ponteiro para EOF
IF nSize <= 0
* Se o arquivo estiver vazio, exibe uma mensagem de erro
WAIT WINDOW "Este arquivo est vazio!" NOWAIT
ELSE
* Se o arquivo no estiver vazio, o programa armazena seu contedo

* na memria, em seguida exibe o texto na janela principal do Visual FoxPro
= FSEEK(ggnFileHandle, 0, 0) && Move o ponteiro para BOF
cString = FREAD(gnFileHandle, nSize)
? cString
ENDIF
= FCLOSE(gnFileHandle) && Fecha o arquivo











FREE TABLE, comando


Remove de uma tabela uma referncia a banco de dados.

Sintaxe

FREE TABLE NomeTabela



Argumentos

NomeTabela Especifica o nome da tabela a partir da qual a referncia ao banco de dados
removida.



Comentrios

Caso um banco de dados seja excludo acidentalmente do disco, as referncias a ele permanecem
nas tabelas que existiam no banco de dados. FREE TABLE exclui de uma tabela as referncias a
banco de dados, permitindo que voc abra a tabela ou adicione-a a um outro banco de dados.

FREE TABLE nunca deve ser emitido para excluir uma tabela de um banco de dados quando este
existe em disco. Neste caso, FREE TABLE pode inutilizar o banco de dados. Em seu lugar, utilize
REMOVE TABLE. Ao contrrio de FREE TABLE, REMOVE TABLE remove do banco de dados
todas as referncias a ndices primrios, valores padro e regras de validao associados tabela.





































FSEEK( ), funo


Move o ponteiro do arquivo em um arquivo aberto com uma funo de nvel inferior.

Sintaxe

FSEEK(nIdentificadorArquivo, nBytesMovidos[, nPosioRelativa])



Tipos de retorno

Numrico

Argumentos

nIdentificadorArquivo Especifica o identificador do arquivo no qual FSEEK( ) move o ponteiro do
arquivo. Um nmero de identificador de arquivo retornado por FCREATE( ) ou FOPEN( ) quando
o arquivo criado ou aberto.

nBytesMovidos Especifica o nmero de bytes para mover o ponteiro do arquivo. O ponteiro do
arquivo ser movido em direo ao fim do arquivo se nBytesMovidos for positivo, e em direo ao
incio do arquivo se nBytesMovidos for negativo.

nPosioRelativa Move o ponteiro do arquivo at uma posio relativa no arquivo. Como padro,
o ponteiro do arquivo movido em relao ao incio do arquivo. Voc pode tambm mover o
ponteiro em relao ao ponteiro do arquivo atual ou ao fim do arquivo, incluindo nPosioRelativa.

A tabela a seguir lista os valores para nPosioRelativa e a partir de onde o ponteiro do arquivo
movido.

nPosioRelativa Move o ponteiro do arquivo para um posio relativa

0 Ao incio do arquivo (padro).
1 posio do ponteiro do arquivo atual
2 Ao fim do arquivo

Comentrios

Aps mover o ponteiro do arquivo, FSEEK( ) retorna o nmero de bytes em que o ponteiro do
arquivo posicionado a partir do incio do arquivo. O ponteiro do arquivo pode tambm ser movido
com FREAD( ) e FWRITE( ).


FSEEK( ), exemplo de funo

A funo definida pelo usurio a seguir utiliza FSEEK( ) para retornar o tamanho de um arquivo. Se
voc no passar parmetros para a funo definida pelo usurio, ela retornar 2. Se o arquivo no
puder ser localizado, a funo definida pelo usurio retornar 1.

FUNCTION fsize2
PARAMETERS gcFileName && Arquivo a ser verificado
PRIVATE pnHandle,pnSize
IF PARAMETERS( ) = 0
RETURN -2 && Retorna -2 se nenhum parmetro for passado
ELSE
IF !FILE(gcFileName)
RETURN -1 && Retorna -1 se o arquivo no existir
ENDIF
ENDIF
pnHandle = FOPEN(gcFileName) && Abre o arquivo
pnSize = FSEEK(pnHandle,0,2) && Determina o tamanho do arquivo, atribui a pnSize
=FCLOSE(pnHandle) && Fecha o arquivo
RETURN pnSize && Retorna um valor





























FSIZE( ), funo


Retorna o tamanho em bytes de um campo ou arquivo especificado.

Sintaxe

FSIZE(cNomeCampo [, nreaTrabalho | cAliasTabela] | cNomeArquivo)



Tipos de retorno

Numrico

Argumentos

cNomeCampo Especifica o nome do campo.

nreaTrabalho Especifica a rea de trabalho da tabela para a qual FSIZE( ) retorna um tamanho
de campo.

FSIZE( ) retorna 0 se no houver uma tabela aberta na rea de trabalho que voc especificar.

cAliasTabela Especifica o alias da tabela para a qual FSIZE( ) retorna um tamanho de campo.

O Visual FoxPro gera uma mensagem de erro caso voc especifique um alias de tabela que no
existe.

cNomeArquivo Especifica um arquivo para o qual FSIZE( ) retorna o tamanho em bytes.



Comentrios

A definio atual de SET COMPATIBLE determina se FSIZE( ) retorna o tamanho de um campo
ou de um arquivo. Caso SET COMPATIBLE seja determinado com OFF ou FOXPLUS (padro),
FSIZE( ) retorna o tamanho de um campo. Se SET COMPATIBLE for determinado com ON ou
DB4, FSIZE( ) retorna o tamanho de um arquivo.

A tabela a seguir mostra o tamanho padro (em bytes) para cada tipo de campo.

Tipo de campo Tamanho de campo padro (em bytes)

Moeda 8
Data 8
DataHora 14
Duplo 8
Inteiro 4
Lgico 1
Memo 4
Geral 4


O tamanho do campo pode ser exibido com DISPLAY STRUCTURE e LIST STRUCTURE.
Se voc omitir os argumentos opcionais nreaTrabalho e cAliasTabela, FSIZE( ) retornar o
tamanho de campo para um campo da rea de trabalho e da tabela atuais.

FSIZE( ), exemplo de funo

O exemplo a seguir utiliza FSIZE( ) para retornar o tamanho de dois campos na tabela customer.

SET COMPATIBLE OFF
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer

CLEAR
? FSIZE('contact') && Exibe 30
? FSIZE('cust_id') && Exibe 6
























FTIME( ), funo


Retorna a hora da ltima modificao de um arquivo.

Sintaxe

FTIME(cNomeArquivo)



Tipos de retorno

Caractere

Argumentos

cNomeArquivo Especifica o nome do arquivo cuja hora da ltima modificao retornada por
FTIME( ). cNomeArquivo pode incluir um caminho com o nome do arquivo. Se no houver
nenhum caminho includo com o nome do arquivo, o Visual FoxPro procurar pelo arquivo no
diretrio ou pasta padro e nos diretrios ou pastas especificados por SET PATH.



Comentrios

A hora retornada por FTIME( ) atribuda ao arquivo pelo sistema operacional.

FTIME( ), exemplo de funo

O exemplo a seguir utiliza FTIME( ) para exibir a hora da ltima modificao em FOXUSER.DBF,
o arquivo de recursos do Visual FoxPro.

? FTIME('FOXUSER.DBF') && Exibe a hora da ltima modificao





























FULLPATH( ), funo


Retorna o caminho para um arquivo especificado ou o caminho relativo a um outro arquivo.

Sintaxe

FULLPATH(cNomeArquivo1 [, nCaminhoMSDOS | cNomeArquivo2])



Tipos de retorno

Caractere

Argumentos

cNomeArquivo1 Especifica o arquivo a ser procurado pelo Visual FoxPro. Certifique-se de incluir
a extenso do nome do arquivo.

Se o arquivo estiver localizado no caminho do Visual FoxPro, o caminho retornado com o nome
do arquivo. O caminho do Visual FoxPro pode ser especificado com SET PATH.

nCaminhoMSDOS Especifica que o caminho do MS-DOS procurado, em vez do caminho do
Visual FoxPro. nCaminhoMSDOS pode ter qualquer valor numrico. Caso o arquivo no possa ser
localizado no caminho do MS-DOS, um caminho e um nome de arquivo so retornados, como se o
arquivo tivesse sido encontrado no diretrio ou na pasta padro atual.

cNomeArquivo2 Especifica um segundo nome de arquivo a ser procurado. Certifique-se de incluir
a extenso do nome do arquivo. FULLPATH( ) retorna o caminho para o primeiro arquivo em
relao ao segundo arquivo.

































STRTRAN( ), funo


Procura uma expresso de caracteres ou um campo Memo para ocorrncias de uma segunda
expresso de caracteres ou campo Memo e, em seguida, substitui cada ocorrncia com uma terceira
expresso de caracteres ou campo Memo.

Sintaxe

STRTRAN(cProcurado, cProcurarPor [, cSubstituio]
[, nIniciarOcorrncia] [, nNmerodeOcorrncias])



Tipos de retorno

Caractere

Argumentos

cProcurado Especifica a expresso de caractere que procurada. cProcurado pode ser um campo
Memo.

cProcurarPor Especifica a expresso de caractere que procurada em cProcurado. A procura
considera maisculas/minsculas. cProcurar pode ser um campo Memo.

cSubstituio Especifica a expresso de caracteres que substitui cada ocorrncia de cProcurarPor
em cProcurado. Se voc omitir cSubstituio, cada ocorrncia de cProcurarPor substituda com a
seqncia vazia.

nIniciarOcorrncia Especifica qual ocorrncia de cProcurarPor a primeira a ser substituda. Por
exemplo, se nIniciarOcorrncia for 4, a substituio comea com a quarta ocorrncia de
cProcurarPor em cProcurado, e a primeira das trs ocorrncias de cProcurarPor permanece
inalterada. A ocorrncia onde a substituio comea padronizar a primeira ocorrncia de
cProcurarPor se voc omitir nIniciarOcorrncia.

nNmerodeOcorrncias Especifica o nmero de ocorrncias de cProcurarPor a serem substitudas.
Se voc omitir nNmerodeOcorrncias, todas as ocorrncias de cProcurarPor
iniciando com a ocorrncia especificada com nIniciarOcorrncia sero substitudas.



Comentrios

Voc pode especificar onde a substituio comea e quantas substituies so feitas. STRTRAN( )
retorna a seqncia de caracteres existente.


STRTRAN( ), exemplo da funo

STORE 'abracadabra' TO gcString
? STRTRAN(gcString, 'a', 'z') && Exibe zbrzczdzbrz
? STRTRAN(gcString, 'a', 'q', 2, 3) && Exibe abrqcqdqbra









SYSMETRIC( ), funo


Retorna o tamanho dos elementos de tela do sistema operacional.

Sintaxe

SYSMETRIC(nElementoTela)



Tipos de retorno

Numrico

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 tela
2 Altura da tela.
3 Largura da moldura dimensionvel da janela
4 Altura da moldura dimensionvel da janela
5 Largura das setas de rolagem na barra de rolagem vertical
6 Altura das setas de rolagem na barra de rolagem vertical
7 Largura das setas de rolagem na barra de rolagem horizontal
8 Altura das setas de rolagem na barra de rolagem horizontal
9 Altura do ttulo da janela
10 Largura da moldura no dimensionvel da janela
11 Altura da moldura no dimensionvel da janela
12 Largura da moldura da janela DOUBLE ou PANEL
13 Altura da moldura da janela DOUBLE ou PANEL
14 Largura da caixa de rolagem na barra de rolagem horizontal nas janelas de edio de texto
15 Altura da caixa de rolagem na barra de rolagem vertical nas janelas de edio de texto
16 Largura do cone da janela minimizada
17 Altura do cone da janela minimizada
18 Largura mxima do ponto de insero
19 Altura mxima do ponto de insero
20 Altura da barra de menus de linha simples
21 Largura da janela maximizada
22 Altura da janela maximizada
23 Altura da janela Kanji
24 Largura mnima dimensionvel da janela
25 Altura mnima dimensionvel da janela
26 Largura mnima da janela
27 Altura mnima da janela
28 Largura dos controles da janela
29 Altura dos controles da janela
30 1 se houver hardware do mouse; do contrrio 0
31 1 para verso de depurao do Microsoft Windows; do contrrio 0
32 1 se os botes do mouse estiverem trocados; do contrrio 0


Comentrios

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






























FUNCTION, comando


Identifica o incio de uma definio para uma funo definida pelo usurio.

Sintaxe

FUNCTION NomeFuno
Comandos
[RETURN [eExpresso]]
ENDFUNC

Argumentos

NomeFuno No Visual FoxPro, os nomes de funo podem ter at 254 caracteres.

Para distinguir entre um nome de arquivo de programa com mais de 10 caracteres e uma funo que
comea com os mesmos 10 caracteres nesses dois produtos, coloque o nome de arquivo de
programa entre aspas ou inclua uma extenso depois do nome de arquivo de programa.



Comentrios

Em muitos programas, certas rotinas so repetidas com freqncia. Definir as rotinas comumente
utilizadas como funes separadas reduz o tamanho e a complexidade do programa e facilita a sua
manuteno.

FUNCTION NomeFuno uma instruo dentro de um programa. Designa o incio de uma funo
em um programa e identifica a funo pelo nome.

FUNCTION NomeFuno seguido de uma srie de comandos do Visual FoxPro que compem a
funo. Voc pode incluir RETURN em qualquer lugar da funo para retornar controle ao
programa de chamada ou a outro programa e para definir um valor retornado pela funo definida
pelo usurio. Se voc no incluir um comando RETURN, um RETURN implcito
automaticamente executado quando a funo fechada. Se o comando RETURN no incluir um
valor de retorno (ou se um RETURN implcito for executado), o Visual FoxPro atribuir .T.
(Verdadeiro) como valor de retorno.

A funo finalizada com o comando ENDFUNC. Esse comando opcional, a funo fechada
quando encontra outro comando FUNCTION, um comando PROCEDURE ou o final do arquivo de
programa.

Os comentrios podem ser colocados na mesma linha depois de FUNCTION e ENDFUNC. Esses
comentrios so ignorados durante a compilao e a execuo do programa.

Voc no pode incluir um cdigo de programa executvel normal em um arquivo de programa
depois de utilizar as funes definidas pelo usurio; somente funes definidas pelo usurio,
procedimentos e definies de classe podem seguir o primeiro comando FUNCTION ou
PROCEDURE no arquivo.

Quando voc emite DO com um nome de funo, o Visual FoxPro procura a funo em uma ordem
especfica, da forma a seguir:

1. O Visual FoxPro procura no arquivo que contm o comando DO.

2. Caso a funo no seja encontrada ali, o Visual FoxPro procura nos arquivos de procedimentos
abertos. Os arquivos de procedimentos so abertos com SET PROCEDURE.

3. Caso a funo no seja encontrada em um arquivo de procedimentos aberto, o Visual FoxPro
procura nos programas da seqncia de execuo. Os arquivos de programa so procurados desde o
ltimo at o primeiro programa executado.

4. Caso a funo ainda no tenha sido encontrada, o Visual FoxPro procura um programa
independente. Se um arquivo de programa correspondente for encontrado, o programa executado.
Caso contrrio, o Visual FoxPro gera uma mensagem de erro.



A clusula IN deve ser includa em DO para executar uma funo em um arquivo especfico.

Como padro, os parmetros so passados para as funes por valor. Para obter informaes sobre a
passagem de parmetros para funes por referncia, consulte SET UDFPARMS. possvel passar
no mximo 27 parmetros para uma funo. Os parmetros podem ser passados para uma funo
incluindo uma instruo PARAMETERS ou LPARAMETERS na funo ou colocando uma lista de
parmetros imediatamente depois de FUNCTION NomeFuno. Coloque a lista de parmetros
entre parnteses e separe os parmetros com vrgulas.







FV( ), funo


Retorna o valor futuro de um investimento financeiro.

Sintaxe

FV(nPagamento, nTaxaJuros, nPerodos)



Tipos de retorno

Numrico

Argumentos

nPagamento Especifica o pagamento peridico e constante (que pode ser negativo ou positivo).

nTaxaJuros Especifica a taxa de juros peridica. Se a taxa de juros for anual mas os pagamentos
forem feitos mensalmente, divida a taxa de juros anual por 12.

nPerodos Especifica o nmero de perodos durante os quais os pagamentos so feitos. FV( )
considera que os pagamentos peridicos so feitos no final de cada perodo.



Comentrios

FV( ) calcula o valor futuro de uma srie de pagamentos peridicos e constantes com juros
compostos fixos. O valor futuro constitudo pelo total de todos os pagamentos acrescidos de juros.


FV( ), exemplo de funo

STORE 500 TO gnPayment && Pagamento mensal
STORE .075/12 TO gnInterest && Taxa de juros anual - 7,5%
STORE 48 TO gnPeriods && Quatro anos (48 meses)

CLEAR
? FV(gnPayment, gnInterest, gnPeriods) && Exibe 27887.93






















FWRITE( ), funo


Grava uma seqncia de caracteres em um arquivo ou em uma porta de comunicao aberta com
uma funo de arquivo de nvel inferior.

Sintaxe

FWRITE(nIdentificadorArquivo, cExpresso [, nCaracteresGravados])



Tipos de retorno

Numrico

Argumentos

nIdentificadorArquivo Especifica o nmero do identificador de arquivo para o arquivo ou a porta
de comunicao em que FWRITE( ) executa a gravao.

cExpresso Especifica a expresso de caracteres que FWRITE( ) grava no arquivo ou porta
especificada com nIdentificadorArquivo.

nCaracteresGravados FWRITE( ) grava a expresso de caracteres inteira no arquivo ou porta, a
menos que voc inclua nCaracteresGravados. Quando voc inclui nCaracteresGravados, so
gravados nCaracteresGravados caracteres no arquivo ou porta. Se nCaracteresGravados for menor
do que o nmero de caracteres em cExpresso, sero gravados apenas nCaracteresGravados
caracteres no arquivo ou porta. Todos os caracteres em cExpresso sero gravados no arquivo ou
porta se nCaracteresGravados for igual ou maior que o nmero de caracteres em cExpresso.



Comentrios

Diferente de FPUTS( ), FWRITE( ) no coloca um retorno de carro e uma alimentao de linha no
fim da seqncia de caracteres.

FWRITE( ) retorna o nmero de bytes gravados no arquivo ou porta de comunicao. Se
FWRITE( ) no puder executar a gravao no arquivo ou porta, ser retornado 0.
























GATHER, comando


Substitui os dados do registro atual para a tabela atualmente selecionada com dados de uma matriz,
um conjunto de variveis ou um objeto.

Sintaxe

GATHER FROM NomeMatriz | MEMVAR | NAME NomeObjeto
[FIELDS ListaCampo | FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura]
[MEMO]



Argumentos

FROM NomeMatriz Especifica a matriz cujos dados substituem aqueles do registro atual. O
contedo dos elementos da matriz, comeando do primeiro elemento, substitui o contedo dos
campos correspondentes do registro. O contedo do primeiro elemento da matriz substitui o
primeiro campo do registro, o contedo do segundo elemento da matriz substitui o segundo campo e
assim por diante.

Se a matriz tiver menos elementos do que a tabela tem campos, os campos adicionais sero
ignorados. Se a matriz tiver mais elementos do que a tabela tem campos, os elementos adicionais
sero ignorados.

MEMVAR Especifica as variveis de memria ou a matriz de onde os dados so copiados para o
registro atual. Os dados so transferidos da varivel de memria para o campo que possui o mesmo
nome da varivel de memria. O contedo do campo no ser substitudo se no existir uma
varivel de memria com o mesmo nome do campo.

Dica Voc pode criar variveis de memria com os mesmos nomes dos campos incluindo
MEMVAR ou BLANK em SCATTER.

NAME NomeObjeto Especifica um objeto cujas propriedades possuem os mesmos nomes dos
campos da tabela. O contedo de cada campo substitudo pelo valor da propriedade com os
mesmos nomes dos campos. O contedo de um campo no ser substitudo se no existir uma
propriedade com o mesmo nome do campo.

FIELDS ListaCampos Especifica os campos cujo contedo substitudo pelo contedo dos
elementos da matriz ou das variveis. Somente o campo especificado com ListaCampos tem seu
contedo substitudo.

FIELDS LIKE Estrutura | FIELDS EXCEPT Estrutura Voc pode substituir de forma seletiva os
campos com os contedos de elementos de matriz ou de variveis de memria incluindo as
clusulas LIKE ou EXCEPT, ou ambas. Se voc incluir a Estrutura LIKE, o Visual FoxPro
substituir os campos que correspondem Estrutura. Se incluir Estrutura EXCEPT, o Visual
FoxPro substituir todos os campos exceto os que correspondam Estrutura.

Estrutura suporta caracteres curinga (* e ?). Por exemplo, para substituir todos os campos que
comeam com as letras A e P, utilize:

GATHER FROM gamyarray FIELDS LIKE A*,P*



MEMO Especifica que o contedo dos campos Memo substitudo pelo contedo de elementos de
matriz ou de variveis de memria. Se voc omitir MEMO, os campos Memo sero ignorados
quando GATHER substituir o contedo dos campos pelo contedo de uma matriz ou de uma
varivel de memria. Os campos do tipo geral ou de figura so sempre ignorados em GATHER,
mesmo que voc inclua a palavra-chave MEMO.



GATHER, exemplo de comando

Exemplo 1
Este exemplo utiliza GATHER para copiar dados para um registro novo na tabela. Aps a criao
da tabela Test, SCATTER ser utilizado para criar conjunto de variveis baseados em campos de
tabela. Para cada campo ser, ento, atribudo um valor e um novo registro em branco adicionado
tabela.

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))
SCATTER MEMVAR BLANK
m.Object="Caixa"
m.Color="Vermelho"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE



Exemplo 2

Este exemplo utiliza GATHER junto clusula NAME para copiar dados para um registro novo na
tabela. Aps a criao da tabela Test, SCATTER utilizado para criar um objeto com propriedades
baseadas em campos na tabela. Atribui-se, ento, valores propriedade do objeto e adiciona-se um
novo registro em branco tabela.

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))

SCATTER NAME oTest BLANK
oTest.Object="Caixa"
oTest.Color="Vermelho"
oTest.SqFt=12.5
APPEND BLANK
GATHER NAME oTest
RELEASE oTest
BROWSE





















GETCOLOR( ), funo


Exibe a caixa de dilogo Cor do Windows e retorna o nmero da cor escolhida.

Sintaxe

GETCOLOR([nNmeroCorPadro])



Tipos de retorno

Numrico

Argumentos

nNmeroCorPadro Especifica a cor inicialmente selecionada quando a caixa de dilogo Cor
exibida. Se nNmeroCorPadro no corresponder a uma cor da caixa de dilogo Cor, a primeira cor
dessa caixa de dilogo ser selecionada. Se voc omitir nNmeroCorPadro, a cor preta ser
selecionada.



Comentrios

GETCOLOR( ) retornar 1 se voc sair da caixa de dilogo Cor pressionando ESC, selecionando
o boto Cancelar ou selecionando Fechar no menu Controle.

GETCOLOR( ), exemplo de funo



O exemplo a seguir exibe a caixa de dilogo Cor do ambiente Windows com a cor vermelha
selecionada. O nmero correspondente cor escolhida exibido quando voc sai da caixa de
dilogo.

CLEAR
? GETCOLOR(255)


























GETDIR( ), funo


Exibe a caixa de dilogo Selecionar diretrio, a partir da qual possvel selecionar um diretrio ou
uma pasta.

Sintaxe

GETDIR([cDiretrio [, cTexto]])



Tipos de retorno

Caractere

Argumentos

cDiretrio Especifica o diretrio ou pasta inicialmente exibido na caixa de dilogo. Quando
cDiretrio no especificado, a caixa de dilogo abre com o padro de diretrio ou pasta do Visual
FoxPro exibida.

cTexto Especifica o texto para a lista de diretrio ou pasta na caixa de dilogo. No Windows 3.1, o
texto aparece como legenda na barra de ttulos da caixa de dilogos. No Windows 95, o texto
aparece abaixo da barra de ttulos, dentro da caixa de dilogo.



Comentrios

GETDIR( ) retorna como seqncia de caracteres o nome do diretrio ou pasta selecionado.

Se voc no escolher um diretrio ou pasta (clicar Cancelar, pressionar ESC ou escolher Fechar no
menu Controle), GETDIR( ) retorna a seqncia vazia.































GETENV( ), funo


Retorna o contedo da varivel de ambiente do MS-DOS especificada.

Sintaxe

GETENV(cNomeVarivel)



Tipos de retorno

Caractere

Argumentos

cNomeVarivel Especifica o nome da varivel de ambiente do MS-DOS. A seqncia vazia ser
retornada se a varivel de ambiente do MS-DOS especificada no existir.

Voc pode localizar o diretrio Windows com a varivel de ambiente WINDIR, definida pelo
Windows quando ele inicializado.



Comentrios

Duas variveis de ambiente esto sempre disponveis: COMSPEC e PATH. possvel criar
variveis de ambiente personalizadas com o comando SET do MS-DOS.

Para obter maiores informaes sobre a criao de variveis de ambiente, consulte o manual do MS-
DOS.


GETENV( ), exemplo de funo

CLEAR
? GETENV('PATH') && Exibe o diretrio do MS-DOS



























GETFILE( ), funo


Exibe a caixa de dilogo Abrir e retorna o nome do arquivo selecionado.

Sintaxe

GETFILE([cExtensesArquivos] [, cTexto] [,cLegendaBotoAbrir]
[,nTipoBoto])



Tipos de retorno

Caractere

Argumentos

cExtensesArquivos Especifica as extenses dos arquivos exibidos na lista rolvel quando o item
de menu Todos os arquivos no escolhido. Se passar um valor como literal, inclua-o entre aspas.
No inclua um ponto (.) na frente de extenses de arquivos.


cExtensesArquivos pode apresentar diversos formatos:

Se cExtensesArquivos contiver uma nica extenso (por exemplo, .PRG), sero exibidos
apenas os arquivos com essa extenso.
Se cExtensesArquivos for uma seqncia vazia, todos os arquivos do diretrio ou pasta
atual sero exibidos, se cTipoCriador no estiver includo.
cExtensesArquivos tambm pode conter caracteres curinga (* e ?). Todos os arquivos com
extenses que correspondam aos critrios dos caracteres curinga so exibidos. Por exemplo, se
cExtensesArquivos for ?X?, todos os arquivos com extenso .FXP, .EXE e TXT sero exibidos.

No Visual FoxPro para Windows, cExtensesArquivos pode conter uma descrio de
arquivo seguida de uma extenso de arquivo ou uma lista de extenses de arquivos separados por
vrgulas. A descrio do arquivo aparece na caixa de listagem Tipos de arquivo. Separe a descrio
de arquivos da extenso de arquivo ou lista de extenses com dois pontos (:). Separe descries
mltiplas de arquivo com ponto e vrgula (;).

Por exemplo, se cExtensesArquivos Text:TXT a descrio do arquivo Text aparece na caixa
de listagem Tipos de arquivo e todos os arquivos com a extenso .TXT so exibidos.

Se cExtensesArquivos Tabelas:DBF; Arquivos: TXT,BAK a descrio dos arquivos Tabelas
e Arquivos aparece na caixa de listagem Tipos de arquivo. Quando Tabelas escolhida na
caixa de listagem Arquivos do tipo, todos os arquivos com uma extenso .DBF so exibidos.
Quando Arquivos escolhido da caixa de listagem Tipos de arquivo, todos os arquivos com
extenso .TXT e .BAK so exibidos.



cTexto Especifica o texto de uma lista de diretrios ou pastas na caixa de dilogo Abrir. No
ambiente Windows 95, o texto aparece abaixo da lista de arquivos e longas seqncias de texto
podem ser truncadas. No Macintosh, o texto aparece dentro da caixa de dilogo.

cLegendaBotoAbrir Especifica uma legenda para o boto OK.

nTipoBoto Especifica o nmero e o tipo dos botes que aparecem na caixa de dilogo Abrir. Os
botes a seguir sero exibidos na caixa de dilogo quando nTipoBoto for 0, 1 ou 2.

nTipoBoto Botes

0
(ou omitido) OK
Cancelar
1 OK
Novo
Cancelar
2 OK
Nenhum
Cancelar


Sem Ttulo retornado com o caminho especificado na caixa de dilogo Abrir se nTipoBoto 1
e o usurio escolhe o boto Novo. A seqncia vazia retornada nTipoBoto 2 e o usurio
escolhe o boto Nenhum.



Comentrios

GETFILE( ) retornar a seqncia vazia se voc exibir a caixa de dilogo Abrir, pressionando ESC,
escolhendo Cancelar ou escolhendo Fechar, no menu Controle.

GETFILE( ), exemplo de funo

CLOSE DATABASES
SELECT 0

gcTable = GETFILE('DBF', 'Procurar ou criar um.DBF:', 'Procurar',1)
DO CASE
CASE 'Sem ttulo' $ gcTable
CREATE (gcTable)
CASE EMPTY(gcTable)
RETURN
OTHERWISE
USE (gcTable)
BROWSE
ENDCASE
























GETFLDSTATE( ), funo


Retorna um valor numrico indicando se um campo em uma tabela ou em um cursor foi editado, se
um registro foi includo ou se o status excludo do registro atual foi alterado.

Sintaxe

GETFLDSTATE(cNomeCampo | nNmeroCampo[,cAliasTabela | nreaTrabalho])



Tipos de retorno

Numrico

Argumentos

cNomeCampo | nNmeroCampo Especifica o nome ou o nmero do campo para o qual o status de
edio retornado. O nmero de campo nNmeroCampo corresponde posio do campo na
estrutura da tabela ou cursor. DISPLAY STRUCTURE ou FIELD( ) podem ser utilizados para
determinar o nmero de um campo.

possvel especificar 1 para que nNmeroCampo retorne uma seqncia de caracteres que
consista de valores de status de edio e excluso para todos os campos na tabela ou cursor. Por
exemplo, se uma tabela apresentar cinco campos e apenas o primeiro tiver sido editado,
GETFLDSTATE( ) retornar:

121111



O nmero 1 na primeira posio indica que o status de excluso no foi alterado.

Voc pode, tambm, incluir 0 em nNmeroCampo para determinar se o status de excluso do
registro atual foi alterado desde a abertura da tabela ou cursor.

Observao Utilizando GETFLDSTATE( ) determina apenas se o status de excluso do registro
atual foi alterado. Por exemplo, se voc marcar um registro para ser excludo e tornar a cham-lo,
GETFLDSTATE( ) indicar se o status de excluso foi alterado, mesmo que o status de excluso do
registro tenha retornado ao seu estado original. Utilize DELETED( ) para determinar o status de
excluso de um registro.



cAliasTabela Especifica o alias da tabela ou do cursor para o qual o status de excluso de registro
ou edio de campo retornado.

nreaTrabalho Especifica a rea de trabalho da tabela ou do cursor para o qual o status de
excluso de registro ou edio de campo retornado.

Se um alias ou uma rea de trabalho no forem especificados, GETFLDSTATE( ) retornar um
valor para um campo na tabela ou no cursor selecionado no momento.



Comentrios

A tabela a seguir lista os valores de retorno de caractere e o status de edio ou excluso
correspondente.

Valor de retorno Status de edio ou excluso

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


A utilizao de buffer de linha ou de tabela deve ser ativada com CURSORSETPROP( ) para que
GETFLDSTATE( ) opere em tabelas locais.
O status de excluso ou edio ser retornado para a tabela ou cursor que estiver aberto na rea de
trabalho selecionada no momento, se GETFLDSTATE( ) for emitido sem os argumentos opcionais
cAliasTabela ou nreaTrabalho.


GETFLDSTATE( ), exemplo de funo

O exemplo a seguir demonstra como utilizar a funo GETFLDSTATE( ) para determinar se o
contedo de um campo foi alterado. MULTILOCKS ativado (ON), um requerimento para
utilizao de buffer de tabela. A tabela customer no banco de dados testdata aberto e
CURSORSETPROP( ) , ento, utilizado para ajustar o modo de utilizao do buffer para utilizao
de buffer de tabela otimista (5).
GETFLDSTATE( ) emitido para exibir um valor correspondente (1) para o estado no modificado
do campo cust_id, antes que o mesmo seja modificado. O campo cust_id modificado com
REPLACE e GETFLDSTATE( ) emitido novamente para exibir um valor correspondente (2) e
modificar o estado do campo cust_id. TABLEREVERT( ) utilizado para retornar a tabela ao seu
estado original e GETFLDSTATE( ) emitido novamente para exibir um valor correspondente (1)
ao estado original do campo cust_id.

CLOSE DATABASES
CLEAR

SET MULTILOCKS ON && Permite utilizao de buffer de tabela
OPEN DATABASE SYS(2004)+"samples\data\testdata"
USE Customer && Abre tabela customer
=CURSORSETPROP("Utilizao do buffer",5,"cliente") && Ativa utilizao de buffer de tabela

* Obtm estado do campo no campo original cust_id e exibe estado
nState=GETFLDSTATE("cust_id")
DO DisplayState WITH nState

* Altera contedo do campo e exibe estado

REPLACE cust_id WITH "***"
nState=GETFLDSTATE("cust_id")
DO DisplayState WITH nState

* Descarta alterao de tabela e exibe estado
= TABLEREVERT(.T.) && Descarta todas alteraes de tabela
nState=GETFLDSTATE("cust_id")
DO DisplayState WITH nState

PROCEDURE DisplayState
PARAMETER nState
DO CASE
CASE nState=1
=MESSAGEBOX("Campo no foi modificado ",0,"Resultados")
OTHERWISE
=MESSAGEBOX("Campo foi modificado ",0,"Resultados")

ENDCASE




























GETFONT( ), funo


Exibe a caixa de dilogo Fonte e retorna o nome da fonte selecionada.

Sintaxe

GETFONT( )



Tipos de retorno

Caractere

Comentrios

GETFONT( ) retorna o nome, o tamanho e o estilo da fonte selecionada. Sua escolha retornada
como uma seqncia de caracteres com o nome, o tamanho e o estilo da fonte separados por
vrgulas.

GETFONT( ) retorna a seqncia vazia quando voc sai da caixa de dilogo Fonte selecionando
Cancelar ou Fechar, no menu Controle, ou pressionando ESC.

Observao Os comandos e funes do Visual FoxPro podem ser abreviados para quatro
caracteres. No caso de GETFONT( ) e GETFILE( ), em que ambos comeam com as mesmas
quatro letras, a precedncia dada para GETFILE( ). Ao emitir GETF( ), a caixa de dilogo Abrir
emitida.





































GETNEXTMODIFIED( ), funo


Retorna o nmero de registro do registro modificado que segue em um buffer de tabela ou cursor.

Sintaxe

GETNEXTMODIFIED(nNmeroRegistro[,cAliasTabela | nreaTrabalho])



Tipos de retorno

Numrico

Argumentos

nNmeroRegistro Especifica o nmero de registro aps o qual GETNEXTMODIFIED( ) procura o
registro modificado seguinte. Especifique 0 em nNmeroRegistro para determinar o primeiro
registro modificado na tabela ou no cursor.

cAliasTabela Especifica o alias da tabela ou cursor para o qual GETNEXTMODIFIED( ) retorna o
nmero do prximo registro modificado.

nreaTrabalho Especifica a rea de trabalho da tabela ou cursor para o qual
GETNEXTMODIFIED( ) retorna o nmero do prximo registro modificado.

Se voc no especificar um alias ou uma rea de trabalho, GETNEXTMODIFIED( ) retornar o
nmero de registro correspondente ao prximo registro modificado na tabela ou cursor selecionados
no momento.



Comentrios

GETNEXTMODIFIED( ) retornar 0 se no houver nenhum registro modificado depois daquele
que voc especificou. Um registro ser considerado modificado se o contedo de qualquer um de
seus campos sofrer qualquer tipo de alterao (mesmo se o contedo original do campo for
restaurado) ou o status de excluso do registro for alterado.

GETNEXTMODIFIED( ) pode operar somente em tabelas e cursores para os quais a utilizao de
buffer de tabela estiver ativada. A utilizao de buffer de tabela ativada com
CURSORSETPROP( ).


GETNEXTMODIFIED( ), exemplo da funo



O exemplo a seguir demonstra como se pode utilizar GETNEXTMODIFIED( ) para determinar
quais registros em uma tabela foram alterados. MULTILOCKS ajustado para ON, um
requerimento para utilizao de buffer de tabela. A tabela customer no banco de dados testdata
aberta, e CURSORSETPROP( ) , ento utilizada para ajustar o modo de utilizao do buffer para
utilizao de buffer otimista (5).
SKIP emitido para mover o ponteiro do registro para o segundo registro, e o campo cust_id
modificado com REPLACE. GETNEXTMODIFIED(0) utilizado para exibir um nmero de
registro do registro seguinte modificado (2, o segundo registro), iniciando a partir do incio da
tabela. TABLEREVERT( ) utilizado para retornar a tabela ao seu estado original, e
GETNEXTMODIFIED(0) novamente utilizado para exibir o nmero do registro do registro
seguinte modificado (0, indicando que no h registros modificados).

CLOSE DATABASES
CLEAR

OPEN DATABASE SYS(2004)+"samples\data\testdata"
SET MULTILOCKS ON && Permite utilizao de buffer de tabela
UTILIZE Customer && Abre a tabela customer
=CURSORSETPROP("Utilizao de tabela", 5, "cliente") && ativa utilizao de buffer de tabela

SKIP && Move o registro do ponteiro para o segundo registro

* Altera o contedo dos campos
REPLACE cust_id WITH "***"

* Chama a funo MESSAGEBOX com resultados de GETNEXTMODIFIED
=MESSAGEBOX("Registro " + ALLTRIM(STR(GETNEXTMODIFIED(0))) + ;

" alterado.",0,"Resultados")

* Retorna a tabela e exibe resultados com MESSAGEBOX
=TABLEREVERT(.T.) && Descarta todas as alteraes de tabela
nChange=GETNEXTMODIFIED(0)
IF nChange=0
=MESSAGEBOX("Registro(s) foram revertidos.",0,"Resultados")
ELSE
=MESSAGEBOX("Registro " + ALLTRIM(STR(GETNEXTMODIFIED(0))) + ;
" alterado.",0,"Resultados")
ENDIF































GETPAD( ), funo


Retorna o ttulo de menu para uma dada posio na barra de menus.

Sintaxe

GETPAD(cNomeBarraMenus, nPosioBarraMenus)



Tipos de retorno

Caractere

Argumentos

cNomeBarraMenus Especifica o nome da barra de menus.

nPosioBarraMenus Especifica uma posio na barra de menus. nPosioBarraMenus pode variar
de 1 (o nome situado mais esquerda na barra de menus) at o nmero de ttulos de menus na barra
de menus.



Comentrios

Os nomes de menus em uma barra de menus podem ser adicionados, removidos ou reorganizados.
Utilize DEFINE PAD para adicionar um nome de menu a uma barra de ttulos ou RELEASE PAD
para remover um ttulo de menu.


GETPAD( ), exemplo da funo



O programa a seguir utiliza GETPAD( ) para testar se o nome do menu Editar uma barra de menu
do sistema no Visual FoxPro. Caso afirmativo, GETPAD( ) retornar o nome do menu. (Para
retornar a barra de menu Editar ao seu estado padro, emita o comando SET SYSMENU TO
DEFAULT.)

FOR gnCount = 1 TO CNTPAD('_msysmenu') && Nmero de pads
IF PRMPAD('_msysmenu', GETPAD('_msysmenu', gnCount)) = 'Edit'
RELEASE PAD (GETPAD('_msysmenu', gnCount)) OF _msysmenu
EXIT
ENDIF
ENDFOR
















GO | GOTO, comando


Move o ponteiro do registro para o nmero de registro especificado.

Sintaxe

GO [RECORD] nNmeroRegistro [IN nreaTrabalho | IN cAliasTabela]
Ou
GO TOP | BOTTOM [IN nreaTrabalho | IN cAliasTabela]
Ou
GOTO [RECORD] nNmeroRegistro [IN nreaTrabalho | IN cAliasTabela]
Ou
GOTO TOP | BOTTOM [IN nreaTrabalho | IN cAliasTabela]



Argumentos

RECORD nNmeroRegistro Especifica o nmero do registro fsico para o qual o ponteiro do
registro deve ser movido. Voc pode omitir GO ou GOTO totalmente e especificar apenas o nmero
do registro. Caso especifique apenas o nmero do registro, voc poder mover o ponteiro do
registro somente dentro da rea de trabalho atual.

IN nreaTrabalho Especifica a rea de trabalho da tabela na qual o ponteiro do registro movido.

IN cAliasTabela Especifica o alias da tabela na qual o ponteiro do registro movido.

TOP Posiciona o ponteiro do registro no primeiro registro na tabela. Caso a tabela esteja utilizando
um ndice ascendente, o primeiro registro ser o que apresenta o menor valor-chave. Se o ndice
estiver em ordem descendente, o primeiro registro ser o que apresenta o maior valor-chave.

BOTTOM Posiciona o ponteiro do registro no ltimo registro da tabela. Caso a tabela esteja
utilizando um ndice ascendente, o ltimo registro ser o que apresenta o maior valor-chave. Se o
ndice estiver em ordem descendente, o ltimo registro ser o que apresenta o menor valor-chave.



Comentrios

GO e GOTO podem ser utilizados alternativamente. Estes comandos operam na rea de trabalho
atual da tabela, a menos que voc especifique outra rea de trabalho com a clusula IN.


GO | GOTO, exemplo do comando



CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
UTILIZE products && Abre tabela de produtos
UTILIZE customer IN 0 && Abre tabela Customer
GO BOTTOM IN products
CLEAR
? RECNO('produtos')
GO TOP
? RECNO( ) && Exibe 1
GO 5
? RECNO( ) && Exibe 5


































GOMONTH( ), funo


Retorna a data que indica um nmero de meses especificado antes ou depois de uma determinada
expresso de data ou de data e hora.

Sintaxe

GOMONTH(dExpresso | tExpresso, nNmeroDeMeses)



Tipos de retorno

Data

Argumentos

dExpresso Especifica uma expresso de data para a qual GOMONTH( ) retorna a data.

tExpresso Especifica uma expresso de data e hora para a qual GOMONTH( ) retorna a data.

NNmeroDeMeses Especifica o nmero de meses da data ou data e hora. Especifica o nmero de
meses da data ou da data e hora. Se nNmeroDeMeses for positivo, GOMONTH( ) retornar uma
data correspondente a nNmeroDeMeses meses depois da data ou data e hora. Se
nNmeroDeMeses for negativo, GOMONTH( ) retornar uma data correspondente a
nNmeroDeMeses meses antes da data ou data e hora.



GOMONTH( ), exemplo da funo



SET CENTURY ON
STORE GOMONTH({08/02/95}, 5) TO gdDeadLine

CLEAR
? gdDeadLine && Exibe 01/02/1996
? GOMONTH({12/31/95}, 2) && Exibe 02/29/1996
? GOMONTH({12/31/95}, -2) && Exibe 10/31/1995
























HEADER( ), funo


Retorna o nmero de bytes no cabealho do arquivo de tabela atual ou especificado.

Sintaxe

HEADER([nreaTrabalho | cAliasTabela])



Tipos de retorno

Numrico

Argumentos

nreaTrabalho | cAliasTabela Retorna o tamanho do cabealho de uma tabela aberta em uma outra
rea de trabalho. nreaTrabalho especifica o nmero da rea de trabalho e cAliasTabela especifica
o alias da tabela. Se a rea de trabalho e o alias forem omitidos, HEADER( ) retornar o tamanho
do cabealho da tabela aberta na rea de trabalho atual.

HEADER( ) retornar 0 se no houver uma tabela aberta na rea de trabalho especificada. Se uma
tabela no possuir o alias especificado, o Visual FoxPro exibir uma mensagem de erro.



Comentrios

Um cabealho de tabela contm informaes sobre a prpria tabela, como os tamanhos e nomes de
campo e a presena de um arquivo de memo ou ndice estrutural.
































HELP, comando


Abre a janela da Ajuda.

Sintaxe

HELP
[Tpico | ID nIDContexto]
[IN [WINDOW] NomeJanela | IN [WINDOW] SCREEN
| IN [WINDOW]]
[NOWAIT]



Argumentos

Tpico Especifica o tpico da Ajuda a ser exibido. Se voc incluir somente um trecho de um ttulo
de tpico, o Visual FoxPro abre a janela da Ajuda e exibe o tpico com o ttulo que mais
corresponde ao trecho includo.

ID nIDContexto Especifica o tpico da Ajuda a exibir, com base na ID de contexto do tpico.

Ao utilizar a Ajuda no estilo .DBF, nIDContexto ser um valor no campo Contextid da tabela da
ajuda. O campo Contextid dever ser o primeiro campo da tabela.

Ao utilizar a Ajuda no estilo grfico, nIDContexto ser um nmero de contexto na seo MAP do
arquivo de projeto da Ajuda.

IN [WINDOW] NomeJanela Abre a janela da Ajuda dentro de uma janela pai. A janela da Ajuda
no assume as caractersticas da janela pai onde colocada. Se a janela da Ajuda
for ativada dentro de uma janela pai, no poder ser movida para fora da janela pai. Se a janela pai
for movida, a janela da Ajuda ser movida com ela. Para abrir a janela da Ajuda
de dentro de uma janela pai, necessrio que a janela pai seja primeiro definida com DEFINE
WINDOW.

IN [WINDOW] SCREEN Coloca a janela da Ajuda explicitamente na janela principal do Visual
FoxPro.

NOWAIT Na Ajuda do estilo .DBF, especifica que a execuo do programa deve continuar depois
da janela da Ajuda ser aberta. Caso voc omita NOWAIT ao utilizar a Ajuda do estilo .DBF, a
execuo do programa ser suspensa na linha que contm o comando HELP at que a janela da
Ajuda seja fechada.

Na Ajuda do estilo grfico, o argumento NOWAIT no tem efeito e a execuo do programa
sempre continua depois que o comando HELP emitido.



Comentrios

Para obter maiores informaes sobre a criao do seu prprio sistema de Ajuda, consulte a parte 7,
Criando arquivos de ajuda, no Guia do Desenvolvedor.









HIDE MENU, comando


Oculta uma ou mais barras de menus ativas ou definidas pelo usurio.

Sintaxe

HIDE MENU NomeBarraMenu1 [, NomeBarraMenu2 ...] | ALL
[SAVE]



Argumentos

NomeBarraMenu1 [, NomeBarraMenu2 ...] Especifica o nome da barra de menus ou uma lista de
barras de menus (separadas por vrgulas) a serem ocultadas.

ALL Oculta todas as barras de menus definidas.

SAVE Coloca uma imagem de uma barra de menus na tela ou em uma janela. Colocar uma
imagem de uma barra de menus na tela til durante o desenvolvimento e teste de um programa.
Imagens de barras de menus podem ser retiradas da janela principal do Visual FoxPro ou de uma
janela definida pelo usurio com CLEAR.



Comentrios

HIDE MENU remove a barra de menus especificada, um conjunto de barras de menus ou todas as
barras de menus da janela principal do Visual FoxPro ou de uma janela definida pelo usurio sem
remover a definio de menu da memria. Para que uma barra de menus possa ser ocultada, ela
deve primeiro ser criada com DEFINE MENU. Ocultar uma barra de menus no a mesma coisa
que desativ-la. Quando uma barra de menus est oculta, ela fica residente na memria e pode ser
exibida na janela principal do Visual FoxPro ou em uma janela definida pelo usurios com
ACTIVATE MENU ou SHOW MENU.




























HIDE POPUP, comando


Oculta um ou mais menus ativos criados com DEFINE POPUP.

Sintaxe

HIDE POPUP NomeMenu1 [, NomeMenu2 ...] | ALL
[SAVE]



Argumentos

NomeMenu1 [, NomeMenu2 ...] Especifica o nome do menu ou da lista de menus (separados por
vrgula) a serem ocultados.

ALL Oculta todos os menus definidos.

SAVE Coloca uma imagem de um menu na janela principal do Visual FoxPro ou em uma janela
definida pelo usurio. Colocar uma imagem de um menu na tela til durante o desenvolvimento e
teste do programa. As imagens de menu podem ser retiradas da janela principal do Visual FoxPro
ou de uma janela definida pelo usurio com CLEAR.



Comentrios

HIDE POPUP remove o menu especificado, um conjunto de menus ou todos os menus da janela
principal do Visual FoxPro ou de uma janela definida pelo usurio sem remover as definies de
menu da memria. Para que um menu possa ser ocultado, ele deve primeiro ser criado com
DEFINE POPUP. Ocultar um menu no a mesmo coisa que desativ-lo. Quando um menu
ocultado, ele fica residente na memria e pode ser exibido na janela principal do Visual FoxPro ou
em uma janela definida pelo usurio com ACTIVATE POPUP ou SHOW POPUP.






























HIDE WINDOW, comando


Oculta uma janela ativa definida pelo usurio ou uma janela do sistema do Visual FoxPro.

Sintaxe

HIDE WINDOW NomeJanela1 [, NomeJanela2 ... ] | ALL | SCREEN
[ IN [WINDOW] NomeJanelaN | IN [WINDOW] SCREEN
| IN [WINDOW]]
[BOTTOM | TOP | SAME]



Argumentos

NomeJanela1 [, NomeJanela2 ...] Especifica o nome da janela ou uma lista de janelas (separadas
por vrgulas) a serem ocultadas. Caso voc emita HIDE WINDOW sem argumentos, a janela ativa
ser ocultada. No Visual FoxPro, possvel especificar o nome de uma barra de ferramentas a ser
ocultada. Consulte SHOW WINDOW para obter uma lista dos nomes das barras de ferramentas do
Visual FoxPro.

ALL Oculta todas as janelas.

SCREEN Oculta a janela principal do Visual FoxPro. Para exibi-la novamente, emita ACTIVATE
WINDOW SCREEN ou SHOW WINDOW SCREEN.

IN [WINDOW] NomeJanelaN Oculta a janela em uma janela-pai.

IN [WINDOW] SCREEN Oculta explicitamente uma janela na janela principal do Visual FoxPro.

BOTTOM | TOP | SAME Especifica a posio em que as janelas esto ocultas em relao a outras
janelas. BOTTOM coloca uma janela atrs de todas as outras. TOP (padro) coloca uma janela em
frente a todas as outras. SAME oculta uma janela sem afetar sua colocao frontal ou posterior.
Para preservar as posies relativas de vrias janelas ocultas quando elas so reexibidas com
SHOW WINDOW ALL, inclua a palavra-chave SAME ao ocultar as janelas.



Comentrios

HIDE WINDOW HIDE WINDOW remove uma janela ou um conjunto de janelas da janela
principal do Visual FoxPro ou de uma janela definida pelo usurio. possvel utilizar HIDE
WINDOW para ocultar janelas do sistema como a janela Comando, a janela Sesso de dados e
assim por diante.

Ocultar uma janela no o mesmo que fech-la. Ao ser ocultada, a janela permanece na memria e
continua ativa. A sada pode ser enviada para uma janela oculta, mas no possvel visualiz-la.

Liberar uma janela remove-a da memria. As janelas removidas da memria devem ser redefinidas
para serem exibidas novamente. Uma janela pode ser exibida com ACTIVATE WINDOW ou
SHOW WINDOW.

Para ocultar uma janela do sistema ou uma barra de ferramentas (no Visual FoxPro), coloque a
janela do sistema inteira ou o nome da barra de ferramentas entre aspas. Por exemplo, para ocultar a
barra de ferramentas Controles de relatrio no Visual FoxPro, emita o comando:

HIDE WINDOW Controles de Relatrio



HIDE WINDOW, exemplo de comando

No exemplo a seguir, uma janela denominada wOutput1 definida e ativada. O programa espera
que voc pressione uma tecla para, em seguida, ocultar a janela. O programa espera que voc
pressione uma tecla novamente para, depois, exibir a janela. O pressionamento de uma tecla pela
terceira vez remove a janela da tela e da memria.

DEFINE WINDOW wOutput1 FROM 6,1 TO 19,75 TITLE 'Output' ;
CLOSE FLOAT GROW SHADOW ZOOM
ACTIVATE WINDOW wOutput1

WAIT WINDOW 'Press a key to hide this window'
HIDE WINDOW wOutput1

WAIT WINDOW 'Press a key to see the window again'
SHOW WINDOW wOutput1

WAIT WINDOW 'Press a key to remove the window from memory'
DEACTIVATE WINDOW wOutput1
RELEASE WINDOW wOutput1






HOME( ), funo


Retorna o nome do diretrio de onde o Visual FoxPro foi inicializado.

Sintaxe

HOME( )



Tipos de Retorno

Caractere

Comentrios

HOME( ) retorna o nome do diretrio de onde o Visual FoxPro foi inicializado.

HOME( ) idntico a SYS(2004) e fornecido para manter a compatibilidade com o dBASE IV.


HOME( ), exemplo de funo



? 'Diretrio de inicializao do Visual FoxPro : ', HOME( )




HOUR( ), funo


Retorna a parte da hora de uma expresso DataHora.

Sintaxe

HOUR(tExpresso)



Argumentos

tExpresso Especifica uma expresso DataHora da qual HOUR( ) retorna a hora.



Tipos de Retorno

Numrico

Comentrios

HOUR( ) retorna um valor numrico baseado em um formato de 24 horas e no afetado pela
definio atual de SET HOURS. Por exemplo, se SET HOURS 12 ou 24, o comando a seguir
retorna 13:

? HOUR({02/16/95 1:00pm})


HOUR( ), exemplo de funo

O exemplo a seguir exibe a parte de hora do horrio atual e a parte de hora de um horrio
especfico.

CLEAR
? HOUR(DATETIME( ))
? HOUR({10:42am}) && Exibe 10





























IF... ENDIF, comando


Executa condicionalmente um conjunto de comandos baseados no valor de uma expresso lgica.

Sintaxe

IF lExpresso [THEN]
Comandos
[ELSE
Comandos]
ENDIF



Argumentos

lExpresso Especifica a expresso lgica avaliada. Caso lExpresso resulte em verdadeiro (.T.),
todos os comandos depois de IF ou THEN e antes de ELSE ou ENDIF (aquele que ocorrer
primeiro) sero executados.

Se lExpresso for falso (.F.) e ELSE for includo, todos os comandos depois de ELSE e
antes de ENDIF sero executados.
Se lExpresso for falso (.F.) e ELSE no for includo, todos os comandos entre IF e ENDIF
sero ignorados. Neste caso, a execuo do programa continuar com o primeiro comando depois
de ENDIF.



Comentrios

possvel aninhar um bloco IF... ENDIF dentro de outro bloco IF... ENDIF.

Os comentrios precedidos por && podem ser colocados na mesma linha depois de IF, THEN,
ELSE e ENDIF. Esses comentrios so ignorados durante a compilao e a execuo do programa.


IF... ENDIF, exemplo do comando

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

GETEXPR 'Digite a condio para localizar ' TO gcTemp;
TYPE 'L' DEFAULT 'EMPRESA = ""'
LOCATE FOR &gcTemp && Digita a expresso LOCATE
IF FOUND( ) && Foi encontrado?
DISPLAY && Em caso positivo, exibe o registro
ELSE && Em caso negativo
? 'Condio ' + gcTemp + ' no encontrada ' && Exibe a mensagem
ENDIF
USE











IIF( ), funo


Retorna um de dois valores, dependendo do valor de uma expresso lgica.

Sintaxe

IIF(lExpresso, eExpresso1, eExpresso2)



Tipos de retorno

Caractere, Numrico, Moeda, Data ou DataHora

Argumentos

lExpresso Especifica a expresso lgica que IIF( ) avalia.

eExpresso1, eExpresso2 Se lExpresso resultar em verdadeiro (.T.), ser retornado eExpresso1.
Se lExpresso resultar em falso (.F.), ser retornado eExpresso2.



Comentrios

Esta funo, tambm conhecida como IF Imediato, avalia uma expresso lgica e, em seguida,
retorna uma de duas expresses. Se a expresso lgica resultar em verdadeiro (.T.), IIF( ) retornar
a primeira expresso. Se a expresso lgica resultar em falso (.F.), IIF( ) retornar a segunda
expresso.

Dica Pode-se utilizar esta funo no lugar de IF ... ENDIF com expresses condicionais simples.
Ela especialmente til em expresses de relatrio e etiqueta que especificam condicionalmente
contedos de campos. A execuo da funo IIF( ) tambm consideravelmente mais rpida do que
a execuo de uma funo IF ... ENDIF equivalente.


IIF( ), exemplo da funo

O exemplo a seguir utiliza IIF( ) para verificar se o campo Notes na tabela employee est vazio. Se
estiver vazio, Nenhuma descrio ser exibida; caso contrrio, os contedos do campo Memo
sero exibidos.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE employee && Abre a tabela Employee
CLEAR

SCAN
? IIF(EMPTY(notes), 'Nenhuma observao', notes) && 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 nPginaCdigo]



Argumentos

NomeArquivo Especifica o nome do arquivo do qual os dados devem ser importados. Se voc no
incluir uma extenso no nome de arquivo, ser considerada a extenso padro para o tipo de arquivo
especificado.

DATABASE NomeBancoDados Especifica um banco de dados para o qual a nova tabela
adicionada.

NAME NomeTabelaLongo Especifica um nome longo para a nova tabela. Nomes longos podem
conter at 128 caracteres e podem ser utilizados no lugar de nomes curtos de arquivos no banco de
dados.

TYPE A palavra-chave TYPE opcional, mas voc deve incluir um dos tipos de arquivo descritos
abaixo:

Tipo de arquivo Descrio

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

XL5 [SHEET cNomeFolha] Incluir XL5 para importar dados do Microsoft Excel verso 5.0. As
colunas e as linhas da planilha tornam-se respectivamente campos e registros na tabela. Os arquivos
de planilhas criados no Microsoft Excel tm a extenso .XLS. Se voc omitir a clusula SHEET, os
dados em Plan1 sero importados. Para importar dados de uma folha especfica, incluir a palavra-
chave SHEET e especificar o nome da folha com cNomeFolha.


AS nPginaCdigo Especifica a pgina de cdigo do arquivo importado. O Visual FoxPro copia o
contedo do arquivo importado e, medida que copia os dados, converte automaticamente os dados
para a pgina de cdigo atual do Visual FoxPro.

Caso voc especifique um valor para nPgina Cdigo que no seja suportado, o VisualFoxPro
exibir uma mensagem de erro. Para que nPginaCdigo possa exibir uma caixa de dilogo Pgina
de cdigo, com a qual voc define uma pgina para o arquivo importado, utilize o GETCP().
Se AS nPginaCdigo for omitida e o Visual FoxPro no conseguir determinar a pgina de cdigo
do arquivo importado, ele copiar o contedo do arquivo importado e, medida que copia os dados,
converter automaticamente os dados para a pgina de cdigo atual do Visual FoxPro. Se AS
nPginaCdigo for omitida e o Visual FoxPro conseguir determinar a pgina de cdigo do arquivo
importado, ele converter automaticamente os dados do arquivo importado da pgina de cdigo dos
dados para a pgina de cdigo atual do Visual FoxPro. Utilize CPCURRENT( ) para determinar a
pgina de cdigo atual do Visual FoxPro.

Se nPginaCdigo for igual a 0, o Visual FoxPro ir considerar que a pgina de cdigo do arquivo
importado a mesma e atual do Visual FoxPro e no ser feita nenhuma converso de pgina de
cdigo.



Comentrios

A maioria dos pacotes de software armazena seus dados em um formato de arquivo que no pode
ser aberto diretamente no Visual FoxPro. IMPORT cria uma nova tabela do Visual FoxPro a partir
dos dados armazenados em formatos de arquivo que o Visual FoxPro no consegue ler diretamente.
Uma nova tabela criada com o mesmo nome do arquivo do qual os dados so importados. A
extenso .DBF atribuda tabela recm-criada.



























INDEX, comando


Cria um arquivo de ndice para exibir e acessar registros de tabelas em uma ordem lgica.

Sintaxe

INDEX ON eExpresso TO NomeArquivoIDX | TAG NomeMarca [OF NomeArquivoCDX]
[FOR lExpresso]
[COMPACT]
[ASCENDING | DESCENDING]
[UNIQUE | CANDIDATE]
[ADDITIVE]



Argumentos

eExpresso Especifica uma expresso de ndice que pode incluir o nome de um ou mais campos a
partir da tabela atual. Uma chave de ndice com base na expresso de ndice criada no arquivo de
ndice para cada registro da tabela. O Visual FoxPro utiliza estas chaves para exibir e acessar
registros da tabela.

Observao No utilize uma varivel, um elemento de matriz , um campo ou expresso de campo
de uma tabela em uma outra rea de trabalho para eExpresso. Se voc acessar um ndice que
contenha uma varivel ou um campo inexistente ou que no possa ser localizado, o Visual FoxPro
ir gerar uma mensagem de erro. Campos Memo no podem ser utilizados sozinhos em expresses
de arquivo de ndice; devem ser combinados com outras expresses de caracteres.

Se voc incluir um campo precedido por um alias de tabela ou letra de rea de trabalho na
expresso de ndice, o Visual FoxPro gera uma mensagem de erro. Embora voc possa otimizar
clusulas FOR com a tecnologia Rushmore caso sejam includos campos de alias, ainda assim,
insistimos que se evite o uso de campos de alias na criao de ndices. Em diversos casos
(USE ... AGAIN, buscas SQL, e assim por diante), um alias diferente atribudo automaticamente a
uma tabela e o ndice pode no estar atualizado ou ser utilizado de forma adequada.

Para obter maiores informaes sobre a tecnologia Rushmore, consulte Compreendendo a
tecnologia Rushmore, no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.

Se voc tentar construir um ndice com uma chave com tamanho varivel, ela ser preenchida com
espaos. O Visual FoxPro no suporta chaves de ndice de tamanho varivel.

possvel criar uma chave de ndice de comprimento zero. Por exemplo, este tipo de chave criado
quando a expresso de ndice uma subseqncia de um campo Memo vazio. Essa chave gera uma
mensagem de erro. Quando o Visual FoxPro cria um ndice, ele avalia campos no primeiro registro
da tabela. Se um campo estiver vazio, talvez seja necessrio inserirem-se dados temporrios no
primeiro registro, a fim de impedir a ocorrncia de uma chave de ndice de comprimento zero.

O comprimento de uma chave de ndice para um ndice .IDX deve estar entre 1 e 100 caracteres.
Para um ndice .CDX , esta deve estar entre 1 e 240 caracteres.

TO NomeArquivoIDX Cria um arquivo de ndice .IDX. O arquivo de ndice recebe a extenso
padro .IDX, que pode ser substituda incluindo-se uma extenso diferente ou alterando-se a
extenso de ndice padro no arquivo de configurao do Visual FoxPro. As regras padro do MS-
DOS para nomes de arquivos devem ser observadas na denominao de arquivos de ndice.

TAG NomeMarca [OF NomeArquivoCDX] Cria um arquivo de ndice composto. Trata-se de um
arquivo de ndice nico que consiste em qualquer nmero de marcas separadas (entradas de ndice).
Cada marca identificada pelo seu nome exclusivo. Os nomes devem comear com uma letra ou
um sublinhado e podem consistir em qualquer combinao de at 10 letras, dgitos ou sublinhados.
O nmero de marcas em um arquivo de ndice composto limitado apenas pelo espao em disco e
pela memria disponveis.

Os arquivos de ndice composto de vrias entradas so sempre compactados. No necessrio
incluir COMPACT ao criar um desses arquivos. Seus nomes recebem a extenso .CDX.

possvel criar dois tipos de arquivos de ndice composto: estrutural e no-estrutural.

Se voc excluir a clusula opcional OF NomeArquivoCDX de TAG NomeMarca, voc cria um
arquivo de ndice composto estrutural. Este tem sempre o mesmo nome base da tabela e aberto
automaticamente quando ela aberta.

Caso no seja possvel localizar o arquivo de ndice composto estrutural de uma tabela ou ele tiver
sido excludo ou renomeado, uma caixa de dilogo aparecer quando voc tentar abrir a tabela. Se
voc selecionar o boto padro Cancelar, a tabela no ser aberta. Se selecionar Ignorar, ela ser
aberta e ser removido o sinalizador existente no cabealho da tabela e que indica a presena de um
arquivo de ndice composto estrutural associado.

Dica Para associar novamente um ndice composto estrutural, emita o comando a seguir:

USE NomeTabela INDEX NomeArquivoCDX



Se voc incluir a clusula opcional OF NomeArquivoCDX aps TAG NomeMarca, voc cria um
arquivo de ndice composto no estrutural. Ao contrrio de um arquivo de ndice composto
estrutural, o no-estrutural deve ser aberto explicitamente com SET INDEX ou com a clusula
INDEX em USE.

Caso o arquivo de ndice composto j tenha sido criado e aberto, a emisso de INDEX com TAG
NomeMarca adicionar uma marca ao arquivo de ndice composto.

NomeArquivoCDX o nome do ndice composto estrutural associado. Certifique-se de reindexar a
tabela caso ela tenha sido modificada depois que o ndice composto estrutural foi desassociado.

FOR lExpresso Especifica uma condio pela qual somente os registros que satisfazem a
expresso de filtragem lExpresso estaro disponveis para exibio e acesso; chaves de ndice so
criadas no arquivo de ndice apenas para os registros correspondentes expresso de filtragem.

Rushmore otimiza um comando INDEX ... FOR lExpresso caso isto seja possvel. Para obter um
melhor desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.

COMPACT Cria um arquivo .IDX compactado.

ASCENDING Especifica uma ordem crescente para o arquivo .CDX. Como padro, as marcas
.CDX so criadas em ordem crescente (voc pode incluir ASCENDING como um lembrete da
ordem do arquivo de ndice). possvel indexar uma tabela em ordem inversa incluindo
DESCENDING.

DESCENDING Especifica uma ordem decrescente para o arquivo .CDX. No possvel incluir
DESCENDING na criao de arquivos de ndice .IDX. No entanto, possvel especificar uma
ordem decrescente para um arquivo de ndice .IDX com SET INDEX e SET ORDER.

UNIQUE Especifica que apenas o primeiro registro localizado com um valor de chave de ndice
especfico ser includo em um arquivo .IDX ou em uma marca .CDX. Pode-se utilizar UNIQUE
para impedir a exibio de registros duplicados ou o acesso a eles. Todos os registros adicionados
com chaves de ndice duplicadas so excludos do arquivo de ndice. Utilizar a opo UNIQUE de
INDEX a mesma coisa que executar SET UNIQUE ON antes de emitir INDEX ou REINDEX.

Quando uma marca de ndice ou um ndice UNIQUE esto ativos e um registro duplicado
alterado de uma forma que altere a sua chave de ndice, a marca de ndice ou o ndice so
atualizados. No entanto, o prximo registro duplicado com a chave de ndice original somente
poder ser acessado ou exibido depois que o arquivo for reindexado com REINDEX.

CANDIDATE Cria uma marca de ndice estrutural candidato. Pode-se incluir a palavra-chave
CANDIDATE apenas na criao de uma marca de ndice estrutural; caso contrrio, o Visual FoxPro
gera uma mensagem de erro.

A marca de ndice candidato impede valores duplicados no campo ou em uma combinao de
campos especificada na expresso de ndice eExpresso. O termo candidato refere-se ao tipo de
ndice; visto que ndices candidatos impedem valores duplicados, eles se qualificam como
candidato a ndice primrio.

O Visual FoxPro gera um erro se voc criar uma marca de ndice candidato para um campo ou uma
combinao de campos que j contenha valores duplicados.

Para obter maiores informaes sobre marcas de ndice primrio e candidato, consulte Definindo
um ndice primrio ou candidato no captulo 7, Trabalhando com tabelas, no Guia do
Desenvolvedor.

ADDITIVE Mantm aberto qualquer arquivo de ndice anteriormente aberto. Se voc omitir a
clusula ADDITIVE ao criar um ou mais arquivos de ndice para uma tabela com INDEX, todos os
arquivos de ndice anteriormente abertos (exceto o ndice composto estrutural) sero fechados.



Comentrios

Os registros de uma tabela que tem um arquivo de ndice so exibidos e acessados na ordem
especificada pela expresso de ndice. A ordem fsica dos registros na tabela no alterada por um
arquivo de ndice.

Se SET TALK estiver ativado (ON), o Visual FoxPro relatar quantos registros so indexados
durante o processo de indexao. O intervalo de exibio destes registros durante a indexao pode
ser especificado com SET ODOMETER.

Utilize DISPLAY STATUS para exibir maiores informaes sobre arquivos de ndice abertos. Estas
informaes incluem os nomes de todos os arquivos de ndice abertos, seus tipos (estrutural, .CDX,
.IDX), suas expresses de ndice, suas seqncias de ordenao e o nome da marca principal ou do
arquivo de ndice principal.

O nmero de arquivos de ndice (.IDX ou .CDX) que voc pode abrir limitado apenas pelos
recursos do sistema e memria. No Visual FoxPro, no FoxPro para Windows e no FoxPro para MS-
DOS, o nmero total de arquivos que podem ser abertos determinado na definio FILES do
arquivo de configurao CONFIG.SYS do MS-DOS. Para obter maiores informaes sobre a
definio FILES, consulte o manual do MS-DOS.

Tipos de ndice O Visual FoxPro permite a criao de dois tipos de arquivos de ndice:

Arquivos de ndice composto .CDX que contm vrias entradas de ndice denominadas
marcas
Arquivos de ndice .IDX que contm uma entrada de ndice



Voc pode tambm criar um arquivo de ndice composto estrutural, que automaticamente aberto
com a tabela.

Dica Devido aos arquivos de ndice composto estrutural serem automaticamente abertos quando a
tabela aberta, eles correspondem ao tipo de ndice prefervel.



Inclua COMPACT para criar arquivos de ndice .IDX compactos. Arquivos de ndice compostos
sempre so compactados.

Atualizao e ordem de ndice Apenas um arquivo de ndice (o de ndice principal) ou marca
(marca principal) controla a ordem em que a tabela ser exibida ou acessada. Determinados
comandos (SEEK, por exemplo) utilizam o arquivo de ndice principal ou marca para procurar
registros. Entretanto, todos os arquivos de ndice .IDX e .CDX abertos so atualizados, conforme as
alteraes so feitas nas tabelas. possvel designar o arquivo de ndice principal ou marca com a
clusula INDEX de USE ou com SET INDEX e SET ORDER.

Funes definidas pelo usurio Embora uma expresso de ndice possa conter uma funo definida
pelo usurio, voc no dever utilizar funes definidas pelo usurio em uma expresso de ndice.
Isto aumenta o tempo que as funes levam para criar ou atualizar o ndice. Alm disso, as
atualizaes de ndice no podem ocorrer quando uma funo definida pelo usurio utilizada para
uma expresso de ndice.

Caso uma funo definida pelo usurio seja utilizada em uma expresso de ndice, o Visual FoxPro
dever ser capaz de localizar a funo definida pelo usurio. Quando o Visual FoxPro cria um
ndice, a expresso de ndice gravada no arquivo de ndice, mas apenas uma referncia funo
definida pelo usurio includa naquela expresso.


Index, exemplos

O Exemplo 1 abre a tabela customer e cria um arquivo de ndice denominado complist
, o qual exibe e processa registros em ordem alfabtica do campo Company.
No Exemplo 2, a tabela customer novamente aberta e um arquivo de ndice denominado citycomp
criado a partir de uma subseqncia dos primeiros cinco caracteres do campo City, e os primeiros
seis caracteres do campo Company. Quando esse arquivo de ndice utilizado, os registros na
tabela so ordenados, em primeiro lugar, de acordo com o campo City, e ,em segundo lugar, de
acordo com o campo Company.

No Exemplo 3, as marcas de ndice so criadas. A primeira marca uma marca de ndice composto
estrutural para address. A segunda criada em um arquivo de ndice no estrutural denominado
custcdx.

* Exemplo 1
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE Customer && Abre a tabela customer
INDEX ON company TO complist
CLEAR
DISPLAY STATUS

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

* Exemplo 3
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')

USE Customer && Abre a tabela customer
INDEX ON address TAG address
INDEX ON company TAG company OF custcdx
CLEAR
DISPLAY STATUS



































INKEY( ), funo


Retorna um nmero correspondente ao primeiro clique com o mouse ou ao primeiro
pressionamento de tecla no buffer de teclado.

Sintaxe

INKEY([nSegundos] [, cOcultarCursor])



Tipos de retorno

Numrico

Argumentos

nSegundos Especifica quantos segundos INKEY( ) aguarda um pressionamento de tecla. Caso
nSegundos no seja includo, INKEY( ) retornar imediatamente um valor para um pressionamento
de tecla. INKEY( ) aguardar indefinidamente um pressionamento de tecla se nSegundos for 0.

cOcultarCursor Exibe ou oculta o cursor, ou procura um clique com o mouse. Para Exibir o cursor,
inclua S em cOcultarCursor. Para ocult-lo, inclua H em cOcultarCursor. Caso S e H sejam
includos em cOcultarCursor, o ltimo caractere em cOcultarCursor ter preferncia.

Como padro, INKEY( ) no detecta um clique com o mouse. Para procurar um clique com o
mouse, inclua M em cOcultarCursor. Se M for includo em cOcultarCursor, INKEY( ) retornar o
valor 151 para um nico clique com o mouse click. Consulte o segundo exemplo na tabela a seguir
para ver como voc pode procurar um clique duplo.

Para procurar um clique com o mouse e exibir o cursor, inclua M e S. Para procurar um clique com
o mouse e ocultar o cursor, inclua H e M.

Quando uma macro de teclado est atribuda a uma tecla ou a uma combinao de teclas, voc pode
incluir E em cOcultarCursor para expandir a macro de teclado. Quando E est includo, INKEY( )
retorna um valor correspondente ao primeiro pressionamento de tecla atribudo macro de teclado.
Voc pode retornar valores sucessivos para cada pressionamento de tecla, executando repetidas
vezes INKEY( ) com E includo. Se voc omitir E, INKEY( ) retornar o valor da tecla ou da
combinao de teclas que dispara a macro de teclado.

Qualquer outro caractere diferente de H, M, S e E em cOcultarCursor ignorado.

A tabela a seguir lista valores de retorno da funo INKEY( ) para teclas sozinhas e em combinao
com as teclas SHIFT, CTRL, e ALT Um travesso () indica que uma combinao de teclas
retornar nenhum valor.



Tecla Sozinha SHIFT CTRL ALT/+OPO

F1 28 84 94 104
F2 -1 85 95 105
F3 -2 86 96 106
F4 -3 87 97 107
F5 -4 88 98 108
F6 -5 89 99 109
F7 -6 90 100 110
F8 -7 91 101 111
F9 -8 92 102 112
F10 -9 93 103 113
F11 133 135 137 139
F12 134 136 138 140
1 49 33 120
2 50 64 121
3 51 35 122
4 52 36 123
5 53 37 124
6 54 94 125
7 55 38 126
8 56 42 127
9 57 40 128
0 48 41 19
a 97 65 1 30
b 98 66 2 48
c 99 67 3 46
d 100 68 4 32
e 101 69 5 18
f 102 70 6 33
g 103 71 7 34
h 104 72 127 35
i 105 73 9 23
j 106 74 10 36
k 107 75 11 37
l 108 76 12 38
m 109 77 13 50
n 110 78 14 49
o 111 79 15 24
p 112 80 16 25
q 113 81 17 16
r 114 82 18 19
s 115 83 19 31
t 116 84 20 20
u 117 85 21 22
v 118 86 22 47
w 119 87 23 17
x 120 88 24 45
y 121 89 25 21
z 122 90 26 44
INS 22 22 146 162
HOME 1 55 29 151
DEL 7 7 147 163
END 6 49 23 159
PAGE UP 18 57 31 153
PAGE DOWN 3 51 30 161
SETA ACIMA 5 56 141 152
SETA ABAIXO 24 50 145 160
SETA DIREITA 4 52 2 157
SETA ESQUERDA 19 54 26 155
ESC 27 /27 */27 */1
ENTER 13 13 10 /166
BACKSPACE 127 127 127 14
TAB 9 15 148/* *
BARRA DE ESPAOS 32 32 32/ 57

* Pressionamento de teclas reservado pelo Windows.
Comentrios

A funo INKEY( ) retornar 0 se nenhuma tecla for pressionada. Caso existam vrias teclas no
buffer de teclado, INKEY( ) retornar o valor da primeira tecla inserida no buffer.





INLIST( ), funo


Determina se uma expresso corresponde a outra expresso em um conjunto de expresses.

Sintaxe

INLIST(eExpresso1, eExpresso2 [, eExpresso3 ...])



Tipos de retorno

Lgico ou valor nulo

Argumentos

eExpresso1 Especifica a expresso que INLIST( ) procura no conjunto de expresses.

eExpresso2 [, eExpresso3 ...] Especifica o conjunto de expresses na qual a procura deve ser
feita. Voc deve incluir, no mnimo, uma expresso (eExpresso2) e, no mximo, 24 expresses
(eExpresso2, eExpresso3 e assim sucessivamente).

Todas as expresses no conjunto de expresses devem ter o mesmo tipo de dado.



Comentrios

A funo INLIST( ) retornar verdadeiro (.T.) se localizar a expresso no conjunto de expresses;
caso contrrio INLIST( ) retornar falso (.F.). O valor nulo retornado se eExpresso1 for o valor
zero. O valor nulo tambm retornado se eExpresso1 no for o valor nulo, eExpresso1 no
corresponder a outra expresso, e pelo menos uma das outras expresses for o valor nulo.


INLIST( ), exemplo da funo

Neste exemplo, INLIST( ) determina o quarto do ano para o ms atual. O ms atual armazenado
na varivel gcMonth. Cada instruo CASE utiliza INLIST( ) para determinar se o contedo de
gcMonth pode ser localizado na lista de nome de meses. O nome do quarto retornado armazenado
na varivel gcReporTitle.

SET TALK ON
STORE CMONTH(DATE( )) TO gcMonth
DO CASE
CASE INLIST(gcMonth,'Janeiro','Fevereiro','Maro')
STORE 'Primeiro quarto' TO gcReporTitle
CASE INLIST(gcMonth,'Abril','Maio','Junho')
STORE 'Segundo quarto' TO gcReporTitle
CASE INLIST(gcMonth,'Julho','Agosto','Setembro')
STORE 'Terceiro quarto' TO gcReporTitle
OTHERWISE
STORE 'Quarto quarto' TO gcReporTitle
ENDCASE
WAIT WINDOW gcReporTitle






INSMODE( ), funo


Retorna o modo de insero atual ou ativa/desativa o modo de insero.

Sintaxe

INSMODE([lExpresso])



Tipos de retorno

Lgico

Argumentos

lExpresso Ativa ou desativa o modo de insero. INSMODE(.T.) ativa e INSMODE(.F.) desativa
o modo de insero. retornado um valor lgico correspondente definio do modo de insero
antes da emisso de INSMODE(.T.) ou INSMODE(.F.).



Comentrios

Se voc omitir o argumento opcional e o modo de insero estiver ativado (os caracteres so
inseridos antes do cursor), INSMODE( ) retornar verdadeiro (.T.). Se o modo de insero estiver
desativado (os caracteres so sobrescritos na posio do cursor), INSMODE( ) retornar falso (.F.).


INSMODE( ), exemplo da funo

O exemplo a seguir utiliza INSMODE( ) para ativar o modo de insero e, em seguida, alterna o
modo de insero para o estado oposto.

SET TALK ON
=INSMODE(.T.) && Alterna o modo de insero para on
? INSMODE( )
= INSMODE(!INSMODE( )) && Alterna o modo de insero para o estado oposto
? INSMODE( )























INT( ), funo


Avalia uma expresso numrica e retorna a parte inteira da expresso.

Sintaxe

INT(nExpresso)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica a expresso numrica para qual a funo INT( ) retorna a parte inteira.


INT( ), exemplo da funo

CLEAR
? INT(12.5) && Exibe 12
? INT(6.25 * 2) && Exibe 12
? INT(-12.5) && Exibe -12
STORE -12.5 TO gnNumber
? INT(gnNumber) && Exibe -12




ISALPHA( ), funo


Determina se o caractere mais esquerda em uma expresso de caracteres alfabtico.

Sintaxe

ISALPHA(cExpresso)



Tipos de retorno

Lgico

Argumentos

cExpresso Especifica a expresso de caracteres que ISALPHA( ) avalia. Todos os caracteres
depois do primeiro caractere em cExpresso so ignorados.



Comentrios

ISALPHA( ) retorna verdadeiro (.T.) se o caractere mais esquerda na expresso especificada um
caractere alfabtico; caso contrrio, ISALPHA( ) retorna falso(.F.).

ISALPHA( ), exemplo da funo

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE Customer && Abrir tabela de cliente
CLEAR

DISPLAY contact
? ISALPHA(contact) && Exibe .T.
DISPLAY maxordamt
? ISALPHA(cust_id) && Exibe .F.




























ISBLANK( ), funo


Determina se uma expresso est vazia.

Sintaxe

ISBLANK(eExpresso)



Tipos de retorno

Lgico

Argumentos

eExpresso Especifica a expresso que ISBLANK( ) avalia. eExpresso pode ser um campo de
uma tabela, uma varivel ou elemento de matriz ou uma expresso.

Para um campo, ISBLANK( ) retorna verdadeiro (.T.) se o campo contiver os valores a seguir.

Tipo Contedo

Caractere Seqncia vazia, espaos ou sem valor (registro vazio recm-includo ou limpo com
BLANK)
Numrico Sem valor (registro vazio recm-includo ou limpo com BLANK)
Flutuante Sem valor (registro vazio recm-includo ou limpo com BLANK)
Data Data em branco ({ / / }) ou sem valor (registro vazio recm-includo ou limpo com
BLANK)
DataHora Data e hora em branco ({ / / : : }) ou sem valor (registro vazio recm-includo
ou limpo com BLANK)
Lgico Sem valor (registro vazio recm-includo ou limpo com BLANK)
Memo Vazio (sem contedo memo)
Geral Vazio (sem objeto OLE)
Figura Vazio (sem figura)

Comentrios

ISBLANK( ) retorna verdadeiro(.T.) se a expresso eExpresso estiver vazia; caso contrrio,
ISBLANK( ) retorna falso(.F.).
Utiliza-se APPEND BLANK e BLANK para criar um registro vazio. Pode-se tambm utilizar
BLANK para limpar dados de campos em um registro. ISBLANK( ) pode determinar se um campo
est vazio.
Observe que as expresses do tipo Currency, Integer e Double nunca esto vazias, e ISBLANK( )
sempre retorna falso(.F.) para esses tipos de dados.
ISBLANK( ) difere de EMPTY( ) e ISNULL( ). Por exemplo, EMPTY( ) retornar verdadeiro (.T.)
se uma expresso de caracteres contiver qualquer combinao de valores nulos, espaos, tabulaes,
retornos de carro ou alimentaes de linha; ISBLANK( ) retornar verdadeiro (.T.) se uma
expresso de caracteres contiver somente a seqncia vazia ou espaos.


ISBLANK( ), exemplo da funo

No exemplo a seguir, uma tabela denominada mytable criada e um registro vazio includo.
ISBLANK( ) retorna verdadeiro (.T.) porque myfield est vazio. Um valor colocado em myfield, e
ISBLANK( ) retorna falso (.F.) myfield no est mais vazio.

CREATE TABLE mytable FREE (myfield C(20))
APPEND BLANK && Adicionar novo registro vazio
CLEAR

? ISBLANK(myfield) && Exibe .T.
REPLACE myfield WITH 'John Smith' && Insere um valor no campo
? ISBLANK(myfield) && Exibe .F.




























ISCOLOR( ), funo


Determina se o computador pode exibir cor.

Sintaxe

ISCOLOR( )



Tipos de retorno

Lgico

Comentrios

ISCOLOR( ) retorna verdadeiro (.T.) se o seu computador tem recurso de cor (mesmo que o
monitor em utilizao no seja colorido). Se o seu computador no permite o uso de cor,
ISCOLOR( ) retorna falso (.F.).













ISDIGIT( ), funo


Determina se o caractere mais esquerda da expresso de caracteres especificada um dgito (de 0
a 9).

Sintaxe

ISDIGIT(cExpresso)



Tipos de retorno

Lgico

Argumentos

cExpresso Especifica a expresso de caracteres testada por ISDIGIT( ). Todos os caracteres
depois do primeiro caractere em cExpresso so ignorados.



Comentrios

ISDIGIT( ) retorna verdadeiro (.T.) se o caractere mais esquerda da expresso de caracteres
especificada um dgito (de 0 a 9); caso contrrio, ISDIGIT( ) retorna falso (.F.).


ISDIGIT( ), exemplo da funo

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE orders && Tabelas de pedidos abertas
CLEAR

DISPLAY cust_id
? ISDIGIT(cust_id) && Exibe .F.
DISPLAY order_dsc
? ISDIGIT(ALLTRIM(STR(order_dsc))) && Exibe .T.



























ISEXCLUSIVE( ), funo


Retorna verdadeiro (.T.) se a tabela ou o banco de dados forem abertos para uso exclusivo; caso
contrrio, retorna falso(.F.).

Sintaxe

ISEXCLUSIVE([cAliasTabela | nreaTrabalho | cNomeBancoDados [, nTipo]])



Tipos de retorno

Lgico

Argumentos

cAliasTabela Especifica o alias da tabela para a qual retornado o status de utilizao exclusiva. O
Visual FoxPro gera uma mensagem de erro se voc especificar um alias de tabela inexistente.

nreaTrabalho Especifica a rea de trabalho da tabela para a qual retornado o status de
utilizao exclusiva. ISEXCLUSIVE( ) retorna falso (.F.) se no houver uma tabela aberta na rea
de trabalho especificada.

cNomeBancoDados Especifica o nome do banco de dados para o qual o status de utilizao
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 Tabela
2 Banco de dados


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



Comentrios

ISEXCLUSIVE( ) retorna um valor para a tabela aberta na rea de trabalho atualmente selecionada
se forem omitidos os argumentos opcionais cAliasTabela, nreaTrabalho, ou cNomeBancoDados.
Uma tabela aberta para utilizao exclusiva incluindo a palavra-chave EXCLUSIVE em USE, ou
selecionando SET EXCLUSIVE para ON antes que a tabela seja aberta.
Um banco de dados aberto para utilizao exclusiva incluindo a palavra-chave EXCLUSIVE no
OPEN DATABASE.


ISEXCLUSIVE( ), exemplo da funo

No exemplo a seguir, a funo ISEXCLUSIVE( ) verifica que a tabela foi aberta para utilizao
exclusiva. A tabela no ser reindexada pois a rea de trabalho atual no foi aberta para utilizao
exclusiva.

cExclusive = SET('EXCLUSIVE')
SET EXCLUSIVE OFF
SET PATH TO (SYS(2004) + 'SAMPLES\DATA\')
OPEN DATA testdata && Abre o banco de dados de teste
USE customer && No foi aberto exclusivamente
USE employee IN 0 EXCLUSIVE && Aberto exclusivamente em outra rea de trabalho
IF ISEXCLUSIVE( )
REINDEX && Somente pode ser feito se a tabela for aberta exclusivamente
ELSE
WAIT WINDOW 'A tabela no pode ser aberta exclusivamente'
ENDIF
SET EXCLUSIVE &cExclusive


























ISFLOCKED( ), funo


Retorna o status de bloqueio da tabela.

Sintaxe

ISFLOCKED([nreaTrabalho | cAliasTabela])



Tipos de retorno

Lgico

Argumentos

nreaTrabalho Especifica o nmero da rea de trabalho da tabela para a qual o status de bloqueio
foi retornado. Se voc omitir cAliasTabela e nreaTrabalho, o status de bloqueio ser retornado
para uma tabela aberta na rea de trabalho atual.

cAliasTabela Especifica o alias da tabela para qual o status de bloqueio foi retornado.



Comentrios

ISFLOCKED( ) retorna verdadeiro (.T.) se a tabela estiver bloqueada; caso contrrio, um falso (.F.)
retornado. ISFLOCKED( ) similar ao SYS(2011), mas retorna um valor lgico que no requer
localizao para aplicativos internacionais.




































ISLOWER( ), funo


Determina se o caractere mais a esquerda da expresso de caracteres especificada um caractere
alfabtico minsculo.

Sintaxe

ISLOWER(cExpresso)



Tipos de retorno

Lgico

Argumentos

cExpresso Especifica a expresso de caracteres que ISLOWER( ) testa. ISLOWER( ) ignora
qualquer caractere aps o primeiro caractere em cExpresso.



Comentrios

ISLOWER( ) retorna verdadeiro (.T.) se o caractere mais a esquerda da expresso de caracteres
especificada um caractere alfabtico minsculo, caso contrrio, ISLOWER( ) retorna falso (.F.).



ISLOWER( ), exemplo da funo

CLEAR
? ISLOWER('redmond') && Exibe .T.
? ISLOWER('Redmond') && Exibe .F.
































ISNULL( ), funo


Retorna verdadeiro (.T.) se uma expresso resulta em um valor nulo; caso contrrio, ISNULL( )
retorna falso (.F.).

Sintaxe

ISNULL(eExpresso)



Tipos de retorno

Lgico

Argumentos

eExpresso Especifica a expresso a ser avaliada.



Comentrios

Utilize ISNULL( ) para determinar se o contedo de um campo, varivel de memria ou elemento
de matriz contm um valor nulo ou se uma expresso resulta em um valor nulo.


ISNULL( ), exemplo da funo

No exemplo a seguir, ISNULL( ) utilizado para verificar um valor nulo.

STORE .NULL. TO mNullvalue && Armazene um valor nulo em uma varivel de memria

CLEAR
? mNullvalue && Exibe o valor de uma varivel de memria
? ISNULL(mNullvalue) && Retorna .T., indicando um valor nulo
? TYPE('mNullvalue') && Retorna L, indicando um valor lgico
? (mNullvalue = .NULL.) && Retorna .NULL., teste ruim para valores nulos

























ISREADONLY( ), funo


Determina se uma tabela est aberta somente para leitura.

Sintaxe

ISREADONLY([nreaTrabalho | cAliasTabela])



Tipos de retorno

Lgico

Argumentos

nreaTrabalho | cAliasTabela Retorna o status somente para leitura de uma tabela aberta em uma
outra rea de trabalho. nreaTrabalho especifica o nmero da rea de trabalho e cAliasTabela
especifica o alias da rea de trabalho ou da tabela. ISREADONLY( ) retorna falso (.F.) se no
houver tabela aberta na rea de trabalho especificada.

Se voc no especificar um nmero de rea de trabalho ou um alias de tabela ou de rea de
trabalho, o status somente para leitura ser retornado para a tabela aberta na rea de trabalho ativa.



Comentrios

ISREADONLY( ) retorna verdadeiro (.T.) se a tabela est aberta somente para leitura; caso
contrrio, ISREADONLY( ) retorna falso (.F.).

Voc pode abrir uma tabela somente para leitura incluindo a opo NOUPDATE ao abri-la com
USE, marcando a caixa de verificao Somente para leitura ao abri-la na caixa de dilogo Abrir ou
atribuindo a ela atributos somente para leitura do MS-DOS.

Um cursor criado com o comando SELECT - SQL sempre somente para leitura.


ISREADONLY( ), exemplo da funo

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer NOUPDATE && Abre a tabela customer somente para leitura

CLEAR
? ISREADONLY('customer') && Retorna .T.













ISRLOCKED( ), funo


Retorna o status de bloqueio do registro.

Sintaxe

ISRLOCKED([nNmeroRegistro, [nreaTrabalho | cAliasTabela]])



Tipos de retorno

Lgico

Argumentos

nNmeroRegistro Especifica o nmero do registro para o qual o status do bloqueio retornado. Se
nNmeroRegistro omitido, o status de bloqueio do registro retornado para o registro atual.

nreaTrabalho Especifica um nmero de rea de trabalho de uma tabela para a qual o status de
bloqueio de registro retornado. Se for omitido cAliasTabela e nreaTrabalho, o status de bloqueio
do registro retornado para a tabela aberta na rea de trabalho atual.

cAliasTabela Especifica o alias da tabela para a qual o status de bloqueio do registro retornado.

Comentrios

ISRLOCKED( ) retorna verdadeiro (.T.) se o registro estiver bloqueado, caso contrrio ser
retornado falso (.F.).




































ISUPPER( ), funo


Determina se o primeiro caractere em uma expresso de caracteres um caractere alfabtico
maisculo.

Sintaxe

ISUPPER(cExpresso)



Tipos de retorno

Lgico

Argumentos

cExpresso Especifica a expresso de caracteres que ISUPPER( ) avalia. Todos os caracteres
depois do primeiro caractere em cExpresso so ignorados.



Comentrios

ISUPPER( ) retorna verdadeiro (.T.) se o primeiro caractere em uma expresso de caracteres um
caractere alfabtico maisculo; caso contrrio, ISUPPER( ) retorna falso(.F.).


ISUPPER( ), exemplo da funo

? ISUPPER('Redmond') && Exibe .T.
? ISUPPER('redmond') && Exibe .F.


































KEY( ), funo


Retorna a expresso de chave de ndice para uma marca de ndice ou arquivo de ndice.

Sintaxe

KEY([NomeArquivoCDX,] nNmerondice [, nreaTrabalho | cAliasTabela])



Tipos de retorno

Caractere

Argumentos

NomeArquivoCDX Especifica o nome de um arquivo de ndice composto. KEY( ) retorna as
expresses de chave de ndice das marcas de ndice dos arquivos .CDX. O arquivo de ndice
composto especificado pode ser o arquivo de ndice composto estrutural automaticamente aberto
com a tabela ou um arquivo de ndice composto independente.

nNmerondice Especifica a chave de expresso de ndice a ser retornada.

USE e SET INDEX suportam uma lista de arquivos de ndice que permitem que voc abra vrios
ndices para uma tabela. Qualquer combinao de arquivos de ndice .IDX de entrada nica,
arquivos de ndice composto estruturais ou arquivos de ndice composto independentes pode ser
includa na lista de arquivos de ndice.

A expresso numrica nNmerondice especifica a expresso de ndice a ser retornada a partir dos
arquivos de ndice abertos. KEY( ) retorna expresses de ndice a partir de arquivos de ndice
abertos na ordem a seguir medida que nNmerondice aumenta a partir de 1 at o nmero total de
arquivos .IDX de entrada nica abertos e marcas de ndice composto independente e estrutural:

1. As expresses de ndice de arquivos de ndice .IDX de entrada nica (se houver algum
aberto) so retornadas em primeiro lugar. A ordem de incluso destes arquivos de ndice de entrada
nica em USE ou SET INDEX determina a forma como as expresses de ndice so retornadas.
2. As expresses de ndice para cada marca no ndice composto estrutural (se houver algum)
so retornadas em seguida. As expresses de ndice so retornadas a partir das marcas na ordem em
que as marcas so criadas no ndice composto estrutural.

3. As expresses de ndice para cada marca em qualquer ndice composto independente aberto
so retornadas por ltimo. As expresses de ndice so retornadas a partir das marcas na ordem em
que as marcas so criadas nos ndices compostos independentes.

A seqncia vazia retornada caso nNmerondice seja maior que o nmero total de arquivos .IDX
de entrada nica abertos e marcas de ndice composto independentes e estruturais.

nreaTrabalho Especifica o nmero da rea de trabalho da tabela cujas expresses de chave de
ndice devem ser retornadas por KEY( ).

Se no houver uma tabela aberta na rea de trabalho especificada, KEY( ) retornar a seqncia
vazia.

cAliasTabela Especifica o alias da tabela cujas expresses 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 nreaTrabalho e cAliasTabela forem omitidos, as expresses de chave de ndice sero
retornadas para a tabela aberta na rea de trabalho atual.



Comentrios

Uma expresso de chave de ndice especificada quando uma marca de ndice ou um arquivo de
ndice criado com INDEX. A expresso de chave de ndice determina como uma tabela ser
exibida e acessada quando a marca de ndice ou o arquivo de ndice for aberto como o arquivo ou a
marca de ndice controlador principal.

Para obter maiores informaes sobre como criar marcas de ndice, arquivos de ndice e expresses
de chave de ndice, consulte INDEX.


KEY( ), exemplo da funo

O exemplo a seguir abre a tabela customer no banco de dados testdata. FOR ... ENDFOR utilizado
para criar um loop no qual KEY( ) utilizado para exibir a expresso de ndice de cada marca de
ndice no ndice estrutural customer. O nome de cada marca de ndice estrutural exibido com a sua
expresso de ndice.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE Customer && Abre a tabela customer
CLEAR

FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount)) && Verifica se h marcas no ndice
? TAG(nCount) + ' ' && Exibe o nome da marca
?? KEY(nCount) && Exibe a expresso de ndice
ELSE
EXIT && Sai do loop quando no forem localizadas mais marcas
ENDIF
ENDFOR























KEYBOARD, comando


Coloca a expresso de caracteres especificada no buffer de teclado.

Sintaxe

KEYBOARD cValorTeclado
[PLAIN] [CLEAR]



Argumentos

cValorTeclado Especifica a expresso de caracteres que colocada no buffer de teclado. A
expresso de caracteres pode ser uma seqncia de caracteres, um rtulo de tecla, um conjunto de
rtulos de tecla ou uma funo definida pelo usurio que retorna uma expresso de caractere.

Se cValorTeclado for um rtulo de tecla, dever ser includo entre chaves e aspas simples. Por
exemplo:

KEYBOARD '{CTRL+LEFTARROW}'



Para obter uma lista de rtulos de tecla, consulte ON KEY LABEL.

O buffer de teclado pode ser preenchido com at 128 caracteres. Uma vez que o buffer de teclado
estiver cheio, os caracteres adicionais so ignorados.

PLAIN Se houver macros de teclado definidas ou comandos ON KEY LABEL ativos, voc poder
incluir PLAIN para ignorar estas atribuies de tecla. PLAIN preenche o teclado com o caractere de
tecla literal, no com a atribuio de tecla.

Por exemplo, se voc tiver atribudo um comando tecla A com ON KEY LABEL e A estiver
includo em cValorTeclado, utilize PLAIN para colocar a letra A no buffer de teclado. O comando
ON KEY LABEL atribudo a A no executado.

CLEAR Esvazia o buffer de teclado antes que ele seja preenchido com cValorTeclado.



Comentrios

Use KEYBOARD para colocar caracteres no buffer de teclado. Os caracteres permanecem no
buffer at que o Visual FoxPro procure uma entrada de teclado. Nessa etapa, os caracteres so lidos
e trabalhados como se tivessem sido digitados diretamente a partir do teclado.

possvel utilizar KEYBOARD para criar sistemas de demonstrao auto-executveis para os
aplicativos.












LASTKEY( ), funo


Retorna um nmero inteiro correspondente ltima tecla pressionada.

Sintaxe

LASTKEY( )



Tipos de retorno

Numrico

Comentrios

Os valores retornados por LASTKEY( ) so iguais aos valores retornados por INKEY( ). Para obter
uma lista de teclas e seus valores de retorno, consulte INKEY( ).

LASTKEY( ) atualizado quando voc se movimenta por controles.


Obs : Veja a funcao INKEY( ) Lista de valores das teclas








LEFT( ), funo


Retorna um nmero especificado de caracteres de uma expresso de caractere, a partir do caractere
mais esquerda.

Sintaxe

LEFT(cExpresso, nExpresso)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caractere a partir da qual LEFT( ) retorna caracteres.

nExpresso Especifica o nmero de caracteres retornados da expresso de caractere. Caso
nExpresso seja maior que o comprimento de cExpresso, ser retornada toda a expresso de
caractere. A seqncia vazia ser retornada se nExpresso for negativa ou 0.

A funo LEFT( ) idntica a SUBSTR( ) com uma posio inicial 1.


LEFT( ), exemplo da funo

CLEAR
? LEFT('Redmond, WA', 4) && Exibe Redmond


































LEFTC( ), funo


Retorna um nmero especificado de caracteres de uma expresso de caractere, a partir do caractere
mais esquerda.

Sintaxe

LEFTC(cExpresso, nExpresso)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres a partir da qual LEFTC( ) retorna caracteres.

nExpresso Especifica o nmero de caracteres retornados da expresso de caracteres. Caso
nExpresso seja maior que o comprimento de cExpresso, ser retornada toda a expresso de
caracteres. A seqncia vazia ser retornada se nExpresso for negativa ou 0.

Comentrios

LEFTC( ) foi elaborada para expresses contendo caracteres de byte duplo. Se a expresso contiver
apenas caracteres de byte nico, LEFTC( ) ser equivalente a LEFT( ).

LEFTC( ) retorna um nmero especificado de caracteres de uma expresso de caracteres, contendo
qualquer combinao de caracteres de bytes nico ou duplo.

A funo LEFTC( ) idntica a SUBSTRC( ) com uma posio inicial 1.





























LEN( ), funo


Retorna o nmero de caracteres em uma expresso de caracteres.

Sintaxe

LEN(cExpresso)



Tipos de retorno

Numrico

Argumentos

cExpresso Especifica a expresso de caracteres para a qual LEN( ) retornar o nmero de
caracteres.



Comentrios

Utilize LEN( ) para determinar o comprimento de uma expresso de caracteres.


LEN( ), exemplo da funo

O exemplo a seguir abre a tabela customer no banco de dados testdata. LEN( ) utilizada para
exibir as larguras dos campos cust_id e contact.

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

CLEAR
? 'Largura do campo contact: '
?? LEN(contact)
? 'Largura do campo cust_id: '
?? LEN(cust_id)


























LENC( ), funo


Retorna o nmero de caracteres em uma expresso de caracteres ou campo Memo.

Sintaxe

LENC(cExpresso)



Tipos de retorno

Numrico

Argumentos

cExpresso Especifica a expresso de caracteres para a qual LENC( ) retornar o nmero de
caracteres.



Comentrios

LENC( ) foi elaborada para expresses contendo caracteres de byte duplo. Se a expresso contiver
apenas caracteres de byte nico, LENC( ) ser equivalente a LEN( ).

LENC( ) retorna o nmero de caracteres em uma expresso de caracteres ou campo Memo que
contenha qualquer combinao de caracteres de byte nico e duplo.





































LIKE( ), funo


Determina se uma expresso de caracteres corresponde a outra expresso de caracteres.

Sintaxe

LIKE(cExpresso1, cExpresso2)



Tipos de retorno

Lgico

Argumentos

cExpresso1 Especifica a expresso de caracteres que LIKE( ) compara cExpresso2.
cExpresso1 pode conter caracteres curingas como * e ?. O ponto de interrogao (?) corresponde a
qualquer caractere simples na cExpresso2 e o asterisco (*) corresponde a qualquer nmero de
caracteres. Voc pode misturar qualquer quantidade de caracteres curinga em qualquer combinao
na cExpresso1.

cExpresso2 Especifica a expresso de caracteres que LIKE( ) compara cExpresso1. A
cExpresso2 deve corresponder cExpresso1, letra por letra, para que LIKE( ) retorne verdadeiro
(.T.).



Comentrios

LIKE( ) retorna verdadeiro (.T.) se cExpresso1 corresponder a cExpresso2; caso contrrio,
retorna falso (.F.).

SET COMPATIBLE determina o modo como LIKE( ) avalia a cExpresso1 e cExpresso2. Se SET
COMPATIBLE estiver ativado (ON) ou definido como DB4, todos os espaos direita de
cExpresso1 e cExpresso2 sero removidos antes que elas sejam comparadas. Se SET
COMPATIBLE estiver desativado (OFF) ou estiver definido como FOXPLUS, todos os espaos
direita em cExpresso1 e cExpresso2 sero utilizados na comparao.


LIKE( ), exemplo da funo

No exemplo a seguir, todos os nomes de produtos na tabela products que iniciarem com as letras
Ch sero exibidos.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE products && Abre a tabela Products

CLEAR
? 'Todos os nomes de produtos iniciando com as letras Ch:'
?
SCAN FOR LIKE('Ch*', prod_name)
? prod_name
ENDSCAN
USE






LIKEC( ), funo


Determina se uma expresso de caracteres corresponde a outra expresso de caracteres.

Sintaxe

LIKEC(cExpresso1, cExpresso2)



Tipos de retorno

Lgico

Argumentos

cExpresso1 Especifica a expresso de caractere que LIKEC( ) compara cExpresso2.
cExpresso1 pode conter caracteres curinga como * e ?. O ponto de interrogao (?) corresponde a
qualquer caractere simples na cExpresso2 e um asterisco (*) corresponde a qualquer nmero de
caracteres. Voc pode misturar qualquer nmero de caracteres curinga em qualquer combinao na
cExpresso1.

cExpresso2 Especifica a expresso de caractere que LIKEC( ) compara cExpresso1. A
cExpresso2 deve corresponder cExpresso1, caractere por caractere, para que LIKE( ) retorne
verdadeiro (.T.).



Comentrios

LIKEC( ) foi elaborada para expresses que contenham caracteres de byte duplo. Se a expresso
contiver apenas caracteres de byte nico, LIKEC( ) ser equivalente a LIKE( ).

LIKEC( ) determina se uma expresso de caracteres corresponde a outra expresso de caracteres.
LIKEC( ) retorna verdadeiro (.T.) se a cExpresso1 corresponder cExpresso2; caso contrrio,
retorna falso (.F.).

SET COMPATIBLE determina como LIKEC( ) compara os espaos em branco contidos em
cExpresso1 e cExpresso2. Se SET COMPATIBLE estiver ativado (ON) ou definido como DB4,
todos os espaos direita de cExpresso1 e cExpresso2 sero removidos antes que elas sejam
comparadas. Se SET COMPATIBLE estiver desativado (OFF) ou estiver definido FOXPLUS,
todos os espaos direita na cExpresso1 e cExpresso2 sero utilizados na comparao.

















LINENO( ), funo


Retorna o nmero de uma linha em execuo em um programa em relao primeira linha do
programa principal.

Sintaxe

LINENO([1])



Tipos de retorno

Numrico

Argumentos

1 Retorna o nmero da linha em relao primeira linha do programa ou procedimento atual. Se
voc omitir o argumento 1, o nmero da linha ser retornado em relao primeira linha do
programa principal.



Comentrios

As linhas do programa so contadas a partir do incio do programa. As linhas de comentrios, as
linhas de continuao e as linhas em branco so includas na contagem do nmero de linhas. Se um
programa for suspenso durante a execuo, LINENO( ) retornar o nmero da linha em que a
execuo do programa foi suspensa. LINENO( ) retornar 0 se um programa for cancelado.

Como padro, os nmeros das linhas so retornados em relao ao incio do programa principal.
Caso seja chamado um procedimento, a numerao das linhas ser retomada do incio do programa
de chamada.

LINENO( ) til para depurar programas. Voc pode definir um ponto de interrupo para parar a
execuo do programa em um nmero de linha especfico, emitindo o comando abaixo na janela
Depurar:

LINENO( ) = nExpresso



A execuo do programa ser suspensa quando o valor de LINENO( ) for igual a nExpresso.


LINENO( ), exemplo da funo

O exemplo a seguir faz parte de uma rotina simples de manipulao de erro.

ON ERROR DO bug_proc WITH LINENO( )
BRWS && Provoca um erro
ON ERROR

*** Bug_Proc error handler ***

PROCEDURE bug_proc
PARAMETERS gnBadLine
WAIT WINDOW 'Erro ocorrido na linha: ' + ALLTRIM(STR(gnBadLine))
RETURN




































LIST DATABASE, comando


Exibe informaes sobre o banco de dados atual de modo contnuo.

Sintaxe

LIST DATABASE
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]



Argumentos

TO PRINTER [PROMPT] Direciona a sada de LIST DATABASE para uma impressora.

No Visual FoxPro, voc pode incluir a clusula opcional PROMPT para exibir uma caixa de
dilogo Imprimir antes de iniciar a impresso. Coloque PROMPT logo aps TO PRINTER.

TO FILE NomeArquivo Direciona a sada de LIST DATABASE para o arquivo especificado com
NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado (ON), o Visual FoxPro
exibir um aviso perguntando se voc deseja sobrescrever o arquivo.

NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usurio.



Comentrios

Utilize DBGETPROP( ) para retornar outras informaes sobre o banco de dados atual.


LIST DATABASE, exemplo do comando

O exemplo a seguir cria um banco de dados denominado people. Uma tabela denominada friends
criada e automaticamente adicionada ao banco de dados. DISPLAY TABLES utilizado para exibir
as tabelas no banco de dados e LIST DATABASES utilizado para listar informaes sobre as
tabelas no banco de dados.

CREATE DATABASE people
CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES && Exibe as tabelas no banco de dados
LIST DATABASE && Lista informaes das tabelas


















LIST TABLES, comando


Exibe todas as tabelas e informaes sobre as tabelas contidas no banco de dados atual sem
interrupo.

Sintaxe

LIST TABLES
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
[NOCONSOLE]



Argumentos

TO PRINTER [PROMPT] Direciona as informaes retornadas de LIST TABLES para uma
impressora.

Voc pode incluir PROMPT para exibir uma caixa de dilogo Imprimir antes de iniciar a impresso.
Coloque a palavra-chave PROMPT logo aps TO PRINTER.

TO FILE NomeArquivo Direciona a sada de LIST TABLES para o arquivo de disco especificado
com NomeArquivo. Se o arquivo j existir e SET SAFETY estiver ativado (ON), o Visual FoxPro
exibir um aviso perguntando se voc deseja sobrescrever o arquivo.

NOCONSOLE Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usurio.



Comentrios

As informaes retornadas incluem os caminhos e nomes das tabelas e constituem um subconjunto
das informaes apresentadas quando se utiliza LIST STATUS. Entretanto, as informaes
fornecidas por meio de LIST TABLES so relativas somente a tabelas, sendo exibidas
independentemente de as tabelas estarem ou no abertas.


LIST TABLES, exemplo de comando

O exemplo a seguir abre a tabela customer no banco de dados testdata. LIST TABLES utilizado
para listar informaes sobre as tabelas no banco de dados.

CLOSE DATABASES
SET PATH TO (SYS(2004) + 'samples\data\') && Define o caminho para o banco de dados
OPEN DATABASE testdata && Abre o banco de dados testdata

CLEAR
LIST TABLES && Lista informaes sobre tabelas no banco de dados













LIST, comandos


Exibe informaes do ambiente ou da tabela de modo contnuo.

Sintaxe

LIST
[FIELDS ListaCampos]
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[OFF]
[NOCONSOLE]
[NOOPTIMIZE]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
Ou
LIST FILES
[ON Unidade]
[LIKE EstruturaArquivo]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
Ou
LIST MEMORY
[LIKE EstruturaArquivo]
[NOCONSOLE]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
Ou
LIST STATUS
[NOCONSOLE]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]
Ou
LIST STRUCTURE
[IN nreaTrabalho | cAliasTabela]
[NOCONSOLE]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]



Comentrios

Esses comandos LIST so idnticos aos comandos DISPLAY, com exceo das diferenas a seguir:

O escopo para LIST tem como padro os registros ALL.
LIST no emite um aviso depois de preencher a janela principal do Visual FoxPro ou uma
janela definida pelo usurio com informaes.
LIST no exibe os registros sinalizados para excluso quando SET DELETED est ativado
(ON).



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


















LOCAL, comando


Cria variveis e matrizes de variveis locais.

Sintaxe

LOCAL ListaVar
Ou
LOCAL [ARRAY] NomeMatriz1(nLinhas1 [, nColunas1])
[, NomeMatriz2(nLinhas2 [, nColunas2])] ...



Argumentos

ListaVar Especifica uma ou mais variveis locais a serem criadas.

[ARRAY] NomeMatriz1 (nLinhas1 [, nColunas1])
[, NomeMatriz2 (nLinhas2 [, nColunas2])] ... Especifica uma ou mais matrizes locais a
serem criadas. Consulte DIMENSION para obter uma descrio de cada argumento.



Comentrios

As variveis e as matrizes de variveis locais s podem ser utilizadas e modificadas dentro do
procedimento ou funo em que so criadas, e no podem ser acessadas por programas de nvel
mais alto ou baixo. As matrizes e variveis locais so liberadas quando concluda a execuo do
procedimento ou funo que as contm.

As variveis e matrizes criadas com LOCAL so inicializadas com um valor falso (.F.). Qualquer
varivel de memria ou matriz que voc deseje declarar como local deve ser declarada local antes
de ter um valor atribudo. O Visual FoxPro gera uma mensagem de erro quando voc atribui um
valor a uma varivel ou matriz e posteriormente a declara local utilizando LOCAL.

As variveis locais podem ser passadas por referncia.

No abrevie LOCAL porque LOCAL e LOCATE possuem as primeiras quatro letras iguais.
























LOCATE, comando


Procura seqencialmente na tabela o primeiro registro correspondente expresso lgica
especificada.

Sintaxe

LOCATE FOR lExpressao1
[Escopo]
[WHILE]
[NOOPTIMIZE]



Argumentos

FOR lExpressao1 procura seqencialmente na tabela atual o primeiro registro correspondente
expresso lgica lExpressao1.

Rushmore otimizar uma consulta criada com LOCATE FOR se lExpressao1 for uma expresso
otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.

Escopo Especifica um intervalo de registros a serem localizados. Apenas os registros que
estiverem dentro do intervalo sero localizados. As clusulas de escopo so: ALL, NEXT
nRegistros, RECORD nNmeroRegistro e REST. Os comandos que incluem Escopo operam apenas
na tabela da rea de trabalho ativa.

O escopo padro de LOCATE ALL, isto , todos os registros.

WHILE lExpresso2 Especifica uma condio por meio da qual os registros so procurados, desde
que a expresso lgica lExpresso2 resulte em verdadeiro (.T.).

NOOPTIMIZE Desativa a otimizao Rushmore de LOCATE.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, "Otimizando aplicativos", no Guia do Desenvolvedor.



Comentrios

A tabela no precisa ser indexada.

Se LOCATE localizar um registro correspondente, voc poder utilizar RECNO( ) para retornar o
nmero do registro correspondente. Se um registro correspondente for localizado, FOUND( )
retornar verdadeiro (.T.) e EOF( ) retornar falso (.F.). Se SET TALK estiver ativado (ON), ser
exibido o nmero do registro correspondente.

Aps LOCATE localizar um registro correspondente, voc pode emitir CONTINUE para procurar
os registros correspondentes adicionais no resto da tabela. Quando CONTINUE executado, o
processo de procura retorna, iniciando pelo registro logo aps o registro correspondente. Voc pode
emitir CONTINUE vrias vezes at o final do escopo ou at chegar ao fim da tabela.

Se uma correspondncia no for localizada, RECNO( ) retornar o nmero de registros na tabela
mais 1, FOUND( ) retornar falso (.F.) e EOF( ) retornar verdadeiro (.T.).

LOCATE e CONTINUE so especficos da rea de trabalho atual. Se uma outra rea de trabalho
for selecionada, o processo de procura original poder continuar quando a rea de trabalho original
for novamente selecionada.


LOCATE, exemplo do comando

No exemplo a seguir so localizados registros de clientes da Alemanha. Em seguida, a contagem
total exibida.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
SET TALK OFF

STORE 0 TO gnCount
LOCATE FOR ALLTRIM(UPPER(customer.country)) = 'ALEMANHA'
DO WHILE FOUND( )
gnCount = gnCount + 1
? company
CONTINUE
ENDDO

? 'Total de empresas na Alemanha: '+ LTRIM(STR(gnCount))









LOCFILE( ), funo


Localiza um arquivo no disco e retorna o nome do arquivo com o seu caminho.

Sintaxe

LOCFILE(cNomeArquivo [, cExtensesArquivo] [, cLegendaDilogo])



Tipos de retorno

Caractere

Argumentos

cNomeArquivo Especifica o nome do arquivo a ser localizado. Se cNomeArquivo incluir somente
um nome de arquivo, LOCFILE( ) ir pesquisar primeiro a pasta ou o diretrio padro do Visual
FoxPro. Caso o arquivo no seja localizado na pasta ou no diretrio padro, o caminho do Visual
FoxPro ser pesquisado a seguir. Utilize SET PATH para especificar o caminho do Visual FoxPro.

Se cNomeArquivo incluir um caminho e um nome de arquivo, a localizao especificada ser
pesquisada. Se o arquivo no puder ser encontrado na localizao especificada, LOCFILE( ) ir
pesquisar a pasta ou o diretrio padro do Visual FoxPro e, em seguida, o caminho do Visual
FoxPro.

Se o arquivo for localizado, LOCFILE( ) retornar o nome do arquivo e o caminho.

cExtensesArquivo Especifica as extenses do arquivo a ser localizado. Se o nome de arquivo
especificado com cNomeArquivo no incluir uma extenso, o Visual FoxPro aplicar as extenses
de arquivo listadas em cExtensesArquivo ao nome do arquivo e ir procurar novamente o arquivo.

cExtensesArquivo tambm especifica as extenses dos nomes dos arquivos exibidos na caixa de
dilogo Abrir, quando no for possvel localizar o arquivo especificado.

cExtensesArquivo pode assumir diversas formas:

Se cExtensesArquivo contiver uma nica extenso (por exemplo, .PRG), somente os
arquivos com essa extenso sero exibidos.
cExtensesArquivo pode tambm conter curingas (* e ?). Todos os arquivos com extenses
correspondentes aos critrios de caracteres curinga sero exibidos. Por exemplo, se
cExtensesArquivo for ?X?, todos os arquivos com a extenso .FXP, .EXE ou .TXT sero exibidos.
No Visual FoxPro para Windows, cExtensesArquivo pode conter uma descrio de
arquivo seguida por uma extenso de arquivo ou uma lista de extenses separadas por vrgulas. A
descrio do arquivo aparece na caixa de listagem Arquivos do tipo. Separa a descrio de arquivo
da extenso de arquivo ou lista das extenses de arquivo com dois pontos (:). Separa mltiplas
descries de arquivo e suas extenses com um ponto e vrgula (;).

Por exemplo, se cExtensesArquivo for Texto:TXT a descrio do arquivo Texto aparecer na
caixa de listagem Arquivos do tipo e todos os arquivos com uma extenso .TXT sero exibidos.

Se cExtensesArquivo for Tabelas:DBF; Arquivos:TXT,BAK as descries do arquivo de
Tabelas e Arquivos aparecero na caixa de listagem Arquivos do tipo. Quando Tabelas for
escolhido a partir da caixa de listagem Arquivos do tipo, todos os arquivos com uma extenso .DBF
sero exibidos. Quando Arquivos for escolhido a partir da caixa de listagem Arquivos do tipo,
todos os arquivos com extenses .TXT e .BAK sero exibidos.



cLegendaDilogo Especifica o texto que voc deseja utilizar para avisar o usurio. O texto
exibido na caixa de dilogo Abrir.

Comentrios

A caixa de dilogo Abrir ser exibida se no for possvel localizar o arquivo na pasta ou no diretrio
padro, no caminho do Visual FoxPro ou em uma localizao especificada. A caixa de dilogo
Abrir pode ser utilizada para localizar o arquivo. Quando um arquivo selecionado na caixa de
dilogo Abrir, o nome do arquivo retornado com o seu caminho.

Se voc sair da caixa de dilogo Abrir selecionando Cancelar, pressionando ESC ou selecionando
Fechar no menu Controle, o Visual FoxPro ir gerar uma mensagem de erro e LOCFILE( ) no ir
retornar um valor.












LOCK( ), funo


Tenta bloquear um ou mais registros em uma tabela.

Sintaxe

LOCK([nreaTrabalho | cAliasTabela]
| [cListaNmeroRegistro, nreaTrabalho | cAliasTabela])



Tipos de retorno

Lgico

Argumentos

nreaTrabalho | cAliasTabela Tenta bloquear o registro atual em uma tabela aberta de uma rea
de trabalho especfica. nreaTrabalho especifica o nmero da rea de trabalho, enquanto que
cAliasTabela especifica o alias da tabela. Se uma rea de trabalho ou um alias de tabela no for
especificado, LOCK( ) tentar bloquear o registro atual na tabela da rea de trabalho atual.

cListaNmeroRegistro Especifica a lista de um ou mais nmeros de registros que se deve incluir
para tentar bloquear registros mltiplos. SET MULTILOCKS deve estar ativado (ON) e voc deve
incluir a rea de trabalho ou o alias da tabela para o qual est tentando colocar bloqueios de
registros mltiplos.

LOCK( ) tenta bloquear todos os registros especificados. Os nmeros dos registros especificados
com cListaNmeroRegistro so separados por vrgulas. Por exemplo, para tentar bloquear os quatro
primeiros registros de uma tabela, cListaNmeroRegistro dever conter 1,2,3,4.

Voc pode, tambm, bloquear registros mltiplos, movendo o ponteiro do registro para o registro
que gostaria de bloquear, emitindo LOCK( ) ou RLOCK( ) e, em seguida, repetindo essas etapas
para cada registro adicional.

No Visual FoxPro, 0 pode ser especificado como um nmero de registro. Isso permite que se tente
bloquear o cabealho da tabela.

Importante Mantenha o cabealho da tabela bloqueado durante o menor tempo possvel pois
outros usurios no podero adicionar registros tabela enquanto o cabealho estiver bloqueado.

Libere o bloqueio do cabealho da tabela com UNLOCK RECORD 0, UNLOCK ou UNLOCK
ALL.

Se todos os registros especificados em cNmerosRegistros forem bloqueados com xito, LOCK( )
retornar verdadeiro (.T.). Mesmo que um registro especificado com cNmerosRegistros no possa
ser bloqueado, LOCK( ) retornar falso (.F.) e nenhum registro ser bloqueado. Entretanto, todos os
bloqueios de registros existentes permanecero no seu lugar. O bloqueio de registros mltiplos um
processo aditivo. Os bloqueios de registros adicionais no liberam os bloqueios em outros registros.

O nmero mximo de registros que podem ser bloqueados em cada rea de trabalho de
aproximadamente 8.000. sempre mais fcil bloquear toda a tabela do que um nmero pequeno de
registros.



Comentrios

LOCK( ) idntico a RLOCK( ).

Se o bloqueio ou os bloqueios forem feitos com xito, LOCK( ) retornar verdadeiro (.T.). Os
registros bloqueados esto disponveis para o usurio que fez os bloqueios para acesso de leitura e
gravao; esto disponveis a todos os outros usurios da rede para acesso somente para leitura.

A execuo de LOCK( ) no garante que o bloqueio ou os bloqueios de registros sejam feitos com
xito. No se pode fazer um bloqueio em um registro j bloqueado por outro usurio ou em uma
tabela bloqueada por outro usurio. Se, por algum motivo, no for possvel fazer bloqueio ou
bloqueios dos registros, LOCK( ) retornar falso (.F.).

Como padro, LOCK( ) faz uma tentativa para bloquear um registro. Utilize SET REPROCESS
para repetir, automaticamente, o bloqueio do registro quando a primeira tentativa falhar. SET
REPROCESS determina o nmero de tentativas de bloqueio ou a durao das tentativas de bloqueio
quando a tentativa inicial no for bem sucedida. Para obter maiores informaes, consulte SET
REPROCESS.

SET MULTILOCKS determina se possvel bloquear os registros mltiplos de uma tabela. Se SET
MULTILOCKS estiver desativado (OFF) - o padro -, voc poder bloquear apenas um nico
registro em uma tabela. Quando SET MULTILOCKS est ativado (ON), voc pode bloquear
registros mltiplos em uma tabela. Para obter maiores informaes, consulte SET MULTILOCKS.

Desbloqueando registros Um registro da tabela pode ser desbloqueado apenas pelo usurio que fez
o bloqueio. Para liberar os bloqueios de registros, utilize UNLOCK, fechando a tabela ou saindo do
Visual FoxPro.

UNLOCK pode ser utilizado para liberar os bloqueios de registros na rea de trabalho atual, em
uma rea de trabalho especfica ou em todas as reas de trabalho. Para obter maiores informaes,
consulte UNLOCK.

A alternncia de ativado (ON) para desativado (OFF) ou vice-versa em SET MULTILOCKS
executa implicitamente UNLOCK ALL todos os bloqueios de registros em todas as reas de
trabalho so liberados.

As tabelas podem ser fechadas com USE, CLEAR ALL ou CLOSE DATABASES.

Para obter maiores informaes sobre como bloquear arquivos e registros e compartilhar tabelas
em uma rede, consulte o captulo 17, Programando para acesso compartilhado, no Guia do
Desenvolvedor.


LOCK( ), exemplo da funo

O exemplo a seguir bloqueia e desbloqueia os primeiros quatro registros nas tabelas customer e
employee.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
SET REPROCESS TO 3 AUTOMATIC
STORE '1,2,3,4' TO gcRecList
gcOldExc = SET('EXCLUSIVO')
SET EXCLUSIVE OFF
SELECT 0
USE employee && Abre a tabela Employee
SELECT 0
USE customer && Abre a tabela Customer
? LOCK('1,2,3,4', 'customer') && Bloqueia os primeiros 4 registros em customer
? RLOCK(gcRecList, 'employee') && Bloqueia os primeiros 4 registros em employee
UNLOCK IN customer

UNLOCK IN employee
SET EXCLUSIVE &gcOldExc



























LOG( ), funo


Retorna o logaritmo natural (base e) da expresso numrica especificada.

Sintaxe

LOG(nExpresso)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica a expresso numrica para a qual LOG( ) retorna o valor de x na equao
e^x = nExpresso. nExpresso deve ser maior que 0.



Comentrios

A base do logaritmo natural a constante e. O nmero de casas decimais retornado no resultado
especificado como SET DECIMALS.


LOG( ), exemplo da funo

CLEAR
? LOG(1) && Exibe 0.00
STORE EXP(2) TO gneSquare
? LOG(gneSquare) && Exibe 2.00
































LOG10( ), funo


Retorna o logaritmo comum (base 10) da expresso numrica especificada.

Sintaxe

LOG10(nExpresso)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica a expresso numrica para a qual LOG10( ) retorna o valor de x na equao
10^x = nExpresso. nExpresso deve ser maior que 0.



Comentrios

A base do logaritmo comum 10. O nmero de casas decimais retornado no resultado
especificado como SET DECIMALS.


LOG10( ), exemplo da funo

CLEAR
? LOG10(10) && Exibe 1.00
STORE 100 TO gnBaseTen
? LOG10(gnBaseTen) && Exibe 2.00
? LOG10(gnBaseTen^2) && Exibe 4.00
































LOOKUP( ), funo


Procura em uma tabela o primeiro registro com um campo correspondente expresso especificada.

Sintaxe

LOOKUP(CampoRetorno, eExpressoPesquisa, CampoPesquisado [, cNomeMarca])



Tipos de retorno

Caractere, Numrico, Moeda, Flutuante, Nmero inteiro, Duplo, Data, DataHora ou Lgico

Argumentos

CampoRetorno Especifica o campo cujo contedo retornado por LOOKUP( ) quando a procura
bem sucedida. Se a procura no obtiver xito, LOOKUP( ) retornar uma seqncia de caracteres
vazia, do mesmo tamanho e com mesmo tipo de dados que CampoRetorno.

eExpressoPesquisa Especifica a expresso de pesquisa. A expresso de pesquisa , geralmente,
composta pelo contedo de um campo da tabela ou pode corresponder expresso do ndice ativo
ou marca de ndice composto.

CampoPesquisado Especifica o campo a ser pesquisado. Se a tabela no tiver um ndice ativo,
LOOKUP( ) executar uma pesquisa seqencial atravs do campo especificado com
CampoPesquisado.

Se um arquivo ou marca de ndice, cuja expresso de chave de ndice eqivale ao campo de
pesquisa especificado, estiver aberta, LOOKUP( ) utilizar o arquivo ou marca de ndice para
executar uma pesquisa mais rpida.

cNomeMarca Especifica o nome de uma marca de ndice composto para ser utilizado por
LOOKUP( ) na pesquisa. A pesquisa de um ndice composto a pesquisa mais rpida que
LOOKUP( ) pode executar.



Comentrios

Se a pesquisa obtiver xito, LOOKUP( ) mover o ponteiro do registro para o registro
correspondente e retornar o contedo de um campo especificado no registro.

Se a expresso de pesquisa no for localizada, LOOKUP( ) retornar uma seqncia de caracteres
vazia, de mesmo tamanho e com mesmo tipo de dados que CampoRetorno. O ponteiro do registro
est posicionado no fim do arquivo.

Se LOOKUP( ) for utilizado para pesquisar uma tabela pai, os ponteiros dos registros de todas as
tabelas filho relacionadas sero movidas para os registros relacionados.

Esta funo no pode ser otimizada com Rushmore.


LOOKUP( ), exemplo da funo

No exemplo a seguir, LOOKUP( ) utiliza a marca de ndice company para pesquisar a primeira
ocorrncia da seqncia Ernst Handel. Se a pesquisa obtiver xito, LOOKUP( ) retornar o
contedo do campo contact e @ ... SAY exibir o valor de retorno.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer ORDER company && Abre a tabela Customer
CLEAR
@ 2,2 SAY LOOKUP(contact, 'Ernst Handel', company, 'company')



























LOWER( ), funo


Retorna uma expresso de caracteres especificada em letras minsculas.

Sintaxe

LOWER(cExpresso)



Tipos de retorno

Caracteres

Argumentos

cExpresso Especifica a expresso de caracteres convertida por LOWER( ).



Comentrios

LOWER( ) converte todas as letras maisculas (AZ) na expresso de caracteres para letras
minsculas (az). Todos os outros caracteres na expresso de caracteres permanecem inalterados.


LOWER( ), exemplo da funo

STORE 'FOX' TO gcName
CLEAR
? LOWER(gcName) && Exibe fox


































LPARAMETERS, comando


Atribui dados passados de um programa de chamada para matrizes ou variveis locais.

Sintaxe

LPARAMETERS ListaParmetros



Argumentos

ListaParmetros Especifica os nomes de matrizes ou variveis de memria locais aos quais os
dados so atribudos.

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

Voc pode utilizar PARAMETERS( ) para determinar o nmero de parmetros passados para o
programa, funo definida pelo usurio ou procedimento executado mais recentemente.



Comentrios

LPARAMETERS cria variveis ou matrizes locais em um programa, funo definida pelo usurio
ou procedimento chamado. Utilize PARAMETERS para criar matrizes ou variveis particulares.

LPARAMETERS dever ser a primeira instruo executvel no programa, funo definida pelo
usurio ou procedimento chamado se voc passar valores, variveis ou matrizes para um deles.

Como padro, DO ... WITH passa variveis e matrizes para procedimentos por referncia. Quando
um valor for alterado no programa chamado, o novo valor ser repassado para a varivel ou matriz
associada no programa de chamada. Se voc desejar passar uma varivel ou matriz por valor,
coloque-a entre parnteses na lista de parmetros de DO ... WITH. As alteraes feitas no
parmetro do programa chamado no so repassadas para o programa de chamada.

Como padro, as variveis so passadas por referncia para um procedimento e por valor para uma
funo definida pelo usurio. Utilize SET UDFPARMS TO REFERENCE para passar variveis
para um procedimento ou funo definida pelo usurio por referncia.














LTRIM( ), funo


Retorna a expresso de caracteres especificada sem os espaos esquerda.

Sintaxe

LTRIM(cExpresso)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres cujos espaos esquerda so removidos por
LTRIM( ).



Comentrios

Esta funo especialmente til para remover os espaos esquerda inseridos quando STR( )
utilizado para converter um valor numrico em uma seqncia de caracteres.


LTRIM( ), exemplo da funo

STORE 'Redmond' TO gcCity
STORE ' Washington' TO gcState
CLEAR
? gcCity, gcState && Exibe Redmond Washington
? gcCity, LTRIM(gcState) && Exibe Redmond Washington
































LUPDATE( ), funo


Retorna a data da ltima vez em que uma tabela foi atualizada.

Sintaxe

LUPDATE([nreaTrabalho | cAliasTabela])



Tipos de retorno

Data

Argumentos

nreaTrabalho | cAliasTabela Retorna a ltima atualizao feita em uma tabela aberta em uma
outra rea de trabalho. nreaTrabalho especifica o nmero da rea de trabalho e cAliasTabela
especifica o alias de tabela. LUPDATE( ) retornar a data da ltima atualizao feita na tabela na
rea de trabalho atualmente selecionada, caso voc omita nreaTrabalho e cAliasTabela.

Se nenhuma tabela estiver aberta na rea de trabalho especificada, LUPDATE( ) retornar uma
data em branco. Se nenhuma tabela possuir o alias especificado, o Visual FoxPro ir gerar uma
mensagem de erro.



Comentrios

Esta funo til em procedimentos de atualizao.


LUPDATE( ), exemplo da funo

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

CLEAR
? LUPDATE( ) && Exibe a data da ltima atualizao
























MAX( ), funo


Avalia um conjunto de expresses e retorna a expresso com o valor mximo.

Sintaxe

MAX(eExpresso1, eExpresso2 [, eExpresso3...])



Tipos de retorno

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

Argumentos

eExpresso1, eExpresso2 [, eExpresso3...] Especifica as expresses a partir das quais voc
deseja que MAX( ) retorne a expresso com o maior valor. Todas as expresses devem ser do
mesmo tipo de dados.


MAX( ), exemplo da funo

O exemplo a seguir utiliza APPEND BLANK para criar uma tabela com 10 registros contendo
valores aleatrios e, em seguida, utiliza MIN( ) e MAX( ) para exibir os valores mximos e
mnimos na tabela.

CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10 && Inclui 10 registros,
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatrios
ENDFOR

CLEAR
LIST && Exibe os valores
gnMaximum = 1 && Inicializa o valor mnimo
gnMinimum = 100 && Inicializa o valor mximo
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'O valor mnimo : ', gnMinimum && Exibe o valor mnimo

? 'O valor mximo : ', gnMaximum && Exibe o valor mximo



















MD | MKDIR, comando


Sintaxe

MD cCaminho | MKDIR cCaminho



Argumentos

cCaminho Especifica um caminho (com um designador de unidade de disco e diretrios) ou um
diretrio.

Se cCaminho for um diretrio sem um designador de unidade de disco, o diretrio ser criado
como um subdiretrio do diretrio padro atual do Visual FoxPro.



Comentrios

O Visual FoxPro ir gerar uma mensagem de erro se voc tentar criar um diretrio j existente.


MD | MKDIR, exemplo do comando



O exemplo a seguir utiliza MKDIR para criar um novo diretrio denominado mytstdir, em seguida
CHDIR utilizado para alterar ao novo diretrio. GETDIR( ) utilizada para exibir a estrutura do
diretrio e, em seguida, RMDIR utilizado para remover o diretrio recentemente criado.
GETDIR( ) utilizada para exibir novamente a estrutura do diretrio.

SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro
MKDIR mytstdir && Cria um novo diretrio
CHDIR mytstdir && Altera ao novo diretrio
= GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio
SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro
RMDIR mytstdir && Remove o novo diretrio
= GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio























MDX( ), funo


Retorna o nome do arquivo de ndice composto .CDX aberto que contm o nmero da posio de
ndice especificada.

Sintaxe

MDX(nNmerondice [, nreaTrabalho | cAliasTabela])



Tipos de retorno

Caractere

Argumentos

nNmerondice Especifica o nome de arquivo de ndice composto a ser retornado. Se a tabela
possui um arquivo de ndice composto estrutural e nNmerondice 1, o nome do arquivo de ndice
composto estrutural (que sempre igual ao nome da tabela) retornado. Se nNmerondice 2, o
nome do primeiro arquivo de ndice composto especificado com USE ou SET INDEX retornado.
Se nNmerondice 3, o segundo nome do arquivo de ndice composto retornado e assim por
diante. Se nNmerondice maior do que o nmero de arquivos de ndice composto abertos, uma
seqncia vazia retornada.

Se a tabela no possui um arquivo de ndice composto estrutural e nNmerondice 1, o nome do
primeiro arquivo de ndice composto especificado com USE ou SET INDEX retornado. Se
nNmerondice 2, o segundo nome de arquivo de ndice composto retornado e assim por diante.
Se nNmerondice maior do que o nmero de arquivos de ndice composto abertos, uma
seqncia vazia retornada.

nreaTrabalho Especifica o nmero da rea de trabalho para arquivos de ndice composto abertos
em reas de trabalho diferentes da que est sendo utilizada no momento. Se voc omitir este
argumento opcional, os nomes de arquivos de ndice composto sero retornados para a rea de
trabalho atual.

cAliasTabela Especifica o alias de tabela para arquivos de ndice composto abertos em reas de
trabalho diferentes da que est sendo utilizada no momento. Se voc omitir este argumento
opcional, os nomes de arquivos de ndice composto sero retornados para a rea de trabalho atual.



Comentrios

MDX( ) idntico a CDX( ).

Os arquivos de ndice podem ser abertos para uma tabela com a clusula INDEX do comando USE
ou com SET INDEX. Um arquivo de ndice composto estrutural automaticamente aberto com a
sua tabela. MDX ( ) ignora todos os arquivos de ndice .IDX especificados com USE ou SET
INDEX.

Utilize TAG( ) para retornar nomes de marca a partir de um arquivo de ndice composto; utilize
NDX( ) para retornar o nome de um arquivo de ndice .IDX aberto.

No Visual FoxPro for Windows, quando SET FULLPATH est ativado (ON), MDX( ) retorna o
caminho para o arquivo .CDX com o nome de arquivo .CDX. Quando SET FULLPATH est
desativado (OFF), MDX( ) retorna a unidade onde se encontra o arquivo .CDX com o nome de
arquivo .CDX.

No Visual FoxPro for Macintosh, MDX( ) ignora a definio de FULLPATH e sempre retorna o
caminho para o arquivo .CDX com o nome de arquivo .CDX.





























MDY( ), funo


Retorna a expresso de data e hora ou data especificada em formato ms-dia-ano, com o nome do
ms escrito por extenso.

Sintaxe

MDY(dExpresso | tExpresso)



Tipos de retorno

Caractere

Argumentos

dExpresso Especifica a expresso de data para retornar em formato ms-dia-ano.

tExpresso Especifica a expresso de data e hora para retornar em formato ms-dia-ano.



Comentrios

Se SET CENTURY estiver desativado (OFF), a expresso de caractere ser retornada em um
formato ms, dd, aa. Se SET CENTURY estiver ativado (ON), o formato ser ms, dd, aaaa.


MDY( ), exemplo da funo

O exemplo a seguir cria uma funo definida pelo usurio que retorna uma data com o dia da
semana correspondente.

SET CENTURY OFF

CLEAR
? Longdate({02/16/95}) && Exibe quinta-feira, fevereiro 16, 95

SET CENTURY ON
? Longdate({02/16/95}) && Exibe quinta-feira, fevereiro 16, 1995

*** LongDate ***

FUNCTION longdate
PARAMETERS gdDate
RETURN CDOW(gdDate) + ', ' + MDY(gdDate)


















MEMORY( ), funo


Retorna a quantidade de memria disponvel para executar um programa externo.

Sintaxe

MEMORY( )



Tipos de retorno

Numrico

Comentrios

No Visual FoxPro, MEMORY( ) sempre retorna 640.

MEMORY( ) semelhante a SYS(12), com duas excees:

MEMORY( ) retorna a quantidade de memria disponvel em kilobytes; SYS(12) retorna a
quantidade de memria em bytes.
MEMORY( ) retorna uma expresso numrica. SYS(12) retorna seu valor como uma
seqncia de caracteres.








MENU( ), funo


Retorna o nome da barra de menus ativa como uma seqncia de caracteres maisculos.

Sintaxe

MENU( )



Tipos de retorno

Caractere

Comentrios

MENU( ) retorna uma seqncia vazia se no houver menu ativo. Utilize o Criador de menus para
criar um menu e ativ-lo.


MENU( ), exemplo da funo

O exemplo a seguir utiliza MENU( ) para passar o nome de uma barra de menus para um
procedimento. A barra de menus do sistema atual gravada na memria com SET SYSMENU
SAVE e todos os ttulos de menus do sistema so removidos com SET SYSMENU TO.
Vrios ttulos de menus so criados com DEFINE PAD. Quando voc escolhe um ttulo de menu,
MENU( ) passa o nome da barra de menus do sistema do Visual FoxPro, _MSYSMENU, para o
procedimento choice. O procedimento choice exibe o nome do ttulo de menu escolhido e o nome
da barra de menus do sistema. Se voc escolher o menu Sair, o menu do sistema do Visual FoxPro
original ser restaurado.

*** Save this program as MENUEXAM.PRG in the default VFP directory.***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padSys OF _MSYSMENU PROMPT '\<System' COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Edit' COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Record' COLOR SCHEME 3 ;
KEY ALT+R, ''
DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Window' COLOR SCHEME 3 ;
KEY ALT+W, ''
DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<ports' COLOR SCHEME 3 KEY
ALT+P, ''

DEFINE PAD padExit OF _MSYSMENU PROMPT 'E\<xit' COLOR SCHEME 3 ;
KEY ALT+X, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN menuexam WITH PAD(), MENU()
PROCEDURE choice
PARAMETER gcPad, gcMenu
WAIT WINDOW 'You chose ' + gcPad + ;
' from menu ' + gcMenu NOWAIT
IF gcPad = 'PADEXIT'
SET SYSMENU TO DEFAULT
ENDIF



































MESSAGE( ), funo


Retorna a mensagem de erro atual como uma seqncia de caracteres ou o contedo da linha do
programa que causou o erro.

Sintaxe

MESSAGE([1])



Tipos de retorno

Caractere

Argumentos

1 Se MESSAGE( ) for utilizado em uma rotina ON ERROR, inclua este argumento para retornar o
cdigo de origem do programa que causou o erro. Se o cdigo de origem do programa no estiver
disponvel, MESSAGE(1) retornar um dos seguintes itens:

do programa se a linha for substituda por macro.
Um comando se a linha contiver um comando sem clusulas adicionais.
Um comando seguido de trs pontos (...) se a linha contiver um comando e clusulas
adicionais.



Comentrios

Ao contrrio de ERROR( ), MESSAGE( ) no redefinido por RETURN ou RETRY.


MESSAGE( ), exemplo da funo

O exemplo a seguir exibe sadas de MESSAGE( ) e MESSAGE(1).

ON ERROR DO Errhand

*** The next line should generate an error ***

USE Nodatabase
ON ERROR && restaura o gerenciador de erros do sistema
PROCEDURE Errhand
? 'Line of code with error: ' + MESSAGE(1)
? 'Error number: ' + STR(ERROR( ))
? 'Error message: ' + MESSAGE( )

















MIN( ), funo


Avalia um conjunto de expresses e retorna a expresso de menor valor.

Sintaxe

MIN(eExpresso1, eExpresso2 [, eExpresso3 ...])



Tipos de retorno

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

Argumentos

eExpresso1, eExpresso2 [, eExpresso3 ...] Especifica o conjunto de expresses de onde voc
quer que MIN( ) retorne a expresso de menor valor. Todas as expresses devem ser do mesmo
tipo.


MIN( ), exemplo da funo

O exemplo a seguir utiliza APPEND BLANK para criar uma tabela com 10 registros que
contenham valores aleatrios e, em seguida, utiliza MIN( ) e MAX( ) para exibir os valores mximo
e mnimo na tabela.

CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10 && Inclui 10 registros,
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatrios
ENDFOR

CLEAR
LIST && Exibe os valores
gnMaximum = 1 && Inicializa valor mnimo
gnMinimum = 100 && Inicializa valor mximo
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'The minimum value is: ', gnMinimum && Exibe valor mnimo

? 'The maximum value is: ', gnMaximum && Exibe valor mximo




















MINUTE( ), funo


Retorna a parte dos minutos de uma expresso DataHora.

Sintaxe

MINUTE(tExpresso)



Tipos de Retorno

Numrico

Argumentos

tExpresso Especifica a expresso DataHora da qual a parte dos minutos ser retornada.



MINUTE( ), exemplo da funo

O exemplo a seguir exibe a parte dos minutos da hora atual e a parte dos minutos de uma
determinada hora.

CLEAR
? MINUTE(DATETIME( ))
? MINUTE({10:42am}) && Exibe 42




MLINE( ), funo


Retorna uma determinada linha de um campo memo como uma seqncia de caracteres.

Sintaxe

MLINE(NomeCampoMemo, nNmeroLinha [, nNmeroDeCaracteres])



Tipos de retorno

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 no a atual,
coloque um ponto e o alias da tabela antes do nome do campo memo.

nNmeroLinha Especifica o nmero da linha a ser retornada do campo memo. Uma seqncia
vazia ser retornada se nNmeroLinha for negativo, igual a 0 ou maior do que o nmero de linhas
existentes no campo memo..

nNmeroDeCaracteres Especifica o nmero de caracteres desde o incio do campo memo depois
dos quais MLINE( ) retorna a linha especificada.

A varivel de memria do sistema _MLINE normalmente utilizada para nNmeroDeCaracteres.
_MLINE automaticamente ajustado toda vez que MLINE( ) chamado.

Em procedimentos recorrentes que retornam linhas de campos memo grandes, possvel obter um
melhor desempenho incluindo-se _MLINE como nNmeroDeCaracteres.



Comentrios

MLINE( ) remove qualquer espao subseqente da linha especificada com nNmeroLinha.

O tamanho e o nmero das linhas no campo memo so determinados pelo valor atual de SET
MEMOWIDTH (o tamanho de linha padro de 50 caracteres). Nenhum caractere adicional ser
retornado se for encontrado um retorno de carro. A definio _WRAP atual determina como a linha
do campo memo ser exibida.

Ao procurar uma seqncia de caracteres em um campo memo, voc pode utilizar ATLINE( ) ou
ATCLINE( ) para retornar o nmero da linha em que a seqncia de caracteres se encontra. Utilize
esse nmero de linha em MLINE( ) para retornar o contedo da linha do campo memo.


MLINE( ), exemplo da funo

No exemplo a seguir, so utilizados dois mtodos para retornar linhas de um campo memo. Dois
loops utilizam MLINE( ) para retornarem linhas de campo memo. Observe a melhoria no
desempenho no segundo loop quando a varivel do sistema _MLINE utilizada em MLINE( ).

CLEAR
SET TALK OFF
SET MEMOWIDTH TO 50
CLOSE DATABASES
CREATE TABLE tmemo (name c(10), notes m)
APPEND BLANK && Adiciona um registro
WAIT WINDOW 'Filling memo field - takes several seconds' NOWAIT
*** Fill the memo field ***
FOR gnOuterLoop = 1 TO 5 && loop 5 vezes
FOR gnAlphabet = 65 TO 75 && letras A a H
REPLACE notes WITH REPLICATE(CHR(gnAlphabet), 10) ;
+ CHR(13) ADDITIVE
NEXT
NEXT

*** Display all lines from the memo field ***


STORE MEMLINES(notes) TO gnNumLines && Nmero de linhas em campo memo
STORE SECONDS( ) TO gnBegin && Hora inicial
FOR gnCount = 1 TO gnNumLines && Loop para nmero de linhas em campos memo
? MLINE(notes, gnCount) && Exibe cada linha
NEXT
? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds' && Tempo total

*** Preferable method using _MLINE in MLINE( ) ***
*** Display all lines from the memo field ***

WAIT 'Press a key to see the preferred method' WINDOW

CLEAR
STORE 0 TO _MLINE && Redefine _MLINE como zero
STORE SECONDS( ) TO gnBegin && Hora inicial
FOR count = 1 TO gnNumLines && Loop para nmero de linhas em campo memo
? MLINE(notes, 1, _MLINE) && Exibe cada linha
NEXT
? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds' && Tempo total
SET TALK ON
CLOSE DATABASES
ERASE tmemo.dbf
ERASE tmemo.fpt





















MOD( ), funo


Divide uma expresso numrica por outra expresso numrica e retorna o restante.

Sintaxe

MOD(nDividendo, nDivisor)



Tipos de retorno

Numrico

Argumentos

nDividendo Especifica o dividendo. O nmero de casas decimais em nDividendo determina o
nmero de casas decimais no valor de retorno.

nDivisor Especifica o divisor. Um nmero positivo ser retornado se nDivisor for positivo e um
nmero negativo ser retornado se nDivisor for negativo.



Comentrios

A funo de mdulo MOD( ) e o operador % retornam resultados idnticos.


MOD( ), exemplo da funo

CLEAR
? MOD(36,10) && Exibe 6
? MOD((4*9), (90/9)) && Exibe 6
? MOD(25.250,5.0) && Exibe 0.250
? IIF(MOD(YEAR(DATE( )), 4) = 0, ' Olimpadas de Vero este ano';
, 'No h Olimpadas de Vero este ano')


























MODIFY COMMAND, comando


Abre uma janela de edio para que voc possa modificar ou criar um arquivo de programa.

Sintaxe

MODIFY COMMAND [NomeArquivo | ?]
[NOEDIT]
[NOMENU]
[NOWAIT]
[RANGE nCaractereInicial, nCaractereFinal]
[[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]]
[AS nPginaCdigo]
[SAME]
[SAVE]



Argumentos

NomeArquivo Especifica o nome de arquivo do programa a ser aberto ou criado. Se voc no
especificar uma extenso para um novo arquivo de programa, o Visual FoxPro atribuir
automaticamente uma extenso .PRG. MODIFY COMMAND suporta um estrutura de arquivo que
contm os curingas asterisco (*) e ponto de interrogao (?). Uma janela de edio aberta para
cada programa cujo nome de arquivo corresponde ao estrutura de arquivo.

Se voc omitir o nome de arquivo, ser aberta uma janela de edio para um arquivo inicialmente
denominado PROG1.PRG. Quando fechar a janela de edio, voc poder salvar o arquivo com um
nome diferente.

? Exibe a caixa de dilogo Abrir. Selecione um dos programas existentes ou digite o nome de um
novo programa a ser criado.

NOEDIT Especifica que o arquivo de programa no pode ser alterado, mas pode ser visualizado e
copiado para a rea de transferncia.

NOMENU Remove o ttulo do menu Formatar da barra de menu do sistema do Visual FoxPro,
impedindo alteraes de fonte, tamanho de fonte, espao entre linhas e recuo.

NOWAIT Continua a execuo do programa aps ser aberta a janela de edio. O programa no
aguarda o fechamento da janela de edio, mas continua a execuo na linha do programa
imediatamente seguinte linha que contm MODIFY COMMAND NOWAIT. Se voc omitir
NOWAIT quando MODIFY COMMAND for utilizado em um programa, uma janela de edio ser
aberta e a execuo do programa ser colocada em pausa at o fechamento desta janela.

NOWAIT s tem efeito dentro de um programa. Ele no tem qualquer efeito em MODIFY
COMMAND quando emitido na janela Comando.

Um NOWAIT implcito ocorrer se voc abrir mais de uma janela de edio com um nico
comando MODIFY COMMAND. Por exemplo:

MODIFY COMMAND *.PRG.



RANGE nCaractereInicial, nCaractereFinal Especifica um intervalo de caracteres selecionados
quando a janela de edio aberta. Os caracteres so selecionados a partir da posio especificada
com nCaractereInicial at (mas no inclusive) a posio do nCaractereFinal. Se nCaractereInicial
for igual a nCaractereFinal, nenhum caractere ser selecionado e o cursor ser colocado na posio
especificada com nCaractereInicial.

WINDOW NomeJanela1 Especifica uma janela cujas caractersticas so assumidas pela janela de
edio. Por exemplo, se a janela for criada com a opo FLOAT de DEFINE WINDOW, a janela de
edio poder ser movida. A janela no precisa estar ativa ou visvel, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edio aberta. A
janela de edio no assume as caractersticas da janela pai e no pode ser movida para fora da
janela pai. Se voc mover a janela pai, mover a janela de edio junto com ela.

A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW e deve estar visvel para
o acesso janela de edio.

IN SCREEN Abre explicitamente a janela de edio na janela principal do Visual FoxPro, aps ser
colocada na janela pai. Uma janela de edio colocada em uma janela pai ao incluir a clusula IN
WINDOW.

AS nPginaCdigo Converte automaticamente caracteres acentuados em um arquivo de programa
criado em uma outra plataforma do Visual FoxPro. A expresso numrica nPginaCdigo
especifica a pgina de cdigo da plataforma do Visual FoxPro em que o arquivo de programa foi
criado. O arquivo ser salvo nesta pgina de cdigo a menos que voc selecione Salvar como no
menu Arquivo para salvar o arquivo em uma pgina de cdigo diferente.

SAME Impede que a janela de edio seja trazida para a frente como a janela ativa. Caso esteja
oculta, ela ser exibida, mas no se tornar a janela ativa.

SAVE Deixa a janela de edio aberta depois que uma outra janela ativada. Se voc omitir
SAVE, a janela de edio ser fechada quando uma outra janela for ativada. A incluso de SAVE
no tem qualquer efeito quando emitido da janela Comando.



Comentrios

Quando voc faz modificaes em um arquivo de programa, o arquivo atualizado gravado no
disco. No Visual FoxPro, um arquivo backup com a extenso .BAK ser criado se voc selecionar a
caixa de verificao Criar cpia de backup na guia Editar da caixa de dilogo Opes, que aparece
quando voc seleciona Opes no menu Ferramentas.

O editor interno do Visual FoxPro ser utilizado, a menos que voc especifique um editor externo
com TEDIT no arquivo de configurao.












MODIFY DATABASE, comando


Abre o Criador de bancos de dados, possibilitando a modificao interativa do banco de dados
atual.

Sintaxe

MODIFY DATABASE [NomeBancoDados | ?]
[NOWAIT] [NOEDIT]



Argumentos

NomeBancoDados Especifica o nome do banco de dados a ser modificado.

? Exibe a caixa de dilogo Abrir, onde voc pode especificar o nome do banco de dados a ser
modificado.

NOWAIT Continua a execuo do programa aps a abertura do Criador de bancos de dados. O
programa no aguarda o fechamento do Criador de bancos de dados, mas continua a execuo na
linha do programa imediatamente seguinte linha que contm MODIFY DATABASE NOWAIT.
Se voc omitir NOWAIT quando MODIFY DATABASE for emitido em um programa, o Criador
de bancos de dados ser aberto e a execuo do programa ser colocada em pausa at o seu
fechamento.

NOWAIT s tem efeito quando emitido dentro de um programa. Ele no tem qualquer efeito em
MODIFY CLASS quando emitido na janela Comando.

NOEDIT Evita alteraes no banco de dados.
Comentrios

Para obter maiores informaes sobre como modificar de forma interativa um banco de dados com
o Criador de bancos de dados, consulte os tpicos Criador de bancos de dados e Barra de
ferramentas criador de bancos de dados e o captulo 3, Reunindo tabelas em um banco de dados,
no Guia do Usurio.


MODIFY DATABASE, exemplo do comando

O seguinte exemplo exibe o Criador de bancos de dados com as tabelas no banco de dados testdata.

CLOSE DATABASES
SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dados
MODIFY DATABASE testdata && Abre o banco de dados testdata

















MODIFY FILE, comando


Abre uma janela de edio para que voc possa modificar ou criar um arquivo de texto.

Sintaxe

MODIFY FILE [NomeArquivo | ?]
[NOEDIT]
[NOMENU]
[NOWAIT]
[RANGE nCaractereInicial, nCaractereFinal]
[[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]]
[AS nPginaCdigo]
[SAME]
[SAVE]



Argumentos

NomeArquivo Especifica o nome do arquivo de texto. Se voc no especificar uma extenso junto
com o nome do novo arquivo texto, o Visual FoxPro automaticamente atribuir uma extenso
.TXT. MODIFY FILE suporta uma estrutura de arquivo que pode conter os curingas asterisco (*) e
ponto de interrogao (?). Uma janela de edio aberta para cada arquivo de texto cujo nome
corresponda estrutura de arquivo.

Se voc omitir o nome de arquivo, ser aberta uma janela de edio para um arquivo inicialmente
denominado FILE1. Quando fechar a janela de edio, voc poder salvar o arquivo com um nome
diferente.

? Exibe a caixa de dilogo Abrir na qual voc pode selecionar um arquivo de texto.

NOEDIT Especifica que o arquivo de texto no pode ser alterado, mas pode ser visualizado e
copiado para a rea de transferncia.

NOMENU Remove o ttulo do menu Formatar da barra de menu do sistema do Visual FoxPro,
impedindo alteraes de fonte, tamanho de fonte, espao entre linhas e recuo.

NOWAIT Continua a execuo do programa aps a abertura da janela de edio. O programa no
aguarda o fechamento da janela de edio, mas continua a execuo na linha do programa
imediatamente seguinte linha que contm MODIFY FILE NOWAIT. Se voc omitir NOWAIT ,
quando emitir MODIFY FILE em um programa, a janela de edio ser aberta e a execuo do
programa ser colocada em pausa at o seu fechamento.

NOWAIT s tem efeito dentro de um programa. Ele no tem qualquer efeito em MODIFY FILE
quando emitido na janela Comando.

Um NOWAIT implcito ocorrer se voc abrir mais de uma janela de edio com um nico
comando MODIFY FILE. Por exemplo:

MODIFY FILE *.TXT



RANGE nCaractereInicial, nCaractereFinal Especifica um intervalo de caracteres selecionado,
quando voc abre uma janela de edio. Os caracteres so selecionados a partir da posio
especificada com nCaractereInicial at (mas no inclusive) a posio do nCaractereFinal. Se
nCaractereInicial for igual a nCaractereFinal, no ser selecionado nenhum caractere e o cursor ser
colocado na posio especificada com nCaractereInicial
.

WINDOW NomeJanela1 Especifica uma janela cujas caractersticas so assumidas pela janela de
edio. Por exemplo, se a janela for criada com a opo FLOAT de DEFINE WINDOW, a janela de
edio poder ser movida. A janela no precisa estar ativa ou visvel, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edio aberta. A
janela de edio no assume as caractersticas da janela pai e no possvel mov-la para fora dela.
Se voc mover a janela pai, mover a janela de edio junto com ela.

A janela pai deve, em primeiro lugar, ser definida com DEFINE WINDOW e deve estar visvel
para o acesso janela de edio.

IN SCREEN Abre explicitamente a janela de edio na janela principal do Visual FoxPro, aps ser
colocada na janela pai. Uma janela de edio colocada em uma janela pai ao incluir a clusula IN
WINDOW.

AS nPginaCdigo Converte automaticamente caracteres acentuados em um arquivo de texto
criado em uma outra plataforma do Visual FoxPro. A expresso numrica nPginaCdigo
especifica a pgina de cdigo da plataforma do Visual FoxPro em que o arquivo de texto foi criado.
O arquivo ser salvo nesta pgina de cdigo a menos que voc selecione Salvar como no menu
Arquivo para salvar o arquivo em uma pgina de cdigo diferente.

SAME Impede que a janela de edio seja adiantada como a janela ativa. Caso esteja oculta, ela
ser exibida, mas no se tornar a janela ativa.

SAVE Deixa a janela de edio aberta depois que uma outra janela ativada. Se voc omitir
SAVE, a janela de edio ser fechada quando uma outra janela for ativada. A incluso de SAVE
no tem qualquer efeito quando emitido na janela Comando.



Comentrios

Quando so feitas modificaes em um arquivo de texto, o arquivo atualizado gravado no disco.
No Visual FoxPro, um arquivo backup com a extenso .BAK ser criado se voc selecionar a caixa
de verificao Criar cpia de backup na guia Editar da caixa de dilogo Opes, que aparecem
quando voc seleciona Opes no menu Ferramentas. Nas verses anteriores do FoxPro, um
arquivo backup com a extenso .BAK ser criado se voc selecionar a caixa de verificao Backup
na caixa de dilogo Preferncias, que aparece ao selecionar Preferncias no menu Editar.

O editor do Visual FoxPro ser utilizado, a menos que voc especifique um editor externo com
TEDIT no arquivo de configurao.













MODIFY GENERAL, comando


Abre janelas de edio de campos gerais do registro atual.

Sintaxe

MODIFY GENERAL CampoGeral1 [, CampoGeral2 ...]
[NOMODIFY]
[NOWAIT]
[[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]]



Argumentos

CampoGeral1 [, CampoGeral2 ...] Especificam os nomes dos campos gerais que devem ser
abertos. Para abrir uma janela de edio para um campo Geral de uma tabela aberta em uma rea
de trabalho, que no seja a atual, inclua o alias de tabela com o nome do campo. Para abrir vrios
campos gerais no registro atual, inclua uma lista de campos gerais separados por vrgulas.

NOMODIFY Especifica que o objeto de OLE contido no campo Geral no pode ser alterado, mas
pode ser visualizado e copiado para a rea de transferncia.

NOWAIT Continua a execuo do programa aps a abertura da janela de edio de campo Geral.
O programa no aguarda o fechamento desta janela, mas continua a execuo na linha do programa
imediatamente seguinte linha que contm MODIFY GENERAL NOWAIT. Se voc omitir
NOWAIT, quando emitir MODIFY GENERAL em um programa, ser aberta uma janela de edio
e a execuo do programa ser colocada em pausa at o fechamento desta janela.

NOWAIT s tem efeito quando emitido dentro de um programa. Ele no tem qualquer efeito em
MODIFY GENERAL quando emitido na janela Comando.

WINDOW NomeJanela1 Especifica uma janela cujas caractersticas so assumidas pela janela de
edio de campo Geral. Por exemplo, se a janela for criada com a opo FLOAT de DEFINE
WINDOW, a janela de edio de campo Geral poder ser movida. A janela no precisa estar ativa
ou visvel, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai na qual a janela de edio de campo
Geral aberta. A janela de campo Geral no assume as caractersticas da janela pai e no possvel
mov-la para fora desta janela. Se voc mover a janela pai, mover a janela de campo Geral
tambm.

A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW e deve estar visvel para
o acesso janela de campo Geral.

IN SCREEN Abre explicitamente a janela de campo Geral na janela principal do Visual FoxPro,
aps ser colocada na janela pai. Uma janela de campo Geral colocada em uma janela pai ao incluir
a clusula IN WINDOW.



Comentrios

Quando uma janela de edio est aberta, voc pode inserir, modificar ou excluir um objeto de
OLE.

Para obter maiores informaes sobre objetos de OLE no Visual FoxPro, consulte Adicionando
objetos de OLE a tabelas no captulo 16, Adicionando a OLE, no Guia do Desenvolvedor.































MODIFY MEMO, comando


Abre uma janela de edio de um campo Memo no registro atual.

Sintaxe

MODIFY MEMO CampoMemo1 [, CampoMemo2 ...]
[NOEDIT]
[NOMENU]
[NOWAIT]
[RANGE nCaractereInicial, nCaractereFinal]
[[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]]
[SAME]
[SAVE]



Argumentos

CampoMemo1 [, CampoMemo2 ...] Especifica os nomes dos campos Memo que sero editados.
Para abrir uma janela de edio de um campo Memo, contido em uma tabela aberta em uma outra
rea de trabalho, inclua o alias de tabela junto com o nome do campo.

NOEDIT Especifica que o campo Memo aberto no pode ser alterado, mas pode ser visualizado e
copiado para a rea de transferncia.

NOMENU Remove o ttulo do menu Formatar da barra de menu do sistema do Visual FoxPro,
impedindo alteraes de fonte, tamanho de fonte, espao entre linhas e recuo.

NOWAIT Continua a execuo do programa aps a abertura da janela de edio. O programa no
aguarda o fechamento da janela de edio, mas continua a execuo na linha do programa
imediatamente seguinte linha que contm MODIFY MEMO NOWAIT. Se voc omitir NOWAIT,
quando emitir MODIFY MEMO em um programa, uma janela de edio ser aberta e a execuo
do programa ser colocada em pausa at o seu fechamento.

NOWAIT s tem efeito dentro de um programa. Ele no tem qualquer efeito em MODIFY MEMO
quando emitido na janela Comando.

RANGE nCaractereInicial, nCaractereFinal Especifica um intervalo de caracteres selecionados
quando a janela de edio aberta. Os caracteres so selecionados a partir da posio especificada
com nCaractereInicial at (mas no inclusive) a posio do nCaractereFinal. Se nCaractereInicial
for igual a nCaractereFinal, no ser selecionado nenhum caractere e o cursor ser colocado na
posio especificada com nCaractereInicial.

WINDOW NomeJanela1 Especifica uma janela cujas caractersticas a janela de edio assume.
Por exemplo, se a janela for criada com a opo FLOAT de DEFINE WINDOW, a janela de edio
poder ser movida. A janela no precisa estar ativa ou visvel, mas ela deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que a janela de edio aberta. A
janela de edio no assume as caractersticas da janela pai e no possvel mov-la para fora desta
janela. Se voc mover a janela pai, mover a janela de edio tambm.

A janela pai deve em primeiro lugar ser definida com DEFINE WINDOW, e deve estar visvel para
o acesso da janela de edio.

IN SCREEN Abre explicitamente a janela de edio na janela principal do Visual FoxPro, aps ser
colocada na janela pai. Uma janela de edio colocada em uma janela pai ao incluir a clusula IN
WINDOW.

SAME Impede que a janela de edio seja adiantada como a janela ativa. Caso esteja oculta, ela
ser exibida, mas no se tornar a janela ativa.

SAVE Deixa a janela de edio aberta aps uma outra janela ser ativada. Se voc omitir SAVE, a
janela de edio ser fechada quando uma outra janela for ativada. A incluso de SAVE no tem
qualquer efeito quando emitido na janela Comando.



Comentrios

possvel visualizar ou alterar o contedo do campo Memo na janela de edio.

Em uma tabela aberta para acesso compartilhado em uma rede, o registro atual bloqueado
automaticamente quando a edio comea em um de seus campos Memo.


MODIFY MEMO, exemplo do comando

O seguinte exemplo abre o campo Memo notes para o primeiro registro em employee em uma
janela de edio com um intervalo realado.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE employee && Abre a tabela Employee
MODIFY MEMO notes NOEDIT RANGE 1,10 && Os primeiros 10 caracteres selecionados
USE































MODIFY MENU, comando


Abre o Criador de menus para que voc possa modificar ou criar um sistema de menus.

Sintaxe

MODIFY MENU [NomeArquivo | ?]
[[WINDOW NomeJanela1]
[IN [WINDOW] NomeJanela2 | IN SCREEN]]
[NOWAIT]
[SAVE]



Argumentos

NomeArquivo Especifica o nome do arquivo para o menu. Caso uma extenso para o nome de
arquivo no seja especificada, o Visual FoxPro atribui automaticamente uma extenso .MNX.

? Exibe a caixa de dilogo Abrir na qual voc pode selecionar um arquivo de menu existente ou
digitar o nome de um novo menu a ser criado.

WINDOW NomeJanela1 Especifica a janela cujas caractersticas o Criador de menus assume. Por
exemplo, se a janela for criada com a opo FLOAT de DEFINE WINDOW, o Criador de menus
poder ser movido. A janela no precisa estar ativa ou visvel, mas deve estar definida.

IN [WINDOW] NomeJanela2 Especifica uma janela pai em que o Criador de menus aberto. O
Criador de menus no assume as caractersticas da janela pai e no possvel mov-lo para fora
dessa janela. Se voc mover a janela pai, mover o Criador de menus junto com ela.

A janela pai deve, em primeiro lugar, ser definida com DEFINE WINDOW e deve estar visvel para
o acesso ao Criador de menus.

IN SCREEN Abre explicitamente o Criador de menus na janela principal do Visual FoxPro, aps
ser colocado em uma janela pai. O Criador de menus colocado em uma janela pai ao incluir a
clusula IN WINDOW.

NOWAIT Continua a execuo do programa aps a abertura do Criador de menus. O programa
no aguarda o fechamento do Criador de menus, mas continua a execuo na linha do programa
imediatamente a seguir da linha que contm MODIFY MENU NOWAIT. Se voc omitir NOWAIT
quando emitir MODIFY MENU em um programa, o Criador de menus ser aberto e a execuo do
programa ser colocada em pausa at o seu fechamento.

NOWAIT somente tem efeito quando emitido dentro de um programa. Ele no tem nenhum efeito
em MODIFY MENU quando emitido na janela Comando.

Se voc emitir MODIFY MENU a partir da janela Comando sem um nome de menu e incluir
NOWAIT, o dilogo Novo menu no ser exibido. O dilogo Novo menu permite que voc
especifique o tipo de menu (padro ou tecla de atalho) criado.

SAVE Deixa o Criador de menus aberto depois que uma outra janela ativada. Se voc omitir
SAVE, o Criador de menus ser fechado quando uma outra janela for ativada. A incluso de SAVE
no tem nenhum efeito quando emitido na janela Comando.



Comentrios

Para obter maiores informaes sobre a criao de menus, consulte Criando um sistema de
menus, no captulo 11, Criando menus e barras de ferramentas, no Guia do Desenvolvedor.





























MODIFY STRUCTURE, comando


Exibe o Criador de tabelas, permitindo modificar a estrutura de uma tabela.

Sintaxe

MODIFY STRUCTURE



Comentrios

Em verses anteriores do FoxPro, MODIFY STRUCTURE abre a caixa de dilogo Estrutura da
tabela.

Caso uma tabela no esteja aberta atualmente na rea de trabalho selecionada, ser exibida a caixa
de dilogo Abrir que permite selecionar uma tabela a ser modificada.

As alteraes que podem ser feitas na estrutura de uma tabela incluem adicionar e excluir campos;
modificar nomes, tamanhos e tipos de dados de campos; adicionar, excluir ou modificar marcas de
ndice e especificar suporte de valor nulo para campos.

Voc pode tambm modificar a estrutura de uma tabela utilizando a interface. Para obter maiores
informaes, consulte Modificando tabelas no captulo 2, Criando tabelas e ndices, no Guia do
Usurio.



Cuidado Se voc alterar o tipo de dado de um campo para outro tipo de dado, o contedo do
campo poder no ser transferido corretamente, ou poder nem mesmo ser transferido. Por
exemplo, se voc converter um campo de data para um tipo numrico, o contedo do campo no
ser transferido.



O Visual FoxPro faz automaticamente uma cpia de backup da tabela atual antes de voc alterar a
estrutura da tabela. Depois de concludas as modificaes, os dados contidos na cpia de backup da
tabela so includos na estrutura da tabela recm-modificada. Se a tabela tiver um campo Memo,
tambm ser criado um arquivo de backup de memo. O arquivo de backup da tabela tem a extenso
.BAK e o arquivo de backup de memo tem a extenso .TBK.

Se voc aceitar as alteraes feitas na estrutura e, em seguida, interromper o processo de cpia dos
dados, o novo arquivo no conter todos os registros da tabela original.

Lembre-se de que o Visual FoxPro cria um arquivo .BAK para o arquivo da tabela original e, se a
tabela tiver um campo memo, uma cpia .TBK do arquivo de memo original. Em caso de
problemas com MODIFY STRUCTURE, exclua o(s) novo(s) arquivo(s) e renomeie o arquivo
.BAK e o arquivo .TBK, se houver algum, com as extenses de arquivo originais (.DBF and .FPT).

Quando voc modifica a estrutura de uma tabela que tem um campo memo, o tamanho de bloco do
arquivo de memo definido como a definio de tamanho de bloco atual. Voc pode especificar o
tamanho de bloco do arquivo de memo com SET BLOCKSIZE.




MODIFY WINDOW, comando


Modifica uma janela definida pelo usurio ou a janela principal do Visual FoxPro.

Sintaxe

MODIFY WINDOW NomeJanela | SCREEN
[FROM nLinha1, nColuna1 TO nLinha2, nColuna2
| AT nLinha3, nColuna3 SIZE nLinha4, nColuna4]
[FONT cNomeFonte [, nTamanhoFonte]]
[STYLE cEstiloFonte]
[TITLE cTextoTtulo]
[HALFHEIGHT]
[DOUBLE | PANEL | NONE | SYSTEM]
[CLOSE | NOCLOSE]
[FLOAT | NOFLOAT]
[GROW | NOGROW]
[MINIMIZE | NOMINIMIZE]
[SHADOW | NOSHADOW]
[ZOOM | NOZOOM]
[ICON FILE NomeArquivo1]
[FILL FILE NomeArquivo2]
[COLOR SCHEME nNmeroEsquema
| COLOR ListaParesCores]



Argumentos

NomeJanela Especifica a janela definida pelo usurio a ser modificada. Primeiro necessrio criar
a janela especificada com DEFINE WINDOW.

SCREEN Especifica a janela principal do Visual FoxPro como a janela a ser modificada. No
abrevie SCREEN, caso contrrio, o Visual FoxPro gerar uma mensagem de erro. Para retornar a
janela principal do Visual FoxPro sua configurao de inicializao, emita o comando abaixo sem
nenhuma clusula adicional:

MODIFY WINDOW SCREEN



Dica Utilize MODIFY WINDOW SCREEN NOCLOSE para evitar que voc mesmo finalize
acidentalmente o Visual FoxPro antes da hora.

Para obter maiores informaes sobre as clusulas MODIFY WINDOW, consulte DEFINE
WINDOW.



Comentrios

MODIFY WINDOW altera os atributos de uma janela existente definida pelo usurio (uma janela
criada com DEFINE WINDOW) ou a janela principal do Visual FoxPro. MODIFY WINDOW no
pode ser utilizado para alterar os atributos de janelas do sistema do Visual FoxPro (como as janelas
Comando e Pesquisar).

Utilize MODIFY WINDOW para alterar a localizao, a fonte padro, o ttulo, a borda, os
controles, o cone, o papel de parede e a cor de uma janela definida pelo usurio ou da janela
principal do Visual FoxPro. Voc pode alterar qualquer um desses atributos ao incluir as clusulas
opcionais para o comando MODIFY WINDOW. (Observe que se alterar as cores, voc deve utilizar
CLEAR para aplicar as alteraes.)

Por exemplo, inclua as clusulas FROM e TO ou AT e SIZE para especificar uma nova localizao
ou um novo tamanho para uma janela definida pelo usurio ou para a janela principal do Visual
FoxPro. Para evitar que uma janela definida pelo usurio ou a janela principal do Visual FoxPro
sejam movidas, inclua a palavra-chave NOFLOAT.


MODIFY WINDOW, exemplo do comando

O exemplo a seguir altera o contedo da barra de ttulo da janela principal do Visual FoxPro.

MODIFY WINDOW SCREEN TITLE 'Meu aplicativo'





















MONTH( ), funo


Retorna o nmero do ms de uma expresso de Data ou de DataHora especificada.

Sintaxe

MONTH(dExpresso | tExpresso)



Tipos de retorno

Numrico

Argumentos

dExpresso Especifica a expresso de Data para a qual voc deseja que MONTH( ) retorne o
nmero do ms.

tExpresso Especifica a expresso de DataHora para a qual voc deseja que MONTH( ) retorne o
nmero do ms.



Comentrios

MONTH( ) retorna um nmero de 1 a 12. Janeiro o ms 1 e dezembro o ms 12.

MONTH( ), exemplo da funo

CLEAR
? DATE( ) && Exibe a data atual
? MONTH(DATE( )) && Exibe o nmero do ms
STORE {05/03/95} TO gdBuy
STORE MONTH(gdBuy + 31) TO gdMonth
? gdMonth






























MOVE POPUP, comando


Move um menu definido pelo usurio criado com DEFINE POPUP para uma nova localizao.

Sintaxe

MOVE POPUP NomeMenu TO nLinha1, nColuna1 | BY nLinha2, nColuna2



Argumentos

NomeMenu Especifica o menu a ser movido.

No Visual FoxPro, no possvel mover o menu do sistema.

TO nLinha1, nColuna1 Move o menu para uma localizao especificada por nLinha1, nColuna1
, em uma janela definida pelo usurio ou na janela principal do Visual FoxPro.

BY nLInha2, nColuna2 Move o menu para uma localizao relativa sua posio atual. nLinha2
especifica o nmero de linhas que o menu deve ser movido (para baixo se nLinha2 for positiva, para
cima se for negativa). A expresso numrica nColuna2 especifica o nmero de colunas que o menu
deve ser movido (para a direita se nColuna2 for positiva, para a esquerda se for negativa).



Comentrios

possvel mover um menu para uma posio especfica ou para uma posio relativa sua posio
atual. Se estiver definido, o menu poder ser movido; no necessrio que ele esteja ativo ou
visvel.


MOVE POPUP, exemplo do comando

prximo exemplo define e ativa um menu e, em seguida, move e altera seu tamanho.

CLOSE DATABASE
CLEAR
DEFINE POPUP popMovIn FROM 2,2 TO 7, 14 PROMPT FILES LIKE *.PRG ;
TITLE 'Programas'
ACTIVATE POPUP popMovIn NOWAIT
=CHRSAW(2)
MOVE POPUP popMovIn BY 5,5 && Move o menu para baixo
=CHRSAW(2)
SIZE POPUP popMovIn BY 5,5 && Aumenta o menu
=CHRSAW(2)
SIZE POPUP popMovIn BY -5,-5 && Diminui o menu
=CHRSAW(2)
MOVE POPUP popMovIn BY -5,-5 && Move o menu para cima
=CHRSAW(2)
DEACTIVATE POPUP popMovIn

RELEASE POPUP popMovIn






MOVE WINDOW, comando


Move uma janela definida pelo usurio criada com DEFINE WINDOW ou uma janela do sistema
do Visual FoxPro (como a janela Comando ou a janela Pesquisar) para uma nova localizao.

Sintaxe

MOVE WINDOW NomeJanela TO nLinha1, nColuna1
| BY nLinha2, nColuna2 | CENTER



Argumentos

NomeJanela Especifica o nome da janela a ser movida.

TO nLinha1, nColuna1 Move a janela para uma localizao, especificada por nLinha1, nColuna1,
na janela principal do Visual FoxPro ou em uma janela definida pelo usurio.

BY nLinha2, nColuna2 Move a janela para uma localizao relativa sua posio atual. A
expresso numrica nLinha2 especifica o nmero de linhas que a janela deve ser movida (para
baixo se nLinha2 for positiva, para cima se for negativa). A expresso numrica coluna nColuna2
especifica o nmero de colunas que a janela deve ser movida (para a direita se nColuna2 for
positiva, para a esquerda se for negativa).

CENTER Centraliza uma janela na janela principal do Visual FoxPro ou na sua janela pai.



Comentrios

possvel mover uma janela para uma posio especfica ou para uma posio relativa sua
posio atual. Se estiver definida, a janela poder ser movida; no necessrio que ela esteja ativa
ou visvel.

Para mover uma janela do sistema ou uma barra de ferramentas (no Visual FoxPro), coloque o
nome da janela ou da barra de ferramentas entre aspas. Por exemplo, para mover a barra de
ferramentas Controles de relatrio (quando no est ancorada) no Visual FoxPro, emita o comando
a seguir:

MOVE WINDOW "Controles de relatrio" BY 1,1



MOVE WINDOW, exemplo do comando

No exemplo a seguir, aps a definio e ativao da janela denominada wEnter, a janela ser
movida.

DEFINE WINDOW wEnter FROM 10,4 TO 15,54 SYSTEM ;
TITLE "Nomadic Window"
ACTIVATE WINDOW wEnter
WAIT WINDOW 'Pressione qualquer tecla para mover a janela'
MOVE WINDOW wEnter TO 20,15
WAIT WINDOW 'Pressione qualquer tecla para centralizar a janela'
MOVE WINDOW wEnter CENTER
WAIT WINDOW 'Pressione qualquer tecla para liberar a janela'
RELEASE WINDOW wEnter





MTON( ), funo


Retorna um valor Numrico de uma expresso de Moeda.

Sintaxe

MTON(mExpresso)



Tipos de retorno

Numrico

Argumentos

mExpresso Especifica uma expresso de Moeda cujo valor retornado por MTON( ).
mExpresso deve resultar em um valor Moeda vlido; caso contrrio, o Visual FoxPro gera um
erro.

Os valores do tipo Moeda so criados colocando-se um cifro ($) imediatamente antes de um valor
Numrico.



Comentrios

MTON( ) retorna um valor Numrico com quatro casas decimais.
MTON( ), exemplo da funo

O exemplo abaixo cria uma varivel de tipo Moeda denominada gyMoney. TYPE( ) exibe Y,
indicando que a varivel de tipo Moeda. MTON( ) utilizada para converter a varivel a um tipo
Numrico e TYPE( ) agora exibe N, indicando que a varivel de tipo Numrico aps a converso.

STORE $24.95 TO gyMoney && Cria uma varivel de memria tipo Moeda
CLEAR
? "gyMoney do tipo: "
?? TYPE('gyMoney') && Exibe Y, valor de tipo Moeda

gyMoney = MTON(gyMoney) && Converte gyMoney para um valor Numrico
? "gyMoney agora do tipo: "
?? TYPE('gyMoney') && Exibe N, valor de tipo Numrico






















NDX, funo ( )


Retorna o nome de um arquivo de ndice aberto (.IDX) para a tabela atual ou especificada.

Sintaxe

NDX(nNmerondice [, nreaTrabalho | cAliasTabela])



Tipos de retorno

Caractere

Argumentos

nNmerondice Especifica qual nome de arquivo .IDX ser retornado. USE e SET INDEX
suportam uma lista de arquivos de ndice que permite que voc abra arquivos .IDX para uma tabela.
A ordem dos nomes de arquivos nessa lista determina o nome do arquivo .IDX retornado por
NDX( ). Por exemplo, se nNmerondice for igual a 1, NDX( ) retornar o nome do primeiro
arquivo .IDX na lista de arquivos de ndice, se nNmerondice for igual a 2, NDX( ) retornar o
nome do segundo arquivo .IDX, e assim por diante. NDX( ) ignora os nomes dos arquivos de ndice
composto (.CDX) na lista de arquivos de ndice.

NDX( ) retornar uma seqncia vazia se nNmerondice for maior do que o nmero de arquivos
.IDX na lista de arquivos de ndice.

nreaTrabalho Especifica o nmero da rea de trabalho para arquivos .IDX abertos em uma rea
de trabalho diferente da atual. NDX( ) retornar uma seqncia vazia se nenhuma tabela estiver
aberta na rea de trabalho especificada. Se voc omitir nreaTrabalho, NDX( ) retornar os nomes
dos arquivos .IDX abertos com a tabela na rea de trabalho atual.

cAliasTabela Especifica o alias de tabela para os arquivos .IDX abertos em uma rea de trabalho
diferente da atual. Caso nenhuma tabela apresente o alias que voc incluiu, o Visual FoxPro exibir
uma mensagem de erro. Se voc omitir cAliasTabela, NDX( ) retornar os nomes dos arquivos
.IDX abertos com a tabela na rea de trabalho atual.



Comentrios

As funes CDX( ) e MDX( ) podem ser utilizadas para retornar os nomes dos arquivos de ndice
composto abertos (.CDX).

No Visual FoxPro para Windows, quando SET FULLPATH est ativado (ON), NDX( ) retorna o
caminho do arquivo .IDX junto com o nome do arquivo .IDX. Quando SET FULLPATH est
desativado (OFF), NDX( ) retorna a unidade de disco onde o arquivo .IDX reside junto com o nome
de arquivo .IDX.












NORMALIZE( ), funo


Converte uma expresso de caracteres, fornecida por um usurio, de uma forma que pode ser
comparada com os valores de retorno de funo do Visual FoxPro.

Sintaxe

NORMALIZE(cExpresso)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres a ser normalizada.



Comentrios

NORMALIZE( ) retorna uma seqncia de caracteres a partir da expresso de caracteres
cExpresso com as seguintes alteraes::

A expresso de caracteres convertida em maisculas. Contudo, as seqncias embutidas
no so alteradas. Um exemplo de uma seqncia embutida "Al" na expresso de caracteres
"LEFT('Al',1)".
As palavras-chave abreviadas do Visual FoxPro na expresso de caracteres so expandidas,
ficando escritas por extenso.
Os operadores -> separando aliases de nomes de campos so convertidos em pontos.
A sintaxe de qualquer comando ou funo do Visual FoxPro dentro da expresso de
caracteres verificada, embora a expresso no seja avaliada. Se a sintaxe no estiver correta, o
Visual FoxPro ir gerar um erro de sintaxe. NORMALIZE( ) no verifica a existncia de campos,
tabelas, variveis de memria, funes definidas pelo usurio ou outras referncias na expresso de
caracteres.



Por exemplo, um usurio pode digitar no Construtor de expresses uma expresso de ndice igual
seguinte:

UPPE(cust->lname) + UPPE(cust->fname)



Embora seja uma expresso de chave de ndice vlida do Visual FoxPro, difcil compar-la com
os valores de retorno de uma funo do Visual FoxPro como KEY( ).NORMALIZE( ) retorna a
seguinte seqncia de caracteres para a expresso acima:

UPPER(CUST.LNAME) + UPPER(CUST.FNAME)



Ela pode ser facilmente comparada com o valor retornado por uma funo como KEY( ),
permitindo que voc, neste exemplo, determine se j existe um ndice ou marca de ndice com a
expresso de ndice fornecida pelo usurio.



NOTE, comando


Indica o incio de uma linha de comentrio no executvel em um arquivo de programa.

Sintaxe

NOTE [Comentrios]



Argumentos

Comentrio Especifica o comentrio.



Comentrios

Coloque um ponto-e-vrgula (;) no final de cada linha de comentrio que continua na linha seguinte.


NOTE, exemplo do comando

NOTE Inicializa o nmero de pgina;
variable.
STORE 1 to gnPageNum
* Inicializa o Loop
DO WHILE gnPageNum <= 25 && loop 25 vezes
gnPageNum = gnPageNum + 1
ENDDO && DO WHILE gnPageNum <= 25

NTOM( ), funo


Retorna um valor Moeda com quatro casas decimais a partir de uma expresso numrica.

Sintaxe

NTOM(nExpresso)



Tipos de retorno

Moeda

Argumentos

nExpresso Especifica uma expresso numrica cujo valor Moeda retornado por NTOM( ). Se
nExpresso tiver mais de quatro casas decimais, ele ser arredondado para quatro casas decimais.
Se nExpresso tiver menos de 4 casas decimais, ser preenchido com zeros at que sejam criadas
quatro casas decimais.



NTOM( ), exemplo da funo

O exemplo que se segue cria uma varivel de tipo numrico denominada gnNumeric. TYPE( ) exibe
N, indicando que a varivel um tipo numrico. NTOM( ) utilizado para converter a varivel em
um tipo de moeda e TYPE( ) agora exibe Y, indicando que a varivel um tipo de moeda aps a
converso.

STORE 24.95 TO gnNumeric && Cria uma varivel de memria tipo numrica
CLEAR
? "gnNumeric digitado: "
?? TYPE('gnNumeric') && Exibe N, tipo valor numrico

gnNumeric= NTOM(gnNumeric) && Converte gnNumrico para um valor atual
? "gnNumeric agora digitado: "
?? TYPE('gnNumeric') && Exibe Y, valor tipo atual

























NUMLOCK( ), funo


Retorna o modo atual da tecla NUM LOCK ou define o modo da tecla NUM LOCK como ativada
ou desativada.

Sintaxe

NUMLOCK([lExpresso])



Tipos de retorno

Lgico

Argumentos

lExpresso Define a tecla NUM LOCK como ativada ou desativada. Se lExpresso for verdadeiro
(.T.), a tecla NUM LOCK ser ativada; se lExpresso for falso (.F.), a tecla NUM LOCK ser
desativada. NUMLOCK( ) retornar um valor lgico correspondente definio da tecla NUM
LOCK antes da emisso de NUMLOCK(.T.) ou NUMLOCK(.F.).



Comentrios

NUMLOCK( ) retornar verdadeiro (.T.) se a tecla NUM LOCK estiver ativada (pressionar uma
tecla no teclado numrico retorna um nmero), ou falso (.F.) se NUM LOCK estiver desativada
(pressionar uma tecla no teclado numrico move o cursor).

No Visual FoxPro for Macintosh, a definio da tecla NUM LOCK pode ser alterada pressionando-
se SHIFT+CLEAR.


NUMLOCK( ), exemplo da funo

No exemplo a seguir, o sinal de igual (=) utilizado para executar NUMLOCK( ) sem retornar um
valor.

gcOldLock = NUMLOCK( ) && Salva configurao original
WAIT WINDOW 'Pressione uma tecla para ativar NumLock'
= NUMLOCK(.T.) && Ativa NumLock
WAIT WINDOW 'Pressione uma tecla para desativar NumLock'
= NUMLOCK(!NUMLOCK( )) && Alterna NumLock para valor oposto
WAIT WINDOW 'Pressione uma tecla para recuperar a definio original de NumLock'
= NUMLOCK(gcOldLock) && Retorna definio original

















NVL( ), funo



Retorna um valor no-nulo a partir de duas expresses.

Sintaxe

NVL(eExpresso1, eExpresso2)



Tipos de retorno

Caractere, Data, DataHora, Numrico, Moeda, Lgico ou valor nulo

Argumentos

eExpresso1, eExpresso2 NVL( ) retornar eExpresso2 se eExpresso1 resultar em um valor
nulo. NVL( ) retornar eExpresso1se eExpresso1 no for um valor nulo. eExpresso1 e
eExpresso2 podem ser formados por qualquer tipo de dados. NVL( ) retornar .NULL. se tanto
eExpresso1 e eExpresso2 resultarem em valor nulo.



Comentrios

Utilize NVL( ) para remover valores nulos de clculos ou operaes onde valores nulos no so
suportados ou no so relevantes.


NVL( ), exemplo da funo

O exemplo a seguir cria uma varivel de memria denominada glMyNull que contm o valor nulo.
NVL( ) utilizada para retornar um valor no nulo a partir de glMyNull e outra expresso.

STORE .NULL. TO glMyNull && Uma varivel de memria que contm um valor nulo
CLEAR
? NVL(.T., glMyNull) && Exibe .T.
? NVL(glMyNull, glMyNull) && Exibe .NULL.

























OCCURS( ), funo


Retorna o nmero de vezes que uma expresso de caracteres ocorre dentro de uma outra expresso
de caracteres.

Sintaxe

OCCURS(cExpressoProcurada, cExpressoPesquisada)



Tipos de retorno

Numrico

Argumentos

cExpressoProcurada Especifica uma expresso de caracteres que OCCURS( ) procura dentro da
cExpressoPesquisada.

CExpressoPesquisada Especifica a expresso de caracteres em que OCCURS( ) procura a
cExpressoProcurada.



Comentrios

OCCURS( ) retornar 0 (zero) se a cExpressoProcurada no for localizada na
cExpressoPesquisada.


OCCURS( ), exemplo da funo

STORE 'abracadabra' TO gcstring
CLEAR
? OCCURS('a', gcstring) && Exiba 5
? OCCURS('b', gcstring) && Exiba 2
? OCCURS('c', gcstring) && Exiba 1
? OCCURS('e', gcstring) && Exiba 0





























OLDVAL( ), funo


Retorna valores originais de campos que foram modificados, mas no atualizados.

Sintaxe

OLDVAL(cExpresso [, cAliasTabela | nreaTrabalho])



Tipos de retorno

Caractere, Moeda, Data, DataHora, Duplo, Flutuante, Inteiro, Lgico, Numrico ou Memo

Argumentos

cExpresso Especifica uma expresso cujo valor original retornado por OLDVAL( ) a partir de
uma tabela ou uma fonte remota de dados. cExpresso normalmente um campo ou expresso que
consiste em um conjunto de campos da tabela ou da fonte remota de dados.

cAliasTabela Especifica o alias da tabela ou cursor a partir do qual os valores originais do campo
so retornados.

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

Comentrios

OLDVAL( ) retorna os valores originais de campo para os registros de uma tabela ou cursor do
Visual FoxPro que apresente a utilizao do buffer de linha ou de tabela ativada com
CURSORSETPROP( ).

Se uma tabela de um banco de dados ou um cursor possuir regras de validao, a funo
OLDVAL( ) no exigir que a utilizao do buffer de linha ou de tabela seja ativada para retornar
os valores originais do campo.

Se o ponteiro do registro for movido para um registro diferente quando a utilizao do buffer de
linha for ativada, ou se TABLEUPDATE( ) for emitida para executar alteraes no registro, ou se
houver uma outra ao que cause uma atualizao, como o finalizar de uma transao, os campos
sero atualizados e os seus valores originais no estaro mais disponveis.

O tipo de dado do valor que OLDVAL( ) retorna determinado pela expresso especificada em
cExpresso.

Os valores originais do campo sero retornados para a tabela ou cursor aberto na rea de trabalho
selecionada atualmente se OLDVAL( ) for emitida sem os argumentos opcionais cAliasTabela ou
nreaTrabalho.


OLDVAL( ), exemplo da funo

O exemplo que se segue demonstra como OLDVAL( ) utilizado para retornar o valor original dos
campos em uma tabela com utilizao de buffer. Uma tabela denominada employees criada e
INSERT - SQL utilizada para inserir o valor Smith no campo cSobrenome.
MULTILOCKS definido como ON, uma exigncia para utilizao de buffer de tabela.
CURSORSETPROP( ) utilizado para definir o modo de utilizao do buffer de tabela otimista (5).
O valor original do campo cSobrenome (Smith) exibido e, em seguida, o campo cSobrenome ser
modificado com REPLACE. O novo valor do campo cSobrenome (Jones) ser exibido. O valor
original do campo cSobrenome (Smith) ser exibido como OLDVAL( ). TABLEUPDATE( ) ,
ento, utilizado para executar alteraes na tabela. O valor atualizado no campo cSobrenome
(Jones) ser ento exibido.

CLOSE DATABASES
CLEAR

* Cria uma nova tabela e adiciona um registro vazio
CREATE TABLE employee (cLastName C(10))
APPEND BLANK

* Insere um valor inicial
INSERT INTO employee (cLastName) VALUES ("Smith")

* Ative e defina a utilizao do buffer de tabela
SET MULTILOCKS ON && Permita a utilizao do buffer de tabela
=CURSORSETPROP("Utilizao do buffer", 5, "employee" ) && Ative a utilizao do buffer de
tabela

* Exibe o valor inicial
=MESSAGEBOX("Valor original de cSobrenome: "+ cSobrenome, 0, "Resultados")


* Altera o valor do registro e exiba resultados
REPLACE cLastName WITH "Jones"
=MESSAGEBOX("Valor modificado cSobrenome: "+ cLastName, 0, "Resultados")

* Armazena o valor anterior do campo na varivel cTemp e exiba resultados
cTemp=OLDVAL("cSobrenome", "employee")
=MESSAGEBOX("Valor original cSobrenome: "+ cTemp, 0, "Resultados")

* Atualiza a tabela e exibe o valor final
=TABLEUPDATE(.T.)
=MESSAGEBOX("Valor final de cSobrenome: "+ cSobrenome, 0, "Resultados")


* Fecha e elimina o arquivo da tabela de exemplo
USE
DELETE FILE employee.dbf




















ON ERROR, comando


Especifica um comando que executado quando um erro ocorre.

Sintaxe

ON ERROR
[Comando]



Argumentos

Comando Especifica o comando do Visual FoxPro a ser executado. Aps a execuo do comando,
a execuo do programa retomada na linha logo aps que provocou o erro. No entanto, se o
procedimento de gerenciamento de erros incluir RETRY, a linha do programa que provocou o erro
ser executada novamente.

Caso o comando especifique um procedimento a ser executado quando ocorrer um erro, voc
poder utilizar ERROR( ), MESSAGE( ), LINENO( ) e PROGRAM( ) para passar o nmero do
erro, a mensagem de erro, o nmero da linha do programa e o nome do programa para o
procedimento. Estas informaes podem ser utilizadas para corrigir a causa do erro.



Comentrios

Quando ocorre um erro durante a execuo do programa, o Visual FoxPro executa o comando
especificado com ON ERROR. Normalmente, ON ERROR utiliza DO para executar um
procedimento de gerenciamento de erros.

Utilize ON ERROR sem um comando para restaurar o Gerenciador de erros padro do Visual
FoxPro.

Os procedimentos ON ERROR no podem ser aninhados. Caso ON ERROR seja emitido a partir de
um procedimento, o Gerenciador de erros padro do Visual FoxPro ser restaurado.


ON ERROR, exemplo do comando

ON ERROR DO errhand WITH ;
ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )
*** A prxima linha deve causar um erro ***
USE nodatabase
ON ERROR && recupera o Gerenciador de erro do sistema
PROCEDURE errhand
PARAMETER merror, mess, mess1, mprog, mlineno
CLEAR
? 'Nmero de erros: ' + LTRIM(STR(merror))
? 'Mensagem de erro: ' + mess
? 'Linha de cdigo com erro: ' + mess1
? 'Nmero de linhas com erro: ' + LTRIM(STR(mlineno))
? 'Programa com erro: ' + mprog








ON ESCAPE, comando


Especifica um comando que executado quando a tecla ESC pressionada, durante a execuo de
um programa ou comando.

Sintaxe

ON ESCAPE
[Comando]



Argumentos

Comando Especifica o comando do Visual FoxPro a ser executado. Aps a execuo do comando,
a execuo do programa retomada na linha logo aps do programa que estava em execuo
quando a tecla ESC foi pressionada. No entanto, se um procedimento especificado com ON
ESCAPE incluir RETRY, a linha do programa que estava em execuo quando a tecla ESC foi
pressionada ser executada novamente.



Comentrios

Normalmente, ON ESCAPE utiliza DO para executar um procedimento.

Se ON ESCAPE e ON KEY estiverem ativados e voc pressionar a tecla ESC, o Visual FoxPro
executar o comando especificado com ON ESCAPE.

Utilize ON ESCAPE sem um comando para que nenhum comando seja executado quando a tecla
ESC for pressionada (o padro).

Observao O Visual FoxPro no executa uma rotina ON ESCAPE se SET ESCAPE estiver
desativado (OFF).



ON ESCAPE, exemplo do comando

O exemplo a seguir define um loop infinito, mas define uma rotina ON ESCAPE para sair dele.

SET ESCAPE ON
ON ESCAPE DO stopit
WAIT WINDOW 'Pressione ESC para parar loop' NOWAIT
glMoreLoop = .T.

DO WHILE glMoreLoop
ENDDO
RETURN

PROCEDURE stopit
glMoreLoop = .F.
RETURN










ON KEY LABEL, comando


Especifica um comando que executado quando voc pressiona uma tecla ou uma combinao
especfica de teclas ou clica com o boto do mouse.

Sintaxe

ON KEY [LABEL NomeRtuloChave] [Comando]



Argumentos

LABEL NomeRtuloChave Especifica o nome do rtulo atribudo tecla. O NomeRtuloChave
a letra ou dgito que aparece na tecla ou um nome especial atribudo tecla. A tabela a seguir lista
os nomes de rtulos de teclas especiais.

Atribuies de rtulos de teclas do Visual FoxPro

Para esta tecla Especifique este valor NomeRtuloChave

LEFTARROW
RIGHTARROW
UPARROW
DNARROW
HOME HOME
END END
PAGE UP PGUP
PAGE DOWN PGDN
DEL DEL
BACKSPACE BACKSPACE
SPACEBAR SPACEBAR
INS INS
TAB TAB
SHIFT+TAB BACKTAB
ENTER ENTER
F1 to F12 F1, F2, F3 ...
CTRL+F1 to CTRL+F12 CTRL+F1, CTRL+F2 ...
SHIFT+F1 to SHIFT+F12 SHIFT+F1, SHIFT+F2 ...
ALT+F1 to ALT+F12 ALT+F1, ALT+F2, ALT+F3 ...
ALT+0 to ALT+9 ALT+0, ALT+1, ALT+2 ...
ALT+A to ALT+Z ALT+A, ALT+B, ALT+C ...
CTRL+LEFT ARROW CTRL+LEFTARROW
CTRL+RIGHT ARROW CTRL+RIGHTARROW
CTRL+HOME CTRL+HOME
CTRL+END CTRL+END
CTRL+PAGE UP CTRL+PGUP
CTRL+PAGE DOWN CTRL+PGDN
CTRL+A TO CTRL+Z CTRL+A, CTRL+B, CTRL+C ...
CTRL+0 CTRL+0
RIGHT MOUSE BUTTON RIGHTMOUSE
LEFT MOUSE BUTTON LEFTMOUSE
MOUSE BUTTON MOUSE
ESC ESC
Comando Especifica o comando que ser executado quando a tecla ou combinao especificada de
teclas for pressionada ou quando o boto do mouse for clicado.

Voc pode incluir expresso de parmetros ou parmetro ao comando atribudo tecla, como no
seguinte exemplo:

ON KEY LABEL ALT+V WAIT WINDOW "Verso: " + VERSION()



Voc pode incluir variveis na atribuio, mas estas devem ser pblicas. Por exemplo:

PUBLIC message
message = "Unidade padro: " + SYS(5)
ON KEY LABEL ALT+D WAIT WINDOW message



Comentrios

Normalmente, ON KEY LABEL utiliza DO para executar um procedimento.

ON KEY LABEL executa o comando imediatamente durante a execuo de READ, BROWSE,
EDIT, CHANGE e menus definidos pelo usurio. Se um programa estiver sendo executado quando
voc pressionar a tecla ou clicar no boto do mouse, o Visual FoxPro executar a linha do programa
atual e, em seguida, o comando ON KEY LABEL. Qualquer atribuio de tecla com ON KEY
LABEL criada em um programa permanece em vigor aps a execuo do programa. Voc pode
tambm criar atribuies de teclas na janela Comando.

Para retornar o comportamento de uma tecla especfica ao normal, emita ON KEY LABEL
NomeRtuloChave. Para retornar todas as teclas para o comportamento padro, emita ON KEY.

Dica Para evitar a ocorrncia de chamadas repetidas durante a execuo de um procedimento ON
KEY LABEL, inclua PUSH KEY CLEAR no incio do procedimento para desativar todos os
comandos ON KEY LABEL ativos. Execute POP KEY no final do procedimento para ativar os
comandos ON KEY LABEL.



As atribuies de teclas feitas com ON KEY LABEL no entraro em vigor na barra de menus do
sistema do Visual FoxPro, bem como nos menus do sistema, caixas de dilogo, alertas e assim por
diante. As atribuies de teclas entraro em vigor nas janelas do sistema do Visual FoxPro no
editor de texto do Visual FoxPro, na janela Comando, na janela Rastrear etc.

Ao contrrio do que acontece com ON KEY, podem existir vrios comandos ON KEY LABEL
ativos. Por exemplo, voc pode atribuir um comando a cada uma das teclas de direo e a um boto
do mouse.

Observe que a execuo de um comando ON KEY LABEL redefine PARAMETERS( ) como 0.
Para obter maiores informaes, consulte PARAMETERS( ).

No Visual FoxPro, certos eventos no podem ser interceptados porque esto sob o controle do
Windows. Em especial, ON KEY LABEL MOUSE, ON KEY LABEL LEFTMOUSE e ON KEY
LABEL RIGHTMOUSE no sero executados quando voc clicar em um controle do Windows
como uma barra de rolagem, um menu Controle ou um item semelhante. Observe ainda que
CTRL+0 suportado em ON KEY LABEL no Visual FoxPro, permitindo que voc redefina a
combinao de teclas utilizadas para digitar um valor nulo em um campo.


ON KEY LABEL, exemplo do comando

O exemplo a seguir exibe uma mensagem quando uma tecla de direo pressionada.

CLEAR
PUBLIC msg
msg = CHR(13) + CHR(13) + "Pressione F9 para " + ;
"restaurar a definio chave padro".
ON KEY LABEL RIGHTARROW Wait Window "Seta direita " + msg NOWAIT
ON KEY LABEL LEFTARROW Wait Window "Seta esquerda " + msg NOWAIT
ON KEY LABEL UPARROW Wait Window "Seta acima " + msg NOWAIT
ON KEY LABEL DNARROW Wait Window "Seta abaixo " + msg NOWAIT

* Pressione F9 para limpar os atributos ON KEY LABEL
ON KEY LABEL F9 ON KEY






















ON PAD, comando


Especifica a barra de menu ou menu ativado quando voc seleciona um ttulo especfico do menu.

Sintaxe

ON PAD NomeTtuloMenu OF NomeBarraMenus1
[ACTIVATE POPUP NomeMenu
| ACTIVATE MENU NomeBarraMenus2



Argumentos

NomeTtuloMenu OF NomeBarraMenus1 Especifica o ttulo do menu para o qual uma barra de
menu ou menu atribudo.

ACTIVATE POPUP NomeMenu Especifica o menu a ser ativado quando o ttulo do menu
selecionado. Utilize ON PAD NomeTtuloMenu OF NomeBarraMenus1 sem ACTIVATE POPUP
para liberar um menu de um ttulo do menu.

Se voc especificar a barra de menu do sistema _MSYSMENU para NomeBarraMenus1,
NomeMenu no poder especificar um menu criado com a clusula DEFINE POPUP PROMPT.

ACTIVATE MENU NomeBarraMenus2 Especifica o nome da barra de menu a ser ativado quando
o ttulo do menu selecionado. Utilize ON PAD NomeTtuloMenu OF NomeBarraMenus1 sem
ACTIVATE MENU para liberar uma barra de menu de um nome de menu.



Comentrios

Utilize ON SELECTION PAD para executar um comando quando um ttulo de menu selecionado.






























ON PAGE, comando


Especifica um comando a ser executado quando a impresso alcana um nmero de linha
especificado em um relatrio ou quando voc emite EJECT PAGE.

Sintaxe

ON PAGE
[AT LINE nNmeroLinha [Comando]]



Argumentos

AT LINE nNmeroLinha [Comando] Especifica o comando a ser executado no nmero de linha
designado. O comando especificado executado quando _PLINENO, a varivel do sistema que
mantm a trilha do nmero de linha atual em um relatrio, se torna maior que o nmero de linha
especificado com nNmeroLinha. O comando especificado com ON PAGE tambm executado
quando voc emite EJECT PAGE. Para obter maiores informaes, consulte EJECT PAGE.



Comentrios

Normalmente, ON PAGE utiliza DO a fim de executar um procedimento para o tratamento de
quebras de pgina, cabealhos e rodaps.

A execuo de ON PAGE sem a clusula AT LINE limpa o comando ON PAGE.

































ON SELECTION MENU, comando


Especifica um comando que executado quando voc seleciona um ttulo de menu em uma barra de
menus.

Sintaxe

ON SELECTION MENU NomeBarraMenus | ALL
[Comando]



Argumentos

NomeBarraMenus Especifica o nome da barra de menus para a qual um comando atribudo. O
comando executado quando qualquer ttulo de menu selecionado na barra de menus. Voc pode
especificar o nome de uma barra de menus definida pelo usurio criada com DEFINE MENU ou
com a barra de menus do sistema do Visual FoxPro, _MSYSMENU.

ALL Executa um comando quando qualquer ttulo de menu selecionado em qualquer barra de
menus.

Comando Especifica o comando a ser executado quando um ttulo de menu for selecionado.
Utilize ON SELECTION MENU sem um comando para liberar um comando atribudo a uma barra
de menus.



Comentrios

Ao criar e ativar uma barra de menus, coloque ON SELECTION MENU entre DEFINE MENU e
ACTIVATE MENU.

Utilize ON SELECTION PAD para executar um comando quando um item de menu especfico for
selecionado. ON SELECTION PAD prevalece sobre ON SELECTION MENU. Utilize ON PAD
para ativar um menu ou uma barra de menus quando um ttulo de menu especfico for selecionado.

Utilize ON SELECTION MENU sem um comando para liberar um comando atribudo a uma barra
de menus.


ON SELECTION MENU, exemplo do comando

No exemplo a seguir, ON SELECTION MENU utilizado para executar um procedimento quando
um ttulo de menu selecionado na barra de menus do sistema do Visual FoxPro.
A atual barra de menus do sistema gravada na memria com SET SYSMENU SAVE e todos os
ttulos de menu do sistema so removidos com SET SYSMENU TO.
DEFINE PAD cria vrios ttulos de menu do sistema. Quando voc seleciona um ttulo de menu, o
procedimento choice, atribudo barra de menus com ON SELECTION MENU, executado. O
procedimento choice exibe o nome do ttulo de menu selecionado e o nome da barra de menus. Se
voc selecionar o ttulo do menu Sair, o menu original do sistema do Visual FoxPro ser restaurado.

*** Nomeie este programa como ONMENU.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padSys OF _MSYSMENU PROMPT '\<Sistema' COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Editar' COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Registro' COLOR SCHEME 3 ;
KEY ALT+R, ''
DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Janela' COLOR SCHEME 3 ;
KEY ALT+J, ''
DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<latrios' COLOR SCHEME 3 KEY
ALT+L, ''

DEFINE PAD padExit OF _MSYSMENU PROMPT 'S\<air' COLOR SCHEME 3 ;
KEY ALT+A, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN onmenu WITH PAD( ), MENU( )
PROCEDURE choice
PARAMETER gcPad, gcMenu
WAIT WINDOW 'Voc escolhe ' + gcPad + ;
' no menu ' + gcMenu NOWAIT
IF gcPad = 'PADEXIT'
SET SYSMENU TO DEFAULT
ENDIF











ON SELECTION PAD, comando

Especifica um comando que executado quando voc seleciona um ttulo de menu especfico em
uma barra de menus.

Sintaxe

ON SELECTION PAD NomeTtuloMenu OF NomeBarraMenus
[Comando]



Argumentos

NomeTtuloMenu OF NomeBarraMenus Especifica o nome do ttulo de menu ao qual o comando
atribudo.

Comando Especifica o comando do Visual FoxPro a ser executado quando o ttulo de menu
especificado for selecionado.



Comentrios

Quando voc selecionar o ttulo de menu especificado, o Visual FoxPro executar o comando
especificado com ON SELECTION PAD. Normalmente, ON SELECTION PAD utiliza DO para
executar um procedimento ou um programa quando um ttulo de menu especfico selecionado na
barra de menus. Ao criar e ativar a barra de menus, coloque ON SELECTION PAD entre DEFINE
MENU e ACTIVATE MENU.

Utilize ON SELECTION MENU para executar um comando quando selecionar qualquer ttulo de
menu em uma barra de menus. Utilize ON PAD para ativar um menu ou uma barra de menus
quando selecionar um ttulo de menu especfico em uma barra de menus.

Utilize ON SELECTION PAD sem um comando para liberar um comando atribudo ao ttulo de
menu.






























ON SELECTION POPUP, comando


Especifica um comando a ser executado quando voc selecionar qualquer item em um menu
especificado ou em todos os menus.

Sintaxe

ON SELECTION POPUP NomeMenu | ALL
[Comando]



Argumentos

NomeMenu Especifica o menu ao qual o comando atribudo.

ALL Se voc incluir ALL em vez de um nome de menu, o Visual FoxPro executar o comando
quando um item de menu for selecionado em qualquer menu.

Comando Especifica o comando a ser executado quando um item de menu for selecionado.



Comentrios

Quando voc seleciona qualquer item em um menu, o Visual FoxPro executa o comando
especificado com ON SELECTION POPUP. Ao criar e ativar o menu, coloque ON SELECTION
POPUP entre DEFINE POPUP e ACTIVATE POPUP.

Utilize ON SELECTION BAR para executar um comando quando selecionar um item de menu
especfico. ON SELECTION BAR prevalece sobre ON SELECTION POPUP. Utilize ON BAR
para ativar um menu ou uma barra de menus quando selecionar um item de menu especfico.

Utilize ON SELECTION POPUP sem um comando para liberar um comando atribudo a um item
de menu com um ON SELECTION POPUP anterior.


























ON SHUTDOWN, comando


Especifica um comando a ser executado quando voc tentar sair do Visual FoxPro ou Microsoft
Windows.

Sintaxe

ON SHUTDOWN [Comando]



Argumentos

Emita ON SHUTDOWN sem Comando para liberar o comando ON SHUTDOWN atual.



Comentrios

O comando especificado em ON SHUTDOWN ser executado se voc tentar sair do Visual
FoxPro. Se voc tentar sair do Microsoft Windows a partir do Gerenciador de programas, enquanto
o Visual FoxPro estiver aberto, o controle ser retornado ao Visual FoxPro e o comando
especificado em ON SHUTDOWN ser executado.

Normalmente, o comando ON SHUTDOWN um comando DO que executa uma rotina para exibir
uma caixa de dilogo. A caixa de dilogo pergunta se voc tem certeza de que deseja sair do
aplicativo atual e do Visual FoxPro. Se voc quiser sair do aplicativo, a rotina poder fechar
arquivos abertos, limpar o ambiente do Visual FoxPro e, em seguida, executar QUIT. Caso voc
no queira sair do aplicativo atual, a rotina poder retornar o controle novamente para o aplicativo.

































ON( ), funo


Retorna o comando atribudo a cada um dos seguintes comandos de gerenciamento de eventos: ON
ERROR, ON ESCAPE, ON KEY LABEL, ou ON PAGE.

Sintaxe

ON(cComandoON [, NomeRtuloTecla])



Tipos de retorno

Caractere

Argumentos

cComandoON Especifica um dos comandos de gerenciamento de eventos. A seguir so
apresentados os comandos e as expresses de caracteres correspondentes a serem utilizados com
ON( ):

Comando cComandoON

ON ERROR ERROR
ON ESCAPE ESCAPE
ON KEY LABEL KEY
ON PAGE PAGE


Por exemplo, para retornar o comando atribudo atualmente a ON ERROR, utilize

? ON('ERROR')
NomeRtuloTecla Utilizado em ON KEY LABEL para especificar uma tecla ou uma combinao
de teclas qual o comando atribudo. Especifique KEY em cComandoON e o nome do rtulo da
tecla ou da combinao de teclas em NomeRtuloTecla. Para obter uma lista completa dos nomes
de rtulos de teclas, consulte ON KEY LABEL.

Por exemplo, para retornar o comando atribudo atualmente tecla de funo F7 com ON KEY
LABEL, utilize

? ON('KEY', 'F7')



Comentrios

Quando ocorre um evento que interceptado por um dos comandos de gerenciamento de eventos, o
comando atribudo pelo comando de gerenciamento de eventos executado. ON( ) retorna o
comando atribudo a um comando de gerenciamento de eventos. ON( ) retornar uma seqncia
vazia se nenhum comando estiver atribudo atualmente ao comando de gerenciamento de eventos
especificado.


ON( ), exemplo da funo

O seguinte exemplo utiliza ON( ) para exibir as definies de ON ERROR e ON KEY LABEL.

ON ERROR DO errorhand
ON KEY LABEL CTRL+F2 WAIT WINDOW 'Voc pressionou ^F2'
ON KEY LABEL ALT+Z DISPLAY MEMORY
CLEAR
? ON('ERROR') && Exibe DO errorhand
? ON('KEY', 'CTRL+F2') && Exibe WAIT WINDOW 'Voc pressionou ^F2'
? ON('KEY', 'ALT+Z') && Exibe DISPLAY MEMORY
ON ERROR
ON KEY LABEL CTRL+F2
ON KEY LABEL ALT+Z





























OPEN DATABASE, comando



Abre um banco de dados.

Sintaxe

OPEN DATABASE [NomeArquivo | ?]
[EXCLUSIVE | SHARED]
[NOUPDATE]
[VALIDATE]



Argumentos

NomeArquivo Especifica o nome do banco de dados a ser aberto. Se voc no especificar uma
extenso para o nome do arquivo, o Visual FoxPro atribuir automaticamente a extenso .DBC. Se
omitir NomeArquivo, a caixa de dilogo Abrir ser exibida. Voc pode especificar um nome de
caminho como parte do nome do banco de dados.

Observao O Visual FoxPro no ir reconhecer um nome de caminho adequado se um nome de
diretrio ou disco contiver um ponto de exclamao (!).



? Exibe a caixa de dilogo Abrir, na qual voc poder escolher um banco de dados j existente ou
digitar o nome de um novo Formulrio a ser criado.

EXCLUSIVE Abre o banco de dados no modo exclusivo. Se voc abrir o banco de dados no modo
exclusivo, outros usurios no podero acess-lo e recebero uma mensagem de erro se tentarem
fazer isso. Se voc no incluir EXCLUSIVE nem SHARED, a definio atual de SET EXCLUSIVE
determinar como o banco de dados ser aberto.

SHARED Abre o banco de dados no modo compartilhado. Se voc abrir o banco de dados para
uso compartilhado, outros usurios podero acess-lo. Se voc no incluir EXCLUSIVE nem
SHARED, a definio atual de SET EXCLUSIVE determinar como o banco de dados ser aberto.

NOUPDATE Especifica que o banco de dados no pode ser alterado. Em outras palavras, o banco
de dados somente para leitura. Se voc omitir NOUPDATE, o banco de dados ser aberto com
acesso para leitura e gravao.

As tabelas contidas no banco de dados no so afetadas por NOUPDATE. Para evitar alteraes
em uma tabela do banco de dados, inclua NOUPDATE em USE ao abrir a tabela.

VALIDATE Especifica que o Visual FoxPro assegura que as referncias no banco de dados so
vlidas. O Visual FoxPro verifica se as tabelas e os ndices aos quais feita referncia no banco de
dados esto disponveis em disco. O Visual FoxPro tambm verifica se os campos e as marcas de
ndice aos quais feita referncia existem nas tabelas e ndices.



Comentrios

Enquanto o banco de dados est aberto, todas as tabelas nele contidas esto disponveis. Contudo, as
tabelas no esto implicitamente abertas. Voc dever abri-las com USE.

Quando USE executado, o Visual FoxPro procura a tabela dentro do banco de dados aberto no
momento. Se a tabela no for encontrada, o Visual FoxPro procurar por uma tabela fora do banco
de dados. Isso significa que, se uma tabela fora do banco de dados tiver o mesmo nome de outra
dentro do banco de dados, esta ser encontrada primeiro.

Voc no pode abrir um banco de dados que foi aberto exclusivamente por outro usurio.


OPEN DATABASE, exemplo do comando

No exemplo a seguir, OPEN DATABASE utilizado para abrir o banco de dados testdata.
DISPLAY DATABASE utilizado para exibir informaes sobre as tabelas do banco de dados.

CLOSE DATABASES
SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dados
OPEN DATABASE testdata && Abre o banco de dados testdata
DISPLAY DATABASE && Exibe informaes da tabela









ORDER( ), funo


Retorna o nome da marca ou do arquivo de ndice de controle para a tabela atual ou especificada.

Sintaxe

ORDER([nreaTrabalho | cAliasTabela [, nCaminho]])



Tipos de Retorno

Caractere

Argumentos

nreaTrabalho Especifica a rea de trabalho de uma tabela cujo nome do arquivo de ndice de
controle ou nome da marca de controle retornado por ORDER( ).

cAliasTabela Especifica o alias de tabela cujo nome do arquivo de ndice de controle ou nome da
marca de controle retornado por ORDER( ).

nCaminho Especifica que a unidade de disco e o diretrio so retornados junto com o nome do
arquivo de ndice composto ou de entrada nica. A expresso numrica nCaminho pode ter
qualquer valor.



Comentrios

Uma tabela pode ter vrios arquivos de ndice abertos simultaneamente. No entanto, apenas um
arquivo de ndice de entrada nica (o arquivo de ndice de controle) ou uma marca de um arquivo
de ndice composto (a marca de controle) controla a ordem de exibio ou de acesso da tabela.
Determinados comandos, como SEEK, utilizam o arquivo de ndice de controle ou a marca de
controle para procurar registros. Esta funo retorna o nome do arquivo de ndice de controle ou da
marca de controle.

USE e SET INDEX suportam a abertura de mais de um ndice com uma lista de arquivos de ndice.
Um arquivo de ndice de controle ou uma marca de controle pode ser designado nesta lista de
arquivos de ndice. possvel tambm utilizar SET ORDER para designar um ndice ou uma marca
de controle.

Como padro, ORDER( ) retorna o nome do arquivo de ndice de controle ou o nome da marca de
controle para a rea de trabalho atual. A funo ORDER( ) retorna a seqncia vazia se uma ordem
no for definida (SET ORDER TO emitida ou no h nenhum arquivo ou marca de ndice de
controle).


ORDER( ), exemplo da funo

O exemplo a seguir exibe arquivos e marcas de ndice.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer ORDER cust_id && Abre a tabela Customer
? ORDER( ) && Exibe CUST_ID
? ORDER('customer', 1) && Exibe CUSTOMER.CDX



OS( ), funo


Retorna o nome e o nmero da verso do sistema operacional onde o Visual FoxPro est sendo
executado.

Sintaxe

OS([1])



Tipos de Retorno

Caractere

Argumentos

1 Utilize OS(1) para retornar o nmero da verso do software do sistema operacional.



Comentrios

Se o argumento 1 opcional for omitido, ser retornado o nome e o nmero da verso do sistema
operacional.

No Visual FoxPro para Windows, utilize OS( ) para retornar a verso do MS-DOS (por exemplo,
MS-DOS 6.22).


OS( ), exemplo da funo

? OS( )
? OS(1)

































PACK DATABASE, comando


Remove os registros marcados para excluso do banco de dados atual.

Sintaxe

PACK DATABASE



Comentrios

Um banco de dados contm registros marcados para excluso depois que uma tabela ou
visualizao removida do banco de dados ou se a estrutura de uma tabela do banco de dados
modificada.

O banco de dados deve ser aberto com exclusividade e nenhuma tabela ou visualizao no banco de
dados pode ser aberta.


PACK DATABASE, exemplo do comando

No exemplo a seguir, PACK DATABASE utilizado para compactar o banco de dados testdata,
removendo os registros marcados para excluso.

CLOSE DATABASES
SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho do banco de dados
OPEN DATABASE testdata && Abre o banco de dados
PACK DATABASE && Compacta o banco de dados atual

PACK, comando


Remove de modo permanente todos os registros marcados para excluso na tabela atual e reduz o
tamanho de um arquivo de Memo associado tabela.

Sintaxe

PACK [MEMO] [DBF]



Argumentos

MEMO Remove o espao no utilizado do arquivo de Memo, mas no remove da tabela os
registros marcados para excluso. As informaes contidas em campos Memo so armazenadas em
um arquivo de Memo associado. Um arquivo de Memo tem o mesmo nome da tabela e uma
extenso .FPT.

DBF Remove da tabela os registros marcados para excluso, mas no afeta o arquivo de Memo.



Comentrios

Quando o comando PACK utilizado, o Visual FoxPro copia para uma tabela temporria todos os
registros no marcados para excluso. Depois de concluda a execuo de PACK, o Visual FoxPro
exclui a tabela original do disco e renomeia a tabela temporria com o nome da tabela original. Se
voc pressionar ESC para interromper PACK, a tabela temporria ser excluda e a tabela original
permanecer inalterada. A tabela original tambm ser recuperada se voc ficar sem espao em
disco enquanto PACK estiver em execuo.

Quando voc emite PACK sem as clusulas MEMO e DBF, PACK afeta tanto a tabela como o
arquivo de Memo.

PACK requer uso exclusivo da tabela. Para obter maiores informaes sobre como abrir uma tabela
com exclusividade em uma rede, consulte SET EXCLUSIVE.

Caso a tabela atual tenha um ou mais ndices abertos, PACK ir reconstruir os arquivos de ndice.



Importante Tenha o cuidado de marcar somente os registros desnecessrios. No h como
recuperar registros excludos depois da utilizao de PACK.
















PAD( ), funo


Retorna o ltimo ttulo de menu selecionado em uma barra de menus como uma seqncia de
caracteres maisculos.

Sintaxe

PAD( )



Tipos de retorno

Caractere

Comentrios

Para que PAD( ) retorne um ttulo de menu, necessrio que uma barra de menus esteja definida e
ativa. As barras de menus so criadas e ativadas com DEFINE MENU e ACTIVATE MENU.

Tambm possvel utilizar PAD( ) com a barra de menus do sistema do Visual FoxPro.

PAD( ) retorna uma seqncia vazia quando uma barra de menus no est definida e ativa ou se
voc emite PAD( ) na janela Comando.



PAD( ), exemplo da funo

Neste exemplo, PAD( ) utilizada para passar um ttulo de menu a um procedimento.
A barra de menus do sistema Visual FoxPro atual gravada para a memria com SET SYSMENU
SAVE e todos os ttulos de menu do sistema so removidos com SET SYSMENU TO.
Vrios ttulos de menu do sistema so criados com DEFINE PAD. Quando um ttulo de menu for
selecionado, PAD( ) ser utilizado para passar o ttulo de menu ao procedimento denominado
choice. choice exibir o ttulo de menu selecionado e o nome da barra de menus. Se o ttulo de
menu Sair for selecionado, o menu original do sistema Visual FoxPro ser restaurado.

*** Nomeie este programa como PADEXAM.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padSys OF _MSYSMENU PROMPT '\<Sistema' COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Editar' COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Registro' COLOR SCHEME 3 ;
KEY ALT+R, ''
DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Janela' COLOR SCHEME 3 ;
KEY ALT+J, ''
DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<latrios' COLOR SCHEME 3 KEY
ALT+L, ''

DEFINE PAD padExit OF _MSYSMENU PROMPT 'Sa\<ir' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN padexam WITH PAD( ), MENU( )
PROCEDURE choice
PARAMETERS gcPad, gcMenu
WAIT WINDOW 'Voc escolhe' + gcPad + ;
' do menu ' + gcMenu NOWAIT
IF gcPad = 'PADEXIT'
SET SYSMENU TO DEFAULT
ENDIF



























PADL( ) | PADR( ) | PADC( ), funes


Retorna uma seqncia de uma expresso preenchida com espaos ou caracteres at o comprimento
especificado no lado direito, esquerdo ou nos dois lados.

Sintaxe

PADL(eExpresso, nTamanhoResultado [, cCaracterePreenchimento])
Ou
PADR(eExpresso, nTamanhoResultado [, cCaracterePreenchimento])
Ou
PADC(eExpresso, nTamanhoResultado [, cCaracterePreenchimento])



Tipos de retorno

Caractere

Argumentos

eExpresso Especifica a expresso a ser preenchida. Esta expresso pode ser de qualquer tipo,
exceto expresso lgica ou um campo de figura ou geral.

nTamanhoResultado Especifica o nmero total de caracteres na expresso depois que ela foi
preenchida.

cCaracterePreenchimento Especifica o valor a ser utilizado no preenchimento. Este valor
repetido, de acordo com a necessidade, para preencher a expresso at o nmero especificado de
caracteres.

Se voc omitir cCaracterePreenchimento, espaos (caractere ASCII 32) sero utilizados no
preenchimento.



Comentrios

PADL( ) insere preenchimento esquerda, PADR( ) insere preenchimento direita e PADC( )
insere preenchimento nos dois lados.


PADL( ) | PADR( ) | PADC( ), exemplo das funes

STORE 'TITLE' TO gcString
CLEAR
? PADL(gcString, 40, '=')
? PADR(gcString, 40, '=')
? PADC(gcString, 40, '=')












PARAMETERS( ), funo


Retorna o nmero de parmetros passados para o procedimento, para a funo definida pelo usurio
ou para o programa chamado mais recentemente.

Sintaxe

PARAMETERS( )



Tipos de retorno

Numrico

Comentrios

PARAMETERS( ) til para determinar o nmero de parmetros passados para um programa, um
procedimento ou uma funo definida pelo usurio.

Observao O valor retornado por PARAMETERS( ) redefinido sempre que um procedimento,
uma funo definida pelo usurio ou um programa chamado ou quando o comando ON KEY
LABEL executado.


PARAMETERS( ), exemplos de funo

O exemplo 1 chama um procedimento e exibe o nmero de parmetros passados em uma janela de
espera.
O exemplo 2 utilize um procedimento para exibir a mdia de 4 valores.

* Exemplo 1
DO testpar WITH 1,2,3

PROCEDURE testpar
PARAMETERS gn1,gn2,gn3
gcMessage = 'PARAMETERS( ) ='+ALLTRIM(STR(PARAMETERS( )))
WAIT WINDOW (gcMessage)
RETURN

* Exemplo 2
SET TALK OFF
gnVal1 = 10
gnVal2 = 20
gnVal3 = 30
gnVal4 = 15
gnMin = getavg(gnVal1, gnVal2, gnVal3, gnVal4)
? 'O valor mdio '
?? gnMin

* Esta funo definida pelo usurio permite at 9 parmetros a serem passados.
* Usa a funo PARAMETERS( ) para determinar quantos

* foram passados e retorna o valor mdio.

FUNCTION getavg
PARAMETERS gnPara1,gnPara2,gnPara3,gnPara4,gnPara5, ;
gnPara6,gnPara7,gnPara8,gnPara9
IF PARAMETERS( ) = 0
RETURN 0
ENDIF
gnResult = 0
FOR gnCount = 1 to PARAMETERS( )
gcCompare = 'gnPara' +(STR(gnCount,1))
gnResult = gnResult + EVAL(gcCompare)
ENDFOR
gnResult = gnResult / (gnCount - 1)
RETURN gnResult




























PARAMETERS, comando


Atribui dados passados de um programa de chamada para matrizes ou variveis de memria
privadas.

Sintaxe

PARAMETERS ListaParmetro



Argumentos

ListaParmetro Especifica os nomes das matrizes ou das variveis de memria s quais os dados
so atribudos.

Os parmetros da ListaParmetros so separados por vrgulas. Na instruo PARAMETERS deve
haver, pelo menos, o mesmo nmero de parmetros existentes na instruo DO ... WITH. Se o
nmero de variveis ou matrizes listado na instruo PARAMETERS for superior ao nmero
passado por DO ... WITH, as demais variveis ou matrizes sero inicializadas com um valor falso
(.F.). Um limite mximo de 27 parmetros podem ser passados.

PARAMETERS( ) retorna o nmero de parmetros passados para a ltima rotina executada.



Comentrios

Quando PARAMETERS for utilizado com DO ... WITH, esta deve ser a primeira instruo
executada no programa, procedimento ou funo definida chamada pelo usurio.

Como padro, DO ... WITH passa variveis e matrizes para procedimentos por referncia. Quando
um valor alterado no procedimento chamado, o novo valor retornado varivel ou matriz
associada, no programa de chamada. Para passar uma varivel ou matriz a um procedimento por
valor, coloque-as entre parnteses na lista de parmetros DO ... WITH. Qualquer alterao feita no
parmetro do procedimento chamado no retornada ao programa de chamada.

Como padro, as variveis so passadas por referncia a um procedimento e por valor a uma funo
definida pelo usurio. Utilize SET UDFPARMS TO REFERENCE para passar por referncia
variveis para uma funo definida pelo usurio.


PARAMETERS, exemplo de comando

O exemplo abaixo passa parmetros para uma rotina de tratamento de erro.

ON ERROR DO errhand WITH ERROR( ), MESSAGE( ), ;
MESSAGE(1),PROGRAM( ),LINENO( )
USE nodatabase
ON ERROR && restaura a rotina de tratamento de erro do sistema

PROCEDURE errhand
PARAMETERS gnError, gcMess, gnMess1, gcProg, gnLineNo
? 'Nmero do erro: ' + LTRIM(STR(gnError))
? 'Mensagem do erro: ' + gcMess
? 'Linha de cdigo com erro: ' + gnMess1
? 'Nmero da linha com erro: '+ LTRIM(STR(gnLineNo))
? 'Programa com erros: ' + gcProg

































PAYMENT( ), funo


Retorna o valor de cada pagamento peridico sobre um emprstimo com juros fixos.

Sintaxe

PAYMENT(nPrincipal, nTaxaJuros, nPagamentos)



Tipos de retorno

Numrico

Argumentos

nPrincipal Especifica o principal inicial do emprstimo.

nTaxaJuros Especifica a taxa de juros fixa por perodo. Se o emprstimo for saldado com
pagamentos mensais, mas a taxa de juros for anual, divida a taxa de juros anual por 12.

nPagamentos Especifica o nmero total de pagamentos que sero efetuados sobre o emprstimo.



Comentrios

PAYMENT( ) considera uma taxa de juros peridica constante e considera que os pagamentos sero
efetuados no fim de cada perodo.
PAYMENT( ), funo


Retorna o valor de cada pagamento peridico sobre um emprstimo com juros fixos.

Sintaxe

PAYMENT(nPrincipal, nTaxaJuros, nPagamentos)



Tipos de retorno

Numrico

Argumentos

nPrincipal Especifica o principal inicial do emprstimo.

nTaxaJuros Especifica a taxa de juros fixa por perodo. Se o emprstimo for saldado com
pagamentos mensais, mas a taxa de juros for anual, divida a taxa de juros anual por 12.

nPagamentos Especifica o nmero total de pagamentos que sero efetuados sobre o emprstimo.



Comentrios

PAYMENT( ) considera uma taxa de juros peridica constante e considera que os pagamentos sero
efetuados no fim de cada perodo.
PCOL( ), funo


Retorna a posio de coluna atual do cabeote de impresso da impressora.

Sintaxe

PCOL( )



Tipos de retorno

Numrico

Comentrios

O valor retornado por PCOL( ) relativo definio atual da margem esquerda da impressora. Para
definir a margem esquerda, utilize SET MARGIN ou armazene um valor na varivel de memria do
sistema _PLOFFSET.

A funo PCOL( ) especialmente til no endereamento relativo do texto impresso.

Voc pode utilizar o operador $ em vez de PCOL( ).


PCOL( ), exemplo da funo

CLEAR
@ PROW( ), PCOL( )+12 SAY 'Contato'
@ PROW( ), $+12 SAY 'Contato'
PCOUNT( ), funo


Retorna o nmero de parmetros passados para o programa atual, procedimento ou funo definida
pelo usurio.

Sintaxe

PCOUNT( )



Tipos de retorno

Numrico

Comentrios

PCOUNT( ) til para determinar quantos parmetros so passados para o programa atual,
procedimento ou funo definida pelo usurio.

Observao O valor retornado por PCOUNT( ) redefinido cada vez que um programa,
procedimento ou funo definida pelo usurio solicitada ou quando ON KEY LABEL
executado.


PCOUNT( ), exemplos da funo



O exemplo 1 solicita um procedimento e exibe uma janela de espera para o nmero de parmetros
passados.
O exemple 2 utiliza um procedimento para exibir a mdia de 4 valores.

* Exemplo 1
DO testpar WITH 1,2,3

PROCEDURE testpar
PARAMETERS gn1,gn2,gn3
gcMessage = 'PCOUNT( ) ='+ALLTRIM(STR(PCOUNT( )))
WAIT WINDOW (gcMessage)
RETURN

* Exemplo 2
SET TALK OFF
gnVal1 = 10
gnVal2 = 20
gnVal3 = 30
gnVal4 = 15
gnMin = getavg(gnVal1, gnVal2, gnVal3, gnVal4)
? 'O valor mdio '
?? gnMin

* Esta funo definida pelo usurio permite que at 9 parmetros sejam passados.
* Utiliza a funo PCOUNT( ) para determinar quantos

* foram passados e retornar o valor mdio.

FUNCTION getavg
PARAMETERS gnPara1,gnPara2,gnPara3,gnPara4,gnPara5, ;
gnPara6,gnPara7,gnPara8,gnPara9
IF PCOUNT( ) = 0
RETURN 0
ENDIF
gnResult = 0
FOR gnCount = 1 to PARAMETERS( )
gcCompare = 'gnPara' +(STR(gnCount,1))
gnResult = gnResult + EVAL(gcCompare)
ENDFOR
gnResult = gnResult / (gnCount - 1)
RETURN gnResult





























PI( ), funo


Retorna o pi constante numrico.

Sintaxe

PI( )



Tipos de retorno

Numrico

Comentrios

O pi constante numrico (3,141592) o grau de circunferncia de um crculo em relao aos seu
dimetro.

O nmero de casas decimais exibido no valor retornado por PI( ) determinado por SET
DECIMALS.


PI( ), exemplo da funo

CLEAR
? PI( ) && Exibe 3.14
STORE 2.30 TO gnRadius
STORE PI( ) * gnRadius^2 TO gnArea
? gnArea && Exibe 16.6190



POPUP( ), funo


Retorna como uma seqncia o nome do menu ativo ou um valor lgico que indica se um menu foi
definido.

Sintaxe

POPUP([cNomeMenu])



Tipos de retorno

Caracteres ou Lgico

Argumentos

cNomeMenu Retorna um valor lgico que indica se cNomeMenu foi definido. POPUP( ) retornar
verdadeiro (.T.), se o menu especificado tiver sido definido; caso contrrio, POPUP( ) retornar
falso (.F.).



Comentrios

A funo POPUP( ) retornar o nome do menu ativo como uma seqncia de caracteres se voc
omitir o argumento opcional cNomeMenu. Para que POPUP( ) retorne o nome de um menu, este
deve estar definido e ativo. Os menus so criados e ativados com DEFINE POPUP e ACTIVATE
POPUP. O menu pode ser, tambm, um menu do sistema do Visual FoxPro. POPUP( ) retornar
uma seqncia vazia se um menu no estiver definido e ativo ou se voc emitir POPUP( ) a partir
da janela Comando.

































PRINTSTATUS( ), funo


Retornar verdadeiro (.T.) se a impressora ou dispositivo de impresso estiver on-line; caso
contrrio, retornar falso (.F.).

Sintaxe

PRINTSTATUS( )



Tipos de retorno

Lgico

Comentrios

A funo PRINTSTATUS( ) semelhante a SYS(13), com a exceo de que SYS(13) retorna
READY em vez de verdadeiro (.T.) ou OFFLINE em vez de falso (.F.).

No Visual FoxPro, PRINTSTATUS( ) sempre retornar verdadeiro (.T.) se a impressora estiver
conectada atravs do Painel de controle do Windows.


PRINTSTATUS( ), exemplo de funo

? PRINTSTATUS( )
*** Exemplo do Programa ***
STORE PRINTSTATUS( ) TO glReady
IF NOT glReady
WAIT 'Certifique-se de que a impressora esteja conectada e ligada!' WINDOW
ELSE
WAIT 'Impressora est pronta!' WINDOW
ENDIF






























PRIVATE, comando


Oculta do programa atual matrizes ou variveis de memria que foram definidas em um programa
de chamada a partir do programa atual.

Sintaxe

PRIVATE ListaVar
Ou
PRIVATE ALL
[LIKE Estrutura | EXCEPT Estrutura]



Argumentos

ListVar Especifica as matrizes ou as variveis de memria que devem ser declaradas privadas .

ALL LIKE Estrutura Faz com que PRIVATE oculte todas as matrizes e variveis de memria
cujos nomes correspondam a Estrutura, que pode conter os curingas ponto de interrogao (?) e
asterisco (*).

ALL EXCEPT Estrutura Faz com que PRIVATE oculte todas as matrizes ou variveis de
memria, a menos que os seus nomes coincidam com Estrutura, que pode conter os curingas ponto
de interrogao (?) e asterisco (*).



Comentrios

Ocultar variveis criadas em programas de nvel mais alto permite que variveis com o mesmo
nome das variveis privadas sejam manipuladas no programa atual sem afetarem os valores das
variveis ocultas. Uma vez concluda a execuo do programa que contm PRIVATE, todas as
matrizes e variveis de memria declaradas privadas ficaro novamente disponveis.

O comando PRIVATE no cria variveis, ele simplesmente oculta do programa atual variveis
declaradas em programas de nvel mais alto.

PRIVATE , exemplo de comando


*** Exemplo do programa demonstrando PRIVATE ***
SET TALK OFF
val1 = 10
val2 = 15

DO down
? val1, val2 && Exibe 10, 100

PROCEDURE down
PRIVATE val1
val1 = 50
val2 = 100
? ' Val1 Val2'
? val1, val2 && Exibe 50, 100
RETURN





PRMPAD( ), funo


Retorna o texto de um ttulo de menu.

Sintaxe

PRMPAD(NomeBarraMenu, NomeTtuloMenu)



Tipos de retorno

Caractere

Argumentos

NomeBarraMenu Especifica o nome da barra de menus que contm o ttulo de menu.

NomeTtuloMenu Especifica o ttulo do menu.



Comentrios

As barras de menus so criadas com DEFINE MENU, que cria a barra de menus, e com DEFINE
PAD, que cria os ttulos de menus da barra de menus. PRMPAD( ) funciona, tambm, com o
sistema de menus do Visual FoxPro. A barra de menus no precisa estar ativa para que PRMPAD( )
retorne o texto de um ttulo de menu.

Caso um ttulo de menu tenha sido criado utilizando-se os caracteres barra invertida e menor que
(\<) para criar uma tecla de acesso, ou uma barra invertida (\) para desativar o ttulo do menu,
PRMPAD( ) retornar somente o texto do ttulo do menu, no incluindo os caracteres especiais.

PRMPAD( ), exemplo de funo

No exemplo a seguir, uma barra de menus denominada mnuExemplo criada com trs ttulos de
menu. Os designadores de opo desativada e tecla de acesso no so retornados a partir dos ttulos
de menu denominados ttulo Dois e ttulo Trs. A barra de menus ativada para exibir os ttulos de
menu e eliminada da tela e da memria quando um ttulo de menu selecionado.

CLEAR
SET TALK OFF
STORE 'mnuExemplo' TO gcPopName

DEFINE MENU mnuExample BAR AT LINE 1
DEFINE PAD titleOne OF mnuExample PROMPT 'Isto ser retornado'
DEFINE PAD titleTwo OF mnuExample PROMPT '\<O mesmo acontecendo com isto'
DEFINE PAD titleThree OF mnuExample PROMPT '\E com isto tambm'

=messagebox( PRMPAD('mnuExemplo', 'ttuloUm') )
=messagebox( PRMPAD('mnuExemplo', 'ttuloDois') )
=messagebox( PRMPAD(gcPopNome, 'ttuloTrs') )


ACTIVATE MENU mnuExample
DEACTIVATE MENU mnuExample
RELEASE MENU mnuExample


PROCEDURE, comando


Identifica o incio de um procedimento em um arquivo de programa.

Sintaxe

PROCEDURE NomeProcedimento
Comandos
[RETURN [eExpresso ]]
ENDPROC



Argumentos

NomeProcedimento Especifica o nome do procedimento a ser criado.



Comentrios

PROCEDURE uma instruo dentro de um arquivo de programa que especifica o incio de cada
procedimento neste arquivo e define o nome do procedimento. Os nomes dos procedimentos devem
comear com uma letra ou com um sublinhado e podem conter qualquer combinao de letras,
nmeros e sublinhados

No Visual FoxPro para Windows, os nomes dos procedimentos podem ter at 254 caracteres.

Os comentrios podem ser colocados na mesma linha depois de PROCEDURE e ENDPROC. Estes
comentrios so ignorados durante a compilao e a execuo do programa.

A instruo PROCEDURE seguida de uma sries de comandos que compem o procedimento.
Voc pode incluir RETURN em qualquer lugar do procedimento para retornar um controle ao
programa de chamada ou a um outro programa e para definir um valor retornado pelo
procedimento. Se voc no incluir um comando RETURN, um RETURN implcito ser
automaticamente executado quando a funo sair. Se o comando RETURN no incluir um valor de
retorno (ou se um RETURN implcito for executado), o Visual FoxPro atribuir .T. (Verdadeiro)
como o valor de retorno.

O procedimento encerra-se com o comando ENDPROC. Este comando opcional; o procedimento
sai quando encontra um outro comando PROCEDURE, um comando FUNCTION ou o final do
arquivo de programa.

Observao Voc no pode ter cdigo de programa normal executvel includo em um arquivo de
programa depois de procedimentos; apenas procedimentos, funes definidas pelo usurio e
definio de classe podem seguir o primeiro comando PROCEDURE ou FUNCTION no arquivo.



Ao executar um procedimento com DO NomeProcedimento, o Visual FoxPro procura o
procedimento em uma ordem especfica. O Visual FoxPro procura:

1. O programa que contm DO NomeProcedimento.
2. O banco de dados atual.
3. Os arquivos de procedimento abertos com SET PROCEDURE.
4. Os programas na cadeia de execuo. Ele procura arquivos de programa comeados com o
programa executado por ltimo at o primeiro programa executado.
5. Um arquivo de programa independente. Se for localizado um arquivo de programa com o
mesmo nome do arquivo especificado com DO, o Visual FoxPro executar o programa. Se no for
localizado um nome de arquivo de programa correspondente, o Visual FoxPro retornar uma
mensagem de erro.

Inclua a clusula IN em DO para executar um procedimento em um arquivo especfico.

Como padro, os parmetros so passados aos procedimentos por valor. Para obter informaes
sobre como passar parmetros para procedimentos por referncia, consulte SET UDFPARMS.
Podem ser passados no mximo 27 parmetros para um procedimento. Os parmetros podem ser
passados a um procedimento pela incluso de uma instruo PARAMETERS ou LPARAMETERS
no procedimento ou colocando uma lista de parmetros imediatamente aps PROCEDURE
NomeProcedimento. Inclua a lista de parmetros entre parnteses e separe os parmetros com
vrgulas.

PROCEDURE, exemplo de comando

O exemplo a seguir ilustra como um procedimento pode ser chamado para realizar uma tarefa
discreta como, por exemplo, fazer uma entrada em um arquivo de resumo. O procedimento abre o
arquivo de resumo (que se supe existir no exemplo), constri uma entrada com base nas
informaes passadas nos parmetros, grava a entrada e fecha o arquivo. O procedimento
chamado com um comando DO semelhante ao comando na parte superior do programa.

DO MakeLogEntry WITH "Efetuou log on", "jsmith"

PROCEDURE MakeLogEntry
PARAMETERS message, username
pnHandle = FOPEN("LOG2.TXT",2) && Considera que o arquivo existe
pnSize = FSEEK(pnHandle,0,2) && Vai para o final do arquivo
logEntry = dtoc(date())+","+hora()+","+nomeusurio+","+mensagem
=FPUTS(pnHandle, logEntry)
=FCLOSE(pnHandle) && Fecha o arquivo
ENDPROC



O exemplo a seguir mostra como um procedimento pode ser chamado para retornar um valor.

SET CENTURY ON
? longdate(({02/16/95})) && Exibe quinta-feira, 16 de fevereiro, 1995

PROCEDURE longdate
PARAMETER mdate
RETURN CDOW(mdate) + ", " + MDY(mdate)
ENDPROC










PROGRAM( ), funo


Retorna o nome do programa atualmente em execuo ou o nome do programa em execuo
quando ocorreu um erro.

Sintaxe

PROGRAM([nNvel])



Tipos de retorno

Caractere

Argumentos

nNvel Especifica quantos nveis de programa para trs do nome do programa devero ser
localizados. Esse parmetro pode variar de 0 at a profundidade de aninhamento de programas. Um
programa pode executar outro programa, que pode executar um outro e assim sucessivamente. Os
programas podem ser aninhados at 128 nveis.

Se voc especificar 0 ou 1 em nNvel, a funo PROGRAM( ) retornar o nome do programa
mestre (o programa de nvel mais alto). Se nNvel ultrapassar a profundidade de aninhamento de
programas, PROGRAM( ) retornar uma seqncia vazia.



Comentrios

PROGRAM( ) ajuda o programa a recuperar-se de erros. Essa funo semelhante a SYS(16).

Se utilizada sem argumentos, PROGRAM( ) retorna o nome do programa atualmente em execuo.


PROGRAM( ), exemplo da funo

ON ERROR DO errhand WITH PROGRAM( )
*** A prxima linha deve gerar um erro ***
USE nodatabase
ON ERROR && Retorna rotina de gerenciamento de erro padro do sistema
PROCEDURE errhand
PARAMETERS gcProgram
WAIT 'Ocorreu um erro no programa ' + gcProgram WINDOW


















PROMPT( ), funo


Retorna o texto de um ttulo de menu selecionado em uma barra de menus ou de um item de menu
selecionado em um menu.

Sintaxe

PROMPT( )



Tipos de retorno

Caractere

Comentrios

PROMPT( ) retorna o texto do ltimo ttulo de menu selecionado de uma barra de menus ou o
ltimo item de menu selecionado de um menu. A barra de menus ou o menu podem ser definidos
pelo usurio ou podem ser do sistema do Visual FoxPro. Se uma barra de menus ou um menu no
estiver ativo ou se voc pressionar ESC para sair de uma barra de menus ou de um menu,
PROMPT( ) retornar uma seqncia vazia.

Uma barra de menus criada com DEFINE MENU, e cada ttulo de menu na barra de menus
criado com DEFINE PAD. Um menu criado com DEFINE POPUP, e os itens de menu so
criados com DEFINE BAR.

possvel utilizar MENU( ) e POPUP( ) para retornar o nome da barra de menus ou do menu a
partir do qual o ttulo ou o item de menu selecionado.
PROPER( ), funo


Retorna uma seqncia em maisculas a partir de uma expresso de caracteres, conforme
apropriado, de nomes prprios.

Sintaxe

PROPER(cExpresso)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres a partir da qual PROPER( ) retorna uma
seqncia de caracteres convertidos para maisculas.



PROPER( ), exemplo da funo

STORE 'Visual FoxPro' TO gcExpr1

CLEAR
? PROPER(gcExpr1) && Exibe "Visual FoxPro"
STORE 'VISUAL FOXPRO' TO gcExpr2
? PROPER(gcExpr2) && Exibe "Visual FoxPro"


PROW( ), funo


Retorna o atual nmero da linha do cabeote de impresso da impressora.

Sintaxe

PROW( )



Tipos de retorno

Numrico

Comentrios

Se voc emitir EJECT, o Visual FoxPro redefinir PROW( ) com 0.

PROW( ) especialmente til para o endereamento relativo ao texto impresso.

PROW( ), exemplo da funo

No exemplo a seguir, os dois comandos retornam o mesmo resultado. Voc pode utilizar o operador
$ em vez de PCOL( ). Tanto $ quanto PCOL( ) retornam a atual posio da impressora na coluna.

@ PROW( ), PCOL( ) + 12 SAY 'Contato'
@ PROW( ), $+12 SAY 'Contato'


PRTINFO( ), funo


Retorna a definio atual da impressora especificada.

Sintaxe

PRTINFO(nDefinioImpressora [, cNomeImpressora])



Tipos de retorno

Numrico

Argumentos

nDefinioImpressora Especifica a definio de impressora do Visual FoxPro que ser retornada.

As tabelas a seguir listam os valores de retorno das definies de impressora.

Observao Se PRTINFO(2) retornar - 1 ou um valor diferente daqueles listados na tabela a
seguir, utilize PRTINFO(3) e PRTINFO(4) para retornar o tamanho do papel.



Se nDefinioImpressora for igual a 1 (PRT_ORIENTATION em FOXPRO.H), PRTINFO( )
retornar a orientao do papel:




Valores de retorno Definio

1 Informao no disponvel
0 Retrato
1 Paisagem


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



Valores de retorno Definio

1 ou um valor diferente daqueles listados a seguir Informao no disponvel. Utilize
nDefinioImpressora = 3 e nDefinioImpressora = 4 para determinar o tamanho do papel.
1 Carta, 8 1/2 x 11 pol
2 Carta pequeno, 8 1/2 x 11 pol
3 Tablide, 11 x 17 pol
4 Ledger, 17 x 11 pol
5 Ofcio, 8 1/2 x 14 pol
6 Statement, 5 1/2 x 8 1/2 pol
7 Executivo, 7 1/4 x 10 1/2 pol
8 A3, 297 x 420 mm
9 A4, 210 x 297 mm
10 A4, Small 210 x 297 mm
11 A5, 148 x 210 mm
12 B4, 250 x 354 mm
13 B5, 182 x 257 mm
14 Folio, 8 1/2 x 13 pol
15 Quarto, 215 x 275 mm
16 10 x 14 pol
17 11 x 17 pol
18 Nota, 8 1/2 x 11 pol
19 Envelope #9, 3 7/8 x 8 7/8 pol
20 Envelope #10, 4 1/8 x 9 1/2 pol
21 Envelope #11, 4 1/2 x 10 3/8 pol
22 Envelope #12, 4 1/2 x 11 pol
23 Envelope #14, 5 x 11 1/2 pol
24 Folha tamanho C
25 Folha tamanho D
26 Folha tamanho E
27 Envelope DL, 110 x 220 mm
28 Envelope C5, 162 x 229 mm
29 Envelope C3, 324 x 458 mm
30 Envelope C4, 229 x 324 mm
31 Envelope C6, 114 x 162 mm
32 Envelope C65, 114 x 229 mm
33 Envelope B4, 250 x 353 mm
34 Envelope B5, 176 x 250 mm
35 Envelope B6, 176 x 125 mm
36 Envelope, 110 x 230 mm
37 Envelope Monarch, 3 7/8 x 7.5 pol
38 6 3/4 Envelope, 3 5/8 x 6 1/2 pol
39 Fanfold padro norte-americano, 14 7/8 x 11 pol
40 Fanfold padro alemo, 8 1/2 x 12 pol
41 Fanfold ofcio alemo, 8 1/2 x 13 pol


Se nDefinioImpressora for igual a 3 (PRT_PAPERLENGTH em FOXPRO.H), PRTINFO( )
retornar o tamanho do papel em incrementos de 0,1mm.
Se nDefinioImpressora for igual a 4 (PRT_PAPERWIDTH em FOXPRO.H), PRTINFO( )
retornar a largura do papel em incrementos de 0,1mm.
Se nDefinioImpressora for igual a 5 (PRT_SCALE em FOXPRO.H), PRTINFO( ) retornar o
fator pelo qual a sada impressa dimensionada.
Se nDefinioImpressora for igual a 6 (PRT_COPIES em FOXPRO.H), PRTINFO( ) retornar o
nmero de cpias a serem impressas.

Se nDefinioImpressora for igual a 7 (PRT_DEFASOURCE em FOXPRO.H), PRTINFO( )
retornar a origem do papel padro:



Valores de retorno Definio

1 Compartimento superior
2 Compartimento inferior
3 Compartimento central
4 Alimentao manual
5 Compartimento de envelope
6 Envelope de alimentao manual
7 Seleo automtica
8 Pinos de trao
9 Formato pequeno
10 Formato grande
11 Grande capacidade
14 Cassete


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



Valores de retorno Definio

-1 Rascunho
-2 Baixa
-3 Mdia
-4 Alta


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



Valores de retorno Definio

1 Colorida
2 Monocromtica


Se nDefinioImpressora for igual a 10 (PRT_DUPLEX em FOXPRO.H), PRTINFO( ) retornar o
modo duplex:



Valores de retorno Definio

1 Impresso simplex
2 Duplex vertical
3 Duplex horizontal


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



Valores de retorno Definio

1 Imprime como grficos de bitmap
2 Descarrega como fontes de software
3 Substitui fontes do dispositivo


Se nDefinioImpressora for igual a 13, PRTINFO( ) retornar um valor que indica se a sada est
ordenada:



Valores de retorno Definio

0 Sem ordenao
1 Ordenada


cNomeImpressora Especifica o nome da impressora sobre a qual so retornadas informaes. Se
cNomeImpressora for omitido, sero retornadas informaes para a impressora padro.



Comentrios

As definies de impressora do Visual FoxPro so definidas na caixa de dilogo Configurar pgina.
Selecione Configurar pgina no menu Arquivo para exibir a caixa de dilogo Configurar pgina do
Visual FoxPro.


PUBLIC, comando


Define variveis ou matrizes globais.

Sintaxe

PUBLIC ListaVarMem
Ou
PUBLIC [ARRAY] NomeMatriz1(nLinhas1 [, nColunas1])
[, NomeMatriz2(nLinhas2 [, nColunas2])] ...



Argumentos

ListaVarMem Especifica uma ou mais variveis de memria 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 descrio de
cada argumento.



Comentrios

possvel utilizar e modificar matrizes e variveis globais a partir de qualquer programa executado
durante a sesso atual do Visual FoxPro.

Variveis e matrizes criadas com PUBLIC so inicializadas com falso (.F.), exceto as variveis
pblicas FOX e FOXPRO, que so inicializadas com verdadeiro (.T.). As variveis pblicas FOX e
FOXPRO podem ser utilizadas para executar condicionalmente um cdigo baseado no produto que
est sendo executado.

Qualquer varivel ou matriz criada na janela Comando automaticamente se torna pblica.

Qualquer varivel ou matriz que voc queira declarar como pblica deve ser declarada pblica antes
de voc atribuir um valor a ela.

O Visual FoxPro ir gerar um erro de sintaxe se, dentro de um programa, voc atribuir um valor a
uma matriz ou a uma varivel e, posteriormente, declar-la pblica com PUBLIC.


PUBLIC, exemplo do comando

SET TALK OFF
PUBLIC val1,val2
val1 = 10
val2 = 15

DO down
? val1
? val2

RELEASE ALL && Libera somente variveis privadas
DISPLAY MEMORY LIKE val?
RELEASE val1,val2 && Variveis pblicas devem ser liberadas explicitamente
DISPLAY MEMORY LIKE val?

PROCEDURE down
PRIVATE val1
val1 = 50
val2 = 100
? val1
? val2
RETURN





























PUSH POPUP, comando


Coloca na memria uma definio de menu em uma pilha de definies de menus.

Sintaxe

PUSH POPUP NomeMenu



Argumentos

NomeMenu Especifica o nome do menu cuja definio colocada na pilha. O menu tambm pode
ser um menu do sistema do Visual FoxPro.



Comentrios

Quando utilizado com POP POPUP, PUSH POPUP permite que voc salve uma definio de menu,
faa alteraes nessa definio e, em seguida, restaure-a ao seu estado original.

As definies de menus so colocadas e removidas da pilha na ordem ltimo a entrar, primeiro a
sair.

PUSH POPUP, exemplo do comando

No exemplo a seguir, criado um menu denominado popExam. A definio do menu adicionada
pilha e, ento, modificada. Em seguida, o menu original restaurado ao ser retirado da pilha.

DEFINE POPUP popExam FROM 5,5
DEFINE BAR 1 OF popExam PROMPT 'Um'
DEFINE BAR 2 OF popExam PROMPT 'Dois'
DEFINE BAR 3 OF popExam PROMPT 'Trs'
DEFINE BAR 4 OF popExam PROMPT 'Quatro'
ACTIVATE POPUP popExam NOWAIT
PUSH POPUP popExam
WAIT 'Popup original' WINDOW
RELEASE BAR 2 OF popExam
WAIT 'Popup modificado. O popup original colocado em uma pilha.' WINDOW
POP POPUP popExam
WAIT 'Popup original restaurado' WINDOW
DEACTIVATE POPUP popExam
RELEASE POPUP popExam



















PUTFILE( ), funo


Chama a caixa de dilogo Salvar como e retorna o nome do arquivo especificado.

Sintaxe

PUTFILE([cTextoPersonalizado] [, cNomeArquivo] [, cExtensoArquivo])



Tipos de retorno

Caractere

Argumentos

cTextoPersonalizado Especifica o texto personalizado que deve aparecer na caixa de dilogo
Salvar como. No Windows 3.x, o texto aparece como o ttulo da caixa de dilogo. No Windows 95,
o texto personalizado substitui o rtulo Nome do arquivo. No Macintosh, o texto personalizado
substitui o rtulo Salvar como.

Observe que, no Windows 95, as legendas longas podem estar truncadas.

cNomeArquivo Especifica o nome de arquivo padro exibido na caixa de texto.

cExtensoArquivo Especifica extenses de nomes de arquivo. Somente nomes de arquivo com a
extenso especificada sero exibidos na lista rolvel da caixa de dilogo Salvar como quando a
caixa de verificao Todos os arquivos for limpa. A primeira extenso em cExtensoArquivo ser
automaticamente adicionada ao nome do arquivo digitado se no houver uma extenso includa
junto ao nome do arquivo. Para obter uma lista de extenses de arquivo do Visual FoxPro e os tipos
de criadores correspondentes, consulte Extenses e tipos de arquivos.

A expresso de caractere cExtensoArquivo pode assumir uma das formas a seguir:

cExtensoArquivo pode conter uma nica extenso, como .PRG, e apenas os nomes de
arquivo com essa extenso sero exibidos.
cExtensoArquivo pode conter uma lista de extenses de nome de arquivo separadas por
ponto-e-vrgula. Por exemplo, se voc incluir PRG;FXP, o Visual FoxPro exibir todos os nomes de
arquivo com as extenses .PRG e .FXP.
Se os nomes de arquivo tiverem o mesmo nome raiz, mas extenses diferentes (por
exemplo, CUSTOMER.PRG e CUSTOMER.FXP), o Visual FoxPro exibir somente o nome de
arquivo com a extenso que aparece primeiro em cExtensoArquivo.

cExtensoArquivo pode conter uma lista de extenses de nome de arquivo separadas por
barras verticais, como PRG|FXP. Nesse caso, o Visual FoxPro exibe todos os nomes de arquivo
com as extenses listadas, mesmo que os arquivos tenham o mesmo nome raiz.
Se cExtensoArquivo contiver somente um ponto-e-vrgula (;), o Visual FoxPro exibir
todos os nomes de arquivo sem extenso.
Se cExtensoArquivo for uma seqncia vazia, o Visual FoxPro exibir os nomes de todos
os arquivos do diretrio ou pasta atual.

Se cExtensoArquivo contiver curingas do MS-DOS, como o ponto de interrogao (?) e o
asterisco (*), o Visual FoxPro exibir todos os nomes de arquivo com extenses correspondentes
aos critrios de caracteres curinga. Por exemplo, se cExtensoArquivo
for ?X?, sero exibidos todos os nomes de arquivo com as extenses .FXP, .EXE, .TXT, e assim
por diante.



Comentrios

Utilize PUTFILE( ) para escolher um nome de arquivo existente ou especificar um novo nome de
arquivo. PUTFILE( ) retornar o nome de arquivo com o seu caminho. Se voc no digitar um
nome de arquivo, PUTFILE( ) retornar o nome de arquivo (especificado com cNomeArquivo) e a
extenso padro (especificada por cExtensoArquivo). Se voc escolher Cancelar ou pressionar
ESC, PUTFILE( ) retornar uma seqncia vazia. possvel utilizar o nome do arquivo retornado
por PUTFILE( ) para nomear um arquivo e salv-lo no disco.


PUTFILE( ), exemplo da funo

O exemplo a seguir cria um arquivo de dados delimitado a partir de qualquer tabela existente
selecionada pelo usurio. GETFILE( ) utilizada para localizar e abrir uma tabela e PUTFILE( ),
para retornar o nome do arquivo de destino.

gcTableName = GETFILE('DBF', 'Abre tabela:')
USE (gcTableName)
gcDelimName = ALIAS( ) + '.DLM'
gcDelimFile = PUTFILE('Arquivo delimitado:', gcDelimName, 'DLM')
IF EMPTY(gcDelimFile) && Esc pressionada
CANCEL
ENDIF
COPY TO (gcDelimFile) DELIMITED && Cria arquivo delimitado
MODIFY FILE (gcDelimFile) NOEDIT
































PV( ), funo


Retorna o valor atual de um investimento.

Sintaxe

PV(nPagamento, nTaxaJuros, nPagamentosTotais)



Tipos de retorno

Numrico

Argumentos

nPagamento Especifica o valor de pagamentos peridicos. nPagamento pode resultar em um
nmero positivo ou negativo. PV( ) considera que os pagamentos sero efetuados ao final de cada
perodo.

nTaxaJuros Especifica a taxa de juros peridica. Se a taxa de juros de um investimento for anual e
os pagamentos forem efetuados mensalmente, divida a taxa de juros anual por 12.

nPagamentosTotais Especifica o nmero total de pagamentos.



Comentrios

PV( ) calcula o valor atual de um investimento com base em uma srie de pagamentos peridicos
iguais a uma taxa de juros peridica constante.

PV( ), exemplo da funo

STORE 500 to gnPayment && Pagamentos peridicos efetuados mensalmente
STORE .075/12 TO gnInterest && Taxa de juros anual de 7,5%
STORE 48 TO gnPeriods && Quatro anos (48 meses)
CLEAR
? PV(gnPayment, gnInterest, gnPeriods) && Exibe 20679.19























QUIT, comando


Finaliza a sesso ativa do Visual FoxPro e retorna o controle ao sistema operacional.

Sintaxe

QUIT



Comentrios

No Visual FoxPro para Windows, voc retorna ao Windows.



Importante Utilize QUIT sempre que for terminar uma sesso do Visual FoxPro. Se desligar o
computador sem emitir QUIT, poder haver perda de dados, os arquivos abertos podero ser
danificados e os arquivos de trabalho temporrios que normalmente so excludos podero ser
deixados em disco.











RAND( ), funo


Retorna um nmero aleatrio entre 0 e 1.

Sintaxe

RAND([nValorOriginal])



Tipos de retorno

Numrico

Argumentos

nValorOriginal Especifica o valor original que determina a seqncia de valores que o RAND( )
retorna.

RAND( ) retornar a mesma seqncia de nmeros aleatrios se voc utilizar o mesmo valor
original para nValorOriginal na primeira vez que emitir RAND( ), seguido pela funo RAND( )
sem nValorOriginal.

Se nValorOriginal for negativo na primeira vez que voc emitir RAND( ), um valor original do
cronmetro do sistema ser utilizado. Para ativar a seqncia de nmeros mais aleatria, emita
RAND( ) inicialmente com um argumento negativo e, em seguida, emita RAND( ) sem um
argumento.

Se voc omitir nValorOriginal, RAND( ) utilize um valor original padro de 100001.




RAND( ), exemplo da funo

O primeiro exemplo abaixo utiliza RAND( ) para criar uma tabela com 10 registros que contm
valores aleatrios, depois utiliza MIN( ) e MAX( ) para exibir os valores mximo e mnimo na
tabela.
O segundo exemplo abaixo exibe um nmero aleatrio que fica entre os valores 1 e 10.

CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10 && Incluir 10 registros,
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( ) && Inserir valores aleatrios
ENDFOR

CLEAR
LIST && Exibe os valores
gnMaximum = 1 && Inicializa o valor mnimo
gnMinimum = 100 && Inicializa o valor mximo
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'O valor mnimo : ', gnMinimum && Exibe o valor mnimo

? 'O valor mximo : ', gnMaximum && Exibe o valor mximo

CLEAR
gnLower = 1
gnUpper = 10

? INT((gnUpper - gnLower + 1) * RAND( ) + gnLower)
RAT( ), funo


Retorna a posio numrica da ltima ocorrncia de uma expresso de caracteres ou campo memo
contido em outra expresso de caracteres ou campo memo.

Sintaxe

RAT(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia])


Tipos de retorno

Numrico

Argumentos

cExpressoProcurada Especifica a expresso de caracteres que RAT( ) procura na
cExpressoPesquisada. A expresso de caracteres pode se referir a um campo memo de qualquer
tamanho.

cExpressoPesquisada Especifica a expresso de caracteres em que RAT( ) faz a procura. A
expresso de caracteres pode se referir a um campo memo de qualquer tamanho.

nOcorrncia Especifica a ocorrncia, da direita para a esquerda, de cExpressoProcura procurada
por RAT( ) em cExpressoPesquisada. Como padro, RAT( ) procura a ltima ocorrncia de
cExpressoProcurada (nOcorrncia = 1). Se nOcorrncia for 2, RAT( ) ir procurar pela penltima
ocorrncia e assim por diante.



Comentrios

RAT( ), a funo AT( ) invertida, procura na expresso de caracteres cExpressoPesquisada, da
direita para a esquerda, pela ltima ocorrncia de outra expresso de caracteres,
cExpressoProcurada.

RAT( ) retorna um nmero inteiro, indicando a posio do primeiro caractere de
cExpressoProcurada em cExpressoPesquisada. RAT( ) retorna 0 se cExpressoProcurada no for
encontrada em cExpressoPesquisada ou se nOcorrencia for maior que o nmero de vezes que
cExpressoProcurada ocorre em cExpressoPesquisada.

A procura executada por RAT( ) considera maisculas/minsculas.


RAT( ), exemplo da funo

STORE 'abracadabra' TO string
STORE 'a' TO find_str
CLEAR
? RAT(find_str,string) && Exibe 11
? RAT(find_str,string,3) && Exibe 6













RATC( ), funo


Retorna a posio numrica da ltima ocorrncia de uma expresso de caracteres o campo memo
dentro de outra expresso de caracteres ou campo memo

Sintaxe

RATC(cExpressoProcurada, cExpressoPesquisada [, nOcorrncia])



Tipos de retorno

Numrica

Argumentos

cExpressoProcurada Especifica a expresso de caracteres que RATC( ) procura na
cExpressoPesquisada.

cExpressoPesquisada Especifica a expresso de caracteres em que RATC( ) faz a procura. As
expresses de caracteres cExpressoProcurada e cExpressoPesquisada podem ser campos memo
de qualquer tamanho.

nOcorrncia Especifica a ocorrncia, da direita para a esquerda, de cExpressoProcura procurada
por RATC( ) em cExpressoPesquisada. Como padro, RATC( ) procura a ltima ocorrncia de
cExpressoProcurada (nOcorrncia = 1). Se nOcorrncia for 2, RAT( ) ir procurar pela penltima
ocorrncia e assim por diante.

Comentrios

RATC( ) destina-se a expresses que contm caracteres de byte duplo. Se a expresso contiver
apenas caracteres de byte nico, RATC( ) ser equivalente a RAT( ).

RATC( ) retorna a posio numrica da ltima ocorrncia de uma expresso de caracteres ou campo
memo dentro de outra expresso de caracteres ou campo memo. As expresses de caracteres ou
campos memo podem conter qualquer combinao de caracteres de byte duplo e nico.

RATC( ) a funo invertida AT_C( ): procura da direita para a esquerda.

RATC( ) retorna um nmero inteiro, indicando a posio do primeiro caractere de
cExpressoProcurada em cExpressoPesquisada. RATC( ) retorna 0 se cExpressoProcurada no
for encontrada em cExpressoPesquisada ou se nOcorrncia for maior que o nmero de vezes que
cExpressoProcurada ocorre em cExpressoPesquisada.

A procura executada por RATC( ) considera maisculas/minsculas.












RATLINE( ), funo


Retorna o nmero da linha da ltima ocorrncia de uma expresso de caracteres dentro de uma
outra expresso de caracteres ou campo memo, contando a partir da ltima linha.

Sintaxe

RATLINE(cExpressoProcurada, cExpressoPesquisada)



Tipos de retorno

Numrico

Argumentos

cExpressoProcurada Especifica a expresso de caracteres que RATLINE( ) procura na
cExpressoPesquisada.

cExpressoPesquisada Especifica a expresso de caracteres em que RATLINE( ) faz a procura. As
expresses de caracteres cExpressoProcurada e cExpressoPesquisada podem ser campos memo
de qualquer tamanho.

Utilize MLINE( ) para retornar a linha que contm cExpressoProcurada.

Dica A funo RATLINE( ) oferece uma forma conveniente para pesquisar em campos memo.



Comentrios

RATLINE( ), a funo ATLINE( ) invertida, procura a ocorrncia da cExpressoProcura em uma
expresso de caracteres cExpressoPesquisada, a partir do ltimo caractere de
cExpressoPesquisada.

Caso a procura seja bem-sucedida, RATLINE( ) retornar o nmero da linha em que ocorre a
correspondncia. Caso a procura seja malsucedida, RATLINE( ) retornar 0.

A procura executada por RATLINE( ) considera maisculas/minsculas.



Importante O nmero da linha que RATLINE( ) retorna determinado pelo valor de SET
MEMOWIDTH, mesmo que cExpressoPesquisada no seja um campo memo. Para obter maiores
informaes, consulte SET MEMOWIDTH.



RATLINE( ), exemplo da funo

No exemplo a seguir, RATLINE( ) retorna o nmero da linha para a ltima linha no campo memo
notes que contm a palavra graduado. MLINE( ) usa este valor para retornar o contedo da linha.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE employee && Abre a tabela Employee
STORE 'graduado' TO gcString
STORE MLINE(notes, RATLINE(gcString, notes)) TO gnFileLine
? gnFileLine


































RD | RMDIR, comando


Remove um diretrio ou pasta do disco.

Sintaxe

RD cCaminho | RMDIR cCaminho



Argumentos

cCaminho Especifica o nome e a localizao do diretrio ou pasta a ser removido do disco.



Comentrios

O Visual FoxPro ir gerar uma mensagem de erro se voc tentar remover um diretrio que no
esteja vazio.


RD | RMDIR, exemplo do comando



O exemplo a seguir utiliza MKDIR para criar um novo diretrio denominado mytstdir, em seguida
CHDIR utilizado para mudar para o novo diretrio. GETDIR( ) utilizado para exibir a estrutura
do novo diretrio e, em seguida, RMDIR utilizado para remover o diretrio que acabou de ser
criado. GETDIR( ) utilizado para exibir a estrutura do diretrio novamente.

SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro
MKDIR mytstdir && Cria um novo diretrio
CHDIR mytstdir && Muda para o novo diretrio
= GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio
SET DEFAULT TO HOME( ) && Restaura o diretrio do Visual FoxPro
RMDIR mytstdir && Remove o novo diretrio
= GETDIR( ) && Exibe a caixa de dilogo Selecionar diretrio

























RECALL, comando


Desmarca registros marcados para excluso na tabela selecionada.

Sintaxe

RECALL
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[NOOPTIMIZE]



Argumentos

Escopo Especifica um intervalo de registros a ser reintegrado. Somente os registros dentro do
intervalo especificado sero reintegrados. As clusulas de escopo so: ALL, NEXT nRegistros,
RECORD nNmeroRegistro e REST.

O escopo padro para RECALL o registro atual (NEXT 1).

FOR lExpresso1 Especifica que apenas os registros para os quais lExpresso1 resulta em
verdadeiro (.T.) sero reintegrados. Isto permite filtrar registros indesejveis.

Rushmore otimizar RECALL FOR se lExpresso1 for uma expresso otimizvel. Para obter um
melhor desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor.

WHILE lExpresso2 Especifica uma condio pela qual os registros sero reintegrados, desde que
lExpresso2 resulte em verdadeiro (.T.).

NOOPTIMIZE Evita a otimizao Rushmore de RECALL.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no Captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor.



Comentrios

RECALL pode ser utilizado para recuperar registros, desde que no se tenha emitido PACK ou
ZAP.



Importante Depois de compactar um arquivo com o comando PACK, todos os registros marcados
para excluso sero excludos permanentemente.



Para marcar registros para excluso, emita DELETE ou DELETE - SQL ou selecione Excluir
registros no menu Tabela, quando uma janela Pesquisar ou Editar estiver ativa. Para reintegrar
registros, emita RECALL ou selecione Reintegrar registros no menu Registro, quando uma janela
Pesquisar ou Editar estiver ativa.

RECALL, exemplo de comando

O exemplo a seguir abre a tabela customer no banco de dados testdata. DELETE - SQL
utilizado para marcar todos os registros a serem excludos onde o campo country contm USA.
Todos os registros marcados para excluso so exibidos. RECALL ALL utilizado para desmarcar
todos os registros marcados para excluso.

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

DELETE FROM customer WHERE country = 'USA' && Marcar para excluso
CLEAR
LIST FIELDS company, country FOR DELETED( ) && Lista registros marcados
RECALL ALL && Desmarca todos os registros marcados para excluso




















RECCOUNT( ), funo


Retorna o nmero de registros da tabela atual ou da tabela especificada.

Sintaxe

RECCOUNT([nreaTrabalho | cAliasTabela])



Tipos de retorno

Numrico

Argumentos

nreaTrabalho Especifica o nmero da rea de trabalho de uma tabela aberta em uma outra rea
de trabalho.

A funo RECCOUNT( ) retornar 0 nenhuma tabela estiver aberta na rea de trabalho
especificada.

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



Comentrios

O valor que RECCOUNT( ) retorna no afetado por SET DELETED e SET FILTER.

RECCOUNT( ) sem os argumentos opcionais nreaTrabalho ou cAliasTabela retorna o nmero de
registros existentes na tabela aberta da rea de trabalho atualmente selecionada.

RECCOUNT( ), exemplo de funo

No exemplo a seguir, o Visual FoxPro compara o espao disponvel em disco com a quantidade
necessria para classificar customer.

*** Verifica o ESPAO EM DISCO antes de uma CLASSIFICAO ***

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

*** Obtm o tamanho do cabealho da tabela ***

gnTableHead = HEADER( )

*** Calcule o tamanho da tabela ***

gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)
IF DISKSPACE( ) > (gnFileSize * 3)
WAIT WINDOW 'Espao em disco suficiente para classificar.'
ELSE
WAIT WINDOW 'Espao em disco insuficiente. Impossvel realizar classificao.'

ENDIF





RECNO( ), funo


Retorna o nmero do registro atual na tabela em uso ou na tabela especificada.

Sintaxe

RECNO([nreaTrabalho | cAliasTabela])



Tipos de retorno

Numrico

Argumentos

nreaTrabalho Especifica o nmero da rea de trabalho para uma tabela aberta em outra rea de
trabalho. RECNO( ) retorna 0 se uma tabela no estiver aberta na rea de trabalho especificada.

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



Comentrios

O registro atual aquele em que o ponteiro do registro est posicionado.

RECNO( ) retornar nmeros negativos para registros includos em um buffer da tabela.

A funo RECNO( ) retornar um valor maior do que o nmero de registros existentes na tabela se
o ponteiro estiver posicionado depois do ltimo registro da tabela. RECNO( ) retornar 1 se o
ponteiro estiver posicionado antes do primeiro registro da tabela ou se a tabela no tiver registros.
Caso uma tabela no tenha registros, EOF( ) retornar sempre verdadeiro (.T.).

RECNO( ) emitida sem os argumentos opcionais nreaTrabalho ou cAliasTabela retorna o nmero
do registro atual da tabela aberta na rea de trabalho atualmente selecionada.

Se voc emitiu SEEK sem sucesso em uma tabela indexada, poder especificar 0 para que a
nreaTrabalho utilize a lgica de pesquisa de software para retornar o nmero do registro
correspondente mais prximo. RECNO(0) retorna 0 se no localizar uma correspondncia prxima.
O Visual FoxPro gerar uma mensagem de erro se GO RECNO(0) for emitido quando essa
correspondncia no encontrada.


RECNO( ), exemplo de funo

O exemplo a seguir procura a tabela customer para o nome de uma empresa e, se esse nome no for
localizado, utiliza RECNO(0) para retornar a empresa com a correspondncia mais prxima.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
SET ORDER TO company
SEEK 'Ernst'
IF FOUND( )
DISPLAY company, contact
ELSE
GOTO RECNO(0)
CLEAR
? 'A empresa com a correspondncia mais prxima ' + empresa
? 'Nmero do registro: ' + ALLTRIM(STR(RECNO( )))
ENDIF





























RECSIZE( ), funo


Retorna o tamanho (largura) de um registro de tabela.

Sintaxe

RECSIZE([nreaTrabalho | cAliasTabela])



Tipos de retorno

Numrico

Argumentos

nreaTrabalho Especifica o nmero da rea de trabalho de uma tabela aberta em uma outra rea
de trabalho. RECSIZE( ) retornar 0 caso no esteja aberta nenhuma tabela na rea de trabalho
especificada.

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



Comentrios

A funo RECSIZE( ) emitida sem os argumentos opcionais nreaTrabalho ou cAliasTabela
retorna o tamanho do registro da tabela aberta na rea de trabalho atualmente selecionada.


RECSIZE( ), exemplo de funo

No exemplo a seguir, o Visual FoxPro compara o espao em disco disponvel com a quantidade
necessria para classificar customer.

*** Verifique DISKSPACE antes de uma SORT ***

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

*** Obtenha o tamanho do cabealho da tabela ***

gnTableHead = HEADER( )

*** Calcule o tamanho da tabela ***

gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)
IF DISKSPACE( ) > (gnFileSize * 3)
WAIT WINDOW 'Espao em disco suficiente para classificar.'
ELSE
WAIT WINDOW 'Espao em disco insuficiente. Classificao no pode ser feita.'

ENDIF










REGIONAL, comando


Cria matrizes e variveis de memria regionais.

Sintaxe

#REGION nNmeroRegio
REGIONAL ListaVar



Argumentos

#REGION nNmeroRegio Cria uma regio. As variveis regionais devem ser declaradas antes de
serem utilizadas em um programa. Observe que #REGION uma diretiva de compilador e no um
comando. nNmeroRegio especifica um nmero de regio de 0 a 31.

REGIONAL ListaVar Declara as variveis para a regio criada com a diretiva #REGION.
ListaVarMem uma lista de matrizes e variveis de memria separadas por vrgulas.

Durante a compilao do programa, se uma outra varivel regional com nome idntico j tiver sido
compilada quando uma declarao regional for localizada, a segunda ocorrncia do nome da
varivel se tornar exclusiva para garantir que no haja conflitos com a varivel regional declarada
anteriormente.

Para que o nome de uma varivel se torne exclusivo, preencha o nome da varivel regional at 10
caracteres com sublinhados e o nmero da regio atual. Esta substituio ocorre inteiramente
durante a compilao do programa e no tem qualquer efeito sobre a velocidade da execuo.

Quando o nome de uma varivel for modificado, utilize DISPLAY MEMORY para exibir o nome
modificado. Para controlar a varivel na janela Depurar, utilize o seu nome modificado. Como a
janela Rastrear utiliza o cdigo fonte de programa original, ela exibir o nome original da varivel
(e no o nome modificado criado pelo compilador).



Comentrios

No haver interferncia entre variveis de memria ou matrizes com nomes idnticos se os seus
valores estiverem protegidos dentro de uma regio. Variveis regionais so semelhantes a
variveis privadas.


REGIONAL, exemplo de comando

No exemplo a seguir, dois conjuntos de variveis regionais so criados. Na regio 1, so criadas as
variveis gcA, gcB, gcC e gcD e a seqncia de caracteres Um armazenada para cada uma. Na
regio 2, as variveis gcC, gcD, gcE e gcF so criadas e a seqncia de caracteres Dois
armazenada para cada uma. As variveis gcC and gcD so comuns a ambas as regies.
A seguir, a sada de DISPLAY MEMORY exibida. Os nomes das variveis gcC e gcD so
modificados na segunda regio. gcC se torna GCC________2 e gcD se torna GCD________2.
Todas as variveis so particulares e podem ser acessadas por programas de baixo nvel.

#REGION 1
REGIONAL gcA,gcB,gcC,gcD
STORE 'Um' to gcA,gcB,cgC,gcD
#REGION 2
REGIONAL gcC,gcD,gcE,gcF && gcC e gcD so comuns para ambas as regies
STORE 'Dois' to gcC,gcD,gcE,gcF
DO showmemory

PROCEDURE showmemory
DISPLAY MEMORY LIKE g*



























REINDEX, comando


Reconstri arquivos de ndice abertos.

Sintaxe

REINDEX [COMPACT]



Argumentos

COMPACT Converte arquivos de ndice nico (.IDX) regulares para arquivos .IDX compactados.



Comentrios

Os arquivos de ndice ficam desatualizados quando se abre uma tabela sem abrir seus arquivos de
ndice correspondentes e so feitas alteraes nos campos de chave dos arquivos de ndice. Quando
os arquivos de ndice ficam desatualizados, possvel atualiz-los atravs de uma reindexao.

O comando REINDEX atualiza todos os arquivos de ndice abertos na rea de trabalho selecionada.
O Visual FoxPro reconhece cada tipo de arquivo de ndice (arquivos de ndice composto (.CDX),
arquivos .CDX estruturais e arquivos de ndice nico (.IDX)) e faz a reindexao conformemente.
Ele atualiza todas as marcas nos arquivos .CDX e atualiza arquivos .CDX estruturais, que so
abertos automaticamente com a tabela.

Qualquer arquivo de ndice criado com a palavra-chave UNIQUE do comando INDEX ou com SET
UNIQUE ON mantm o status UNIQUE quando reindexado.

Para reindexar (REINDEX) arquivos de ndice desatualizados, emita os comandos abaixo:

USE TableName INDEX OutdatedIndexNames
REINDEX


REINDEX, exemplo de comando

No exemplo a seguir, ISEXCLUSIVE( ) comprova que a tabela customer foi aberta para uso
exclusivo. A tabela no reindexada visto que a que est na rea atual no foi aberta para uso
exclusivo.

cExclusive = SET('EXCLUSIVO')
SET EXCLUSIVE OFF
SET PATH TO (SYS(2004) + 'SAMPLES\DATA\')
OPEN DATA testdata && Abre o banco de dados de teste
USE Customer && No foi aberta para uso exclusivo
USE Employee IN 0 EXCLUSIVE && Aberta para uso exclusivo em outra rea de trabalho

IF ISEXCLUSIVE( )
REINDEX && S pode ser feito se a tabela for aberta para uso exclusivo
ELSE
WAIT WINDOW 'A tabela tem que ser aberta para uso exclusivo'
ENDIF

SET EXCLUSIVE &cExclusive


RELEASE MENUS, comando


Remove da memria barras de menus definidas pelo usurio.

Sintaxe

RELEASE MENUS [ListaNomesBarrasMenus [EXTENDED]]



Argumentos

ListaNomesBarrasMenus Especifica as barras de menus que sero removidas da memria. Separe
os nomes das barras de menus com vrgulas.

EXTENDED Libera uma barra de menus e todos os menus, ttulos e itens subordinados, alm de
todos os comandos ON SELECTION BAR, ON SELECTION MENU, ON SELECTION PAD e
ON SELECTION POPUP associados.



Comentrios

Barras de menus ativas tm que ser desativadas com DEACTIVATE MENU antes que possam ser
liberadas da memria.

Se RELEASE MENUS for emitido sem argumentos adicionais, todas as barras de menus definidas
pelo usurio sero removidas da memria.


RELEASE PAD, comando


Remove um ttulo de menu especfico ou todos os ttulos de menu da memria.

Sintaxe

RELEASE PAD NomeTtuloMenu OF NomeBarraMenus | ALL OF NomeBarraMenus



Argumentos

NomeTtuloMenu OF NomeBarraMenus Especifica o ttulo de menu a ser removido da memria.

Voc pode remover um ttulo da barra de menus do sistema do Visual FoxPro, especificando seu
nome em NomeTtuloMenu. Por exemplo, o comando RELEASE PAD _MEDIT OF
_MSYSMENU remove o ttulo de menu Editar da barra de menus do sistema do Visual FoxPro.

ALL OF NomeBarraMenus Especifica que todos os ttulos de uma barra de menus definida pelo
usurio sero removidos da memria. A clusula ALL no pode ser utilizada para remover ttulos
da barra de menus do sistema do Visual FoxPro.



RELEASE PAD, exemplo de comando

Os comandos a seguir removem o ttulo de menu Janela da barra de menus do sistema:

PUSH MENU _MSYSMENU
RELEASE PAD _MSM_WINDO OF _MSYSMENU && Remove o ttulo de menu Janela

WAIT WINDOW ' Pressione uma tecla para restaurar o menu padro '
POP MENU _MSYSMENU && Restaura o sistema de menu padro do Visual FoxPro
























RELEASE POPUPS, comandos


Remove da memria um menu especfico ou todos os menus.

Sintaxe

RELEASE POPUPS [ListaNomeMenu [EXTENDED]]



Argumentos

ListaNomeMenu Especifica os menus a serem liberados da memria. Separe os nomes de menus
com vrgulas.

Os menus do sistema do Visual FoxPro que aparecem na barra de menus do sistema do Visual
FoxPro podem tambm ser liberados. Para liberar um menu do sistema do Visual FoxPro, inclua o
nome interno do menu do sistema (_MFILE, _MEDIT, _MDATA etc). Utilize SET SYSMENU TO
DEFAULT para restaurar os menus do sistema e a barra de menus padro do sistema.

EXTENDED Libera um menu, seus itens e todos os comandos associados a ON SELECTION
POPUP e ON SELECTION BAR.



Comentrios

Um menu ativo deve ser ativado com DEACTIVATE POPUP antes que possa se liberado da
memria.

Se RELEASE POPUPS for emitido sem argumentos adicionais, todos os menus definidos pelo
usurio sero removidos da memria.

































RELEASE PROCEDURE, comando


Fecha os arquivos de procedimento abertos com SET PROCEDURE.

Sintaxe

RELEASE PROCEDURE NomeArquivo1 [, NomeArquivo2 ]



Argumentos

NomeArquivo1 [, NomeArquivo2 ] especifica o nome do arquivo de procedimento ou um
conjunto de arquivos de procedimento a ser fechado.



Comentrios

Os arquivos de procedimento so abertos com SET PROCEDURE. Uma vez que o arquivo
aberto, os procedimentos dentro do arquivo esto disponveis para programas e a partir da janela
Comando.

Para fechar todos os arquivos de procedimento abertos, edite SET PROCEDURE TO sem qualquer
argumento adicional.






RELEASE WINDOWS, comando


Remove da memria janelas definidas pelo usurio ou janelas do sistema do Visual FoxPro.

Sintaxe

RELEASE WINDOWS [ListaNomesJanelas] |



Argumentos

ListaNomesJanelas Especifica as janelas liberadas da memria. ListaNomesJanelas pode incluir
janelas definidas pelo usurio e janelas do sistema do Visual FoxPro. Os nomes de janelas devem
ser separados por vrgulas.

Se ListaNomesJanelas no estiver includo, a janela definida pelo usurio e ativada no momento
ser liberada.

RELEASE WINDOWS pode ser utilizado para remover janelas do sistema do Visual FoxPro
encontradas na janela principal do Visual FoxPro ou em uma janela pai, definida pelo usurio.

A lista a seguir inclui janelas do sistema que podem ser liberadas da janela principal do Visual
FoxPro ou de uma janela pai.

Comando
Depurar
Rastrear
Visualizar

Para liberar um janela de sistema e/ou uma barra de ferramentas (no
Visual FoxPro), coloque o nome completo da janela do sistema ou barra de ferramentas entre aspas.
Por exemplo, para liberar a Barra de ferramentas controles de relatrio no Visual FoxPro, emita o
comando:

RELEASE WINDOW "Controles de Relatrio"



Utilize ACTIVATE WINDOW para posicionar uma janela do sistema na janela principal do Visual
FoxPro ou em uma janela definida pelo usurio.






















RELEASE, comando


Remove da memria variveis de memria e matrizes.

Sintaxe

RELEASE ListaVarMemt
Ou
RELEASE ALL [EXTENDED]
[LIKE Estrutura | EXCEPT Estrutura]



Argumentos

RELEASE ListaVarMem Especifica as variveis de memria e matrizes liberadas da memria. Os
nomes de variveis de memria e matrizes so separados por vrgulas.

RELEASE ALL Libera da memria todas as variveis de memria e matrizes.

EXTENDED Quando emitido em um programa, especifica que todas as variveis pblicas sero
liberadas. RELEASE ALL, RELEASE ALL LIKE ou RELEASE ALL EXCEPT no libera
variveis pblicas quando emitido em um programa.

LIKE Estrutura | EXCEPT Estrutura Libera da memria todas as variveis de memria e matrizes
que correspondam estrutura especificada ou todas as variveis de memria e matrizes exceto
aquelas que correspondam estrutura especificada. Estrutura pode incluir os curingas ? e *.


REMOVE TABLE, comando


Remove uma tabela do banco de dados atual.

Sintaxe

REMOVE TABLE NomeTabela | ?
[DELETE] [RECYCLE]



Argumentos

NomeTabela Especifica a tabela a ser excluda do banco de dados atual.

? Exibe a caixa de dilogo Remover na qual voc pode escolher uma tabela no banco de dados
atual a ser removida.

DELETE Especifica que a tabela removida do banco de dados e do disco.



Cuidado Qualquer tabela removida do disco com esta instruo no pode ser removida. Mesmo se
SET SAFETY estiver ON, voc no ser advertido antes da tabela ser removida do disco.



RECYCLE Especifica que a tabela no imediatamente excluda do disco e colocada no
Windows 95 Recycle Bin.


Comentrios

Quando uma tabela removida do banco de dados, ela se torna uma tabela livre e pode ser
adicionada a outro banco de dados. As tabelas so adicionadas a um banco de dados com ADD
TABLE.

Quando REMOVE TABLE emitido, todos os ndices primrios, valores padro e regras de
validao associados tabela tambm so removidos. Se SET SAFETY estiver ON, o Visual
FoxPro exibir um aviso perguntando se voc tem certeza de que deseja remover a tabela do banco
de dados.

Importante REMOVE TABLE afeta outras tabelas no banco de dados atual se estas tabelas
possuem regras ou relaes associadas tabela que est sendo removida. As regras e as relaes
no so mais vlidas quando a tabela removida do banco de dados.


REMOVE TABLE, exemplo de comando

O exemplo a seguir cria dois bancos de dados denominados mydbc1 e mydbc2 e uma tabela
denominada tabela 1. A tabela adicionada a mydbc1 quando ela criada. A tabela em seguida
fechada e removida de mydbc1. ADD TABLE utilizado para adicionar a tabela a mydbc2.
RENAME TABLE utilizado para alterar o nome da tabela de table1 para table2.

CREATE DATABASE mydbc1
CREATE DATABASE mydbc2
SET DATABASE TO mydbc1
CREATE TABLE table1 (cField1 C(10), n N(10)) && Adiciona tabela a mydbc1
CLOSE TABLES && Uma tabela deve estar fechada para ser removida de um banco de
dados
REMOVE TABLE table1
SET DATABASE TO mydbc2
ADD TABLE table1
RENAME TABLE table1 TO table2
































RENAME TABLE, comando


Renomeia uma tabela no banco de dados atual.

Sintaxe

RENAME TABLE NomeTabela1 TO NomeTabela2



Argumentos

NomeTabela1 Especifica o nome da tabela a ser renomeada.

NomeTabela2 Especifica o novo nome da tabela.



Comentrios

RENAME TABLE no pode ser utilizado para alterar o nome de uma tabela livre; em vez disso,
utilize RENAME.


RENAME TABLE, exemplo de comando

O exemplo a seguir cria dois bancos de dados denominados mydbc1 e mydbc2 e uma tabela
denominada tabela 1. A tabela adicionada a mydbc1 quando criada. A tabela , em seguida,
fechada e removida de mydbc1. ADD TABLE utilizado para adicionar a tabela a mydbc2.
RENAME TABLE utilizada para alterar o nome da tabela da table1 para table2.

CLOSE DATABASES
CREATE DATABASE mydbc1
CREATE DATABASE mydbc2
SET DATABASE TO mydbc1
CREATE TABLE table1 (cField1 C(10), n N(10)) && Adiciona a tabela a mydbc1
CLOSE TABLES && Uma tabela deve ser fechada para ser removida de um banco de dados
REMOVE TABLE table1
SET DATABASE TO mydbc2
ADD TABLE table1
RENAME TABLE table1 TO table2























RENAME, comando


Altera o nome de um arquivo para um novo nome.

Sintaxe

RENAME NomeArquivo1 TO NomeArquivo2



Argumentos

NomeArquivo1 TO NomeArquivo2 Especifica o nome do arquivo a ser alterado e o novo nome.
Inclui uma extenso de arquivo para cada arquivo. Se as extenses no forem includas, os arquivos
assumiro a extenso padro .DBF. Se voc renomear uma tabela livre que tenha um arquivo de
memo .FPT associado, certifique-se de renomear o arquivo de memo. Inclua um ponto (.) aps o
nome do arquivo para renomear um arquivo que no possua uma extenso.

No utilize RENAME para alterar o nome de uma tabela em um banco de dados; RENAME no
serve para isso. Utilize RENAME TABLE para alterar o nome de uma tabela em um banco de
dados.

Inclua os caminhos com os nomes de arquivos caso estes no estejam na unidade de disco e
diretrio padro. Se NomeArquivo1 e NomeArquivo2 estiverem em diretrios ou pastas diferentes,
NomeArquivo1 ser movido para o diretrio ou pasta de NomeArquivo2.

Quando voc emitir RENAME, NomeArquivo2 no poder ser um nome de arquivo existente e
NomeArquivo1 dever existir e no poder estar aberto.

NomeArquivo1 e NomeArquivo2 podem conter caracteres curingas como, por exemplo, * e ?. Por
exemplo, para renomear todos os arquivos de programa com a extenso .PRG na pasta ou diretrio
atual para fazer backup de arquivos com extenso .BAK, emita RENAME *.PRG TO *.BAK.






























REPLACE FROM ARRAY, comando


Atualiza dados em campos com valores de uma matriz de varivel.

Sintaxe

REPLACE FROM ARRAY NomeMatriz
[FIELDS ListaCampos]
[Escopo]
[FOR lExpresso1]
[WHILE lExpresso2]
[NOOPTIMIZE]



Argumentos

NomeMatriz Especifica o nome da matriz cujos valores substituem os dados dos campos.

FIELDS ListaCampos Especifica que somente os campos em ListaCampos so substitudos pelo
contedo da matriz. Os campos nas reas de trabalho no selecionadas devem ser antecedidos de
seus aliases de tabela.

Escopo Especifica um intervalo de registros a serem substitudos pelo contedo da matriz. Apenas
os registros dentro do intervalo so substitudos. A substituio ocorre at o final do escopo ou da
matriz.

As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST.

O escopo padro para REPLACE FROM ARRAY o registro atual (NEXT 1).

FOR lExpresso1 Especifica que os campos sero substitudos somente nos registros para os quais
lExpresso1 resulta em verdadeiro (.T.). A incluso de FOR permite que se substitua os registros
condicionalmente, filtrando aqueles que no deseja. A substituio ocorre em todos os registros
para os quais lExpresso1 resulta em verdadeiro (.T.) ou at que se alcance o fim da matriz.

Rushmore otimizar REPLACE FROM ARRAY FOR se lExpresso1 for uma expresso
otimizvel. Para um melhor desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor.

WHILE lExpresso2 Especifica uma condio de acordo com a qual os campos em registros sero
substitudos pelo contedo da matriz quando a expresso lgica lExpresso2 resultar em verdadeiro
(.T.).

NOOPTIMIZE Evita a otimizao Rushmore.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor.



Comentrios

Os campos do tipo memo e geral so ignorados em REPLACE FROM ARRAY. Para importar
dados para estes campos, utilize GATHER e APPEND GENERAL.

Comeando pelo primeiro elemento, os elementos de matriz substituem os campos correspondentes
do registro. O primeiro elemento de matriz substitui o primeiro campo do registro, o segundo
elemento substitui o segundo campo e assim por diante.

Se o nmero de elementos da matriz for menor do que o nmero de campos da tabela, os campos
adicionais sero ignorados. Se ocorrer o contrrio, os elementos de matriz adicionais sero
ignorados.

Observao Nenhuma substituio ocorrer se o ponteiro do registro estiver no fim do arquivo da
rea de trabalho atual e voc especificar um campo de outra rea de trabalho.



















REPLACE, comando


Atualiza os registros da tabela.

Sintaxe

REPLACE NomeCampo1 WITH eExpresso1 [ADDITIVE]
[, NomeCampo2 WITH eExpresso2 [ADDITIVE]] ...
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[IN nreaTrabalho | cAliasTabela]
[NOOPTIMIZE]



Argumentos

NomeCampo1 WITH eExpresso1 [, NomeCampo2 WITH eExpresso2 ... ] Especifica que os
dados em NomeCampo1 sero substitudos pelo valor da expresso eExpresso1; que os dados em
NomeCampo2 sero substitudos pelo valor da expresso eExpresso2 e assim por diante.

Quando um valor de expresso for maior do que a largura de um campo numrico, REPLACE far
com que o valor caiba no campo por meio das etapas a seguir:

1. Primeiro, REPLACE truncar as casas decimais, arredondando a parte decimal restante do
campo.
2. Se o valor ainda no couber, REPLACE armazenar o contedo do campo utilizando a
notao cientfica.
3. Se o valor ainda no couber, REPLACE substituir o contedo do campo por asteriscos.



ADDITIVE Inclui as substituies no final dos campos memo. ADDITIVE aplica-se somente s
substituies nos campos memo. Se voc omitir ADDITIVE, o campo memo ser sobrescrito com o
valor da expresso.

Escopo Especifica um intervalo de registros a serem substitudos. Apenas os registros dentro do
intervalo so substitudos. As clusulas de escopo so: ALL, NEXT nRegistros
, RECORD nNmeroRegistro e REST.

O escopo padro para REPLACE o registro atual (NEXT 1).

FOR lExpresso1 Especifica que os campos designados sero substitudos somente nos registros
para os quais lExpresso1 resultar em verdadeiro (.T.). A incluso de FOR permite que voc
substitua os registros condicionalmente, filtrando os que no deseja substituir.

Rushmore otimizar REPLACE FOR se lExpresso1 for uma expresso otimizvel. Para um
melhor desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.

WHILE l Expresso2 Especifica uma condio de acordo com a qual os campos sero substitudos
quando a expresso lgica lExpresso2 resultar em verdadeiro (.T.).

IN nreaTrabalho Especifica a rea de trabalho em que os registros so atualizados.

IN cAliasTabela Especifica o alias da tabela em que os registros so atualizados.

Se voc omitir nreaTrabalho e cAliasTabela, os registros sero atualizados na tabela da rea de
trabalho selecionada no momento.

NOOPTIMIZE Evita a otimizao Rushmore.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor.



Comentrios

REPLACE substitui dados em um campo pelo valor em uma expresso. Os campos nas reas de
trabalho no selecionadas devem ser antecedidos de seus aliases.

Observao Se a clusula IN for omitida, nenhuma substituio ocorrer se o ponteiro do registro
estiver no fim do arquivo da rea de trabalho atual e voc especificar um campo de outra rea de
trabalho.



REPLACE, exemplo de comando

O exemplo a seguir cria uma tabela com 10 registros. REPLACE utilizado para colocar valores
aleatrios em um campo. MIN( ) e MAX( ) exibem os valores mximo e mnimo na tabela.

CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10 && Inclui 10 registros,
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( ) && Insere valores aleatrios
ENDFOR

CLEAR
LIST && Exibe os valores
gnMaximum = 1 && Inicializa o valor mnimo
gnMinimum = 100 && Inicializa o valor mximo
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'O valor mnimo : ', gnMinimum && Exibe o valor mnimo

? 'O valor mximo : ', gnMaximum && Exibe o valor mximo




















REPLICATE( ), funo


Retorna uma seqncia de caracteres que contenha uma expresso de caracteres especificada,
repetida um determinado nmero de vezes.

Sintaxe

REPLICATE(cExpresso, nVezes)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres que repetida.

nVezes Especifica o nmero de vezes que a expresso de caracteres repetida.



Comentrios

No Visual FoxPro, o comprimento mximo da seqncia de caracteres resultante restringido pelo
espao de memria disponvel.


REPLICATE( ), exemplo de funo

CLEAR
? REPLICATE('HELLO ',4) && Exibe HELLO HELLO HELLO HELLO































REPORT command


Exibe ou imprime um relatrio sob o controle de um arquivo de definio de relatrio, criado com
MODIFY REPORT ou CREATE REPORT.

Sintaxe

REPORT FORM NomeArquivo1 | ?
[ENVIRONMENT]
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[HEADING cTextoCabealho]
[NOCONSOLE]
[NOOPTIMIZE]
[PLAIN]
[RANGE nPginaInicial [, nPginaFinal]]
[PREVIEW [WINDOW NomeJanela]
[NOWAIT]]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo2 [ASCII]]
[NAME NomeObjeto]
[SUMMARY]



Argumentos

NomeArquivo 1 Especifica o nome do arquivo de definio de relatrio a ser impresso.

? Exibe a caixa de dilogo Abrir, na qual se pode escolher um arquivo de relatrio.

ENVIRONMENT Includo para compatibilidade com verses anteriores de relatrios 2.x. A fim
de restaurar o ambiente de dados associado a um relatrio do Visual FoxPro, defina a propriedade
AutoOpenTables do ambiente de dados para verdadeiro (.T.), o valor padro. Para garantir que o
ambiente do relatrio seja fechado ao fim da impresso do relatrio, defina a propriedade
AutoCloseTables do ambiente de dados para verdadeiro (.T.), tambm o valor padro.

Para relatrios convertidos a partir de verses anteriores do FoxPro, a incluso de
ENVIRONMENT abre e restaura todas as tabelas e relaes do Ambiente de Dados, mesmo que
AutoOpenTables esteja definida como falso (.F.).

Ao criar ou modificar relatrios, voc pode salvar o ambiente de dados atual do Visual FoxPro com
o arquivo de definio de relatrio. Quando se salva o ambiente de dados do Visual FoxPro,
registros adicionais so colocados na tabela de definio de relatrios para todos os arquivos de
tabela e ndice abertos, a ordem do ndice e quaisquer relacionamentos entre as tabelas.

Escopo Especifica um intervalo de registros a serem includos no relatrio. Somente os registros
dentro do intervalo so includos no relatrio.

As clusulas de escopo so: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST. Para
obter maiores informaes sobre clusulas de escopo, consulte Clusulas de escopo.

O escopo padro para REPORT ALL (todos os registros).

FOR lExpresso1 Imprime dados somente nos registros para os quais lExpresso1 resulta em
verdadeiro (.T.). A incluso de FOR permite que voc filtre os registros que no deseja imprimir.

Rushmore otimizar REPORT FOR se lExpresso1 for uma expresso otimizvel. Para um melhor
desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor.

WHILE lExpresso2 Especifica uma condio de acordo com a qual os dados sero impressos
quando a expresso lgica lExpresso2 resultar em verdadeiro (.T.).

HEADING cTextoCabealho Especifica um texto para que um cabealho adicional seja colocado
em cada pgina do relatrio. A clusula PLAIN ter a precedncia se voc incluir HEADING e
PLAIN.

NOCONSOLE Suprime o eco de um relatrio para a janela principal do Visual FoxPro ou para
uma janela definida pelo usurio quando o relatrio est sendo impresso ou enviado a um arquivo.

NOOPTIMIZE Para evitar a otimizao Rushmore de REPORT, inclua NOOPTIMIZE.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, do Guia do Desenvolvedor.

PLAIN Especifica que um cabealho de pgina aparecer somente no incio do relatrio.

RANGE nPginaInicial [, nPginaFinal] Especifica um intervalo de pginas a ser impresso.
nPginaInicial especifica a primeira pgina impressa; nPginaFinal especifica a ltima pgina
impressa. Se nPginaFinal for omitida, o padro da ltima pgina impressa ser 9.999.

PREVIEW [WINDOW NomeJanela] Exibe o relatrio no modo de visualizao de pgina em vez
de envi-lo para a impressora. Para imprimir um relatrio, deve-se emitir REPORT com TO
PRINTER.

Observe que as variveis de memria do sistema so ignoradas quando voc inclui PREVIEW.

A clusula opcional WINDOW pode ser includa para especificar uma janela onde o relatrio ser
exibido no modo visualizao de pgina. NomeJanela pode ser o nome de uma janela criada com
DEFINE WINDOW ou um formulrio.

Voc pode incluir a clusula opcional NOWAIT para que, em tempo de execuo, o Visual FoxPro
no espere que a janela de visualizao de pgina seja fechada antes de prosseguir com a execuo
do programa. Em vez disso, o Visual FoxPro continuar a execuo do programa com a janela de
visualizao de pgina aberta.

Em aplicativos distribudos, verifique se o menu Exibir est disponvel. Se a Barra de ferramentas
visualizar impresso estiver fechada, ela no poder ser restaurada a menos que o menu Exibir
esteja disponvel.

TO PRINTER [PROMPT] Envia um relatrio impressora.

No Visual FoxPro, FoxPro para Windows e FoxPro para Macintosh, voc pode incluir a clusula
opcional PROMPT para exibir a caixa de dilogo Configurao da impressora antes de iniciar a
impresso. As definies da impressora que podem ser ajustadas dependem do driver de impressora
instalado. Coloque PROMPT imediatamente aps TO PRINTER.

TO FILE NomeArquivo 2 [ASCII] Especifica o arquivo de texto para o qual um relatrio
enviado. O driver atual de impressora utilizado quando o relatrio enviado ao arquivo de texto.
O arquivo criado quando voc inclui TO FILE possui a extenso padro .TXT.

Voc pode incluir a clusula opcional ASCII para criar um arquivo de texto em ASCII a partir do
arquivo de definio de relatrio. Sem a clusula ASCII, PostScript e outros cdigos de
impressora so gravados no arquivo de texto. Os grficos, as linhas, os retngulos e/ou os
retngulos com bordas arredondadas contidos na definio de relatrio no aparecem no arquivo de
texto em ASCII.

O nmero de linhas e colunas de cada pgina do arquivo de texto em ASCII determinado pelo
contedo das variveis de memria do sistema _ASCIICOLS e _ASCIIROWS. Os valores-padro
para _ASCIICOLS e _ASCIIROWS so 80 colunas 63 linhas, respectivamente. Esses valores
correspondem a uma pgina padro na posio retrato.

NAME NomeObjeto Especifica um nome de varivel de objeto para o ambiente de dados de um
relatrio. O ambiente de dados e os objetos do mesmo possuem propriedades e mtodos, como
AddObject, que precisam ser definidos ou chamados em tempo de execuo. A varivel de objeto
oferece acesso a essas propriedades e mtodos. Se voc no especificar NAME, o Visual FoxPro
utilizar como padro o nome do arquivo de relatrio do cdigo associado aos eventos.

SUMMARY Suprime a impresso detalhada de linha. Apenas os totais e subtotais sero
impressos.



Comentrios

A extenso padro para um arquivo de definio de relatrio .FRX. Se o arquivo de definio de
relatrio no estiver no diretrio padro, o caminho tambm ter de ser includo com o nome do
arquivo.





























RESTORE FROM, comando


Recupera variveis de memria e matrizes de variveis de memria salvas em um arquivo de
variveis de memria ou campo Memo. Em seguida, posiciona tais variveis na memria.

Sintaxe

RESTORE FROM NomeArquivo | MEMO NomeCampoMemo
[ADDITIVE]



Argumentos

NomeArquivo Especifica o arquivo de varivel de onde as variveis de memria e matrizes so
restauradas. A extenso .MEM atribuda aos arquivos de varivel de memria.

MEMO NomeCampoMemo Especifica o campo Memo de onde as variveis de memria e
matrizes so restauradas.

ADDITIVE Evita que qualquer varivel de memria ou matriz atualmente em memria seja
apagada. Se ao nmero de variveis ou matrizes que estiverem sendo acrescentadas com
ADDITIVE soma-se o nmero de variveis existentes, excedendo o limite de varivel de memria,
o Visual FoxPro trar o mximo possvel de variveis e matrizes para a memria, a partir do
arquivo de varivel de memria ou do campo Memo.

Se voc restaurar uma varivel de memria ou matriz, cujo nome seja igual ao de uma varivel de
memria ou matriz existente, o valor da varivel de memria ou matriz existente ser sobrescrito
com o valor da varivel de memria ou matriz restaurada.
Comentrios

Quando RESTORE FROM emitido em um programa, todas as variveis de memria e matrizes
PUBLIC e PRIVATE so restauradas como PRIVATE. J as variveis de memria e matrizes
LOCAL so restauradas como LOCAL. Se RESTORE for emitido na janela Comando, as variveis
de memria e matrizes PUBLIC e PRIVATE sero restauradas como PUBLIC; as variveis de
memria e matrizes LOCAL so restauradas como LOCAL.

RESTORE FROM limpa da memria as variveis de memria ou matrizes existentes no momento,
a menos que voc inclua a palavra-chave ADDITIVE. RESTORE FROM no afeta as variveis de
memria do sistema.

Observe que as variveis de tipo de objeto no podem ser restauradas a partir de um arquivo de
varivel ou campo Memo.

RESTORE FROM, exemplo do comando

No exemplo a seguir, duas variveis so criadas. Elas so salvas em um arquivo varivel e
restauradas sem eliminar as variveis existentes.

gnVal1 = 50
gcVal2 = 'Al'
SAVE TO temp
CLEAR MEMORY

gdVal3 = DATE( )
RESTORE FROM temp ADDITIVE
CLEAR
DISPLAY MEMORY LIKE g*


RESTORE SCREEN, comando


Restaura a janela principal do Visual FoxPro ou uma janela definida pelo usurio salva
anteriormente no buffer da tela, em uma varivel de memria ou em um elemento de matriz.

Sintaxe

RESTORE SCREEN
[FROM NomeVarMem]



Argumentos

FROM NomeVarMem Especifica o nome de uma varivel de memria ou elemento de matriz do
qual voc deseja restaurar a imagem da tela ou da janela.



Comentrios

Utilize SAVE SCREEN para colocar a janela principal do Visual FoxPro ou janela definida pelo
usurio atual no buffer da tela, em uma varivel de memria ou em um elemento de matriz.

As variveis de memria ou elementos de matriz que contm imagens de telas ou de janelas
armazenadas apresentam um tipo de dado S quando so visualizados com DISPLAY ou LIST
MEMORY. A janela principal do Visual FoxPro ou as janelas definidas pelo usurio salvas em
variveis de memria ou elementos de matriz podem tambm ser salvas em arquivos de variveis de
memria com SAVE TO e restauradas com RESTORE FROM.

Se emitido sem a clusula FROM, RESTORE SCREEN restaura a janela principal do Visual
FoxPro ou janela definida pelo usurio a partir do buffer de tela.





























RESTORE WINDOW, comando


Restaura para a memria as definies e os status de janelas salvos em um arquivo de janela ou
campo Memo.

Sintaxe

RESTORE WINDOW ListaNomesJanelas | ALL
FROM NomeArquivo | FROM MEMO NomeCampoMemo



Argumentos

ListaNomesJanelas Especifica uma ou mais janelas a serem restauradas. Separe os nomes das
janelas com vrgulas.

ALL Restaura todas as definies de janelas no arquivo de janela ou campo Memo.

FROM NomeArquivo Especifica o arquivo de janela a partir do qual as janelas so restauradas. Os
arquivos de janela tm a extenso .WIN. Se for atribuda outra extenso ao arquivo quando ele for
salvo, voc dever inclu-la em NomeArquivo.

FROM MEMO NomeCampoMemo Especifica o campo Memo a partir do qual as janelas so
restauradas.



Comentrios

Utilize SAVE WINDOW para armazenar as definies de janelas em um arquivo de janela ou em
um campo Memo.

As janelas na memria com nomes iguais aos das que so restauradas sero sobrescritas. O status de
uma janela (oculto, ativo, entre outros), quando ela salva, ser preservado quando ela for
restaurada.


RESTORE WINDOW, exemplo da comando

No exemplo a seguir, uma janela denominada wOutput1 definida e salva como uma varivel.
Todas as janelas so limpas e a janela denominada wOutput1 restaurada e ativada.

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Sada' ;
CLOSE FLOAT GROW SHADOW ZOOM
SAVE WINDOW wOutput1 TO temp
CLEAR WINDOWS
RESTORE WINDOW wOutput1 FROM temp
ACTIVATE WINDOW wOutput1
WAIT "A janela wOutput1 foi restaurada" WINDOW
RELEASE WINDOW wOutput1











RESUME, comando


Continua a execuo de um programa interrompido.

Sintaxe

RESUME



Comentrios

Utilize SUSPEND para interromper a execuo de um programa. O programa ser reiniciado a
partir da linha onde a execuo foi interrompida.

SUSPEND e RESUME so excelentes ferramentas de depurao. Voc pode interromper um
programa para examinar o status atual do ambiente do Visual FoxPro, incluindo definies de
menus, barras de menus, janelas ou variveis de memria.

Importante Para evitar que os comandos que so executados quando um programa interrompido
interfiram na sada do programa subseqente, emita CLEAR para limpar a janela principal do
Visual FoxPro ou a janela ativa definida pelo usurio antes de retomar a execuo do programa.







RETRY, comando


Executa novamente o comando anterior.

Sintaxe

RETRY



Comentrios

RETRY retorna o controle para o programa de chamada e executa novamente a ltima linha
executada no programa. A diferena entre RETRY e RETURN que RETURN executa a linha
seguinte no programa de chamada.

RETRY til nas rotinas de gerenciamento de erros. utilizado freqentemente para executar
novamente um comando at que uma funo de bloqueio de arquivo ou de registro consiga fazer o
bloqueio. Voc pode utilizar SET REPROCESS para controlar as tentativas da funo de bloqueio.
Prefere-se SET REPROCESS na maioria das situaes de rede.










RETURN, comando


Retorna o controle do programa para o programa que originou a chamada.

Sintaxe

RETURN [eExpresso | TO MASTER | TO NomeProcedimento]



Argumentos

eExpresso Especifica uma expresso retornada para o programa que originou a chamada. Se voc
omitir RETURN ou a expresso de retorno, verdadeiro (.T.) ser retornado automaticamente para o
programa de chamada.

TO MASTER Retorna o controle para o programa de chamada de nvel mais alto.

TO NomeProcedimento Especifica o programa para o qual o controle retornado.



Comentrios

RETURN finaliza a execuo de um programa, procedimento ou funo e retorna o controle para o
programa que originou a chamada, o programa que originou a chamada de nvel mais alto, outro
programa ou a janela Comando.

O Visual FoxPro libera variveis de memria PRIVATE quando RETURN executado.

Normalmente, RETURN colocado no fim de um programa, procedimento ou funo para retornar
o controle para um programa de nvel mais alto. No entanto, um RETURN implcito ser executado
se voc omitir esse comando.


RETURN, exemplo do comando

No exemplo a seguir, a funo longdate retorna uma seqncia de caracteres que adequada para a
impresso a partir de uma data.

SET CENTURY ON
? longdate({02/16/95}) && Exibe quinta-feira, 16 de fevereiro, 1995

FUNCTION longdate
PARAMETER mdate
RETURN CDOW(mdate) + ', ' + MDY(mdate)














RGB( ), funo


Retorna um nico valor de cor a partir de um conjunto de componentes das cores vermelha, verde e
azul.

Sintaxe

RGB(nValorVermelho, nValorVerde, nValorAzul)



Argumentos

nValorVermelho Especifica a intensidade do componente de cor vermelha. nValorVermelho pode
variar de 0 a 255. 0 a menor intensidade de cor; 255 a maior intensidade de cor.

nValorVerde Especifica a intensidade do componente de cor verde. nValorVerde pode variar de 0
a 255.

n nValorAzul Especifica a intensidade do componente de cor azul. nValorAzul pode variar de 0 a
255.



Comentrios

O valor retornado por RGB( ) pode ser utilizado para definir as propriedades de cores, como
BackColor e ForeColor.




RGBSCHEME( ), funo


Retorna uma lista de par de cores RGB ou par de cores RGB a partir de um esquema de cores
especificado.

Sintaxe

RGBSCHEME(nNmero EsquemaCores [, nPosioParesCores])



Tipos de retorno

Caractere

Argumentos

nNmeroEsquemaCores Especifica o nmero do esquema de cores para o qual voc deseja
completar uma listagem de cores RGB. RGBSCHEME( ) retorna 10 pares de cores RGB.

nPosioPareCores Retorna um nico par de cores RGB a partir de um esquema de cores.
nPosioParesCores especifica a posio do par de cores RGB no esquema de cores. Por exemplo,
se nPosioParesCores for 4, o quarto par de cores RGB ser retornado.



Comentrios

Utilize SCHEME( ) para retornar uma lista de par de cores ou um par de cores tradicional a partir
de um esquema de cores. O par de cores RGB utiliza valores numricos para especificar as cores.
Os pares de cores tradicionais utilizam letras para especificar as cores.


RGBSCHEME( ), exemplo da funo

O exemplo a seguir exibe o terceiro par de cores RGB a partir do esquema de cores nmero 4.

CLEAR
? RGBSCHEME(4,3)
























RIGHT( ), funo


Retorna o nmero especificado dos caracteres extrema direita de uma seqncia de caracteres.

Sintaxe

RIGHT(cExpresso, nCaracteres)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres cujos caracteres extrema direita so retornados.

nCaracteres Especifica o nmero de caracteres retornados da expresso de caracteres. RIGHT( )
retornar toda a expresso de caracteres se nCaracteres for maior do que o comprimento de
cExpresso. RIGHT( ) retornar uma seqncia vazia se nCaracteres for negativa ou 0.



Comentrios

Os caracteres so retornados a partir do ltimo caractere direita seguido por um nmero
especificado de caracteres.


RIGHT( ), exemplo de funo

CLEAR
? RIGHT('Redmond, WA', 2) && Exibe WA






























RIGHTC( ), funo


Retorna o nmero especificado dos caracteres extrema direita de uma seqncia de caracteres.

Sintaxe

RIGHTC(cExpresso, nCaracteres)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres cujos caracteres extrema direita so retornados.

nCaracteres Especifica o nmero de caracteres retornados da expresso de caracteres. RIGHTC( )
retornar toda a expresso de caracteres se nCaracteres for maior do que o comprimento de
cExpresso. RIGHTC( ) retornar uma seqncia vazia se nCaracteres for negativa ou 0.



Comentrios

RIGHTC( ) destina-se a expresses que contm caracteres de byte duplo. Se a expresso contiver
apenas caracteres de byte nico, RIGHTC( ) ser equivalente a RIGHT( ).

Os caracteres so retornados partindo do ltimo caractere direita e seguido por nCaracteres.
































RLOCK( ), funo


Tenta bloquear o(s) registro(s) de uma tabela.

Sintaxe

RLOCK([nreaTrabalho | cAliasTabela]
| [cListaNmerosRegistro, nreaTrabalho | cAliasTabela])



Tipos de retorno

Lgico

Argumentos

nreaTrabalho | cAliasTabela Especifica o nmero da rea de trabalho ou alias de tabela para
uma tabela aberta em outra rea de trabalho. Se voc no especificar a rea de trabalho ou alias,
RLOCK( ) ir tentar bloquear o registro atual da tabela na rea de trabalho selecionada no
momento.

cListaNmerosRegistro Especifica que RLOCK( ) tenta bloquear vrios registros. A expresso de
caractere cListaNmerosRegistro especifica um ou mais nmeros de registro, separados por
vrgulas, que RLOCK( ) tenta bloquear. Por exemplo, para tentar bloquear os primeiros quatro
registros de uma tabela, cListaNmerosRegistro deve conter 1, 2, 3, 4.

Para bloquear vrios registros, voc deve ativar SET MULTILOCKS e incluir o nmero da rea de
trabalho (nreaTrabalho) ou o alias (cAliasTabela) da tabela onde tentou bloquear vrios registros.

Tambm possvel bloquear vrios registros movendo o ponteiro do registro at aquele que
pretende bloquear. A seguir, emita RLOCK( ) ou LOCK( ) e repita este processo para registros
adicionais.

No Visual FoxPro, voc pode especificar 0 como um nmero de registro. Esta especificao permite
que voc bloqueie o cabealho da tabela.

Importante Mantenha o cabealho da tabela bloqueado pelo menor tempo possvel, pois outros
usurios no podero acrescentar registros tabela enquanto aquele estiver bloqueado.



Para liberar o bloqueio do cabealho da tabela, utilize UNLOCK RECORD 0, UNLOCK ou
UNLOCK ALL.

Se o bloqueio de todos os registros especificados em cListaNmerosRegistro for bem-sucedido,
RLOCK( ) retornar verdadeiro (.T.). Se um ou mais registros especificados em
cListaNmerosRegistro no puderem ser bloqueados, RLOCK( ) retornar falso (.F.) e nenhum
registro ser bloqueado. Em ambos os casos, os bloqueios de registros existentes permanecem na
mesma posio. O bloqueio de vrios registros um processo adicional o posicionamento de
bloqueios adicionais no libera os bloqueios existentes.

Quanto ao desempenho, sempre mais rpido bloquear a tabela inteira do que bloquear at mesmo
um pequeno nmero de registros.




Comentrios

RLOCK( ) idntico a LOCK( ).

Se o(s) bloqueio(s) for(em) bem-sucedido(s), RLOCK( ) retornar verdadeiro (.T.). Os registros
bloqueados encontram-se disponveis para o acesso de leitura e gravao pelo usurio que
posicionou os bloqueios. J para os demais usurios da rede, a disponibilidade de acesso somente
para leitura.

A execuo de RLOCK( ) no garante que a(s) tentativa(s) de bloqueio de registro tenha(m) sido
bem-sucedida(s). Um bloqueio de registro no pode ser posicionado em um registro ou em uma
tabela j bloqueados por outro usurio. Se, por qualquer motivo, o(s) bloqueio(s) de registro no
puder(em) ser posicionado(s), RLOCK( ) retornar falso (.F.).

Como padro, RLOCK( ) tenta bloquear um registro uma vez. Utilize SET REPROCESS para
tentar novamente e de forma automtica um bloqueio de registro quando a primeira tentativa falhar.
SET REPROCESS controla o nmero de tentativas de bloqueio ou sua durao quando a tentativa
de bloqueio inicial malsucedida. Para obter maiores informaes sobre SET REPROCESS e
bloqueio de tabelas, consulte SET REPROCESS.

SET MULTILOCKS determina se voc pode bloquear vrios registros em uma tabela. Se SET
MULTILOCKS estiver desativado (o padro), voc s poder bloquear um nico registro da tabela.
Se SET MULTILOCKS estiver ativado, voc poder bloquear vrios registros da tabela. Para obter
maiores informaes, consulte SET MULTILOCKS.

Um registro de tabela s pode ser desbloqueado pelo usurio 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 especfica ou em todas. Para obter maiores informaes, 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 so
liberados.

Para fechar tabelas, utilize USE, CLEAR ALL ou CLOSE DATABASES.

Para obter maiores informaes sobre o bloqueio de registros e arquivos e o compartilhamento de
tabelas em uma rede, consulte o captulo 17, Programando para acesso compartilhado, no Guia do
Desenvolvedor.


RLOCK( ), exemplo de funo

O exemplo a seguir bloqueia e desbloqueia os quatro primeiros registros nas tabelas customer e
employee.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
SET REPROCESS TO 3 AUTOMATIC
STORE '1,2,3,4' TO gcRecList
gcOldExc = SET('EXCLUSIVE')
SET EXCLUSIVE OFF
SELECT 0
USE employee && Abre a tabela Employee
SELECT 0
USE 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 employee
UNLOCK IN customer
UNLOCK IN employee

SET EXCLUSIVE &gcOldExc


























ROUND( ), funo


Retorna uma expresso numrica arredondada para um nmero especificado de casas decimais.

Sintaxe

ROUND(nExpresso, nCasasDecimais)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica a expresso numrica cujo valor ser arredondado.

nCasasDecimais Especifica o nmero de casas decimais para o arredondamento de nExpresso.

Se nCasasDecimais for negativo, ROUND( ) retornar um nmero completo contendo um nmero
de zeros igual a nCasasDecimais esquerda da vrgula decimal. Por exemplo, se nCasasDecimais
for igual a 2, o primeiro e o segundo dgitos esquerda da vrgula decimal tero o valor igual a 0.



Comentrios

O valor que ROUND( ) retorna tem o mesmo nmero de casas decimais de nCasasDecimais.
ROUND( ) ignora o nmero de casas decimais especificado por SET DECIMALS.


ROUND( ), exemplo de funo

SET DECIMALS TO 4
SET FIXED ON && Ajuste o display
CLEAR

? 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.0000

SET FIXED OFF && Restaura padres de incializao

SET DECIMALS TO 2














RTOD( ), funo


Converte radianos em graus.

Sintaxe

RTOD(nExpresso)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica a expresso numrica representando radianos que RTOD( ) converte em
graus.



Comentrios

RTOD( ) converte o valor (em radianos) de uma expresso numrica em um valor equivalente em
graus.

RTOD( ) til ao se trabalhar com as funes trigonomtricas COS( ), SIN( ) e TAN( ) do Visual
FoxPro.

Utilize DTOR( ) para converter graus em radianos.

RTOD( ), exemplo de funo

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






























RTRIM( ), funo


Retorna uma seqncia de caracteres que resulta da remoo de espaos direita de uma expresso
de caracteres.

Sintaxe

RTRIM(cExpresso)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caractere da qual os espaos direita foram removidos.



Comentrios

RTRIM( ) pode ser utilizada para confirmar a remoo dos espaos dos dados digitados por um
usurio. RTRIM( ) idntica a TRIM( ).


RTRIM( ), exemplo de funo

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
CLEAR
? '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





Argumentos

ComandoMS-DOS Especifica o comando do MS-DOS a ser executado. Consulte a documentao
do MS-DOS para obter maiores informaes sobre os comandos disponveis.

NomePrograma Especifica o programa ou o aplicativo a ser executado. Poder ser especificado um
programa ou aplicativo baseado no Windows ou no MS-DOS.

/N [K] Especifica NOWAIT. Inclua a letra N (no substitua N por um valor numrico nem inclua
K) para executar outro aplicativo do Windows.

Comentrios

possvel emitir RUN de dentro da janela Comando ou de outro programa.

Importante Para utilizar RUN, voc precisa ter o arquivo de sistema operacional
COMMAND.COM no diretrio atual ou esse arquivo dever estar localizado onde o parmetro MS-
DOS COMSPEC possa encontr-lo. Para obter maiores informaes sobre COMSPEC, consulte a
documentao do MS-DOS.



Cuidado No utilize RUN para executar programas de reorganizao de disco, como o CHKDSK,
a partir do Visual FoxPro. Esses programas modificam o contedo do seu disco de maneira a
impedir o bom funcionamento do Visual FoxPro.



RUN e Visual FoxPro Quando RUN utilizado para executar programas fora do Visual FoxPro,
ele pesquisa os programas de forma um pouco diferente do FoxPro para MS-DOS.

Se o programa especificado em RUN no possuir uma extenso, o Visual FoxPro procurar
primeiro, no caminho do MS-DOS, um arquivo PIF (Program Information File) com o nome que
voc indicou. Esse arquivo permite a execuo de um programa no Windows no Windows. Voc
poder especificar parmetros para o programa, ou seja, se ele executado em uma janela ou na tela
inteira, o total de memria alocado para o programa etc.

Se o PIF for encontrado, o programa nele especificado ser executado com os parmetros PIF. Caso
contrrio, ser feita uma procura no caminho do MS-DOS para encontrar um arquivo executvel
com o nome que voc indicar.

Quando um PIF no encontrado, o Visual FoxPro utiliza o FOXRUN.PIF, um PIF instalado no
diretrio do Visual FoxPro. O FOXRUN.PIF configurado para executar o programa em uma
janela. possvel modificar o FOXRUN.PIF para que execute programas com outra configurao.

FOXRUN.PIF O FOXRUN.PIF permite a execuo de programas e comandos do MS-DOS e do
Windows a partir do Visual FoxPro. O FOXRUN.PIF deve estar no mesmo diretrio que VFP.EXE
no Visual FoxPro.

/N significa NOWAIT. Inclua a letra N (no substitua N por um valor numrico nem inclua K) para
executar outro aplicativo do Windows. Por exemplo, a instruo a seguir abre o acessrio Mapa de
caracteres do Windows:

! /N CHARMAP.EXE



No exemplo a seguir, o Selecionador de cores aberto no Painel de controle do Windows:

! /N CONTROL COLOR



Um aplicativo do Windows executado com RUN /N ou ! /N apresenta o mesmo comportamento que
quando aberto atravs do Gerenciador de Programas ou do Gerenciador de Arquivos. Voc pode
alternar entre o aplicativo e o Visual FoxPro ou o FoxPro para Windows utilizando as operaes
padro do Windows.

Para especificar como o aplicativo do Windows ser aberto, inclua um valor numrico opcional
imediatamente aps /N. No inclua espaos entre /N e o valor numrico. A tabela a seguir lista os
valores numricos que podem ser includos e descreve o estado do aplicativo do Windows quando
ele aberto.

Valor Atributos do aplicativo

1 Ativo e tamanho normal
2 Ativo e minimizado
3 Ativo e maximizado
4 Inativo e tamanho normal
7 Inativo e minimizado


Executando programas do MS-DOS no Visual FoxPro Como padro, o FOXRUN.PIF executa o
programa do MS-DOS externo especificado em uma janela. Enquanto o programa ou comando do
MS-DOS executado, o ttulo da janela Executar Comando do FoxPro. No Visual FoxPro, a
janela Executar Comando do FoxPro fechada aps a execuo do comando ou do programa
externo.
Voc pode utilizar o editor PIF do Windows para personalizar o FOXRUN.PIF. O PIF pode ser
editado para especificar se a janela Executar Comando do Visual FoxPro Inativo deve ser mantida
aberta ou fechada (padro no Visual FoxPro) usando a caixa de verificao Fechar janela ao sair.
Tambm possvel abrir programas externos em uma tela inteira selecionando Tela inteira, Alocar
memria para o programa, etc.

Consideraes de memria Como padro, o FOXRUN.PIF aloca um mnimo de 256K de memria
para a execuo de um comando ou programa externo. Se voc no tiver 256K de memria
convencional livre, o Visual FoxPro exibir uma mensagem de erro. Para corrigir tal mensagem,
experimente um ou mais dos procedimentos a seguir:

Feche os aplicativos e arquivos para liberar memria adicional.
Edite o FOXRUN.PIF para reduzir o total exigido de memria na caixa de texto KB
Requerido.



Se o comando externo exigir mais de 256K, o MS-DOS exibir uma mensagem de erro na janela
Executar Comando do Visual FoxPro. Para corrigir tal erro, edite o FOXRUN.PIF para aumentar o
total de memria necessrio na caixa de texto KB Requerido.





























SAVE SCREEN, comando


Salva uma imagem da janela principal do Visual FoxPro ou de uma janela ativa definida pelo
usurio no buffer de tela, em uma varivel de memria ou em um elemento de matriz.

Sintaxe

SAVE SCREEN [TO NomeVar]



Argumentos

TO NomeVar] Especifica a varivel de memria ou o elemento de matriz na qual a imagem da
janela ou da tela salva.



Comentrios

Utilize RESTORE SCREEN para exibir novamente imagens salvas no buffer de tela, em uma
varivel de memria ou em um elemento de matriz.

Quando visualizadas com DISPLAY ou LIST MEMORY, as variveis de memria ou os elementos
de matriz, que contm uma imagem da janela principal do Visual FoxPro ou de uma janela definida
pelo usurio, tm o tipo de dado S.

Se emitido sem a clusula TO NomeVarMem, SAVE SCREEN salva a janela principal do Visual
FoxPro ou a janela definida pelo usurio no buffer de tela.
SAVE WINDOWS, comando


Salva todas as definies de janelas ou as definies de janelas especificadas em um arquivo de
janela ou campo memo.

Sintaxe

SAVE WINDOWS ListaNomesJanelas | ALL
TO NomeArquivo | TO MEMO NomeCampoMemo



Argumentos

ListaNomesJanelas Especifica uma ou mais janelas que devem ser salvas. Separe os nomes das
janelas com vrgulas.

ALL Salva todas as definies de janelas no arquivo de janela ou no campo memo.

TO NomeArquivo Especifica o arquivo de janela no qual as definies de janelas so salvas.

Se voc no especificar uma extenso ao nomear o arquivo, ser atribuda a extenso padro .WIN.
Se for especificada uma extenso diferente, ao serem salvas as definies de janelas em um arquivo,
dever incluir a extenso, quando restauradas no arquivo.


TO MEMO NomeCampoMemo Especifica o campo memo no qual as definies de janelas so
salvas. A tabela que contm o campo memo deve estar aberta, mas no necessrio que ela esteja
na rea de trabalho atualmente selecionada. Para salvar definies de janelas em uma tabela aberta
em outra rea de trabalho, inclua o alias da tabela quando especificar o campo memo.



Comentrios

Utilize RESTORE WINDOW para restaurar definies de janelas de um arquivo de janela ou de
um campo memo. O status de cada janela tambm 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 definio da janela salva no
arquivo TEMP.WIN. Todas as janelas so limpas e wOutput1 restaurada do arquivo e ativada.

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Sada' ;
CLOSE FLOAT GROW SHADOW ZOOM
ACTIVATE WINDOW wOutput1
@ 1,1 SAY 'Este o contedo da janela'
SAVE WINDOWS wOutput1 TO temp
CLEAR WINDOWS
WAIT WINDOW 'A janela foi salva - Pressione uma tecla'

RESTORE WINDOW wOutput1 FROM temp
ACTIVATE 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 satisfaa as condies especificadas.

Sintaxe

SCAN [NOOPTIMIZE]
[Escopo] [FOR lReferncia1] [WHILE lReferncia2]
[Comandos]
[LOOP]
[EXIT]
ENDSCAN



Argumentos

NOOPTIMIZE Impede a otimizao de Rushmore de SCAN.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no Captulo 15, Otimizando Aplicativos, no Guia do Desenvolvedor.

Escopo Especifica um intervalo de registros a ser examinado. Apenas os registros dentro deste
intervalo sero examinados. As clusulas de escopo so: ALL, NEXT nRegistros, RECORD
nNmeroRegistro e REST. Para obter maiores informaes sobre clusulas de escopo, consulte
Clusulas de escopo.

O escopo padro para SCAN todos os registros (ALL)

FOR lReferncia1 Executa comandos apenas para os registros para os quais lReferncia1 resulta
em verdadeiro (.T.) A incluso da clusula FOR permite filtrar os registros que voc no deseja
examinar.

Rushmore otimizar uma consulta criada com SCAN ... FOR se lReferncia1 for uma expresso
otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no Captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.

WHILE lReferncia2 Especifica uma condio pela qual os comandos sero executados desde que
lReferncia2 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.



Comentrios

O comando SCAN avana automaticamente o ponteiro do registro para o prximo registro que
satisfaa as condies especificadas e executa o bloco de comandos.

Voc pode colocar comentrios na mesma linha depois de ENDSCAN. Os comentrios so
ignorados durante a compilao e a execuo do programa.


SCAN ... ENDSCAN, exemplo do comando

O exemplo a seguir utiliza um loop SCAN ... ENDSCAN para exibir todas as empresas na Sucia.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
UTILIZE customer && Abra a tabela Customer
CLEAR

SCAN FOR UPPER(country) = 'SWEDEN'
? contato, empresa, cidade
ENDSCAN













SCATTER, comando


Copia dados do registro atual para um conjunto de variveis de memria 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 variveis
de memria ou para a matriz. Todos os campos sero 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 variveis de memria ou para uma matriz incluindo a clusula LIKE ou EXCEPT ou ambas.
Se incluir LIKE Estrutura, os campos que correspondem Estrutura sero transferidos para as
variveis de memria ou a matriz. Se incluir EXCEPT Estrutura, todos os campos, exceto os que
correspondem Estrutura, sero transferidos para as variveis de memria ou a matriz.

Estrutura suporta caracteres curinga. Por exemplo, para transferir todos os campos que comeam
com as letras A e P para as variveis de memria ou a matriz, utilize:

SCATTER FIELDS LIKE A*,P* TO myarray



A clusula LIKE pode ser combinada com a clusula EXCEPT:

SCATTER FIELDS LIKE A*,P* EXCEPT PARTNO* TO myarray

MEMO Especifica que a lista de campos inclui um ou vrios campos memo. Como padro, os
campos memo so ignorados em SCATTER.

Para copiar campos memo grandes para variveis de memria ou para uma matriz, necessrio que
haja memria suficiente. O Visual FoxPro ir gerar uma mensagem de erro caso no haja memria
suficiente. Se um campo memo for muito grande para caber na memria, nem ele ou qualquer outro
campo memo da lista ser copiado. Se um campo memo no for copiado, a sua varivel de memria
ou o seu elemento de matriz estar definido como falso (.F.).

TO NomeMatriz Especifica a matriz para a qual o contedo do registro copiado. Comeando do
primeiro campo, SCATTER copia em ordem seqencial o contedo de cada campo para cada
elemento da matriz.

Os elementos de matriz extras permanecero inalterados se o nmero de elementos da matriz
especificada for maior do que o nmero de campos. Caso a matriz no exista ou caso o nmero de
elementos nela contidos seja menor do que o nmero de campos, uma nova matriz ser criada
automaticamente. Os elementos de matriz tm o mesmo tamanho e os mesmos tipos de dados que
os campos correspondentes.

TO NomeMatriz BLANK Cria uma matriz com elementos vazios que tm o mesmo tamanho e o
mesmo tipo dos campos da tabela.

MEMVAR Copia os dados para um conjunto de variveis de memria em vez de copi-los para
uma matriz. SCATTER cria uma varivel de memria para cada campo da tabela e preenche cada
uma com dados do campo correspondente no registro atual, atribuindo varivel o mesmo nome,
tamanho e tipo do campo.

Uma varivel de memria ser criada para cada campo da lista de campos se uma lista de campos
estiver includa.

Anteceda o nome da varivel de memria com o qualificador M. para fazer referncia a uma
varivel de memria que tenha o mesmo nome de um campo da tabela atual.

Importante No inclua TO com MEMVAR. O Visual FoxPro criar uma matriz denominada
MEMVAR se voc incluir TO.

MEMVAR BLANK Cria um conjunto de variveis de memria 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 includa, ser criada uma varivel de memria para cada campo da lista.

NAME NomeObjeto Cria um objeto cujas propriedades tm o mesmo nome dos campos da tabela.
Os valores de cada propriedade do objeto so o contedo dos campos da tabela. Propriedades no
so criadas para campos memo ou gerais da tabela.

Para fazer referncia 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 customer
SCATTER NAME customer

? customer.company && Retorna o valor da tabela
? M.customer.company && Retorna o valor da propriedade do objeto



Comentrios

SCATTER e COPY TO ARRAY so semelhantes. COPY TO ARRAY copia vrios registros para
uma matriz, enquanto que SCATTER copia apenas um registro para uma matriz ou para um
conjunto de variveis de memria. SCATTER criar automaticamente a matriz ou as variveis de
memria, caso elas ainda no existam.

Utilize GATHER para copiar elementos de matriz ou variveis de memria para os registros da
tabela.


SCATTER, exemplo dos comandos

Exemplo 1
Este exemplo utiliza SCATTER para criar um conjunto de variveis com base nos campos na tabela
de teste. Em seguida, a cada campo atribudo um valor e um novo registro em branco adicionado
tabela. Os dados so copiados tabela, utilizando-se o comando GATHER.

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))

SCATTER MEMVAR BLANK
m.Object="Caixa"
m.Color="Vermelho"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE



Exemplo 2

Este exemplo utiliza SCATTER junto clusula NAME para criar um objeto com propriedade, com
base nos campos na tabela. s propriedades do objeto so atribudos valores e um novo registro em
branco adicionado tabela. Os dados so copiados para o novo registro, utilizando-se GATHER
com a clusula NAME.

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))

SCATTER NAME oTest BLANK
oTest.Object="Caixa"
oTest.Color="Vermelho"
oTest.SqFt=12.5
APPEND BLANK
GATHER NAME oTest
RELEASE oTest
BROWSE


SCHEME( ), funo


Retorna uma lista de par de cores ou um par de cores nico, a partir de um esquema de cores
especificado.

Sintaxe

SCHEME(nNmeroEsquema [, nNmeroParCores])



Tipos de retorno

Caractere

Argumentos

nNmeroEsquema Especifica o nmero do esquema de cores para o qual voc deseja uma lista de
par de cores completa. SCHEME( ) retorna dez pares de cores.

nNmeroParCores Especifica a posio de um par de cores no esquema de cores e SCHEME( )
retorna apenas este par de cores. Por exemplo, se nNmeroParCores for 4, SCHEME( ) retornar o
quarto par de cores a partir do esquema de cores.



SCHEME( ), exemplo da funo

O exemplo a seguir retorna o terceiro par de cores, a partir do esquema de cores nmero 4:
? SCHEME(4,3)
SCOLS( ), funo


Retorna o nmero de colunas disponveis na janela principal do Visual FoxPro.

Sintaxe

SCOLS( )



Tipos de retorno

Numrico

Comentrios

O valor retornado por SCOLS( ) depende do modo de exibio atual. Para alterar o modo de
exibio, 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 usurio.

Sintaxe

SCROLL nLinha1, nColuna1, nLinha2, nColuna2, nLinhasRoladas
[, nColunasRoladas]



Argumentos

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 usurio. 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 expresso numrica nLinhasRoladas seja positiva, o Visual FoxPro ir rolar
este nmero de linhas para cima. Caso nLinhasRoladas seja negativa, o Visual FoxPro ir rolar este
nmero 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 expresso numrica nColunasRoladas seja positiva, o Visual
FoxPro ir rolar este nmero de colunas para a direita. Caso nColunasRoladas seja negativa, o
Visual FoxPro ir rolar este nmero 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+/B
WAIT WINDOW 'Pressione a tecla para rolar para o canto superior esquerdo'
SCROLL 0, 0, 5, 5, -2, 1




















SEC( ), funo

Retorna a parte de segundos de uma expresso DateTime.

Sintaxe

SEC(tExpresso)



Tipos de retorno

Numrico

Argumentos

tExpresso Especifica a expresso DateTime a partir da qual SEC( ) retorna os segundos. Se
tExpresso contiver apenas uma data e no uma hora, o Visual FoxPro adicionar a hora padro de
meia-noite (12:00:00 A.M.) em tExpresso.


SEC( ), exemplo da funo

O exemplo a seguir exibe a parte de segundos da hora atual e a parte de segundos de uma hora
especfica.

CLEAR
? SEC(DATETIME( ))
? SEC({10:42:16am}) && Exibe 16




SECONDS( ), funo


Retorna o nmero de segundos decorridos desde a meia-noite.

Sintaxe

SECONDS( )



Tipos de retorno

Numrico

Comentrios

SECONDS( ) retorna um valor numrico no formato decimal, com uma resoluo de 1 milisegundo.
Se voc estiver executando o Windows NT, a resoluo ser 10 milisegundos.

SECONDS( ), exemplo da funo

CLEAR
? SECONDS( )
? SECONDS( )/(60 * 60)








SEEK( ), funo


Localiza uma tabela indexada para a primeira ocorrncia de um registro cuja chave de ndice
corresponde expresso especificada. Retorna um valor lgico indicando se a busca foi realizada
com sucesso.

Sintaxe

SEEK(eExpresso [, nreaTrabalho | cAliasTabela
[, nNmerondice | cIDXNomeArquivondice | cNomeMarca]])



Tipos de retorno

Lgico

Argumentos

eExpresso Especifica a expresso da chave de ndice para a qual voc deseja que SEEK( ) faa a
busca.

nAreaTrabalho Especifica o nmero da rea de trabalho que localizado para a chave de ndice.

cAliasTabela Especifica que o alias da tabela localizado.

Se voc omitir nreaTrabalho e cAliasTabela, a tabela na rea de trabalho selecionada atualmente
ser localizada.

nNmerondice Especifica o nmero do arquivo de ndice ou marca utilizado para localizar a
chave de ndice. nNmerondice refere-se aos arquivos de ndice conforme eles so listados em
USE ou SET INDEX. Os arquivos .IDX abertos so numerados primeiro na ordem que aparecem
em USE ou SET INDEX. As marcas no arquivo .CDX estrutural (se existir) so ento numeradas na
ordem em que so criadas. Finalmente, as marcas em qualquer arquivo .CDX aberto independente
so numeradas na ordem em que foram criadas. Para obter maiores informaes sobre numerao
de ndice, consulte SET ORDER.

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

Observao O arquivo .IDX ter prioridade se existir arquivo .IDX e nomes de marcas duplicados.



Comentrios

Voc pode utilizar SEEK( ) apenas com uma tabela com uma definio de ordem de ndice e voc
pode localizar apenas uma chave de ndice. A correspondncia deve ser exata, a menos que SET
EXACT esteja definido para OFF.

Se houver uma correspondncia, SEEK( ) retornar verdadeiro (.T.) e o ponteiro do registro mudar
para o registro correspondente. Se no houver correspondncia, SEEK( ) retornar falso (.F.) e o
ponteiro do registro mudar para o final do arquivo. A emisso de SEEK( ) equivalente emisso
de SEEK e FOUND( ) em seguida.

Se voc omitir os argumentos nNmerondice, IDXNomeArquivondice e cNomeMarca, SEEK( )
utilizar a marca de ndice ou ndice de controle principal para procurar a chave de ndice.


SEEK( ), exemplo da funo

CLOSE DATABASES
OPEN 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 ocorrncia de um registro cuja chave de ndice corresponde a
uma expresso geral, em seguida move o ponteiro de registro ao registro correspondente.

Sintaxe

SEEK eExpresso
[ORDER nNmerondice | IDXNomeArquivondice
| [TAG] NomeMarca [OF CDXNomeArquivo]
[ASCENDING | DESCENDING]]
[IN nAreaTrabalho | cAliasTabela]



Argumentos

eExpresso Especifica a chave de ndice para a qual SEEK faz a busca. eExpresso pode ser nulo.

ORDER nNmerondice Especifica o nmero do arquivo de ndice ou marca que utilizado para
procurar a chave de ndice. nNmerondice refere-se aos arquivos de ndice como esto listados em
USE ou SET INDEX. Os arquivos .IDX abertos so numerados primeiro na ordem em que
aparecem em USE ou SET INDEX. As marcas no arquivo .CDX estrutural (se existir um) so ento
numeradas na ordem em que foram criadas. Finalmente, as marcas em qualquer arquivo .CDX
aberto independente so numeradas na ordem que so criadas. Consulte, SET ORDER para obter
maiores informaes sobre numerao de ndice.

ORDER NomeArquivondiceIDX 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 idnticos existirem em arquivos .CDX abertos independentes, utilize OF
CDXNomeArquivo para especificar o arquivo.CDX que contm a marca.

Observao 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 nreaTrabalho Especifica que o nmero da rea de trabalho da tabela procurado.

IN cAliasTabela Especifica o alias da tabela que procurada.

Se voc omitir IN nreaTrabalho e IN cAliasTabela, a tabela na rea de trabalho atualmente
selecionada ser procurada.



Comentrios

Voc pode utilizar SEEK apenas com tabelas indexadas e pode procurar apenas na chave de ndice.
A correspondncia deve ser exata a menos que SET EXACT seja definido para OFF.

Se SEEK procurar um registro com uma chave de ndice correspondente, RECNO( ) retornar o
nmero de registro do registro correspondente, FOUND( ) retornar verdadeiro (.T.) e EOF( )
retornar falso (.F.).

Se uma chave correspondente no for localizada, RECNO( ) retornar o nmero 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 aps o registro
com a chave de ndice mais prxima. Se SET NEAR estiver off, o ponteiro do registro ser
posicionado no final do arquivo. Em qualquer um dos casos, RECNO() retornar o nmero de
registro do registro mais prximo.


SEEK, exemplo do comando

No exemplo a seguir, customer aberta e indexada no campo company. SEEK utilizado para
localizar a expresso de chave do ndice que corresponde ao valor contido na varivel gcSeekVal.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer ORDER company && Abre a tabela Customer

SET EXACT OFF
STORE 'B' TO gcSeekVal
SEEK gcSeekVal

IF FOUND( )
DISPLAY FIELDS company, contact
ENDIF


SELECT( ), funo


Retorna o nmero da rea de trabalho atualmente selecionada ou da rea de trabalho no utilizada
que possui o nmero mais alto.

Sintaxe

SELECT([ 0 | 1 | cAliasTabela ])



Tipos de retorno

Numrico

Argumentos

0 Especifica que SELECT( ) retornar o nmero da rea de trabalho atual.

1 Especifica que SELECT( ) retornar a rea de trabalho no utilizada, que possui o nmero mais
alto.

cAliasTabela Especifica o alias da tabela da qual SELECT( ) retornar a rea de trabalho.



Comentrios

SELECT( ) retornar o nmero da rea de trabalho atual se SET COMPATIBLE estiver desativado
(OFF). Se SET COMPATIBLE estiver ativado (ON), SELECT( ) retornar o nmero da rea de
trabalho no utilizada que possui o nmero mais alto.

possvel selecionar (ativar) uma rea de trabalho com SELECT.


SELECT( ), exemplo da funo

CLOSE DATABASES
SET COMPATIBLE ON
OPEN DATABASE (HOME( ) + 'samples\data\testdata')

SELECT 0 && rea de trabalho no usada
USE customer && Abre a tabela Customer

SELECT 0 && rea de trabalho no usada
USE orders && Abre a tabela Orders

CLEAR
? SELECT( ) && Retorna 3, rea de trabalho disponvel mais lenta















SELECT, comando


Ativa a rea de trabalho especificada.

Sintaxe

SELECT nreaTrabalho | cAliasTabela



Argumentos

nreaTrabalho Especifica uma rea de trabalho a ser ativada. Se nreaTrabalho for 0, a rea de
trabalho no utilizada com o menor nmero ser ativada.

cAliasTabela Especifica uma rea de trabalho que contm uma tabela aberta a ser ativada.
cAliasTabela o alias da tabela aberta. Voc tambm pode incluir uma letra de A a J para
cAliasTabela para ativar uma das dez primeiras reas de trabalho.

Comentrios

Como padro, o nmero da rea de trabalho 1 est ativo quando voc inicia o Visual FoxPro.

Observao Os campos nas tabelas abrem em qualquer rea de trabalho e podem ser includos nos
comandos e funes 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 DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
SELECT 1 && rea de trabalho 1
USE customer && Abre a tabela Customer

SELECT 2 && rea de trabalho 2
USE orders && Abre a tabela Orders

SELECT customer && rea de trabalho 1
BROWSE

SELECT B && rea de trabalho 2
BROWSE
















C
CCO
OOM
MMA
AAN
NND
DDO
OOS
SS S
SSE
EET
TT



SET ALTERNATE, comando



Direciona sada de tela ou impressora criada com ?, ??, DISPLAY ou LIST a um arquivo texto.

Sintaxe

SET ALTERNATE ON | OFF
Ou
SET ALTERNATE TO [NomeArquivo [ADDITIVE]]



Argumentos

ON Direciona sada para o arquivo texto.

OFF (Padro) Desativa a sada para o arquivo texto.

TO NomeArquivo Cria o arquivo texto, ao qual atribudo a extenso .TXT padro, a no ser que
voc inclua uma extenso 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 sada no final do arquivo especificado com NomeArquivo. Se ADDITIVE for
omitido, o contedo do arquivo ser sobrescrito.
































SET ASSERTS, comando


Especifica se os comandos ASSERT sero 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.



Comentrios

ASSERTS desativado se o boto Ignorar todos for selecionado na caixa de mensagem exibida
aps uma instruo.










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 padro para SET AUTOSAVE.



Comentrios

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 sesso 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, nDurao]



Argumentos

ON (Padro) Ativa a campainha.

OFF Desativa a campainha.

TO cNomeArquivoWAV, nDurao No Visual FoxPro, possvel 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 seo de sons de seu
arquivo WIN.INI. Se no for possvel localizar o som, o Visual FoxPro ir reproduzir o som padro
especificado pela entrada SystemDefault na seo de sons de seu arquivo WIN.INI. O Visual
FoxPro no reproduz sons se no for possvel localizar o som padro ou se no houver uma entrada
SystemDefault.

Se voc especificar um som de alarme de sistema ou um som em forma de onda , dever incluir
tambm nDurao. Ocorrer um erro de sintaxe se o valor de durao for omitido. O valor de
durao especificado ser ignorado e o som de alarme de sistema ou o som em forma de onda ser
reproduzido na ntegra.



Comentrios

SET BELL ativa ou desativa o som da campainha durante a edio quando voc atingir o final de
um campo ou digitar dados invlidos.


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 espao em disco para o armazenamento de campos Memo.

Sintaxe

SET BLOCKSIZE TO nBytes



Argumentos

nBytes Especifica o tamanho do bloco no qual o espao em disco, para campos Memo, alocado.
Se nBytes for 0, o espao em disco ser alocado em bytes nicos (blocos de 1 byte). Se nBytes for
um inteiro entre 1 e 32, o espao em disco ser alocado em blocos de nBytes bytes multiplicado por
512. Se nBytes for maior do que 32, o espao 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
espao em disco.



Comentrios

O valor padro de SET BLOCKSIZE 64. Para redefinir o tamanho do bloco para um valor
diferente depois da criao 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 sesso 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 (Padro) Evita que os dados de todos os campos sejam passados para um novo registro.

TO [ListaCampos [ADDITIVE]] ListaCampos especifica os campos dos quais sero adiantados
dados. Separa os nomes de campos com vrgulas.

ADDITIVE especifica aos campos da lista de campos que sejam adicionados ao conjunto de
campos atual que est sendo adiantado.

A emisso de SET CARRY TO implicitamente executa SET CARRY ON.

Utilize SET CARRY TO sem ListaCampos para restaurar a definio padro (todos os campos so
adiantados).

Comentrios

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 sesso de edio 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 no seja necessrio digitar novos dados de novo. Observe que o contedo dos
campos do tipo Geral no adiantado.

SET CARRY afeta apenas a tabela aberta na rea de trabalho selecionada no momento.

SET CARRY o escopo para a sesso de dados atual.




















SET CENTURY, comando


Determina se o Visual FoxPro exibe a parte de sculo de expresses de dados.

Sintaxe

SET CENTURY ON | OFF | TO [nSculo [ROLLOVER nAno]]



Argumentos

ON Especifica um ano com quatro dgitos em um formato que inclui 10 caracteres (incluindo
delimitadores de data).

OFF (Padro) Especifica um ano de dois dgitos em um formato que inclui oito caracteres e
assume o sculo XX para clculos de datas.

TO nSculo Um nmero de 1 a 99 que especifica o sculo atual. Quando uma data possuir um ano
de dois dgitos, nSculo determinar em que sculo o ano ocorreu.

Execute SET CENTURY TO sem qualquer argumento adicional para restaurar o sculo atual
padro.

SET CENTURY ON

SET CENTURY TO 19
? {02/16/56} && Exibe 02/16/1956

SET CENTURY TO 20
? {02/16/56} && Exibe 02/16/2056
ROLLOVER nAno Um nmero de 0 a 99 que especifica o ano acima, que o sculo atual e o
abaixo, que o sculo seguinte.

Execute SET CENTURY TO sem qualquer argumento adicional para restaurar o ano de passagem
de sculo padro 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



Comentrios

Utilize SET CENTURY para especificar como as funes e variveis de data sero exibidas.

feito um escopo de SET CENTURY para a sesso de dados atual.














SET CLOCK, comando

Determina se o Visual FoxPro exibir o relgio do sistema e especifica a localizao do relgio na
janela principal do Visual FoxPro.

Sintaxe

SET CLOCK ON | OFF | STATUS
Ou
SET CLOCK TO [nLinha, nColuna]



Argumentos

ON Exibe o relgio no canto superior direito da janela principal do Visual FoxPro.

OFF (Padro) Remove o relgio da barra de status ou da janela principal do Visual FoxPro.

STATUS Exibe o relgio na barra de status grfica. Execute SET STATUS BAR ON para exibir a
barra de status grfica.

TO [nLinha, nColuna] Utilizando coordenadas de linha e coluna, especifica onde o relgio ser
exibido na janela principal do Visual FoxPro. Utilize SET CLOCK TO sem as coordenadas para
exibir o relgio em sua posio padro no canto superior direito da janela principal do Visual
FoxPro.

Se voc posicionar o relgio na barra de status grfica com SET CLOCK STATUS e especificar
uma localizao na janela principal do Visual FoxPro com TO nLinha, nColuna, o Visual FoxPro
ir remover o relgio da barra de status grfica e posicion-lo na localizao especificada.

































SET COLLATE, comando


Especifica uma seqncia de ordenao para campos de caracteres em operaes de classificao e
indexao subsequentes.

Sintaxe

SET COLLATE TO cNomeSeqncia



Argumentos

cNomeSeqncia Especifica uma seqncia de ordenao. As opes de seqncia de ordenao
disponveis so as seguintes.

Opes Idioma

DUTCH Holands
GENERAL Ingls, francs, alemo, espanhol moderno, portugus e outros idiomas da Europa
ocidental
GERMAN Ordem de lista telefnica em alemo (DIN)
ICELAND Islands
MACHINE Mquina (a seqncia de ordenao padro de verses anteriores do FoxPro)
NORDAN Noruegus, dinamarqus
SPANISH Espanhol tradicional
SWEFIN Sueco, finlands
UNIQWT Peso nico


Observao Quando voc especifica a opo SPANISH, ch uma letra nica que classificada
entre c e d, e ll classificado entre l e m.
Caso voc especifique uma opo de seqncia de ordenao como uma seqncia de caracteres
literal, certifique-se de colocar a opo entre aspas:

SET COLLATE TO "SWEFIN"



MACHINE a opo de seqncia de ordenao padro e a seqncia com a qual os usurios de
Xbase esto familiarizados. Os caracteres so ordenados da forma como aparecem na pgina de
cdigo atual.

GENERAL pode ser prefervel para usurios dos Estados Unidos e da Europa ocidental. Os
caracteres so ordenados da forma como aparecem na pgina de cdigo atual. Nas verses do
FoxPro anteriores a 2.5, voc pode ter utilizado UPPER( ) ou LOWER( ) em campos de caracteres
ao criar ndices. Nas verses do FoxPro posteriores a 2.5, voc pode especificar a opo de
seqncia de ordenao GENERAL e omitir a converso UPPER( ).

Caso voc especifique uma opo de seqncia de ordenao diferente de MACHINE e caso crie
um arquivo .IDX, sempre ser criado um .IDX compactado.

Utilize SET(COLLATE) para retornar a seqncia de ordenao atual.

Caso voc inclua a linha a seguir no arquivo de configurao do Visual FoxPro, ser especificada
uma seqncia de ordenao quando voc iniciar o Visual FoxPro:

COLLATE = cNomeSeqncia



Esse procedimento idntico emisso do comando a seguir:

SET COLLATE TO cNomeSeqncia



Comentrios

SET COLLATE permite que voc ordene tabelas que contenham caracteres acentuados para
qualquer um dos idiomas suportados. A alterao da definio de SET COLLATE no afeta a
seqncia de ordenao de ndices anteriormente abertos. O Visual FoxPro mantm 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 definio
de SET COLLATE for alterada posteriormente para SPANISH, o ndice ir manter a seqncia de
ordenao GENERAL.

feito um escopo de SET COLLATE para a sesso de dados atual.

Para obter informaes adicionais sobre pginas de cdigo e o suporte internacional do Visual
FoxPro, consulte Pginas de cdigo suportadas pelo Visual FoxPro e o captulo 18,
Desenvolvendo aplicativos internacionais, no Guia do Desenvolvedor.

Para obter maiores informaes sobre como configurar o Visual FoxPro, consulte o captulo 3,
Configurando o Visual FoxPro, no Guia de Instalao 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 nmero do esquema de cores que voc deseja alterar. Pode ser um valor
de 1 a 24.

Observao No Visual FoxPro, os esquemas de cores de 13 a 15 so reservados para uso interno.
No utilize esses esquemas de cores.



TO [SCHEME nEsquema2] Especifica o nmero 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 vrgula para cada par de cores que no 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 definies
de cores inalterado, utilize o seguinte comando:

SET COLOR OF SCHEME 1 TO , , W+/B*



Um par de cores tambm pode ser especificado com um conjunto de seis valores de cor RGB
(vermelho, verde e azul), separados por vrgulas. Para alterar o terceiro par de cores no esquema de
cores 1 para branco e azul claro e deixar o resto das definies de cores inalterado, possvel
utilizar o seguinte comando:

SET COLOR OF SCHEME 1 TO , , RGB(255,255,255,0,0,255)


Comentrios

Nem todos os elementos de interface podem ser controlados por esquemas de cores janelas de
sistema, como as janelas Visualizao e Comando, a barra de menus do sistema etc. sempre so
controladas pelas definies de cores do Painel de controle. A execuo de SET COLOR OF
SCHEME nEsquema1 TO sem a incluso de uma clusula opcional restaura as cores do esquema de
cores atual.

Para obter maiores informaes sobre conjunto de cores e esquemas de cores, consulte o tpico
Viso 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 (Padro) Essas duas palavras-chave podem ser utilizadas de forma
intercambivel. Cada uma delas permite que os programas criados no FoxBASE+ sejam executados
no Visual FoxPro, sem alteraes.

DB4 | ON A incluso de uma dessas palavras-chave afetar o comportamento de alguns comandos
e funes.

PROMPT | NOPROMPT Essas opes determinam se o Visual FoxPro exibir uma caixa de
dilogo quando voc abrir uma tabela do dBASE contendo um campo Memo.

Inclua a opo PROMPT para exibir a caixa de dilogo Converter memos. Se voc abrir uma tabela
do dBASE contendo um campo Memo, o Visual FoxPro, como padro, exibir a caixa de dilogo
Converter memos, que permitir a converso 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 opo TYPE FOXPLUS no comando COPY.

Se voc incluir NOPROMPT, a caixa de dilogo Converter memos no 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.



Comentrios

Entre os comandos e funes afetados por SET COMPATIBLE esto LIKE( ), PLAY MACRO,
SELECT( ) e STORE (quando STORE utilizado com matrizes).

SET COMPATIBLE no compatvel com outros comandos, funes ou recursos do Xbase no
suportados no Visual FoxPro. Por exemplo, ele no permite que voc abra um formulrio de
relatrio criado em outros produtos Xbase com o Criador de relatrios.

A tabela a seguir lista os comandos afetados por SET COMPATIBLE.

Comandos

@ ... GET com uma clusula RANGE READ com uma clusula @ ... GET VALID
@ ... SAY com CHR(7) READs aninhados
@ ... SAY rolagem READ
@ ... SAY quando STATUS est ativado (ON) RUN | !
ACTIVATE SCREEN SET COLOR TO
ACTIVATE WINDOW SET BORDER
APPEND MEMO SET FIELDS
DECLARE SET MESSAGE
DIMENSION SET MEMOWIDTH
GO | GOTO com SET TALK ON SET PRINTER TO <arquivo>
FSIZE( ) STORE
INKEY( ) SUM
LASTKEY( ) TRANSFORM( ) com uma clusula numrica PICTURE
LIKE( ) SELECT( )
Comandos de menu SYS(2001, "COLOR")
PLAY MACRO

























SET CONFIRM, comando


Especifica se possvel sair de uma caixa de texto digitando o ltimo caractere nela contido.

Sintaxe

SET CONFIRM ON | OFF



Argumentos

ON Especifica que no possvel sair da caixa de texto digitando o ltimo caractere nela contido.
Para sair, pressione ENTER, TAB ou uma das teclas de direo para mover de uma caixa de texto
para outro controle.

SET CONFIRM ON afeta tambm itens de menu e ttulos de menu criados com DEFINE BAR e
DEFINE PAD. Se o usurio digitar a primeira letra do item de menu ou do ttulo de menu, o item
ou o ttulo ser selecionado mas no ser ativado. Para ativar o item ou o ttulo de menu quando ele
estiver selecionado, pressione ENTER ou a BARRA DE ESPAOS.

OFF Especifica que o usurio 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 insero ir mover-se para
o controle seguinte e a campainha soar (se SET BELL estiver ativado (ON)).

OFF o valor padro de SET CONFIRM.

SET CONFIRM OFF tambm afeta itens e ttulos de menu. Se SET CONFIRM estiver desativado
(OFF), o usurio poder escolher um item a partir de um menu ou um ttulo de menu em uma barra
de menus, pressionando a tecla correspondente primeira letra do ttulo ou do item de menu.
(Quando SET CONFIRM est ativado (ON), esta ao seleciona apenas o item ou o ttulo de menu).


Comentrios

SET CONFIRM no tem qualquer efeito em teclas de acesso a itens ou ttulos de menu. Se um item
ou um ttulo 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 formulrios.

feito um escopo de SET CONFIRM para a sesso de dados atual.
















SET CONSOLE, comando


Ativa ou desativa, dentro de programas, a sada para a janela principal do Visual FoxPro ou para a
janela ativa definida pelo usurio.

Sintaxe

SET CONSOLE ON | OFF



Argumentos

ON (Padro) Envia toda a sada para a janela principal do Visual FoxPro ou para a janela ativa
definida pelo usurio.

OFF Suprime a sada para a janela principal do Visual FoxPro ou para a janela ativa definida pelo
usurio.



Comentrios

O comando SET CONSOLE ativado (ON) quando se utiliza o Visual FoxPro de modo interativo e
no pode ser alterado para desativado (OFF) a partir da janela Comando. A definio s pode ser
alterada para desativado (OFF) a partir de um programa.

SET CONSOLE afeta algumas caixas de dilogo 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 circunstncias, o Visual FoxPro exibir a caixa de dilogo Abrir.

SET CONSOLE no afeta a sada de @ ... SAY. A sada de @ ... SAY controlada pela definio
de SET DEVICE.

Importante Um erro sempre define CONSOLE como ativado (ON). Utilize SYS(100) para
verificar a definio de SET CONSOLE antes da ocorrncia do erro. Para obter maiores
informaes, consulte SYS(100) - Definio de console.

























SET COVERAGE, comando

Ativa ou desativa o alcance do cdigo ou especifica um arquivo de texto para o qual as informaes
de alcance do cdigo sero direcionadas.

Sintaxe

SET COVERAGE TO [NomeArquivo [ADDITIVE]]



Argumentos

TO NomeArquivo Especifica o nome de um arquivo de texto para o qual as informaes de
alcance do cdigo sero direcionadas. Emita SET COVERAGE TO sem um nome de arquivo para
fechar o arquivo de texto.

Se o arquivo de texto especificado no existir, o Visual FoxPro criar e abrir o arquivo
automaticamente.

ADDITIVE Inclui as informaes de alcance do cdigo no final do arquivo de texto especificado
com NomeArquivo. Se voc omitir ADDITIVE, as informaes de alcance do cdigo substituiro o
contedo do arquivo de texto.



Comentrios

possvel tambm definir opes de alcance do cdigo na caixa de dilogo Alcance.


SET CPDIALOG, comando


Especifica se a caixa de dilogo Pgina de cdigo ser exibida quando uma tabela for aberta.

Sintaxe

SET CPDIALOG ON | OFF



Argumentos

ON (Padro) Exibe a caixa de dilogo Pgina de cdigo quando uma tabela aberta e as
condies a seguir so verdadeiras:

A tabela est aberta em modo exclusivo.
A tabela no est marcada com uma pgina de cdigo.



OFF No exibe a caixa de dilogo Pgina de cdigo quando uma tabela aberta.



Comentrios

A caixa de dilogo Pgina de cdigo permite que voc especifique uma pgina de cdigo para
tabelas criadas em verses anteriores do FoxPro e para outros produtos que criam tabelas do Visual
FoxPro. A tabela marcada com a pgina de cdigo selecionada.

Ao criar um aplicativo, emita SET CPDIALOG ON para certificar-se de que as tabelas includas no
aplicativo esto marcadas com a pgina de cdigo correta. No aplicativo completo, certifique-se de
que SET CPDIALOG est desativado (OFF).

possvel, tambm, especificar de modo interativo se a caixa de dilogo Pgina de cdigo exibida
com a caixa de verificao Solicitar pgina de cdigo, na guia Dados da caixa de dilogo Opes. A
caixa de dilogo Opes exibida quando Opes selecionada no menu Ferramentas.

Para obter informaes adicionais sobre pginas de cdigo e sobre o suporte internacional do Visual
FoxPro, consulte Pginas de cdigo suportadas pelo Visual FoxPro e o captulo 18,
Desenvolvendo aplicativos internacionais, no Guia do Desenvolvedor.




















SET CURRENCY, comando

Define o smbolo da moeda e especifica sua posio na exibio de expresses numricas,
monetrias, flutuantes e duplas.

Sintaxe

SET CURRENCY TO [cSmboloMoeda]
Ou
SET CURRENCY LEFT | RIGHT



Argumentos

cSmboloMoeda Especifica uma seqncia de caracteres, de um a nove caracteres, que representa
o smbolo da moeda. Emita SET CURRENCY TO sem cSmboloMoeda para redefinir o smbolo da
moeda como cifro padro ($).

LEFT (Padro) Posiciona o smbolo da moeda esquerda do valor monetrio.

RIGHT Posiciona o smbolo da moeda direita do valor monetrio.



Comentrios

O smbolo monetrio exibido na sada criada com @ ... SAY e nas caixas de texto criadas com
@ ... GET quando o cdigo $ est includo na clusula FUNCTION ou PICTURE.

feito um escopo de SET CURRENCY para a sesso de dados atual.


Exemplo de comando SET CURRENCY

O exemplo a seguir exibe o smbolo da moeda DM em qualquer lado do valor monetrio. Se voc
utilizar PICTURE para exibir o smbolo da moeda, certifique-se de incluir @ antes do cifro.

STORE SET('CURRENCY') TO gcCurrPosit
STORE 1234.56 TO gnDollarAmnt
CLEAR
SET CURRENCY TO 'DM'
@ 2,2 SAY gnDollarAmnt PICTURE '@$99,999.99'
IF gcCurrPosit = 'LEFT'
SET CURRENCY RIGHT
ELSE
SET CURRENCY LEFT
ENDIF
@ 4,2 SAY gnDollarAmnt FUNCTION '$99,999.99'














SET CURSOR, comando


Determina se o ponto de insero exibido quando o Visual FoxPro est aguardando uma entrada.

Sintaxe

SET CURSOR ON | OFF



Argumentos

ON (Padro) Faz com que o ponto de insero seja exibido durante um @ ... GET, @ ... EDIT,
WAIT ou INKEY( ) pendente.

OFF Impede que o ponto de insero seja exibido durante um @ ... GET, @ ... EDIT, WAIT ou
INKEY( ) pendente.



Comentrios

O comando SET CURSOR, semelhante a SYS(2002), permite ativar ou desativar o ponto de
insero.









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.



Comentrios

Pode haver vrios bancos de dados abertos ao mesmo tempo, mas somente um pode ser o banco de
dados atual. Os comandos e as funes que manipulam bancos de dados abertos, como ADD
TABLE e DBC( ), operam no banco de dados atual.

O banco de dados atual tambm pode ser especificado selecionando um banco de dados aberto na
lista suspensa Banco de dados da Barra de ferramentas padro.

O Visual FoxPro pode abrir, automaticamente, bancos de dados quando uma consulta ou um
formulrio executado.

feito um escopo de SET DATABASE para a sesso 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 , ento, 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 mydbc1
CREATE DATABASE mydbc2
SET DATABASE TO mydbc1
CREATE TABLE table1 (cField1 C(10), n N(10)) && Adiciona tabela a mydbc1
CLOSE TABLES && Uma tabela deve ser fechada para remov-la de um banco de dados
REMOVE TABLE table1
SET DATABASE TO mydbc2
ADD TABLE table1
RENAME TABLE table1 TO table2












SET DATE, comando


Especifica o formato para a exibio das expresses de Data e de DataHora.

Sintaxe

SET DATE [TO] AMERICAN | ANSI | BRITISH | FRENCH | GERMAN
| ITALIAN | JAPAN | TAIWAN | USA | MDY | DMY | YMD
| SHORT | LONG



Comentrios

A seguir so exibidas as definies e os formatos de data resultantes:

Definio Formato

AMERICAN mm/dd/aa
ANSI aa.mm.dd
BRITISH/FRENCH dd/mm/aa
GERMAN dd.mm.aa
ITALIAN dd-mm-aa
JAPAN aa/mm/dd
TAIWAN aa/mm/dd
USA mm-dd-aa
MDY mm/dd/aa
DMY dd/mm/aa
YMD aa/mm/dd
SHORT Formato de data curta determinado pela definio de data curta do Painel de
controle do Windows.
LONG Formato de data longa determinado pela definio de data longa do Painel de controle do
Windows.


A definio de data padro AMERICAN.
A definio de SET DATE tambm determina o modo de exibio da data nas expresses de
DataHora.
Se DATE for definido com SHORT ou LONG, as definies de SET CENTURY, SET MARK,
SET HOURS e SET SECONDS sero ignoradas.
feito um escopo de SET DATE para a sesso de dados atual.
























SET DEBUG, comando


Torna as janelas Depurar e Rastrear disponveis ou no disponveis no sistema de menu do Visual
FoxPro.

Sintaxe

SET DEBUG ON | OFF



Argumentos

ON (Padro) Torna as janelas Depurar e Rastrear disponveis no sistema de menu do Visual
FoxPro.

OFF Torna as janelas Depurar e Rastrear no disponveis 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.



Comentrios

Para obter maiores informaes sobre como utilizar as janelas Rastrear e Depurar, consulte o
captulo 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 sada da depurao ser direcionada. Se
o arquivo especificado no existir, ser automaticamente criado. Se o arquivo especificado j
existir, seu contedo ser sobrescrito, a no ser que voc inclua a clusula ADDITIVE.

Emita SET DEBUGOUT TO para interromper o direcionamento da sada da depurao para o
arquivo e fechar o arquivo.

ADDITIVE Especifica que a sada da depurao ser includa no final do arquivo especificado
com NomeArquivo.



Comentrios

A sada da depurao direcionada para o arquivo inclui mensagens de ASSERT, sada do comando
DEBUGOUT e eventos especificados com SET EVENTLIST ou na caixa de dilogo Controle de
eventos. Consulte a Caixa de dilogo Controle de eventos para obter maiores informaes sobre
como especificar eventos para rastrear de modo interativo.


SET DECIMALS, comando



Especifica o nmero de casas decimais exibido em expresses numricas.

Sintaxe

SET DECIMALS TO [nCasasDecimais]



Argumentos

nCasasDecimais Especifica o nmero mnimo de casas decimais a ser exibido. O padro so duas
casas decimais. O nmero mximo de casas decimais 18; o mnimo zero.



Comentrios

SET DECIMALS especifica o nmero mnimo de casas decimais utilizadas para exibir os
resultados de diviso, multiplicao e funes trigonomtricas e financeiras.

feito um escopo de SET DECIMALS para a sesso de dados atual.







SET DEFAULT, comando


Especifica a unidade de disco e diretrio padro.

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 diretrio.
O nome de um diretrio filho.
Qualquer um dos itens anteriores, utilizando a notao abreviada do MS-DOS ( \ ou ..).


Comentrios

SET DEFAULT altera o diretrio padro para o diretrio especificado.

O Visual FoxPro procura um arquivo no diretrio padro do Visual FoxPro. O diretrio padro
aquele a partir do qual voc inicia o Visual FoxPro. Entretanto, voc pode especificar outro
diretrio padro no arquivo de configurao do Visual FoxPro ou em um programa de inicializao.
Se o Visual FoxPro no conseguir localizar um arquivo no diretrio padro, 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 no especificar onde coloc-lo, o arquivo ser colocado no diretrio
padro do Visual FoxPro.

Ao sair do Visual FoxPro, voc retorna ao Windows. Ao sair do Windows, voc retorna unidade
de disco e ao diretrio a partir dos quais voc iniciou o Windows.

Dica SYS(5) retorna a unidade de disco padro. SYS(2003) retorna o diretrio padro sem
designador de unidade de disco. SYS(5) + SYS(2003) retorna a unidade de disco e o diretrio
padro.



Voc pode alterar a unidade de disco padro para unidade A, utilizando um dos comandos a seguir:

SET DEFAULT TO A
SET DEFAULT TO A:



Voc pode selecionar um diretrio especfico:

SET DEFAULT TO A:\sales
SET DEFAULT TO C:\sales\data



possvel especificar um diretrio filho. Se o diretrio-raiz na unidade C for o diretrio padro do
Visual FoxPro, emita o comando a seguir para alterar o diretrio padro para C:\SALES:

SET DEFAULT TO sales



Voc pode utilizar a notao abreviada do MS-DOS. Se o diretrio atual for C:\SALES\DATA,
emita o comando a seguir para tornar o diretrio-raiz o diretrio padro:

SET DEFAULT TO \



Voc pode tambm mover o diretrio padro um diretrio em direo ao diretrio raiz, com o
seguinte comando:

SET DEFAULT TO ..



















SET DELETED, comando


Especifica se o Visual FoxPro processa registros marcados para excluso e se eles esto disponveis
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 excluso.

OFF (Padro) Especifica que os registros marcados para excluso podem ser acessados por
comandos que operam em registros (incluindo registros de tabelas relacionadas) utilizando um
escopo.



Comentrios

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 informaes sobre como otimizar consultas, consulte Compreendendo a
tecnologia Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor
.

Para marcar registros para excluso, emita DELETE - SQL ou DELETE, ou selecione Excluir
registros... no menu Tabela dentro de uma janela de pesquisa ou edio.

Para reintegrar registros, emita RECALL ou selecione Reintegrar registros... no menu Tabela dentro
de uma janela de pesquisa ou edio.

Importante O comando SET DELETED ser ignorado se o escopo padro 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 sesso de dados atual.



















SET DEVELOPMENT, comando


Faz com que o Visual FoxPro compare a data e a hora da criao de um programa com a data e a
hora do seu arquivo objeto compilado quando o programa executado.

Sintaxe

SET DEVELOPMENT ON | OFF



Argumentos

ON (Padro) 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 opo assegura a execuo
da verso mais atual de um programa.

OFF Especifica que o Visual FoxPro no compara as verses compilada e de origem do programa.
Se SET DEVELOPMENT estiver desativado (OFF), pode ser que nem sempre esteja sendo
executada a verso mais atual de um programa.



Comentrios

A verso mais atual de um programa modificado com o editor do Visual FoxPro, chamado com
MODIFY COMMAND sempre executada, independentemente da definio de SET
DEVELOPMENT.

S ser necessrio 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 informaes, consulte CLEAR PROGRAM. Utilize SET
DEVELOPMENT OFF para obter o desempenho ideal.

Quando SET DEVELOPMENT est ativado (ON), a execuo do programa pode ser cancelada
durante uma leitura (READ). O comando Cancelar est disponvel no menu Programa quando SET
DEVELOPMENT estiver ativado (ON) e uma leitura estiver ativa. A seleo de Cancelar durante a
leitura (READ) cancela a execuo do programa. Se SET DEVELOPMENT estiver desativado
(OFF), o comando Cancelar no estar disponvel no menu Programa durante uma leitura.

SET DEVELOPMENT tambm determina se a janela Rastrear est aberta quando ocorre um erro
em um formulrio 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 no aberta quando ocorre um erro
em um formulrio.











SET DEVICE, comando


Direciona a sada 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 sada de @ ... SAY para a janela principal do Visual FoxPro ou para a
janela ativa definida pelo usurio.

TO PRINTER [PROMPT] Direciona a sada de @ ... SAY para a impressora. Um ejetar de pgina
emitido quando as coordenadas em @ ... SAY especificam uma localizao na pgina que seja
mais alta do que a localizao especificada pelas coordenadas no @ ... SAY anterior.

Pode-se incluir a clusula PROMPT opcional para exibir uma caixa de dilogo antes do incio da
impresso. Nesta caixa de dilogo, o usurio poder ajustar as definies da impressora, inclusive o
nmero de cpias a serem impressas e o nmero de pginas. O driver de impressora instalado no
momento determina as definies 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 sada.
Comentrios

A sada de @ ... SAY pode ser enviada para a janela principal do Visual FoxPro, para a janela ativa
definida pelo usurio, para a impressora ou para um arquivo.






























SET DISPLAY, comando


Permite que voc altere o modo de exibio 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.



Comentrios

SET DISPLAY altera o tamanho da fonte da janela principal do Visual FoxPro. O tamanho da
janela principal do Visual FoxPro ser aumentado, se necessrio, para que comporte o nmero de
linhas exigido pela opo especificada. Se a barra de status grfica for exibida quando voc emitir
SET DISPLAY, este comando estar desativado.

O Visual FoxPro exibir uma mensagem de erro se uma opo no for suportada pelo hardware de
vdeo.

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 depurao de programas. Includo para manter a compatibilidade com
verses anteriores. Utilize a janela Rastrear como substituto.

Sintaxe

SET ECHO ON | OFF



Argumentos

ON Exibe o cdigo de origem do programa em execuo na janela Rastrear. A linha em execuo
no momento ser realada.

OFF (Padro) Fecha a janela Rastrear em verses do Visual FoxPro anteriores verso 2.0. Para
fechar a janela Rastrear dentro de um programa, emita DEACTIVATE WINDOW TRACE.



Comentrios

Tambm possvel utilizar a janela Rastrear para definir pontos de interrupo, que suspendem a
execuo do programa.

Para obter maiores informaes sobre a janela Rastrear, consulte o tpico Janela Rastrear e o
captulo 14, Testando e depurando aplicativos, no Guia do Desenvolvedor.



SET ESCAPE, comando


Determina se o pressionamento da tecla ESC interromper a execuo do programa e de comandos.

Sintaxe

SET ESCAPE ON | OFF



Argumentos

ON (Padro) Permite que a execuo do programa e do comando seja interrompida quando a tecla
ESC for pressionada.

Se o usurio pressionar ESC durante a execuo de um comando ou programa enquanto o ponto de
insero estiver na janela Comando, ser exibida a mensagem a seguir:

*** INTERROMPIDO ***



Se o usurio pressionar ESC durante a execuo de um comando ou programa, o processamento
terminar na linha do programa atual e ser exibido um alerta com as trs opes a seguir:

(Padro) Selecione Cancelar para interromper imediatamente a execuo do programa e
retornar janela Comando.
Selecione Suspender para colocar a execuo do programa em pausa e retornar janela
Comando. Esta opo 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 execuo do programa na linha em que ele foi colocado
em pausa.



OFF Impede que a execuo 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 seqncias de comprimentos
diferentes.

Sintaxe

SET EXACT ON | OFF



Argumentos

ON Especifica que as expresses devem corresponder caractere por caractere para que sejam
equivalentes. Qualquer espao direita nas expresses ser ignorado na comparao. Na
comparao, a menor das duas expresses ser preenchida direita com espaos para que
corresponda ao comprimento da expresso maior.

OFF (Padro) Especifica que, para que sejam equivalentes, as expresses devem corresponder
caractere por caractere at o fim da expresso no lado direito.



Comentrios

A definio de SET EXACT no ter qualquer efeito se as duas seqncias tiverem o mesmo
comprimento.

Comparaes de Seqncias 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
lgicos, numricos, de data e de caractere.

No entanto, quando voc compara expresses de caracteres com o operador =, os resultados podem
no ser exatamente os esperados. Expresses de caracteres so comparadas caractere por caractere
da esquerda para a direita at que uma das expresses no seja igual outra, at que o fim da
expresso no lado direito do operador = seja atingido (SET EXACT OFF) ou at que seja atingido o
fim das duas expresses (SET EXACT ON).

Pode-se utilizar o operador = = quando necessria uma comparao exata de dados de caractere.
Caso duas expresses de caractere sejam comparadas com o operador = =, as expresses dos dois
lados do operador = = devero conter exatamente os mesmos caracteres, incluindo espaos em
branco, para que sejam consideradas iguais. A definio SET EXACT ignorada quando
seqncias de caracteres so comparadas utilizando-se = =.

A tabela a seguir mostra como a escolha do operador e a definio de SET EXACT afetam as
comparaes. (Um sublinhado representa um espao em branco.)

Comparao = EXACT OFF = EXACT ON == EXACT ON ou OFF

abc = abc Corresponde Corresponde Corresponde
ab = abc No corresponde No corresponde No corresponde
abc = ab Corresponde No corresponde No corresponde
abc = ab_ No corresponde No corresponde No corresponde
ab = ab_ No corresponde Corresponde No corresponde
ab_ = ab Corresponde Corresponde No corresponde
= ab No corresponde No corresponde No corresponde
ab = Corresponde No corresponde No corresponde
__ = Corresponde Corresponde No corresponde
= ___ No corresponde Corresponde No corresponde
TRIM(___) = Corresponde Corresponde Corresponde
= TRIM(___) Corresponde Corresponde Corresponde


feito um escopo de SET EXACT para a sesso de dados atual.






















SET EXCLUSIVE, comando


Especifica se o Visual FoxPro abrir arquivos de tabela para utilizao exclusiva ou compartilhada
em uma rede.

Sintaxe

SET EXCLUSIVE ON | OFF



Argumentos

ON (O padro para a sesso de dados global.) Limita a acessibilidade de uma tabela aberta em
uma rede para o usurio que a abriu. A tabela no est disponvel para outros usurios na rede.
Diferente de FLOCK( ), SET EXCLUSIVE ON tambm evita que todos os outros usurios tenham
acesso somente para leitura. Um arquivo tambm pode ser aberto em uma rede para utilizao
exclusiva, incluindo-se a clusula EXCLUSIVE com o comando USE. No necessrio realizar
bloqueio de arquivo ou registro em uma tabela aberta para utilizao exclusiva.

Abrir uma tabela para utilizao exclusiva garante que o arquivo no poder ser alterado por outros
usurios. impossvel executar alguns comandos at uma tabela ser aberta para utilizao
exclusiva. Esses comandos so INSERT, INSERT BLANK, MODIFY STRUCTURE, PACK,
REINDEX e ZAP.

OFF (O padro para uma sesso de dados privada.) Permite que uma tabela aberta em uma rede
seja compartilhada e modificada por qualquer usurio na rede.

Para obter informaes adicionais sobre bloqueio de arquivos e registros e sobre compartilhamento
de tabelas em uma rede, consulte o captulo 17, Programando para acesso compartilhado, no Guia
do Desenvolvedor.



Comentrios

A alterao da definio de SET EXCLUSIVE no 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 utilizao exclusiva.

feito um escopo de SET EXCLUSIVE para a sesso de dados atual.



















SET FDOW, comando


Especifica o primeiro dia da semana.

Sintaxe

SET FDOW TO [nExpresso]



Argumentos

nExpresso Especifica o primeiro dia da semana. A tabela a seguir lista os valores que podem ser
assumidos por nExpresso e o primeiro dia da semana correspondente.

nExpresso Dia da semana

1 Domingo
2 Segunda-feira
3 Tera-feira
4 Quarta-feira
5 Quinta-feira
6 Sexta-feira
7 Sbado


Se nExpresso for omitido, o primeiro dia da semana ser redefinido como domingo (1).



Comentrios

Tambm possvel redefinir o primeiro dia da semana com a caixa de listagem Comear semana
em na guia Regional da caixa de dilogo Opes.


Exemplo do comando SET FDOW

STORE SET('FDOW') TO gnFdow && Salva valor atual
SET FDOW TO 1 && Define o primeiro dia da semana como domingo, o padro
SET FDOW TO 7 && Define o primeiro dia da semana como sbado
SET FDOW TO &gnFdow && Restaura o dia original






















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 (Padro) 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.

possvel incluir campos de tabelas abertas em outras reas de trabalho se os campos forem
antecedidos por seus aliases de tabela. No entanto, esses campos no podem ser acessados, a no ser
que voc emita SET FIELDS GLOBAL ou SET COMPATIBLE DB4.

A lista de campos pode conter instrues para criao de campos calculados. Um campo calculado
contm dados somente para leitura criados com uma expresso. Essa expresso pode ter qualquer
forma, mas deve ser uma expresso vlida do FoxPro. Os campos calculados no podem ser
acessados, a no ser que voc emita SET FIELDS GLOBAL ou SET COMPATIBLE DB4.

O formato da instruo utilizada para criar um campo calculado :

<calculated field name> = <expr>



Esse exemplo cria um campo calculado denominado LOCATION:

CLOSE DATABASES
USE customer
SET FIELDS TO LOCATION = ALLTRIM(city) + ', ' + state



CITY e STATE so os nomes de campos da tabela selecionada.

ALL Permite acesso a todos os campos na tabela atual.

ALL LIKE Estrutura | EXCEPT Estrutura possvel acessar campos de forma seletiva incluindo a
clusula LIKE ou EXCEPT ou ambas. Se for includo LIKE Estrutura, ser possvel acessar campos
que correspondam a Estrutura. Se for includo EXCEPT Estrutura
, ser possvel acessar todos os campos, a no 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 clusula LIKE pode ser combinada com a clusula EXCEPT:

SET FIELDS TO ALL LIKE A*,P* EXCEPT PARTNO*



Comentrios

SET FIELDS TO aditivo emitir SET FIELDS TO com uma lista de campos adiciona os
campos especificados aos que j esto acessveis 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 sesso atual.

SET FILTER, comando


Especifica uma condio que os registros da tabela atual devem atender para serem acessveis.

Sintaxe

SET FILTER TO [lExpresso]



Argumentos

lExpresso Especifica a condio que os registros devem satisfazer.

Se a tabela atual for indexada em um campo ou campos especificados em lExpresso, a tecnologia
Rushmore do Visual FoxPro ir otimizar consultas baseadas no campo ou campos.



Comentrios

Quando o SET FILTER for emitido, apenas os registros que satisfizerem a condio especificada
pela expresso lgica lExpresso estaro disponveis na tabela. Todos os comandos que acessam a
tabela respeitam a condio SET FILTER. Um filtro separado pode ser definido para cada tabela
aberta.

A condio especificada por SET FILTER no ser avaliada at que o ponteiro do registro seja
movido na tabela.

Emitir SET FILTER TO sem lExpresso desativa o filtro da tabela atual.

SELECT - SQL no respeita a condio de filtro atual.

































SET FIXED, comando


Especifica se o nmero de casas decimais utilizado na exibio de dados numricos fixo.

Sintaxe

SET FIXED ON | OFF



Argumentos

ON Utiliza a definio SET DECIMALS para determinar o nmero de casas decimais exibido nos
resultados. O nmero padro de casas decimais 2.

OFF (Padro) Permite que o nmero de casas decimais exibido nos resultados dependa de
constantes, variveis e operadores especficos utilizados em uma expresso numrica. O contedo
de campos exibido com o nmero declarado de casas decimais.



Comentrios

feito um escopo de SET FIXED para a sesso 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 (Padro) 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 so retornados.















SET FUNCTION, comando


Atribui uma expresso (macro de teclado) a uma tecla de funo ou combinao de teclas.

Sintaxe

SET FUNCTION nNmeroTeclaFuno | NomeRtuloTecla TO [eExpresso]



Argumentos

nNmeroTeclaFuno Especifica o nmero da tecla de funo atribudo macro. Por exemplo,
utilize SET FUNCTION 2 para especificar a tecla de funo F2.

K NomeRtuloTecla Especifica uma combinao de teclas, incluindo uma tecla de funo, qual
a macro ser atribuda. O Visual FoxPro suporta combinaes de teclas que incluam teclas de
funo. possvel utilizar a tecla CTRL ou a tecla SHIFT em combinaes com uma tecla de
funo para criar teclas programveis adicionais. Para obter uma lista de expresses de rtulo de
tecla, consulte ON KEY LABEL.

TO [eExpresso] Especifica a srie de pressionamentos de tecla armazenados para a tecla de
funo ou combinao de teclas. O Visual FoxPro interpreta um ponto-e-vrgula (;) na expresso
como um avano de linha.

As definies de teclas de funo podem ser limpas com CLEAR MACROS.
OBS : Veja comando ON KEY LABEL
SET FWEEK, comando


Especifica os requisitos para a primeira semana do ano.

Sintaxe

SET FWEEK TO [nExpresso]



Argumentos

nExpresso Especifica um valor que determina os requisitos da primeira semana do ano. A tabela a
seguir lista os valores que nExpresso pode assumir e os requisitos correspondentes da primeira
semana do ano:

nExpresso Requisito da primeira semana

1 (Padro) A primeira semana contm 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 nExpresso, a primeira semana do ano ser redefinida como 1 (a primeira semana
contm 1 de janeiro).



Comentrios

Tambm possvel definir a primeira semana do ano com a caixa de listagem Primeira semana do
ano na guia Regional da caixa de dilogo Opes.

Exemplo do comando SET FWEEK

STORE SET('FWEEK') TO gnFweek && Salva o valor atual
SET FWEEK TO 1 && A primeira semana contm 1 de janeiro
SET FWEEK TO 3 && A primeira semana tem sete dias

SET FWEEK TO &gnFweek && Restaura a definio original
























SET HEADINGS, comando


Determina se os cabealhos de coluna sero exibidos para campos e se as informaes sobre o
arquivo sero includas quando TYPE for emitido para exibir o contedo de um arquivo.

Sintaxe

SET HEADINGS ON | OFF



Argumentos

ON (Padro) Especifica que os nomes de campos so exibidos.

Se TYPE for emitido para exibir o contedo de um arquivo, o Visual FoxPro ir inserir uma
alimentao de formulrio, o caminho e o nome do arquivo e a data no incio da sada exibida.

OFF Especifica que os nomes de campos no so exibidos.

Se TYPE for emitido para exibir o contedo de um arquivo, o Visual FoxPro no ir inserir
informaes adicionais sobre o arquivo no incio da sada exibida.



Comentrios

SET HEADINGS especifica se um nome de campo aparecer como um cabealho da coluna acima
de cada campo na sada 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 (Padro) Exibe a janela Ajuda quando o usurio pressiona F1 ou exibe HELP na janela
Comando.

OFF Torna a Ajuda on-line do Visual FoxPro no disponvel.

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.



Comentrios

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 informaes 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 tpicos da Ajuda do estilo .DBF na janela
Ajuda.

Sintaxe

SET HELPFILTER [AUTOMATIC] TO [lExpresso]



Argumentos

AUTOMATIC Remove automaticamente os critrios especificados com SET HELPFILTER
depois que a janela Ajuda fechada. A incluso de AUTOMATIC idntica emisso de SET
HELPFILTER TO imediatamente depois que a janela Ajuda fechada. Voc deve colocar
AUTOMATIC diretamente antes de TO lExpresso.

lExpresso Especifica uma expresso lgica utilizada para filtrar os tpicos da Ajuda. Apenas os
tpicos para os quais lExpresso resulta em verdadeiro (.T.) so exibidos. lExpresso contm
tipicamente um nome de um campo na tabela de ajuda.



Comentrios

Voc pode definir apenas um filtro para a Ajuda do estilo .DBF. Voc no pode definir um filtro
para a Ajuda grfica.

Para obter maiores informaes sobre a Ajuda on-line do Visual FoxPro, consulte a parte 7,
Criando arquivos de Ajuda, no Guia do Desenvolvedor.


































SET HOURS, comando


Define o relgio do sistema para um formato de hora de 12 ou 24 horas.

Sintaxe

SET HOURS TO [12 | 24]



Argumentos

TO 12 (Padro) Especifica um formato de 12 horas.

TO 24 Especifica um formato de 24 horas.



Comentrios

Utilize SET HOURS TO sem 12 ou 24 para retornar ao formato padro de 12 horas.

TIME( ) sempre retorna um valor em formato de 24 horas e no afetado por SET HOURS. O
valor retornado por DATETIME( ) determinado pela definio SET HOURS atual.

SET HOURS projetado para a sesso atual de dados.


SET INDEX, comando

Sintaxe Argumentos Comentrios Consulte tambm
Abre um ou mais arquivos de ndice para uso com a tabela atual.

Sintaxe

SET INDEX TO [ListaArquivondice | ? ]
[ORDER nNumerondice | NomeArquivondiceIDX
| [TAG] NomeMarca [OF NomeArquivoCDX] [ASCENDING | DESCENDING]]
[ADDITIVE]



Argumentos

ListaArquivondice Especifica um ou mais arquivos de ndice a serem abertos. Utilize vrgulas
para separar mltiplos arquivos de ndice na lista. A lista de arquivo de ndice pode conter qualquer
combinao de nomes de arquivo de ndice .IDX e .CDX; voc no precisa incluir as extenses 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 so acessados e exibidos. Os registros sero exibidos e acessados
em ordem fsica de registro se o primeiro arquivo de ndice for um arquivo .CDX e SET ORDER
TO TAG no tiver sido emitido.

? Exibe a caixa de dilogo Abrir da qual voc pode abrir um nico arquivo .IDX.

ORDER nNumerondice Especifica uma marca ou um arquivo de ndice de controle. A expresso
numrica nNumerondice especifica os arquivos de ndice como aparecem na lista de arquivo de
ndice.

Os arquivos .IDX so numerados primeiro na ordem em que aparecem na lista de arquivo de ndice.
As marcas no arquivo .CDX estrutural (se existir um) so numeradas na ordem em que foram
criadas. Finalmente, as marcas em quaisquer arquivos .CDX independentes so numerados na
ordem em que foram criadas. Consulte SET ORDER para maiores explicaes sobre a
numerao das marcas e arquivos de ndice.

Se nNumerondice for 0, os registros na tabela sero exibidos e acessados em ordem fsica de
registro, mas os arquivos de ndice permanecem abertos. ORDER 0 permite atualizar os arquivos de
ndice abertos enquanto acessa registros em ordem fsica. ORDER sem argumentos adicionais
idntico a ORDER 0.

O Visual FoxPro gera uma mensagem de erro se nNumerondice for maior que o nmero de marcas
de arquivos .IDX e arquivo .CDX.

ORDER NomeArquivondiceIDX 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 so exibidos e acessados em
ordem ascendente ou descendente. As marcas ou arquivos de ndice no so alterados em qualquer
caminho; apenas a ordem em que os registros so exibidos e acessados alterada. Inclua a clusula
ASCENDING ou DESCENDING imediatamente aps a clusula ORDER.

ADDITIVE Especifica que os arquivos de ndice abertos anteriormente, exceto para um ndice
composto estrutural, so 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.



Comentrios

Os registros em uma tabela que tm 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 sero exibidos ou acessados. Certos
comandos (SEEK, por exemplo) utilizam a marca ou arquivo de ndice de controle para procurar
registros.

A emisso 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 eExpresso2 [, eExpresso3]]
[IN cAliasTabela | nreaTrabalho]



Argumentos

eExpressao1 Permite acesso a um conjunto de registros com chaves de ndice idnticas.
eExpressao1 um valor de chave de ndice simples. Todos os registros com chaves de ndice que
correspondem a eExpressao1 esto acessveis.

RANGE eExpressao2 [, eExpressao3] Permite acesso a um conjunto de registros com chaves de
ndice que est includo 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 vrgula) permite acesso a registros com chaves de ndice iguais ou menores que
eExpressao3. A incluso de ambos eExpressao2 e eExpressao3 (separados por uma vrgula) 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 contm cdigos postais. Se a
tabela indexada no campo de cdigo postal, voc pode especificar um intervalo de cdigos postais
com SET KEY.

No exemplo a seguir, apenas registros com cdigos postais que esto includos no intervalo de
40000 a 43999 aparecem em uma janela Pesquisar:

CLOSE DATABASES
USE customer
SET ORDER TO postalcode
SET KEY TO RANGE '40000', '43999'
BROWSE



IN cAliasTabela | nreaTrabalho Permite acesso a um intervalo de registros para uma tabela
aberta em uma rea de trabalho especfica. cAliasTabela especifica o alias da rea de trabalho e
nreaTrabalho especifica o nmero 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 nmero da
rea de trabalho, SET KEY ir operar na tabela na rea de trabalho atual.



Comentrios

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 expresso 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 navegao do pressionamento do Visual FoxPro.

Sintaxe

SET KEYCOMP TO DOS | WINDOWS | MAC



Comentrios

SET KEYCOMP determina os pressionamentos e as combinaes de pressionamentos utilizados
para se mover atravs da interface do Visual FoxPro acessando controles como botes, 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 so familiares.

Para navegar no Windows ou Macintosh utilizando pressionamentos do MS-DOS, emita

SET KEYCOMP TO DOS


Voc pode especificar a opo DOS ou WINDOWS (padro).

Voc pode especificar uma definio de inicializao SET KEYCOMP em seu arquivo de
configurao do Visual FoxPro, CONFIG.FPW. Por exemplo, a linha a seguir, quando colocada em
seu arquivo de configurao, tem o efeito de SET KEYCOMP TO DOS:

KEYCOMP = DOS



Esta seo descreve como as opes DOS e WINDOWS afetam o Visual FoxPro.

Botes padro

DOS O boto padro em uma caixa de dilogo est focalizado; sua aparncia no se altera.
selecionado quando voc pressiona CTRL+ENTER.
WINDOWS O boto padro em uma caixa de dilogo pode alterar a aparncia quando voc
move entre controles. Pode estar escurecido ou estar focalizado ( cercado por uma borda em
negrito) para indicar que o padro atual.
selecionado quando voc pressiona ENTER. Pressionando sempre ENTER realiza-se a ao de
boto padro.


Para uma ilustrao de como o boto padro altera a aparncia em uma caixa de dilogo, emita SET
KEYCOMP TO WINDOWS, escolha Abrir do menu Arquivo e, em seguida, pressione TAB para
se mover atravs da caixa de dilogo Abrir.

Teclas de acesso

DOS Uma tecla de acesso para um controle uma tecla nica. Se voc no estiver em um
controle que tem teclado (uma caixa de combinao 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 combinao
de teclas. Se o controle atual tiver teclado (uma caixa de combinao 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 combinao


DOS Quando uma caixa de combinao est focalizada, voc pode abri-la pressionando ENTER
ou BARRA DE ESPAO. O teclado em uma caixa de combinao no estar disponvel at que a
caixa de combinao seja aberta.
WINDOWS Quando uma caixa de combinao est focalizada, voc pode abri-la pressionando
BARRA DE ESPAO, ALT+SETA PARA CIMA ou ALT+SETA PARA BAIXO . O teclado em
uma caixa de combinao estar disponvel quando a caixa de combinao estiver focalizada e
aberta.
Por exemplo, uma caixa de combinao selecionada contm uma lista de unidades de disco
disponveis. Se as unidades de disco A, B e C estiverem disponveis e a unidade de disco B estiver
exibido atualmente, voc pode selecionar a unidade de disco C sem abrir a caixa de combinao
pressionando a C ou a tecla SETA PARA BAIXO . A unidade de disco C selecionada e voc
passa para o prximo controle.


Botes Opo

DOS Pressione a tecla TAB quando um grupo de botes de opo selecionado para se mover
entre os botes de opo.
WINDOWS Pressione a tecla TAB quando um grupo de botes de opo selecionado para se
mover dos botes de opo ao prximo controle.
Para se mover entre um conjunto de botes de opo, pressione as teclas SETA PARA CIMA e
SETA PARA BAIXO .


Janela Pesquisar

DOS Um campo no selecionado na entrada dentro do campo.
WINDOWS Um campo selecionado automaticamente na entrada dentro do campo.




























SET LOCK, comando


Ativa ou desativa bloqueio automtico do arquivo em certos comandos.

Sintaxe

SET LOCK ON | OFF



Argumentos

ON Especifica que os comandos listados abaixo automaticamente bloqueiam a tabela quando so
executados. Isto fornece acesso somente para leitura a outros usurios na rede e assegura que voc
est utilizando os dados mais atuais.

OFF (Padro) Ativa acesso compartilhado de tabelas com comandos listados abaixo. Utilize SET
LOCK OFF se voc no precisa das informaes mais atuais de uma tabela.



Comentrios

O Visual FoxPro no 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 LIST
COPY TO LABEL
COPY TO ARRAY REPORT
COUNT SORT
DISPLAY (com um escopo) SUM
INDEX TOTAL


Enquanto eles so executados, estes comandos no alteram o contedo de uma tabela e o acesso
tabela disponvel para outros usurios na rede. Assim, a tabela pode ser alterada enquanto voc
est executando um destes comandos. Por exemplo, voc pode comear a imprimir um relatrio
utilizando REPORT antes de outro usurio alterar um registro includo no relatrio. Seu relatrio
agora contm informaes desatualizadas.
SET LOCK projetado para a sesso atual de dados.




















SET LOGERRORS, comando


Determina se o Visual FoxPro envia as mensagens de erro de compilao para um arquivo de texto.

Sintaxe

SET LOGERRORS ON | OFF



Argumentos

ON (Padro) Especifica que um arquivo de resumo de mensagem de erro de compilao ser
criado com o mesmo nome do programa compilado e com uma extenso .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 compilao no criado
quando um programa compilado.



Comentrios

Utilize SET LOGERRORS para salvar as mensagens de erro de compilao para um arquivo de
texto quando os programas so 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 excludo.


SET MARGIN, comando


Define a margem esquerda da impressora e afeta todas as sadas direcionadas para a impressora.

Sintaxe

SET MARGIN TO nColunas



Argumentos

nColunas Especifica a margem esquerda em colunas. O padro 0 colunas; o mximo 256.



Comentrios

Se voc utilizar SET MARGIN para ajustar a margem esquerda, o valor especificado com SET
MARGIN ser armazenado para a varivel do sistema _PLOFFSET. Voc pode tambm definir a
margem esquerda ao armazenar um valor diretamente para _PLOFFSET.

O valor da varivel do sistema _LMARGIN tambm afeta a definio de margem esquerda.

Importante A definio da margem esquerda especificada em SET MARGIN no afeta relatrios
criados com o Criador de relatrios e assim executados com REPORT. Embora _PLOFFSET seja
ajustada durante a execuo de um relatrio criado com o Criador de relatrios, a mesma
redefinida para seu valor original aps executado o relatrio. A definio de Margem esquerda na
caixa de dilogo Configurao de pgina do Criador de relatrios determina o deslocamento a partir
da borda esquerda do papel. Selecione Configurao de pgina no menu Arquivo para exibir a caixa
de dilogo Configurao de pgina quando o Criador de relatrios estiver aberto.





























SET MARK TO, comando


Especifica um delimitador para a exibio de expresses de data.

Sintaxe

SET MARK TO [cDelimitador]



Argumentos

cDelimitador Especifica um caractere a ser utilizado como o delimitador de data.



Comentrios

SET MARK TO especifica o caractere que separa o ms, dia e ano em datas exibidas.

Utilize SET MARK TO sem cDelimitador para redefinir o delimitador para barra padro ( / ).

SET MARK TO projetado para a sesso de dados atual.








SET MEMOWIDTH, comando


Especifica a largura exibida dos campos Memo e expresses de caractere.

Sintaxe

SET MEMOWIDTH TO nColunas



Argumentos

nColunas Especifica uma largura entre 8 e 1024 colunas. A largura padro para sada de 50
colunas. Se voc emitir SET COMPATIBLE ON ou SET COMPATIBLE DB4, a largura padro
ser alterada para 80 colunas. Se voc especificar um valor para nColunas maior que 1024, a largura
ser definida para 1024.



Comentrios

SET MEMOWIDTH especifica a largura da sada enviada para a janela principal do Visual FoxPro
ou para uma janela definida pelo usurio por comandos, como ? | ??, DISPLAY ou LIST. Afeta a
largura da sada de campos Memo e expresses de caractere maiores que 1024 caracteres. Tambm
afeta os valores retornados pelas funes ATCLINE( ), ATLINE( ), MEMLINE( ) e MLINE( ).

Observe que para ? e ?? a largura exibida no ir exceder 256 caracteres.

Se a sada for direcionada para a janela principal do Visual FoxPro, a largura da sada ser
determinada pela fonte para a janela principal do Visual FoxPro. Se a sada for direcionada para
uma janela definida pelo usurio, a largura da mesma ser determinada pela fonte para a janela
definida pelo usurio.

SET MEMOWIDTH projetado para a sesso de dados atual.




























SET MESSAGE, comando


Define uma mensagem a ser exibida na janela principal do Visual FoxPro ou na barra de status
grfico ou especifica a localizao das mensagens para as barras de menus definidas pelo usurio 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 localizao das mensagens na janela
principal do Visual FoxPro. NLinha especifica a linha em que as mensagens so exibidas. Se
nLinha for 0, nenhuma mensagem ser exibida.

LEFT, CENTER e RIGHT especificam a localizao da tela horizontal de mensagens.

O Visual FoxPro ignora uma localizao de mensagem especificada com SET MESSAGE, quando
a barra de status grfico exibida.

WINDOW [NomeJanela] Especifica a janela na qual as mensagens so exibidas. Para remover
uma mensagem da janela e exibi-la na tela, emita SET MESSAGE WINDOW.

Comentrios

SET MESSAGE permite que voc crie uma mensagem. Tambm permite que seja especificado
onde as mensagens criadas com DEFINE BAR, DEFINE MENU, DEFINE PAD ou DEFINE
POPUP sero exibidas.

Por padro, as mensagens sero 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 grfico for exibida, as
mensagens sero 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 grfico.













SET MULTILOCKS, comando


Determina se voc pode bloquear mltiplos registros com a utilizao de LOCK( ) ou RLOCK( ).

Sintaxe

SET MULTILOCKS ON | OFF



Argumentos

ON Permite que voc tente bloquear um conjunto de registros. Inclui um conjunto de nmeros de
registro em LOCK( ) ou RLOCK( ) para tentar bloquear mltiplos registros.

OFF (Padro) Permite que voc tente bloquear um nico registro com LOCK( ) ou RLOCK( ).



Comentrios

Quando uma tabela estiver aberta para utilizao compartilhada em uma rede, voc pode tentar
bloquear mais do que um registro em um arquivo de tabela. A definio 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 funo LOCK( ) ou RLOCK( ).

Comutando SET MULTILOCKS de ON (ativado) para OFF (desativado) ou de OFF para ON emite
de forma implcita UNLOCK ALL todos os bloqueios de registro em todas as reas de trabalho
so liberados.



SET MULTILOCKS projetado para a sesso de dados atual.

MULTILOCKS deve estar ON antes que a utilizao do buffer de tabela ou linha possa ser ativada
com CURSORSETPROP( ). Consulte CURSORSETPROP( ) para obter informaes adicionais
sobre a utilizao do buffer de tabela e linha.

Se voc selecionar a caixa de verificao Ativar utilizao do buffer de dados na caixa de dilogo
Propriedades da rea de trabalho (que exibida quando voc seleciona o boto Propriedades na
janela Sesso de dados), MULTILOCKS ser automaticamente definido a ON para a sesso de
dados atual. Entretanto, ao limpar a caixa de verificao Ativar utilizao do buffer de dados no ir
definir MULTILOCKS a OFF para a sesso de dados atual.

Para obter maiores informaes sobre como bloquear o arquivo e registro e sobre compartilhamento
de tabelas em uma rede, consulte as funes LOCK( ) e RLOCK( ) e o captulo 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 no
conseguir procurar por um registro.

Sintaxe

SET NEAR ON | OFF



Argumentos

ON Posiciona o ponteiro do registro no registro mais prximo correspondente, caso uma busca de
registro utilizando FIND ou SEEK no seja bem sucedida. Com esta definio, RECNO( ) retorna o
nmero de registro do registro mais prximo correspondente, FOUND( ) retorna falso (.F.) e EOF( )
retorna falso (.F.).

OFF (Padro) Posiciona o ponteiro do registro ao final da tabela caso uma busca de registro,
utilizando FIND ou SEEK, no seja bem sucedida. Com esta definio, RECNO( ) retorna o
nmero de registros na tabela mais 1, FOUND( ) retorna falso (.F.) e EOF( ) retorna verdadeiro
(.T.).



Comentrios

Uma busca no bem sucedida quando nenhum registro atinge os critrios de busca.

A emisso de RECNO( ), com um argumento 0, retornar o nmero de registro do registro mais
prximo correspondente, caso uma busca no seja bem sucedida, independente da definio de SET
NEAR.

SET NEAR projetado para a sesso de dados atual.






























SET NOTIFY, comando

Ativa e desativa a exibio de determinadas mensagens do sistema.

Sintaxe

SET NOTIFY ON | OFF



Argumentos

ON (Padro) Ativa a exibio de determinadas mensagens do sistema.

OFF Desativa a exibio de determinadas mensagens do sistema.



Comentrios

Os exemplos de mensagens do sistemas que so afetadas por SET NOTIFY so:

Expresso vlida na caixa de dilogo Construtor de expresses.
Execuo cancelada, que aparece quando a execuo do programa cancelada.



As mensagens do sistema so exibidas na barra de status grfica (no 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 padro, .NULL., ser recuperado e exibido para os valores nulos.



Comentrios

Como padro, o Visual FoxPro exibe .NULL. para valores nulos em objetos, janelas Pesquisar,
sada DISPLAY, sada LIST e assim por diante. Utilize SET NULLDISPLAY para trocar o texto do
valor nulo padro por uma outra seqncia de caracteres. SET NULLDISPLAY troca o texto do
valor nulo padro por todos os objetos para os quais a propriedade NullDisplay uma seqncia
vazia.

Utilize a propriedade NullDisplay para trocar o texto do valor nulo padro por uma outra seqncia
de caracteres de um objeto individual.



SET ODOMETER, comando


Especifica o intervalo entre relatrios do contador de registros dos comandos que processam
registros.

Sintaxe

SET ODOMETER TO [nRegistros]



Argumentos

TO [nRegistros] Especifica o intervalo entre relatrios em nmero de registros. O valor de
nRegistros pode variar de 1 a 32.767 registros. O valor padro 100 registros.



Comentrios

Utilize SET ODOMETER para alterar o intervalo no qual os comandos exibem informaes sobre o
nmero de registros processados.

Por exemplo, COPY TO exibe o nmero de registros que so 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 otimizao Rushmore.

Sintaxe

SET OPTIMIZE ON | OFF



Argumentos

ON (Padro) Ativa a otimizao Rushmore.

OFF Desativa a otimizao Rushmore.



Comentrios

O Visual FoxPro utiliza uma tecnologia denominada Rushmore para otimizar a recuperao de
dados. Os comandos de tabela que suportam uma clusula FOR utilizam a tecnologia Rushmore
para aprimorar seu desempenho. Quando um comando otimizvel emitido, Rushmore determina
que registros correspondem ao critrio FOR. O comando executado nos registros da tabela que
correspondem ao conjunto de registros Rushmore.

Em casos raros, voc deve desativar a otimizao Rushmore. Se um comando que se beneficia da
otimizao Rushmore modificar chaves de ndices de uma consulta, o conjunto de registros
Rushmore poder ficar desatualizado. possvel desativar a otimizao Rushmore para garantir que
voc tenha as informaes mais atuais da tabela.

Voc pode utilizar SET OPTIMIZE para ativar ou desativar globalmente a tecnologia Rushmore.
Cada comando que utiliza Rushmore possui uma clusula NOOPTIMIZE que pode ser includa
para desativar a otimizao Rushmore para o comando.

Para obter maiores informaes, consulte Conhecendo a tecnologia Rushmore no captulo 15,
Otimizando aplicativos no Guia do Desenvolvedor.

Estes so os comandos cujo desempenho otimizado pela tecnologia Rushmore:

Comando

AVERAGE INDEX
BLANK LABEL
BROWSE LIST
CALCULATE LOCATE
CHANGE RECALL
COPY TO REPLACE
COPY TO ARRAY REPLACE FROM ARRAY
COUNT REPORT
DELETE SCAN
DISPLAY SORT
EDIT SUM
EXPORT TOTAL








SET ORDER, comando


Designa um arquivo ou marca de ndice controlador para uma tabela.

Sintaxe

SET ORDER TO
[nNmerondice | NomeArquivondiceIDX | [TAG] NomeMarca [OF NomeArquivoCDX]
[IN nreaTrabalho | cAliasTabela]
[ASCENDING | DESCENDING]]



Argumentos

nNmerondice Especifica o nmero da marca ou do arquivo de ndice controlador.
nNmerondice refere-se aos arquivos de ndice como esto relacionados em USE ou SET INDEX.
Arquivos .IDX abertos so numerados primeiro na ordem em que eles aparecem em USE ou SET
INDEX. As marcas no arquivo estrutural .CDX (caso exista alguma) so numeradas na ordem em
que foram criadas. Finalmente, as marcas em quaisquer arquivos .CDX independentes abertos so
numeradas na ordem em que foram criadas.

O exemplo abaixo ilustra como diferentes tipos de arquivo de ndice e marcas so numerados. (Os
nomes dos arquivos so apenas ilustrativos e no existem necessariamente.) Uma tabela
denominada video.dbf aberta com trs 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 so 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 1
Controlling index: C:\FOX30\TITLE.IDX
SET ORDER TO 2
Controlling index: C:\FOX30\RATING.IDX



As marcas em video.cdx so numeradas a seguir:

SET ORDER TO 3
Controlling index: C:\FOX30\VIDEO.CDX Tag: NUMBERSOLD
SET ORDER TO 4
Controlling index: C:\FOX30\VIDEO.CDX Tag: YEARSOLD



Finalmente, as marcas no arquivo independente, costs.cdx, so numeradas:

SET ORDER TO 5
Controlling index: C:\FOX30\COSTS.CDX Tag: RENTALCOST
SET ORDER TO 6
Controlling index: C:\FOX30\COSTS.CDX Tag: BUYCOST



nNmerondice tambm pode ser 0. Caso voc emita SET ORDER TO 0, todos os arquivos de
ndices permanecero abertos e sero atualizados quando os registros forem adicionados, excludos
ou modificados. Entretanto, os registros na tabela so exibidos e acessados na ordem de nmero de
registro e no em uma ordem indexada. Emitir SET ORDER TO sem argumentos adicionais o
mesmo que emitir SET ORDER TO 0.

Se nNmerondice for maior que o nmero de arquivos .IDX e que as marcas de arquivos.CDX , o
Visual FoxPro gerar uma mensagem de erro.

NomeArquivondiceIDX 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 idnticos em arquivos .CDX independentes abertos, utilize OF
NomeArquivoCDX para especificar o arquivo .CDX que contm a marca.

Observao O arquivo .IDX tem precedncia se houver nomes de marca e arquivo .IDX
duplicados.



IN nreaTrabalho | cAliasTabela Designa um arquivo ou marca de ndice controlador para uma
tabela aberta em uma outra rea de trabalho que no a selecionada atualmente. nreaTrabalho
especifica o nmero 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 incluso de ASCENDING ou DESCENDING no altera o arquivo de
ndice ou marca de ndice.



Comentrios

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

possvel abrir arquivos de ndices com uma tabela incluindo a clusula INDEX no comando USE.
Se uma tabela tiver um arquivo .CDX estruturado associado, este arquivo ser aberto
automaticamente com a tabela. Aps a tabela ter sido aberta, voc pode abrir e fechar arquivos de
ndices da tabela que utiliza SET INDEX.

Como padro, 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 padro do Visual FoxPro ser utilizada.

Sintaxe

SET PALETTE ON | OFF



Argumentos

ON (Padro) Restaura a paleta de cores padro do Visual FoxPro.

OFF Substitui a paleta de cores padro do Visual FoxPro pela paleta de cores dos grficos .BMP e
dos objetos OLE.



Comentrios

Os objetos OLE e os grficos .BMP podem conter as paletas de cores que determinam como os
grficos e objetos aparecem quando so exibidos. A paleta de cores do primeiro grfico ou objeto
exibido utilizada para todos os grficos e objetos subseqentes. Uma vez que a paleta de cores
utilizada para todos os grficos e objetos, as cores de alguns dos grficos e objetos podem ser
alterados de uma forma inesperada.

A paleta de cores padro do Visual FoxPro designada para aprimorar a aparncia da exibio dos
vrios grficos .BMP e objetos OLE.

SET PATH, comando


Especifica um caminho para pesquisas de arquivos.

Sintaxe

SET PATH TO [Caminho]



Argumentos

TO [Caminho] Especifica os diretrios que voc deseja que o Visual FoxPro procure. Utilize
vrgula ou ponto-e- vrgula para separar os diretrios.



Observao O Visual FoxPro no reconhecer o nome do caminho adequadamente se um nome de
disco ou de diretrio contiver um ponto de exclamao (!).



Em todas as plataformas FoxPro, as funes que retornam as informaes sobre o caminho, tais
como CURDIR( ), DBF( ) e SYS(2003), utilizam as convenes de nomenclatura de caminhos do
MS-DOS em seus valores de retorno.



Comentrios

Emita SET PATH TO sem Caminho para restaurar o caminho ao diretrio padro. Utilize SET
DEFAULT para especificar o diretrio padro e CURDIR( ) para retornar o diretrio padro atual.

SET PATH no projetado para a sesso de dados atual, as alteraes feitas no caminho padro
utilizando o comando SET PATH afetam todas as sesses de dados.




























SET PDSETUP, comando


Carrega uma configurao do driver da impressora ou apaga uma configurao do driver da
impressora atual.

Sintaxe

SET PDSETUP TO [[cConfiguraoDriverImpressora [, Parmetro1[, Parmetro2 ...]]]
[WITH Parmetro3 [, Parmetro4 ...]]]



Argumentos

cConfiguraoDriverImpressora Especifica o nome da configurao do driver da impressora a ser
carregado.

Quando voc carrega uma configurao do driver da impressora, o nome da configurao
armazenado na varivel do sistema _PDSETUP e em uma matriz da varivel especial, _PDPARMS,
pode ser criada. (_PDPARMS discutida em detalhes na clusula WITH neste tpico.)

Se o nome da configurao do driver da impressora que voc especificou com
cConfiguraoDriverImpressora no existir em seu arquivo de recursos, o aplicativo da
configurao do driver da impressora atual executado de forma que voc possa criar uma
configurao com este nome. Se o aplicativo de configurao do driver da impressora atual for
GENPD.APP, a caixa de dilogo Edio da configurao da impressora aparecer para que voc
possa criar a configurao.

Se o nome da configurao iniciar com um travesso (-), o programa _GENPD no ser executado,
mas o nome aps o travesso ser armazenado em _PDSETUP.

Se SET PDSETUP TO for emitido sem cConfiguraoDriverImpressora, a configurao do driver
da impressora atual ser apagada, a seqncia vazia ser armazenada em _PDSETUP e a matriz
_PDPARMS ser apagada da memria.

Parmetro1 [, Parmetro2 ...] Especifica qualquer nmero de parmetros opcionais. Estes
parmetros so passados para o aplicativo da interface de configurao da impressora e podem ser
de qualquer tipo (caractere, numrico, lgico e assim por diante). A primeira linha do aplicativo da
interface de configurao da sua impressora deve ser uma instruo LPARAMETERS ou
PARAMETERS para aceitar os parmetros passados a partir do SET PDSETUP.

Se voc estiver utilizando GENPD.APP, no inclua esses parmetros opcionais. GENPD.APP no
aceita os parmetros passados a partir do SET PDSETUP e, portanto, a incluso deles ir gerar um
erro.

WITH Parmetro3 [, Parmetro4 ...] Cria uma matriz _PDPARMS especial de impressora. Cada
parmetro especificado com Parmetro3, Parmetro4 e assim por diante torna-se um elemento em
_PDPARMS. O primeiro parmetro (Parmetro3) armazenado no primeiro elemento de
_PDPARMS, o segundo parmetro (Parmetro4) armazenado no segundo elemento e assim por
diante. Esses parmetros podem ser de qualquer tipo (caractere, numrico, lgico e outros).

Se GENPD.APP est sendo utilizado, qualquer parmetro que voc incluir ser sobrescrito pelo
aplicativo.



Comentrios

No Visual FoxPro, uma configurao do driver da impressora utilizada quando voc imprime
relatrios baseados em caracteres no FoxPro para MS-DOS.

Uma configurao do driver da impressora consiste de uma combinao de definies, incluindo o
programa e as informaes do driver da impressora, tais com orientao de pgina, tamanho de
fonte e estilo de fonte padro, margens etc. As configuraes do driver da impressora so
armazenadas no arquivo de recursos do FoxPro para MS-DOS, FOXUSER.DBF, e pode ser criadas
interativamente e receber um nome na caixa de dilogo Edio da configurao da impressora.

Uma configurao do driver da impressora tambm pode ser carregada ou apagada com a varivel
do sistema _PDSETUP.

Quando voc emite SET PDSETUP, o aplicativo da interface da configurao da impressora atual
executado. O aplicativo da interface recebe o nome da configurao do driver da impressora
includo em SET PDSETUP. O aplicativo de interface tambm pode ser especificado com a
varivel do sistema _GENPD. O aplicativo da interface padro GENPD.APP, aplicativo da
interface da configurao da impressora includo com o FoxPro for MS-DOS.









SET POINT, comando


Determina o caractere de casa decimal utilizado na exibio das expresses numricas e monetrias.

Sintaxe

SET POINT TO [cCaractereCasaDecimal]



Argumentos

cCaractereCasa Decimal Especifica o caractere para a casa decimal.



Comentrios

Utilize SET POINT para alterar o padro da casa decimal que o ponto. (.). Emita SET POINT TO
sem cCaractereCasa Decimal para redefinir o casa decimal para uma vrgula. Embora voc possa
definir a casa decimal exibida como um outro caractere, deve utilizar a vrgula para indicar casa
decimal nos clculos.

SET POINT projetado para a sesso de dados atual.


SET POINT, exemplo do comando

gnX = 1.25
gcNewPoint = '_'
SET POINT TO gcNewPoint
? gnX
SET POINT TO && Redefina a casa decimal para uma vrgula(,).
? gnX
































SET PRINTER, comando


Ativa ou desativa a sada para a impressora ou rotear a sada 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 sada para a impressora. A sada formatada com @ ... SAY no ser
roteada para a impressora quando SET PRINTER estiver definido como ON. Utilize SET DEVICE
TO PRINTER para rotear a sada de @ ... SAY para a impressora.

possvel incluir PROMPT para exibir uma caixa de dilogo antes que a impresso seja iniciada.
Nessa caixa de dilogo, possvel ajustar os parmetros da impressora. O driver de impressora
instalado atualmente determina que parmetros da impressora podem ser ajustados.

OFF (Padro) Desativa a sada para a impressora.

FONT cFonteNome [, cTamanhoFonte] Especifica a fonte padro para a sada 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 padro da
impressora:

SET PRINTER FONT 'Courier', 16



Se a fonte especificada no estiver disponvel, uma fonte com caractersticas semelhantes far a
substituio.

STYLE cEstiloFonte Especifica o estilo padro da fonte para a sada da impressora. Se a clusula
STYLE for omitida, um estilo de fonte normal ser utilizado.

Se o estilo da fonte especificado no estiver disponvel, um estilo de fonte com caractersticas
semelhantes far a substituio.

Os estilos de fonte que voc pode especificar com cEstiloFonte so os seguintes:

Caractere Estilo de fonte

B Negrito
I Itlico
N Normal
O Contorno
Q Opaco
S Sombreado
- Riscado
T Transparente
U Sublinhado


possvel incluir mais de um caractere para especificar um combinao de estilos de fonte. Por
exemplo, o comando abaixo especifica a fonte Courier Negrito Itlico de 16 pontos:

SET PRINTER FONT 'Courier', 16 STYLE 'BI'



TO [NomeArquivo [ADDITIVE] | NomePorta] Especifica um arquivo ou porta para aonde a sada
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 sada ser direcionada. Se ADDITIVE
for includo, a sada ser anexada ao contedo existente do arquivo. Se ADDITIVE for omitido, o
contedo existente do arquivo ser sobrescrito.

NomePorta envia a sada para uma outra impressora local.



TO [DEFAULT | NAME NomeImpressoraWindows] Envia a sada de impressora para a
impressora padro do Windows ou para uma impressora especfica do Windows. Os nomes das
impressoras do Windows esto armazenados em WIN.INI.

possvel utilizar GETPRINTER( ) ou APRINTERS( ) para determinar os nomes das impressoras
instaladas atualmente. Por exemplo, o comando a seguir exibe a caixa de dilogo Configurao de
impressora do Windows e faz da impressora selecionada aquela para a qual a sada impressa ser
direcionada:

SET PRINTER TO NAME GETPRINTER( )



TO NAME \\NomeServidor\NomeImpressora Aceita somente pelo Windows NT. Direciona a
sada da impressora para uma impressora de rede.

NomeServidor o nome da rede atribudo ao seu servidor de impresso. Este nome atribudo pelo
administrador da rede e deve ser exclusivo.

NomeImpressora o nome atribudo impressora e tambm atribudo pelo administrador da rede.



Comentrios

Utilize SET PRINTER TO com os argumentos especificados para direcionar a sada 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 sada para o utilitrio de impressora
padro MS-DOS PRN.

Quando a sada direcionada para uma impressora da rede, a sada impressa ou reunida em um
spooler de impresso at que um novo comando SET PRINTER seja emitido. Para obter maiores
informaes sobre a impresso em rede, consulte a documentao da rede.

SET READBORDER, comando


Determina se so 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 subseqentes criadas no mesmo nvel READ tambm tero bordas.

OFF (Padro) Especifica que no 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 subseqentes criadas no mesmo nvel READ no tero bordas.



Comentrios

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 trs caixas de texto criadas com @ ... GET tm 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 no tem borda, uma vez que READBORDER foi SET como
OFF e est includa em um outro READ proveniente das trs primeiras caixas de texto.

SET READBORDER ON
@ 2,2 GET gnW DEFAULT 1 && 1st READ
@ 4,2 GET gnX DEFAULT 1 && 1st READ
SET READBORDER OFF
@ 6,2 GET gnY DEFAULT 1 && 1st READ
READ
@ 8,2 GET gnZ DEFAULT 2 && 2nd READ
READ



















SET REFRESH, comando


Determina se a janela Pesquisar atualizada com as alteraes feitas nos registros por outros
usurios da rede e com que freqncia isto feito.

Sintaxe

SET REFRESH TO nSegundos1 [, nSegundos2]



Argumentos

TO nSegundos1 [, nSegundos2] Especifica se as atualizaes so feitas e com que freqncia.
nSegundos1 especifica o nmero de segundos entre as atualizaes na janela de edio de memo ou
na janela Pesquisar. nSegundos1 pode ter um valor entre 0 e 3.600; o valor padro 0 segundos.
Quando nSegundos1 for um valor diferente de zero e outros usurios alterarem os registros que
voc est visualizando, aqueles registros sero atualizados quando o intervalo de atualizao se
esgotar. Os registros que voc est visualizando no sero atualizados se nSegundos1 for 0.

O Visual FoxPro armazena em buffer as partes das tabelas na memria da sua estao de trabalho.
nSegundos2 especifica com que freqncia esses buffers de dados locais so atualizados com os
dados atuais da rede. nSegundos2 o nmero de segundos entre atualizaes do buffer de dados.
Voc pode especificar um valor entre 0 e 3.600; o valor padro 5. Os buffers nunca sero
atualizados se nSegundos2 for definido como 0. LOURDES

Se voc especificar um valor para nSegundos1 diferente de 0 mas no incluir nSegundos2,
nSegundos2 definido com o mesmo valor que nSegundos1. No entanto, nSegundos2 ser definido
como 5 se voc especificar 0 para nSegundos1 e no incluir nSegundos2.

O desempenho pode ser melhorado aumentando-se o valor de nSegundos2.



Comentrios

Como as tabelas podem ser abertas para uso compartilhado em uma rede, possvel que os registros
que voc est visualizando na janela Pesquisar estejam sendo editados por outros usurios na rede.

SET REFRESH afeta os registros exibidos na janela Pesquisar abertos com BROWSE, CHANGE
ou EDIT. Os campos Memo abertos para edio na janela Pesquisar tambm so atualizados.

SET REFRESH tambm pode ser atualizado para especificar com que freqncia os dados que
utilizam buffer localmente em sua estao de trabalho so 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 nreaTrabalho | cAliasTabela



Argumentos

INTO nreaTrabalho | cAliasTabela Especifica o nmero 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
[eExpresso1 INTO nreaTrabalho1 | cAliasTabela1
[, eExpresso2 INTO nreaTrabalho2 | cAliasTabela2 ...]
[IN nreaTrabalho | cAliasTabela]
[ADDITIVE]]



Argumentos

eExpresso1 Especifica a expresso relacional que estabelece um relacionamento entre as tabelas
pai e filho. A expresso relacional , geralmente, a expresso 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 vrias 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 sesso Comentrios abaixo.
Suponha que a tabela filho orders tenha sido indexada ou ordenada no nmero do cliente com este
comando:

SET ORDER TO TAG cust_id


Para relacionar as tabelas customer e orders no nmero de cliente, selecione a rea de trabalho que
contm a tabela pai customer ou inclua a clusula IN para especificar a rea de trabalho ou o alias
da tabela pai e emita SET RELATION, especificando a expresso de ndice com a seguinte
expresso relacional:

SET RELATION TO cust_id INTO orders



A tabela filho deve ser indexada a menos que a expresso relacional seja numrica. O Visual
FoxPro exibe uma mensagem de erro se voc emitir SET RELATION com uma expresso
relacional no-numrica e se a tabela filho no estiver ordenada com um ndice.

Se eExpresso1 for numrica, ela avaliada quando o ponteiro de registro na tabela pai for movido.
O ponteiro de registro na tabela filho movido para o nmero do registro eExpression1.

INTO nreaTrabalho1 | cAliasTabela1 Especifica o nmero da rea de trabalho (
nreaTrabalho1) ou do alias de tabela (cAliasTabela1) da tabela filho.

eExpresso2 INTO nreaTrabalho2 | cAliasTabela2 ... Especifica uma expresso relacional
(eExpress0o2) 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, possvel criar
relaes mltiplas entre uma nica tabela pai e diversas tabelas filho. Anteceda cada relao por
uma vrgula.

nreaTrabalho2 especifica um nmero da rea de trabalho e cAliasTabela2 especifica um alias da
tabela para a tabela filho.

IN nreaTrabalho Especifica a rea de trabalho da tabela pai.

IN cAliasTabela Especifica o alias da tabela pai.

A clusula IN permite que voc crie um relacionamento sem primeiro selecionar a rea de trabalho
da tabela pai. Se nreaTrabalho 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 especfico. Se voc omitir ADDITIVE, quaisquer relacionamentos na rea de
trabalho atual sero interrompidos e o relacionamento especificado ser criado.


Comentrios

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 informaes do cliente. Ela tem campos para nome, endereo e um
nmero de cliente exclusivo. Uma segunda tabela chamada orders contm as informaes de ordem.
Tambm possui um campo para o nmero do cliente, juntamente com os campos para datas e
informaes de expedio.

SET RELATION relaciona essas duas tabelas nos seus campos comum o campo Nmero do
cliente. Para definir a relao, a tabela filho deve ser indexada no campo comum. Depois de
definida a relao, sempre que voc mover o ponteiro do registro para um registro com um
determinado nmero de cliente na tabela pai customer, o ponteiro de registro na tabela filho orders
se move para o registro que tenha o mesmo nmero de cliente. Se no 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 especfico.


























SET REPROCESS, comando

Especifica quantas vezes e por quanto tempo o Visual FoxPro tenta bloquear um arquivo ou registro
aps uma tentativa malsucedida de bloqueio.

Sintaxe

SET REPROCESS TO nTentativas [SECONDS] | TO AUTOMATIC



Argumentos

TO nTentativas [SECONDS] Especifica o nmero de vezes que o Visual FoxPro tenta bloquear
um registro ou um arquivo aps uma tentativa malsucedida inicial. O valor padro 0, o valor
mximo 32.000.

SECONDS especifica que o Visual FoxPro tenta bloquear um arquivo ou registro por nTentativas
segundos. Estar disponvel 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, tambm, 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
atravs de um comando forem malsucedidas, a rotina ON ERROR ser executada. No entanto, se
uma funo tentar o bloqueio, uma rotina ON ERROR no ser executada e a funo retornar falso
(.F.).

Se a rotina ON ERROR no estiver ativa, um comando tentar bloquear o registro ou arquivo e o
bloqueio no puser ser efetuado, um alerta apropriado aparecer (por exemplo, Registro em uso
por outra pessoa). Se uma funo tentar fazer o bloqueio, o alerta no ser exibido e a funo
retornar falso (.F.).

Se nTentativas for 0 (o valor padro) e voc emitir um comando ou funo 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 disponvel para bloqueio enquanto voc aguarda.
Se uma funo conseguir fazer o bloqueio, a funo 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 funo conseguir fazer o bloqueio, o alerta
no ser exibido e a funo 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 precedncia sobre as tentativas adicionais de bloquear o registro ou
arquivo. A rotina ON ERROR ser imediatamente executada. O Visual FoxPro no tentar
bloqueios de registros ou arquivos adicionais e no exibir a mensagem do sistema.

Se nTentativas for 1, o Visual FoxPro tentar bloquear o registro ou arquivo indefinidamente.
Voc no poder cancelar as tentativas de bloqueio pressionando a tecla ESC e uma rotina ON
ERROR no ser executada.

Definir nTentativas como -2 o mesmo que utilizar a clusula TO AUTOMATIC.

O Visual FoxPro exibe a mensagem do sistema Esperando bloqueio ... somente se SET STATUS
estiver definido como ON.

Se outro usurio tiver colocado um bloqueio no registro ou arquivo que voc est tentando
bloquear, voc dever esperar at que o usurio 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 clusula semelhante a definir
nTentativas como -1, com a diferena 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 disponvel para bloqueio enquanto voc
aguarda. Se uma funo for utilizada para colocar um bloqueio, a funo retornar verdadeiro (.T.).

Se a rotina ON ERROR no 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
funo tentar fazer um bloqueio, o alerta no ser exibido e a funo retornar falso (.F.).

Se uma rotina ON ERROR estiver ativa e ESC for pressionado, a rotina ON ERROR ser
executada. Se uma funo tentar fazer um bloqueio, uma rotina ON ERROR no ser executada e a
funo retornar falso (.F.).

Para obter maiores informaes sobre bloqueio de registros e arquivos e compartilhamento tabelas
em uma rede, consulte o captulo 17, Programando para acesso compartilhado no Guia do
Desenvolvedor.



Comentrios

A primeira tentativa de bloquear um registro ou arquivo nem sempre bem-sucedida.
Freqentemente, um registro ou arquivo est bloqueado por outro usurio na rede. SET
REPROCESS determina se o Visual FoxPro far tentativas adicionais para bloquear o registro ou
arquivo quando a tentativa inicial no for bem-sucedida. Voc pode especificar, inclusive, quantas
vezes sero feitas tentativas adicionais e por quanto tempo. Uma rotina ON ERROR afeta a maneira
como as tentativas de bloqueio malsucedidas so manipuladas.

SET REPROCESS projetado para a sesso de dados atual.












SET SAFETY, comando

Determina se o Visual FoxPro exibe uma caixa de dilogo antes de sobrescrever um arquivo
existente ou se regras de tabela ou de campo, valores padro e mensagens de erro so avaliados
quando as alteraes so feitas no Criador de tabelas ou com ALTER TABLE.

Sintaxe

SET SAFETY ON | OFF



Argumentos

ON (Padro) Especifica que uma caixa de dilogo ser exibida antes que voc sobrescreva um
arquivo existente. A caixa de dilogo d a voc a opo de sobrescrever um arquivo existente.

Para o Criador de tabelas, especifica que regras de tabela ou campo, valores padro e mensagens de
erro sero avaliados quando voc salvar alteraes em uma estrutura da tabela. A validao de
dados ocorre para regras de validao modificadas ou novas depois de voc ter salvado as
alteraes da estrutura de tabela. Se uma regra de validao contm uma funo definida pelo
usurio (UDF, User Defined Function), a UDF no avaliada e a regra de validao ignorada.

Em ALTER TABLE, tabela ou regras de campo, valores padres e mensagens de erro so avaliadas
quando ALTER TABLE altera a estrutura da tabela. A validao dos dados ocorre para as regras de
validao novas ou modificadas quando ALTER TABLE altera a estrutura da tabela. Se uma regra
de validao contm uma UDF (funo definida pelo usurio), a UDF no avaliada e a regra de
validao ignorada.

OFF Especifica que uma caixa de dilogo no ser exibida antes que um arquivo existente seja
sobrescrito.

Para o Criador de tabelas, especifica que regras de tabela ou de campo, valores padro e mensagens
de erro no so avaliados quando as alteraes so salvas em uma estrutura da tabela. Entretanto, a
validao de dados ocorre para as regras de validao novas ou modificadas depois de voc salvar
as alteraes da estrutura de tabela.

Em ALTER TABLE, regras de tabela de campo, valores padro e mensagens de erro no so
avaliados quando ALTER TABLE altera a estrutura da tabela. A validao dos dados no ocorre
para regras de validao novas ou modificadas aps ALTER TABLE alterar a estrutura da tabela.



Comentrios

SET SAFETY projetado para a sesso de dados atuais.













SET SECONDS, comando



Especifica se so exibidos segundos na parte reservada em um valor DataHora.

Sintaxe

SET SECONDS ON | OFF



Argumentos

ON (Padro) Especifica que os segundos so exibidos nos valores de DataHora.

OFF Especifica que os segundos no so exibidos nos valores de DataHora.



Comentrios

SET SECONDS projetado para a sesso de dados atuais.


SET SECONDS, exemplo do comando

O exemplo a seguir demonstra o efeito da definio 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 ON
CLEAR
? 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( )


























SET SKIP OF, comando


Ativa ou desativa um menu, barra, ttulos ou item de menu para menus definidos pelo usurio ou
menu do sistema Visual FoxPro.

Sintaxe

SET SKIP OF MENU NomeBarraMenus1 lExpresso1
Ou
SET SKIP OF PAD NomeTituloMenu OF NomeBarraMenus2 lExpresso2
Ou
SET SKIP OF POPUP NomeMenu1 lExpresso3
Ou
SET SKIP OF BAR nNmeroItemMenu | NomeItemSistema
OF NomeMenu2 lExpresso4



Argumentos

MENU NomeBarraMenus1 lExpresso1 Ativa ou desativa a barra de menus do sistema Visual
FoxPro ou a definida pelo usurio 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 lExpresso2 Ativa ou desativa um ttulo de menu
do sistema Visual FoxPro ou um ttulo de menu definido pelo usurio criado com DEFINE PAD.
Por exemplo, o ttulo de menu Editar do Visual FoxPro pode ser desativado com este comando:

SET SKIP OF PAD _MSM_EDIT OF _MSYSMENU .T.



O ttulo de menu pode ser ativado com este comando:

SET SKIP OF PAD _MSM_EDIT OF _MSYSMENU .F.



POPUP NomeMenu1 lExpresso3 Ativa ou desativa um menu do sistema Visual FoxPro ou um
menu definido pelo usurio 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 nNmeroItemMenu | NomeItemSistema OF NomeMenu2 lExpresso4 Ativa ou desativa um
item de menu em um menu do sistema Visual FoxPro ou item de menu definido pelo usurio 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 lExpresso4 especifica a expresso lgica .T.. O comando de menu pode ser
ativado com este comando:

SET SKIP OF BAR _MFI_NEW OF _MFILE .F.



Utilize nNmeroItemMenu para especificar um item de menu criado com DEFINE BAR.



Comentrios

Para obter uma listagem completa dos nomes internos dos componentes de menu do sistema Visual
FoxPro, consulte Nomes do menu de sistema Voc pode tambm utilizar SYS(2013) para retornar
os nomes internos de menu do sistema.

Caso a expresso lgica lExpresso for avaliada em verdadeiro (.T.), o menu, sua barra, seu nome
ou item includo em SET SKIP OF ser desativado, aparecer obscuro e no poder ser selecionado.
Se lExpresso 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 vrias tabelas filho. So utilizados
para criar um relacionamento um-para-n com uma tabela pai. Utilize vrgulas para separar os
aliases. Em comandos que suportam um escopo (DISPLAY, LIST e assim por diante), os registros
na tabela pai so 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.



Comentrios

Utilizando SET RELATION, voc poder estabelecer relaes 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 expresso relacional em SET
RELATION determina para onde o ponteiro de registro se mover na tabela filho. Uma relao 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 no puder ser
localizado na tabela filho, o ponteiro de registro na tabela filho se mover para o final da tabela.

Freqentemente, uma tabela filho ir conter vrios registros que correspondem a um registro na
tabela pai. SET SKIP permite que voc estabelea um relacionamento um-para-n entre um registro
na tabela pai e vrios 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 atravs 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 ocorrncias em trs tabelas, onde os itens no primeiro campo
so os mesmos. Isto realizado ao procurar a primeira tabela que contm uma relao com uma
segunda e qual tabela tem uma relao com uma terceira. A primeira tabela executa ento SET
SKIP para as outras duas tabelas. Um SET SKIP na segunda tabela no tem efeito. Afeta somente a
tabela sendo procurada (substituda, etc.). No exemplo, oito correspondncias so encontradas.

CLOSE DATABASES
* Cria uma tabela pai com os valores a e b no campo Nome
CREATE 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 Child1
SET RELATION TO Name1 INTO Child2
SELECT Parent

SET RELATION TO Name INTO Child1
SET SKIP TO Child1, Child2 && Pai obtm dois pulos.
&& Caso contrrio, apenas quatro grupos de trs registros
&& seriam listados.
SCAN ALL && Haver oito grupos de trs: quatro a(s) e quatro b(s)
? Parent.Val, Child1.Val, Child2.Val
ENDSCAN
SET SPACE, comando


Determina se um espao ser exibido entre campos ou expresses quando o comando ? ou ??
utilizado.

Sintaxe

SET SPACE ON | OFF



Argumentos

ON (Padro) Insere um espao entre campos e expresses.

OFF Remove todos os espaos entre campos ou expresses e os executa juntamente.


SET SPACE, exemplo do comando

gcX = 'John'
gcY = 'Smith'
SET SPACE OFF
? gcX,gcY
SET SPACE ON
? gcX,gcY







SET STEP, comando


Abre a janela Rastrear e suspende a execuo do programa para depurao.

Sintaxe

SET STEP ON



Argumentos

ON Abre a janela Rastrear e suspende a execuo do programa.



Comentrios

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 informaes sobre a janela Rastrear, consulte o tpico da Janela Rastrear e o captulo
14, Testando e depurando aplicativos, no Guia do desenvolvedor.

Voc pode passar parmetros a um programa e, em seguida, rastrear sua execuo 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 interrupo na primeira linha executvel do programa.
4. Na janela Comando, EXECUTE o programa COM os parmetros.































SET SYSFORMATS, comando


Especifica se as definies do sistema Visual FoxPro for Windows so atualizadas com as
definies atuais do Windows.

Sintaxe

SET SYSFORMATS ON | OFF



Argumentos

ON Especifica se as definies do sistema Visual FoxPro so atualizadas quando as definies do
sistema do Windows so alteradas. SET SYSFORMAT ON idntico a escolher a caixa de
verificao Utilizar as definies do sistema na guia International da caixa de dilogo Opes.
Observe que a emisso de SET SYSFORMAT ON altera a definio de SET DATE para SHORT.

As definies so utilizadas durante a sesso de dados atual ou se emitidas durante a sesso de
dados padro, pela durao da sesso do Visual FoxPro.

OFF (Padro) Especifica se as definies do sistema Visual FoxPro no so atualizadas quando as
definies do sistema do Windows so alteradas. As definies padres do Visual FoxPro no so
restauradas.



Comentrios

As definies do sistema do Windows so especificadas na opo Internacional do Painel de
controle do Windows.
Quando SET SYSFORMATS estiver ON (ativo), os seguintes comandos SET podero ser
utilizados para anular as definies atuais do sistema. Entretanto, alterar as definies do sistema do
Windows quando SET SYSFORMATS estiver ON anular estes comandos SET:

SET CENTURY
SET CURRENCY
SET DATE
SET DECIMALS
SET HOURS
SET MARK TO
SET POINT



Quando o Visual FoxPro for inicializado, as definies do sistema Visual FoxPro sero as
definies padres desses comandos SET. Para utilizar as definies do sistema do Windows
quando o Visual FoxPro inicializado, coloque a seguinte linha no seu arquivo de configurao
CONFIG.FPW do Visual FoxPro:

SYSFORMATS = ON



SET SYSFORMATS projetado para a sesso atual de dados.






SET SYSMENU, comando


Ativa ou desativa a barra de menus do sistema Visual FoxPro durante a execuo do programa e
permite a sua reconfigurao.

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 execuo 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 execuo do programa.

AUTOMATIC Faz com que a barra de menus principal do Visual FoxPro se torne visvel durante
a execuo do programa. A barra de menus acessvel e os itens de menu so ativados e
desativados conforme apropriado pelo comando atual.

AUTOMATIC a definio padro.

TO [ListaMenu]
TO [ListaTituloMenu] Especifica um subconjunto de menus ou ttulos de menu para a barra de
menus principal do Visual FoxPro. A lista de ttulo de menu e menu pode conter qualquer
combinao de menus ou ttulos de menu separados por vrgulas. Os nomes internos para os ttulos
de menu e menus so 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 disponveis nos menus.

TO [DEFAULT] Restaura a barra se menus principal para a sua configurao padro. Caso a barra
de menus principal ou seus menus tiverem sido modificados, emita SET SYSMENU TO
DEFAULT para restaur-los. Voc pode especificar uma configurao padro com SET
SYSMENU SAVE.

SAVE Faa com que o sistema de menu atual se torne a configurao padro. Caso o sistema de
menu tiver sido modificado antes da emisso de SET SYSMENU SAVE, voc poder restaurar a
configurao anterior ao emitir SET SYSMENU TO DEFAULT.

NOSAVE Redefine o sistema de menu para o menu do sistema Visual FoxPro padro. Entretanto,
o menu do sistema Visual FoxPro padro no ser visualizado at que voc emita SET SYSMENU
TO DEFAULT.



Comentrios

SET SYSMENU controla a barra de menus principal do Visual FoxPro durante a execuo do
programa e permite que voc remova seletivamente os ttulos de menu e menus do sistema de menu
principal do Visual FoxPro e restaure-os para o mesmo.

A emisso 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 (Padro) Permite que a conversao seja enviada para a janela principal do Visual FoxPro,
para a janela de mensagens do sistema, para a barra de status grfico ou para a janela definida pelo
usurio. Se SET TALK for definido a OFF e for ento alterado para ON, a conversao ser
direcionada para a mesma localizao que foi enviada antes da emisso de SET TALK OFF.

OFF Evita que a conversao seja enviada para a janela principal do Visual FoxPro, para a janela
de mensagens do sistema, para a barra de status grfico ou para a janela definida pelo usurio.

WINDOW [NomeJanela] NomeJanela especifica uma janela definida pelo usurio para a qual a
conversao direcionada. Voc deve criar a janela definida pelo usurio antes de direcionar a
conversao mesma. A conversao ser direcionada para a janela do sistema Visual FoxPro caso
a janela especificada no existir.

NOWINDOW Direciona a conversao para a janela principal do Visual FoxPro.



Comentrios

Algumas tabelas que processam comandos retornam informaes ou conversao, sobre o status
enquanto so executados. Estes comandos incluem:

Comandos

APPEND FROM PACK
AVERAGE REINDEX
CALCULATE REPLACE
COPY TO SELECT - SQL
COUNT SORT
DELETE SUM
INDEX TOTAL


A conversao pode ser direcionada para a janela principal do Visual FoxPro, para a barra de status
grfico ou para a janela definida pelo usurio. A conversao pode tambm ser desativada.
SET TALK relatando o intervalo pode ser especificado com SET ODOMETER. O valor padro
para SET ODOMETER 100. Observe que a velocidade de execuo poder ser degradada quando
SET TALK for definido a ON, porque a janela principal do Visual FoxPro ou a janela definida pelo
usurio dever ser freqentemente atualizada. Caso voc apenas necessite do nmero total de
registros processados por um comando, voc poder emitir SET TALK OFF e exibir a varivel do
sistema _TALLY toda vez que o comando finalize a execuo.

SET TALK projetado para a sesso 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 sero
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.



Comentrios

Com SET TEXTMERGE DELIMITERS, voc pode especificar um conjunto de delimitadores de
mesclagem de textos em vez dos delimitadores padres, 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 padres sero restaurados.

Para obter maiores informaes sobre delimitadores de mesclagem de textos, consulte SET
TEXTMERGE.

































SET TEXTMERGE, comando


Ativa ou desativa a avaliao de campos, variveis, elementos de matriz, funes ou expresses que
so 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, variveis, elementos de matriz, funes ou expresses
envolvidas por delimitadores de mesclagem de textos sero avaliadas e tero resultado quando
colocadas aps \ ou \\ ou entre TEXT e ENDTEXT.

O seguinte exemplo de programa demonstra como o contedo da varivel gcTodayDate e das
funes DATE( ) e TIME( ) ser avaliado quando SET TEXTMERGE estiver definido a ON. A
varivel gcTodayDate, DATE( ) e TIME( ) so avaliadas porque esto envolvidas por delimitadores
de mesclagem de textos e SET TEXTMERGE est definido a ON.

CLEAR
SET TALK OFF
STORE 'Hoje : ' TO gcTodayDate
SET TEXTMERGE ON
\<<gcTodayDate>>
\\<<DATE( )>>
\A hora :
\\ <<TIME( )>>



Segue o resultado do programa acima, quando executado em 1 de janeiro:

Hoje : 01/01/95
A hora : 10:55:19



OFF (Padro) Especifica se todos os campos, variveis, elementos de matriz, funes ou
expresses tero literalmente resultado, juntamente com delimitadores de mesclagem de textos
envolvendo-as. Observe a diferena de resultado quando SET TEXTMERGE estiver definido a
OFF no exemplo anterior:

CLEAR
SET TALK OFF
STORE 'Hoje : ' TO gcTodayDate
SET 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 padro. Voc
pode tambm direcionar o resultado a um arquivo de texto ao incluir NomeArquivo. Se um arquivo
com este nome no existir, um novo arquivo ser criado. Se um arquivo com o mesmo nome j
existir e SET SAFETY estiver definido a ON, a opo de sobregravar o arquivo existente ser dada.

O arquivo de texto ser aberto como um arquivo de nvel baixo e o seu tratamento de arquivo ser
armazenado na varivel de memria _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 informaes 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 usurio em vez da janela principal do Visual FoxPro, que corresponde
ao padro. 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 no precisa estar ativa ou visvel.

SHOW | NOSHOW (Padro) SHOW exibe o resultado de mesclagem de textos.

NOSHOW suprime a exibio do resultado de mesclagem de textos.

Como padro, o resultado gerado por \, \\ e TEXT ... ENDTEXT ser enviado para a janela
principal do Visual FoxPro ou para uma janela ativa definida pelo usurio.



Comentrios

Os comandos \, \\ e TEXT ... ENDTEXT so utilizados para mesclar textos com os contedos das
tabelas, variveis, elementos de matriz e os resultados de funes e expresses. Se um campo,
varivel, elemento de matriz, funo ou expresso estiver envolvida por delimitadores de
mesclagem de textos (como padro, << 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, variveis, elementos de matriz, funes ou
expresses envolvidas por delimitadores de textos sero avaliadas. Tambm permite que voc
direcione um resultado de mesclagem de textos para a janela principal do Visual FoxPro, para uma
janela definida pelo usurio ou para um arquivo.

Os campos Memo podem ser utilizados para aninhar o texto mesclado. Se um campo Memo
contiver nomes de campos, variveis, elementos de matriz, funes ou expresses envolvidas por
delimitadores de mesclagem de textos atuais, os mesmos sero avaliados e tero resultado com os
contedos do campo Memo. O nome do campo Memo dever tambm ser envolvido por
delimitadores de mesclagem de textos.

































SET TOPIC, comando


Especifica o tpico de Ajuda ou tpicos a serem abertos quando o sistema de Ajuda do Visual
FoxPro solicitado.

Sintaxe

SET TOPIC TO [cNomeTopicoAjuda | lExpressao]



Argumentos

cNomeTopicoAjuda Especifica o nome do tpico de Ajuda que voc deseja exibir.

lExpressao Uma expresso lgica que corresponde base para que tpicos especficos ou tpicos
sejam abertos.



Comentrios

Para obter maiores informaes sobre como criar o seu prprio sistema de Ajuda, consulte a Parte 7,
Criando arquivos de Ajuda, no Guia do Desenvolvedor.








SET TYPEAHEAD, comando

Especifica o nmero mximo de caracteres que podem ser armazenados no buffer de teclado.

Sintaxe

SET TYPEAHEAD TO nCaracteres



Argumentos

nCaracteres Especifica o nmero mximo de caracteres a serem armazenados no buffer de teclado.

Nenhum caractere mantido no buffer de teclado se voc emitir SET TYPEAHEAD TO 0. Essa
instruo desativa INKEY( ) e ON KEY.



Comentrios

O buffer de teclado pode armazenar at 32.000 caracteres at que eles estejam prontos para serem
processados. O valor padro para SET TYPEAHEAD 20.








SET UDFPARMS, comando



Especifica se o Visual FoxPro passa parmetros para uma funo definida pelo usurio (UDF) por
valor ou por referncia.

Sintaxe

SET UDFPARMS TO VALUE | REFERENCE



Argumentos

TO VALUE Especifica que uma varivel seja passada a uma funo definida pelo usurio por
valor. Quando uma varivel passada por valor, o valor da varivel pode ser alterado na funo
definida pelo usurio, mas o valor original da varivel no programa de chamada no alterado.

TO REFERENCE Especifica que uma varivel seja passada a uma funo definida pelo usurio
por referncia. Quando uma varivel passada por referncia e a funo definida pelo usurio altera
o valor da varivel passada, o valor original da varivel no programa de chamada tambm
alterado.



Comentrios

Como padro, as variveis so passadas para uma funo definida pelo usurio por valor. (Variveis
passadas para procedimentos com DO ... WITH so passadas por referncia.)

Voc pode forar que os parmetros sejam passados a uma UDF por valor ou referncia,
independente da definio de SET UDFPARMS. Coloca uma varivel entre parnteses para forar
que uma varivel seja passada por valor. Inicie a varivel com um smbolo @ para forar a varivel
a ser passada por referncia.

Dica Matrizes inteiras podem ser passadas a um procedimento ou a uma funo definida pelo
usurio. 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 parnteses. Os
elementos da matriz so sempre passados por valor.



SET UDFPARMS, exemplo do comando



O exemplo a seguir ilustra a diferena entre as variveis que foram passadas por valor ou por
referncia.

*** Passa varivel por valor ***
CLEAR
SET TALK OFF
WAIT 'Pressiona uma tecla por valor' WINDOW
SET UDFPARMS TO VALUE
STORE 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 varivel por referncia ***
WAIT 'Pressiona uma tecla para passar por referncia' WINDOW
CLEAR
SET UDFPARMS TO REFERENCE
STORE 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 nmero ***
FUNCTION plusone
PARAMETER gnZ
gnZ = gnZ + 1
RETURN gnZ
*** Fim da UDF ***



O exemplo a seguir mostra variveis passadas por valor e por referncia atravs do uso dos
parnteses e @, respectivamente:

*** Passa a varivel por valor ***
CLEAR
SET TALK OFF
WAIT 'Pressione uma tecla para passar por valor' WINDOW
STORE 1 TO gnX
@ 2,2 SAY 'valor UDF: ' + STR(plusone((gnX)))
@ 4,2 SAY 'Valor de gnX: ' + STR(gnX)

*** Passa varivel por referncia ***
WAIT 'Pressione uma tecla para passar por referncia' WINDOW
CLEAR
STORE 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 nmero ***

FUNCTION plusone
PARAMETER gnZ
gnZ = gnZ + 1
RETURN gnZ
*** Fim da UDF ***


























SET UNIQUE, comando


Especifica se os registros com valores de teclas de ndices duplicados so 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 no ser includo
em um arquivo de ndice. Somente o primeiro registro com o valor de tecla de ndice original ser
includo no arquivo de ndice.

OFF (Padro) Especifica que os registros com valores de teclas de ndices duplicados sero
includos no arquivo de ndice.



Comentrios

Um arquivo de ndice mantm a definio SET UNIQUE quando REINDEX emitido. Para obter
maiores informaes, consulte INDEX e REINDEX.

SET UNIQUE esperado para a sesso de dados atual.




SET( ), funo


Retorna o status dos diversos comandos SET.

Sintaxe

SET(cSETComando [, 1 | 2])



Tipos de retorno

Caractere, Numrico

Argumentos

cSETComando Uma expresso de caracteres que especifica o comando SET para o qual voc
deseja que sejam retornadas informaes. A definio atual do comando especificado retornada
como uma seqncia numrica ou de caracteres.

1 | 2 Especifica que sero retornadas informaes adicionais sobre o comando SET.

A incluso desse argumento no retorna informaes 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 OFF
ALTERNATE, 1 NomeArquivo
CLOCK ON ou OFF
CLOCK, 1 nLinha e nColuna
COMPATIBLE ON ou OFF
COMPATIBLE, 1 PROMPT ou NOPROMPT
CURRENCY LEFT ou RIGHT
CURRENCY, 1 cSmboloMonetrio
DATE AMERICAN, ANSI, BRITISH/FRENCH, GERMAN, ITALIAN, JAPAN, USA, MDY,
DMY ou YMD
DATE, 1 Formato da data:
0 - MDY
1 - DMY
2 - YMD
DELIMITERS ON ou OFF
DELIMITERS, 1 cDelimitadores
FIELDS ON ou OFF
FIELDS, 1 NomeCampo1, NomeCampo2, ...
FIELDS, 2 LOCAL ou GLOBAL
HELP ON ou OFF
HELP, 1 NomeCampo
KEY eExpresso2, eExpresso3
KEY, 1 eExpresso2
KEY, 2 eExpresso3
MESSAGE nLinha
MESSAGE, 1 cTextoMensagem
MOUSE ON ou OFF
MOUSE, 1 nSensibilidade
PRINTER ON or OFF
PRINTER, 2 Nome da impressora padro
RESOURCE ON ou OFF
RESOURCE, 1 NomeArquivo
TALK ON ou OFF
TALK, 1 WINDOW, NOWINDOW ou NomeJanela
TEXTMERGE ON ou OFF
TEXTMERGE, 1 cDelimitadorEsquerdo e cDelimitadorDireito
TOPIC cNomeTpicoAjuda | lExpresso
TOPIC, 1 nIDContexto

Comentrios

A funo SET( ) reconhece a abreviao 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 funo SET( ) idntica a SYS(2001).


























SETFLDSTATE( ), funo


Atribui um valor de campo ou de estado de excluso a um campo ou registro de uma tabela ou
cursor.

Sintaxe

SETFLDSTATE(cNomeCampo | nNmeroCampo, nEstadoCampo
[, cAliasTabela | nreaTrabalho])



Tipos de retorno

Lgico

Argumentos

cNomeCampo | nNmeroCampo Especifica o nome ou o nmero do campo para o qual o status de
edio ou excluso est atribudo. O nmero do campo nNmeroCampo corresponde posio do
campo na estrutura do cursor local. DISPLAY STRUCTURE ou FIELD( ) pode ser utilizado para
determinar o nmero de um campo.

Para definir o status de excluso para o registro, inclua 0 como o nmero do campo.

nEstadoCampo Especifica um valor para o campo ou status de excluso. A tabela a seguir lista o
valor de campo ou de estado de excluso e o status de edio ou excluso correspondente.

NEstadoCampo Status de edio ou excluso

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


cAliasTabela Especifica o alias de tabela includo foi editado ou o status de excluso foi alterado
para o registro includo.
nreaTrabalho Especifica a rea de trabalho da tabela ou cursor em que o status de edio ou
excluso atribudo. O valor de campo ou de status de excluso atribudo tabela ou ao cursor
aberto na rea de trabalho selecionada no momento. Isso ocorre quando SETFLDSTATE( )
emitido sem o argumento adicional cAliasTabela ou nreaTrabalho.



Comentrios

O Visual FoxPro utiliza valores de estado de campo para determinar os campos de tabelas ou
cursores que so 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 funo

O exemplo a seguir demonstra como possvel utilizar SETFLDSTATE( ) para alterar o status do
campo. MULTILOCKS definido como ON, um requisito para utilizao do buffer de tabela. A
tabela customer no banco de dados testdata aberta e CURSORSETPROP( ) , em seguida,
utilizado para definir o modo de utilizao de buffer para utilizao do buffer de tabela otimista (5).
GETFLDSTATE( ) emitida para exibir um valor (1) correspondente ao estado no 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 (no
modificado). GETFLDSTATE( ) emitido novamente e exibe 1, correspondente ao estado do
campo cust_id atribudo por SETFLDSTATE( ). TABLEREVERT( ) utilizado para retornar a
tabela ao seu estado original.

CLOSE DATABASES
SET MULTILOCKS ON && Deve estar ativo para a utilizao do buffer de tabela
SET PATH TO (HOME( ) + 'samples\data\') && Define o caminho para o banco de dados
OPEN DATABASE testdata && Abre o banco de dados testdata
USE Customer && Abre a tabela customer
= CURSORSETPROP('Utilizao do buffer', 5, 'customer') && Ativa a utilizao do buffer de
tabela

CLEAR
? GETFLDSTATE('cust_id') && Exibe 1, no modificado
REPLACE cust_id WITH '***' && Altera o contedo dos campos

? GETFLDSTATE('cust_id') && Retorna 2, campo modificado
= SETFLDSTATE('cust_id', 1) && Altera o status do campo
? GETFLDSTATE('cust_id') && Exibe 1, no modificado
= TABLEREVERT(.T.) && Descartar todas as alteraes de tabela


SHOW MENU, comando


Exibe uma ou mais barras de menus definidas pelo usurio sem ativ-las.

Sintaxe

SHOW MENU NomeBarraMenus1 [, NomeBarraMenus2 ...] | ALL
[PAD NomeTtuloMenu]
[SAVE]



Argumentos

NomeBarraMenus1 [, NomeBarraMenus2 ...] Especifica o nome de uma ou mais barras de menus
para exibio.

ALL Exibe todas as barras de menus atualmente definidas.

PAD NomeTtuloMenu Especifica um ttulo de menu a ser destacado em uma barra de menus.

SAVE Retm uma imagem das barras de menus especificadas sem ativ-las. Para limpar as
imagens das barras de menus, utilize CLEAR.



Comentrios

As barras de menus so exibidas, mas no podem ser utilizadas. Antes de exibir as barras de menus,
preciso cri-las com DEFINE MENU.


SHOW MENU, exemplo do comando

CLEAR
DEFINE MENU mnuExample BAR AT LINE 2
DEFINE PAD padConv OF mnuExample PROMPT '\<Converses' 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.

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 Retm uma imagem dos menus especificados, sem ativ-los. As imagens de menus podem
ser apagadas com CLEAR.



Comentrios

Os menus so exibidos, mas no 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 usurio 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 usurio.

SCREEN Exibe a janela principal do Visual FoxPro quando ela est oculta. Voc tambm pode
escolher Screen, no menu Janela, para exibir a janela principal do Visual FoxPro. possvel ocultar
a janela principal do Visual FoxPro clicando na caixa de fechamento ou ento 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 no assume as caractersticas da janela pai. Uma janela exibida dentro de
uma janela pai no pode ser movida para fora desta. Se a janela pai for movida, a janela filho
tambm 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 padro, as janelas so colocadas na janela principal do
Visual FoxPro.

REFRESH Redesenha uma janela Pesquisar. Isto til em uma rede, para garantir que voc
pesquise a verso mais recente de uma tabela. A rea de trabalho da tabela da janela Pesquisar
selecionada.

As janelas de edio de memo so atualizadas quando outros usurios de uma rede fazem
alteraes no campo Memo. SET REFRESH determina o intervalo entre as atualizaes das janelas
de edio de memo. Consulte SET REFRESH para obter informaes adicionais sobre como os
dados so atualizados nas tabelas abertas para uso compartilhado em uma rede.

TOP Coloca a janela especificada na frente de todas as outras janelas.

BOTTOM Coloca a janela especificada atrs de todas as outras janelas.

SAME Coloca a janela especificada de volta em uma pilha de janelas, na mesma posio 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 Mantm uma imagem da janela, depois que esta liberada, na janela principal do FoxPro ou
em outra janela. Normalmente, as janelas so removidas da janela principal do FoxPro aps serem
liberadas. A imagem da janela pode ser apagada da janela principal do Visual FoxPro ou de uma
janela com CLEAR.



Comentrios

SHOW WINDOW controla a exibio e a colocao das janelas na tela. Se uma janela est oculta
ou no 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 trs.

Voc tambm 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 Layout Criador de relatrios
Criador de banco de dados Visualizar impresso Padro
Controle de formulrios Criador de consultas Criador de visualizaes
Criador de formulrios Controles de relatrio


Para exibir uma janela de sistema, coloque o nome completo dessa janela entre aspas.
Voc no pode especificar para onde a sada ser direcionada nas janelas definidas pelo usurio
com SHOW WINDOW. Utilize ACTIVATE WINDOW para direcionar a sada para uma janela
definida pelo usurio 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 sada no poder ser direcionada para a janela enquanto esta no
for ativada.

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Sada' ;
CLOSE FLOAT GROW SHADOW ZOOM
SHOW WINDOW wOutput1














SIGN( ), funo



Retorna um valor numrico de 1, 1 ou 0 se a expresso numrica especificada resultar em um valor
positivo, negativo ou 0.

Sintaxe

SIGN(nExpresso)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica a expresso numrica resultante da funo SIGN( ). SIGN( ) retorna 1 se
nExpresso resulta em um nmero positivo, 1 se nExpresso resulta em um nmero negativo e 0
se nExpresso resultar em 0.


SIGN( ), exemplo da funo

STORE 10 TO gnNum1
STORE -10 TO gnNum2
STORE 0 TO gnZero
CLEAR
? SIGN(gnNum1) && Exibe 1
? SIGN(gnNum2) && Exibe -1
? SIGN(gnZero) && Exibe 0

SIN( ), funo



Retorna o seno de um ngulo.

Sintaxe

SIN(nExpresso)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica um ngulo cujo seno retornado por SIN( ). nExpresso pode assumir
qualquer valor e o valor retornado por SIN( ) varia de 1 a 1.

Observao nExpresso especificado em radianos. Utilize DTOR( ) para converter um ngulo de
graus para radianos. O nmero de casas decimais exibido por SIN( ) pode ser especificado com SET
DECIMALS.


SIN( ), exemplo da funo

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 especfico. nLinha1 e
nColuna1 especificam, respectivamente, as novas coordenadas de linha e de coluna do canto
inferior direito do menu.

BY nLinha2, nColuna2 Altera o tamanho de um menu com relao ao seu tamanho atual. nLinha2
e nColuna2 especificam a alterao de tamanho do menu em linhas e colunas com relao s
coordenadas atuais de linha e de coluna do canto inferior direito do menu.



Comentrios

Se um menu definido pelo usurio tiver sido criado, seu tamanho poder ser alterado; ele no
precisar estar ativado ou visvel.
SIZE POPUP, exemplo do comando

Este exemplo cria um menu contendo arquivos com a extenso .PRG, bem como move, aumenta e
reduz o menu antes de fech-lo.

CLEAR
DEFINE POPUP popMovIn FROM 2,2 TO 7, 14 PROMPT FILES LIKE *.PRG ;
TITLE 'Programas'
ACTIVATE POPUP popMovIn NOWAIT
=CHRSAW(2)
MOVE POPUP popMovIn BY 5,5 && Move 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 possvel alterar o tamanho das janelas Comando, Depurar e Rastrear.

TO nLinha1, nColuna1 Altera o tamanho de uma janela para um tamanho especfico. 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 relao ao seu tamanho atual.
nLinha2 e nColuna2 especificam a alterao de tamanho da janela em linhas e colunas com relao
s coordenadas atuais de linha e de coluna do canto inferior direito da janela.



Comentrios

Se uma janela definida pelo usurio tiver sido criada, seu tamanho poder ser alterado; ela no
precisar estar ativada ou visvel.























SKIP, comando


Move o ponteiro do registro para frente e para trs em uma tabela.

Sintaxe

SKIP
[nRegistros]
[IN nreaTrabalho | cAliasTabela]



Argumentos

nRegistros Especifica o nmero de registros que sero percorridos pelo ponteiro do registro.

A emisso de SKIP sem nRegistros avanar o ponteiro para o prximo registro. Se nRegistros
resultar em um nmero positivo, o ponteiro do registro se mover em direo ao final dos registros
do arquivo nRegistros. Se nRegistros resultar em um nmero negativo, o ponteiro do registro se
mover em direo ao comeo 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 nmero 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 nreaTrabalho | cAliasTabela Move o ponteiro do registro em uma tabela dentro de uma rea
de trabalho especfica. nreaTrabalho especifica o nmero da rea de trabalho e cAliasTabela
especifica um alias de tabela ou de rea de trabalho.


Comentrios

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 seqncia de ndice.


SKIP, exemplo do comando

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
CLEAR

SKIP 4 IN 'customer'
? RECNO('customer') && Exibe 5
GO BOTTOM
SKIP -5
? RECNO( )












SKPPAD( ), funo



Determina se um ttulo de menu est ativado ou desativado com SET SKIP OF.

Sintaxe

SKPPAD(cNomeBarraMenus, cNomeTtuloMenu)



Tipos de retorno

Lgico

Argumentos

cNomeBarraMenus Especifica o nome da barra de menus que contm o ttulo de menu.

cNomeTtuloMenu Especifica o nome do ttulo de menu cujo status (ativado ou desativado)
retornado por SKPPAD( ).



Comentrios

SKPPAD( ) retornar verdadeiro (.T.) se o ttulo de menu estiver desativado e falso (.F.) se estiver
ativado.



SORT, comando


Classifica os registros na tabela atualmente selecionada e direciona a sada dos registros
classificados para uma nova tabela.

Sintaxe

SORT TO NomeTabela
ON NomeCampo1 [/A | /D] [/C]
[, NomeCampo2 [/A | /D] [/C] ...]
[ASCENDING | DESCENDING]
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[FIELDS ListaNomesCampos
| FIELDS LIKE Estrutura
| FIELDS EXCEPT Estrutura]
[NOOPTIMIZE]



Argumentos

NomeTabela Especifica o nome da nova tabela que contm os registros classificados. O Visual
FoxPro assume uma extenso de nome de arquivo .DBF para as tabelas. Se o nome do arquivo
includo no tiver uma extenso, .DBF ser automaticamente atribuda.

ON NomeCampo1 Especifica na tabela atualmente selecionada o campo em que se baseia a
classificao. O tipo de dados e o contedo do campo determinaro a ordem dos registros na nova
tabela. Como padro, a classificao feita em ordem ascendente. No possvel 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 so ordenados pelo
campo cust_id.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
CLEAR
LIST FIELDS company, cust_id NEXT 3
SORT TO temp ON cust_id
USE temp
LIST FIELDS company, cust_id NEXT 3
WAIT WINDOW 'Agora classificado por CUST_ID' NOWAIT



possvel incluir nomes de campos adicionais (NomeCampo2, NomeCampo3) para incrementar a
ordenao da nova tabela. O primeiro campo NomeCampo1 ser o campo de classificao primria,
o segundo campo NomeCampo2 ser o campo de classificao secundria, e assim por diante.

[/A | /D] [/C] Para cada campo includo na classificao, voc poder especificar uma ordem de
classificao ascendente ou descendente. /A especifica uma ordem ascendente para o campo. /D
especifica uma ordem descendente. /A ou /D podem ser includos em qualquer tipo de campo.

Como padro, a ordem de classificao de campos dos campos de caractere considera maisculas e
minsculas. Se voc incluir a opo /C aps o nome de um campo de caractere, as
maisculas/minsculas sero ignoradas. possvel combinar a opo /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.

USE orders
SORT TO clients ON order_date/A,freight/D

ASCENDING Especifica uma ordem ascendente para todos os campos no seguidos por /D.

DESCENDING Especifica uma ordem descendente para todos os campos no seguidos por /A.

Se voc omitir tanto ASCENDING quanto DESCENDING, como padro a ordem de classificao
ser ascendente.

Escopo Especifica um intervalo de registros a serem classificados. As clusulas de escopo so:
ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST.

O escopo padro para SORT ALL (todos os registros).

FOR lExpresso1 Especifica que somente os registros na tabela atual para os quais a condio
lgica lExpresso1 resulta em verdadeiro (.T.) so includos na classificao. A incluso de FOR
permitir classificar os registros condicionalmente, filtrando os registros indesejados.

O comando SORT ... FOR pode ser otimizado por meio da tecnologia Rushmore se lExpresso1 for
uma expresso otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na
clusula FOR.

Uma discusso sobre as expresses que podem ser otimizadas por meio da tecnologia Rushmore
aparece no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.

WHILE lExpresso2 Especifica uma condio em que os registros da tabela atual sero includos
na classificao desde que a expresso lgica lExpresso2 resulte em verdadeiro (.T.).

FIELDS ListaNomesCampos Especifica os campos da tabela original a serem includos na nova
tabela que SORT criar. Se voc omitir a clusula FIELDS, todos os campos da tabela original sero
includos na nova tabela.

FIELDS LIKE Estrutura Especifica que os campos da tabela original correspondentes estrutura
de campo Estrutura sero includos na nova tabela que SORT criar.

FIELDS EXCEPT Estrutura Especifica que todos os campos, exceto aqueles correspondentes
estrutura de campo Estrutura, sero includos 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 sero includos na nova tabela, utilize:

SORT TO mytable ON myfield FIELDS LIKE A*,P*



As clusulas LIKE e EXCEPT podem ser combinadas com a clusula EXCEPT:

SORT TO mytable ON myfield FIELDS LIKE A*,P* EXCEPT PARTNO*

NOOPTIMIZE Desativa a otimizao Rushmore do comando SORT.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.



Comentrios

Um ou mais campos especificados na tabela atual determinam a ordem em que os registros
aparecero na nova tabela.

Importante Certifique-se de que voc tem espao em disco suficiente para a nova tabela e para os
arquivos de trabalho temporrios criados durante a classificao. O espao em disco necessrio para
executar uma classificao pode ser at trs vezes o tamanho da tabela fonte. O espao em disco
disponvel pode ser determinado com DISKSPACE( ) e SYS(2020). Se voc ficar sem espao em
disco durante uma classificao, o Visual FoxPro exibir uma mensagem de erro, e os arquivos de
trabalho temporrios sero apagados.



Campos do tipo caractere que contm nmeros e espaos no devem ser classificados na ordem
desejada. Campos numricos so preenchidos da direita para a esquerda, com espaos vazios
esquerda. De forma contrria, campos de caractere so preenchidos da esquerda para a direita, com
espaos 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 contm 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 nmeros
baixos com zeros esquerda (0018) ou estabelea um campo numrico.





























SOUNDEX( ), funo


Retorna uma representao fontica da expresso de caracteres especificada.

Sintaxe

SOUNDEX(cExpresso)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres que resultam de SOUNDEX( ).



Comentrios

SOUNDEX( ) retorna uma seqncia de quatro caracteres. Comparando os resultados que
SOUNDEX( ) retorna para duas expresses de caracteres, possvel determinar se duas expresses
so parecidas foneticamente, indicando que elas tm sons parecidos. Isso pode ser til na procura de
registros duplicados em uma tabela.

SOUNDEX( ) no considera letras maisculas e minsculas e, geralmente, ignora vogais.


SOUNDEX( ), exemplo da funo

CLEAR
? SOUNDEX('Smith') = SOUNDEX('Smyth') && Exibe .T.
? SOUNDEX('Computador') && Exibe C513





























SPACE( ), funo


Retorna uma seqncia de caracteres composta por um nmero especificado de espaos.

Sintaxe

SPACE(nEspaos)



Tipos de retorno

Caractere

Argumentos

nEspaos Especifica o nmero de espaos que SPACE( ) retorna. O valor mximo de nEspaos
limitado apenas pela memria no Visual FoxPro.














SROWS( ), funo


Retorna o nmero de linhas disponveis na janela principal do Visual FoxPro.

Sintaxe

SROWS( )



Tipos de retorno

Numrico

Comentrios

No Visual FoxPro for Windows, o valor retornado por SROWS( ) depende do modo de visualizao
atual. O modo de visualizao pode ser alterado com SET DISPLAY.


SROWS( ), exemplo da funo

CLEAR
? SROWS( )







STORE, comando



Armazena dados para um elemento de matriz, uma matriz ou uma \varivel.

Sintaxe

STORE eExpresso TO ListaNomeVar | ListaNomeMatriz
Ou
NomeVar | NomeMatriz = eExpresso



Argumentos

eExpresso Especifica uma expresso cujo valor armazenado na varivel, matriz ou elemento de
matriz. Se a varivel no existir, ser criada e inicializada para eExpresso. Uma matriz deve ser
previamente definida com DIMENSION. STORE substitui o valor em uma varivel, matriz ou
elemento de matriz existente com o novo valor.

ListaNomeVart Especifica uma lista de variveis ou elementos de matriz na qual eExpresso
armazenada. Separe os nomes ou elementos de matriz por vrgulas.

ListaNomeMatriz Especifica uma lista de nomes de matrizes existentes na qual eExpresso
armazenada. Separe os nomes de matriz por vrgulas.

STORE inicializar cada elemento das matrizes para o valor especificado, se SET COMPATIBLE
estiver OFF. STORE armazenar o valor especificado em variveis de memria dos nomes
especificados, se SET COMPATIBLE estiver ON, sobregravando qualquer matriz existente que
contenha estes nomes.



Comentrios

Uma alternativa para STORE o operador de atribuio de sinal de igual (=). A varivel, 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 variveis, matrizes ou elementos de matriz ao
utilizar chaves:

STORE {12/25/95} TO gdXMas



O nmero mximo de variveis ou matrizes que se pode criar listado na tabela de Capacidades do
sistema . O limite pode ser aumentado ou diminudo no seu arquivo de configurao do Visual
FoxPro. Para obter maiores informaes sobre como configurar o Visual FoxPro, consulte o
captulo 3, Configurando o Visual FoxPro, no Guia de Instalao e ndice Principal.


STORE, exemplo do comando

STORE DATE( ) TO gdDate
STORE 50 TO gnNumeric
STORE 'Al' TO gcCharacter
STORE .T. TO glLogical
STORE $19.99 TO gyCurrency

DIMENSION gaMyArray(2,2)
SET COMPATIBLE OFF
STORE 2 TO gaMyArray

CLEAR
DISPLAY MEMORY LIKE g*






























STR( ), funo



Retorna o equivalente de caractere de uma expresso numrica especificada.

Sintaxe

STR(nExpresso [, nComprimento [, nCasasDecimais]])



Tipos de retorno

Caractere

Argumentos

nExpresso Especifica a expresso numrica retornada por STR( ).

nComprimento Especifica o comprimento da seqncia de caracteres que STR( ) retorna. O
comprimento inclui um caractere para o ponto decimal e um caractere para cada dgito direita do
ponto decimal.

STR( ) aumentar a seqncia de caracteres que retorna com espaos esquerda se voc especificar
um comprimento maior que o nmero de dgitos esquerda do ponto decimal. STR( ) retornar uma
seqncia de asteriscos indicando a capacidade numrica se voc especificar um comprimento
menor que o nmero de dgitos esquerda do ponto decimal.

nCasasDecimais Especifica o nmero de casas decimais na seqncia de caracteres que STR( )
retorna. necessrio incluir nComprimento para especificar o nmero de casas decimais.

Se voc especificar menos casas decimais das que esto em nExpresso, os dgitos extras sero
truncados.





























STUFF( ), funo


Retorna uma seqncia de caractere criada substituindo um nmero especfico de caracteres em
uma expresso de caracteres com outra expresso de caracteres.

Sintaxe

STUFF(cExpresso, nIniciarSubstituio, nCaracteresSubstitudos, cSubstituio)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres na qual ocorre a substituio.

nIniciarSubstituio Especifica a posio em cExpresso onde comea a substituio.

nCaracteresSubstitudos Especifica o nmero de caracteres a serem substitudos. Se
nCaracteresSubstitudos for 0, a seqncia de substituies cSubstituio ser inserida em
cExpresso.

cSubstituio Especifica a expresso de caracteres de substituio. Se cSubstituio for a
seqncia vazia, o nmero de caracteres especificados por nCaracteresSubstitudos sero removidos
de cExpresso.

STUFF( ), exemplo da funo

STORE 'abcdefghijklm' TO gcString1
STORE '12345' TO gcString2
CLEAR
? 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( ), funo


Retorna uma seqncia de caracteres criada para substituir um nmero especfico de caracteres em
uma expresso de caracteres com outra expresso de caracteres.

Sintaxe

STUFFC(cExpresso, nIniciarSubstituio, nCaracteresSubstitudos, cSubstituio)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres na qual ocorre a substituio.

nIniciarSubstituio Especifica a posio de caractere em cExpresso onde comea a substituio.

nCaracteresSubstitudos Especifica o nmero de caracteres a serem substitudos. Se
nCaracteresSubstitudos for 0, a seqncia de substituio completa cSubstituio ser inserida em
cExpresso.

cSubstituio Especifica a expresso de caracteres de substituio. Se cSubstituio a seqncia
vazia, o nmero de caracteres especificados por nCaracteresSubstitudos so removidos de
cExpresso.

Comentrios

STUFFC( ) criado para expresses que contm caracteres byte duplo. Se a expresso contiver
apenas caracteres de byte nico, STUFFC( ) ser equivalente a STUFF( ).

STUFFC( ) retorna uma seqncia de caracteres criada substituindo-se um nmero especfico de
caracteres em uma expresso de caracteres por outra expresso de caracteres. As expresses de
caracteres podem consistir em alguma combinao de caracteres de byte nico e byte duplo.
























SUBSTR( ), funo


Retorna uma seqncia de caracteres da expresso de caracteres ou campo de dados fornecido.

Sintaxe

SUBSTR(cExpresso, nIniciarPosio [, nCaracteresRetornados])



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres ou campo Memo a partir da qual a seqncia de
caracteres retornada.

IniciarPosio Especifica a posio na expresso de caracteres ou campo Memo cExpresso a
partir da qual a seqncia de caracteres retornada. O primeiro caractere de cExpresso tem a
posio 1.

Se TALK for SET ON e nIniciarPosio for maior que o nmero de caracteres em cExpresso, o
Visual FoxPro ir gerar uma mensagem de erro. Se TALK for SET OFF, a seqncia vazia ser
retornada.

nCaracteresRetornados Especifica o nmero de caracteres a serem retornados de cExpresso. Se
voc omitir nCaracteresRetornados, os caracteres sero retornados at que se chegue ao fim da
expresso de caracteres.



Comentrios

SUBSTR( ) retorna uma seqncia de caracteres de uma expresso de caracteres ou de um campo
Memo, comeando em uma posio especificada na expresso de caracteres ou no campo Memo e
continuando por um nmero especificado de caracteres.

SUBSTR( ) no 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 funo

STORE 'abcdefghijklm' TO mystring
CLEAR
? SUBSTR(mystring, 1, 5) && Exibe abcde
? SUBSTR(mystring, 6) && Exibe fghijklm















SUBSTRC( ), funo


Retorna uma seqncia de caracteres a partir da expresso de caracteres ou do campo Memo
fornecido.

Sintaxe

SUBSTRC(cExpresso, nIniciarPosio [, nCaracteresRetornados])



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres ou campo Memo a partir da qual a seqncia de
caracteres retornada.

nIniciarPosio Especifica a posio da expresso de caracteres ou do campo Memo cExpresso
de onde a seqncia de caracteres retornada. O primeiro caractere de cExpresso tem a posio 1.

Se TALK for definida como (ON) e nIniciarPosio for maior que o nmero de caracteres em
cExpresso, o Visual FoxPro ir gerar uma mensagem de erro. Se TALK for definida como (OFF),
retornada a seqncia vazia.

nCaracteresRetornados Especifica o nmero de caracteres a serem retornados de cExpresso. Se
voc omitir nCaracteresRetornados, os caracteres sero retornados at que o final da expresso de
caracteres seja atingido.

Comentrios

SUBSTRC( ) criado para expresses que contenham caracteres de byte duplo. Se a expresso
contiver apenas caracteres de byte nico, SUBSTRC( ) ser equivalente a SUBSTR( ).

SUBSTRC( ) retorna uma seqncia de caracteres a partir do campo Memo ou da expresso de
caracteres fornecida. A expresso de caracteres ou o campo Memo pode conter qualquer
combinao de caracteres de byte nico e de byte duplo.

SUBSTRC( ) no 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( ).



















SUM, comando


Totaliza todos campos numricos ou os especificados na tabela atualmente selecionada.

Sintaxe

SUM [eListaExpresso]
[Escopo] [FOR lExpresso1] [WHILE lExpresso2]
[TO ListaNomeVarMem | TO ARRAY NomeMatriz]
[NOOPTIMIZE]



Argumentos

eListaExpresso Especifica um ou mais campos ou expresses de campos a serem totalizados. Se
voc omitir a lista de expresso de campos, todos os campos numricos sero totalizados.

Escopo Especifica um intervalo de registros a ser includo no total. As clusulas de escopo so:
ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST.

O escopo padro para SUM registros ALL.

FOR lExpresso1 Especifica que apenas os registros para os quais a condio lgica lExpresso1
resulta em verdadeiro (.T.) so includos no total. A incluso de FOR permite totalizar os registros
de modo condicional filtrando os registros indesejveis.

Um comando SUM ... FOR ter otimizao Rushmore se lExpresso1 for uma expresso
otimizvel. Para melhor desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes sobre a otimizao Rushmore, consulte SET OPTIMIZE e
Utilizando a tecnologia Rushmore para acelerar o acesso a dados, no captulo 15, Otimizando
aplicativos, no Guia do Desenvolvedor.

WHILE lExpresso2 Especifica uma condio pela qual os registros da tabela atual so includos
no total enquanto a expresso lgica lExpresso2 resultar em verdadeiro (.T.).

TO ListaNomeVarMem Armazena cada total em uma varivel. Se voc especificar uma varivel
em ListaNomeVarMem que no existe, o Visual FoxPro a criar automaticamente. Separe os nomes
das variveis na lista com vrgulas.

TO ARRAY NomeMatriz Armazena os totais em uma matriz de varivel. Se a matriz especificada
em SUM no 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 otimizao Rushmore de SUM.

Para obter maiores informaes, consulte SET OPTIMIZE e Utilizando a tecnologia Rushmore
para acelerar o acesso a dados, no captulo 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 DATABASES
OPEN 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






















SUSPEND, comando



Pausa a execuo do programa e retorna ao Visual FoxPro interativo.

Sintaxe

SUSPEND



Comentrios

Enquanto um programa pausado, possvel executar comandos de interveno, verificar os
valores de varivel, abrir as janelas Rastrear e Depurar e assim por diante.

Todas as variveis criadas enquanto o programa est pausado so PRIVATE.

Utilize RESUME para reiniciar a execuo de um programa suspenso. A execuo do programa
continua com a linha que segue a linha contendo SUSPEND.









C
CCO
OOM
MMA
AAN
NND
DDO
OOS
SS S
SSY
YYS
SS(
((?
???
???
??)
))

SYS(0) - Informaes do computador da rede

SYS(0) retorna as informaes do computador da rede ao utilizar o Visual FoxPro em um ambiente
de rede.

Sintaxe

SYS(0)



Tipos de retorno

Caractere

Comentrios

As informaes do computador devem, em primeiro lugar, ser atribudas pelo software da rede e a
shell da rede deve ser carregada.

Se as informaes do computador no tiverem sido atribudas ou a shell da rede no tiver sido
carregada, SYS(0) retornar uma seqncia de caracteres que consistir de 15 espaos, um sinal de
nmero (#) seguido por um outro espao e ento 0. Consulte a sua documentao de rede para obter
maiores informaes sobre como definir as informaes 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 usurio.


SYS(1) - Dia do sistema Juliano



Retorna a data atual do sistema como uma seqncia de caracteres de nmero de dia Juliano.

Sintaxe

SYS(1)



Tipos de retorno

Caractere

Comentrios

O valor retornado por SYS(1) vlido nos E.U.A. Voc pode obter verses do Visual FoxPro em
qualquer data do sistema aps 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(10) - Seqncia a partir do nmero de dia juliano


Converte um nmero de dia juliano para uma seqncia de caracteres.

Sintaxe

SYS(10, nNmeroDiaJuliano)



Tipos de retorno

Caractere

Comentrios

SYS(10) retorna uma data de tipo Caractere a partir de um nmero de dia juliano,
nNmeroDiaJuliano.


SYS(10) - Exemplo de seqncia a partir do nmero de dia juliano

? SYS(1)
? SYS(10,VAL(SYS(1)))









SYS(100) - Definio da console


Retorna a definio atual de SET CONSOLE.

Sintaxe

SYS(100)



Tipos de retorno

Caractere


SYS(100) - Exemplo de definio da console

IF SYS(100) != 'ON'
SET CONSOLE ON
ENDIF














SYS(1001) - Memria do Visual FoxPro


Retorna a quantidade total de memria disponvel para o gerenciador de memria do Visual
FoxPro.

Sintaxe

SYS(1001)



Tipos de retorno

Caractere

Comentrios

No Visual FoxPro, SYS(1001) retorna o tamanho de reserva de memria virtual, que
aproximadamente quatro vezes a quantidade de memria fsica.














SYS(101) - Definio do dispositivo


Retorna a definio atual de SET DEVICE.

Sintaxe

SYS(101)



Tipos de retorno

Caractere


SYS(101) - Exemplo de definio de dispositivo

IF SYS(101) != 'SCREEN'
SET DEVICE TO SCREEN
ENDIF














SYS(1016) - Uso da memria de objeto do usurio


Retorna a quantidade de memria sendo utilizada pelos objetos definidos.

Sintaxe

SYS(1016)



Tipos de retorno

Caractere

Comentrios

Os objetos definidos pelo usurio incluem: janelas definidas pelo usurio, barras de menus, menus,
variveis, matrizes, tabelas abertas, arquivos abertos com funes de arquivo de nvel baixo e assim
por diante.













SYS(102) - Definio da impressora


Retorna a definio atual de SET PRINTER.

Sintaxe

SYS(102)



Tipos de retorno

Caractere


SYS(102) - Exemplo de definio de impressora

IF SYS(102) != 'OFF'
SET PRINTER OFF
ENDIF














SYS(1023) - Ativar modo de diagnstico da Ajuda

Ativa o modo de diagnstico da Ajuda, permitindo que voc desvie HelpContextID passada para o
sistema de Ajuda do Visual FoxPro.

Sintaxe

SYS(1023)



Tipos de retorno

Caractere

Comentrios

SYS(1023) til para depurao de um sistema de Ajuda personalizado em seu aplicativo.
SYS(1023) retorna a seqncia vazia.

Quando o modo de diagnstico da Ajuda for ativado com SYS(1023), uma caixa de dilogo ser
exibida sempre que voc pressionar F1 ou emitir HELP. A caixa de dilogo exibe HelpContextID a
ser passada para o sistema de Ajuda do Visual FoxPro e ser dada a opo 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
tpico da Ajuda correspondente (se disponvel) ser exibido. Se voc selecionar No,
HelpContextID no ser passada ao sistema de Ajuda do Visual FoxPro e o tpico da Ajuda
correspondente no ser exibido.

Use SYS(1024) para desativar o modo de diagnstico da Ajuda e restaurar o processamento do
sistema de Ajuda padro do Visual FoxPro.
































SYS(1024) - Desativar o modo de diagnstico da Ajuda


Desativa o modo de diagnstico da Ajuda ativado ao emitir SYS(1023).

Sintaxe

SYS(1024)



Tipos de retorno

Caractere

Comentrios

Utilize SYS(1024) para desativar o modo de diagnstico da Ajuda ativado com SYS(1023) e
restaurar o processamento do sistema de Ajuda padro do Visual FoxPro. SYS(1023) utilizada
para depurar um sistema de Ajuda personalizado em seu aplicativo.

SYS(1024) retorna a seqncia vazia.











SYS(103) - Definio da comunicao


Retorna a definio atual de SET TALK.

Sintaxe

SYS(103)



Tipos de retorno

Caractere


SYS(103) - Exemplo de definio de comunicao

IF SYS(103) != 'ON'
SET TALK ON
ENDIF














SYS(11) - Nmero de dia juliano



Converte uma expresso de data ou seqncia de caracteres em um formato de data para um nmero
de dia Juliano.

Sintaxe

SYS(11, dExpresso | tExpresso | cExpresso)



Tipos de retorno

Caractere

Comentrios

SYS(11) retorna um nmero de dia juliano a partir de uma expresso de data, dExpresso, de uma
expresso de data e hora, tExpresso ou de uma expresso de caracteres, cExpresso em uma
formato de data. O nmero do dia ser retornado como uma seqncia de caracteres.


SYS(11) - Exemplo de nmero de dia juliano

? SYS(11, {10/31/95})
? SYS(11,'10/31/95')





SYS(12) - Memria disponvel em bytes


Retorna a quantidade de memria abaixo de 640K disponvel para executar um programa externo.

Sintaxe

SYS(12)



Tipos de retorno

Caractere

Comentrios

No Visual FoxPro, SYS(12) sempre retorna 655.360.

SYS(12) semelhante a MEMORY( ), com duas excees:

SYS(12) retorna a quantidade de memria disponvel em bytes. MEMORY( ) retorna a
memria disponvel em kilobytes.
SYS(12) retorna uma seqncia de caracteres. MEMORY( ) retorna um valor numrico.









SYS(13) - Status da impressora


Retorna o status da impressora.

Sintaxe

SYS(13)



Tipos de retorno

Caractere

Comentrios

OFFLINE ser retornado se a impressora no 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 no
selecionada.


SYS(13) - Exemplo de status da impressora

IF SYS(13) = 'OFFLINE'
WAIT WINDOW 'A impressora est off-line'
ENDIF

SYS(14) - Expresso de ndice


Retorna a expresso de ndice de um arquivo de ndice .IDX de entrada nica aberto ou expresses
de ndice para marcas em arquivos de ndice .CDX compostos.

Sintaxe

SYS(14, nNmerondice [, nreaTrabalho | cAliasTabela])



Tipos de retorno

Caractere

Argumentos

nNmerondice Especifica qual expresso de ndice ser retornada das marcas ou arquivos de
ndice abertos. SYS(14) retornar expresses de ndice das marcas e arquivos de ndice abertos na
seguinte ordem conforme nNmerondice aumenta de 1 para o nmero total de arquivos de entrada
nica abertos e marcas de ndice composto independente e composto estrutural:

1. As expresses de ndice de arquivos de ndice de entrada nica (se estiverem abertos) so
retornados em primeiro lugar. A ordem em que os arquivos de ndice de entrada nica so includos
em USE ou SET INDEX determina a ordem em que as expresses de ndice so retornadas.
2. As expresses de ndice para cada marca no ndice composto estrutural (se presente) so
retornadas em seguida. As expresses de ndice so retornadas de marcas na ordem em que as
mesmas foram criadas no ndice estrutural.

3. As expresses de ndice para cada marca em quaisquer ndices compostos independentes
abertos so retornadas por ltimo. As expresses de ndice so retornadas a partir das marcas na
ordem em que foram criadas em ndices compostos independentes.

A seqncia vazia ser retornada se nNmerondice for maior que o nmero total de arquivos de
entrada nica abertos e marcas de ndice composto independente e composto estrutural.

nreaTrabalho | cAliasTabela Especifica um nmero da rea de trabalho ou alias da rea de
trabalho. Se voc omitir nreaTrabalho e cAliasTabela, as expresses de ndice sero retornadas de
arquivos de ndice abertos na rea de trabalho atual. Se uma tabela no contiver o alias especificado,
o Visual FoxPro ir gerar uma mensagem de erro.



Comentrios

Uma expresso de ndice especificada quando uma marca ou arquivo de ndice for criado com
INDEX. A expresso 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 informaes sobre expresses de ndice e como criar marcas e arquivos de
ndice, consulte INDEX. SYS(14) semelhante funo 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 combinao de arquivos de ndice de entrada nica,
nomes de arquivo de ndice composto independente ou composto estrutural, pode ser includa na
lista de arquivo de ndice.
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 contm o
item de menu.



Comentrios

Consulte Nomes do menu de sistema para obter uma lista de nomes de item de menu e menus do
Visual FoxPro. Voc pode tambm utilizar SYS(2013) - Seqncia 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 usurio e os itens de menu do sistema desativados no podem ser
ativados com SYS(1500).

SYS(1500) retorna a seqncia 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 colado
MODIFY COMMAND myprog NOWAIT && Abre um arquivo de programa
SYS(1500, '_MED_PASTE', '_MEDIT') && Cola um item de menu




















SYS(16) - Nome de arquivo do programa em execuo

Retorna o nome de arquivo do programa sendo executado.

Sintaxe

SYS(16 [, nNvelPrograma])



Tipos de retorno

Caractere

Argumentos

nNvelPrograma Indica a partir de quantos nveis anteriores o nome do programa carregado. Este
valor pode variar de 1 para a profundidade em que os programas so aninhados.

Se nNvelPrograma 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
nNvelPrograma for omitido. A seqncia vazia ser retornada se nNvelPrograma for maior que a
profundidade de aninhamento do programa.



Comentrios

Esta opo til para recuperao 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 funo estiver sendo executada, SYS(16) retornar o nome do arquivo
contendo o procedimento ou funo depois do nome da funo ou procedimento.

Quando o programa em execuo for parte de um aplicativo (.APP), SYS(16) retornar o nome do
programa o caminho no ser retornado com o nome do programa.


SYS(16) - Exemplo do nome de arquivo do programa em execuo

O aninhamento do programa retornado no breve exemplo de programa a seguir:

STORE 1 TO gnX
DO 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

Comentrios

Esta funo retorna o tipo da unidade de processamento central sendo utilizada: 80386, 80486 e
assim por diante.

Observao Para obter maiores informaes sobre o tipo do processador, voc pode solicitar a
funo FxGestalt( ) na biblioteca Foxtools.



SYS(17) - Exemplo de processador em uso

? 'Processador em uso: ', SYS(17)






SYS(2) - Segundos desde a meia-noite


Retorna o nmero 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)















SYS(2000) - correspondncia 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 no pode conter os
curingas ? e *.

1 Retorna o nome do prximo arquivo correspondente.



Comentrios

A seqncia vazia ser retornada se um arquivo correspondente no for localizado.


SYS(2000) - exemplo da correspondncia de curinga de nome de arquivo

? SYS(2000,'FOX.*')
? SYS(2000,'FOX.*',1)


































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 definies; por exemplo, SET PRINTER ON,
SET PRINTER OFF e SET PRINTER TO FileName. Utilize SYS(2001) sem 1 ou 2 para retornar a
definio da chave ON ou OFF. Utilize SYS(2001) com 1 ou 2 para retornar as definies
adicionais. Consulte SET( ) para obter comandos SET para o qual informaes adicionais so
retornadas quando 1 ou 2 est includo.



Comentrios

SYS(2001) idntico a SET( ).


SYS(2001) - SET ... exemplo do status de comando

? SYS(2001,'PRINTER')
? SYS(2001,'PRINTER',1)































SYS(2002) - ativar ou desativar ponto de insero


Ativa ou desativa o ponto de insero.

Sintaxe

SYS(2002 [, 1])



Tipos de retorno

Nenhum

Comentrios

SYS(2002) desativa o ponto de insero. SYS(2002, 1) ativa o ponto de insero. Para obter
maiores informaes sobre ativao e desativao do ponto de insero, consulte SET CURSOR.















SYS(2003) - diretrio atual


Retorna o nome do diretrio atual na unidade padro.

Sintaxe

SYS(2003)



Tipos de retorno

Caractere

Comentrios

Voc pode utilizar SYS(5) para determinar a unidade atual.

















SYS(2004) - diretrio inicial do Visual FoxPro


Retorna o nome do diretrio a partir do qual o Visual FoxPro foi iniciado.

Sintaxe

SYS(2004)



Tipos de retorno

Caractere

Comentrios

SYS(2004) retorna o local do arquivo .ESL em um aplicativo em tempo de execuo distribudo do
Visual FoxPro.


SYS(2004) - exemplo do diretrio inicial do Visual FoxPro

? 'diretrio inicial do Visual FoxPro: ', SYS(2004)










SYS(2006) - placa de vdeo atual


Retorna o tipo de monitor e placa de vdeo que voc est utilizando.

Sintaxe

SYS(2006)



Tipos de retorno

Caracter


SYS(2006) - exemplo da placa de vdeo atual

? 'monitor/placa de vdeo atual: ', SYS(2006)
















SYS(2007) - Valor da soma de verificao


Retorna o valor da soma de verificao de uma expresso de caracteres.

Sintaxe

SYS(2007, cExpresso)



Tipos de retorno

Caractere

Comentrios

Uma soma de verificao pode ser utilizada para testar a validade dos dados ou para comparar duas
expresses de caracteres.

cExpresso Especifica a expresso de caracteres para a qual SYS(2007) retorna um valor da soma
de verificao.












SYS(2010) - Definies do arquivo CONFIG.SYS



Retorna a definio de arquivos em CONFIG.SYS.

Sintaxe

SYS(2010)



Tipos de retorno

Caractere

Comentrios

No FoxPro para MS-DOS, SYS(2010) retorna a definio de arquivos como uma seqncia de
caracteres em seu arquivo de configurao CONFIG.SYS.

No Visual FoxPro, SYS(2010) sempre retorna 255.

Muitos arquivos CONFIG.SYS contm uma linha que especifica o nmero mximo de arquivos que
podem ser abertos ao mesmo tempo no MS-DOS. Esta linha geralmente l FILES=NNN, onde
NNN um nmero. SYS(2010) retorna este nmero.

Um arquivo de configurao CONFIG.SYS no precisa ter uma definio de arquivos; alm disso,
voc no precisa ter um arquivo CONFIG.SYS. SYS(2010) retorna a definio de arquivos padro
do MS-DOS em cada caso.

O nmero retornado por SYS(2010) no o nmero de arquivos que voc pode abrir no Visual
FoxPro, FoxPro para Windows e FoxPro para MS-DOS. MS-DOS abre arquivos para seu prprio
uso. O Visual FoxPro e o FoxPro para Windows tambm abrem seu prprio uso interno e o nmero
desses arquivos abertos pode variar ao longo de uma sesso do FoxPro. A definio de arquivos em
seu arquivo CONFIG.SYS deve ser um pouco maior que o nmero de arquivos que voc gostaria de
abrir no Visual FoxPro.

Para obter maiores informaes sobre o arquivo de configurao 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

Comentrios

Ao contrrio das funes FLOCK( ), LOCK( ) e RLOCK( ), SYS(2011) no tenta bloquear a tabela
ou o registro.

A seqncia de registros retornada por SYS(2011) idntica mensagem exibida na barra de status
(Exclusivo, Registro desbloqueado, Registro bloqueado...).

SYS(2011) retorna Exclusivo apenas na estao de trabalho que abriu exclusivamente a tabela e
Registro desbloqueado apenas na estao 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 [, nreaTrabalho | cAliasTabela])



Tipos de retorno

Caractere

Argumentos

nreaTrabalho | cAliasTabela Especifica o nmero da rea de trabalho ou alias da tabela para a
tabela para a qual o tamanho de bloco do campo Memo retornado. nreaTrabalho especifica um
nmero da rea de trabalho e cAliasTabela especifica um alias de tabela. Se voc no 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 no estiver aberta na rea de trabalho especificada ou a tabela
no tiver um campo Memo.



Comentrios

Para obter maiores informaes sobre como especificar o tamanho do bloco do campo Memo para
uma tabela, consulte SET BLOCKSIZE.
SYS(2013) - Seqncia de nomes do menu do sistema


Retorna uma seqncia de caracteres delimitada por espao que contm os nomes internos do
sistema de menus do Visual FoxPro.

Sintaxe

SYS(2013)



Tipos de retorno

Caractere

Comentrios

SYS(2013) facilita a utilizao da barra de menus e dos menus de sistema do Visual FoxPro. A
seqncia de caracteres retornada contm o nome da barra de menus de sistema, seus ttulos de
menu e o nome de cada item nos menus.

SYS(2013) retorna os nomes dos ttulos de menu e os itens de menu em cada plataforma do FoxPro.
Consulte Nomes do menu de sistema para uma lista de ttulos de menu e itens de menu para uma
plataforma especfica do FoxPro.








SYS(2014) - Caminho mnimo



Retorna o caminho mnimo relativo ao diretrio 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 mnimo.
Se voc omitir Caminho, SYS(2014) retornar o caminho mnimo entre o arquivo e o diretrio
atual. Voc pode alterar o diretrio atual com SET DEFAULT.

Caminho Especifica um diretrio para o qual SYS(2014) retorna o caminho mnimo entre o
diretrio 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.



Comentrios

SYS(2014) pode ser utilizada com FULLPATH( ) para tornar os aplicativos portteis. Isto ,
quando fornecidas a localizao do programa atual e a localizao de outros arquivos utilizados
pelo programa, FULLPATH( ) e SYS(2014) alcanam os caminhos apropriados para esses
arquivos. Uma vez que os caminhos dos arquivos so determinados, os arquivos podem ser
acessados pelo programa.



























SYS(2018) - Parmetro da mensagem de erro



Retorna o parmetro da mensagem de erro para o erro mais recente.

Sintaxe

SYS(2018)



Tipos de retorno

Caractere

Comentrios

Certas mensagens de erro retornam informaes adicionais sobre a causa do erro. Por exemplo, se
voc fizer referncia a uma varivel que no existe, o nome da varivel ser includo na mensagem
de erro. SYS(2018) retorna essa informao adicional, denominada parmetro de mensagem de
erro. Os nomes de variveis e arquivos so tipos comuns de parmetros de mensagem de erro.

Suponha que voc tente executar um programa denominado REPORTS, mas o programa no existe.
O texto da mensagem de erro exibida :

File REPORTS does not exist.

REPORTS o parmetro da mensagem de erro e retornado por SYS(2018):

? SYS(2018)
SYS(2019) - Nome e localizao do arquivo de configurao


Retorna o nome e a localizao do arquivo de configurao do Visual FoxPro.

Sintaxe

SYS(2019)



Tipos de retorno

Caractere

Comentrios

O arquivo de configurao denominado CONFIG.FPW.

Se um arquivo de configurao no puder ser localizado, SYS(2019) retornar uma seqncia vazia.

O arquivo de configurao do Visual FoxPro localizado tipicamente no diretrio onde o Visual
FoxPro inicializado, mas pode ser localizado em qualquer lugar. O Visual FoxPro primeiro o
procura no diretrio de inicializao.

Se o arquivo de configurao no for localizado no diretrio de inicializao, o caminho do MS-
DOS ser, em seguida, procurado. Duas opes permitem relatar o Visual FoxPro onde seu arquivo
de configurao localizado e seu nome:

Voc pode criar uma varivel ambiental do MS-DOS denominada FOXPROWCFG com o
comando MS-DOS SET e pode armazenar a localizao e o nome de seu arquivo de configurao
em FOXPROCFG. No FoxPro para MS-DOS, a varivel ambiental do MS-DOS denominada
FOXPROCFG.
Quando voc inicia o Visual FoxPro, pode tambm utilizar a chave -C para designar um
arquivo de configurao. Inclua a localizao e o nome do arquivo de configurao imediatamente
aps -C.



Para obter informaes adicionais sobre o arquivo de configurao do Visual FoxPro, consulte o
captulo 3, Configurando o Visual FoxPro, no Guia de instalao e ndice principal.






















SYS(2020) - Tamanho padro de disco


Retorna o tamanho total em bytes do disco padro.

Sintaxe

SYS(2020)



Tipos de retorno

Caractere

Comentrios

O disco padro pode ser especificado com SET DEFAULT.

















SYS(2021) - Expresso de ndice filtrada


Retorna a expresso de filtragem para um arquivo de ndice de entrada nica aberto (.IDX) ou
expresses de filtragem para marcas em arquivos de ndice composto (.CDX).

Sintaxe

SYS(2021, nNmerondice [, nreaTrabalho | cAliasTabela])



Tipos de retorno

Caractere

Argumentos

nNmerondice A expresso numrica nNmerondice especifica a qual expresso de filtragem
retornar a partir dos arquivos de ndice abertos. SYS(2021) retorna expresses de filtragem a partir
de arquivos de ndice abertos na seguinte ordem como nNmerondice aumenta de 1 at o nmero
total de arquivos .IDX de entrada nica abertos e marcas de ndice composto independente e
composto estrutural:

1. Expresses de filtragem de arquivos .IDX de entrada nico (se algum estiver aberto) so
retornadas primeiro. A ordem na qual os arquivos .IDX de entrada nica so includos em USE ou
SET INDEX determina a ordem na qual as expresses de filtragem so retornadas.
2. As expresses de filtragem para cada marca no arquivo .CDX estrutural (se houver algum )
so retornadas em seguida. As expresses de filtragem so retornadas a partir das marcas na ordem
em que estas foram criadas no ndice estrutural.

3. As expresses de filtragem para cada marca em qualquer dos arquivos .CDX independentes
abertos so retornadas por ltimo. As expresses de filtragem so retornadas a partir das marcas na
ordem em que estas foram criadas nos ndices compostos independentes.

A seqncia vazia retornada se nNmerondice for maior que o nmero total de arquivos .IDX de
entrada nica abertos e marcas de arquivo .CDX independentes e estruturais.

nreaTrabalho Especifica o nmero 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 no tiver o alias especificado, o Visual FoxPro exibir uma mensagem de erro.



Comentrios

Voc pode criar ndices filtrados no Visual FoxPro. Se incluir a clusula FOR opcional em INDEX,
o arquivo de ndice agir como um filtro na tabela. Somente os registros que correspondem
expresso de filtragem lExpresso na clusula FOR esto disponveis para exibio e acesso. As
chaves de ndice so criadas no arquivo de ndice somente para esses registros.

A seqncia vazia ser retornada se um ndice ou marca de ndice for criada sem uma clusula
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 combinao de nomes de arquivo .IDX de entrada
nica, nomes de arquivo .CDX estrutural e nomes de arquivo .CDX independente pode ser includa
na lista de nome de arquivo de ndice.

SYS(2021) retorna expresses de filtragem a partir de arquivos de ndice abertos na rea de
trabalho atual a menos que voc inclua uma rea de trabalho especfica 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 no o disco
padro atual.

















SYS(2023) - caminho temporrio


Retorna o caminho no qual o Visual FoxPro armazena seus arquivos temporrios.

Sintaxe

SYS(2023)



Tipos de retorno

Caractere

Comentrios

possvel especificar o caminho no qual arquivos temporrios so armazenados incluindo o item de
configurao TMPFILES especial; em seu arquivo de configurao do Visual FoxPro.

Para obter informaes adicionais sobre o item de configurao TMPFILES especial, consulte o
captulo 3, Configurando o Visual FoxPro, no Guia de Instalao e ndice Principal.










SYS(2029) - Tipo de tabela



Retorna um valor correspondente ao tipo de tabela.

Sintaxe

SYS(2029 [, nreaTrabalho | cAliasTabela])



Tipos de retorno

Caractere

Argumentos

nreaTrabalho Especifica a rea de trabalho na qual a tabela aberta.

cAliasTabela Especifica o alias da tabela. Se voc omitir nreaTrabalho e cAliasTabela,
SYS(2029) retornar um valor para a tabela aberta na rea de trabalho selecionada no momento.



Comentrios

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 aberta
3 Verses anteriores de FoxPro, FoxBASE+, dBASE III PLUS e dBASE IV sem campo
Memo
48 Visual FoxPro com ou sem um campo Memo
67 Tabela do dBASE IV SQL sem campo Memo
99 Tabela do sistema do dBASE IV SQL com um campo Memo
131 Tabela do FoxBASE+ e dBASE III PLUS com um campo Memo
139 Tabela do dBASE IV com um campo Memo
203 Tabela do dBASE IV SQL com um campo Memo
245 Verses 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 DATABASES
OPEN DATABASE (SYS(2004) + 'samples\data\testdata')
USE Customer && Abre a tabela customer

CLEAR
DO CASE
CASE SYS(2029) = '3'
? 'Verses 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'
? 'Verses anteriores do FoxPro com um campo Memo'
ENDCASE




























SYS(21) - Controlando o nmero do ndice


Retorna, como uma seqncia de caracteres, o nmero da posio 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

Comentrios

O nmero da posio de ndice ser determinado pela ordem em que os arquivos de ndice .IDX e
marcas de ndice composto .CDX so 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 informaes sobre como especificar uma marca ou ndice de controle principal, consulte
SET INDEX, SET ORDER e USE.

0 ser retornado caso no 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 [, nreaTrabalho])



Tipos de retorno

Caractere

Comentrios

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 informaes sobre como especificar uma marca ou ndice de controle principal, consulte
SET INDEX, SET ORDER e USE.

A seqncia vazia ser retornada caso no 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).

nreaTrabalho Especifica o nmero 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.



SYS(23) - Utilizao de memria EMS do FoxPro



Retorna a quantidade de memria EMS (em segmentos de 16K) que est sendo atualmente utilizada
pela verso Padro (16 bits) do FoxPro para MS-DOS.

Sintaxe

SYS(23)



Tipos de retorno

Caractere

Comentrios

0 ser retornado se nenhuma memria EMS estiver em uso.

SYS(23) sempre retorna 0 na verso Estendida (32 bits) do FoxPro para MS-DOS e do Visual
FoxPro.











SYS(24) - Limite de memria EMS


Retorna a definio limite EMS em seu arquivo de configurao do FoxPro para MS-DOS.

Sintaxe

SYS(24)



Tipos de retorno

Caractere

Comentrios

SYS(24) retornar 0 na verso Padro do FoxPro para MS-DOS se um limite EMS no estiver
includo em seu arquivo de configurao.

SYS(24) sempre retorna 0 na verso Estendida (32 bits) do FoxPro para MS-DOS e Visual FoxPro.

Para obter informaes completas sobre esta definio de configurao, consulte o captulo 3,
Configurando o Visual FoxPro, no Guia de Instalao e ndice Principal.







SYS(3) - Nome de arquivo vlido


Retorna um nome de arquivo vlido que pode ser utilizado para criar arquivos temporrios.

Sintaxe

SYS(3)



Tipos de retorno

Caractere

Comentrios

SYS(3) pode retornar um nome no exclusivo quando emitida com sucesso em um computador
veloz. Utilize SUBSTR(SYS(2015), 3, 10) para criar um nome de arquivo vlido e exclusivo de oito
caracteres.













SYS(3050) - Definir tamanho do buffer de memria


Define o tamanho do buffer de memria de primeiro plano ou segundo plano.

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 plano
2 Segundo plano


nTamanhoMemBuff Especifica o tamanho mximo do buffer de memria em bytes. Se voc
especificar um valor para nTamanhoMemBuff menor que 256K bytes, o Visual FoxPro ir definir o
tamanho do buffer de memria para 256K bytes.

Especifica 0 para nTamanhoMemBuff para retornar o tamanho do buffer de memria ao valor de
inicializao do Visual FoxPro. Este valor depende da quantidade de memria do seu computador.
Se voc omitir nTamanhoMemBuff, SYS(3050) retornar o tamanho do buffer de memria para o
buffer especificado com nTipo.



Comentrios

SYS(3050) permite otimizar o desempenho do Visual FoxPro ajustando a quantidade da memria
que o Visual FoxPro atribui para os buffers de primeiro plano e de segundo plano. O buffer de
memria de primeiro plano a memria disponvel para Visual FoxPro quando operado em
primeiro plano como o aplicativo ativo no momento. O buffer de memria de segundo plano a
memria disponvel para Visual FoxPro o qual opera no segundo plano quando outro aplicativo o
de primeiro plano.

SYS(3050) retorna um valor numrico como uma seqncia de caracteres que indica a quantidade
mxima de memria 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 aps 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 inicializao padro do Visual FoxPro (333 milissegundos). Se voc omitir
nEsperarMilissegundos, SYS(3051) retorna o intervalo de tempo da tentativa de bloqueio.



Comentrios

SYS(3051) retorna um valor numrico como uma seqncia 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 definio SET REPROCESS quando tenta bloquear um
arquivo de ndice ou memo.

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 ndice
2 Memo


lHonorReprocess Especifica se o Visual FoxPro utiliza a definio SET REPROCESS para
tentativas de bloqueio malsucedidas de arquivos de ndice e memo.

Especifica verdadeiro (.T.) para utilizar a definio SET REPROCESS quando o Visual FoxPro
tenta bloquear arquivos especificados com nTipoArquivo. Especifica falso (.F.), o padro, para
substituir a definio 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 opo a mesma de comportamento de bloqueio nas
verses anteriores do FoxPro.

Se voc omitir lHonorReprocess, SYS(3052) retornar a definio atual para o arquivo especificado
com nTipoArquivo.



Comentrios

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 conteno de bloqueio do
arquivo se seu aplicativo utilizar processamento de transao.
SYS(3052) retorna um valor numrico de 0 como uma seqncia de caracteres (correspondendo a
falso (.F.)) ou 1 (correspondendo a verdadeiro (.T.)). Se lHonorReprocess includo em
SYS(3052), o valor retornado ser idntico ao valor lgico especificado para lHonorReprocess. Se
voc omitir lHonorReprocess, o valor retornado ser a definio atual para o tipo de arquivo
especificado com nTipoArquivo.











SYS(5) - Volume ou unidade de disco padro

Retorna o volume ou a unidade de disco padro atual do Visual FoxPro.

Sintaxe

SYS(5)



Tipos de retorno

Caractere

Comentrios

Esta funo retorna a unidade de disco padro atual do Visual FoxPro. Utilize SET DEFAULT para
especificar um volume ou unidade de disco padro.


SYS(5) - Exemplo de volume ou unidade de disco padro

IF _DOS OR _WINDOWS
SET 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

Comentrios

Esta funo retorna a definio atual de SET PRINTER TO.


SYS(6) - Exemplo de dispositivo de impressora atual

? SYS(6)
SET PRINTER TO output.txt
? SYS(6)










SYS(7) - Arquivo de formato atual


Retorna o nome do arquivo de formato atual.

Sintaxe

SYS(7 [, nreaTrabalho])



Tipos de retorno

Caractere

Argumentos

nreaTrabalho Especifica o nmero 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 nreaTrabalho.



Comentrios

Um arquivo de formato aberto com SET FORMAT. A seqncia vazia ser retornada se um
arquivo de formato no estiver aberto na rea de trabalho especificada.






SYS(9) - Nmero serial do Visual FoxPro

Retorna o nmero serial do seu Visual FoxPro.

Sintaxe

SYS(9)



Tipos de retorno

Caractere






















TABLEREVERT( ), funo


Ignora as alteraes 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 | nreaTrabalho]])



Tipos de retorno

Numrico

Argumentos

lTodasLinhas Determina se todas as mudanas feitas na tabela ou no cursor sero ignoradas. Se
lTodasLinhas for verdadeiro (.T.), e a utilizao do buffer de tabela estiver ativada, as alteraes
feitas em todos os registros da tabela ou do cursor sero ignoradas. Se lTodasLinhas for falso (.F.) e
a utilizao do buffer de tabela estiver ativada, somente as alteraes feitas no registro atual da
tabela ou do cursor sero ignoradas.

Se a utilizao do buffer de linha estiver ativada, o valor de lTodasLinhas ser ignorado, e as
alteraes feitas no registro atual da tabela ou do cursor sero ignoradas.

O valor padro de lTodasLinhas falso (.F.).

cAliasTabela Especifica o alias da tabela ou do cursor cujas alteraes sero ignoradas.

NreaTrabalho Especifica a rea de trabalho da tabela ou do cursor cujas alteraes sero
ignoradas.



Comentrios

A funo TABLEREVERT( ) retornar o nmero de registros cujas alteraes foram ignoradas.

Observao Em uma rede, os dados presentes atualmente no disco podero diferir dos dados
contidos no disco quando a tabela e o cursor foram criados. Outros usurios da rede podem ter
alterado os dados depois que a tabela foi aberta ou depois que o cursor foi criado.



A funo TABLEREVERT( ) no pode ignorar as alteraes feitas em uma tabela ou cursor onde a
utilizao do buffer de linha no esteja ativada. Se voc emitir TABLEREVERT( ), e a utilizao
do buffer de linha ou de tabela no estiver ativada, o Visual FoxPro ir gerar uma mensagem de
erro. Utilize a funo CURSORSETPROP( ) para ativar ou desativar a utilizao do buffer de linha
ou de tabela.

As alteraes sero ignoradas na tabela ou cursor aberto na rea de trabalho selecionada
atualmente, se TABLEREVERT( ) for emitida sem os argumentos opcionais cAliasTabela ou
nreaTrabalho.

A funo TABLEREVERT( ) no retorna um ponteiro de registro a sua posio original.


TABLEREVERT( ), exemplo da funo

O exemplo abaixo demonstra como a funo TABLEREVERT( ) pode ser utilizada para ignorar as
alteraes feitas a uma tabela com utilizao de buffer. MULTILOCKS definido como ON, um
requisito de utilizao do buffer de tabela. A tabela customer no banco de dados testdata aberta e
CURSORSETPROP( ) ser utilizado para definir o modo de utilizao de buffer para utilizao 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 ento exibido. TABLEREVERT( ) utilizado para retornar a tabela ao seu
estado original (TABLEUPDATE( ) poderia ser emitida para gravar fisicamente alteraes). O
valor revertido do campo cust_id ser, ento, exibido.

CLOSE DATABASES
SET MULTILOCKS ON && Deve estar ativado para a utilizao do buffer de tabela
SET PATH TO (HOME( ) + 'samples\data\') && Define caminho para o banco de dados
OPEN DATABASE testdata && Abre o banco de dados testdata
USE Customer && Abre a tabela customer
= CURSORSETPROP('Utilizao de buffer', 5, 'customer') && Ativa a utilizao do buffer de
tabela

CLEAR
? 'Valor original de cust_id: '
?? cust_id && Exibe o valor atual de cust_id
REPLACE cust_id WITH '***' && Altera o contedo do campo

? 'Novo valor de cust_id: '
?? cust_id && Exibe o novo valor de cust_id
= TABLEREVERT(.T.) && Ignora todas as alteraes na tabela
? 'Valor revertido de cust_id: '
?? cust_id && Exibe o valor revertido de cust_id


































TABLEUPDATE( ), funo


Grava fisicamente as alteraes feitas em uma linha, tabela ou cursor que esteja utilizando buffer.

Sintaxe

TABLEUPDATE([nLinhas [, lForar]] [, cAliasTabela | nreaTrabalho]
[, cMatrizErro])



Tipos de retorno

Lgico

Argumentos

nLinhas Especifica se as alteraes feitas na tabela ou no cursor sero gravadas fisicamente.Se
nLinhas for 0 e a utilizao do buffer de tabela ou de linha estiver ativo, apenas as alteraes feitas
no registro atual da tabela ou do cursor sero gravadas fisicamente.

Se nLinhas for 1 e a utilizao do buffer de tabela estiver ativa, as alteraes feitas em todos os
registros na tabela ou no cursor sero gravadas fisicamente. Se nLinhas for 1 e a utilizao do buffer
de linha estiver ativo, apenas as alteraes feitas no registro atual da tabela ou do cursor sero
gravadas fisicamente.

Se nLinhas for 2 e a utilizao do buffer de tabela estiver ativa, as alteraes feitas em todos os
registros na tabela ou no cursor sero gravadas fisicamente. Se nLinhas for 2 e a utilizao do buffer
de linha estiver ativo, apenas as alteraes feitas no registro atual na tabela ou no cursor sero
gravadas fisicamente.

Ao contrrio do que acontece com os valores 0 e 1 para nLinha, um erro no ocorre quando uma
alterao no pode ser gravada fisicamente e o Visual FoxPro continua a processar qualquer registro
restante na tabela ou no cursor. Se cMatrizErro for includa, uma matriz contendo informaes de
erro ser criada quando ocorrer um erro.

O valor padro para nLinhas 0.

lForar Determina se as alteraes feitas na tabela ou no cursor por outro usurio da rede sero
sobrescritas. Se lForar for verdadeiro (.T.), quaisquer alteraes feitas na tabela ou no cursor por
outro usurio da rede sero sobrescritas.

Se lForar for falso (.F.), o Visual FoxPro gravar fisicamente as alteraes na tabela ou no cursor,
comeando com o primeiro registro at o fim da tabela ou do cursor. Se um registro modificado por
outro usurio da rede for encontrado, o Visual FoxPro ir gerar um erro.

Quando o Visual FoxPro gera o erro , este pode ser gerenciado atravs da rotina ON ERROR, e esta
rotina pode emitir a funo TABLEUPDATE( ) com lForar definido para verdadeiro (.T.) a fim de
gravar fisicamente as alteraes feitas no registro. Opcionalmente, se uma transao 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 padro para lForar falso (.F.).

cAliasTabela Especifica o alias da tabela ou do cursor no qual as alteraes so gravadas
fisicamente.

nreaTrabalho Especifica a rea de trabalho da tabela ou do cursor no qual as alteraes so
gravadas fisicamente.

cMatrizErro Especifica o nome de uma matriz criada quando nLinhas 2 e altera um registro que
no pode ser gravado fisicamente. A matriz possui uma coluna simples contendo o nmero dos
registros para os quais as alteraes no puderam ser gravadas fisicamente.



Comentrios

A funo TABLEUPDATE( ) retornar verdadeiro (.T.) se as alteraes feitas em todos os registros
forem gravadas fisicamente; do contrrio, TABLEUPDATE( ) retornar falso (.F.). Se voc
especificar 0 ou 1 nLinha, o ponteiro do registro permanece em um registro onde as alteraes no
puderam ser gravadas fisicamente e pode emitir AERROR( ) para determinar porque as alteraes
no puderam ser gravadas.

A funo TABLEUPDATE( ) no poder gravar fisicamente as alteraes feitas em uma tabela ou
cursor que no tenha a utilizao do buffer de linha ou de tabela ativada. Se voc emitir
TABLEUPDATE( ), e a utilizao do buffer de linha no estiver ativada, o Visual FoxPro ir gerar
uma mensagem de erro. Entretanto, TABLEUPDATE( ) ainda poder gravar fisicamente alteraes
em uma tabela ou cursor que possua regras de validao. Utilize CURSORSETPROP( ) para ativar
ou desativar a utilizao do buffer de linha ou de tabela.

As alteraes so gravadas fisicamente na tabela ou no cursor aberto na rea de trabalho
atualmente selecionada se TABLEUPDATE( ) for emitida sem os argumentos opcionais
cAliasTabela ou nreaTrabalho.


TABLEUPDATE( ), exemplo da funo

O exemplo abaixo demonstra como a funo TABLEUPDATE( ) pode ser utilizada para gravar
alteraes fisicamente em uma tabela com utilizao 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 utilizao do buffer de tabela.
CURSORSETPROP( ) utilizado para definir o modo de utilizao do buffer para utilizao do
buffer de tabela otimista (5).

O valor original do campo cLastName (Smith) exibido e ento o campo cLastName modificado
com REPLACE. O novo valor do campo cLastName (Jones) ser exibido. TABLEUPDATE( )
utilizado para gravar alteraes fisicamente na tabela (a funo TABLEREVERT( ) poderia ser
emitida ao invs de ignorar as alteraes). O valor atualizado do campo cLastName (Jones) ento
exibido.

CLOSE DATABASES
CREATE TABLE employee (cLastName C(10))
SET MULTILOCKS ON && Deve estar ativado para a utilizao do buffer de tabela
= CURSORSETPROP('Utilizao do buffer', 5, 'employee' ) && Ativa a utilizao do buffer da
tabela
INSERT 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 alteraes fisicamente
? 'Valor atualizado de cLastName: '
?? cLastName && Exibe o valor atual de cLastName (Jones)
























TAG( ), funo


Retorna um nome de marca a partir de um arquivo de ndice composto .CDX de vrias entradas
aberto ou o nome de um arquivo de ndice de entrada nica .IDX aberto.

Sintaxe

TAG([NomeArquivoCDX] nNmeroMarca [, nreaTrabalho | cAliasTabela])



Tipos de retorno

Caractere

Argumentos

NomeArquivoCDX Especifica o nome de um arquivo de ndice composto .CDX de vrias entradas
a partir do qual TAG( ) retornar o nome da marca.

NNmeroMarca Especifica um nmero correspondente ordem na qual uma marca foi criada no
arquivo de ndice composto. Por exemplo, se nNmeroMarca for 1, TAG( ) retornar o nome da
primeira marca criada no arquivo de ndice composto. Se nNmeroMarca for 2, TAG( ) retornar o
nome da segunda marca criada, etc. TAG( ) retornar uma seqncia vazia quando nNmeroMarca
exceder o nmero 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 especfica, conforme
indicado abaixo.

1. Nomes de arquivos de ndice de entrada nica so retornados de acordo com sua ordem na
clusula INDEX de USE ou SET INDEX.
2. Nomes de marcas do arquivo de ndice composto estrutural (caso exista um para a tabela)
so retornados.
3. Nomes de marcas de outros arquivos de ndice composto abertos so retornados na ordem
em que as marcas foram criadas nos arquivos de ndice composto e na ordem em que os arquivos de
ndice composto so especificados na clusula INDEX de USE ou SET INDEX.

nreaTrabalho | cAliasTabela Retorna nomes de marcas e nomes de arquivo de ndice a partir de
arquivos abertos em outra rea de trabalho. nreaTrabalho especifica um nmero de rea de
trabalho e cAliasTabela especifica um alias de tabela. Como padro, nomes de marca e de arquivo
de ndice so retornados a partir de arquivos que esto na rea de trabalho atual.



Comentrios

As marcas so entradas de ndice em arquivos de ndice composto .CDX de vrias entradas criados
com INDEX.

Observao Os arquivos de ndice composto .CDX de vrias entradas e os arquivos de ndice de
entrada nica .IDX podem ser abertos para uma tabela com a clusula INDEX de USE ou com SET
INDEX. Um arquivo de ndice composto estrutural .CDX automaticamente aberto com essa
tabela.



TAG( ), exemplo da funo

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

CLEAR
FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount)) && Verifica as guias no ndice
? CDX(nCount) && Exibe os nomes .CDX
ELSE
EXIT && Finaliza o loop quando no forem encontradas mais nenhuma tabulao
ENDIF
ENDFOR















TAN( ), funo


Esta funo trigonomtrica retorna a tangente de um ngulo.

Sintaxe

TAN(nExpresso)



Tipos de retorno

Numrico

Argumentos

nExpresso Especifica o ngulo em radianos para o qual TAN( ) retorna a tangente. Para converter
um ngulo de graus para radianos, utilize DTOR( ). O nmero de casas decimais retornadas por
TAN( ) pode ser especificado com SET DECIMALS.


TAN( ), exemplo da funo

CLEAR
? TAN(0) && Exibe 0.00
? TAN(PI( )/4) && Exibe 1.00
? TAN(PI( )*3/4) && Exibe -1.00





TEXT ... ENDTEXT, comando


Fornece as linhas de texto, os resultados de expresses e funes e o contedo das variveis de
memria.

Sintaxe

TEXT
LinhasTexto
ENDTEXT



Argumentos

LinhasTexto Especifica o texto enviado para o dispositivo de sada atual. LinhasTexto pode
consistir em texto, variveis de memria, elementos de matriz, expresses, funes ou qualquer
combinao desses itens.

Expresses, funes, variveis de memria e elementos de matriz especificados com LinhasTexto
so 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), expresses, funes, variveis de memria e elementos de matriz sero
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 comentrios em TEXT e ENDTEXT ou aps \ ou \\, os comentrios tambm sero
fornecidos.



Comentrios

Este comando de programao estruturada envia as linhas de texto colocadas entre TEXT e
ENDTEXT para a janela principal do Visual FoxPro, uma janela definida pelo usurio, uma
impressora, um arquivo de texto ou um arquivo de nvel inferior.

TEXT envia as linhas de texto para o dispositivo de sada atual. Esse procedimento prossegue at
que uma instruo ENDTEXT seja encontrada ou at que o programa seja encerrado.

Como padro, a sada de TEXT ... ENDTEXT enviada para a janela principal do Visual FoxPro
ou para a janela ativa. Emita SET CONSOLE OFF para eliminar a sada da janela principal do
Visual FoxPro ou da janela ativa. Utilize SET PRINTER para enviar a sada para uma impressora
ou para um arquivo de texto.

A sada de TEXT ... ENDTEXT tambm pode ser enviada para um arquivo de nvel inferior criado
ou aberto com FCREATE( ) ou FOPEN( ). Se um identificador de arquivo retornado por
FCREATE( ) ou FOPEN( ) for armazenado na varivel de memria de sistema _TEXT, a sada ser
direcionada para o arquivo de nvel inferior correspondente.


TEXT ... ENDTEXT, exemplo do comando

O exemplo a seguir demonstra como SET TEXTMERGE, SET TEXTMERGE DELIMITERS,
TEXT ... ENDTEXT e a varivel do sistema _TEXT podem ser utilizados.
Um arquivo de nvel inferior chamado NAMES.TXT criado e o identificador de arquivo
armazenado na varivel do sistema _TEXT. O programa ser finalizado se NAMES.TXT no puder
ser criado. A tabela customer aberta e os nomes dos 10 primeiros contatos so emitidos para
NAMES.TXT. O texto e os resultados das funes sero emitidos para o arquivo de texto.

O arquivo de texto que contm os nomes aberto com MODIFY FILE.

CLEAR
CLOSE DATABASES
SET TALK OFF
SET TEXTMERGE ON && Ativa a incorporao de expresses e funes
STORE FCREATE('names.txt') TO _TEXT && Cria um arquivo de nvel inferior
IF _TEXT = -1 && No pode criar uma arquivo de nvel inferior ento saia do programa
WAIT WINDOW 'No pode criar um arquivo de sada, pressione uma tecla para sair'
CANCEL
ENDIF

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


TEXT
CONTACT NAMES
<<DATE( )>> <<TIME( )>>
ENDTEXT
WAIT WINDOW 'Pressione uma tecla para gerar os dez primeiros nomes'
SCAN NEXT 10
TEXT
<<contact>>
ENDTEXT
ENDSCAN
CLOSE ALL && Fecha o arquivo e a tabela de texto
MODIFY FILE names.txt
ERASE names.txt



























TIME( ), funo


Retorna ao horrio do sistema atual de 24 horas um formato de seqncia de 8 caracteres
(hh:mm:ss).

Sintaxe

TIME([nExpresso])



Tipos de retorno

Caractere

Argumentos

nExpresso O horrio retornado inclui centsimos de um segundo se nExpresso for includa. A
expresso numrica nExpresso pode assumir qualquer valor. Entretanto, a resoluo mxima atual
cerca de 1/18 segundos. Utilize SECONDS( ) para obter uma resoluo maior.












TOTAL, comando


Calcula os totais dos campos numricos na tabela selecionada atualmente.

Sintaxe

TOTAL TO NomeTabela
ON NomeCampo
[FIELDS ListaNomesCampos]
[Escopo]
[FOR lExpresso1]
[WHILE lExpresso2]
[NOOPTIMIZE]



Argumentos

NomeTabela Especifica o nome da tabela que conter os totais. Se a tabela especificada no
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, no ser
feita nenhuma pergunta e a tabela de sada ser sobrescrita.

NomeCampo Especifica o campo no qual os totais so 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
expresso-chave.

FIELDS ListaNomesCampos Especifica os campos a serem totalizados. Separe os nomes dos
campos na lista por vrgulas. Se voc omitir a clusula FIELDS, todos os campos numricos sero
totalizados como padro.

Escopo Especifica uma faixa de registros a serem totalizados. As clusulas do escopo so as
seguintes: ALL, NEXT nRegistros, RECORD nNmeroRegistro e REST.

O escopo padro para TOTAL ALL, ou seja, todos os registros.

FOR lExpresso1 Especifica uma condio pela qual apenas os registros que satisfazem
condio lgica lExpresso1 so includos nos totais.

Rushmore otimiza uma consulta criada com TOTAL ... FOR se lExpresso1 for uma expresso
otimizvel. Para obter um melhor desempenho, utilize uma expresso otimizvel na clusula FOR.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore no captulo 15, Otimizando aplicativos no Guia do Desenvolvedor.

WHILE lExpresso2 Especifica uma condio pela qual os registros da tabela atual so includos
nos totais enquanto a expresso lgica lExpresso2 resulta em verdadeiro (.T.).

NOOPTIMIZE Desativa a otimizao Rushmore de TOTAL.

Para obter maiores informaes, consulte SET OPTIMIZE e Compreendendo a tecnologia
Rushmore, no captulo 15, Otimizando aplicativos, no Guia do Desenvolvedor.



Comentrios

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 so 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 numrica pode ocorrer se os campos numricos na segunda tabela no
forem grandes o suficiente para conter os totais. O Visual FoxPro conserva as partes mais
significativas dos totais quando ocorre um estouro de capacidade numrica. Quando um campo
pequeno demais para aceitar um total:

As casas decimais so cortadas e a parte decimal restante do total arredondada.
Se o total ainda no couber, ser utilizada a notao cientifica se o campo do total tiver sete
ou mais dgitos.
Finalmente, os asteriscos substituem o contedo do campo.
















TRANSFORM( ), funo



Retorna uma seqncia de caracteres a partir de uma expresso em um formato determinado pelo
cdigo do formato.

Sintaxe

TRANSFORM(eExpresso, cCdigosFormato)



Tipos de retorno

Caractere

Argumentos

eExpresso Especifica o caractere, moeda, data ou expresso numrica a ser formatada.

cCdigosFormato Especifica um ou mais cdigos de formatos que determinam como a expresso
formatada. A tabela a seguir traz uma lista dos cdigos de formato disponveis.

Cdigos de formato Descrio

@C CR includo para valores monetrios positivos ou valores numricos para indicar um
crdito.
@D Valores de data e data e hora so convertidos para o formato SET DATE atual.
@E Valores de data e data e hora so convertidos para o formato de data BRITISH.
@T Espaos direita e esquerda so removidos dos valores de caracteres.
@X DB includo para valores monetrios negativos ou valores numricos para indicar um
dbito.
@Z Se for 0, os valores numricos ou monetrios sero convertidos em espaos.
@( Coloca valores numricos ou monetrios negativos em parnteses.
@^ Converte valores numricos ou monetrios em notao cientifica.
@0 Converte valores numricos ou monetrios em seus equivalentes hexadecimais. O valor
numrico ou monetrio dever ser positivo e menor que 4,294,967,296.
! Transforma dados de caracteres em letras maisculas.
$ Adiciona o smbolo atual de moeda especificado por SET CURRENCY aos valores
numricos ou monetrios. Pelo padro, o smbolo colocado imediatamente antes ou depois do
valor. Entretanto, o smbolo de moeda e sua posio (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 cCdigosFormato for
XX, 2 caracteres sero retornados.
Y Converte valores lgicos verdadeiros (.T.) e falsos (.F.) em Y e N, respectivamente.
! Converte caracteres em letras minsculas para letras maisculas.
. Especifica a posio do ponto decimal nos valores numricos ou monetrios.
, Separa dgitos para a esquerda do ponto decimal nos valores decimais ou monetrios.


TRANSFORM( ), exemplo da funo

STORE 12.34 TO gnPrice
CLEAR
? TRANSFORM(gnPrice, '$$$$.99') && Exibe $12.34
































TRIM( ), funo


Retorna a expresso de caracteres especificada com todos espaos direita removidos.

Sintaxe

TRIM(cExpresso)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso de caracteres a partir da qual TRIM( ) remove todos os espaos
direita.



Comentrios

TRIM( ) idntica RTRIM( ).


TRIM( ), exemplo da funo

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
CLEAR
? 'O contato para '+ TRIM(company) + ' ' + contact


































TTOC( ), funo


Converte a expresso de data e hora para um valor de caractere de um formato especificado.

Sintaxe

TTOC(tExpresso [, 1 | 2])



Tipos de retorno

Caractere

Argumentos

tExpresso Especifica uma expresso de data e hora a partir da qual TTOC( ) retorna um valor de
caractere. Se tExpresso contiver apenas uma hora, o Visual FoxPro adicionar a data padro
30/12/1899 a tExpresso. Se tExpresso contiver apenas uma data, o Visual FoxPro adicionar a
hora padro de meia-noite (12:00:00 A.M.) a tExpresso.

1 Especifica que TTOC( ) retorna uma seqncia de caracteres em um formato apropriado para
indexao. A seqncia de caracteres possui o formato de 14 caracteres aaaa:mm:dd:hh:mm:ss, que
no afetado pelas definies atuais de SET CENTURY ou SET SECONDS.


2 Especifica que TTOC( ) retorna uma seqncia de caracteres consistindo de apenas uma parte da
expresso de data e hora. As definies de SET SECONDS e SET DATE especificam se os
segundos, na expresso de hora, sero includos na seqncia de caracteres. Observe que se SET
DATE estiver definido como LONG (longo) ou SHORT (curto), o formato da seqncia de
caracteres ser determinado pelo formato da definio de hora do Painel de controle.



TTOC( ), exemplo da funo

O exemplo a seguir cria uma varivel do tipo DataHora denominada gtDtime. TYPE( ) exibe T,
indicando que a varivel do tipo DataHora. TTOC( ) utilizado para converter a varivel em uma
do tipo caractere e TYPE( ) agora exibir C, indicando que a varivel do tipo caractere aps a
converso.

STORE DATETIME( ) TO gtDtime && Cria uma varivel de memria do tipo DataHora
CLEAR
? "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( ), funo


Retorna um valor de Data a partir de uma expresso de data e hora.

Sintaxe

TTOD(tExpresso)



Tipos de retorno

Data

Argumentos

tExpresso Especifica uma expresso de data e hora a partir da qual TTOD( ) retorna um valor de
data. tExpresso deve resultar em uma expresso de data e hora vlida. Se tExpresso contiver
apenas uma hora, o Visual FoxPro adicionar a data padro de 30/12/1899 ao argumento tExpresso
e retornar essa data padro.


TTOD( ), exemplo da funo

O exemplo a seguir cria uma varivel do tipo DataHora denominada gtDtime. TYPE( ) exibe T,
indicando que a varivel do tipo DataHora. TTOD( ) utilizado para converter a varivel em uma
do tipo data e TYPE( ) agora exibir D, indicando que a varivel do tipo data aps a converso.

STORE DATETIME( ) TO gtDtime && Cria uma varivel de memria do tipo DataHora
CLEAR
? "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( ), funo


Retorna o comprimento de uma expresso de caracteres em relao largura de caractere mdia de
uma fonte.

Sintaxe

TXTWIDTH(cExpresso [, cNomeFonte, nTamanhoFonte [, cEstiloFonte]])



Tipos de retorno

Numrico

Argumentos

cExpresso Especifica uma expresso de caracteres para a qual TXTWIDTH( ) retorna o
comprimento. Se voc incluir apenas cExpresso, o comprimento da expresso de caracteres
retornado para a fonte atual da janela principal do Visual FoxPro ou da janela de sada ativa. Uma
fonte no proporcional sempre retorna um valor igual ao nmero de caracteres em cExpresso.

Inclui os argumentos opcionais cNomeFonte, nTamanhoFonte e cEstiloFonte para determinar o
comprimento de uma expresso de caracteres com uma fonte especfica, 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
expresso de caracteres com uma fonte especfica.

nTamanhoFonte Especifica um nmero que corresponde ao tamanho da fonte em pontos. Inclui
nTamanhoFonte para retornar o comprimento de uma expresso de caracteres com um tamanho em
pontos especfico.

cEstiloFonte Especifica um estilo especial de fonte para a expresso de caracteres. cEstiloFonte
um cdigo de estilo de fonte especificado por um caractere ou conjunto de caracteres. O estilo
normal da fonte ser utilizado se cEstiloFonte no for includo.

A seguir, apresentada uma tabela com os caracteres para cada estilo de fonte:

Caractere Estilo da fonte

B Negrito
I Itlico
N Normal
O Contorno
Q Opaco
S Sombreado
- Riscado
T Transparente
U Sublinhado
Voc pode incluir mais de um caractere para especificar uma combinao de estilos de fontes. Por
exemplo, BI especifica um estilo de fonte Negrito e Itlico.
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

Comentrios

TXTWIDTH( ) retorna o nmero de caracteres ocupado por uma expresso de caracteres
cExpresso, com base na largura mdia de caractere de uma fonte especificada (a largura mdia de
caractere de uma fonte denominada foxel). Utilize FONTMETRIC(6) para determinar a largura
mdia de caractere de uma fonte.

Se voc no 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 sada
direcionada para a janela principal do Visual FoxPro quando TXTWIDTH( ) emitida. Se a sada
estiver sendo direcionada para uma janela definida pelo usurio, o valor retornado determinado
pela fonte atual da janela.




















TYPE( ), funo


Avalia uma expresso e retorna o tipo de dados do seu contedo.

Sintaxe

TYPE(cExpresso)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica a expresso a ser avaliada, que pode ser uma varivel, um campo, um
campo Memo ou qualquer outra expresso. A expresso dever ser passada como uma seqncia de
caracteres, com aspas nos nomes de variveis de memria, campos e assim por diante. Se no forem
colocadas aspas na expresso, a funo TYPE( ) retornar U (expresso indefinida).



Comentrios

A tabela a seguir lista os valores de caracteres que TYPE( ) retorna e seus correspondentes tipos de
dados:

Tipo de dados Caractere retornado

Caractere C
Numrico (tambm flutuante, duplo e inteiro) N
Moeda Y
Data D
Data e hora T
Lgico L
Memo M
Objeto O
Geral G
Tipo indefinido de expresso U


TYPE( ), exemplo da funo

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
nTest = 1.01
cTest = "Seqncia"

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 contedo 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 extenso de
arquivo.

AUTO Ativa o recuo automtico. Quando voc inclui WRAP, TYPE recua, automaticamente,
textos com quebras de linha de cada pargrafo com o mesmo valor de recuo da primeira linha do
pargrafo. Por exemplo:

Linhas quebradas so alinhadas com a tabulao quando um pargrafo inicia com uma
tabulao.
Linhas quebradas so alinhadas com a tabulao quando um pargrafo inicia com um
nmero (ou outro texto) seguido de uma tabulao e texto.
Linhas quebradas so recuadas com o mesmo valor de recuo da primeira linha quando a
primeira linha de um pargrafo recuada com espaos.



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 prxima linha.

TO PRINTER [PROMPT] Direciona a sada para a impressora.

Voc pode incluir a clusula PROMPT opcional para exibir uma caixa de dilogo de impresso
antes de a impresso ser iniciada. Coloque a palavra-chave PROMPT logo aps TO PRINTER.

TO FILE NomeArquivo2 Direciona a sada para o arquivo especificado com NomeArquivo2.

NUMBER Coloca os nmeros das linhas no incio de cada linha na sada.



Comentrios

TYPE exibe o contedo dos arquivos. Essa exibio pode ser direcionada para a janela principal do
Visual FoxPro, uma janela ativa definida pelo usurio, para uma impressora ou por outro arquivo.

Quando SET HEADINGS est ON, o Visual FoxPro insere uma alimentao de linha, o caminho e
o nome do arquivo, bem como a data no incio da sada produzida com TYPE. Se SET HEADINGS
estiver OFF, essas informaes no sero includas.

No FoxPro para MS-DOS, se a configurao do driver de uma impressora for carregada e voc
direcionar a sada de TYPE para um arquivo ou uma impressora, TYPE exibir o contedo do
arquivo utilizando as definies da configurao do driver de impressora.
UNLOCK, comando



Libera um bloqueio de registro, bloqueios de mltiplos 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 nNmeroRegistro]
[IN nreaTrabalho | cAliasTabela]
[ALL]



Argumentos

RECORD nNmeroRegistro Libera o bloqueio do registro em um registro de nmero
nNmeroRegistro. Voc pode especificar 0 para nNmeroRegistro para desbloquear o cabealho de
tabela com LOCK(0) ou RLOCK(0).

A emisso de UNLOCK RECORD nNmeroRegistro para um registro em uma tabela com um
bloqueio de arquivo libera o bloqueio.

IN nreaTrabalho | cAliasTabela Libera um bloqueio (ou bloqueios) de registro ou um bloqueio
de arquivo de uma tabela em uma determinada rea de trabalho. nreaTrabalho especifica o
nmero da rea de trabalho e cAliasTabela especifica o alias da tabela. Se voc no incluir
nreaTrabalho 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 informaes sobre o bloqueio de registros e de arquivos e o compartilhamento
de tabelas em uma rede, consulte o captulo 17, Programando para acesso compartilhado, no Guia
do Desenvolvedor.



Comentrios

Os bloqueios de registros e de arquivos s podem ser removidos de uma tabela pelo usurio que os
executou. UNLOCK no 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 relaes entre tabelas, a liberao de um bloqueio (ou bloqueios) de
registro ou de um bloqueio de arquivo de uma das tabelas no 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 tambm libera bloqueios em arquivos no-relacionados).


UNLOCK, exemplo do comando

CLOSE DATABASES
SET REPROCESS TO 3 AUTOMATIC
STORE '1,2,3,4' TO gcRecList && Bloqueia registros de 1 at 4
gcOldExc = SET('EXCLUSIVE') && Salva a definio EXCLUSIVE
SET EXCLUSIVE OFF && Permite o compartilhamento das tabelas

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
SELECT 0
USE 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 customer
UNLOCK IN employee
SET EXCLUSIVE &gcOldExc && Restaura a definio original EXCLUSIVE











UPPER( ), funo


Retorna a expresso de caracteres especificada em maiscula.

Sintaxe

UPPER(cExpresso)



Tipos de retorno

Caractere

Argumentos

cExpresso Especifica que expresso de caracteres UPPER( ) converte em maiscula.



Comentrios

Cada letra minscula (a z) na expresso de caracteres convertida em maiscula (A Z) na
seqncia retornada. Todos os outros caracteres permanecem inalterados.


UPPER( ), exemplo da funo

CLEAR
? UPPER('abcdefgh') && Exibe ABCDEFGH

USE, comando


Abre uma tabela e seus arquivos de ndice associados, ou uma visualizao SQL.

Sintaxe

USE [[NomeBancoDados.]Tabela | NomeVisualizaoSQL | ?]
[IN nreaTrabalho | cAliasTabela]
[ONLINE]
[ADMIN]
[AGAIN]
[NOREQUERY [nNmeroSessoDados]]
[NODATA]
[INDEX ListaArquivosNndice | ?
[ORDER [nNmeroNndice | 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 espaos so
significativos nos nomes de arquivos do Windows 95, Windows NT e no Macintosh, evite utilizar
espaos desnecessrios em NomeTabela.

Para abrir uma tabela que no 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 no qualificar uma tabela com um nome de banco de dados, o Visual FoxPro poder
abrir tabelas apenas no banco de dados atual.

NomeVisualizaoSQL Especifica o nome de uma visualizao SQL a ser aberta no banco de
dados atual. Uma visualizao SQL criada com CREATE SQL VIEW. NomeVisualizaoSQL
tambm pode ser o nome de uma visualizao off-line criada com CREATEOFFLINE( ).

? Exibe a caixa de dilogo Usar, na qual voc pode escolher uma tabela a ser aberta.

IN nreaTrabalho Especifica a rea de trabalho na qual a tabela aberta. Voc pode fechar uma
tabela em uma rea de trabalho especfica emitindo USE com a clusula IN e o nmero da rea de
trabalho.

A clusula IN suporta 0 como uma rea de trabalho. Ao incluir 0, aberta uma tabela na rea de
trabalho disponvel de menor nmero. 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 nreaTrabalho e cAliasTabela, a tabela ser aberta na rea de trabalho selecionada
atualmente.

ONLINE Abre uma visualizao off-line com CREATEOFFLINE( ).Especifica o nome da
visualizao off-line em NomeVisualizaoSQL. Utilize TABLEUPDATE( ) para atualizar os
dados no servidor.

A visualizao off-line deve ser aberta de forma exclusiva. Inclua a clusula EXCLUSIVE em USE
ou SET EXCLUSIVE para ON antes de abrir a visualizao off-line com USE.

ADMIN Abre uma visualizao off-line criada com CREATEOFFLINE( ), mas no atualiza os
dados no servidor com as alteraes feitas na visualizao off-line. Ao abrir uma visualizao off-
line com a palavra-chave ADMIN permite fazer alteraes na visualizao 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 clusula AGAIN.
Emita USE com o nome da tabela e com a clusula AGAIN, e especifique uma rea de
trabalho diferente com a clusula 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 estaro disponveis para a tabela que voc abrir
novamente se voc no 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 no foram abertos na tabela original. Isto define a ordem do ndice
como 0 para a tabela original.

A tabela aberta novamente utiliza o alias padro 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 no utiliza um identificador de arquivo adicional.

NOREQUERY [nNmeroSessoDados] Especifica que os dados de uma visualizao SQL remota
no so transferidos novamente. NOREQUERY est disponvel somente para visualizaes SQL e
utilizado normalmente quando voc abre uma visualizao SQL novamente incluindo a clusula
AGAIN. A incluso da clusula NOREQUERY aumenta o desempenho de grandes conjuntos de
dados, pois os dados no precisam ser transferidos novamente.

nNmeroSessoDados pode ser includo para especificar que os dados de uma visualizao SQL
remota em uma sesso de dados especfica no so descarregados novamente. Se
nNmeroSessoDados for omitido, os dados no sero descarregados para a visualizao aberta na
sesso de dados atual.

Para obter informaes adicionais sobre a clusula NOREQUERY, consulte o captulo 8, Criando
visualizaes, no Guia do Desenvolvedor.

NODATA Especifica que s a estrutura da visualizao SQL descarregada. Os dados da
visualizao SQL no so descarregados. NODATA o mtodo mais rpido para determinar a
estrutura de uma visualizao SQL.

Para obter informaes adicionais sobre a clusula NODATA, consulte o captulo 8, Criando
visualizaes, no Guia do Desenvolvedor.

INDEX ListaArquivosNndice 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.

ListaArquivosNndice pode conter qualquer combinao de nomes de entrada nica .IDX e
arquivos de ndice compostos .CDX. No preciso incluir extenses de nomes de arquivo para
arquivos de ndice, a no 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 so acessados e exibidos. Contudo, se o
primeiro arquivo de ndice for um arquivo de ndice composto .CDX, os registros da tabela sero
exibidos e acessados na ordem fsica dos registros.

INDEX ? Exibe a caixa de dilogo Abrir com uma lista de arquivos de ndice disponveis para
escolha.

ORDER [nNmeroNndice] 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 ListaArquivosNndice.

Os arquivos de ndice .IDX so numerados primeiro, na ordem em que aparecem na lista de
arquivos de ndice. As marcas no arquivo de ndice composto estrutural (se houver) so, ento,
numeradas na ordem em que foram criadas. Por fim, as marcas em qualquer arquivo de ndice
composto independente tambm so numeradas nesta ordem. SET ORDER pode ser utilizado
tambm para especificar o arquivo ou marca de ndice de controle. Consulte SET ORDER para
obter maiores explicaes sobre a numerao de arquivos e marcas de ndice.

Se nNmeroNndice for 0, os registros na tabela sero exibidos e acessados na ordem fsica dos
registros e os ndices permanecero abertos. A incluso de ORDER 0 permite que arquivos de
ndice abertos sejam atualizados durante a apresentao do arquivo pela ordem do nmero do
registro. A incluso de ORDER sem nNmeroNndice idntica incluso 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 idnticos
existirem em arquivos de ndice composto abertos, inclua OF NomeArquivoCDX e especifique o
nome do arquivo de ndice composto que contm a marca desejada.

ASCENDING Especifica que os registros da tabela so acessados e exibidos em ordem
ascendente.

DESCENDING Especifica que os registros da tabela so acessados e exibidos em ordem
descendente.

A incluso de ASCENDING ou DESCENDING no altera o arquivo ou marca de ndice; altera
somente a ordem em que os registros so exibidos e acessados.

ALIAS cAliasTabela Cria um alias para a tabela. Voc pode se referir a uma tabela pelo seu alias
em comandos ou funes que exijam ou suportem um alias.

Quando uma tabela aberta, recebe automaticamente um alias, que ser o nome da tabela se ALIAS
no for includo. 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, dgitos ou caracteres de sublinhado e precisa
comear com uma letra ou um caractere de sublinhado. Em outras verses do FoxPro, um alias pode
conter at 10 letras, dgitos ou caracteres de sublinhado e precisa comear com uma letra ou
caractere de sublinhado.

Um alias padro ser automaticamente atribudo tabela se voc utilizar AGAIN para abrir uma
tabela nica simultaneamente em diversas reas de trabalho e no especificar um alias ao abrir a
tabela em cada rea de trabalho.

Um alias padro tambm ser atribudo se ocorrer um conflito. Por exemplo:

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
ACTIVATE WINDOW View && Abre a janela Sesso de dados
USE customer ALIAS orders IN 1 && Alias ORDERS
USE orders IN 3 && Conflito; alias C

EXCLUSIVE Abre uma tabela para uso exclusivo em uma rede. Para obter maiores informaes
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 alteraes na tabela e em sua estrutura.



Comentrios

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. Alm disso, uma tabela fechada quando
outra tabela aberta na mesma rea de trabalho. No possvel ter mais de uma tabela aberta em
uma rea de trabalho ao mesmo tempo.


USE, exemplo do comando

O exemplo a seguir abre trs tabelas em trs reas de trabalho diferentes. A janela Sesso de dados
aberta para mostrar onde as tabelas so abertas e para mostrar o alias para cada tabela.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
ACTIVATE WINDOW View

USE customer IN 0 && Abre a tabela Customer
USE employee IN 0 && Abre a tabela Employee
USE products IN 0 && Abre a tabela Products








USED( ), funo


Determina se uma tabela aberta em uma rea de trabalho especificada.

Sintaxe

USED([nreaTrabalho | cAliasTabela])



Tipos de retorno

Lgico

Argumentos

nreaTrabalho | cAliasTabela Especifica a rea de trabalho da tabela. nreaTrabalho especifica o
nmero da rea de trabalho e cAliasTabela especifica o alias da tabela. Se voc no incluir
nreaTrabalho 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.



Comentrios

Se uma tabela estiver aberta em uma determinada rea de trabalho, USED( ) retornar verdadeiro
(.T.); caso contrrio, USED( ) retornar falso (.F.).

USED( ), exemplo da funo

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
SELECT A
USE customer && Abre a tabela Customer
SELECT B
USE orders && Abre a tabela Orders
SELECT C
USE employee && Abre a tabela Employee
? USED('A') && Exibe .T.
? USED('B') && Exibe .T.
? USED(4) && Exibe .F.


















VAL( ), funo


Retorna um valor numrico de uma expresso de caracteres composta de nmeros.

Sintaxe

VAL(cExpresso)



Tipos de retorno

Numrico

Argumentos

cExpresso Especifica uma expresso de caracteres composta de no mximo 16 nmeros. O
arredondamento ocorre se mais que 16 nmeros forem includos em cExpresso.



Comentrios

VAL( ) retorna os nmeros na expresso de caracteres, da esquerda para a direita, at que um
caractere no-numrico seja encontrado (os brancos esquerda so ignorados). VAL( ) retornar 0
se o primeiro caractere da expresso de caracteres no for um nmero, um sinal de mais (+) ou um
sinal de menos (-).

VAL( ) pode ser utilizada para converter as seqncias de caracteres retornadas pelas funes
SYS( ) do Visual FoxPro para valores numricos.


VAL( ), exemplo da funo

CLEAR
STORE '12' TO A
STORE '13' TO B
? VAL(A) + VAL(B) && Exibe 25.00
STORE '1.25E3' TO C
? 2 * VAL(C) && Exibe 2500.00






















VALIDATE DATABASE, comando


Assegura que as localizaes de tabelas e ndices no banco de dados atual sejam corretas.

Sintaxe

VALIDATE DATABASE
[RECOVER]
[NOCONSOLE]
[TO PRINTER [PROMPT] | TO FILE NomeArquivo]



Argumentos

RECOVER Exibe caixas de dilogo que permitem localizar tabelas e ndices que no estejam nas
localizaes contidas no banco de dados. VALIDATE DATABASE RECOVER deve ser emitido
na janela Comando. A emisso de VALIDATE DATABASE RECOVER em um programa gera
uma mensagem de erro.

NOCONSOLE Suprime a sada de mensagens de erro para a janela principal do Visual FoxPro ou
para a janela ativa definida pelo usurio.

TO PRINTER [PROMPT] Direciona a sada de mensagens de erro de VALIDATE DATABASE
para uma impressora.

PROMPT exibe uma caixa de dilogo Imprimir antes do incio da impresso. Coloque a palavra-
chave PROMPT logo depois de TO PRINTER.

TO FILE NomeArquivo Direciona a sada 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.

Comentrios

VALIDATE DATABASE assegura que o banco de dados contenha as localizaes 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 localizaes das tabelas e dos ndices no banco de dados estejam corretas.

CLOSE DATABASES
SET PATH TO (SYS(2004) + 'samples\data\') && Determina o caminho para o banco de dados
OPEN DATABASE testdata EXCLUSIVE && Abre o banco de dados testdata

VALIDATE DATABASE





VERSION( ), funo


Retorna as informaes sobre a verso do Visual FoxPro que est sendo utilizada.

Sintaxe

VERSION(nExpresso)



Tipos de retorno

Caractere, Numrico

Argumentos

nExpresso Especifica que VERSION( ) deve retornar informaes adicionais sobre o Visual
FoxPro. Se voc omitir nExpresso, VERSION( ) retornar o nmero da verso do Visual FoxPro.

A tabela a seguir lista os valores para nExpresso e as informaes adicionais retornadas sobre o
Visual FoxPro.



NExpresso Informaes adicionais retornadas sobre o Visual FoxPro

1 Data e nmero de srie do Visual FoxPro.
2 Tipo da verso do Visual FoxPro:
0 - Verso em tempo de execuo
1 - Standard Edition (verses anteriores)
2 - Professional Edition (verses 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 - Ingls
33 - Francs
34 - Espanhol
39 - Italiano
42 - Tcheco
48 - Polons
49 - Alemo
55 - Portugus
82 - Coreano
86 - Chins simplificado
88 - Chins tradicional


Comentrios

Utilize VERSION( ) para executar condicionalmente trechos de cdigo especficos da verso.
VERSION( ), VERSION(1) e VERSION(3) retornam seqncias de caracteres; VERSION(2)
retorna um valor numrico.


VERSION( ), exemplo da funo

CLEAR
? VERSION( )








SYS( ), viso geral das funes


Retorna as informaes do sistema Visual FoxPro.

Sintaxe

SYS( )



Tipos de retorno

Caractere

Comentrios

As funes SYS( ) do Visual FoxPro retornam valores de caractere que contm informaes teis
do sistema. A seguinte tabela mostra o que cada funo SYS( ) retorna:

Funo Informaes retornadas

SYS(0) Informaes do computador da rede
SYS(1) Data do sistema Juliano
SYS(2) Segundos desde a meia-noite
SYS(3) Nome de arquivo vlido
SYS(5) Volume ou unidade de disco padro
SYS(6) Dispositivo de impressora atual
SYS(7) Arquivo de formato atual
SYS(9) Nmero serial do Visual FoxPro
SYS(10) Seqncia a partir do nmero de dia Juliano
SYS(11) Nmero de dia Juliano
SYS(12) Memria disponvel em bytes
SYS(13) Status da impressora
SYS(14) Expresso de ndice
SYS(15) Converso de caracteres
SYS(16) Nome de arquivo do programa em execuo
SYS(17) Processador em uso
SYS(18) Controle atual
SYS(20) Transforma texto em alemo
SYS(21) Controlando o nmero do ndice
SYS(22) Controlando o nome ou marca de ndice
SYS(23) Utilizao de memria EMS do FoxPro
SYS(24) Limite de memria EMS
SYS(100) Definio do console
SYS(101) Definio do dispositivo
SYS(102) Definio da impressora
SYS(103) Definio da comunicao
SYS(1001) Memria do Visual FoxPro
SYS(1016) Uso da memria de objeto do usurio
SYS(1023) Ativar modo de diagnstico da Ajuda.
SYS(1024) Desativar modo de diagnstico da Ajuda.
SYS(1037) Caixa de dilogo Configurar pgina
SYS(1269) Informaes sobre propriedades
SYS(1270) Localizao do objeto
SYS(1271) Arquivo .SCX do objeto
SYS(1272) Hierarquia do objeto
SYS(1500) Ativar um item do menu
SYS(2000) Correspondncia de curinga no nome de arquivo
SYS(2001) Status do comando SET
SYS(2002) Ativar ou desativar o ponto de insero
SYS(2003) Diretrio atual
SYS(2004) Diretrio inicial do Visual FoxPro
SYS(2005) Arquivo de recursos atual
SYS(2006) Placa grfica atual
SYS(2007) Valor da soma de verificao
SYS(2010) Definies do arquivo CONFIG.SYS
SYS(2011) Status de bloqueio atual
SYS(2012) Tamanho de bloco de campo Memo
SYS(2013) Seqncia de nomes de menu do sistema
SYS(2014) Caminho mnimo
SYS(2015) Nome do procedimento exclusivo
SYS(2016) Nome de SHOW GETS WINDOW
SYS(2017) Exibir tela de inicializao
SYS(2018) Parmetro de mensagem de erro
SYS(2019) Nome e localizao do arquivo de configurao
SYS(2020) Tamanho de disco padro
SYS(2021) Expresso de ndice filtrada
SYS(2022) Tamanho do grupo (bloco) no disco
SYS(2023) Caminho temporrio
SYS(2029) Tipo de tabela
SYS(2333) Suporte de Interface ActiveX Dual
SYS(3004) Retornar identificador de local
SYS(3005) Definir identificador de local
SYS(3006) Definir identificadores de local e linguagem
SYS(3050) Definir tamanho de buffer de memria
SYS(3051) Definir intervalo de repetio de bloqueio
SYS(3052) Substituir bloqueio de SET REPROCESS
SYS(3053) Identificador de ambiente do ODBC














WAIT, comando


Exibe uma mensagem e interrompe a execuo do Visual FoxPro at que o usurio 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 padro. Se cTextoMensagem for a
seqncia vazia (""), nenhuma mensagem ser exibida e o Visual FoxPro aguardar que uma tecla
seja pressionada antes de continuar a execuo do programa.

TO NomeVarMem Salva a tecla pressionada em uma varivel de memria ou em um elemento de
matriz. Se a varivel de memria ou um elemento de matriz especificado por voc com
NomeVarMem no existir, ele ser criado. A seqncia vazia ser armazenada em NomeVarMem
se voc pressionar ENTER, uma tecla que no possa ser impressa, uma combinao 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 posio da janela de mensagem na tela.

NOWAIT Continua a execuo do programa imediatamente aps a exibio da mensagem. O
programa no espera a remoo da mensagem da janela principal do Visual FoxPro, mas prossegue
com a execuo na linha do programa imediatamente aps a linha do programa contendo WAIT
NOWAIT. Se voc omitir NOWAIT, a execuo 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 comunicao de indexao ou classificao, 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 concluso do WAIT. nSegundos especifica o nmero de segundos (fraes de
segundos so permitidas) decorridos. Se TIMEOUT no for a ltima clusula de WAIT, o Visual
FoxPro ir gerar uma mensagem de erro de sintaxe.



Comentrios

Se uma mensagem WAIT for exibida no Visual FoxPro para Windows, o pressionamento das teclas
SHIFT ou CTRL faro com que todas as janelas incluindo a mensagem WAIT sejam ocultadas.

























WFONT( ), funo


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 Numrico

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 cdigo que identifica o estilo da fonte.

O cdigo 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 itlico quando WFONT(3) retorna BI.

A tabela a seguir lista os cdigos para cada estilo de fonte:

Caractere Estilo de fonte

B Negrito
I Itlico
N Normal
O Contorno
Q Opaco
S Sombreado
- Tachado
T Transparente
U 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 tambm incluir o nome de uma
barra de ferramentas. Inclua a seqncia 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 usurio e criada com DEFINE WINDOW
ou uma janela para edio de textos e memos.
Voc pode tambm 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 visvel 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 sada ativa.



WFONT( ), exemplo da funo

O exemplo a seguir cria uma janela definida pelo usurio definida wFontChar. A janela ativada e
as caractersticas de suas fontes so exibidas na janela. As caractersticas de fonte so exibidas na
janela principal do Visual FoxPro.

CLEAR
DEFINE WINDOW wFontChar;
FROM 1,1 TO 3,35;
FONT 'MS SANS SERIF',8;
STYLE 'BI' && Define a janela com fonte e estilo
ACTIVATE WINDOW wFontChar
? WFONT(1), WFONT(2), WFONT(3) && Janela wFontChar
ACTIVATE SCREEN
?
?
?
? 'Caractersticas de fonte da janela wFontChar'
?
?
? WFONT(1,''), WFONT(2,''), WFONT(3,'') && Janela principal do Visual FoxPro
?
? 'Caractersticas de fonte da janela principal do Visual FoxPro'

WAIT WINDOW
RELEASE WINDOW wFontChar
CLEAR








WITH ... ENDWITH, comando


Especifica vrias propriedades para um objeto.

Sintaxe

WITH NomeObjeto
[.cInstrues]
ENDWITH



Argumentos

NomeObjeto Especifica o nome do objeto. NomeObjeto pode ser o nome do objeto ou uma
referncia a ele.

.cInstrues cInstrues pode consistir em qualquer nmero de comandos do Visual FoxPro
utilizados para especificar propriedades de NomeObjeto. Coloque um ponto antes de cInstrues
para indicar que se trata de uma propriedade de NomeObjeto.



Comentrios

WITH ... ENDWITH fornece um modo conveniente de especificar diversas propriedades para um
nico objeto. Observe que tambm possvel executar mtodos 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
mltiplas propriedades para a classe. Em seguida, os valores das propriedades so exibidos.

moemployee = CREATEOBJECT('employee')

WITH moemployee
.First_Name = 'Fernando'
.Last_Name = 'Pinheiro'
.Address = 'Avenida Brasil 16'
.HireDate = {02/16/95}
ENDWITH

CLEAR
? moemployee.First_Name + ' '
?? moemployee.Last_Name
? moemployee.Address
? moemployee.HireDate

DEFINE CLASS employee AS CUSTOM
First_Name = SPACE(20)
Last_Name = SPACE(20)
Address = SPACE(30)
HireDate = { \ \ }
ENDDEFINE







WTITLE( ), funo


Retorna o ttulo atribudo janela ativa ou especificada.

Sintaxe

WTITLE([NomeJanela])



Tipos de retorno

Caractere

Argumentos

NomeJanela Especifica uma janela cujo ttulo retornado por WTITLE( ). O ttulo atribudo
janela com a clusula TITLE retornado quando voc inclui o nome de uma janela definida pelo
usurio e criada com DEFINE WINDOW.

Quando BROWSE WINDOW for emitido para abrir uma janela Pesquisar em uma janela definida
pelo usurio, WTITLE( ) retornar o ttulo da janela definida pelo usurio se a janela Pesquisar no
possuir um ttulo. Se possuir, WTITLE( ) retornar o ttulo da prpria janela Pesquisar.

possvel, tambm, utilizar a seqncia vazia em NomeJanela para especificar a janela principal do
Visual FoxPro.



Comentrios

WTITLE( ) pode ser utilizada para retornar um ttulo de janela, que aparecer na borda superior da
mesma. O ttulo ser retornado para a janela ativa se voc omitir NomeJanela. WTITLE( ) retornar
a seqncia vazia se a janela Depurar, Rastrear ou Comando estiver ativa ou a sada estiver sendo
direcionada para a janela principal do Visual FoxPro.

Nomes e ttulos de janelas Os nomes so atribudos s janelas definidas pelo usurio, janelas do
sistema, barras de ferramentas (no Visual FoxPro) e janelas Pesquisar da seguinte forma:

As janelas definidas pelo usurio recebem nomes quando so criadas com DEFINE WINDOW. H
uma diferena entre nomes e ttulos de janelas definidas pelo usurio. Como padro, as janelas
definidas pelo usurio no possuem ttulos. Se a clusula TITLE for includa na hora da criao da
janela, o ttulo especificado aparecer na borda superior da janela, mas no ser seu nome.

Como padro, cada janela do sistema, que faz parte da interface do Visual FoxPro, obtm o seu
nome a partir do ttulo da janela. Os exemplos de janelas do sistema incluem a janela Comando, a
janela Sesso de dados e a janela Rastrear. No Visual FoxPro, cada barra de ferramentas obtm o
seu nome a partir do ttulo da barra de ferramentas.

As janelas de programa e edio e as janelas Criador de relatrios e Criador de etiquetas obtm os
seus nomes a partir do nome do arquivo que est sendo criado ou modificado.

Uma janela Pesquisar obtm o seu nome a partir do ttulo da janela. O nome e o ttulo da janela
Pesquisar so atribudos por meio de uma das trs formas a seguir: pela atribuio do ttulo padro
do alias da tabela, pelo ttulo da janela (se existir algum) ou pelo ttulo da Pesquisa (se existir
algum).

Como padro, 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 funes,
coloque o nome completo da janela ou da barra de ferramentas entre aspas. Por exemplo, para
ocultar a barra de ferramentas controles de relatrio no Visual FoxPro, emita o comando a seguir:

HIDE WINDOW "Controles de relatrio "



Observaes adicionais sobre nomes de janelas Se voc no tiver certeza quanto ao nome atribudo
a uma janela, verifique o menu Janela. Todos os nomes de janelas so 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 usurio que foi especificada. Se uma janela
estiver ativa quando BROWSE for emitido e voc no incluir a clusula WINDOW, a janela
Pesquisar ter os atributos da janela ativa. Voc poder substituir este comportamento incluindo
NORMAL em BROWSE.

possvel incluir nomes de janelas que contm espaos em comandos e funes que aceitam nomes
de janelas, tais como MOVE WINDOW, DEACTIVATE WINDOW e WONTOP( ); basta
especificar a parte do nome da janela que comea com o primeiro caractere diferente de espao,
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 usurio no podem conter espaos, mas os nomes das janelas
Pesquisar e do sistema podem.




























YEAR( ), funo



Retorna o ano de uma data especfica ou de uma expresso de data e hora.

Sintaxe

YEAR(dExpresso | tExpresso)



Tipos de retorno

Numrico

Argumentos

dExpresso Especifica a expresso de data a partir da qual YEAR( ) retorna o ano. dExpresso
pode ser uma funo que retorna uma data, uma varivel de memria do tipo Data, um elemento de
matriz ou campo. Tambm pode ser uma seqncia literal, como {06/06/95}.

tExpresso Especifica a expresso data e hora a partir da qual YEAR( ) retorna o ano.



Comentrios

YEAR( ) sempre retorna o ano com o sculo. A definio de CENTURY (ON ou OFF) no afeta o
valor retornado.


YEAR( ), exemplo da funo

CLEAR
? YEAR(DATE( ))





























ZAP, comando


Remove todos os registros de uma tabela, deixando apenas sua estrutura.

Sintaxe

ZAP
[IN nreaTrabalho | cAliasTabela]



Argumentos

IN nreaTrabalho Especifica a rea de trabalho da tabela na qual todos os registros sero
removidos.

IN cAliasTabela Especifica o alias da tabela na qual todos os registros sero removidos.

Se nreaTrabalho e cAliasTabela forem omitidos, todos os registros sero removidos da tabela na
rea de trabalho selecionada atualmente.



Comentrios

A emisso de ZAP equivalente a emisso de DELETE ALL seguida por PACK, mas o comando
ZAP muito mais rpido.

Se SET SAFETY estiver ativado (ON), o Visual FoxPro pergunta se voc deseja remover todos os
registros da tabela atual.

A emisso de ZAP no provoca a ocorrncia do disparador de excluso. Para obter maiores
informaes sobre disparadores em uma tabela, consulte CREATE TRIGGER.



Importante Os registros excludos da tabela atual no podero ser reintegrados.


























ZOOM WINDOW, comando


Altera o tamanho e a posio da janela definida pelo usurio 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 mnimo.

No Visual FoxPro para Windows, a janela reduzida a um cone.

Todas as janelas do sistema podem ser reduzidas a um tamanho mnimo 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 usurio antes que elas possam ser minimizadas.

Uma janela definida pelo usurio pode ser minimizada aps sua definio. Ela no deve ser ativada
antes de sua alterao 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 usurio. 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 clusulas
adicionais de ZOOM WINDOW (AT, SIZE, TO ou FROM) forem includas com MAX, MAX ser
ignorado.

Apenas as janelas definidas pelo usurio com ZOOM podem ser expandidas ao tamanho mximo.

NORM Retorna uma janela ao seu tamanho original aps ter sido minimizada ou maximizada.
NORM pode tambm ser utilizado para mover uma janela sem alterar seu tamanho. Utilize ZOOM
WINDOW NORM sem qualquer clusula adicional para retornar uma janela minimizada ou
maximizada ao seu tamanho e localizao original.

AT nLinha1, nColuna1 | FROM nLinha2, nColuna2 possvel especificar a localizao de uma
janela incluindo a clusula 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 especfico. As coordenadas AT
nLinha1, nColuna1 especificam onde o canto esquerdo superior da janela ser posicionado. A
localizao da janela tambm pode ser alterada com MOVE WINDOW.

No Visual FoxPro for Windows, se NORM for includo, o canto superior esquerdo da janela ser
colocado na janela principal do Visual FoxPro no local especificado com AT nLinha1, nColuna1.
Se MIN for includo, AT e FROM so ignorados e a janela exibida como um cone na parte mais
inferior da janela principal do Visual FoxPro. Se MAX for includo, AT e FROM so 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 clusula 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 includo, AT e FROM so ignorados e a janela ser exibida
como um cone na parte mais inferior da rea de trabalho do Windows. Se MAX for includo, AT e
FROM so ignorados e a janela expandida para preencher a rea de trabalho do Windows.

SIZE AT nLinha2, nColuna2 | TO nLinha2, nColuna2 Tambm possvel especificar o tamanho
de uma janela incluindo SIZE ou TO. Se SIZE for includo, o tamanho da janela ser composto pela
altura das linhas nLinha2 e pela largura das colunas nColuna2. Se a clusula TO for includa, o
canto superior esquerdo da janela permanece em sua posio atual e o canto inferior direito da
janela colocado na posio especificada com nLinha2, nColuna2.



Comentrios

No Visual FoxPro para Windows, as janelas podem ser reduzidas ao tamanho mnimo, aumentadas
para preencher toda a janela principal do Visual FoxPro ou dimensionada em qualquer parte entre
elas.

Se uma janela definida pelo usurio for criada com DEFINE WINDOW e com a clusula IN
DESKTOP no Visual rea de trabalho.

No Visual FoxPro for Windows, as visualizaes das janelas podem ser alteradas diretamente do
tamanho mnimo ao mximo ou vice-versa.

Quando a visualizao de uma janela aumentada ou diminuda, possvel especificar onde colocar
a janela redimensionada na janela do Visual FoxPro ou na janela definida pelo usurio.

Para aumentar a visualizao 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 padro. Ela ento ser novamente
minimizada em um local especfico. A janela Pesquisar aumentada para um tamanho especifico e
maximizada.

CLEAR ALL
CLEAR
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Abre a tabela Customer
BROWSE NORMAL NOWAIT

IF _DOS OR _WINDOWS
ZOOM WINDOW customer MIN
WAIT WINDOW TIMEOUT 3 ;
'Clusula MIN - Esta janela ir estabelecer o tempo limite. Por favor, espere.'
ENDIF

ZOOM WINDOW customer NORM
WAIT WINDOW TIMEOUT 3 ;
'Clusula NORM - Esta janela ir estabelecer o tempo limite. Por favor, espere.'


IF _DOS OR _WINDOWS
ZOOM WINDOW customer MIN AT 10,10
WAIT WINDOW TIMEOUT 3 ;
'Clusula MIN AT 10,10 - Esta janela ir estabelecer o tempo limite. Por favor,
espere.'
ENDIF

ZOOM WINDOW customer NORM AT 1,1 SIZE 22,25
WAIT WINDOW TIMEOUT 3 ;
'Clusulas NORM & SIZE - Esta janela ir estabelecer o tempo limite. Por favor.'
ZOOM WINDOW customer NORM FROM 10,10 TO 22,70
WAIT WINDOW TIMEOUT 3 ;

'Clusulas NORM & TO - Esta janela ir estabelecer o tempo limite.'
ZOOM WINDOW customer MAX
WAIT WINDOW TIMEOUT 3 'Clusula MAX - Esta janela ir estabelecer o tempo limite. Por
favor, espere.'
CLEAR ALL




APENDICE PRTICO


Bloco de comandos, que traz o formulrio de CORES na tela, e conforme a cor selecionada, retorna
com os valores de RGB

Pequena rotina

ncor=getcolor()
Permite voce escolher uma COR
B=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
RESOLUO DE VIDEO EM USO



Nhorizontal=sysmetric(1)
Nvertical =sysmetric(2)



























Esta apostila vai receber diversos anexos de programadores..
Acesse nossa pgina WWW.VISUALSCREEN.HPG.COM.BR e faa o download a medida que
estes anexos forem disponibilizados
(Copiar e colar ao final deste .DOC)

Das könnte Ihnen auch gefallen